AI & agents · Automation
dev-spawn
/dev-spawn
Use when work is bulk, independent or needs a second opinion from another agent.
For whom
- Author
- nchandar ↗
- Repository
- dev-kit ↗
- Licence
- MIT
- Last repository change
- 12.11.2026
Assessment and security
100/ 100Class: good
Format25 / 25
Frontmatter with name and description, valid name, description up to 1,024 characters, name matching the folder.
Discoverability25 / 25
Description explains when to use the skill, has a reasonable length and uses third person.
Content35 / 35
At least 150 words and at most 500 lines, headings, step lists, examples or code.
Hygiene15 / 15
No placeholders such as TODO, no Windows paths, with a licence.
Riskno signals detected in the scan
- Files in this package
- 1
- Scripts
- 0
- HTML comments
- 0
- URLs in SKILL.md
- 0
Deprecation
No signals detected. Repository changed on 12.11.2026, without references to retired models or APIs.
Licence
MIT, open: use and modify while retaining author attribution.
What it does and when to use it
Use when work is bulk, independent or needs a second opinion from another agent.
Original author description
Use when work is bulk, independent or needs a second opinion from another agent.
How it works
- When to Use
- Checklist
- Phrases to commands
- Worker rules (put in every brief)
- Changing a running worker
- Rationalizations
- Red Flags
- Verification
Original SKILL.md headings · 67 lines, 1,306 words
SKILL.md preview
--- name: dev-spawn description: Use when work is bulk, independent or needs a second opinion from another agent. disable-model-invocation: true --- # dev-spawn Paths: the `bin/` tools and the `library/` folder live in `~/.agents/dev-kit/`; run tools by that path. Task: no `DEVKIT_TASK` set? Run `~/.agents/dev-kit/bin/ledger start <slug>` first (it prints your id) and prefix dev-kit commands with `DEVKIT_TASK=<id>`. `<task>` below is `.devkit/tasks/<id>` at the repo root; never write run files anywhere else. Also read `.devkit/memory.md` if it exists. Open the host todo list (todowrite, TodoWrite or TaskCreate, whichever exists; else a checklist in <task>/state.md) with this checklist verbatim, and tick items as steps finish. A skipped step stays listed with a reason. Run `bin/ledger` after every step (phase=spawn). ## When to Use - Output would exceed about 50 lines, much reading is needed, work is independent, or you need an unbiased second pair of eyes. - A long task nobody watches: also follow library/deep/overnight. - Not for small edits, or a step whose result you need in context to decide the next one. **You own:** delegated work and the decision to accept or reject each handoff. **Reads:** always library/principles (step 0), library/state. For a long task nobody watches: library/deep/overnight. ## Checklist - [ ] 0. Skim library/principles (about 700 tokens); open a deep file only when its trigger matches. - [ ] 1. Pick the shape: scout (report only, no code change) or ship (edits code). - [ ] 2. Write the brief to `<task>/briefs/<id>.md`, standalone, max 40 lines: goal and why, in-scope files, non-goals, facts already known, the output wanted, the done-check command, and either a `route: dev-x` line (the worker follows that playbook's checklist; column-0 line outside code fences, indented only as fallback, first usable wins, column-0 beats indented) or its own `## Checklist`. spawn gives every worker a checklist anyway and the worker ticks it in its host todo list. - [ ] 3. Parallel writers each get `--worktree` (branch `devkit/<id>`). Scouts need none. - [ ] 4. Run: `bin/spawn [--shape scout] [--worktree] [--model M] <id> <claude|codex|opencode> <task>/briefs/<id>.md`, each worker as its OWN background command so every finish notifies you (never wait on a group: the slowest hides the rest). When one finishes, read its handoff and check its output exists before trusting PASS. Copy any `learnings` from accepted handoffs into `state.md` (library/state). Short ask? `--prompt "text"` instead of a brief file. Live workers are capped (limits in the ARCHITECTURE.md env table); extras queue; a hung worker is killed after `DEVKIT_TIMEOUT`. - [ ] 5. Read only `<task>/handoffs/<id>.md`; open the `.log` only if it failed. Several workers in one batch: say nothing about a single handoff while others still run; when all have finished or dropped out, give ONE combined answer, never per-worker commentary. - [ ] 6. Accept a report only if it ends `PASS`, `ISSUES` or `BLOCKED` with evidence (command, file:line) and spawn printed `checklist: n/n` (missing or open items: read the handoff, then reject or ask). No evidence: reject and respawn once; a second miss is a gap, and a gap is not a pass. Then `bin/ledger accept "<id> accepted|rejected" <reason>`; the Stop hook blocks you until every worker you spawned has one; `bin/reconcile --wait` waits for running ones. - [ ] 7. Dropout: continue with the others and note it. Run `bin/reconcile` to see all states. - [ ] 8. Ledger what you accepted or rejected. Merge ship branches yourself; discard worktrees you do not merge. After merging or discarding, run `bin/spawn --prune -t <task> --yes`. Closeout: follow library/state. Then close the ledger: `bin/ledger done "<summary>"`, or a `next` row with the first runnable step if work remains. ## Phrases to commands Any CLI can be the main agent and any CLI the worker; it is always the same bash command. If the user does not name a CLI, use the one you are running in. | User says | You run | |---|---| | "open a codex instance and run X" | `bin/spawn --prompt "X" <id> codex` | | "have opencode review this diff" | scout brief naming the diff command, then `bin/spawn --shape scout <id> opencode <brief>` | | "run these two in parallel on claude and codex" | two spawns, each as its own background command (within the worker cap) | | "use a cheap model for this" | add `--model <name>` (name as that CLI expects it) | | "give it a lead" (one worker runs a whole build, spawns its own helpers, returns branches and PR drafts) | `bin/spawn --lead --shape ship <id> claude <brief>` (`--lead` implies its own worktree and branch; live leads are capped, see the ARCHITECTURE.md env table) with `DEVKIT_TIMEOUT` raised for the run; brief has a `route: dev-feature` line, the spec path, an optional column-0 `owns: path path` line (spawn warns when it overlaps a live lead's), no push and no PR (the parent asks the user), and a handoff with commits and PR drafts. Lead rule, put in its brief: before the handoff, fetch if a remote exists, rebase onto the latest default branch, resolve conflicts, rerun the full suite, lint and bin/verify, and write `base: <sha>` and `behind: 0` in the handoff; `bin/ledger accept ... accepted` refuses a lead whose branch is not built on the default branch tip. Helpers share the one worker pool with every lead, first come first served; a nested spawn past the pool waits `DEVKIT_CHILD_WAIT`, then exits (do that work yourself). Edit no dev-kit tool in the main checkout while it runs. | | "run the tests" | `bin/run <cmd>`: no agent; full output to a log, you read the summary | | a CLI misbehaves or is new | `bin/spawn --doctor` (installed, flags still valid; OpenCode v2 needs `opencode service start` once) | Workers run interactive in a herdr tab (`DEVKIT_MODE=auto`); headless is only the fallback when herdr is down. Never pick -p/exec/run by hand. Edits stay inside the worktree; wider access is the user's call. ## Worker rules (put in every brief) Do not spawn agents. Do not contact other workers. Write your report to the handoff path with: result (PASS|ISSUES|BLOCKED), evidence, files changed, open questions, next step, learnings (reusable lessons, each with a pointer), then a `## Checklist` section with every item ticked. Run `bin/ledger` for your own decisions. A lead also: fetch if a remote exists, rebase onto the latest default branch, rerun the full suite, lint and bin/verify, and write `base: <sha>` and `behind: 0` in the handoff. ## Changing a running worker Append the correction to `<task>/updates/<id>.md` (create the folder if needed); every worker reads it before each slice and before its handoff, so nothing interrupts it and nobody approves a prompt. Use a cross-session message only to interrupt (stop, wrong direction, urgent): a worker in another permission mode holds it until the user approves it in that tab, so tell the user a prompt is coming and never route around a held message. **Hand off to:** the calling route with the accepted handoffs. **Reply:** one combined answer after every worker has finished or dropped out: accepted and rejected handoffs, evidence, gaps. ## Rationalizations | Excuse | Rebuttal | |---|---| | "Quicker to do it myself" | Fine when tiny. For big reads it fills your context. | | "Let workers coordinate" | They report up through files only; you coordinate. | | "A worker can spawn a helper" | Only if its prompt allows it, up to DEVKIT_MAX_DEPTH. | | "Same tree for two writers" | They clobber each other. Use worktrees. | ## Red Flags - A brief that says "look into it" with no done-check; reading worker logs instead of reports. - More than 2 workers; a scout reporting a `violation` status and being ignored. ## Verification - `bin/reconcile` shows no forgotten running or killed ids; one claim per report was spot-checked before relying on it. - Close the ledger: `bin/ledger done "<summary>"`, or a `next` row with the first runnable step if work remains.
Versions
The database has no other skills named dev-spawn.
Database snapshot: 13.11.2026 · package version c8b8bf163a52 (SHA-256 digest of the entire package)
Downloads in the last 30 days: 0 · ranking
Report a problem with this skill: harmful content, incorrect descriptions or an author’s removal request.
Similar skills
- 100codex-plan-review
Get a second opinion on your current implementation plan by sending it to Codex for independent review. Use after brainstorming, after writing a plan, or when you want to iterate on a plan before execution. Triggers on 'get a second opinion', 'review plan with codex', 'codex… - 100ask-claude
Use when a Codex or generic local agent needs a focused second opinion from Claude CLI without MCP routing. - 100ask-gemini
Use when a Codex or generic local agent needs a focused second opinion from Gemini CLI without MCP routing. - 100netlify-agent-runner
Run AI agent tasks remotely on Netlify using Claude, Codex, or Gemini. Use when the user wants to run an AI agent on their site, get a second opinion from another model, or delegate development tasks to run remotely against their repo. - 100review
Cross-model orchestration between Claude Code and a local Codex CLI. Claude orchestrates, plans, and reviews; Codex implements and provides an independent second opinion. Use when you want two different model families to cross-check work rather than one model reviewing itself. - 100subhub
Hand work to the user's other AI subscriptions (other Claude accounts, Codex, Cursor, Antigravity/Gemini, Ollama local or cloud models) through SubHub. Each sub is a full agent that can read and edit files, run commands and research. Use for side or parallel work, a…