scoop — isolated sub-agents with sandboxed filesystems

SYNOPSIS

scoop_scoop(name, [model], [prompt])    Create a new scoop
feed_scoop(scoop_name, prompt)          Send instructions to a scoop
drop_scoop(scoop_name)                  Remove a scoop
list_scoops                             List all active scoops

DESCRIPTION

Scoops are isolated sub-agents created by the cone to do heavy lifting. Each scoop runs independently with its own sandboxed filesystem, shell, and conversation. The cone orchestrates — scoops do the work.

Scoops cannot see the cone's conversation history. They must be given complete, self-contained prompts with all necessary context, instructions, file paths, and expected output format.

LIFECYCLE

FILESYSTEM

Each scoop gets a sandboxed filesystem enforced by RestrictedFS:

Write operations outside allowed paths throw EACCES. Read operations outside allowed paths return "not found". The cone has unrestricted access to the entire filesystem.

SCOOP MEMORY

Each scoop has its own CLAUDE.md at /scoops/{folder}/CLAUDE.md, created automatically on initialization. Use this for scoop-specific context, notes, and memory that persists across feed_scoop calls. The cone's memory lives at /workspace/CLAUDE.md.

NAMING CONVENTIONS

Scoop names are slugified: lowercased, non-alphanumeric characters replaced with hyphens, with -scoop appended. The folder name becomes the scoop's trigger (@{folder}) and assistant label.

If a scoop owns a sprinkle, the scoop name MUST match the sprinkle name. Sprinkle "giro-winners" requires scoop "giro-winners" (folder: "giro-winners-scoop"). This is how the cone routes work to the correct scoop.

WHEN TO DROP

Drop a scoop when:

NEVER drop a scoop when:

PARALLEL DELEGATION

Spawn multiple scoops for independent work, then synthesize results in the cone:

scoop_scoop("research", prompt="Research X. Write findings to /shared/research.md")
scoop_scoop("prototype", prompt="Build prototype of Y in /scoops/prototype-scoop/workspace/")
# Wait for both to finish, then synthesize in the cone

Each scoop works independently and in parallel. The cone is notified when each scoop finishes. Synthesizing results — pulling everything together, resolving conflicts, making final decisions — is the cone's job.

WRITING GOOD PROMPTS

Scoops get complete self-contained prompts. They cannot see the cone's conversation, so include:

For sprinkle scoops, include the instruction to read the sprinkles skill first:

feed_scoop("dashboard", "You own the sprinkle 'dashboard'. Your job:
1. Run: read_file /workspace/skills/sprinkles/style-guide.md
2. Build the dashboard showing X, Y, Z
3. Write to /shared/sprinkles/dashboard/dashboard.shtml
4. Run: sprinkle open dashboard
5. Stay ready for follow-up instructions and lick events.")

TOOLS AVAILABLE TO SCOOPS

Scoops have the same core tools as the cone: read_file, write_file, edit_file, bash, javascript, and send_message. Scoops do NOT have scoop management tools (scoop_scoop, feed_scoop, drop_scoop, update_global_memory) — only the cone can manage scoops.

SEE ALSO

man cone, man sprinkle, man lick, man feed_scoop