delegation — best practices for cone/scoop delegation

PHILOSOPHY

The scoops do the heavy lifting. The cone orchestrates and synthesizes. Before starting any non-trivial task, ask: can this be parallelized? The default should be delegation, not "just do it yourself."

WHEN TO DELEGATE

Delegate to scoops when:

WHEN TO DO IT YOURSELF

The cone should handle work directly when:

When in doubt, delegate. A slightly over-delegated workflow is better than a cone doing everything sequentially.

PARALLEL SCOOP PATTERNS

Spawn multiple scoops for independent work items. Each scoop works in parallel — the cone is notified as each finishes.

# Research 3 competing products in parallel
scoop_scoop("product-a", prompt="Research Product A. Write findings to /shared/product-a.md")
scoop_scoop("product-b", prompt="Research Product B. Write findings to /shared/product-b.md")
scoop_scoop("product-c", prompt="Research Product C. Write findings to /shared/product-c.md")
# Cone waits, then synthesizes all three into a comparison
# Build + test in parallel
scoop_scoop("implement", prompt="Implement feature X in /shared/src/...")
scoop_scoop("test-plan", prompt="Write test cases for feature X to /shared/tests/...")
# After both finish, cone integrates and runs final verification

WRITING GOOD BRIEFS

Scoops cannot see the cone's conversation. Every feed_scoop prompt must be fully self-contained. Include:

Bad brief:

feed_scoop("researcher", "Look into that API we discussed and summarize it.")

Good brief:

feed_scoop("researcher", "Research the Stripe Billing API.
- Read the docs at https://stripe.com/docs/billing
- Focus on: subscription lifecycle, proration, metered billing
- Write a summary to /shared/stripe-billing-research.md
- Include code examples for creating a subscription with Node.js
- Note any rate limits or gotchas for production use.")

RESULT SYNTHESIS

Pulling results together, resolving conflicts, and making final recommendations — that's the cone's job. After scoops complete:

Never just concatenate scoop outputs. The cone adds value by integrating, prioritizing, and drawing conclusions that no individual scoop could reach alone.

SCOOP LIFECYCLE MANAGEMENT

Drop scoops after synthesis is complete and their results have been consumed. But respect these rules:

SPRINKLE DELEGATION

The cone NEVER writes .shtml files or runs sprinkle commands directly. All sprinkle work is delegated via feed_scoop. The scoop owns the sprinkle for its entire lifetime — creation, updates, and lick event handling.

# Correct: delegate sprinkle work to a scoop
scoop_scoop("dashboard", prompt="You own the sprinkle 'dashboard'.
1. Read /workspace/skills/sprinkles/style-guide.md
2. Build a dashboard showing metrics X, Y, Z
3. Write to /shared/sprinkles/dashboard/dashboard.shtml
4. Run: sprinkle open dashboard
5. Stay ready for lick events and follow-up instructions.")

# Wrong: cone writing shtml directly
write_file("/shared/sprinkles/dashboard/dashboard.shtml", "...")  # NEVER DO THIS

LICK DELEGATION

The cone NEVER handles lick events directly. When a lick event arrives (webhook, cron, or sprinkle interaction), the cone routes it to the appropriate scoop via feed_scoop. The scoop that owns the sprinkle or registered the webhook/cron is the one that should process the event.

DECISION CHECKLIST

Before starting a task, run through this:

  1. Can the work be split into independent pieces? → Parallel scoops.
  2. Is it a single quick action? → Do it yourself.
  3. Does it involve sprinkles or licks? → Always delegate.
  4. Is the brief easy to write self-contained? → Delegate.
  5. Would you need to pass your entire conversation as context? → Do it yourself.

SEE ALSO

man scoop, man cone, man sprinkle, man lick