How this skill is triggered — by the user, by Claude, or both
Slash command
/agent-swarm:developThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
PM orchestration playbook for the full PR-based development lifecycle.
PM orchestration playbook for the full PR-based development lifecycle.
intake → research → design → branch → [test_writing → implement → test] → review → merge → acceptance → complete
└──────── TDD loop ────────┘
Kickbacks:
test ──────────→ implement (tests fail)
review ────────→ implement (code issues)
review ────────→ test_writing (test gaps)
merge ─────────→ implement (conflicts)
acceptance ────→ implement (requirements)
acceptance ────→ test_writing (test gaps)
| Role | Spawn At | Shut Down After |
|---|---|---|
| PM | Workflow start (team lead) | complete |
| Researcher | research | research complete |
| Architect | design | design approved |
| Implementer | test_writing | complete |
| Reviewer | review | complete |
| Git-agent | branch | complete |
| Debugger | On demand | Issue resolved |
Create team and start workflow. PM is team lead.
TeamCreate(team_name="develop-<feature>")
workflow__workflow_start(workflow_id="develop", task="<feature description>")
mkdir -p .develop/ # artifact directory for stories, research, design
Gather requirements from user. Write user stories with acceptance criteria.
Actions:
gh issue create --title "<feature>" --body "<stories>"workflow__set_value(wf_id, "stories", stories).develop/stories.mdworkflow__advance_phase(wf_id, "research")Spawn Researcher to gather codebase context.
Actions:
reg = router__register_agent(agent_id="researcher", agent_type="researcher", workflow_id="develop")
Task(team_name=<team>, name="researcher", prompt=reg.briefing + "\n\n" + context_request)
SendMessage(recipient="researcher", content=<stories + questions>).develop/research.mdSendMessage(type="shutdown_request", recipient="researcher")workflow__advance_phase(wf_id, "design")Spawn Architect to produce design spec with subtask dependency graph.
Actions:
reg = router__register_agent(agent_id="architect", agent_type="architect", workflow_id="develop")
Task(team_name=<team>, name="architect", prompt=reg.briefing + "\n\n" + design_request)
SendMessage.develop/design.mdgh issue create per subtaskSendMessage(type="shutdown_request", recipient="architect")workflow__advance_phase(wf_id, "branch")Spawn Git-agent to create feature branch from main.
Actions:
reg = router__register_agent(agent_id="git-agent", agent_type="git-agent", workflow_id="develop")
Task(team_name=<team>, name="git-agent", prompt=reg.briefing + "\n\n" + branch_request)
SendMessage
SendMessage(recipient="git-agent", content="Create feature branch 'feat/<name>' from main")
workflow__advance_phase(wf_id, "test_writing")For each eligible subtask (respecting dependency graph):
Actions:
workflow__set_value(wf_id, "subtask_queue", subtask_list)
# Implementers use iterate sub-workflow (TDD loop) for their individual work.
# The develop workflow governs the PM's outer lifecycle.
reg = router__register_agent(agent_id=<subtask-id>, agent_type="implementer", workflow_id="iterate")
Task(
team_name=<team>,
name=<subtask-id>,
prompt=reg.briefing + "\n\n" + subtask_description + working_dir,
subagent_type="implementer",
isolation="worktree" # parallel subtasks get isolated worktrees
)
test_writing -> implement -> testworkflow__advance_phase(wf_id, "review")Spawn Reviewer for adversarial code review.
Actions:
reg = router__register_agent(agent_id="reviewer", agent_type="reviewer", workflow_id="develop")
Task(team_name=<team>, name="reviewer", prompt=reg.briefing + "\n\n" + review_request)
SendMessageOutcomes:
| Result | Action |
|---|---|
| Approve | workflow__advance_phase(wf_id, "merge") |
| Code issues | Record kickback, workflow__advance_phase(wf_id, "implement") |
| Test gaps | Record kickback, workflow__advance_phase(wf_id, "test_writing") |
Message Git-agent to create PR and merge.
Actions:
SendMessage(recipient="git-agent")gh pr create --base main --head <branch>Outcomes:
| Result | Action |
|---|---|
| Clean merge | workflow__advance_phase(wf_id, "acceptance") |
| Conflicts | Record conflict files, workflow__advance_phase(wf_id, "implement") |
PM validates implementation against user stories.
Actions:
Outcomes:
| Result | Action |
|---|---|
| Accept | workflow__advance_phase(wf_id, "complete") |
| Code issue | Record issue, workflow__advance_phase(wf_id, "implement") |
| Test gap | Record gap, workflow__advance_phase(wf_id, "test_writing") |
Shut down all teammates and summarize.
Actions:
SendMessage(type="shutdown_request", recipient="<each-agent>")
| From | Target | Reason |
|---|---|---|
| test | implement | Tests fail |
| review | implement | Code quality issues |
| review | test_writing | Insufficient test coverage |
| merge | implement | Merge conflicts |
| acceptance | implement | Doesn't meet requirements |
| acceptance | test_writing | Tests don't validate requirements |
Kickback loops (3+ same-issue kickbacks) trigger PM intervention — escalate to user.
max_agents in workflow config (default: 8)| Artifact | Location | Purpose |
|---|---|---|
| User stories | .develop/stories.md | Requirements + acceptance criteria |
| Research | .develop/research.md | Codebase context and findings |
| Design spec | .develop/design.md | Architecture, subtasks, dependency graph |
| Workflow state | Router state store | Phase, kickbacks, subtask status |
max_agent_respawns (default: 3). If exceeded, mark subtask failed and alert PM.reg = router__register_agent(agent_id="debugger-<issue>", agent_type="debugger", workflow_id="develop")
Task(team_name=<team>, name="debugger-<issue>", prompt=reg.briefing + "\n\n" + error_context)
Shut down debugger after issue is resolved.Settings in config/workflows/develop.yaml:
| Setting | Default | Purpose |
|---|---|---|
max_agents | 8 | Max concurrent agents |
max_review_retries | 0 | Auto-retry limit for review kickbacks (0 = unlimited) |
max_agent_respawns | 3 | Max re-spawns per crashed agent |
tickets.enabled | true | Create GitHub issues |
tickets.provider | github | Issue provider (gh CLI) |
tickets.feature_ticket | true | Create parent feature ticket |
tickets.subtask_tickets | true | Create per-subtask tickets |
tickets.followup_tickets | true | Reviewer/PM create at review/acceptance |
Guides creation, editing, and verification of skills for AI coding agents using test-driven development with subagent scenarios. Use when authoring or debugging skills.
npx claudepluginhub c-daly/agent-swarm --plugin agent-swarm