What
Add a new thin wrapper skill (dispatch-implement) that dispatches subagents to run
/implement per ticket, instead of /implement dispatching itself. implement/SKILL.md
stays exactly as it is today (Matt Pocock-minimal: /tdd at agreed seams, checks, review,
commit) — it only ever runs standalone or inside a dispatched subagent, never orchestrates.
Decision and rejected alternatives recorded in
docs/adr/implement-stays-minimal-dispatch-in-wrapper-skill.md.
Why
Per claude/CLAUDE.md's "Subagent Orchestration" section, implementation work should
generally be dispatched to a fit-for-purpose subagent (Opus or Sonnet, never Fable) so the
orchestrating session stays lean. The user already prompts "dispatch subagent(s) to
/implement #ticketXYZ,#ticketABC" by hand often enough to want it automatic — but folding
that logic into /implement itself would break its upstream-minimal shape, so the dispatch
logic lives in a new wrapper skill instead (see ADR above for the full trade-off).
Scope
- New skill
dispatch-implement (portable, ai-agents/skills/) that:
- Parses one or more
#ticket references from its invocation (e.g. /dispatch-implement #ticket1,#ticket2).
- Judges parallel-vs-sequential per pair of tickets, conservatively: if file/scope
ownership can't be confirmed non-overlapping, treat as conflicting and run sequentially.
- Picks model and effort per ticket rather than a fixed pin.
- Resolves to the current runtime's dispatch primitive:
- Calls
/implement once per ticket, inside each dispatched unit.
implement/SKILL.md itself: no changes.
- Update the skill listing /
ai-agents/SKILL-OWNERSHIP.md to register the new skill and its
per-runtime projection status.
Acceptance criteria
What
Add a new thin wrapper skill (
dispatch-implement) that dispatches subagents to run/implementper ticket, instead of/implementdispatching itself.implement/SKILL.mdstays exactly as it is today (Matt Pocock-minimal:
/tddat agreed seams, checks, review,commit) — it only ever runs standalone or inside a dispatched subagent, never orchestrates.
Decision and rejected alternatives recorded in
docs/adr/implement-stays-minimal-dispatch-in-wrapper-skill.md.Why
Per
claude/CLAUDE.md's "Subagent Orchestration" section, implementation work shouldgenerally be dispatched to a fit-for-purpose subagent (Opus or Sonnet, never Fable) so the
orchestrating session stays lean. The user already prompts "dispatch subagent(s) to
/implement#ticketXYZ,#ticketABC" by hand often enough to want it automatic — but foldingthat logic into
/implementitself would break its upstream-minimal shape, so the dispatchlogic lives in a new wrapper skill instead (see ADR above for the full trade-off).
Scope
dispatch-implement(portable,ai-agents/skills/) that:#ticketreferences from its invocation (e.g./dispatch-implement #ticket1,#ticket2).ownership can't be confirmed non-overlapping, treat as conflicting and run sequentially.
Agenttool.[agents.implementer]table incodex/config.toml, mirroring theexisting
fixertable's pattern/model pin.it; fall back to sequential single-session
/implementcalls if unavailable)./implementonce per ticket, inside each dispatched unit.implement/SKILL.mditself: no changes.ai-agents/SKILL-OWNERSHIP.mdto register the new skill and itsper-runtime projection status.
Acceptance criteria
dispatch-implementexists underai-agents/skills/, projects to Claude Code, CodexCLI, and Pi.
conflicting or unconfirmed-overlap tickets, runs sequentially.
/implementunmodified.codex/config.tomlhas a new[agents.implementer]table.implement/SKILL.mdis unchanged by this ticket.ai-agents/SKILL-OWNERSHIP.mddocuments the new skill.