diff --git a/commands/gsd/debug.md b/commands/gsd/debug.md index cc2bfabd..9a2a728d 100644 --- a/commands/gsd/debug.md +++ b/commands/gsd/debug.md @@ -17,6 +17,11 @@ Debug issues using scientific method with subagent isolation. **Why subagent:** Investigation burns context fast (reading files, forming hypotheses, testing). Fresh 200k context per investigation. Main context stays lean for user interaction. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-debugger — Diagnoses and fixes issues + + User's issue: $ARGUMENTS diff --git a/commands/gsd/research-phase.md b/commands/gsd/research-phase.md index d7458c0b..44f530ac 100644 --- a/commands/gsd/research-phase.md +++ b/commands/gsd/research-phase.md @@ -23,6 +23,11 @@ Research how to implement a phase. Spawns gsd-phase-researcher agent with phase **Why subagent:** Research burns context fast (WebSearch, Context7 queries, source verification). Fresh 200k context for investigation. Main context stays lean for user interaction. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-phase-researcher — Researches technical approaches for a phase + + Phase number: $ARGUMENTS (required) diff --git a/get-shit-done/workflows/audit-milestone.md b/get-shit-done/workflows/audit-milestone.md index 07998ec6..634c437f 100644 --- a/get-shit-done/workflows/audit-milestone.md +++ b/get-shit-done/workflows/audit-milestone.md @@ -6,6 +6,11 @@ Verify milestone achieved its definition of done by aggregating phase verificati Read all files referenced by the invoking prompt's execution_context before starting. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-integration-checker — Checks cross-phase integration + + ## 0. Initialize Milestone Context diff --git a/get-shit-done/workflows/diagnose-issues.md b/get-shit-done/workflows/diagnose-issues.md index dcdd3543..be5c438a 100644 --- a/get-shit-done/workflows/diagnose-issues.md +++ b/get-shit-done/workflows/diagnose-issues.md @@ -6,6 +6,11 @@ After UAT finds gaps, spawn one debug agent per gap. Each agent investigates aut Orchestrator stays lean: parse gaps, spawn agents, collect results, update UAT. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-debugger — Diagnoses and fixes issues + + DEBUG_DIR=.planning/debug diff --git a/get-shit-done/workflows/discuss-phase-assumptions.md b/get-shit-done/workflows/discuss-phase-assumptions.md index 94277175..22af28dc 100644 --- a/get-shit-done/workflows/discuss-phase-assumptions.md +++ b/get-shit-done/workflows/discuss-phase-assumptions.md @@ -6,6 +6,11 @@ You are a thinking partner, not an interviewer. Analyze the codebase deeply, sur believe based on evidence, and ask the user only to correct what's wrong. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-assumptions-analyzer — Analyzes codebase to surface implementation assumptions + + **CONTEXT.md feeds into:** diff --git a/get-shit-done/workflows/execute-plan.md b/get-shit-done/workflows/execute-plan.md index 8faa0a88..cbbf7133 100644 --- a/get-shit-done/workflows/execute-plan.md +++ b/get-shit-done/workflows/execute-plan.md @@ -9,6 +9,11 @@ Read config.json for planning behavior settings. @~/.claude/get-shit-done/references/git-integration.md + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-executor — Executes plan tasks, commits, creates SUMMARY.md + + diff --git a/get-shit-done/workflows/map-codebase.md b/get-shit-done/workflows/map-codebase.md index ed061f50..f67527a7 100644 --- a/get-shit-done/workflows/map-codebase.md +++ b/get-shit-done/workflows/map-codebase.md @@ -6,6 +6,11 @@ Each agent has fresh context, explores a specific focus area, and **writes docum Output: .planning/codebase/ folder with 7 structured documents about the codebase state. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-codebase-mapper — Maps project structure and dependencies + + **Why dedicated mapper agents:** - Fresh context per domain (no token contamination) diff --git a/get-shit-done/workflows/new-milestone.md b/get-shit-done/workflows/new-milestone.md index d239c872..7a8e6fff 100644 --- a/get-shit-done/workflows/new-milestone.md +++ b/get-shit-done/workflows/new-milestone.md @@ -10,6 +10,13 @@ Read all files referenced by the invoking prompt's execution_context before star + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-project-researcher — Researches project-level technical decisions +- gsd-research-synthesizer — Synthesizes findings from parallel research agents +- gsd-roadmapper — Creates phased execution roadmaps + + ## 1. Load Context diff --git a/get-shit-done/workflows/new-project.md b/get-shit-done/workflows/new-project.md index 10dda745..fd27f93c 100644 --- a/get-shit-done/workflows/new-project.md +++ b/get-shit-done/workflows/new-project.md @@ -6,6 +6,13 @@ Initialize a new project through unified flow: questioning, research (optional), Read all files referenced by the invoking prompt's execution_context before starting. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-project-researcher — Researches project-level technical decisions +- gsd-research-synthesizer — Synthesizes findings from parallel research agents +- gsd-roadmapper — Creates phased execution roadmaps + + ## Auto Mode Detection diff --git a/get-shit-done/workflows/quick.md b/get-shit-done/workflows/quick.md index 1a1112ea..b2a3e939 100644 --- a/get-shit-done/workflows/quick.md +++ b/get-shit-done/workflows/quick.md @@ -14,6 +14,15 @@ Flags are composable: `--discuss --research --full` gives discussion + research Read all files referenced by the invoking prompt's execution_context before starting. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-phase-researcher — Researches technical approaches for a phase +- gsd-planner — Creates detailed plans from phase scope +- gsd-plan-checker — Reviews plan quality before execution +- gsd-executor — Executes plan tasks, commits, creates SUMMARY.md +- gsd-verifier — Verifies phase completion, checks quality gates + + **Step 1: Parse arguments and get task description** diff --git a/get-shit-done/workflows/research-phase.md b/get-shit-done/workflows/research-phase.md index f77ec1bb..85ffeb9b 100644 --- a/get-shit-done/workflows/research-phase.md +++ b/get-shit-done/workflows/research-phase.md @@ -4,6 +4,11 @@ Research how to implement a phase. Spawns gsd-phase-researcher with phase contex Standalone research command. For most workflows, use `/gsd:plan-phase` which integrates research automatically. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-phase-researcher — Researches technical approaches for a phase + + ## Step 0: Resolve Model Profile diff --git a/get-shit-done/workflows/ui-phase.md b/get-shit-done/workflows/ui-phase.md index d0244b76..0480d647 100644 --- a/get-shit-done/workflows/ui-phase.md +++ b/get-shit-done/workflows/ui-phase.md @@ -8,6 +8,12 @@ UI-SPEC.md locks spacing, typography, color, copywriting, and design system deci @~/.claude/get-shit-done/references/ui-brand.md + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-ui-researcher — Researches UI/UX approaches +- gsd-ui-checker — Reviews UI implementation quality + + ## 1. Initialize diff --git a/get-shit-done/workflows/ui-review.md b/get-shit-done/workflows/ui-review.md index d0aa1fb1..cf6d870d 100644 --- a/get-shit-done/workflows/ui-review.md +++ b/get-shit-done/workflows/ui-review.md @@ -6,6 +6,11 @@ Retroactive 6-pillar visual audit of implemented frontend code. Standalone comma @~/.claude/get-shit-done/references/ui-brand.md + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-ui-auditor — Audits UI against design requirements + + ## 0. Initialize diff --git a/get-shit-done/workflows/validate-phase.md b/get-shit-done/workflows/validate-phase.md index 3d3b5433..08849ff1 100644 --- a/get-shit-done/workflows/validate-phase.md +++ b/get-shit-done/workflows/validate-phase.md @@ -6,6 +6,11 @@ Audit Nyquist validation gaps for a completed phase. Generate missing tests. Upd @~/.claude/get-shit-done/references/ui-brand.md + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-nyquist-auditor — Validates verification coverage + + ## 0. Initialize diff --git a/get-shit-done/workflows/verify-work.md b/get-shit-done/workflows/verify-work.md index bc710583..a0cd085c 100644 --- a/get-shit-done/workflows/verify-work.md +++ b/get-shit-done/workflows/verify-work.md @@ -4,6 +4,12 @@ Validate built features through conversational testing with persistent state. Cr User tests, Claude records. One test at a time. Plain text responses. + +Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'): +- gsd-planner — Creates detailed plans from phase scope +- gsd-plan-checker — Reviews plan quality before execution + + **Show expected, ask if reality matches.** diff --git a/tests/agent-frontmatter.test.cjs b/tests/agent-frontmatter.test.cjs index 19b5a956..ed1f7504 100644 --- a/tests/agent-frontmatter.test.cjs +++ b/tests/agent-frontmatter.test.cjs @@ -152,6 +152,52 @@ describe('SPAWN: spawn type consistency', () => { ); }); + test('workflows spawning named agents have listing (#1357)', () => { + // After /clear, Claude Code re-reads workflow instructions but loses agent + // context. Without an section, the orchestrator may + // fall back to general-purpose, silently breaking agent capabilities. + // PR #1139 added this to plan-phase and execute-phase but missed all other + // workflows that spawn named GSD agents. + const dirs = [WORKFLOWS_DIR, COMMANDS_DIR]; + for (const dir of dirs) { + if (!fs.existsSync(dir)) continue; + const files = fs.readdirSync(dir).filter(f => f.endsWith('.md')); + for (const file of files) { + const content = fs.readFileSync(path.join(dir, file), 'utf-8'); + // Find all named subagent_type references (excluding general-purpose) + const matches = [...content.matchAll(/subagent_type="([^"]+)"/g)]; + const namedAgents = matches + .map(m => m[1]) + .filter(t => t !== 'general-purpose'); + + if (namedAgents.length === 0) continue; + + // Workflow spawns named agents — must have + assert.ok( + content.includes(''), + `${file} spawns named agents (${[...new Set(namedAgents)].join(', ')}) ` + + `but has no section — after /clear, the ` + + `orchestrator may fall back to general-purpose (#1357)` + ); + + // Every spawned agent type must appear in the listing + for (const agent of new Set(namedAgents)) { + const agentTypesMatch = content.match( + /([\s\S]*?)<\/available_agent_types>/ + ); + assert.ok( + agentTypesMatch, + `${file} has malformed section` + ); + assert.ok( + agentTypesMatch[1].includes(agent), + `${file} spawns ${agent} but does not list it in ` + ); + } + } + } + }); + test('execute-phase has Copilot sequential fallback in runtime_compatibility', () => { const content = fs.readFileSync( path.join(WORKFLOWS_DIR, 'execute-phase.md'), 'utf-8'