Multi-agent orchestration for GitHub Issues using BEADS task tracking
This skill coordinates a swarm of specialized AI agents to autonomously handle GitHub Issues from creation to merged PR.
# User triggers via any of:
@beads start #123
bd start 123
/project:beads-start 123
bd ready # Show tasks ready to work
bd list # Show all tasks
bd stats # Show project statistics
bd doctor # Check system health
| Agent | Role | Spawned When |
|---|---|---|
| Issue Orchestrator | Main coordinator per Issue | Issue receives agent-ready label |
| Researcher Agent | Codebase exploration | Orchestrator creates research task |
| Architect Agent | Implementation planning | Research complete |
| Product Manager Agent | Use case & user benefit review | Design review gate (parallel) |
| Designer Agent | UX/API design review | Design review gate (parallel) |
| Security Design Agent | Security threat modeling | Design review gate (parallel) |
| CTO Agent | TDD readiness & plan review | Design review gate (parallel) |
| Coder Agent | TDD implementation | Design review gate approved |
| Code Review Agent | Internal code review | Implementation complete |
| Security Auditor | Security review (code) | Implementation complete |
| PR Shepherd | PR lifecycle management | PR created |
See agents/ directory for detailed agent definitions.
For complex features created via brainstorming, an automatic Design Review Gate ensures quality before implementation:
Design Document Created
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β DESIGN REVIEW GATE β
β β
β Spawns in PARALLEL: β
β β’ Architect Agent (technical architecture) β
β β’ Designer Agent (UX/API design) β
β β’ CTO Agent (TDD readiness) β
β β
β ALL THREE must approve to proceed β
βββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βββ Any NEEDS_REVISION? β Iterate on design (max 3x)
β
ALL APPROVED
β
βΌ
Create BEADS Epic β Begin Implementation
The gate is automatically triggered when:
superpowers:brainstorming completes and commits a design doc/project:review-design <path-to-design.md>| Agent | Focus Areas |
|---|---|
| Product Manager | Use case clarity, user benefits, scope, success metrics |
| Architect | Service architecture, dependencies, patterns, integration |
| Designer | API design, UX flows, developer experience, consistency |
| Security Design | Threat modeling, auth/authz, data protection, OWASP Top 10 |
| CTO | TDD readiness, codebase alignment, completeness, risks |
See goodtogo:design-review-gate skill for full details.
GitHub Issue #123 (agent-ready label)
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Issue Orchestrator β
β Creates BEADS epic, delegates work β
βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Research Phase β
β Researcher Agent explores codebase β
βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Planning Phase β
β Architect Agent creates plan β
βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β DESIGN REVIEW GATE (PARALLEL) β
β β
β βββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ βββββββββ β
β β PM β β Architectβ β Designer β β Security β β CTO β β
β β(users) β β (tech) β β (UX/API) β β (threats)β β (TDD) β β
β βββββββββββ ββββββββββββ ββββββββββββ ββββββββββββ βββββββββ β
β β
β ALL FIVE must approve (max 3 iterations) β
βββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Implementation Phase β
β Coder Agent implements with TDD β
βββββββββββββββββββββββββββββββββββββββ
β
ββββββββββββββββββββββββββββββββ
βΌ βΌ
βββββββββββββββββββββ βββββββββββββββββββββ
β Code Review β β Security Audit β
β Agent β β Agent β
βββββββββββββββββββββ βββββββββββββββββββββ
β β
ββββββββββββββββ¬ββββββββββββββββ
βΌ
βββββββββββββββββββββββββββββββββββββββ
β PR Creation (Auto-Shepherd) β
β bin/create-pr-with-shepherd.sh β
β β Auto-invokes pr-shepherd skill β
βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β PR Shepherd (Automatic) β
β Monitors CI, handles reviews, β
β resolves threads automatically β
βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Human Approval & Merge β
βββββββββββββββββββββββββββββββββββββββ
β
βΌ
βββββββββββββββββββββββββββββββββββββββ
β Close Epic & Extract Learnings β
βββββββββββββββββββββββββββββββββββββββ
When a PR is created via bin/create-pr-with-shepherd.sh, the script outputs instructions to start monitoring:
/project:pr-shepherd <pr-number>For manually-created PRs, invoke /project:pr-shepherd <pr-number> to start the monitoring cycle.
# Create epic for GitHub Issue
bd create "Feature: User Auth" --type epic --issue 123
# Create task under epic
bd create "Research auth patterns" --type task --parent bd-abc123
# Add dependency
bd dep add <blocked-task> <blocking-task>
# Update status
bd update <task-id> --status open|in_progress|blocked|closed
# Close with reason
bd close <task-id> --reason "Completed successfully"
# Show ready (unblocked) tasks
bd ready --json
# List all tasks under epic
bd list --parent <epic-id>
# Show blocked tasks
bd blocked
# Show task details
bd show <task-id> --json
# Waiting for human input
bd label add <task-id> waiting:human
# Waiting for CI
bd label add <task-id> waiting:ci
# Agent failed, needs intervention
bd label add <task-id> agent:failed
# Review iteration tracking
bd label add <task-id> review:iteration-1
# Check sync status
bd sync --status
# Pull updates from main
bd sync --from-main
# Export to JSONL
bd export
# Check Issue has agent-ready label
gh issue view 123 --json labels | jq '.labels[].name' | grep agent-ready
# Get Issue details
ISSUE=$(gh issue view 123 --json title,body,number)
# Create epic linked to Issue
bd create "$(echo $ISSUE | jq -r .title)" --type epic --issue 123 --json
gh issue comment 123 --body "π€ Agent claiming this issue. BEADS epic created."
Use the Task tool to spawn the Issue Orchestrator agent:
Task({
subagent_type: "general-purpose",
description: "Issue Orchestrator for #123",
prompt: `You are the ISSUE ORCHESTRATOR agent.
Read the agent definition at:
.claude/plugins/goodtogo/skills/beads/agents/issue-orchestrator.md
Your task:
- Epic ID: <epic-id>
- GitHub Issue: #123
- Begin the orchestration workflow
Follow the workflow phases exactly as specified.`,
});
# Mark task as waiting
bd update <task-id> --status blocked
bd label add <task-id> waiting:human
# Post to GitHub Issue
gh issue comment <number> --body "$(cat <<'EOF'
## π€ Agent Request: <type>
**Task**: <task-id>
**Question**: <clear question>
### Options
1. **Option A**: <description>
2. **Option B**: <description>
### Agent Recommendation
<recommendation>
---
Reply: `@beads approve <task-id>` or `@beads respond <task-id> <option>`
EOF
)"
# Approve a blocked task
@beads approve bd-abc123
# Respond with choice
@beads respond bd-abc123 "Use option A"
# Request changes
@beads request-changes bd-abc123 "Need more error handling"
# Defer to later
@beads defer bd-abc123 "Discuss in Monday standup"
// Spawn Researcher first
const researchResult = await Task({
subagent_type: "general-purpose",
description: "Research for issue #123",
prompt: researcherPrompt,
});
// Then spawn Architect with research output
const planResult = await Task({
subagent_type: "general-purpose",
description: "Planning for issue #123",
prompt: architectPrompt + researchResult,
});
// Spawn Code Review and Security Audit in parallel
const [reviewResult, securityResult] = await Promise.all([
Task({
subagent_type: "general-purpose",
description: "Code review for #123",
prompt: codeReviewPrompt,
}),
Task({
subagent_type: "general-purpose",
description: "Security audit for #123",
prompt: securityAuditPrompt,
}),
]);
ALL agents MUST prime their context before starting ANY work. This prevents bad assumptions and ensures alignment with established patterns.
# General prime (loads critical rules + gotchas)
npx tsx scripts/beads-prime.ts
# Prime for specific files you'll modify
npx tsx scripts/beads-prime.ts --files "src/lib/services/*.ts" "src/app/api/*.ts"
# Prime for specific topic
npx tsx scripts/beads-prime.ts --keywords "authentication" "jwt"
# Prime for work type
npx tsx scripts/beads-prime.ts --work-type planning # Before planning
npx tsx scripts/beads-prime.ts --work-type implementation # Before coding
npx tsx scripts/beads-prime.ts --work-type review # Before reviewing
npx tsx scripts/beads-prime.ts --work-type research # Before exploring
# Combined (most thorough)
npx tsx scripts/beads-prime.ts --files "<files>" --keywords "<topic>" --work-type <type>
The prime command outputs relevant facts categorized as:
Run self-reflection to extract learnings:
# Fetch recent PR comments
GITHUB_TOKEN=$(gh auth token) npx tsx scripts/beads-fetch-pr-comments.ts --days 7
# Use self-reflect skill to evaluate and add learnings
/project:self-reflect
Or spawn Knowledge Curator agent:
Task({
subagent_type: "general-purpose",
description: "Extract learnings from epic",
prompt: `Review completed epic <epic-id> and extract learnings.
FIRST: Run \`npx tsx scripts/beads-prime.ts --work-type review\` to load context.
Then analyze:
- What patterns were used?
- What gotchas were discovered?
- What should future agents know?
Use the knowledge capture service to store learnings.`,
});
Before closing an epic, verify ALL:
gtg returns READY status (deterministic PR readiness gate)gtg "$PR_NUMBER" --repo "$OWNER/$REPO" --format json > /tmp/gtg.json
STATUS=$(jq -r '.status' /tmp/gtg.json)
# Must return READY status before proceeding
The gtg command replaces manual verification of:
A PR is NOT ready until gtg returns READY status.
# Check PR readiness deterministically (recommended: parse JSON status)
gtg 123 --repo owner/repo --format json > /tmp/gtg.json
STATUS=$(jq -r '.status' /tmp/gtg.json)
echo "Status: $STATUS" # Must be READY
# Alternative: use semantic exit codes for shell scripts
gtg 123 --repo owner/repo -q # Exit code 0 = READY
# For details on what's blocking:
gtg 123 --repo owner/repo --format json | jq '.action_items'
# Check task status
bd show <task-id> --json
# Check for orphaned agent
# If agent failed, reset and retry
bd update <task-id> --status open
bd label remove <task-id> agent:failed
# Run doctor to detect
bd doctor
# If found, restructure dependencies
bd dep remove <task1> <task2>
# Check sync status
bd sync --status
# Force export
bd export
# Pull from main
bd sync --from-main
.claude/plugins/goodtogo/skills/beads/
βββ SKILL.md # This file
βββ agents/
βββ issue-orchestrator.md # Main coordinator
βββ researcher-agent.md # Codebase exploration
βββ architect-agent.md # Implementation planning
βββ product-manager-agent.md # Use case & user benefit review (NEW)
βββ designer-agent.md # UX/API design review (NEW)
βββ security-design-agent.md # Security threat modeling (NEW)
βββ cto-agent.md # TDD readiness review
βββ coder-agent.md # TDD implementation
βββ code-review-agent.md # Internal code review
βββ security-auditor-agent.md # Security review (implementation)
βββ pr-shepherd-agent.md # PR lifecycle management
.claude/plugins/goodtogo/skills/design-review-gate/
βββ SKILL.md # Design review gate orchestrator (NEW)
.claude/plugins/goodtogo/skills/brainstorming-extension/
βββ SKILL.md # Hooks brainstorming to review gate (NEW)
.claude/commands/
βββ review-design.md # /project:review-design command (NEW)
.claude/rubrics/
βββ plan-review-rubric.md # Used by CTO Agent
βββ code-review-rubric.md # Used by Code Review Agent
.beads/
βββ beads.db # SQLite database
βββ issues.jsonl # Issue/task data
βββ knowledge/ # Curated learnings
βββ codebase-facts.jsonl
βββ patterns.jsonl
βββ anti-patterns.jsonl