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'