fix(#2697): replace retired /gsd: prefix with /gsd- in all user-facing text (#2699)

All workflow, command, reference, template, and tool-output files that
surfaced /gsd:<cmd> as a user-typed slash command have been updated to
use /gsd-<cmd>, matching the Claude Code skill directory name.

Closes #2697

Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
Tom Boucher
2026-04-25 10:59:33 -04:00
committed by GitHub
parent 7c6f8005f3
commit b1a670e662
155 changed files with 881 additions and 863 deletions

View File

@@ -4,7 +4,7 @@
* Scans all .planning/ artifact categories for items with open/unresolved state.
* Returns structured JSON for workflow consumption.
* Called by: gsd-tools.cjs audit-open
* Used by: /gsd:complete-milestone pre-close gate
* Used by: /gsd-complete-milestone pre-close gate
*/
'use strict';

View File

@@ -773,7 +773,7 @@ function cmdScaffold(cwd, type, options, raw) {
switch (type) {
case 'context': {
filePath = path.join(phaseDir, `${padded}-CONTEXT.md`);
content = `---\nphase: "${padded}"\nname: "${name || phaseInfo?.phase_name || 'Unnamed'}"\ncreated: ${today}\n---\n\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Context\n\n## Decisions\n\n_Decisions will be captured during /gsd:discuss-phase ${phase}_\n\n## Discretion Areas\n\n_Areas where the executor can use judgment_\n\n## Deferred Ideas\n\n_Ideas to consider later_\n`;
content = `---\nphase: "${padded}"\nname: "${name || phaseInfo?.phase_name || 'Unnamed'}"\ncreated: ${today}\n---\n\n# Phase ${phase}: ${name || phaseInfo?.phase_name || 'Unnamed'} — Context\n\n## Decisions\n\n_Decisions will be captured during /gsd-discuss-phase ${phase}_\n\n## Discretion Areas\n\n_Areas where the executor can use judgment_\n\n## Deferred Ideas\n\n_Ideas to consider later_\n`;
break;
}
case 'uat': {

View File

@@ -42,7 +42,7 @@ function validateKnownConfigKeyPath(keyPath) {
* Merges (increasing priority):
* 1. Hardcoded defaults — every key that loadConfig() resolves, plus mode/granularity
* 2. User-level defaults from ~/.gsd/defaults.json (if present)
* 3. userChoices — the settings the user explicitly selected during /gsd:new-project
* 3. userChoices — the settings the user explicitly selected during /gsd-new-project
*
* Uses the canonical `git` namespace for branching keys (consistent with VALID_CONFIG_KEYS
* and the settings workflow). loadConfig() handles both flat and nested formats, so this
@@ -166,7 +166,7 @@ function buildNewProjectConfig(userChoices) {
* Command: create a fully-materialized .planning/config.json for a new project.
*
* Accepts user-chosen settings as a JSON string (the keys the user explicitly
* configured during /gsd:new-project). All remaining keys are filled from
* configured during /gsd-new-project). All remaining keys are filled from
* hardcoded defaults and optional ~/.gsd/defaults.json.
*
* Idempotent: if config.json already exists, returns { created: false }.

View File

@@ -263,7 +263,7 @@ const CONFIG_DEFAULTS = {
phase_naming: 'sequential', // 'sequential' (default, auto-increment) or 'custom' (arbitrary string IDs)
project_code: null, // optional short prefix for phase dirs (e.g., 'CK' → 'CK-01-foundation')
subagent_timeout: 300000, // 5 min default; increase for large codebases or slower models (ms)
security_enforcement: true, // workflow.security_enforcement — threat-model-anchored security verification via /gsd:secure-phase
security_enforcement: true, // workflow.security_enforcement — threat-model-anchored security verification via /gsd-secure-phase
security_asvs_level: 1, // workflow.security_asvs_level — OWASP ASVS verification level (1=opportunistic, 2=standard, 3=comprehensive)
security_block_on: 'high', // workflow.security_block_on — minimum severity that blocks phase advancement ('high' | 'medium' | 'low')
post_planning_gaps: true, // workflow.post_planning_gaps — unified post-planning gap report (#2493): scan REQUIREMENTS.md + CONTEXT.md decisions vs all PLAN.md files

View File

@@ -253,7 +253,7 @@ function buildMessage(elements, affectedPaths, action) {
lines.push(`Auto-remap scheduled for paths: ${affectedPaths.join(', ')}`);
} else {
lines.push(
`Run /gsd:map-codebase --paths ${affectedPaths.join(',')} to refresh planning context.`,
`Run /gsd-map-codebase --paths ${affectedPaths.join(',')} to refresh planning context.`,
);
}
return lines.join('\n');

View File

@@ -420,7 +420,7 @@ function buildPreview(gsd2Data, artifacts) {
lines.push('');
lines.push('Cannot migrate automatically:');
lines.push(' - GSD-2 cost/token ledger (no v1 equivalent)');
lines.push(' - GSD-2 database state (rebuilt from files on first /gsd:health)');
lines.push(' - GSD-2 database state (rebuilt from files on first /gsd-health)');
lines.push(' - VS Code extension state');
return lines.join('\n');

View File

@@ -979,10 +979,10 @@ function cmdInitManager(cwd, raw) {
// Validate prerequisites
if (!fs.existsSync(paths.roadmap)) {
error('No ROADMAP.md found. Run /gsd:new-milestone first.');
error('No ROADMAP.md found. Run /gsd-new-milestone first.');
}
if (!fs.existsSync(paths.state)) {
error('No STATE.md found. Run /gsd:new-milestone first.');
error('No STATE.md found. Run /gsd-new-milestone first.');
}
const rawContent = fs.readFileSync(paths.roadmap, 'utf-8');
const content = extractCurrentMilestone(rawContent, cwd);
@@ -1161,7 +1161,7 @@ function cmdInitManager(cwd, raw) {
phase_name: phase.name,
action: 'execute',
reason: `${phase.plan_count} plans ready, dependencies met`,
command: `/gsd:execute-phase ${phase.number}`,
command: `/gsd-execute-phase ${phase.number}`,
});
} else if (phase.disk_status === 'discussed' || phase.disk_status === 'researched') {
recommendedActions.push({
@@ -1169,7 +1169,7 @@ function cmdInitManager(cwd, raw) {
phase_name: phase.name,
action: 'plan',
reason: 'Context gathered, ready for planning',
command: `/gsd:plan-phase ${phase.number}`,
command: `/gsd-plan-phase ${phase.number}`,
});
} else if ((phase.disk_status === 'empty' || phase.disk_status === 'no_directory') && phase.is_next_to_discuss) {
recommendedActions.push({
@@ -1177,7 +1177,7 @@ function cmdInitManager(cwd, raw) {
phase_name: phase.name,
action: 'discuss',
reason: 'Unblocked, ready to gather context',
command: `/gsd:discuss-phase ${phase.number}`,
command: `/gsd-discuss-phase ${phase.number}`,
});
}
}

View File

@@ -381,7 +381,7 @@ function cmdPhaseAdd(cwd, description, raw, customId) {
// Build phase entry
const dependsOn = config.phase_naming === 'custom' ? '' : `\n**Depends on:** Phase ${typeof _newPhaseId === 'number' ? _newPhaseId - 1 : 'TBD'}`;
const phaseEntry = `\n### Phase ${_newPhaseId}: ${description}\n\n**Goal:** [To be planned]\n**Requirements**: TBD${dependsOn}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run /gsd:plan-phase ${_newPhaseId} to break down)\n`;
const phaseEntry = `\n### Phase ${_newPhaseId}: ${description}\n\n**Goal:** [To be planned]\n**Requirements**: TBD${dependsOn}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run /gsd-plan-phase ${_newPhaseId} to break down)\n`;
// Find insertion point: before last "---" or at end
let updatedContent;
@@ -458,7 +458,7 @@ function cmdPhaseAddBatch(cwd, descriptions, raw) {
fs.mkdirSync(dirPath, { recursive: true });
fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
const dependsOn = config.phase_naming === 'custom' ? '' : `\n**Depends on:** Phase ${typeof newPhaseId === 'number' ? newPhaseId - 1 : 'TBD'}`;
const phaseEntry = `\n### Phase ${newPhaseId}: ${description}\n\n**Goal:** [To be planned]\n**Requirements**: TBD${dependsOn}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run /gsd:plan-phase ${newPhaseId} to break down)\n`;
const phaseEntry = `\n### Phase ${newPhaseId}: ${description}\n\n**Goal:** [To be planned]\n**Requirements**: TBD${dependsOn}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run /gsd-plan-phase ${newPhaseId} to break down)\n`;
const lastSeparator = rawContent.lastIndexOf('\n---');
rawContent = lastSeparator > 0
? rawContent.slice(0, lastSeparator) + phaseEntry + rawContent.slice(lastSeparator)
@@ -542,7 +542,7 @@ function cmdPhaseInsert(cwd, afterPhase, description, raw) {
fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
// Build phase entry
const phaseEntry = `\n### Phase ${_decimalPhase}: ${description} (INSERTED)\n\n**Goal:** [Urgent work - to be planned]\n**Requirements**: TBD\n**Depends on:** Phase ${afterPhase}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run /gsd:plan-phase ${_decimalPhase} to break down)\n`;
const phaseEntry = `\n### Phase ${_decimalPhase}: ${description} (INSERTED)\n\n**Goal:** [Urgent work - to be planned]\n**Requirements**: TBD\n**Depends on:** Phase ${afterPhase}\n**Plans:** 0 plans\n\nPlans:\n- [ ] TBD (run /gsd-plan-phase ${_decimalPhase} to break down)\n`;
// Insert after the target phase section
const headerPattern = new RegExp(`(#{2,4}\\s*Phase\\s+0*${afterPhaseEscaped}:[^\\n]*\\n)`, 'i');
@@ -828,7 +828,7 @@ function cmdPhaseComplete(cwd, phaseNum, raw) {
// Update plan count in phase section.
// Use direct .replace() rather than replaceInCurrentMilestone() so this
// works when the current milestone section is itself inside a <details>
// block (the standard /gsd:new-project layout). replaceInCurrentMilestone
// block (the standard /gsd-new-project layout). replaceInCurrentMilestone
// scopes to content after the last </details>, which misses content inside
// the current milestone's own <details> wrapper (#2005).
// The phase-scoped heading pattern is specific enough to avoid matching

View File

@@ -173,7 +173,7 @@ const CLAUDE_INSTRUCTIONS = {
};
const CLAUDE_MD_FALLBACKS = {
project: 'Project not yet initialized. Run /gsd:new-project to set up.',
project: 'Project not yet initialized. Run /gsd-new-project to set up.',
stack: 'Technology stack not yet documented. Will populate after codebase mapping or first phase.',
conventions: 'Conventions not yet established. Will populate as patterns emerge during development.',
architecture: 'Architecture not yet mapped. Follow existing patterns found in the codebase.',
@@ -187,9 +187,9 @@ const CLAUDE_MD_WORKFLOW_ENFORCEMENT = [
'Before using Edit, Write, or other file-changing tools, start work through a GSD command so planning artifacts and execution context stay in sync.',
'',
'Use these entry points:',
'- `/gsd:quick` for small fixes, doc updates, and ad-hoc tasks',
'- `/gsd:debug` for investigation and bug fixing',
'- `/gsd:execute-phase` for planned phase work',
'- `/gsd-quick` for small fixes, doc updates, and ad-hoc tasks',
'- `/gsd-debug` for investigation and bug fixing',
'- `/gsd-execute-phase` for planned phase work',
'',
'Do not make direct repo edits outside a GSD workflow unless the user explicitly asks to bypass it.',
].join('\n');
@@ -198,7 +198,7 @@ const CLAUDE_MD_PROFILE_PLACEHOLDER = [
'<!-- GSD:profile-start -->',
'## Developer Profile',
'',
'> Profile not yet configured. Run `/gsd:profile-user` to generate your developer profile.',
'> Profile not yet configured. Run `/gsd-profile-user` to generate your developer profile.',
'> This section is managed by `generate-claude-profile` -- do not edit manually.',
'<!-- GSD:profile-end -->',
].join('\n');
@@ -768,7 +768,7 @@ function cmdGenerateDevPreferences(cwd, options, raw) {
let stackBlock;
if (analysis.data_source === 'questionnaire') {
stackBlock = 'Stack preferences not available (questionnaire-only profile). Run `/gsd:profile-user --refresh` with session data to populate.';
stackBlock = 'Stack preferences not available (questionnaire-only profile). Run `/gsd-profile-user --refresh` with session data to populate.';
} else if (options.stack) {
stackBlock = options.stack;
} else {
@@ -854,7 +854,7 @@ function cmdGenerateClaudeProfile(cwd, options, raw) {
'<!-- GSD:profile-start -->',
'## Developer Profile',
'',
`> Generated by GSD from ${dataSource}. Run \`/gsd:profile-user --refresh\` to update.`,
`> Generated by GSD from ${dataSource}. Run \`/gsd-profile-user --refresh\` to update.`,
'',
'| Dimension | Rating | Confidence |',
'|-----------|--------|------------|',
@@ -1053,7 +1053,7 @@ function cmdGenerateClaudeMd(cwd, options, raw) {
let message = `Generated ${genCount}/${totalManaged} sections.`;
if (sectionsFallback.length > 0) message += ` Fallback: ${sectionsFallback.join(', ')}.`;
if (sectionsSkipped.length > 0) message += ` Skipped (manually edited): ${sectionsSkipped.join(', ')}.`;
if (profileStatus === 'placeholder_added') message += ' Run /gsd:profile-user to unlock Developer Profile.';
if (profileStatus === 'placeholder_added') message += ' Run /gsd-profile-user to unlock Developer Profile.';
const result = {
claude_md_path: outputPath,

View File

@@ -2,7 +2,7 @@
/**
* Secrets handling — masking convention for API keys and other
* credentials managed via /gsd:settings-integrations.
* credentials managed via /gsd-settings-integrations.
*
* Convention: strings 8+ chars long render as `****<last-4>`; shorter
* strings render as `****` with no tail (to avoid leaking a meaningful

View File

@@ -555,7 +555,7 @@ function cmdValidateHealth(cwd, options, raw) {
// ─── Check 1: .planning/ exists ───────────────────────────────────────────
if (!fs.existsSync(planBase)) {
addIssue('error', 'E001', '.planning/ directory not found', 'Run /gsd:new-project to initialize');
addIssue('error', 'E001', '.planning/ directory not found', 'Run /gsd-new-project to initialize');
output({
status: 'broken',
errors,
@@ -568,7 +568,7 @@ function cmdValidateHealth(cwd, options, raw) {
// ─── Check 2: PROJECT.md exists and has required sections ─────────────────
if (!fs.existsSync(projectPath)) {
addIssue('error', 'E002', 'PROJECT.md not found', 'Run /gsd:new-project to create');
addIssue('error', 'E002', 'PROJECT.md not found', 'Run /gsd-new-project to create');
} else {
const content = fs.readFileSync(projectPath, 'utf-8');
const requiredSections = ['## What This Is', '## Core Value', '## Requirements'];
@@ -581,12 +581,12 @@ function cmdValidateHealth(cwd, options, raw) {
// ─── Check 3: ROADMAP.md exists ───────────────────────────────────────────
if (!fs.existsSync(roadmapPath)) {
addIssue('error', 'E003', 'ROADMAP.md not found', 'Run /gsd:new-milestone to create roadmap');
addIssue('error', 'E003', 'ROADMAP.md not found', 'Run /gsd-new-milestone to create roadmap');
}
// ─── Check 4: STATE.md exists and references valid phases ─────────────────
if (!fs.existsSync(statePath)) {
addIssue('error', 'E004', 'STATE.md not found', 'Run /gsd:health --repair to regenerate', true);
addIssue('error', 'E004', 'STATE.md not found', 'Run /gsd-health --repair to regenerate', true);
repairs.push('regenerateState');
} else {
const stateContent = fs.readFileSync(statePath, 'utf-8');
@@ -642,7 +642,7 @@ function cmdValidateHealth(cwd, options, raw) {
'warning',
'W002',
`STATE.md references phase ${ref}, but only phases ${[...validPhases].sort().join(', ')} are declared`,
'Review STATE.md manually before changing it; /gsd:health --repair will not overwrite an existing STATE.md for phase mismatches'
'Review STATE.md manually before changing it; /gsd-health --repair will not overwrite an existing STATE.md for phase mismatches'
);
}
}
@@ -651,7 +651,7 @@ function cmdValidateHealth(cwd, options, raw) {
// ─── Check 5: config.json valid JSON + valid schema ───────────────────────
if (!fs.existsSync(configPath)) {
addIssue('warning', 'W003', 'config.json not found', 'Run /gsd:health --repair to create with defaults', true);
addIssue('warning', 'W003', 'config.json not found', 'Run /gsd-health --repair to create with defaults', true);
repairs.push('createConfig');
} else {
try {
@@ -663,7 +663,7 @@ function cmdValidateHealth(cwd, options, raw) {
addIssue('warning', 'W004', `config.json: invalid model_profile "${parsed.model_profile}"`, `Valid values: ${validProfiles.join(', ')}`);
}
} catch (err) {
addIssue('error', 'E005', `config.json: JSON parse error - ${err.message}`, 'Run /gsd:health --repair to reset to defaults', true);
addIssue('error', 'E005', `config.json: JSON parse error - ${err.message}`, 'Run /gsd-health --repair to reset to defaults', true);
repairs.push('resetConfig');
}
}
@@ -674,11 +674,11 @@ function cmdValidateHealth(cwd, options, raw) {
const configRaw = fs.readFileSync(configPath, 'utf-8');
const configParsed = JSON.parse(configRaw);
if (configParsed.workflow && configParsed.workflow.nyquist_validation === undefined) {
addIssue('warning', 'W008', 'config.json: workflow.nyquist_validation absent (defaults to enabled but agents may skip)', 'Run /gsd:health --repair to add key', true);
addIssue('warning', 'W008', 'config.json: workflow.nyquist_validation absent (defaults to enabled but agents may skip)', 'Run /gsd-health --repair to add key', true);
if (!repairs.includes('addNyquistKey')) repairs.push('addNyquistKey');
}
if (configParsed.workflow && configParsed.workflow.ai_integration_phase === undefined) {
addIssue('warning', 'W016', 'config.json: workflow.ai_integration_phase absent (defaults to enabled — run /gsd:ai-integration-phase before planning AI system phases)', 'Run /gsd:health --repair to add key', true);
addIssue('warning', 'W016', 'config.json: workflow.ai_integration_phase absent (defaults to enabled — run /gsd-ai-integration-phase before planning AI system phases)', 'Run /gsd-health --repair to add key', true);
if (!repairs.includes('addAiIntegrationPhaseKey')) repairs.push('addAiIntegrationPhaseKey');
}
} catch { /* intentionally empty */ }
@@ -728,7 +728,7 @@ function cmdValidateHealth(cwd, options, raw) {
try {
const researchContent = fs.readFileSync(path.join(phasesDir, e.name, researchFile), 'utf-8');
if (researchContent.includes('## Validation Architecture')) {
addIssue('warning', 'W009', `Phase ${e.name}: has Validation Architecture in RESEARCH.md but no VALIDATION.md`, 'Re-run /gsd:plan-phase with --research to regenerate');
addIssue('warning', 'W009', `Phase ${e.name}: has Validation Architecture in RESEARCH.md but no VALIDATION.md`, 'Re-run /gsd-plan-phase with --research to regenerate');
}
} catch { /* intentionally empty */ }
}
@@ -821,7 +821,7 @@ function cmdValidateHealth(cwd, options, raw) {
if (statusVal !== 'complete' && statusVal !== 'done') {
addIssue('warning', 'W011',
`STATE.md says current phase is ${statePhase} (status: ${statusVal || 'unknown'}) but ROADMAP.md shows it as [x] complete — state files may be out of sync`,
'Run /gsd:progress to re-derive current position, or manually update STATE.md');
'Run /gsd-progress to re-derive current position, or manually update STATE.md');
}
}
}
@@ -924,7 +924,7 @@ function cmdValidateHealth(cwd, options, raw) {
if (missingFromRegistry.length > 0) {
addIssue('warning', 'W018',
`MILESTONES.md missing ${missingFromRegistry.length} archived milestone(s): ${missingFromRegistry.join(', ')}`,
'Run /gsd:health --backfill to synthesize missing entries from archive snapshots',
'Run /gsd-health --backfill to synthesize missing entries from archive snapshots',
true);
repairs.push('backfillMilestones');
}
@@ -998,7 +998,7 @@ function cmdValidateHealth(cwd, options, raw) {
stateContent += `**Current phase:** (determining...)\n`;
stateContent += `**Status:** Resuming\n\n`;
stateContent += `## Session Log\n\n`;
stateContent += `- ${new Date().toISOString().split('T')[0]}: STATE.md regenerated by /gsd:health --repair\n`;
stateContent += `- ${new Date().toISOString().split('T')[0]}: STATE.md regenerated by /gsd-health --repair\n`;
writeStateMd(statePath, stateContent, cwd);
repairActions.push({ action: repair, success: true, path: 'STATE.md' });
break;
@@ -1048,7 +1048,7 @@ function cmdValidateHealth(cwd, options, raw) {
// Build minimal entry from snapshot title or version
const titleMatch = snapshot && snapshot.match(/^#\s+(.+)$/m);
const milestoneName = titleMatch ? titleMatch[1].replace(/^Milestone\s+/i, '').replace(/^v[\d.]+\s*/, '').trim() : ver;
const entry = `## ${ver}${milestoneName && milestoneName !== ver ? ` ${milestoneName}` : ''} (Backfilled: ${today})\n\n**Note:** Synthesized from archive snapshot by \`/gsd:health --backfill\`. Original completion date unknown.\n\n---\n\n`;
const entry = `## ${ver}${milestoneName && milestoneName !== ver ? ` ${milestoneName}` : ''} (Backfilled: ${today})\n\n**Note:** Synthesized from archive snapshot by \`/gsd-health --backfill\`. Original completion date unknown.\n\n---\n\n`;
const milestonesContent = fs.existsSync(milestonesPath)
? fs.readFileSync(milestonesPath, 'utf-8')
: '';

View File

@@ -78,7 +78,7 @@ function cmdWorkstreamCreate(cwd, name, options, raw) {
const baseDir = planningRoot(cwd);
if (!fs.existsSync(baseDir)) {
error('.planning/ directory not found — run /gsd:new-project first');
error('.planning/ directory not found — run /gsd-new-project first');
}
const wsRoot = path.join(baseDir, 'workstreams');

View File

@@ -72,21 +72,21 @@ reads is inert — the consumption mechanism is what gives an artifact meaning.
- **Location**: `.planning/spikes/SPIKE-NNN/`
- **Consumed by**: Planner when spike is referenced; `pause-work` for spike context handoff
### Spike README.md / MANIFEST.md (per-spike, via /gsd:spike)
### Spike README.md / MANIFEST.md (per-spike, via /gsd-spike)
- **Shape**: YAML frontmatter (spike, name, validates, verdict, related, tags) + run instructions + results
- **Lifecycle**: Created by `/gsd:spike` → Verified → Wrapped up by `/gsd:spike-wrap-up`
- **Lifecycle**: Created by `/gsd-spike` → Verified → Wrapped up by `/gsd-spike-wrap-up`
- **Location**: `.planning/spikes/NNN-name/README.md`, `.planning/spikes/MANIFEST.md`
- **Consumed by**: `/gsd:spike-wrap-up` for curation; `pause-work` for spike context handoff
- **Consumed by**: `/gsd-spike-wrap-up` for curation; `pause-work` for spike context handoff
### Sketch README.md / MANIFEST.md / index.html (per-sketch)
- **Shape**: YAML frontmatter (sketch, name, question, winner, tags) + variants as tabbed HTML
- **Lifecycle**: Created by `/gsd:sketch` → Evaluated → Wrapped up by `/gsd:sketch-wrap-up`
- **Lifecycle**: Created by `/gsd-sketch` → Evaluated → Wrapped up by `/gsd-sketch-wrap-up`
- **Location**: `.planning/sketches/NNN-name/README.md`, `.planning/sketches/NNN-name/index.html`, `.planning/sketches/MANIFEST.md`
- **Consumed by**: `/gsd:sketch-wrap-up` for curation; `pause-work` for sketch context handoff
- **Consumed by**: `/gsd-sketch-wrap-up` for curation; `pause-work` for sketch context handoff
### WRAP-UP-SUMMARY.md (per wrap-up session)
- **Shape**: Curation results, included/excluded items, feature/design area groupings
- **Lifecycle**: Created by `/gsd:spike-wrap-up` or `/gsd:sketch-wrap-up`
- **Lifecycle**: Created by `/gsd-spike-wrap-up` or `/gsd-sketch-wrap-up`
- **Location**: `.planning/spikes/WRAP-UP-SUMMARY.md` or `.planning/sketches/WRAP-UP-SUMMARY.md`
- **Consumed by**: Project history; not read by automated workflows

View File

@@ -50,13 +50,13 @@ Standard format for presenting next steps after completing a command or workflow
`/clear` then:
`/gsd:execute-phase 2`
`/gsd-execute-phase 2`
---
**Also available:**
- Review plan before executing
- `/gsd:list-phase-assumptions 2` — check assumptions
- `/gsd-list-phase-assumptions 2` — check assumptions
---
```
@@ -75,7 +75,7 @@ Add note that this is the last plan and what comes after:
`/clear` then:
`/gsd:execute-phase 2`
`/gsd-execute-phase 2`
---
@@ -97,13 +97,13 @@ Add note that this is the last plan and what comes after:
`/clear` then:
`/gsd:plan-phase 2`
`/gsd-plan-phase 2`
---
**Also available:**
- `/gsd:discuss-phase 2` — gather context first
- `/gsd:research-phase 2` — investigate unknowns
- `/gsd-discuss-phase 2` — gather context first
- `/gsd-research-phase 2` — investigate unknowns
- Review roadmap
---
@@ -126,13 +126,13 @@ Show completion status before next action:
`/clear` then:
`/gsd:plan-phase 3`
`/gsd-plan-phase 3`
---
**Also available:**
- `/gsd:discuss-phase 3` — gather context first
- `/gsd:research-phase 3` — investigate unknowns
- `/gsd-discuss-phase 3` — gather context first
- `/gsd-research-phase 3` — investigate unknowns
- Review what Phase 2 built
---
@@ -151,11 +151,11 @@ When there's no clear primary action:
`/clear` then one of:
**To plan directly:** `/gsd:plan-phase 3`
**To plan directly:** `/gsd-plan-phase 3`
**To discuss context first:** `/gsd:discuss-phase 3`
**To discuss context first:** `/gsd-discuss-phase 3`
**To research unknowns:** `/gsd:research-phase 3`
**To research unknowns:** `/gsd-research-phase 3`
---
```
@@ -175,7 +175,7 @@ All 4 phases shipped
`/clear` then:
`/gsd:new-milestone`
`/gsd-new-milestone`
---
```
@@ -218,7 +218,7 @@ Extract: `**02-03: Refresh Token Rotation** — Add /api/auth/refresh with slidi
## To Continue
Run `/clear`, then paste:
/gsd:execute-phase 2
/gsd-execute-phase 2
```
User has no idea what 02-03 is about.
@@ -226,7 +226,7 @@ User has no idea what 02-03 is about.
### Don't: Missing /clear explanation
```
`/gsd:plan-phase 3`
`/gsd-plan-phase 3`
Run /clear first.
```
@@ -246,7 +246,7 @@ Sounds like an afterthought. Use "Also available:" instead.
```
```
/gsd:plan-phase 3
/gsd-plan-phase 3
```
```

View File

@@ -1,6 +1,6 @@
# Doc Conflict Engine
Shared conflict-detection contract for workflows that ingest external content into `.planning/` (e.g., `/gsd:import`, `/gsd:ingest-docs`). Defines the report format, severity semantics, and safety-gate behavior. The specific checks that populate each severity bucket are workflow-specific and defined by the calling workflow.
Shared conflict-detection contract for workflows that ingest external content into `.planning/` (e.g., `/gsd-import`, `/gsd-ingest-docs`). Defines the report format, severity semantics, and safety-gate behavior. The specific checks that populate each severity bucket are workflow-specific and defined by the calling workflow.
---

View File

@@ -1,6 +1,6 @@
# Domain-Aware Probing Patterns
Shared reference for `/gsd-begin`, `/gsd:discuss-phase`, and domain exploration workflows.
Shared reference for `/gsd-begin`, `/gsd-discuss-phase`, and domain exploration workflows.
When the user mentions a technology area, use these probes to ask insightful follow-up questions. Don't run through them as a checklist -- pick the 2-3 most relevant based on context. The goal is to surface hidden assumptions and trade-offs the user may not have considered yet.

View File

@@ -47,7 +47,7 @@ Simple 2-option confirmation for re-planning, rebuild, replace plans, commit.
4-option escalation for review escalation (max retries exceeded).
- question: "Phase {N} has failed verification {attempt} times. How should we proceed?"
- header: "Escalate"
- options: Accept gaps | Re-plan (via /gsd:plan-phase) | Debug (via /gsd:debug) | Retry
- options: Accept gaps | Re-plan (via /gsd-plan-phase) | Debug (via /gsd-debug) | Retry
## Pattern: multi-option-gaps
4-option gap handler for review gaps-found.
@@ -78,7 +78,7 @@ Up to 4 suggested next actions with selection (status, resume workflows).
3-option confirmation for quick task scope validation.
- question: "This task looks complex. Proceed as quick task or use full planning?"
- header: "Scope"
- options: Quick task | Full plan (via /gsd:plan-phase) | Revise
- options: Quick task | Full plan (via /gsd-plan-phase) | Revise
## Pattern: depth-select
3-option depth selection for planning workflow preferences.

View File

@@ -38,7 +38,7 @@ Canonical gate types used across GSD workflows. Every validation checkpoint maps
**Recovery:** Developer investigates root cause, fixes, restarts from checkpoint.
**Examples:**
- Context window critically low during execution
- STATE.md in error state blocking /gsd:next
- STATE.md in error state blocking /gsd-next
- Verification finds critical missing deliverables
---

View File

@@ -274,7 +274,7 @@ Set `commit_docs: false` so planning docs stay local and are not committed to an
### How It Works
1. **Auto-detection:** During `/gsd:new-project`, directories with their own `.git` folder are detected and offered for selection as sub-repos. On subsequent runs, `loadConfig` auto-syncs the `sub_repos` list with the filesystem — adding newly created repos and removing deleted ones. This means `config.json` may be rewritten automatically when repos change on disk.
1. **Auto-detection:** During `/gsd-new-project`, directories with their own `.git` folder are detected and offered for selection as sub-repos. On subsequent runs, `loadConfig` auto-syncs the `sub_repos` list with the filesystem — adding newly created repos and removing deleted ones. This means `config.json` may be rewritten automatically when repos change on disk.
2. **File grouping:** Code files are grouped by their sub-repo prefix (e.g., `backend/src/api/users.ts` belongs to the `backend/` repo).
3. **Independent commits:** Each sub-repo receives its own atomic commit via `gsd-tools.cjs commit-to-subrepo`. File paths are made relative to the sub-repo root before staging.
4. **Planning stays local:** The `.planning/` directory is not committed; it acts as cross-repo coordination.

View File

@@ -75,7 +75,7 @@ If you're using Claude Code with OpenRouter, a local model, or any non-Anthropic
```bash
# Via settings command
/gsd:settings
/gsd-settings
# → Select "Inherit" for model profile
# Or manually in .planning/config.json
@@ -115,7 +115,7 @@ Overrides take precedence over the profile. Valid values: `opus`, `sonnet`, `hai
## Switching Profiles
Runtime: `/gsd:set-profile <profile>`
Runtime: `/gsd-set-profile <profile>`
Per-project default: Set in `.planning/config.json`:
```json

View File

@@ -36,7 +36,7 @@ Configuration options for `.planning/` directory behavior.
| `workflow.use_worktrees` | `true` | Whether executor agents run in isolated git worktrees. Set to `false` to disable worktrees — agents execute sequentially on the main working tree instead. Recommended for solo developers or when worktree merges cause issues. |
| `workflow.subagent_timeout` | `300000` | Timeout in milliseconds for parallel subagent tasks (e.g. codebase mapping). Increase for large codebases or slower models. Default: 300000 (5 minutes). |
| `workflow.inline_plan_threshold` | `2` | Plans with this many tasks or fewer execute inline (Pattern C) instead of spawning a subagent. Avoids ~14K token spawn overhead for small plans. Set to `0` to always spawn subagents. |
| `manager.flags.discuss` | `""` | Flags passed to `/gsd:discuss-phase` when dispatched from manager (e.g. `"--auto --analyze"`) |
| `manager.flags.discuss` | `""` | Flags passed to `/gsd-discuss-phase` when dispatched from manager (e.g. `"--auto --analyze"`) |
| `manager.flags.plan` | `""` | Flags passed to plan workflow when dispatched from manager |
| `manager.flags.execute` | `""` | Flags passed to execute workflow when dispatched from manager |
| `response_language` | `null` | Language for user-facing questions and prompts across all phases/subagents (e.g. `"Portuguese"`, `"Japanese"`, `"Spanish"`). When set, all spawned agents include a directive to respond in this language. |
@@ -236,7 +236,7 @@ Generated from `CONFIG_DEFAULTS` (core.cjs) and `VALID_CONFIG_KEYS` (config.cjs)
| `context_window` | number | `200000` | `200000`, `1000000` | Context window size; set `1000000` for 1M-context models |
| `resolve_model_ids` | boolean\|string | `false` | `false`, `true`, `"omit"` | Map model aliases to full Claude IDs; `"omit"` returns empty string |
| `context` | string\|null | `null` | `"dev"`, `"research"`, `"review"` | Execution context profile that adjusts agent behavior: `"dev"` for development tasks, `"research"` for investigation/exploration, `"review"` for code review workflows |
| `review.models.<cli>` | string\|null | `null` | Any model ID string | Per-CLI model override for /gsd:review (e.g., `review.models.gemini`). Falls back to CLI default when null. |
| `review.models.<cli>` | string\|null | `null` | Any model ID string | Per-CLI model override for /gsd-review (e.g., `review.models.gemini`). Falls back to CLI default when null. |
### Workflow Fields
@@ -252,7 +252,7 @@ Set via `workflow.*` namespace in config.json (e.g., `"workflow": { "research":
| `workflow.auto_advance` | boolean | `false` | `true`, `false` | Auto-advance to next phase after completion |
| `workflow.node_repair` | boolean | `true` | `true`, `false` | Attempt automatic repair of failed plan nodes |
| `workflow.node_repair_budget` | number | `2` | Any positive integer | Max repair retries per failed node |
| `workflow.ai_integration_phase` | boolean | `true` | `true`, `false` | Run /gsd:ai-integration-phase before planning AI system phases |
| `workflow.ai_integration_phase` | boolean | `true` | `true`, `false` | Run /gsd-ai-integration-phase before planning AI system phases |
| `workflow.ui_phase` | boolean | `true` | `true`, `false` | Generate UI-SPEC.md for frontend phases |
| `workflow.ui_safety_gate` | boolean | `true` | `true`, `false` | Require safety gate approval for UI changes |
| `workflow.text_mode` | boolean | `false` | `true`, `false` | Use plain-text numbered lists instead of AskUserQuestion menus |
@@ -265,7 +265,7 @@ Set via `workflow.*` namespace in config.json (e.g., `"workflow": { "research":
| `workflow.code_review` | boolean | `true` | `true`, `false` | Enable built-in code review step in the ship workflow |
| `workflow.code_review_depth` | string | `"standard"` | `"light"`, `"standard"`, `"deep"` | Depth level for code review analysis in the ship workflow |
| `workflow._auto_chain_active` | boolean | `false` | `true`, `false` | Internal: tracks whether autonomous chaining is active |
| `workflow.security_enforcement` | boolean | `true` | `true`, `false` | Enable threat-model-anchored security verification via `/gsd:secure-phase`. When `false`, security checks are skipped entirely |
| `workflow.security_enforcement` | boolean | `true` | `true`, `false` | Enable threat-model-anchored security verification via `/gsd-secure-phase`. When `false`, security checks are skipped entirely |
| `workflow.security_asvs_level` | number | `1` | `1`, `2`, `3` | OWASP ASVS verification level. Level 1 = opportunistic, Level 2 = standard, Level 3 = comprehensive |
| `workflow.security_block_on` | string | `"high"` | `"high"`, `"medium"`, `"low"` | Minimum severity that blocks phase advancement |
| `workflow.post_planning_gaps` | boolean | `true` | `true`, `false` | Post-planning gap report (#2493). After plans are generated, scans REQUIREMENTS.md and CONTEXT.md `<decisions>` against all PLAN.md files and emits a unified `Source \| Item \| Status` table. Non-blocking. Set to `false` to skip Step 13e of plan-phase. _Alias:_ `post_planning_gaps` is the flat-key form used in `CONFIG_DEFAULTS`; `workflow.post_planning_gaps` is the canonical namespaced form. |
@@ -319,11 +319,11 @@ Set via `learnings.*` namespace (e.g., `"learnings": { "max_inject": 5 }`). Used
### Intel Fields
Set via `intel.*` namespace (e.g., `"intel": { "enabled": true }`). Controls the queryable codebase intelligence system consumed by `/gsd:intel`.
Set via `intel.*` namespace (e.g., `"intel": { "enabled": true }`). Controls the queryable codebase intelligence system consumed by `/gsd-intel`.
| Key | Type | Default | Allowed Values | Description |
|-----|------|---------|----------------|-------------|
| `intel.enabled` | boolean | `false` | `true`, `false` | Enable queryable codebase intelligence system. When `true`, `/gsd:intel` commands build and query a JSON index in `.planning/intel/`. |
| `intel.enabled` | boolean | `false` | `true`, `false` | Enable queryable codebase intelligence system. When `true`, `/gsd-intel` commands build and query a JSON index in `.planning/intel/`. |
### Manager Fields
@@ -331,7 +331,7 @@ Set via `manager.*` namespace (e.g., `"manager": { "flags": { "discuss": "--auto
| Key | Type | Default | Allowed Values | Description |
|-----|------|---------|----------------|-------------|
| `manager.flags.discuss` | string | `""` | Any CLI flags string | Flags passed to `/gsd:discuss-phase` from manager (e.g., `"--auto --analyze"`) |
| `manager.flags.discuss` | string | `""` | Any CLI flags string | Flags passed to `/gsd-discuss-phase` from manager (e.g., `"--auto --analyze"`) |
| `manager.flags.plan` | string | `""` | Any CLI flags string | Flags passed to plan workflow from manager |
| `manager.flags.execute` | string | `""` | Any CLI flags string | Flags passed to execute workflow from manager |

View File

@@ -69,7 +69,7 @@ Apply this recommendation to the revision? [Yes] / [No, let me decide]
### 3. Explore — Approach Comparison (requires #1729)
**When:** During Socratic conversation, when multiple viable approaches emerge.
**Note:** This integration point will be added when /gsd:explore (#1729) lands.
**Note:** This integration point will be added when /gsd-explore (#1729) lands.
---

View File

@@ -163,10 +163,10 @@ Then re-run verification to apply.
Overrides can also be managed through the verification workflow:
1. Run `/gsd:verify-work` — verification finds gaps
1. Run `/gsd-verify-work` — verification finds gaps
2. Review gaps — determine which are intentional deviations
3. Add override entries to VERIFICATION.md frontmatter
4. Re-run `/gsd:verify-work` — overrides are applied, remaining gaps shown
4. Re-run `/gsd-verify-work` — overrides are applied, remaining gaps shown
</creating_overrides>
@@ -183,7 +183,7 @@ When a phase is re-verified (e.g., after gap closure):
### At Milestone Completion
During `/gsd:audit-milestone`, overrides are surfaced in the audit report:
During `/gsd-audit-milestone`, overrides are surfaced in the audit report:
```
### Verification Overrides ({count} across {phase_count} phases)

View File

@@ -1,6 +1,6 @@
# AI-SPEC — Phase {N}: {phase_name}
> AI design contract generated by `/gsd:ai-integration-phase`. Consumed by `gsd-planner` and `gsd-eval-auditor`.
> AI design contract generated by `/gsd-ai-integration-phase`. Consumed by `gsd-planner` and `gsd-eval-auditor`.
> Locks framework selection, implementation guidance, and evaluation strategy before planning begins.
---

View File

@@ -104,7 +104,7 @@ files_changed: []
<lifecycle>
**Creation:** Immediately when /gsd:debug is called
**Creation:** Immediately when /gsd-debug is called
- Create file with trigger from user input
- Set status to "gathering"
- Current Focus: next_action = "gather symptoms"

View File

@@ -12,24 +12,24 @@ These files live directly at `.planning/` — not inside phase subdirectories.
| File | Template | Produced by | Purpose |
|------|----------|-------------|---------|
| `PROJECT.md` | `project.md` | `/gsd:new-project` | Project identity, goals, requirements summary |
| `ROADMAP.md` | `roadmap.md` | `/gsd:new-milestone`, `/gsd:new-project` | Phase plan with milestones and progress tracking |
| `STATE.md` | `state.md` | `/gsd:new-project`, `/gsd:health --repair` | Current session state, active phase, last activity |
| `REQUIREMENTS.md` | `requirements.md` | `/gsd:new-milestone` | Functional requirements with traceability |
| `MILESTONES.md` | `milestone.md` | `/gsd:complete-milestone` | Log of completed milestones with accomplishments |
| `BACKLOG.md` | *(inline)* | `/gsd:add-backlog` | Pending ideas and deferred work |
| `LEARNINGS.md` | *(inline)* | `/gsd-extract-learnings`, `/gsd:execute-phase` | Phase retrospective learnings for future plans |
| `THREADS.md` | *(inline)* | `/gsd:thread` | Persistent discussion threads |
| `config.json` | `config.json` | `/gsd:new-project`, `/gsd:health --repair` | Project-specific GSD configuration |
| `PROJECT.md` | `project.md` | `/gsd-new-project` | Project identity, goals, requirements summary |
| `ROADMAP.md` | `roadmap.md` | `/gsd-new-milestone`, `/gsd-new-project` | Phase plan with milestones and progress tracking |
| `STATE.md` | `state.md` | `/gsd-new-project`, `/gsd-health --repair` | Current session state, active phase, last activity |
| `REQUIREMENTS.md` | `requirements.md` | `/gsd-new-milestone` | Functional requirements with traceability |
| `MILESTONES.md` | `milestone.md` | `/gsd-complete-milestone` | Log of completed milestones with accomplishments |
| `BACKLOG.md` | *(inline)* | `/gsd-add-backlog` | Pending ideas and deferred work |
| `LEARNINGS.md` | *(inline)* | `/gsd-extract-learnings`, `/gsd-execute-phase` | Phase retrospective learnings for future plans |
| `THREADS.md` | *(inline)* | `/gsd-thread` | Persistent discussion threads |
| `config.json` | `config.json` | `/gsd-new-project`, `/gsd-health --repair` | Project-specific GSD configuration |
| `CLAUDE.md` | `claude-md.md` | `/gsd-profile` | Auto-assembled Claude Code context file |
### Version-stamped artifacts (pattern: `vX.Y-*.md`)
| Pattern | Produced by | Purpose |
|---------|-------------|---------|
| `vX.Y-MILESTONE-AUDIT.md` | `/gsd:audit-milestone` | Milestone audit report before archiving |
| `vX.Y-MILESTONE-AUDIT.md` | `/gsd-audit-milestone` | Milestone audit report before archiving |
These files are archived to `.planning/milestones/` by `/gsd:complete-milestone`. Finding them at the `.planning/` root after completion indicates the archive step was skipped.
These files are archived to `.planning/milestones/` by `/gsd-complete-milestone`. Finding them at the `.planning/` root after completion indicates the archive step was skipped.
---
@@ -39,24 +39,24 @@ These files live inside a phase directory. They are NOT checked by W019 (which o
| File Pattern | Template | Produced by | Purpose |
|-------------|----------|-------------|---------|
| `NN-MM-PLAN.md` | `phase-prompt.md` | `/gsd:plan-phase` | Executable implementation plan |
| `NN-MM-SUMMARY.md` | `summary.md` | `/gsd:execute-phase` | Post-execution summary with learnings |
| `NN-CONTEXT.md` | `context.md` | `/gsd:discuss-phase` | Scoped discussion decisions for the phase |
| `NN-RESEARCH.md` | `research.md` | `/gsd:research-phase`, `/gsd:plan-phase` | Technical research for the phase |
| `NN-VALIDATION.md` | `VALIDATION.md` | `/gsd:research-phase` (Nyquist) | Validation architecture (Nyquist method) |
| `NN-UAT.md` | `UAT.md` | `/gsd:validate-phase` | User acceptance test results |
| `NN-PATTERNS.md` | *(inline)* | `/gsd:plan-phase` (pattern mapper) | Analog file mapping for the phase |
| `NN-UI-SPEC.md` | `UI-SPEC.md` | `/gsd:ui-phase` | UI design contract |
| `NN-SECURITY.md` | `SECURITY.md` | `/gsd:secure-phase` | Security threat model |
| `NN-AI-SPEC.md` | `AI-SPEC.md` | `/gsd:ai-integration-phase` | AI integration spec with eval strategy |
| `NN-DEBUG.md` | `DEBUG.md` | `/gsd:debug` | Debug session log |
| `NN-REVIEWS.md` | *(inline)* | `/gsd:review` | Cross-AI review feedback |
| `NN-MM-PLAN.md` | `phase-prompt.md` | `/gsd-plan-phase` | Executable implementation plan |
| `NN-MM-SUMMARY.md` | `summary.md` | `/gsd-execute-phase` | Post-execution summary with learnings |
| `NN-CONTEXT.md` | `context.md` | `/gsd-discuss-phase` | Scoped discussion decisions for the phase |
| `NN-RESEARCH.md` | `research.md` | `/gsd-research-phase`, `/gsd-plan-phase` | Technical research for the phase |
| `NN-VALIDATION.md` | `VALIDATION.md` | `/gsd-research-phase` (Nyquist) | Validation architecture (Nyquist method) |
| `NN-UAT.md` | `UAT.md` | `/gsd-validate-phase` | User acceptance test results |
| `NN-PATTERNS.md` | *(inline)* | `/gsd-plan-phase` (pattern mapper) | Analog file mapping for the phase |
| `NN-UI-SPEC.md` | `UI-SPEC.md` | `/gsd-ui-phase` | UI design contract |
| `NN-SECURITY.md` | `SECURITY.md` | `/gsd-secure-phase` | Security threat model |
| `NN-AI-SPEC.md` | `AI-SPEC.md` | `/gsd-ai-integration-phase` | AI integration spec with eval strategy |
| `NN-DEBUG.md` | `DEBUG.md` | `/gsd-debug` | Debug session log |
| `NN-REVIEWS.md` | *(inline)* | `/gsd-review` | Cross-AI review feedback |
---
## Milestone Archive (`.planning/milestones/`)
Files archived by `/gsd:complete-milestone`. These are never checked by W019.
Files archived by `/gsd-complete-milestone`. These are never checked by W019.
| File Pattern | Source |
|-------------|--------|

View File

@@ -106,7 +106,7 @@ blocked: [N]
**Gaps:**
- APPEND only when issue found (YAML format)
- After diagnosis: fill `root_cause`, `artifacts`, `missing`, `debug_session`
- This section feeds directly into /gsd:plan-phase --gaps
- This section feeds directly into /gsd-plan-phase --gaps
</section_rules>
@@ -120,7 +120,7 @@ blocked: [N]
4. UAT.md Gaps section updated with diagnosis:
- Each gap gets `root_cause`, `artifacts`, `missing`, `debug_session` filled
5. status → "diagnosed"
6. Ready for /gsd:plan-phase --gaps with root causes
6. Ready for /gsd-plan-phase --gaps with root causes
**After diagnosis:**
```yaml
@@ -144,7 +144,7 @@ blocked: [N]
<lifecycle>
**Creation:** When /gsd:verify-work starts new session
**Creation:** When /gsd-verify-work starts new session
- Extract tests from SUMMARY.md files
- Set status to "testing"
- Current Test points to test 1
@@ -171,7 +171,7 @@ blocked: [N]
- Present summary with outstanding items highlighted
**Resuming partial session:**
- `/gsd:verify-work {phase}` picks up from first pending/blocked test
- `/gsd-verify-work {phase}` picks up from first pending/blocked test
- When all items resolved, status advances to "complete"
**Resume after /clear:**

View File

@@ -29,7 +29,7 @@ created: {date}
- **After every task commit:** Run `{quick run command}`
- **After every plan wave:** Run `{full suite command}`
- **Before `/gsd:verify-work`:** Full suite must be green
- **Before `/gsd-verify-work`:** Full suite must be green
- **Max feedback latency:** {N} seconds
---

View File

@@ -21,7 +21,7 @@ The profile section is managed exclusively by `generate-claude-profile`.
**Fallback text:**
```
Project not yet initialized. Run /gsd:new-project to set up.
Project not yet initialized. Run /gsd-new-project to set up.
```
### Stack Section
@@ -96,9 +96,9 @@ No project skills found. Add skills to any of: `.claude/skills/`, `.agents/skill
Before using Edit, Write, or other file-changing tools, start work through a GSD command so planning artifacts and execution context stay in sync.
Use these entry points:
- `/gsd:quick` for small fixes, doc updates, and ad-hoc tasks
- `/gsd:debug` for investigation and bug fixing
- `/gsd:execute-phase` for planned phase work
- `/gsd-quick` for small fixes, doc updates, and ad-hoc tasks
- `/gsd-debug` for investigation and bug fixing
- `/gsd-execute-phase` for planned phase work
Do not make direct repo edits outside a GSD workflow unless the user explicitly asks to bypass it.
<!-- GSD:workflow-end -->
@@ -109,7 +109,7 @@ Do not make direct repo edits outside a GSD workflow unless the user explicitly
<!-- GSD:profile-start -->
## Developer Profile
> Profile not yet configured. Run `/gsd:profile-user` to generate your developer profile.
> Profile not yet configured. Run `/gsd-profile-user` to generate your developer profile.
> This section is managed by `generate-claude-profile` — do not edit manually.
<!-- GSD:profile-end -->
```

View File

@@ -51,7 +51,7 @@ Create: .planning/debug/{slug}.md
## Usage
**From /gsd:debug:**
**From /gsd-debug:**
```python
Task(
prompt=filled_template,

View File

@@ -5,7 +5,7 @@ description: Load developer preferences into this session
# Developer Preferences
> Generated by GSD on {{generated_at}} from {{data_source}}.
> Run `/gsd:profile-user --refresh` to regenerate.
> Run `/gsd-profile-user --refresh` to regenerate.
## Behavioral Directives

View File

@@ -4,7 +4,7 @@ Template for `.planning/phases/XX-name/DISCOVERY.md` - shallow research for libr
**Purpose:** Answer "which library/option should we use" questions during mandatory discovery in plan-phase.
For deep ecosystem research ("how do experts build this"), use `/gsd:research-phase` which produces RESEARCH.md.
For deep ecosystem research ("how do experts build this"), use `/gsd-research-phase` which produces RESEARCH.md.
---
@@ -142,5 +142,5 @@ Create `.planning/phases/XX-name/DISCOVERY.md`:
- Niche/complex domains (3D, games, audio, shaders)
- Need ecosystem knowledge, not just library choice
- "How do experts build this" questions
- Use `/gsd:research-phase` for these
- Use `/gsd-research-phase` for these
</guidelines>

View File

@@ -142,7 +142,7 @@ After completion, create `.planning/phases/XX-name/{phase}-{plan}-SUMMARY.md`
| `user_setup` | No | Array of human-required setup items (external services) |
| `must_haves` | Yes | Goal-backward verification criteria (see below) |
**Wave is pre-computed:** Wave numbers are assigned during `/gsd:plan-phase`. Execute-phase reads `wave` directly from frontmatter and groups plans by wave number. No runtime dependency analysis needed.
**Wave is pre-computed:** Wave numbers are assigned during `/gsd-plan-phase`. Execute-phase reads `wave` directly from frontmatter and groups plans by wave number. No runtime dependency analysis needed.
**Must-haves enable verification:** The `must_haves` field carries goal-backward requirements from planning to execution. After all plans complete, execute-phase spawns a verification subagent that checks these criteria against the actual codebase.

View File

@@ -34,7 +34,7 @@ Template for spawning gsd-planner agent. The agent contains all planning experti
</planning_context>
<downstream_consumer>
Output consumed by /gsd:execute-phase
Output consumed by /gsd-execute-phase
Plans must be executable prompts with:
- Frontmatter (wave, depends_on, files_modified, autonomous)
- Tasks in XML format
@@ -68,7 +68,7 @@ Before returning PLANNING COMPLETE:
## Usage
**From /gsd:plan-phase (standard mode):**
**From /gsd-plan-phase (standard mode):**
```python
Task(
prompt=filled_template,
@@ -77,7 +77,7 @@ Task(
)
```
**From /gsd:plan-phase --gaps (gap closure mode):**
**From /gsd-plan-phase --gaps (gap closure mode):**
```python
Task(
prompt=filled_template, # with mode: gap_closure

View File

@@ -149,7 +149,7 @@ and implemented by workflows/transition.md and workflows/complete-milestone.md.
For existing codebases:
1. **Map codebase first** via `/gsd:map-codebase`
1. **Map codebase first** via `/gsd-map-codebase`
2. **Infer Validated requirements** from existing code:
- What does the codebase actually do?

View File

@@ -18,7 +18,7 @@ Template for `.planning/phases/XX-name/{phase_num}-RESEARCH.md` - comprehensive
<user_constraints>
## User Constraints (from CONTEXT.md)
**CRITICAL:** If CONTEXT.md exists from /gsd:discuss-phase, copy locked decisions here verbatim. These MUST be honored by the planner.
**CRITICAL:** If CONTEXT.md exists from /gsd-discuss-phase, copy locked decisions here verbatim. These MUST be honored by the planner.
### Locked Decisions
[Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]

View File

@@ -96,7 +96,7 @@ Status: ✓ = met minimum, ⚠ = below minimum (planner treats as assumption)
*Phase: [XX-name]*
*Spec created: [date]*
*Next step: /gsd:discuss-phase [X] — implementation decisions (how to build what's specified above)*
*Next step: /gsd-discuss-phase [X] — implementation decisions (how to build what's specified above)*
```
<good_examples>
@@ -192,7 +192,7 @@ The database has a `posts` table and `follows` table. No feed query or feed UI e
*Phase: 03-post-feed*
*Spec created: 2025-01-20*
*Next step: /gsd:discuss-phase 3 — implementation decisions (card layout, loading skeleton, etc.)*
*Next step: /gsd-discuss-phase 3 — implementation decisions (card layout, loading skeleton, etc.)*
```
**Example 2: CLI tool (Database backup)**
@@ -280,7 +280,7 @@ No backup tooling exists. The project uses PostgreSQL. Developers currently use
*Phase: 02-backup-command*
*Spec created: 2025-01-20*
*Next step: /gsd:discuss-phase 2 — implementation decisions (progress reporting, flag design, etc.)*
*Next step: /gsd-discuss-phase 2 — implementation decisions (progress reporting, flag design, etc.)*
```
</good_examples>

View File

@@ -153,10 +153,10 @@ Updated after each plan completion.
**Decisions:** Reference to PROJECT.md Key Decisions table, plus recent decisions summary for quick access. Full decision log lives in PROJECT.md.
**Pending Todos:** Ideas captured via /gsd:add-todo
**Pending Todos:** Ideas captured via /gsd-add-todo
- Count of pending todos
- Reference to .planning/todos/pending/
- Brief list if few, count if many (e.g., "5 pending todos — see /gsd:check-todos")
- Brief list if few, count if many (e.g., "5 pending todos — see /gsd-check-todos")
**Blockers/Concerns:** From "Next Phase Readiness" sections
- Issues that affect future work

View File

@@ -11,15 +11,15 @@ Read all files referenced by the invoking prompt's execution_context before star
<step name="parse_arguments">
Parse the command arguments:
- All arguments become the phase description
- Example: `/gsd:add-phase Add authentication` → description = "Add authentication"
- Example: `/gsd:add-phase Fix critical performance issues` → description = "Fix critical performance issues"
- Example: `/gsd-add-phase Add authentication` → description = "Add authentication"
- Example: `/gsd-add-phase Fix critical performance issues` → description = "Fix critical performance issues"
If no arguments provided:
```
ERROR: Phase description required
Usage: /gsd:add-phase <description>
Example: /gsd:add-phase Add authentication system
Usage: /gsd-add-phase <description>
Example: /gsd-add-phase Add authentication system
```
Exit.
@@ -36,7 +36,7 @@ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
Check `roadmap_exists` from init JSON. If false:
```
ERROR: No roadmap found (.planning/ROADMAP.md)
Run /gsd:new-project to initialize.
Run /gsd-new-project to initialize.
```
Exit.
</step>
@@ -89,12 +89,12 @@ Roadmap updated: .planning/ROADMAP.md
`/clear` then:
`/gsd:plan-phase {N}`
`/gsd-plan-phase {N}`
---
**Also available:**
- `/gsd:add-phase <description>` — add another phase
- `/gsd-add-phase <description>` — add another phase
- Review roadmap
---

View File

@@ -1,7 +1,7 @@
<purpose>
Generate unit and E2E tests for a completed phase based on its SUMMARY.md, CONTEXT.md, and implementation. Classifies each changed file into TDD (unit), E2E (browser), or Skip categories, presents a test plan for user approval, then generates tests following RED-GREEN conventions.
Users currently hand-craft `/gsd:quick` prompts for test generation after each phase. This workflow standardizes the process with proper classification, quality gates, and gap reporting.
Users currently hand-craft `/gsd-quick` prompts for test generation after each phase. This workflow standardizes the process with proper classification, quality gates, and gap reporting.
</purpose>
<required_reading>
@@ -15,15 +15,15 @@ Parse `$ARGUMENTS` for:
- Phase number (integer, decimal, or letter-suffix) → store as `$PHASE_ARG`
- Remaining text after phase number → store as `$EXTRA_INSTRUCTIONS` (optional)
Example: `/gsd:add-tests 12 focus on edge cases` → `$PHASE_ARG=12`, `$EXTRA_INSTRUCTIONS="focus on edge cases"`
Example: `/gsd-add-tests 12 focus on edge cases` → `$PHASE_ARG=12`, `$EXTRA_INSTRUCTIONS="focus on edge cases"`
If no phase argument provided:
```
ERROR: Phase number required
Usage: /gsd:add-tests <phase> [additional instructions]
Example: /gsd:add-tests 12
Example: /gsd:add-tests 12 focus on edge cases in the pricing module
Usage: /gsd-add-tests <phase> [additional instructions]
Example: /gsd-add-tests 12
Example: /gsd-add-tests 12 focus on edge cases in the pricing module
```
Exit.
@@ -54,7 +54,7 @@ Read the phase artifacts (in order of priority):
If no SUMMARY.md exists:
```
ERROR: No SUMMARY.md found for phase ${PHASE_ARG}
This command works on completed phases. Run /gsd:execute-phase first.
This command works on completed phases. Run /gsd-execute-phase first.
```
Exit.
@@ -318,7 +318,7 @@ Present next steps:
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
{if bugs discovered:}
**Fix discovered bugs:** `/gsd:quick fix the {N} test failures discovered in phase ${phase_number}`
**Fix discovered bugs:** `/gsd-quick fix the {N} test failures discovered in phase ${phase_number}`
{if blocked tests:}
**Resolve test blockers:** {description of what's needed}
@@ -329,8 +329,8 @@ Present next steps:
---
**Also available:**
- `/gsd:add-tests {next_phase}` — test another phase
- `/gsd:verify-work {phase_number}` — run UAT verification
- `/gsd-add-tests {next_phase}` — test another phase
- `/gsd-verify-work {phase_number}` — run UAT verification
---
```

View File

@@ -28,7 +28,7 @@ Note existing areas from the todos array for consistency in infer_area step.
<step name="extract_content">
**With arguments:** Use as the title/focus.
- `/gsd:add-todo Add auth token refresh` → title = "Add auth token refresh"
- `/gsd-add-todo Add auth token refresh` → title = "Add auth token refresh"
**Without arguments:** Analyze recent conversation to extract:
- The specific problem, idea, or task discussed
@@ -143,7 +143,7 @@ Would you like to:
1. Continue with current work
2. Add another todo
3. View all todos (/gsd:check-todos)
3. View all todos (/gsd-check-todos)
```
</step>

View File

@@ -43,11 +43,11 @@ AI_PHASE_ENABLED=$(gsd-sdk query config-get workflow.ai_integration_phase 2>/dev
**If `AI_PHASE_ENABLED` is `false`:**
```
AI phase is disabled in config. Enable via /gsd:settings.
AI phase is disabled in config. Enable via /gsd-settings.
```
Exit workflow.
**If `planning_exists` is false:** Error — run `/gsd:new-project` first.
**If `planning_exists` is false:** Error — run `/gsd-new-project` first.
## 2. Parse and Validate Phase
@@ -64,7 +64,7 @@ PHASE_INFO=$(gsd-sdk query roadmap.get-phase "${PHASE}")
**If `has_context` is false:**
```
No CONTEXT.md found for Phase {N}.
Recommended: run /gsd:discuss-phase {N} first to capture framework preferences.
Recommended: run /gsd-discuss-phase {N} first to capture framework preferences.
Continuing without user decisions — framework selector will ask all questions.
```
Continue (non-blocking).
@@ -122,7 +122,7 @@ Goal: {phase_goal}
Parse selector output for: `primary_framework`, `system_type`, `model_provider`, `eval_concerns`, `alternative_framework`.
**If selector fails or returns empty:** Exit with error — "Framework selection failed. Re-run /gsd:ai-integration-phase {N} or answer the framework question in /gsd:discuss-phase {N} first."
**If selector fails or returns empty:** Exit with error — "Framework selection failed. Re-run /gsd-ai-integration-phase {N} or answer the framework question in /gsd-discuss-phase {N} first."
## 6. Initialize AI-SPEC.md
@@ -266,7 +266,7 @@ git commit -m "docs({phase_slug}): generate AI-SPEC.md — {primary_framework} +
◆ Output: {ai_spec_path}
Next step:
/gsd:plan-phase {N} — planner will consume AI-SPEC.md
/gsd-plan-phase {N} — planner will consume AI-SPEC.md
```
</process>

View File

@@ -1,12 +1,12 @@
<purpose>
Analyze ROADMAP.md phases for dependency relationships before execution. Detect file overlap between phases, semantic API/data-flow dependencies, and suggest `Depends on` entries to prevent merge conflicts during parallel execution by `/gsd:manager`.
Analyze ROADMAP.md phases for dependency relationships before execution. Detect file overlap between phases, semantic API/data-flow dependencies, and suggest `Depends on` entries to prevent merge conflicts during parallel execution by `/gsd-manager`.
</purpose>
<process>
## 1. Load ROADMAP.md
Read `.planning/ROADMAP.md`. If it does not exist, error: "No ROADMAP.md found — run `/gsd:new-project` first."
Read `.planning/ROADMAP.md`. If it does not exist, error: "No ROADMAP.md found — run `/gsd-new-project` first."
Extract all phases. For each phase capture:
- Phase number and name
@@ -91,6 +91,6 @@ When writing to ROADMAP.md:
- Preserve all other phase content unchanged
- Do not reorder phases
After applying: "ROADMAP.md updated. Run `/gsd:manager` to execute phases in the correct order."
After applying: "ROADMAP.md updated. Run `/gsd-manager` to execute phases in the correct order."
</process>

View File

@@ -158,7 +158,7 @@ Classify per phase:
Add to audit YAML: `nyquist: { compliant_phases, partial_phases, missing_phases, overall }`
Discovery only — never auto-calls `/gsd:validate-phase`.
Discovery only — never auto-calls `/gsd-validate-phase`.
## 6. Aggregate into v{version}-MILESTONE-AUDIT.md
@@ -231,7 +231,7 @@ All requirements covered. Cross-phase integration verified. E2E flows complete.
/clear then:
/gsd:complete-milestone {version}
/gsd-complete-milestone {version}
───────────────────────────────────────────────────────────────
@@ -264,9 +264,9 @@ All requirements covered. Cross-phase integration verified. E2E flows complete.
| Phase | VALIDATION.md | Compliant | Action |
|-------|---------------|-----------|--------|
| {phase} | exists/missing | true/false/partial | `/gsd:validate-phase {N}` |
| {phase} | exists/missing | true/false/partial | `/gsd-validate-phase {N}` |
Phases needing validation: run `/gsd:validate-phase {N}` for each flagged phase.
Phases needing validation: run `/gsd-validate-phase {N}` for each flagged phase.
───────────────────────────────────────────────────────────────
@@ -276,13 +276,13 @@ Phases needing validation: run `/gsd:validate-phase {N}` for each flagged phase.
/clear then:
/gsd:plan-milestone-gaps
/gsd-plan-milestone-gaps
───────────────────────────────────────────────────────────────
**Also available:**
- cat .planning/v{version}-MILESTONE-AUDIT.md — see full report
- /gsd:complete-milestone {version} — proceed anyway (accept tech debt)
- /gsd-complete-milestone {version} — proceed anyway (accept tech debt)
───────────────────────────────────────────────────────────────
@@ -312,13 +312,13 @@ All requirements met. No critical blockers. Accumulated tech debt needs review.
**A. Complete milestone** — accept debt, track in backlog
/gsd:complete-milestone {version}
/gsd-complete-milestone {version}
**B. Plan cleanup phase** — address debt before completing
/clear then:
/gsd:plan-milestone-gaps
/gsd-plan-milestone-gaps
───────────────────────────────────────────────────────────────
</offer_next>

View File

@@ -76,9 +76,9 @@ Present the audit report:
## Recommended Actions
1. **Close stale items:** `/gsd:verify-work {phase}` — mark stale tests as resolved
1. **Close stale items:** `/gsd-verify-work {phase}` — mark stale tests as resolved
2. **Run active tests:** Human UAT test plan below
3. **When prerequisites met:** Retest blocked items with `/gsd:verify-work {phase}`
3. **When prerequisites met:** Retest blocked items with `/gsd-verify-work {phase}`
```
</step>

View File

@@ -54,8 +54,8 @@ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed_phases`, `roadmap_exists`, `state_exists`, `commit_docs`.
**If `roadmap_exists` is false:** Error — "No ROADMAP.md found. Run `/gsd:new-milestone` first."
**If `state_exists` is false:** Error — "No STATE.md found. Run `/gsd:new-milestone` first."
**If `roadmap_exists` is false:** Error — "No ROADMAP.md found. Run `/gsd-new-milestone` first."
**If `state_exists` is false:** Error — "No STATE.md found. Run `/gsd-new-milestone` first."
Display startup banner:
@@ -537,7 +537,7 @@ Read and execute: `$HOME/.claude/get-shit-done/references/autonomous-smart-discu
Completed through phase ${TO_PHASE} as requested.
Remaining phases were not executed.
Resume with: /gsd:autonomous --from ${next_incomplete_phase}
Resume with: /gsd-autonomous --from ${next_incomplete_phase}
```
Proceed directly to lifecycle step (which handles partial completion — skips audit/complete/cleanup since not all phases are done). Exit cleanly.
@@ -589,7 +589,7 @@ If all phases complete, proceed to lifecycle step.
Phase ${ONLY_PHASE}: ${PHASE_NAME} — Done
Mode: Single phase (--only)
Lifecycle skipped — run /gsd:autonomous without --only
Lifecycle skipped — run /gsd-autonomous without --only
after all phases complete to trigger audit/complete/cleanup.
```
@@ -647,7 +647,7 @@ Ask user via AskUserQuestion:
On **"Continue anyway"**: Display `Audit ⏭ Gaps accepted — proceeding to complete milestone` and proceed to 5b.
On **"Stop"**: Go to handle_blocker with "User stopped — audit gaps remain. Run /gsd:audit-milestone to review, then /gsd:complete-milestone when ready."
On **"Stop"**: Go to handle_blocker with "User stopped — audit gaps remain. Run /gsd-audit-milestone to review, then /gsd-complete-milestone when ready."
**If `tech_debt`:**
@@ -662,7 +662,7 @@ Show the summary, then ask user via AskUserQuestion:
On **"Continue with tech debt"**: Display `Audit ⏭ Tech debt acknowledged — proceeding to complete milestone` and proceed to 5b.
On **"Stop"**: Go to handle_blocker with "User stopped — tech debt to address. Run /gsd:audit-milestone to review details."
On **"Stop"**: Go to handle_blocker with "User stopped — tech debt to address. Run /gsd-audit-milestone to review details."
**5b. Complete Milestone**
@@ -732,7 +732,7 @@ When any phase operation fails or a blocker is detected, present 3 options via A
Skipped: {list of skipped phases}
Remaining: {list of remaining phases}
Resume with: /gsd:autonomous ${ONLY_PHASE ? "--only " + ONLY_PHASE : "--from " + next_phase}${TO_PHASE ? " --to " + TO_PHASE : ""}
Resume with: /gsd-autonomous ${ONLY_PHASE ? "--only " + ONLY_PHASE : "--from " + next_phase}${TO_PHASE ? " --to " + TO_PHASE : ""}
```
</step>

View File

@@ -22,14 +22,14 @@ If `todo_count` is 0:
```
No pending todos.
Todos are captured during work sessions with /gsd:add-todo.
Todos are captured during work sessions with /gsd-add-todo.
---
Would you like to:
1. Continue with current phase (/gsd:progress)
2. Add a todo now (/gsd:add-todo)
1. Continue with current phase (/gsd-progress)
2. Add a todo now (/gsd-add-todo)
```
Exit.
@@ -37,8 +37,8 @@ Exit.
<step name="parse_filter">
Check for area filter in arguments:
- `/gsd:check-todos` → show all
- `/gsd:check-todos api` → filter to area:api only
- `/gsd-check-todos` → show all
- `/gsd-check-todos api` → filter to area:api only
</step>
<step name="list_todos">
@@ -56,7 +56,7 @@ Pending Todos:
---
Reply with a number to view details, or:
- `/gsd:check-todos [area]` to filter by area
- `/gsd-check-todos [area]` to filter by area
- `q` to exit
```
@@ -120,7 +120,7 @@ Use AskUserQuestion:
- question: "What would you like to do with this todo?"
- options:
- "Work on it now" — move to done, start working
- "Create a phase" — /gsd:add-phase with this scope
- "Create a phase" — /gsd-add-phase with this scope
- "Brainstorm approach" — think through before deciding
- "Put it back" — return to list
</step>
@@ -136,7 +136,7 @@ Update STATE.md todo count. Present problem/solution context. Begin work or ask
Note todo reference in phase planning notes. Keep in pending. Return to list or exit.
**Create a phase:**
Display: `/gsd:add-phase [description from todo]`
Display: `/gsd-add-phase [description from todo]`
Keep in pending. User runs command in fresh context.
**Brainstorm approach:**

View File

@@ -93,7 +93,7 @@ Verify that REVIEW.md exists:
```bash
if [ ! -f "${REVIEW_PATH}" ]; then
echo "Error: No REVIEW.md found for Phase ${PHASE_ARG}. Run /gsd:code-review ${PHASE_ARG} first."
echo "Error: No REVIEW.md found for Phase ${PHASE_ARG}. Run /gsd-code-review ${PHASE_ARG} first."
exit 1
fi
```
@@ -221,7 +221,7 @@ Check if FIX_REPORT_PATH exists:
Either way:
```
Some fix commits may already exist in git history — check git log for fix(${PADDED_PHASE}) commits.
You can retry with /gsd:code-review-fix ${PHASE_ARG}.
You can retry with /gsd-code-review-fix ${PHASE_ARG}.
```
Exit workflow (skip auto loop).
@@ -394,7 +394,7 @@ if [ ! -f "${FIX_REPORT_PATH}" ]; then
echo "The fixer agent may have failed before completing."
echo "Check git log for any fix(${PADDED_PHASE}) commits."
echo ""
echo "Retry: /gsd:code-review-fix ${PHASE_ARG}"
echo "Retry: /gsd-code-review-fix ${PHASE_ARG}"
echo ""
echo "═══════════════════════════════════════════════════════════════"
exit 1
@@ -451,7 +451,7 @@ if [ "$FIX_STATUS" = "all_fixed" ]; then
echo "Full report: ${FIX_REPORT_PATH}"
echo ""
echo "Next step:"
echo " /gsd:verify-work — Verify phase completion"
echo " /gsd-verify-work — Verify phase completion"
echo ""
fi
```
@@ -465,8 +465,8 @@ if [ "$FIX_STATUS" = "partial" ] || [ "$FIX_STATUS" = "none_fixed" ]; then
echo ""
echo "Next steps:"
echo " cat ${FIX_REPORT_PATH} — View fix report"
echo " /gsd:code-review ${PHASE_NUMBER} — Re-review code"
echo " /gsd:verify-work — Verify phase completion"
echo " /gsd-code-review ${PHASE_NUMBER} — Re-review code"
echo " /gsd-verify-work — Verify phase completion"
echo ""
fi
```

View File

@@ -227,7 +227,7 @@ if [ ${#REVIEW_FILES[@]} -eq 0 ]; then
else
# Fail closed — no reliable diff base found. Do not use arbitrary HEAD~N.
echo "Warning: No phase commits found for '${PADDED_PHASE}'. Cannot determine reliable diff scope."
echo "Use --files flag to specify files explicitly: /gsd:code-review ${PHASE_ARG} --files=file1,file2,..."
echo "Use --files flag to specify files explicitly: /gsd-code-review ${PHASE_ARG} --files=file1,file2,..."
fi
fi
```
@@ -372,7 +372,7 @@ If the Task() call fails (agent error, timeout, or exception):
```
Error: Code review agent failed: ${error_message}
No REVIEW.md created. You can retry with /gsd:code-review ${PHASE_ARG} or check agent logs.
No REVIEW.md created. You can retry with /gsd-code-review ${PHASE_ARG} or check agent logs.
```
Do NOT proceed to commit_review step. Do NOT create a partial or empty REVIEW.md. Exit workflow.
@@ -405,7 +405,7 @@ if [ -f "${REVIEW_PATH}" ]; then
fi
else
echo "Warning: Agent completed but REVIEW.md not found at ${REVIEW_PATH}. This may indicate an agent issue."
echo "No REVIEW.md to commit. Please retry with /gsd:code-review ${PHASE_ARG}"
echo "No REVIEW.md to commit. Please retry with /gsd-code-review ${PHASE_ARG}"
fi
```
</step>
@@ -469,7 +469,7 @@ If total findings > 0:
Full report: ${REVIEW_PATH}
Next steps:
/gsd:code-review-fix ${PHASE_NUMBER} — Auto-fix issues
/gsd-code-review-fix ${PHASE_NUMBER} — Auto-fix issues
cat ${REVIEW_PATH} — View full report
```

View File

@@ -51,7 +51,7 @@ Display the full audit report to the user.
Then ask:
```
These items are open. Choose an action:
[R] Resolve — stop and fix items, then re-run /gsd:complete-milestone
[R] Resolve — stop and fix items, then re-run /gsd-complete-milestone
[A] Acknowledge all — document as deferred and proceed with close
[C] Cancel — exit without closing
```
@@ -124,7 +124,7 @@ Requirements: {N}/{M} v1 requirements checked off
MUST present 3 options:
1. **Proceed anyway** — mark milestone complete with known gaps
2. **Run audit first** — `/gsd:audit-milestone` to assess gap severity
2. **Run audit first** — `/gsd-audit-milestone` to assess gap severity
3. **Abort** — return to development
If user selects "Proceed anyway": note incomplete requirements in MILESTONES.md under `### Known Gaps` with REQ-IDs and descriptions.
@@ -441,7 +441,7 @@ mv .planning/phases/{phase-dir} .planning/milestones/v[X.Y]-phases/
```
Verify: `✅ Phase directories archived to .planning/milestones/v[X.Y]-phases/`
If "Skip": Phase directories remain in `.planning/phases/` as raw execution history. Use `/gsd:cleanup` later to archive retroactively.
If "Skip": Phase directories remain in `.planning/phases/` as raw execution history. Use `/gsd-cleanup` later to archive retroactively.
After archival, the AI still handles:
- Reorganizing ROADMAP.md with milestone grouping (requires judgment) — overwrite in place after extracting Backlog section
@@ -786,7 +786,7 @@ Tag: v[X.Y]
`/clear` then:
`/gsd:new-milestone`
`/gsd-new-milestone`
---
```
@@ -842,6 +842,6 @@ Milestone completion is successful when:
- [ ] Known gaps recorded in MILESTONES.md if user proceeded with incomplete requirements
- [ ] RETROSPECTIVE.md updated with milestone section
- [ ] Cross-milestone trends updated
- [ ] User knows next step (/gsd:new-milestone)
- [ ] User knows next step (/gsd-new-milestone)
</success_criteria>

View File

@@ -220,7 +220,7 @@ Agents only diagnose—plan-phase --gaps handles fixes (no fix application).
**Agent times out:**
- Check DEBUG-{slug}.md for partial progress
- Can resume with /gsd:debug
- Can resume with /gsd-debug
**All agents fail:**
- Something systemic (permissions, git, etc.)

View File

@@ -4,7 +4,7 @@ Produces DISCOVERY.md (for Level 2-3) that informs PLAN.md creation.
Called from plan-phase.md's mandatory_discovery step with a depth parameter.
NOTE: For comprehensive ecosystem research ("how do experts build this"), use /gsd:research-phase instead, which produces RESEARCH.md.
NOTE: For comprehensive ecosystem research ("how do experts build this"), use /gsd-research-phase instead, which produces RESEARCH.md.
</purpose>
<depth_levels>
@@ -254,8 +254,8 @@ Confidence: [level]
What's next?
1. Discuss phase context (/gsd:discuss-phase [current-phase])
2. Create phase plan (/gsd:plan-phase [current-phase])
1. Discuss phase context (/gsd-discuss-phase [current-phase])
2. Create phase plan (/gsd-plan-phase [current-phase])
3. Refine discovery (dig deeper)
4. Review discovery

View File

@@ -77,7 +77,7 @@ Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phas
```
Phase [X] not found in roadmap.
Use /gsd:progress to see available phases.
Use /gsd-progress to see available phases.
```
Exit workflow.
@@ -599,13 +599,13 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
`/clear` then:
`/gsd:plan-phase ${PHASE}`
`/gsd-plan-phase ${PHASE}`
---
**Also available:**
- `/gsd:plan-phase ${PHASE} --skip-research` — plan without research
- `/gsd:ui-phase ${PHASE}` — generate UI design contract (if frontend work)
- `/gsd-plan-phase ${PHASE} --skip-research` — plan without research
- `/gsd-ui-phase ${PHASE}` — generate UI design contract (if frontend work)
- Review/edit CONTEXT.md before continuing
---

View File

@@ -5,7 +5,7 @@ Power user mode for discuss-phase. Generates ALL questions upfront into a JSON s
</purpose>
<trigger>
This workflow executes when `--power` flag is present in ARGUMENTS to `/gsd:discuss-phase`.
This workflow executes when `--power` flag is present in ARGUMENTS to `/gsd-discuss-phase`.
The caller (discuss-phase.md) has already:
- Validated the phase exists
@@ -265,7 +265,7 @@ Process all answered questions from the JSON file and generate CONTEXT.md.
```
Warning: Only {answered}/{total} questions answered ({pct}%).
CONTEXT.md generated with available decisions. Unanswered questions listed as deferred.
Consider running /gsd:discuss-phase {N} again to refine before planning.
Consider running /gsd-discuss-phase {N} again to refine before planning.
```
7. Print completion message:
@@ -275,7 +275,7 @@ CONTEXT.md written: {phase_dir}/{padded_phase}-CONTEXT.md
Decisions captured: {answered}
Deferred: {remaining}
Next step: /gsd:plan-phase {N}
Next step: /gsd-plan-phase {N}
```
</step>

View File

@@ -103,7 +103,7 @@ Phase: "API documentation" → Structure/navigation, Code examples depth,
<process>
**Express path available:** If you already have a PRD or acceptance criteria document, use `/gsd:plan-phase {phase} --prd path/to/prd.md` to skip this discussion and go straight to planning.
**Express path available:** If you already have a PRD or acceptance criteria document, use `/gsd-plan-phase {phase} --prd path/to/prd.md` to skip this discussion and go straight to planning.
<step name="initialize" priority="first">
Phase number from argument (required).
@@ -121,7 +121,7 @@ Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phas
**If `phase_found` is false:**
```
Phase [X] not found in roadmap.
Use /gsd:progress ${GSD_WS} to see available phases.
Use /gsd-progress ${GSD_WS} to see available phases.
```
Exit workflow.
@@ -172,7 +172,7 @@ Write these answers inline before continuing. If a blocking anti-pattern cannot
</step>
<step name="check_spec">
Check if a SPEC.md (from `/gsd:spec-phase`) exists for this phase. SPEC.md locks requirements before implementation decisions.
Check if a SPEC.md (from `/gsd-spec-phase`) exists for this phase. SPEC.md locks requirements before implementation decisions.
```bash
ls ${phase_dir}/*-SPEC.md 2>/dev/null | grep -v AI-SPEC | head -1 || true
@@ -187,7 +187,7 @@ ls ${phase_dir}/*-SPEC.md 2>/dev/null | grep -v AI-SPEC | head -1 || true
**If no SPEC.md is found:** Continue with `spec_loaded = false`.
**Note:** SPEC.md files named `AI-SPEC.md` (from `/gsd:ai-integration-phase`) are excluded — different purpose.
**Note:** SPEC.md files named `AI-SPEC.md` (from `/gsd-ai-integration-phase`) are excluded — different purpose.
</step>
<step name="check_existing">
@@ -252,7 +252,7 @@ RAW_SKETCHES=$(ls .planning/sketches/MANIFEST.md 2>/dev/null)
If findings skills exist, read SKILL.md and reference files; extract validated patterns, landmines, constraints, design decisions. Add them to `<prior_decisions>`.
If raw spikes/sketches exist but no findings skill, note: `⚠ Unpackaged spikes/sketches detected — run /gsd:spike-wrap-up or /gsd:sketch-wrap-up to make findings available.`
If raw spikes/sketches exist but no findings skill, note: `⚠ Unpackaged spikes/sketches detected — run /gsd-spike-wrap-up or /gsd-sketch-wrap-up to make findings available.`
Build internal `<prior_decisions>` with sections for Project-Level (from PROJECT.md / REQUIREMENTS.md), From Prior Phases (per-phase decisions), and From Spike/Sketch Findings (validated patterns, landmines, design decisions).
@@ -418,11 +418,11 @@ Created: .planning/phases/${PADDED_PHASE}-${SLUG}/${PADDED_PHASE}-CONTEXT.md
`/clear` then:
`/gsd:plan-phase ${PHASE} ${GSD_WS}`
`/gsd-plan-phase ${PHASE} ${GSD_WS}`
---
**Also available:** `--chain` for auto plan+execute after; `/gsd:plan-phase ${PHASE} --skip-research ${GSD_WS}` to plan without research; `/gsd:ui-phase ${PHASE} ${GSD_WS}` for UI design contracts; review/edit CONTEXT.md before continuing.
**Also available:** `--chain` for auto plan+execute after; `/gsd-plan-phase ${PHASE} --skip-research ${GSD_WS}` to plan without research; `/gsd-ui-phase ${PHASE} ${GSD_WS}` for UI design contracts; review/edit CONTEXT.md before continuing.
```
</step>

View File

@@ -75,22 +75,22 @@
/clear then:
Next: /gsd:discuss-phase ${NEXT_PHASE} ${WAS_CHAIN ? "--chain" : "--auto"} ${GSD_WS}
Next: /gsd-discuss-phase ${NEXT_PHASE} ${WAS_CHAIN ? "--chain" : "--auto"} ${GSD_WS}
```
- **PLANNING COMPLETE** → Planning done, execution didn't complete:
```
Auto-advance partial: Planning complete, execution did not finish.
Continue: /gsd:execute-phase ${PHASE} ${GSD_WS}
Continue: /gsd-execute-phase ${PHASE} ${GSD_WS}
```
- **PLANNING INCONCLUSIVE / CHECKPOINT** → Stop chain:
```
Auto-advance stopped: Planning needs input.
Continue: /gsd:plan-phase ${PHASE} ${GSD_WS}
Continue: /gsd-plan-phase ${PHASE} ${GSD_WS}
```
- **GAPS FOUND** → Stop chain:
```
Auto-advance stopped: Gaps found during execution.
Continue: /gsd:plan-phase ${PHASE} --gaps ${GSD_WS}
Continue: /gsd-plan-phase ${PHASE} --gaps ${GSD_WS}
```
7. **If none of `--auto`, `--chain`, nor config enabled:** route to

View File

@@ -17,7 +17,7 @@ Claude App cannot forward TUI menu selections back to the host.
## Activation
- Per-session: pass `--text` flag to any command (e.g.,
`/gsd:discuss-phase --text`)
`/gsd-discuss-phase --text`)
- Per-project: `gsd-sdk query config-set workflow.text_mode true`
Text mode applies to ALL workflows in the session, not just discuss-phase.

View File

@@ -39,35 +39,35 @@ Evaluate `$ARGUMENTS` against these routing rules. Apply the **first matching**
| If the text describes... | Route to | Why |
|--------------------------|----------|-----|
| Starting a new project, "set up", "initialize" | `/gsd:new-project` | Needs full project initialization |
| Mapping or analyzing an existing codebase | `/gsd:map-codebase` | Codebase discovery |
| A bug, error, crash, failure, or something broken | `/gsd:debug` | Needs systematic investigation |
| Spiking, "test if", "will this work", "experiment", "prove this out", validate feasibility | `/gsd:spike` | Throwaway experiment to validate feasibility |
| Sketching, "mockup", "what would this look like", "prototype the UI", "design this", explore visual direction | `/gsd:sketch` | Throwaway HTML mockups to explore design |
| Wrapping up spikes, "package the spikes", "consolidate spike findings" | `/gsd:spike-wrap-up` | Package spike findings into reusable skill |
| Wrapping up sketches, "package the designs", "consolidate sketch findings" | `/gsd:sketch-wrap-up` | Package sketch findings into reusable skill |
| Exploring, researching, comparing, or "how does X work" | `/gsd:research-phase` | Domain research before planning |
| Discussing vision, "how should X look", brainstorming | `/gsd:discuss-phase` | Needs context gathering |
| A complex task: refactoring, migration, multi-file architecture, system redesign | `/gsd:add-phase` | Needs a full phase with plan/build cycle |
| Planning a specific phase or "plan phase N" | `/gsd:plan-phase` | Direct planning request |
| Executing a phase or "build phase N", "run phase N" | `/gsd:execute-phase` | Direct execution request |
| Running all remaining phases automatically | `/gsd:autonomous` | Full autonomous execution |
| A review or quality concern about existing work | `/gsd:verify-work` | Needs verification |
| Checking progress, status, "where am I" | `/gsd:progress` | Status check |
| Resuming work, "pick up where I left off" | `/gsd:resume-work` | Session restoration |
| A note, idea, or "remember to..." | `/gsd:add-todo` | Capture for later |
| Adding tests, "write tests", "test coverage" | `/gsd:add-tests` | Test generation |
| Completing a milestone, shipping, releasing | `/gsd:complete-milestone` | Milestone lifecycle |
| A specific, actionable, small task (add feature, fix typo, update config) | `/gsd:quick` | Self-contained, single executor |
| Starting a new project, "set up", "initialize" | `/gsd-new-project` | Needs full project initialization |
| Mapping or analyzing an existing codebase | `/gsd-map-codebase` | Codebase discovery |
| A bug, error, crash, failure, or something broken | `/gsd-debug` | Needs systematic investigation |
| Spiking, "test if", "will this work", "experiment", "prove this out", validate feasibility | `/gsd-spike` | Throwaway experiment to validate feasibility |
| Sketching, "mockup", "what would this look like", "prototype the UI", "design this", explore visual direction | `/gsd-sketch` | Throwaway HTML mockups to explore design |
| Wrapping up spikes, "package the spikes", "consolidate spike findings" | `/gsd-spike-wrap-up` | Package spike findings into reusable skill |
| Wrapping up sketches, "package the designs", "consolidate sketch findings" | `/gsd-sketch-wrap-up` | Package sketch findings into reusable skill |
| Exploring, researching, comparing, or "how does X work" | `/gsd-research-phase` | Domain research before planning |
| Discussing vision, "how should X look", brainstorming | `/gsd-discuss-phase` | Needs context gathering |
| A complex task: refactoring, migration, multi-file architecture, system redesign | `/gsd-add-phase` | Needs a full phase with plan/build cycle |
| Planning a specific phase or "plan phase N" | `/gsd-plan-phase` | Direct planning request |
| Executing a phase or "build phase N", "run phase N" | `/gsd-execute-phase` | Direct execution request |
| Running all remaining phases automatically | `/gsd-autonomous` | Full autonomous execution |
| A review or quality concern about existing work | `/gsd-verify-work` | Needs verification |
| Checking progress, status, "where am I" | `/gsd-progress` | Status check |
| Resuming work, "pick up where I left off" | `/gsd-resume-work` | Session restoration |
| A note, idea, or "remember to..." | `/gsd-add-todo` | Capture for later |
| Adding tests, "write tests", "test coverage" | `/gsd-add-tests` | Test generation |
| Completing a milestone, shipping, releasing | `/gsd-complete-milestone` | Milestone lifecycle |
| A specific, actionable, small task (add feature, fix typo, update config) | `/gsd-quick` | Self-contained, single executor |
**Requires `.planning/` directory:** All routes except `/gsd:new-project`, `/gsd:map-codebase`, `/gsd:spike`, `/gsd:sketch`, `/gsd:help`, and `/gsd:join-discord`. If the project doesn't exist and the route requires it, suggest `/gsd:new-project` first.
**Requires `.planning/` directory:** All routes except `/gsd-new-project`, `/gsd-map-codebase`, `/gsd-spike`, `/gsd-sketch`, `/gsd-help`, and `/gsd-join-discord`. If the project doesn't exist and the route requires it, suggest `/gsd-new-project` first.
**Ambiguity handling:** If the text could reasonably match multiple routes, ask the user via AskUserQuestion with the top 2-3 options. For example:
```
"Refactor the authentication system" could be:
1. /gsd:add-phase — Full planning cycle (recommended for multi-file refactors)
2. /gsd:quick — Quick execution (if scope is small and clear)
1. /gsd-add-phase — Full planning cycle (recommended for multi-file refactors)
2. /gsd-quick — Quick execution (if scope is small and clear)
Which approach fits better?
```

View File

@@ -988,8 +988,8 @@ Failed claims:
Display note:
```
To fix failures automatically: /gsd:docs-update (runs generation + fix loop)
To regenerate all docs from scratch: /gsd:docs-update --force
To fix failures automatically: /gsd-docs-update (runs generation + fix loop)
To regenerate all docs from scratch: /gsd-docs-update --force
```
Clean up temp files: remove `.planning/tmp/verify-*.json` files.
@@ -1024,7 +1024,7 @@ This would expose credentials if committed.
Action required:
1. Review the flagged lines above
2. Remove any real secrets from the doc files
3. Re-run /gsd:docs-update to regenerate clean docs
3. Re-run /gsd-docs-update to regenerate clean docs
```
Then confirm with AskUserQuestion:
@@ -1126,7 +1126,7 @@ All generated files committed.
Remind the user they can fact-check generated docs:
```
Run `/gsd:docs-update --verify-only` to fact-check generated docs against the codebase.
Run `/gsd-docs-update --verify-only` to fact-check generated docs against the codebase.
```
End workflow.

View File

@@ -1,7 +1,7 @@
<purpose>
Retroactive audit of an implemented AI phase's evaluation coverage. Standalone command that works on any GSD-managed AI phase. Produces a scored EVAL-REVIEW.md with gap analysis and remediation plan.
Use after /gsd:execute-phase to verify that the evaluation strategy from AI-SPEC.md was actually implemented. Mirrors the pattern of /gsd:ui-review and /gsd:validate-phase.
Use after /gsd-execute-phase to verify that the evaluation strategy from AI-SPEC.md was actually implemented. Mirrors the pattern of /gsd-ui-review and /gsd-validate-phase.
</purpose>
<required_reading>
@@ -40,7 +40,7 @@ EVAL_REVIEW_FILE=$(ls "${PHASE_DIR}"/*-EVAL-REVIEW.md 2>/dev/null | head -1)
**State A** — AI-SPEC.md + SUMMARY.md exist: Full audit against spec
**State B** — SUMMARY.md exists, no AI-SPEC.md: Audit against general best practices
**State C** — No SUMMARY.md: Exit — "Phase {N} not executed. Run /gsd:execute-phase {N} first."
**State C** — No SUMMARY.md: Exit — "Phase {N} not executed. Run /gsd-execute-phase {N} first."
**Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
@@ -58,7 +58,7 @@ If "Re-audit": continue.
```
No AI-SPEC.md found for Phase {N}.
Audit will evaluate against general AI eval best practices rather than a phase-specific plan.
Consider running /gsd:ai-integration-phase {N} before implementation next time.
Consider running /gsd-ai-integration-phase {N} before implementation next time.
```
Continue (non-blocking).
@@ -124,10 +124,10 @@ Read the written EVAL-REVIEW.md. Extract:
◆ Output: {eval_review_path}
{If PRODUCTION READY:}
Next step: /gsd:plan-phase (next phase) or deploy
Next step: /gsd-plan-phase (next phase) or deploy
{If NEEDS WORK:}
Address critical gaps in EVAL-REVIEW.md, then re-run /gsd:eval-review {N}
Address critical gaps in EVAL-REVIEW.md, then re-run /gsd-eval-review {N}
{If SIGNIFICANT GAPS or NOT IMPLEMENTED:}
Review AI-SPEC.md evaluation plan. Critical eval dimensions are not implemented.

View File

@@ -344,7 +344,7 @@ between a large tool_result and the next assistant turn (seen on Claude Code
+ Opus 4.7 at ~200K+ cache_read). To keep the stream warm, emit short
assistant-text heartbeats — **no tool call, just a literal line** — at every
wave and plan boundary. Each heartbeat MUST start with `[checkpoint]` so
tooling and `/gsd:manager`'s background-completion handler can grep partial
tooling and `/gsd-manager`'s background-completion handler can grep partial
transcripts. `{P}/{Q}` is the phase-wide completed/total plans counter and
increases monotonically across waves. `{status}` is `complete` (success),
`failed` (executor error), or `checkpoint` (human-gate returned).
@@ -1017,13 +1017,13 @@ If `SECURITY_CFG` is `true` AND `SECURITY_FILE` is empty (no SECURITY.md yet):
Include in the next-steps routing output:
```
⚠ Security enforcement enabled — run before advancing:
/gsd:secure-phase {PHASE} ${GSD_WS}
/gsd-secure-phase {PHASE} ${GSD_WS}
```
If `SECURITY_CFG` is `true` AND SECURITY.md exists: check frontmatter `threats_open`. If > 0:
```
⚠ Security gate: {threats_open} threats open
/gsd:secure-phase {PHASE} — resolve before advancing
/gsd-secure-phase {PHASE} — resolve before advancing
```
</step>
@@ -1093,8 +1093,8 @@ Apply the same "incomplete" filtering rules as earlier:
Selected wave finished successfully. This phase still has incomplete plans, so phase-level verification and completion were intentionally skipped.
/gsd:execute-phase {phase} ${GSD_WS} # Continue remaining waves
/gsd:execute-phase {phase} --wave {next} ${GSD_WS} # Run the next wave explicitly
/gsd-execute-phase {phase} ${GSD_WS} # Continue remaining waves
/gsd-execute-phase {phase} --wave {next} ${GSD_WS} # Run the next wave explicitly
```
**If no incomplete plans remain after the selected wave finishes:**
@@ -1127,7 +1127,7 @@ REVIEW_STATUS=$(sed -n '/^---$/,/^---$/p' "$REVIEW_FILE" | grep "^status:" | hea
If REVIEW_STATUS is not "clean" and not "skipped" and not empty, display:
```
Code review found issues. Consider running:
/gsd:code-review-fix ${PHASE_NUMBER}
/gsd-code-review-fix ${PHASE_NUMBER}
```
**Error handling:** If the Skill invocation fails or throws, catch the error, display "Code review encountered an error (non-blocking): {error}" and proceed to next step. Review failures must never block execution.
@@ -1379,7 +1379,7 @@ grep "^status:" "$PHASE_DIR"/*-VERIFICATION.md | cut -d: -f2 | tr -d ' '
|--------|--------|
| `passed` | → update_roadmap |
| `human_needed` | Present items for human testing, get approval or feedback |
| `gaps_found` | Present gap summary, offer `/gsd:plan-phase {phase} --gaps ${GSD_WS}` |
| `gaps_found` | Present gap summary, offer `/gsd-plan-phase {phase} --gaps ${GSD_WS}` |
**If human_needed:**
@@ -1434,12 +1434,12 @@ All automated checks passed. {N} items need human testing:
{From VERIFICATION.md human_verification section}
Items saved to `{phase_num}-HUMAN-UAT.md` — they will appear in `/gsd:progress` and `/gsd:audit-uat`.
Items saved to `{phase_num}-HUMAN-UAT.md` — they will appear in `/gsd-progress` and `/gsd-audit-uat`.
"approved" → continue | Report issues → gap closure
```
**If user says "approved":** Proceed to `update_roadmap`. The HUMAN-UAT.md file persists with `status: partial` and will surface in future progress checks until the user runs `/gsd:verify-work` on it.
**If user says "approved":** Proceed to `update_roadmap`. The HUMAN-UAT.md file persists with `status: partial` and will surface in future progress checks until the user runs `/gsd-verify-work` on it.
**If user reports issues:** Proceed to gap closure as currently implemented.
@@ -1458,13 +1458,13 @@ Items saved to `{phase_num}-HUMAN-UAT.md` — they will appear in `/gsd:progress
`/clear` then:
`/gsd:plan-phase {X} --gaps ${GSD_WS}`
`/gsd-plan-phase {X} --gaps ${GSD_WS}`
Also: `cat {phase_dir}/{phase_num}-VERIFICATION.md` — full report
Also: `/gsd:verify-work {X} ${GSD_WS}` — manual testing first
Also: `/gsd-verify-work {X} ${GSD_WS}` — manual testing first
```
Gap closure cycle: `/gsd:plan-phase {X} --gaps ${GSD_WS}` reads VERIFICATION.md → creates gap plans with `gap_closure: true` → user runs `/gsd:execute-phase {X} --gaps-only ${GSD_WS}` → verifier re-runs.
Gap closure cycle: `/gsd-plan-phase {X} --gaps ${GSD_WS}` reads VERIFICATION.md → creates gap plans with `gap_closure: true` → user runs `/gsd-execute-phase {X} --gaps-only ${GSD_WS}` → verifier re-runs.
</step>
<step name="update_roadmap">
@@ -1490,7 +1490,7 @@ Extract from result: `next_phase`, `next_phase_name`, `is_last_phase`, `warnings
{list each warning}
These items are tracked and will appear in `/gsd:progress` and `/gsd:audit-uat`.
These items are tracked and will appear in `/gsd-progress` and `/gsd-audit-uat`.
```
```bash
@@ -1577,7 +1577,7 @@ gsd-sdk query commit "docs(phase-{X}): evolve PROJECT.md after phase completion"
<step name="offer_next">
**Exception:** If `gaps_found`, the `verify_phase_goal` step already presents the gap-closure path (`/gsd:plan-phase {X} --gaps`). No additional routing needed — skip auto-advance.
**Exception:** If `gaps_found`, the `verify_phase_goal` step already presents the gap-closure path (`/gsd-plan-phase {X} --gaps`). No additional routing needed — skip auto-advance.
**No-transition check (spawned by auto-advance chain):**
@@ -1640,10 +1640,10 @@ If CONTEXT.md does **not** exist for the next phase, present:
```
## ✓ Phase {X}: {Name} Complete
/gsd:progress ${GSD_WS} — see updated roadmap
/gsd:discuss-phase {next} ${GSD_WS} — start here: discuss next phase before planning ← recommended
/gsd:plan-phase {next} ${GSD_WS} — plan next phase (skip discuss)
/gsd:execute-phase {next} ${GSD_WS} — execute next phase (skip discuss and plan)
/gsd-progress ${GSD_WS} — see updated roadmap
/gsd-discuss-phase {next} ${GSD_WS} — start here: discuss next phase before planning ← recommended
/gsd-plan-phase {next} ${GSD_WS} — plan next phase (skip discuss)
/gsd-execute-phase {next} ${GSD_WS} — execute next phase (skip discuss and plan)
```
If CONTEXT.md **exists** for the next phase, present:
@@ -1651,10 +1651,10 @@ If CONTEXT.md **exists** for the next phase, present:
```
## ✓ Phase {X}: {Name} Complete
/gsd:progress ${GSD_WS} — see updated roadmap
/gsd:plan-phase {next} ${GSD_WS} — start here: plan next phase (CONTEXT.md already present) ← recommended
/gsd:discuss-phase {next} ${GSD_WS} — re-discuss next phase
/gsd:execute-phase {next} ${GSD_WS} — execute next phase (skip planning)
/gsd-progress ${GSD_WS} — see updated roadmap
/gsd-plan-phase {next} ${GSD_WS} — start here: plan next phase (CONTEXT.md already present) ← recommended
/gsd-discuss-phase {next} ${GSD_WS} — re-discuss next phase
/gsd-execute-phase {next} ${GSD_WS} — execute next phase (skip planning)
```
Only suggest the commands listed above. Do not invent or hallucinate command names.
@@ -1681,7 +1681,7 @@ For 1M+ context models, consider:
</failure_handling>
<resumption>
Re-run `/gsd:execute-phase {phase}` → discover_plans finds completed SUMMARYs → skips them → resumes from first incomplete plan → continues wave execution.
Re-run `/gsd-execute-phase {phase}` → discover_plans finds completed SUMMARYs → skips them → resumes from first incomplete plan → continues wave execution.
STATE.md tracks: last completed plan, current wave, pending checkpoints.
</resumption>

View File

@@ -34,7 +34,7 @@ New migrations:
New route modules:
- {path}
Run /gsd:map-codebase --paths {affected_paths} to refresh planning context.
Run /gsd-map-codebase --paths {affected_paths} to refresh planning context.
```
Then continue to `verify_phase_goal`. Do NOT block. Do NOT spawn anything.

View File

@@ -472,9 +472,9 @@ If `USER_SETUP_CREATED=true`: display `⚠️ USER SETUP REQUIRED` with path + e
| Condition | Route | Action |
|-----------|-------|--------|
| summaries < plans | **A: More plans** | Find next PLAN without SUMMARY. Yolo: auto-continue. Interactive: show next plan, suggest `/gsd:execute-phase {phase}` + `/gsd:verify-work`. STOP here. |
| summaries = plans, current < highest phase | **B: Phase done** | Show completion, suggest `/gsd:plan-phase {Z+1}` + `/gsd:verify-work {Z}` + `/gsd:discuss-phase {Z+1}` |
| summaries = plans, current = highest phase | **C: Milestone done** | Show banner, suggest `/gsd:complete-milestone` + `/gsd:verify-work` + `/gsd:add-phase` |
| summaries < plans | **A: More plans** | Find next PLAN without SUMMARY. Yolo: auto-continue. Interactive: show next plan, suggest `/gsd-execute-phase {phase}` + `/gsd-verify-work`. STOP here. |
| summaries = plans, current < highest phase | **B: Phase done** | Show completion, suggest `/gsd-plan-phase {Z+1}` + `/gsd-verify-work {Z}` + `/gsd-discuss-phase {Z+1}` |
| summaries = plans, current = highest phase | **C: Milestone done** | Show banner, suggest `/gsd-complete-milestone` + `/gsd-verify-work` + `/gsd-add-phase` |
All routes: `/clear` first for fresh context.
</step>

View File

@@ -82,8 +82,8 @@ When the conversation reaches natural conclusions or the developer signals readi
| Research question | `.planning/research/questions.md` (append) | Open questions that need deeper investigation |
| Requirement | `REQUIREMENTS.md` (append) | Clear requirements that emerged from discussion |
| New phase | `ROADMAP.md` (append) | Scope large enough to warrant its own phase |
| Spike | `/gsd:spike` (invoke) | Feasibility uncertainty surfaced — "will this API work?", "can we do X?" |
| Sketch | `/gsd:sketch` (invoke) | Design direction unclear — "what should this look like?", "how should this feel?" |
| Spike | `/gsd-spike` (invoke) | Feasibility uncertainty surfaced — "will this API work?", "can we do X?" |
| Sketch | `/gsd-sketch` (invoke) | Design direction unclear — "what should this look like?", "how should this feel?" |
Present suggestions:
```
@@ -109,7 +109,7 @@ For each selected output, write the file:
- **Seeds:** Create `.planning/seeds/{slug}.md` with frontmatter (title, trigger_condition, planted_date)
- **Research questions:** Append to `.planning/research/questions.md`
- **Requirements:** Append to `.planning/REQUIREMENTS.md` with next available REQ ID
- **Phases:** Use existing `/gsd:add-phase` command via SlashCommand
- **Phases:** Use existing `/gsd-add-phase` command via SlashCommand
Commit if `commit_docs` is enabled:
```bash
@@ -125,7 +125,7 @@ gsd-sdk query commit "docs: capture exploration — {topic_slug}" {file_list}
**Outputs:** {count} artifact(s) created
{list of created files}
Continue exploring with `/gsd:explore` or start working with `/gsd:next`.
Continue exploring with `/gsd-explore` or start working with `/gsd-next`.
```
</process>

View File

@@ -211,8 +211,8 @@ Missing artifacts: {list or "none"}
Next steps:
- Review extracted learnings for accuracy
- /gsd:progress — see overall project state
- /gsd:execute-phase {next} — continue to next phase
- /gsd-progress — see overall project state
- /gsd-execute-phase {next} — continue to next phase
---------------------------------------------------------------
```

View File

@@ -5,7 +5,7 @@ no research, no plan checking. Just: understand → do → commit → log.
For tasks like: fix a typo, update a config value, add a missing import, rename a
variable, commit uncommitted work, add a .gitignore entry, bump a version number.
Use /gsd:quick for anything that needs multi-step planning or research.
Use /gsd-quick for anything that needs multi-step planning or research.
</purpose>
<process>
@@ -34,8 +34,8 @@ If the task seems non-trivial (multi-file refactor, new feature, needs research)
say:
```
This looks like it needs planning. Use /gsd:quick instead:
/gsd:quick "{task description}"
This looks like it needs planning. Use /gsd-quick instead:
/gsd-quick "{task description}"
```
And stop.
@@ -93,8 +93,8 @@ No next-step suggestions. No workflow routing. Just done.
- NEVER spawn a Task/subagent — this runs inline
- NEVER create PLAN.md or SUMMARY.md files
- NEVER run research or plan-checking
- If the task takes more than 3 file edits, STOP and redirect to /gsd:quick
- If you're unsure how to implement it, STOP and redirect to /gsd:quick
- If the task takes more than 3 file edits, STOP and redirect to /gsd-quick
- If you're unsure how to implement it, STOP and redirect to /gsd-quick
</guardrails>
<success_criteria>

View File

@@ -207,11 +207,11 @@ Based on the evidence above, the most likely explanation is:
1. {Specific, actionable remediation step}
2. {Another step if applicable}
3. {Recovery command if applicable — e.g., `/gsd:resume-work`, `/gsd:execute-phase N`}
3. {Recovery command if applicable — e.g., `/gsd-resume-work`, `/gsd-execute-phase N`}
---
*Report generated by `/gsd:forensics`. All paths redacted for portability.*
*Report generated by `/gsd-forensics`. All paths redacted for portability.*
```
**Redaction rules:**

View File

@@ -66,10 +66,10 @@ Errors: N | Warnings: N | Info: N
## Errors
- [E001] config.json: JSON parse error at line 5
Fix: Run /gsd:health --repair to reset to defaults
Fix: Run /gsd-health --repair to reset to defaults
- [E002] PROJECT.md not found
Fix: Run /gsd:new-project to create
Fix: Run /gsd-new-project to create
```
**If warnings exist:**
@@ -94,7 +94,7 @@ Errors: N | Warnings: N | Info: N
**Footer (if repairable issues exist and --repair was NOT used):**
```
---
N issues can be auto-repaired. Run: /gsd:health --repair
N issues can be auto-repaired. Run: /gsd-health --repair
```
</step>
@@ -104,7 +104,7 @@ N issues can be auto-repaired. Run: /gsd:health --repair
Ask user if they want to run repairs:
```
Would you like to run /gsd:health --repair to fix N issues automatically?
Would you like to run /gsd-health --repair to fix N issues automatically?
```
If yes, re-run with --repair flag and display results.

View File

@@ -9,9 +9,9 @@ Display the complete GSD command reference. Output ONLY the reference content. D
## Quick Start
1. `/gsd:new-project` - Initialize project (includes research, requirements, roadmap)
2. `/gsd:plan-phase 1` - Create detailed plan for first phase
3. `/gsd:execute-phase 1` - Execute the phase
1. `/gsd-new-project` - Initialize project (includes research, requirements, roadmap)
2. `/gsd-plan-phase 1` - Create detailed plan for first phase
3. `/gsd-execute-phase 1` - Execute the phase
## Staying Updated
@@ -24,12 +24,12 @@ npx get-shit-done-cc@latest
## Core Workflow
```
/gsd:new-project → /gsd:plan-phase → /gsd:execute-phase → repeat
/gsd-new-project → /gsd-plan-phase → /gsd-execute-phase → repeat
```
### Project Initialization
**`/gsd:new-project`**
**`/gsd-new-project`**
Initialize new project through unified flow.
One command takes you from idea to ready-for-planning:
@@ -46,21 +46,21 @@ Creates all `.planning/` artifacts:
- `ROADMAP.md` — phases mapped to requirements
- `STATE.md` — project memory
Usage: `/gsd:new-project`
Usage: `/gsd-new-project`
**`/gsd:map-codebase`**
**`/gsd-map-codebase`**
Map an existing codebase for brownfield projects.
- Analyzes codebase with parallel Explore agents
- Creates `.planning/codebase/` with 7 focused documents
- Covers stack, architecture, structure, conventions, testing, integrations, concerns
- Use before `/gsd:new-project` on existing codebases
- Use before `/gsd-new-project` on existing codebases
Usage: `/gsd:map-codebase`
Usage: `/gsd-map-codebase`
### Phase Planning
**`/gsd:discuss-phase <number>`**
**`/gsd-discuss-phase <number>`**
Help articulate your vision for a phase before planning.
- Captures how you imagine this phase working
@@ -68,11 +68,11 @@ Help articulate your vision for a phase before planning.
- Use when you have ideas about how something should look/feel
- Optional `--batch` asks 2-5 related questions at a time instead of one-by-one
Usage: `/gsd:discuss-phase 2`
Usage: `/gsd:discuss-phase 2 --batch`
Usage: `/gsd:discuss-phase 2 --batch=3`
Usage: `/gsd-discuss-phase 2`
Usage: `/gsd-discuss-phase 2 --batch`
Usage: `/gsd-discuss-phase 2 --batch=3`
**`/gsd:research-phase <number>`**
**`/gsd-research-phase <number>`**
Comprehensive ecosystem research for niche/complex domains.
- Discovers standard stack, architecture patterns, pitfalls
@@ -80,18 +80,18 @@ Comprehensive ecosystem research for niche/complex domains.
- Use for 3D, games, audio, shaders, ML, and other specialized domains
- Goes beyond "which library" to ecosystem knowledge
Usage: `/gsd:research-phase 3`
Usage: `/gsd-research-phase 3`
**`/gsd:list-phase-assumptions <number>`**
**`/gsd-list-phase-assumptions <number>`**
See what Claude is planning to do before it starts.
- Shows Claude's intended approach for a phase
- Lets you course-correct if Claude misunderstood your vision
- No files created - conversational output only
Usage: `/gsd:list-phase-assumptions 3`
Usage: `/gsd-list-phase-assumptions 3`
**`/gsd:plan-phase <number>`**
**`/gsd-plan-phase <number>`**
Create detailed execution plan for a specific phase.
- Generates `.planning/phases/XX-phase-name/XX-YY-PLAN.md`
@@ -99,14 +99,14 @@ Create detailed execution plan for a specific phase.
- Includes verification criteria and success measures
- Multiple plans per phase supported (XX-01, XX-02, etc.)
Usage: `/gsd:plan-phase 1`
Usage: `/gsd-plan-phase 1`
Result: Creates `.planning/phases/01-foundation/01-01-PLAN.md`
**PRD Express Path:** Pass `--prd path/to/requirements.md` to skip discuss-phase entirely. Your PRD becomes locked decisions in CONTEXT.md. Useful when you already have clear acceptance criteria.
### Execution
**`/gsd:execute-phase <phase-number>`**
**`/gsd-execute-phase <phase-number>`**
Execute all plans in a phase, or run a specific wave.
- Groups plans by wave (from frontmatter), executes waves sequentially
@@ -115,12 +115,12 @@ Execute all plans in a phase, or run a specific wave.
- Verifies phase goal after all plans complete
- Updates REQUIREMENTS.md, ROADMAP.md, STATE.md
Usage: `/gsd:execute-phase 5`
Usage: `/gsd:execute-phase 5 --wave 2`
Usage: `/gsd-execute-phase 5`
Usage: `/gsd-execute-phase 5 --wave 2`
### Smart Router
**`/gsd:do <description>`**
**`/gsd-do <description>`**
Route freeform text to the right GSD command automatically.
- Analyzes natural language input to find the best matching GSD command
@@ -128,13 +128,13 @@ Route freeform text to the right GSD command automatically.
- Resolves ambiguity by asking you to pick between top matches
- Use when you know what you want but don't know which `/gsd-*` command to run
Usage: `/gsd:do fix the login button`
Usage: `/gsd:do refactor the auth system`
Usage: `/gsd:do I want to start a new milestone`
Usage: `/gsd-do fix the login button`
Usage: `/gsd-do refactor the auth system`
Usage: `/gsd-do I want to start a new milestone`
### Quick Mode
**`/gsd:quick [--full] [--validate] [--discuss] [--research]`**
**`/gsd-quick [--full] [--validate] [--discuss] [--research]`**
Execute small, ad-hoc tasks with GSD guarantees but skip optional agents.
Quick mode uses the same system with a shorter path:
@@ -150,48 +150,48 @@ Flags enable additional quality steps:
Granular flags are composable: `--discuss --research --validate` gives the same as `--full`.
Usage: `/gsd:quick`
Usage: `/gsd:quick --full`
Usage: `/gsd:quick --research --validate`
Usage: `/gsd-quick`
Usage: `/gsd-quick --full`
Usage: `/gsd-quick --research --validate`
Result: Creates `.planning/quick/NNN-slug/PLAN.md`, `.planning/quick/NNN-slug/SUMMARY.md`
---
**`/gsd:fast [description]`**
**`/gsd-fast [description]`**
Execute a trivial task inline — no subagents, no planning files, no overhead.
For tasks too small to justify planning: typo fixes, config changes, forgotten commits, simple additions. Runs in the current context, makes the change, commits, and logs to STATE.md.
- No PLAN.md or SUMMARY.md created
- No subagent spawned (runs inline)
- ≤ 3 file edits — redirects to `/gsd:quick` if task is non-trivial
- ≤ 3 file edits — redirects to `/gsd-quick` if task is non-trivial
- Atomic commit with conventional message
Usage: `/gsd:fast "fix the typo in README"`
Usage: `/gsd:fast "add .env to gitignore"`
Usage: `/gsd-fast "fix the typo in README"`
Usage: `/gsd-fast "add .env to gitignore"`
### Roadmap Management
**`/gsd:add-phase <description>`**
**`/gsd-add-phase <description>`**
Add new phase to end of current milestone.
- Appends to ROADMAP.md
- Uses next sequential number
- Updates phase directory structure
Usage: `/gsd:add-phase "Add admin dashboard"`
Usage: `/gsd-add-phase "Add admin dashboard"`
**`/gsd:insert-phase <after> <description>`**
**`/gsd-insert-phase <after> <description>`**
Insert urgent work as decimal phase between existing phases.
- Creates intermediate phase (e.g., 7.1 between 7 and 8)
- Useful for discovered work that must happen mid-milestone
- Maintains phase ordering
Usage: `/gsd:insert-phase 7 "Fix critical auth bug"`
Usage: `/gsd-insert-phase 7 "Fix critical auth bug"`
Result: Creates Phase 7.1
**`/gsd:remove-phase <number>`**
**`/gsd-remove-phase <number>`**
Remove a future phase and renumber subsequent phases.
- Deletes phase directory and all references
@@ -199,12 +199,12 @@ Remove a future phase and renumber subsequent phases.
- Only works on future (unstarted) phases
- Git commit preserves historical record
Usage: `/gsd:remove-phase 17`
Usage: `/gsd-remove-phase 17`
Result: Phase 17 deleted, phases 18-20 become 17-19
### Milestone Management
**`/gsd:new-milestone <name>`**
**`/gsd-new-milestone <name>`**
Start a new milestone through unified flow.
- Deep questioning to understand what you're building next
@@ -213,12 +213,12 @@ Start a new milestone through unified flow.
- Roadmap creation with phase breakdown
- Optional `--reset-phase-numbers` flag restarts numbering at Phase 1 and archives old phase dirs first for safety
Mirrors `/gsd:new-project` flow for brownfield projects (existing PROJECT.md).
Mirrors `/gsd-new-project` flow for brownfield projects (existing PROJECT.md).
Usage: `/gsd:new-milestone "v2.0 Features"`
Usage: `/gsd:new-milestone --reset-phase-numbers "v2.0 Features"`
Usage: `/gsd-new-milestone "v2.0 Features"`
Usage: `/gsd-new-milestone --reset-phase-numbers "v2.0 Features"`
**`/gsd:complete-milestone <version>`**
**`/gsd-complete-milestone <version>`**
Archive completed milestone and prepare for next version.
- Creates MILESTONES.md entry with stats
@@ -226,11 +226,11 @@ Archive completed milestone and prepare for next version.
- Creates git tag for the release
- Prepares workspace for next version
Usage: `/gsd:complete-milestone 1.0.0`
Usage: `/gsd-complete-milestone 1.0.0`
### Progress Tracking
**`/gsd:progress`**
**`/gsd-progress`**
Check project status and intelligently route to next action.
- Shows visual progress bar and completion percentage
@@ -240,58 +240,58 @@ Check project status and intelligently route to next action.
- Offers to execute next plan or create it if missing
- Detects 100% milestone completion
Usage: `/gsd:progress`
Usage: `/gsd-progress`
### Session Management
**`/gsd:resume-work`**
**`/gsd-resume-work`**
Resume work from previous session with full context restoration.
- Reads STATE.md for project context
- Shows current position and recent progress
- Offers next actions based on project state
Usage: `/gsd:resume-work`
Usage: `/gsd-resume-work`
**`/gsd:pause-work`**
**`/gsd-pause-work`**
Create context handoff when pausing work mid-phase.
- Creates .continue-here file with current state
- Updates STATE.md session continuity section
- Captures in-progress work context
Usage: `/gsd:pause-work`
Usage: `/gsd-pause-work`
### Debugging
**`/gsd:debug [issue description]`**
**`/gsd-debug [issue description]`**
Systematic debugging with persistent state across context resets.
- Gathers symptoms through adaptive questioning
- Creates `.planning/debug/[slug].md` to track investigation
- Investigates using scientific method (evidence → hypothesis → test)
- Survives `/clear` — run `/gsd:debug` with no args to resume
- Survives `/clear` — run `/gsd-debug` with no args to resume
- Archives resolved issues to `.planning/debug/resolved/`
Usage: `/gsd:debug "login button doesn't work"`
Usage: `/gsd:debug` (resume active session)
Usage: `/gsd-debug "login button doesn't work"`
Usage: `/gsd-debug` (resume active session)
### Spiking & Sketching
**`/gsd:spike [idea] [--quick]`**
**`/gsd-spike [idea] [--quick]`**
Rapidly spike an idea with throwaway experiments to validate feasibility.
- Decomposes idea into 2-5 focused experiments (risk-ordered)
- Each spike answers one specific Given/When/Then question
- Builds minimum code, runs it, captures verdict (VALIDATED/INVALIDATED/PARTIAL)
- Saves to `.planning/spikes/` with MANIFEST.md tracking
- Does not require `/gsd:new-project` — works in any repo
- Does not require `/gsd-new-project` — works in any repo
- `--quick` skips decomposition, builds immediately
Usage: `/gsd:spike "can we stream LLM output over WebSockets?"`
Usage: `/gsd:spike --quick "test if pdfjs extracts tables"`
Usage: `/gsd-spike "can we stream LLM output over WebSockets?"`
Usage: `/gsd-spike --quick "test if pdfjs extracts tables"`
**`/gsd:sketch [idea] [--quick]`**
**`/gsd-sketch [idea] [--quick]`**
Rapidly sketch UI/design ideas using throwaway HTML mockups with multi-variant exploration.
- Conversational mood/direction intake before building
@@ -299,13 +299,13 @@ Rapidly sketch UI/design ideas using throwaway HTML mockups with multi-variant e
- User compares variants, cherry-picks elements, iterates
- Shared CSS theme system compounds across sketches
- Saves to `.planning/sketches/` with MANIFEST.md tracking
- Does not require `/gsd:new-project` — works in any repo
- Does not require `/gsd-new-project` — works in any repo
- `--quick` skips mood intake, jumps to building
Usage: `/gsd:sketch "dashboard layout for the admin panel"`
Usage: `/gsd:sketch --quick "form card grouping"`
Usage: `/gsd-sketch "dashboard layout for the admin panel"`
Usage: `/gsd-sketch --quick "form card grouping"`
**`/gsd:spike-wrap-up`**
**`/gsd-spike-wrap-up`**
Package spike findings into a persistent project skill.
- Curates each spike one-at-a-time (include/exclude/partial/UAT)
@@ -314,9 +314,9 @@ Package spike findings into a persistent project skill.
- Writes summary to `.planning/spikes/WRAP-UP-SUMMARY.md`
- Adds auto-load routing line to project CLAUDE.md
Usage: `/gsd:spike-wrap-up`
Usage: `/gsd-spike-wrap-up`
**`/gsd:sketch-wrap-up`**
**`/gsd-sketch-wrap-up`**
Package sketch design findings into a persistent project skill.
- Curates each sketch one-at-a-time (include/exclude/partial/revisit)
@@ -325,11 +325,11 @@ Package sketch design findings into a persistent project skill.
- Writes summary to `.planning/sketches/WRAP-UP-SUMMARY.md`
- Adds auto-load routing line to project CLAUDE.md
Usage: `/gsd:sketch-wrap-up`
Usage: `/gsd-sketch-wrap-up`
### Quick Notes
**`/gsd:note <text>`**
**`/gsd-note <text>`**
Zero-friction idea capture — one command, instant save, no questions.
- Saves timestamped note to `.planning/notes/` (or `~/.claude/notes/` globally)
@@ -337,14 +337,14 @@ Zero-friction idea capture — one command, instant save, no questions.
- Promote converts a note into a structured todo
- Works without a project (falls back to global scope)
Usage: `/gsd:note refactor the hook system`
Usage: `/gsd:note list`
Usage: `/gsd:note promote 3`
Usage: `/gsd:note --global cross-project idea`
Usage: `/gsd-note refactor the hook system`
Usage: `/gsd-note list`
Usage: `/gsd-note promote 3`
Usage: `/gsd-note --global cross-project idea`
### Todo Management
**`/gsd:add-todo [description]`**
**`/gsd-add-todo [description]`**
Capture idea or task as todo from current conversation.
- Extracts context from conversation (or uses provided description)
@@ -353,24 +353,24 @@ Capture idea or task as todo from current conversation.
- Checks for duplicates before creating
- Updates STATE.md todo count
Usage: `/gsd:add-todo` (infers from conversation)
Usage: `/gsd:add-todo Add auth token refresh`
Usage: `/gsd-add-todo` (infers from conversation)
Usage: `/gsd-add-todo Add auth token refresh`
**`/gsd:check-todos [area]`**
**`/gsd-check-todos [area]`**
List pending todos and select one to work on.
- Lists all pending todos with title, area, age
- Optional area filter (e.g., `/gsd:check-todos api`)
- Optional area filter (e.g., `/gsd-check-todos api`)
- Loads full context for selected todo
- Routes to appropriate action (work now, add to phase, brainstorm)
- Moves todo to done/ when work begins
Usage: `/gsd:check-todos`
Usage: `/gsd:check-todos api`
Usage: `/gsd-check-todos`
Usage: `/gsd-check-todos api`
### User Acceptance Testing
**`/gsd:verify-work [phase]`**
**`/gsd-verify-work [phase]`**
Validate built features through conversational UAT.
- Extracts testable deliverables from SUMMARY.md files
@@ -378,11 +378,11 @@ Validate built features through conversational UAT.
- Automatically diagnoses failures and creates fix plans
- Ready for re-execution if issues found
Usage: `/gsd:verify-work 3`
Usage: `/gsd-verify-work 3`
### Ship Work
**`/gsd:ship [phase]`**
**`/gsd-ship [phase]`**
Create a PR from completed phase work with an auto-generated body.
- Pushes branch to remote
@@ -392,57 +392,57 @@ Create a PR from completed phase work with an auto-generated body.
Prerequisites: Phase verified, `gh` CLI installed and authenticated.
Usage: `/gsd:ship 4` or `/gsd:ship 4 --draft`
Usage: `/gsd-ship 4` or `/gsd-ship 4 --draft`
---
**`/gsd:review --phase N [--gemini] [--claude] [--codex] [--coderabbit] [--opencode] [--qwen] [--cursor] [--all]`**
**`/gsd-review --phase N [--gemini] [--claude] [--codex] [--coderabbit] [--opencode] [--qwen] [--cursor] [--all]`**
Cross-AI peer review — invoke external AI CLIs to independently review phase plans.
- Detects available CLIs (gemini, claude, codex, coderabbit)
- Each CLI reviews plans independently with the same structured prompt
- CodeRabbit reviews the current git diff (not a prompt) — may take up to 5 minutes
- Produces REVIEWS.md with per-reviewer feedback and consensus summary
- Feed reviews back into planning: `/gsd:plan-phase N --reviews`
- Feed reviews back into planning: `/gsd-plan-phase N --reviews`
Usage: `/gsd:review --phase 3 --all`
Usage: `/gsd-review --phase 3 --all`
---
**`/gsd:pr-branch [target]`**
**`/gsd-pr-branch [target]`**
Create a clean branch for pull requests by filtering out .planning/ commits.
- Classifies commits: code-only (include), planning-only (exclude), mixed (include sans .planning/)
- Cherry-picks code commits onto a clean branch
- Reviewers see only code changes, no GSD artifacts
Usage: `/gsd:pr-branch` or `/gsd:pr-branch main`
Usage: `/gsd-pr-branch` or `/gsd-pr-branch main`
---
**`/gsd:plant-seed [idea]`**
**`/gsd-plant-seed [idea]`**
Capture a forward-looking idea with trigger conditions for automatic surfacing.
- Seeds preserve WHY, WHEN to surface, and breadcrumbs to related code
- Auto-surfaces during `/gsd:new-milestone` when trigger conditions match
- Auto-surfaces during `/gsd-new-milestone` when trigger conditions match
- Better than deferred items — triggers are checked, not forgotten
Usage: `/gsd:plant-seed "add real-time notifications when we build the events system"`
Usage: `/gsd-plant-seed "add real-time notifications when we build the events system"`
---
**`/gsd:audit-uat`**
**`/gsd-audit-uat`**
Cross-phase audit of all outstanding UAT and verification items.
- Scans every phase for pending, skipped, blocked, and human_needed items
- Cross-references against codebase to detect stale documentation
- Produces prioritized human test plan grouped by testability
- Use before starting a new milestone to clear verification debt
Usage: `/gsd:audit-uat`
Usage: `/gsd-audit-uat`
### Milestone Auditing
**`/gsd:audit-milestone [version]`**
**`/gsd-audit-milestone [version]`**
Audit milestone completion against original intent.
- Reads all phase VERIFICATION.md files
@@ -450,30 +450,30 @@ Audit milestone completion against original intent.
- Spawns integration checker for cross-phase wiring
- Creates MILESTONE-AUDIT.md with gaps and tech debt
Usage: `/gsd:audit-milestone`
Usage: `/gsd-audit-milestone`
**`/gsd:plan-milestone-gaps`**
**`/gsd-plan-milestone-gaps`**
Create phases to close gaps identified by audit.
- Reads MILESTONE-AUDIT.md and groups gaps into phases
- Prioritizes by requirement priority (must/should/nice)
- Adds gap closure phases to ROADMAP.md
- Ready for `/gsd:plan-phase` on new phases
- Ready for `/gsd-plan-phase` on new phases
Usage: `/gsd:plan-milestone-gaps`
Usage: `/gsd-plan-milestone-gaps`
### Configuration
**`/gsd:settings`**
**`/gsd-settings`**
Configure workflow toggles and model profile interactively.
- Toggle researcher, plan checker, verifier agents
- Select model profile (quality/balanced/budget/inherit)
- Updates `.planning/config.json`
Usage: `/gsd:settings`
Usage: `/gsd-settings`
**`/gsd:set-profile <profile>`**
**`/gsd-set-profile <profile>`**
Quick switch model profile for GSD agents.
- `quality` — Opus everywhere except verification
@@ -481,11 +481,11 @@ Quick switch model profile for GSD agents.
- `budget` — Sonnet for writing, Haiku for research/verification
- `inherit` — Use current session model for all agents (OpenCode `/model`)
Usage: `/gsd:set-profile budget`
Usage: `/gsd-set-profile budget`
### Utility Commands
**`/gsd:cleanup`**
**`/gsd-cleanup`**
Archive accumulated phase directories from completed milestones.
- Identifies phases from completed milestones still in `.planning/phases/`
@@ -493,12 +493,12 @@ Archive accumulated phase directories from completed milestones.
- Moves phase dirs to `.planning/milestones/v{X.Y}-phases/`
- Use after multiple milestones to reduce `.planning/phases/` clutter
Usage: `/gsd:cleanup`
Usage: `/gsd-cleanup`
**`/gsd:help`**
**`/gsd-help`**
Show this command reference.
**`/gsd:update`**
**`/gsd-update`**
Update GSD to latest version with changelog preview.
- Shows installed vs latest version comparison
@@ -507,15 +507,15 @@ Update GSD to latest version with changelog preview.
- Confirms before running install
- Better than raw `npx get-shit-done-cc`
Usage: `/gsd:update`
Usage: `/gsd-update`
**`/gsd:join-discord`**
**`/gsd-join-discord`**
Join the GSD Discord community.
- Get help, share what you're building, stay updated
- Connect with other GSD users
Usage: `/gsd:join-discord`
Usage: `/gsd-join-discord`
## Files & Structure
@@ -529,10 +529,10 @@ Usage: `/gsd:join-discord`
├── todos/ # Captured ideas and tasks
│ ├── pending/ # Todos waiting to be worked on
│ └── done/ # Completed todos
├── spikes/ # Spike experiments (/gsd:spike)
├── spikes/ # Spike experiments (/gsd-spike)
│ ├── MANIFEST.md # Spike inventory and verdicts
│ └── NNN-name/ # Individual spike directories
├── sketches/ # Design sketches (/gsd:sketch)
├── sketches/ # Design sketches (/gsd-sketch)
│ ├── MANIFEST.md # Sketch inventory and winners
│ ├── themes/ # Shared CSS theme files
│ └── NNN-name/ # Individual sketch directories (HTML + README)
@@ -541,7 +541,7 @@ Usage: `/gsd:join-discord`
├── milestones/
│ ├── v1.0-ROADMAP.md # Archived roadmap snapshot
│ ├── v1.0-REQUIREMENTS.md # Archived requirements
│ └── v1.0-phases/ # Archived phase dirs (via /gsd:cleanup or --archive-phases)
│ └── v1.0-phases/ # Archived phase dirs (via /gsd-cleanup or --archive-phases)
│ ├── 01-foundation/
│ └── 02-core-features/
├── codebase/ # Codebase map (brownfield projects)
@@ -563,7 +563,7 @@ Usage: `/gsd:join-discord`
## Workflow Modes
Set during `/gsd:new-project`:
Set during `/gsd-new-project`:
**Interactive Mode**
@@ -611,51 +611,51 @@ Example config:
**Starting a new project:**
```
/gsd:new-project # Unified flow: questioning → research → requirements → roadmap
/gsd-new-project # Unified flow: questioning → research → requirements → roadmap
/clear
/gsd:plan-phase 1 # Create plans for first phase
/gsd-plan-phase 1 # Create plans for first phase
/clear
/gsd:execute-phase 1 # Execute all plans in phase
/gsd-execute-phase 1 # Execute all plans in phase
```
**Resuming work after a break:**
```
/gsd:progress # See where you left off and continue
/gsd-progress # See where you left off and continue
```
**Adding urgent mid-milestone work:**
```
/gsd:insert-phase 5 "Critical security fix"
/gsd:plan-phase 5.1
/gsd:execute-phase 5.1
/gsd-insert-phase 5 "Critical security fix"
/gsd-plan-phase 5.1
/gsd-execute-phase 5.1
```
**Completing a milestone:**
```
/gsd:complete-milestone 1.0.0
/gsd-complete-milestone 1.0.0
/clear
/gsd:new-milestone # Start next milestone (questioning → research → requirements → roadmap)
/gsd-new-milestone # Start next milestone (questioning → research → requirements → roadmap)
```
**Capturing ideas during work:**
```
/gsd:add-todo # Capture from conversation context
/gsd:add-todo Fix modal z-index # Capture with explicit description
/gsd:check-todos # Review and work on todos
/gsd:check-todos api # Filter by area
/gsd-add-todo # Capture from conversation context
/gsd-add-todo Fix modal z-index # Capture with explicit description
/gsd-check-todos # Review and work on todos
/gsd-check-todos api # Filter by area
```
**Debugging an issue:**
```
/gsd:debug "form submission fails silently" # Start debug session
/gsd-debug "form submission fails silently" # Start debug session
# ... investigation happens, context fills up ...
/clear
/gsd:debug # Resume from where you left off
/gsd-debug # Resume from where you left off
```
## Getting Help
@@ -663,5 +663,5 @@ Example config:
- Read `.planning/PROJECT.md` for project vision
- Read `.planning/STATE.md` for current context
- Check `.planning/ROADMAP.md` for phase status
- Run `/gsd:progress` to check where you're up to
- Run `/gsd-progress` to check where you're up to
</reference>

View File

@@ -32,7 +32,7 @@ Parse `$ARGUMENTS` to determine the execution mode:
- If neither flag is found: display usage and exit:
```
Usage: /gsd:import --from <path>
Usage: /gsd-import --from <path>
--from <path> Import an external plan file into GSD format
```

View File

@@ -370,10 +370,10 @@ Next steps:
<offer_next>
After triage:
- /gsd:review — Run cross-AI peer review on a specific phase plan
- /gsd:ship — Create a PR from completed work
- /gsd:progress — See overall project state
- /gsd:inbox --label — Re-run with auto-labeling enabled
- /gsd-review — Run cross-AI peer review on a specific phase plan
- /gsd-ship — Create a PR from completed work
- /gsd-progress — See overall project state
- /gsd-inbox --label — Re-run with auto-labeling enabled
</offer_next>
<success_criteria>

View File

@@ -122,7 +122,7 @@ De-duplicate the union (a file matched by multiple patterns is one doc).
```
GSD > Discovered {N} docs, which exceeds the v1 cap of 50.
Use --manifest to narrow the set to ≤ 50 files, or run
/gsd:ingest-docs again with a narrower <path>.
/gsd-ingest-docs again with a narrower <path>.
```
Exit without proceeding.
@@ -309,7 +309,7 @@ Show:
- Docs ingested (count + type breakdown)
- Decisions locked, requirements created, constraints captured
- Conflict report path (`.planning/INGEST-CONFLICTS.md`)
- Next step: `/gsd:plan-phase 1` (new mode) or `/gsd:plan-phase N` (merge, pointing at the first newly-added phase)
- Next step: `/gsd-plan-phase 1` (new mode) or `/gsd-plan-phase N` (merge, pointing at the first newly-added phase)
</step>

View File

@@ -13,7 +13,7 @@ Parse the command arguments:
- First argument: integer phase number to insert after
- Remaining arguments: phase description
Example: `/gsd:insert-phase 72 Fix critical auth bug`
Example: `/gsd-insert-phase 72 Fix critical auth bug`
-> after = 72
-> description = "Fix critical auth bug"
@@ -21,8 +21,8 @@ If arguments missing:
```
ERROR: Both phase number and description required
Usage: /gsd:insert-phase <after> <description>
Example: /gsd:insert-phase 72 Fix critical auth bug
Usage: /gsd-insert-phase <after> <description>
Example: /gsd-insert-phase 72 Fix critical auth bug
```
Exit.
@@ -71,7 +71,7 @@ blocks direct STATE.md writes):
`{decimal_phase}`:
```bash
gsd-sdk query state.patch '{"Current Phase":"{decimal_phase}","Next recommended run":"/gsd:plan-phase {decimal_phase}"}'
gsd-sdk query state.patch '{"Current Phase":"{decimal_phase}","Next recommended run":"/gsd-plan-phase {decimal_phase}"}'
```
(Adjust field names to whatever pointers STATE.md exposes — the handler
@@ -115,7 +115,7 @@ Project state updated: .planning/STATE.md
`/clear` then:
`/gsd:plan-phase {decimal_phase}`
`/gsd-plan-phase {decimal_phase}`
---
@@ -131,11 +131,11 @@ Project state updated: .planning/STATE.md
<anti_patterns>
- Don't use this for planned work at end of milestone (use /gsd:add-phase)
- Don't use this for planned work at end of milestone (use /gsd-add-phase)
- Don't insert before Phase 1 (decimal 0.1 makes no sense)
- Don't renumber existing phases
- Don't modify the target phase content
- Don't create plans yet (that's /gsd:plan-phase)
- Don't create plans yet (that's /gsd-plan-phase)
- Don't commit changes (user decides when to commit)
</anti_patterns>

View File

@@ -14,8 +14,8 @@ Phase number: $ARGUMENTS (required)
```
Error: Phase number required.
Usage: /gsd:list-phase-assumptions [phase-number]
Example: /gsd:list-phase-assumptions 3
Usage: /gsd-list-phase-assumptions [phase-number]
Example: /gsd-list-phase-assumptions 3
```
Exit workflow.
@@ -153,8 +153,8 @@ Present next steps:
```
What's next?
1. Discuss context (/gsd:discuss-phase ${PHASE}) - Let me ask you questions to build comprehensive context
2. Plan this phase (/gsd:plan-phase ${PHASE}) - Create detailed execution plans
1. Discuss context (/gsd-discuss-phase ${PHASE}) - Let me ask you questions to build comprehensive context
2. Plan this phase (/gsd-plan-phase ${PHASE}) - Create detailed execution plans
3. Re-examine assumptions - I'll analyze again with your corrections
4. Done for now
```

View File

@@ -25,7 +25,7 @@ Parse JSON for: `workspace_base`, `workspaces`, `workspace_count`.
No workspaces found in ~/gsd-workspaces/
Create one with:
/gsd:new-workspace --name my-workspace --repos repo1,repo2
/gsd-new-workspace --name my-workspace --repos repo1,repo2
```
Done.
@@ -44,7 +44,7 @@ GSD Workspaces (~/gsd-workspaces/)
Manage:
cd ~/gsd-workspaces/<name> # Enter a workspace
/gsd:remove-workspace <name> # Remove a workspace
/gsd-remove-workspace <name> # Remove a workspace
```
For each workspace, show:

View File

@@ -26,7 +26,7 @@ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed_count`, `in_progress_count`, `phases`, `recommended_actions`, `all_complete`, `waiting_signal`, `manager_flags`, and the optional trio `queued_milestone_version`, `queued_milestone_name`, `queued_phases` (added in SDK fix `2495-2496-2497` — may be absent on older SDK versions, treat missing as empty).
`manager_flags` contains per-step passthrough flags from config:
- `manager_flags.discuss` — appended to `/gsd:discuss-phase` args (e.g. `"--auto --analyze"`)
- `manager_flags.discuss` — appended to `/gsd-discuss-phase` args (e.g. `"--auto --analyze"`)
- `manager_flags.plan` — appended to plan agent init command
- `manager_flags.execute` — appended to execute agent init command
@@ -135,8 +135,8 @@ If `all_complete` is true:
╚══════════════════════════════════════════════════════════════╝
All {phase_count} phases done. Ready for final steps:
→ /gsd:verify-work — run acceptance testing
→ /gsd:complete-milestone — archive and wrap up
→ /gsd-verify-work — run acceptance testing
→ /gsd-complete-milestone — archive and wrap up
```
@@ -359,11 +359,11 @@ Display final status with progress bar:
{milestone_version} — {milestone_name}
{PROGRESS_BAR} {progress_pct}% ({completed_count}/{phase_count} phases)
Resume anytime: /gsd:manager
Resume anytime: /gsd-manager
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
```
**Note:** Any background agents still running will continue to completion. Their results will be visible on next `/gsd:manager` or `/gsd:progress` invocation.
**Note:** Any background agents still running will continue to completion. Their results will be visible on next `/gsd-manager` or `/gsd-progress` invocation.
</step>

View File

@@ -29,8 +29,8 @@ Documents are reference material for Claude when planning/executing. Always incl
<step name="parse_paths_flag" priority="first">
Parse an optional `--paths <p1,p2,...>` argument. When supplied (by the
post-execute codebase-drift gate in `/gsd:execute-phase` or by a user running
`/gsd:map-codebase --paths apps/accounting,packages/ui`), the workflow
post-execute codebase-drift gate in `/gsd-execute-phase` or by a user running
`/gsd-map-codebase --paths apps/accounting,packages/ui`), the workflow
operates in **incremental-remap mode**:
- Pass `--paths <p1>,<p2>,...` through to each spawned `gsd-codebase-mapper`
@@ -413,12 +413,12 @@ Created .planning/codebase/:
`/clear` then:
`/gsd:new-project`
`/gsd-new-project`
---
**Also available:**
- Re-run mapping: `/gsd:map-codebase`
- Re-run mapping: `/gsd-map-codebase`
- Review specific file: `cat .planning/codebase/STACK.md`
- Edit any document before proceeding

View File

@@ -15,7 +15,7 @@ If `$ARGUMENTS` is empty:
1. Check `.planning/STATE.md` for current milestone version
2. Check `.planning/milestones/` for the latest archived version
3. If neither found, check if `.planning/ROADMAP.md` exists (project may be mid-milestone)
4. If nothing found: error "No milestone found. Run /gsd:new-project or /gsd:new-milestone first."
4. If nothing found: error "No milestone found. Run /gsd-new-project or /gsd-new-milestone first."
Set `VERSION` to the resolved version (e.g., "1.0").
@@ -212,7 +212,7 @@ If the user asks questions:
- Stay grounded in what was actually built (not speculation)
If the user is done:
- Suggest next steps: `/gsd:new-milestone`, `/gsd:progress`, or sharing the summary with the team
- Suggest next steps: `/gsd-new-milestone`, `/gsd-progress`, or sharing the summary with the team
## Step 9: Update STATE.md

View File

@@ -164,7 +164,7 @@ This document evolves at phase transitions and milestone boundaries.
4. Decisions to log? → Add to Key Decisions
5. "What This Is" still accurate? → Update if drifted
**After each milestone** (via `/gsd:complete-milestone`):
**After each milestone** (via `/gsd-complete-milestone`):
1. Full review of all sections
2. Core Value check — still the right priority?
3. Audit Out of Scope — reasons still valid?
@@ -259,7 +259,7 @@ Then verify `.planning/phases/` no longer contains old milestone directories bef
If `phase_dir_count > 0` but `phase_archive_path` is missing:
- Stop and explain that reset numbering is unsafe without a completed milestone archive target.
- Tell the user to complete/archive the previous milestone first, then rerun `/gsd:new-milestone --reset-phase-numbers ${GSD_WS}`.
- Tell the user to complete/archive the previous milestone first, then rerun `/gsd-new-milestone --reset-phase-numbers ${GSD_WS}`.
## 8. Research Decision
@@ -277,7 +277,7 @@ AskUserQuestion: "Research the domain ecosystem for new features before defining
- "Skip research (current default)" — Go straight to requirements
- "Research first" — Discover patterns, features, architecture for NEW capabilities
**IMPORTANT:** Do NOT persist this choice to config.json. The `workflow.research` setting is a persistent user preference that controls plan-phase behavior across the project. Changing it here would silently alter future `/gsd:plan-phase` behavior. To change the default, use `/gsd:settings`.
**IMPORTANT:** Do NOT persist this choice to config.json. The `workflow.research` setting is a persistent user preference that controls plan-phase behavior across the project. Changing it here would silently alter future `/gsd-plan-phase` behavior. To change the default, use `/gsd-settings`.
**If user chose "Research first":**
@@ -601,9 +601,9 @@ Print a summary:
`/clear` then:
`/gsd:discuss-phase [N] ${GSD_WS}` — gather context and clarify approach
`/gsd-discuss-phase [N] ${GSD_WS}` — gather context and clarify approach
Also: `/gsd:plan-phase [N] ${GSD_WS}` — skip discussion, plan directly
Also: `/gsd-plan-phase [N] ${GSD_WS}` — skip discussion, plan directly
```
</process>
@@ -621,7 +621,7 @@ Also: `/gsd:plan-phase [N] ${GSD_WS}` — skip discussion, plan directly
- [ ] Phase numbering mode respected (continued or reset)
- [ ] All commits made (if planning docs committed)
- [ ] Pending todos scanned for phase matches; matched todos tagged with `resolves_phase: N`
- [ ] User knows next step: `/gsd:discuss-phase [N] ${GSD_WS}`
- [ ] User knows next step: `/gsd-discuss-phase [N] ${GSD_WS}`
**Atomic commits:** Each phase commits its artifacts immediately.
</success_criteria>

View File

@@ -33,7 +33,7 @@ Check if `--auto` flag is present in $ARGUMENTS.
**Document requirement:**
Auto mode requires an idea document — either:
- File reference: `/gsd:new-project --auto @prd.md`
- File reference: `/gsd-new-project --auto @prd.md`
- Pasted/written text in the prompt
If no document content provided, error:
@@ -42,8 +42,8 @@ If no document content provided, error:
Error: --auto requires an idea document.
Usage:
/gsd:new-project --auto @your-idea.md
/gsd:new-project --auto [paste or write your idea here]
/gsd-new-project --auto @your-idea.md
/gsd-new-project --auto [paste or write your idea here]
The document should describe what you want to build.
```
@@ -103,7 +103,7 @@ if [ "$RUNTIME" = "codex" ]; then INSTRUCTION_FILE="AGENTS.md"; else INSTRUCTION
All subsequent references to the project instruction file use `$INSTRUCTION_FILE`.
**If `project_exists` is true:** Error — project already initialized. Use `/gsd:progress`.
**If `project_exists` is true:** Error — project already initialized. Use `/gsd-progress`.
**If `has_git` is false:** Initialize git:
@@ -124,13 +124,13 @@ Use AskUserQuestion:
- header: "Codebase"
- question: "I detected existing code in this directory. Would you like to map the codebase first?"
- options:
- "Map codebase first" — Run /gsd:map-codebase to understand existing architecture (Recommended)
- "Map codebase first" — Run /gsd-map-codebase to understand existing architecture (Recommended)
- "Skip mapping" — Proceed with project initialization
**If "Map codebase first":**
```
Run `/gsd:map-codebase` first, then return to `/gsd:new-project`
Run `/gsd-map-codebase` first, then return to `/gsd-new-project`
```
Exit command.
@@ -269,8 +269,8 @@ If any of these exist, surface them before questioning:
⚡ Prior exploration detected:
{if SPIKE_SKILL} ✓ Spike findings skill: {path} — validated patterns from experiments
{if SKETCH_SKILL} ✓ Sketch findings skill: {path} — validated design decisions
{if HAS_SPIKES && !SPIKE_SKILL} ◆ Raw spikes in .planning/spikes/ — consider `/gsd:spike-wrap-up` to package findings
{if HAS_SKETCHES && !SKETCH_SKILL} ◆ Raw sketches in .planning/sketches/ — consider `/gsd:sketch-wrap-up` to package findings
{if HAS_SPIKES && !SPIKE_SKILL} ◆ Raw spikes in .planning/spikes/ — consider `/gsd-spike-wrap-up` to package findings
{if HAS_SKETCHES && !SKETCH_SKILL} ◆ Raw sketches in .planning/sketches/ — consider `/gsd-sketch-wrap-up` to package findings
These findings will be incorporated into project context and available to planning agents.
```
@@ -434,7 +434,7 @@ This document evolves at phase transitions and milestone boundaries.
4. Decisions to log? → Add to Key Decisions
5. "What This Is" still accurate? → Update if drifted
**After each milestone** (via `/gsd:complete-milestone`):
**After each milestone** (via `/gsd-complete-milestone`):
1. Full review of all sections
2. Core Value check — still the right priority?
3. Audit Out of Scope — reasons still valid?
@@ -652,7 +652,7 @@ mkdir -p .planning
gsd-sdk query config-new-project '{"mode":"[yolo|interactive]","granularity":"[selected]","parallelization":true|false,"commit_docs":true|false,"model_profile":"quality|balanced|budget|inherit","workflow":{"research":true|false,"plan_check":true|false,"verifier":true|false,"nyquist_validation":[false if granularity=coarse, true otherwise]}}'
```
**Note:** Run `/gsd:settings` anytime to update model profile, workflow agents, branching strategy, and other preferences.
**Note:** Run `/gsd-settings` anytime to update model profile, workflow agents, branching strategy, and other preferences.
**If commit_docs = No:**
@@ -1292,7 +1292,7 @@ Present completion summary:
╚══════════════════════════════════════════╝
```
Exit skill and invoke SlashCommand("/gsd:discuss-phase 1 --auto")
Exit skill and invoke SlashCommand("/gsd-discuss-phase 1 --auto")
**If interactive mode:**
@@ -1314,13 +1314,13 @@ PHASE1_HAS_UI=$(echo "$PHASE1_SECTION" | grep -qi "UI hint.*yes" && echo "true"
/clear then:
/gsd:discuss-phase 1 — gather context and clarify approach
/gsd-discuss-phase 1 — gather context and clarify approach
---
**Also available:**
- /gsd:ui-phase 1 — generate UI design contract (recommended for frontend phases)
- /gsd:plan-phase 1 — skip discussion, plan directly
- /gsd-ui-phase 1 — generate UI design contract (recommended for frontend phases)
- /gsd-plan-phase 1 — skip discussion, plan directly
───────────────────────────────────────────────────────────────
```
@@ -1336,12 +1336,12 @@ PHASE1_HAS_UI=$(echo "$PHASE1_SECTION" | grep -qi "UI hint.*yes" && echo "true"
/clear then:
/gsd:discuss-phase 1 — gather context and clarify approach
/gsd-discuss-phase 1 — gather context and clarify approach
---
**Also available:**
- /gsd:plan-phase 1 — skip discussion, plan directly
- /gsd-plan-phase 1 — skip discussion, plan directly
───────────────────────────────────────────────────────────────
```
@@ -1384,7 +1384,7 @@ PHASE1_HAS_UI=$(echo "$PHASE1_SECTION" | grep -qi "UI hint.*yes" && echo "true"
- [ ] STATE.md initialized
- [ ] REQUIREMENTS.md traceability updated
- [ ] `$INSTRUCTION_FILE` generated with GSD workflow guidance (AGENTS.md for Codex, CLAUDE.md otherwise)
- [ ] User knows next step is `/gsd:discuss-phase 1`
- [ ] User knows next step is `/gsd-discuss-phase 1`
**Atomic commits:** Each phase commits its artifacts immediately. If context is lost, artifacts persist.

View File

@@ -73,7 +73,7 @@ Error:
No git repos found in the current directory and this is not a git repo.
Run this command from a directory containing git repos, or specify repos explicitly:
/gsd:new-workspace --name my-workspace --repos /path/to/repo1,/path/to/repo2
/gsd-new-workspace --name my-workspace --repos /path/to/repo1,/path/to/repo2
```
Exit.
@@ -84,7 +84,7 @@ Error:
Error: --auto requires --repos to specify which repos to include.
Usage:
/gsd:new-workspace --name my-workspace --repos repo1,repo2 --auto
/gsd-new-workspace --name my-workspace --repos repo1,repo2 --auto
```
Exit.
@@ -203,7 +203,7 @@ Workspace created: $TARGET_PATH
Next steps:
cd "$TARGET_PATH"
/gsd:new-project # Initialize GSD in the workspace
/gsd-new-project # Initialize GSD in the workspace
```
**If some repos failed:**
@@ -216,7 +216,7 @@ Workspace created with $SUCCESS_COUNT of $TOTAL_COUNT repos: $TARGET_PATH
Next steps:
cd "$TARGET_PATH"
/gsd:new-project # Initialize GSD in the workspace
/gsd-new-project # Initialize GSD in the workspace
```
**Offer to initialize GSD (if not `--auto`):**
@@ -225,7 +225,7 @@ Use AskUserQuestion:
- header: "Initialize GSD"
- question: "Would you like to initialize a GSD project in the new workspace?"
- options:
- "Yes — run /gsd:new-project" → tell user to `cd "$TARGET_PATH"` first, then run `/gsd:new-project`
- "Yes — run /gsd-new-project" → tell user to `cd "$TARGET_PATH"` first, then run `/gsd-new-project`
- "No — I'll set it up later" → done
</process>

View File

@@ -29,7 +29,7 @@ Extract:
If no `.planning/` directory exists:
```
No GSD project detected. Run `/gsd:new-project` to get started.
No GSD project detected. Run `/gsd-new-project` to get started.
```
Exit.
</step>
@@ -65,7 +65,7 @@ If found:
⛔ Hard stop: Project in error state
STATE.md shows status: {status}. Resolve the error before advancing.
Run `/gsd:health` to diagnose, or manually fix STATE.md.
Run `/gsd-health` to diagnose, or manually fix STATE.md.
Use `--force` to bypass this check.
```
Exit.
@@ -121,7 +121,7 @@ Choice [S]:
**Goal:** Resolve plans that ran without producing summaries during Phase {src} execution
**Source phase:** {src}
**Deferred at:** {date} during /gsd:next advancement to Phase {dest}
**Deferred at:** {date} during /gsd-next advancement to Phase {dest}
**Plans:**
- [ ] {N}-{M}: {slug} (ran, no SUMMARY.md)
```
@@ -151,7 +151,7 @@ If either count is > 0, display before routing:
{PENDING_SPIKES} spike(s) with unresolved verdicts in .planning/spikes/
{PENDING_SKETCHES} sketch(es) without a winning variant in .planning/sketches/
Resume with `/gsd:spike` or `/gsd:sketch`, or continue with phase work below.
Resume with `/gsd-spike` or `/gsd-sketch`, or continue with phase work below.
```
Only show lines for non-zero counts. If both are 0, skip this notice entirely.
@@ -162,35 +162,35 @@ Apply routing rules based on state:
**Route 1: No phases exist yet → discuss**
If ROADMAP has phases but no phase directories exist on disk:
→ Next action: `/gsd:discuss-phase <first-phase>`
→ Next action: `/gsd-discuss-phase <first-phase>`
**Route 2: Phase exists but has no CONTEXT.md or RESEARCH.md → discuss**
If the current phase directory exists but has neither CONTEXT.md nor RESEARCH.md:
→ Next action: `/gsd:discuss-phase <current-phase>`
→ Next action: `/gsd-discuss-phase <current-phase>`
**Route 3: Phase has context but no plans → plan**
If the current phase has CONTEXT.md (or RESEARCH.md) but no PLAN.md files:
→ Next action: `/gsd:plan-phase <current-phase>`
→ Next action: `/gsd-plan-phase <current-phase>`
**Route 4: Phase has plans but incomplete summaries → execute**
If plans exist but not all have matching summaries:
→ Next action: `/gsd:execute-phase <current-phase>`
→ Next action: `/gsd-execute-phase <current-phase>`
**Route 5: All plans have summaries → verify and complete**
If all plans in the current phase have summaries:
→ Next action: `/gsd:verify-work`
→ Next action: `/gsd-verify-work`
**Route 6: Phase complete, next phase exists → advance**
If the current phase is complete and the next phase exists in ROADMAP:
→ Next action: `/gsd:discuss-phase <next-phase>`
→ Next action: `/gsd-discuss-phase <next-phase>`
**Route 7: All phases complete → complete milestone**
If all phases are complete:
→ Next action: `/gsd:complete-milestone`
→ Next action: `/gsd-complete-milestone`
**Route 8: Paused → resume**
If STATE.md shows paused_at:
→ Next action: `/gsd:resume-work`
→ Next action: `/gsd-resume-work`
</step>
<step name="show_and_execute">
@@ -207,7 +207,7 @@ Display the determination:
```
Then immediately invoke the determined command via SlashCommand.
Do not ask for confirmation — the whole point of `/gsd:next` is zero-friction advancement.
Do not ask for confirmation — the whole point of `/gsd-next` is zero-friction advancement.
</step>
</process>

View File

@@ -45,7 +45,7 @@ promoted: false
| Arguments are empty (no text at all) | **list** |
| Anything else | **append** (the text IS the note) |
**Critical**: `list` is only a subcommand when it's the ENTIRE argument. `/gsd:note list of groceries` saves a note with text "list of groceries". Same for `promote` — only a subcommand when followed by exactly one number.
**Critical**: `list` is only a subcommand when it's the ENTIRE argument. `/gsd-note list of groceries` saves a note with text "list of groceries". Same for `promote` — only a subcommand when followed by exactly one number.
</step>
<step name="append">
@@ -89,7 +89,7 @@ Project (.planning/notes/):
Global (~/.claude/notes/):
4. [2026-02-08 10:00] cross-project idea about shared config
{count} active note(s). Use `/gsd:note promote <N>` to convert to a todo.
{count} active note(s). Use `/gsd-note promote <N>` to convert to a todo.
```
If a scope has no directory or no entries, show: `(no notes)`
@@ -101,7 +101,7 @@ If a scope has no directory or no entries, show: `(no notes)`
1. Run the **list** logic to build the numbered index (both scopes)
2. Find entry N from the numbered list
3. If N is invalid or refers to an already-promoted note, tell the user and stop
4. **Requires `.planning/` directory** — if it doesn't exist, warn: "Todos require a GSD project. Run `/gsd:new-project` to initialize one."
4. **Requires `.planning/` directory** — if it doesn't exist, warn: "Todos require a GSD project. Run `/gsd-new-project` to initialize one."
5. Ensure `.planning/todos/pending/` directory exists
6. Generate todo ID: `{NNN}-{slug}` where NNN is the next sequential number (scan both `.planning/todos/pending/` and `.planning/todos/completed/` for the highest existing number, increment by 1, zero-pad to 3 digits) and slug is the first ~4 meaningful words of the note text
7. Extract the note text from the source file (body after frontmatter)
@@ -112,7 +112,7 @@ If a scope has no directory or no entries, show: `(no notes)`
title: "{note text}"
status: pending
priority: P2
source: "promoted from /gsd:note"
source: "promoted from /gsd-note"
created: {YYYY-MM-DD}
theme: general
---
@@ -137,9 +137,9 @@ Promoted from quick note captured on {original date}.
</process>
<edge_cases>
1. **"list" as note text**: `/gsd:note list of things` saves note "list of things" (subcommand only when `list` is the entire arg)
1. **"list" as note text**: `/gsd-note list of things` saves note "list of things" (subcommand only when `list` is the entire arg)
2. **No `.planning/`**: Falls back to global `~/.claude/notes/` — works in any directory
3. **Promote without project**: Warns that todos require `.planning/`, suggests `/gsd:new-project`
3. **Promote without project**: Warns that todos require `.planning/`, suggests `/gsd-new-project`
4. **Large files**: `list` shows last 10 when >20 active entries
5. **Duplicate slugs**: Append `-2`, `-3` etc. to filename if slug already used on same date
6. **`--global` position**: Stripped from anywhere — `--global my idea` and `my idea --global` both save "my idea" globally

View File

@@ -1,5 +1,5 @@
<purpose>
Create structured `.planning/HANDOFF.json` and `.continue-here.md` handoff files to preserve complete work state across sessions. The JSON provides machine-readable state for `/gsd:resume-work`; the markdown provides human-readable context.
Create structured `.planning/HANDOFF.json` and `.continue-here.md` handoff files to preserve complete work state across sessions. The JSON provides machine-readable state for `/gsd-resume-work`; the markdown provides human-readable context.
</purpose>
<required_reading>
@@ -226,7 +226,7 @@ Current state:
- Blockers: [count] ({human_actions_pending count} need human action)
- Committed as WIP
To resume: /gsd:resume-work
To resume: /gsd-resume-work
```
</step>

View File

@@ -1,5 +1,5 @@
<purpose>
Create all phases necessary to close gaps identified by `/gsd:audit-milestone`. Reads MILESTONE-AUDIT.md, groups gaps into logical phases, creates phase entries in ROADMAP.md, and offers to plan each phase. One command creates all fix phases — no manual `/gsd:add-phase` per gap.
Create all phases necessary to close gaps identified by `/gsd-audit-milestone`. Reads MILESTONE-AUDIT.md, groups gaps into logical phases, creates phase entries in ROADMAP.md, and offers to plan each phase. One command creates all fix phases — no manual `/gsd-add-phase` per gap.
</purpose>
<required_reading>
@@ -22,7 +22,7 @@ Parse YAML frontmatter to extract structured gaps:
If no audit file exists or has no gaps, error:
```
No audit gaps found. Run `/gsd:audit-milestone` first.
No audit gaps found. Run `/gsd-audit-milestone` first.
```
## 2. Prioritize Gaps
@@ -165,20 +165,20 @@ gsd-sdk query commit "docs(roadmap): add gap closure phases {N}-{M}" .planning/R
`/clear` then:
`/gsd:plan-phase {N}`
`/gsd-plan-phase {N}`
---
**Also available:**
- `/gsd:execute-phase {N}` — if plans already exist
- `/gsd-execute-phase {N}` — if plans already exist
- `cat .planning/ROADMAP.md` — see updated roadmap
---
**After all gap phases complete:**
`/gsd:audit-milestone` — re-audit to verify gaps closed
`/gsd:complete-milestone {version}` — archive when audit passes
`/gsd-audit-milestone` — re-audit to verify gaps closed
`/gsd-complete-milestone {version}` — archive when audit passes
```
</process>
@@ -269,5 +269,5 @@ becomes:
- [ ] Coverage count updated in REQUIREMENTS.md
- [ ] Phase directories created
- [ ] Changes committed (includes REQUIREMENTS.md)
- [ ] User knows to run `/gsd:plan-phase` next
- [ ] User knows to run `/gsd-plan-phase` next
</success_criteria>

View File

@@ -50,7 +50,7 @@ Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_
**File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`, `reviews_path`. These are null if files don't exist.
**If `planning_exists` is false:** Error — run `/gsd:new-project` first.
**If `planning_exists` is false:** Error — run `/gsd-new-project` first.
## 2. Parse and Normalize Arguments
@@ -90,9 +90,9 @@ Error:
```
No REVIEWS.md found for Phase {N}. Run reviews first:
/gsd:review --phase {N}
/gsd-review --phase {N}
Then re-run /gsd:plan-phase {N} --reviews
Then re-run /gsd-plan-phase {N} --reviews
```
Exit workflow.
@@ -252,9 +252,9 @@ If "Run discuss-phase first":
does not work correctly in nested subcontexts (#1009). Instead, display the command
and exit so the user runs it as a top-level command:
```
Run this command first, then re-run /gsd:plan-phase {X} ${GSD_WS}:
Run this command first, then re-run /gsd-plan-phase {X} ${GSD_WS}:
/gsd:discuss-phase {X} ${GSD_WS}
/gsd-discuss-phase {X} ${GSD_WS}
```
**Exit the plan-phase workflow. Do not continue.**
@@ -277,19 +277,19 @@ echo "${phase_goal}" | grep -qi "agent\|llm\|rag\|chatbot\|embedding\|langchain\
**If AI keywords detected AND no AI-SPEC.md:**
```
◆ Note: This phase appears to involve AI system development.
Consider running /gsd:ai-integration-phase {N} before planning to:
Consider running /gsd-ai-integration-phase {N} before planning to:
- Select the right framework for your use case
- Research its docs and best practices
- Design an evaluation strategy
Continue planning without AI-SPEC? (non-blocking — /gsd:ai-integration-phase can be run after)
Continue planning without AI-SPEC? (non-blocking — /gsd-ai-integration-phase can be run after)
```
Use AskUserQuestion with options:
- "Continue — plan without AI-SPEC"
- "Stop — I'll run /gsd:ai-integration-phase {N} first"
- "Stop — I'll run /gsd-ai-integration-phase {N} first"
If "Stop": Exit with `/gsd:ai-integration-phase {N}` reminder.
If "Stop": Exit with `/gsd-ai-integration-phase {N}` reminder.
If "Continue": Proceed. (Non-blocking — planner will note AI-SPEC is absent.)
**If `AI_SPEC_FILE` is non-empty:** Extract framework for planner context:
@@ -362,7 +362,7 @@ Answer: "What do I need to know to PLAN this phase well?"
</objective>
<files_to_read>
- {context_path} (USER DECISIONS from /gsd:discuss-phase)
- {context_path} (USER DECISIONS from /gsd-discuss-phase)
- {requirements_path} (Project requirements)
- {state_path} (Project decisions and history)
</files_to_read>
@@ -509,10 +509,10 @@ Output this markdown directly (not as a code block):
```
## ⚠ UI-SPEC.md missing for Phase {N}
▶ Recommended next step:
`/gsd:ui-phase {N} ${GSD_WS}` — generate UI design contract before planning
`/gsd-ui-phase {N} ${GSD_WS}` — generate UI design contract before planning
───────────────────────────────────────────────
Also available:
- `/gsd:plan-phase {N} --skip-ui ${GSD_WS}` — plan without UI-SPEC (not recommended for frontend phases)
- `/gsd-plan-phase {N} --skip-ui ${GSD_WS}` — plan without UI-SPEC (not recommended for frontend phases)
```
**Exit the plan-phase workflow. Do not continue.**
@@ -628,7 +628,7 @@ VALIDATION_EXISTS=$(ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null | head -1)
```
If missing and Nyquist is still enabled/applicable — ask user:
1. Re-run: `/gsd:plan-phase {PHASE} --research ${GSD_WS}`
1. Re-run: `/gsd-plan-phase {PHASE} --research ${GSD_WS}`
2. Disable Nyquist with the exact command:
`gsd-sdk query config-set workflow.nyquist_validation false`
3. Continue anyway (plans fail Dimension 8)
@@ -666,7 +666,7 @@ Pattern mapper prompt:
**Padded phase:** {padded_phase}
<files_to_read>
- {context_path} (USER DECISIONS from /gsd:discuss-phase)
- {context_path} (USER DECISIONS from /gsd-discuss-phase)
- {research_path} (Technical Research)
</files_to_read>
@@ -716,7 +716,7 @@ Planner prompt:
- {state_path} (Project State)
- {roadmap_path} (Roadmap)
- {requirements_path} (Requirements)
- {context_path} (USER DECISIONS from /gsd:discuss-phase)
- {context_path} (USER DECISIONS from /gsd-discuss-phase)
- {research_path} (Technical Research)
- {PATTERNS_PATH} (Pattern Map — analog files and code excerpts, if exists)
- {verification_path} (Verification Gaps - if --gaps)
@@ -755,7 +755,7 @@ Each TDD plan gets one feature with RED/GREEN/REFACTOR gate sequence.
</planning_context>
<downstream_consumer>
Output consumed by /gsd:execute-phase. Plans need:
Output consumed by /gsd-execute-phase. Plans need:
- Frontmatter (wave, depends_on, files_modified, autonomous)
- Tasks in XML format with read_first and acceptance_criteria fields (MANDATORY on every task)
- Verification criteria
@@ -824,10 +824,10 @@ Task(
Chunked mode splits the single long-lived planner Task into a short outline Task followed by
N short per-plan Tasks. Each Task is bounded to ~3–5 min; each plan is committed individually
for crash resilience. If any Task hangs and the terminal is force-killed, rerunning
`/gsd:plan-phase {N} --chunked` resumes from the last successfully committed plan.
`/gsd-plan-phase {N} --chunked` resumes from the last successfully committed plan.
**Intended for new or in-progress chunked runs.** To recover plans already written by a prior
*non-chunked* run, use step 6's "Add more plans" or proceed directly to `/gsd:execute-phase`
*non-chunked* run, use step 6's "Add more plans" or proceed directly to `/gsd-execute-phase`
— don't start a fresh chunked run over existing non-chunked plans.
### 8.5.1 Outline Phase (outline-only mode, ~2 min)
@@ -953,7 +953,7 @@ arrived). Display:
Offer 3 options:
1. **Accept plans** — treat as `## PLANNING COMPLETE` and continue through step 9 `## PLANNING COMPLETE` handling (so `--skip-verify` / `plan_checker_enabled=false` are honored — may skip to step 13 rather than step 10)
2. **Retry planner** — re-spawn the planner with the same prompt (return to step 8)
3. **Stop** — exit; user can re-run `/gsd:plan-phase {N}` to resume
3. **Stop** — exit; user can re-run `/gsd-plan-phase {N}` to resume
**If `DISK_PLANS` is 0 and no marker:** The planner produced no output. Treat as
`## PLANNING INCONCLUSIVE` and handle accordingly.
@@ -986,7 +986,7 @@ rest become a follow-up phase
Use AskUserQuestion with these 3 options.
**If "Split":** Use `/gsd:insert-phase` to create the sub-phases, then replan each.
**If "Split":** Use `/gsd-insert-phase` to create the sub-phases, then replan each.
**If "Proceed":** Return to planner with instruction to attempt all items at full fidelity, accepting more plans/tasks.
**If "Prioritize":** Use AskUserQuestion (multiSelect) to let user pick which items are "now" vs "later". Create CONTEXT.md for each sub-phase with the selected items.
@@ -1015,7 +1015,7 @@ Options:
Use AskUserQuestion for each gap (or batch if multiple gaps).
**If "Add plan":** Return to planner (step 8) with instruction to add plans covering the missing items, preserving existing plans.
**If "Split":** Use `/gsd:insert-phase` for overflow items, then replan.
**If "Split":** Use `/gsd-insert-phase` for overflow items, then replan.
**If "Defer":** Record in CONTEXT.md `## Deferred Ideas` with developer's confirmation. Proceed to step 10.
## 10. Spawn gsd-plan-checker Agent
@@ -1040,7 +1040,7 @@ Checker prompt:
- {PHASE_DIR}/*-PLAN.md (Plans to verify)
- {roadmap_path} (Roadmap)
- {requirements_path} (Requirements)
- {context_path} (USER DECISIONS from /gsd:discuss-phase)
- {context_path} (USER DECISIONS from /gsd-discuss-phase)
- {research_path} (Technical Research — includes Validation Architecture)
</files_to_read>
@@ -1111,7 +1111,7 @@ Windows stdio hang pattern — the subagent finished but the return never arrive
Offer 3 options:
1. **Accept verification** — treat as `## VERIFICATION PASSED` and continue to step 13
2. **Retry checker** — re-spawn the checker with the same prompt (return to step 10)
3. **Stop** — exit; user can re-run `/gsd:plan-phase {N}` to resume
3. **Stop** — exit; user can re-run `/gsd-plan-phase {N}` to resume
**If `DISK_PLANS` is 0:** No plans on disk — something is seriously wrong. Display error and stop.
@@ -1140,7 +1140,7 @@ Display: `Revision iteration {N}/3 -- {blocker_count} blockers, {warning_count}
**If `stall_reentry_count >= 2`:**
Display: `Stall persists after 2 re-planning attempts. The following issues could not be resolved automatically:`
List the remaining issues from the checker.
Suggest: "Consider resolving these issues manually or running `/gsd:debug` to investigate root causes."
Suggest: "Consider resolving these issues manually or running `/gsd-debug` to investigate root causes."
Options: "Proceed anyway" | "Abandon"
If "Proceed anyway": accept current plans and continue to step 13.
If "Abandon": stop workflow.
@@ -1156,7 +1156,7 @@ Revision prompt:
<files_to_read>
- {PHASE_DIR}/*-PLAN.md (Existing plans)
- {context_path} (USER DECISIONS from /gsd:discuss-phase)
- {context_path} (USER DECISIONS from /gsd-discuss-phase)
</files_to_read>
${AGENT_SKILLS_PLANNER}
@@ -1455,7 +1455,7 @@ sort within source):**
- Both missing or `<decisions>` block missing → "No requirements or decisions to check" line, no error.
This step is non-blocking. If items are reported as not covered, the user may
re-run `/gsd:plan-phase --gaps` to add plans, or proceed to execute-phase as-is.
re-run `/gsd-plan-phase --gaps` to add plans, or proceed to execute-phase as-is.
## 14. Present Final Status
@@ -1512,14 +1512,14 @@ The `--no-transition` flag tells execute-phase to return status after verificati
Auto-advance pipeline finished.
Next: /gsd:discuss-phase ${NEXT_PHASE} --auto ${GSD_WS}
Next: /gsd-discuss-phase ${NEXT_PHASE} --auto ${GSD_WS}
```
- **GAPS FOUND / VERIFICATION FAILED** → Display result, stop chain:
```
Auto-advance stopped: Execution needs review.
Review the output above and continue manually:
/gsd:execute-phase ${PHASE} ${GSD_WS}
/gsd-execute-phase ${PHASE} ${GSD_WS}
```
**If neither `--auto` nor config enabled:**
@@ -1552,15 +1552,15 @@ Verification: {Passed | Passed with override | Skipped}
/clear then:
/gsd:execute-phase {X} ${GSD_WS}
/gsd-execute-phase {X} ${GSD_WS}
───────────────────────────────────────────────────────────────
**Also available:**
- cat .planning/phases/{phase-dir}/*-PLAN.md — review plans
- /gsd:plan-phase {X} --research — re-research first
- /gsd:review --phase {X} --all — peer review plans with external AIs
- /gsd:plan-phase {X} --reviews — replan incorporating review feedback
- /gsd-plan-phase {X} --research — re-research first
- /gsd-review --phase {X} --all — peer review plans with external AIs
- /gsd-plan-phase {X} --reviews — replan incorporating review feedback
───────────────────────────────────────────────────────────────
</offer_next>
@@ -1581,11 +1581,11 @@ stdio deadlocks with MCP servers — see Claude Code issue anthropics/claude-cod
Remove-Item -Recurse -Force "$env:USERPROFILE\.claude\tasks\*" -ErrorAction SilentlyContinue
```
4. **Reduce MCP server count:** Temporarily disable non-essential MCP servers in settings.json
5. **Retry:** Restart Claude Code and run `/gsd:plan-phase` again
5. **Retry:** Restart Claude Code and run `/gsd-plan-phase` again
If freezes persist, try `--skip-research` to reduce the agent chain from 3 to 2 agents:
```
/gsd:plan-phase N --skip-research
/gsd-plan-phase N --skip-research
```
</windows_troubleshooting>

View File

@@ -80,7 +80,7 @@ Display: `◆ No plans found — spawning initial planning agent...`
```text
Agent(
description="Initial planning Phase {PHASE}",
prompt="Run /gsd:plan-phase for Phase {PHASE}.
prompt="Run /gsd-plan-phase for Phase {PHASE}.
Execute: Skill(skill='gsd-plan-phase', args='{PHASE} {GSD_WS}')
@@ -116,7 +116,7 @@ Display: `◆ Cycle {cycle}/{MAX_CYCLES} — spawning review agent...`
```text
Agent(
description="Cross-AI review Phase {PHASE} cycle {cycle}",
prompt="Run /gsd:review for Phase {PHASE}.
prompt="Run /gsd-review for Phase {PHASE}.
Execute: Skill(skill='gsd-review', args='--phase {PHASE} {REVIEWER_FLAGS} {GSD_WS}')
@@ -156,7 +156,7 @@ Display:
No HIGH concerns remaining.
REVIEWS.md: {REVIEWS_FILE}
Next: /gsd:execute-phase {PHASE}
Next: /gsd-execute-phase {PHASE}
```
Exit — convergence achieved.
@@ -210,8 +210,8 @@ If "Manual review":
```text
Review the concerns in: {REVIEWS_FILE}
To replan manually: /gsd:plan-phase {PHASE} --reviews
To restart loop: /gsd:plan-review-convergence {PHASE} {REVIEWER_FLAGS}
To replan manually: /gsd-plan-phase {PHASE} --reviews
To restart loop: /gsd-plan-review-convergence {PHASE} {REVIEWER_FLAGS}
```
Exit workflow.
@@ -226,7 +226,7 @@ Display: `◆ Spawning replan agent with review feedback...`
```text
Agent(
description="Replan Phase {PHASE} with review feedback cycle {cycle}",
prompt="Run /gsd:plan-phase with --reviews for Phase {PHASE}.
prompt="Run /gsd-plan-phase with --reviews for Phase {PHASE}.
Execute: Skill(skill='gsd-plan-phase', args='{PHASE} --reviews --skip-research {GSD_WS}')

View File

@@ -1,6 +1,6 @@
<purpose>
Capture a forward-looking idea as a structured seed file with trigger conditions.
Seeds auto-surface during /gsd:new-milestone when trigger conditions match the
Seeds auto-surface during /gsd-new-milestone when trigger conditions match the
new milestone's scope.
Seeds beat deferred items because they:
@@ -120,7 +120,7 @@ scope: {$SCOPE}
**Trigger:** {$TRIGGER}
This seed should be presented during `/gsd:new-milestone` when the milestone
This seed should be presented during `/gsd-new-milestone` when the milestone
scope matches any of these conditions:
- {trigger condition 1}
- {trigger condition 2}
@@ -156,7 +156,7 @@ Trigger: {$TRIGGER}
Scope: {$SCOPE}
File: .planning/seeds/SEED-{PADDED}-{slug}.md
This seed will surface automatically when you run /gsd:new-milestone
This seed will surface automatically when you run /gsd-new-milestone
and the milestone scope matches the trigger condition.
```
</step>

View File

@@ -142,7 +142,7 @@ Next steps:
git push origin {PR_BRANCH}
gh pr create --base {TARGET} --head {PR_BRANCH}
Or use /gsd:ship to create the PR automatically.
Or use /gsd-ship to create the PR automatically.
```
</step>

View File

@@ -120,7 +120,7 @@ Use AskUserQuestion:
- options:
- "Let's go" -- Proceed to step 3 (session analysis)
- "Use questionnaire instead" -- Jump to step 4b (questionnaire path)
- "Not now" -- Display "No worries. Run /gsd:profile-user when ready." and exit
- "Not now" -- Display "No worries. Run /gsd-profile-user when ready." and exit
---

View File

@@ -27,18 +27,18 @@ If `project_exists` is false (no `.planning/` directory):
```
No planning structure found.
Run /gsd:new-project to start a new project.
Run /gsd-new-project to start a new project.
```
Exit.
If missing STATE.md: suggest `/gsd:new-project`.
If missing STATE.md: suggest `/gsd-new-project`.
**If ROADMAP.md missing but PROJECT.md exists:**
This means a milestone was completed and archived. Go to **Route F** (between milestones).
If missing both ROADMAP.md and PROJECT.md: suggest `/gsd:new-project`.
If missing both ROADMAP.md and PROJECT.md: suggest `/gsd-new-project`.
</step>
<step name="load">
@@ -123,10 +123,10 @@ CONTEXT: [✓ if has_context | - if not]
- [e.g. jq -r '.blockers[].text' from state-snapshot]
## Pending Todos
- [count] pending — /gsd:check-todos to review
- [count] pending — /gsd-check-todos to review
## Active Debug Sessions
- [count] active — /gsd:debug to continue
- [count] active — /gsd-debug to continue
(Only show this section if count > 0)
## What's Next
@@ -185,8 +185,8 @@ Track: `outstanding_debt` — `summary.total_items` from the audit.
| {phase} | {filename} | {pending_count} pending, {skipped_count} skipped, {blocked_count} blocked |
| {phase} | {filename} | human_needed — {count} items |
Review: `/gsd:audit-uat ${GSD_WS}` — full cross-phase audit
Resume testing: `/gsd:verify-work {phase} ${GSD_WS}` — retest specific phase
Review: `/gsd-audit-uat ${GSD_WS}` — full cross-phase audit
Resume testing: `/gsd-verify-work {phase} ${GSD_WS}` — retest specific phase
```
This is a WARNING, not a blocker — routing proceeds normally. The debt is visible so the user can make an informed choice.
@@ -217,7 +217,7 @@ Read its `<objective>` section.
`/clear` then:
`/gsd:execute-phase {phase} ${GSD_WS}`
`/gsd-execute-phase {phase} ${GSD_WS}`
---
```
@@ -247,7 +247,7 @@ PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" ||
`/clear` then:
`/gsd:plan-phase {phase-number} ${GSD_WS}`
`/gsd-plan-phase {phase-number} ${GSD_WS}`
---
```
@@ -263,14 +263,14 @@ PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" ||
`/clear` then:
`/gsd:discuss-phase {phase}` — gather context and clarify approach
`/gsd-discuss-phase {phase}` — gather context and clarify approach
---
**Also available:**
- `/gsd:ui-phase {phase}` — generate UI design contract (recommended for frontend phases)
- `/gsd:plan-phase {phase}` — skip discussion, plan directly
- `/gsd:list-phase-assumptions {phase}` — see Claude's assumptions
- `/gsd-ui-phase {phase}` — generate UI design contract (recommended for frontend phases)
- `/gsd-plan-phase {phase}` — skip discussion, plan directly
- `/gsd-list-phase-assumptions {phase}` — see Claude's assumptions
---
```
@@ -286,13 +286,13 @@ PHASE_HAS_UI=$(echo "$PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true" ||
`/clear` then:
`/gsd:discuss-phase {phase} ${GSD_WS}` — gather context and clarify approach
`/gsd-discuss-phase {phase} ${GSD_WS}` — gather context and clarify approach
---
**Also available:**
- `/gsd:plan-phase {phase} ${GSD_WS}` — skip discussion, plan directly
- `/gsd:list-phase-assumptions {phase} ${GSD_WS}` — see Claude's assumptions
- `/gsd-plan-phase {phase} ${GSD_WS}` — skip discussion, plan directly
- `/gsd-list-phase-assumptions {phase} ${GSD_WS}` — see Claude's assumptions
---
```
@@ -312,13 +312,13 @@ UAT.md exists with gaps (diagnosed issues). User needs to plan fixes.
`/clear` then:
`/gsd:plan-phase {phase} --gaps ${GSD_WS}`
`/gsd-plan-phase {phase} --gaps ${GSD_WS}`
---
**Also available:**
- `/gsd:execute-phase {phase} ${GSD_WS}` — execute phase plans
- `/gsd:verify-work {phase} ${GSD_WS}` — run more UAT testing
- `/gsd-execute-phase {phase} ${GSD_WS}` — execute phase plans
- `/gsd-verify-work {phase} ${GSD_WS}` — run more UAT testing
---
```
@@ -338,13 +338,13 @@ UAT.md exists with `status: partial` — testing session ended before all items
`/clear` then:
`/gsd:verify-work {phase} ${GSD_WS}` — resume testing from where you left off
`/gsd-verify-work {phase} ${GSD_WS}` — resume testing from where you left off
---
**Also available:**
- `/gsd:audit-uat ${GSD_WS}` — full cross-phase UAT audit
- `/gsd:execute-phase {phase} ${GSD_WS}` — execute phase plans
- `/gsd-audit-uat ${GSD_WS}` — full cross-phase UAT audit
- `/gsd-execute-phase {phase} ${GSD_WS}` — execute phase plans
---
```
@@ -394,14 +394,14 @@ NEXT_HAS_UI=$(echo "$NEXT_PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true
`/clear` then:
`/gsd:discuss-phase {Z+1}` — gather context and clarify approach
`/gsd-discuss-phase {Z+1}` — gather context and clarify approach
---
**Also available:**
- `/gsd:ui-phase {Z+1}` — generate UI design contract (recommended for frontend phases)
- `/gsd:plan-phase {Z+1}` — skip discussion, plan directly
- `/gsd:verify-work {Z}` — user acceptance test before continuing
- `/gsd-ui-phase {Z+1}` — generate UI design contract (recommended for frontend phases)
- `/gsd-plan-phase {Z+1}` — skip discussion, plan directly
- `/gsd-verify-work {Z}` — user acceptance test before continuing
---
```
@@ -419,13 +419,13 @@ NEXT_HAS_UI=$(echo "$NEXT_PHASE_SECTION" | grep -qi "UI hint.*yes" && echo "true
`/clear` then:
`/gsd:discuss-phase {Z+1} ${GSD_WS}` — gather context and clarify approach
`/gsd-discuss-phase {Z+1} ${GSD_WS}` — gather context and clarify approach
---
**Also available:**
- `/gsd:plan-phase {Z+1} ${GSD_WS}` — skip discussion, plan directly
- `/gsd:verify-work {Z} ${GSD_WS}` — user acceptance test before continuing
- `/gsd-plan-phase {Z+1} ${GSD_WS}` — skip discussion, plan directly
- `/gsd-verify-work {Z} ${GSD_WS}` — user acceptance test before continuing
---
```
@@ -447,12 +447,12 @@ All {N} phases finished!
`/clear` then:
`/gsd:complete-milestone ${GSD_WS}`
`/gsd-complete-milestone ${GSD_WS}`
---
**Also available:**
- `/gsd:verify-work ${GSD_WS}` — user acceptance test before completing milestone
- `/gsd-verify-work ${GSD_WS}` — user acceptance test before completing milestone
---
```
@@ -478,7 +478,7 @@ Ready to plan the next milestone.
`/clear` then:
`/gsd:new-milestone ${GSD_WS}`
`/gsd-new-milestone ${GSD_WS}`
---
```
@@ -488,10 +488,10 @@ Ready to plan the next milestone.
<step name="edge_cases">
**Handle edge cases:**
- Phase complete but next phase not planned → offer `/gsd:plan-phase [next] ${GSD_WS}`
- Phase complete but next phase not planned → offer `/gsd-plan-phase [next] ${GSD_WS}`
- All work complete → offer milestone completion
- Blockers present → highlight before offering to continue
- Handoff file exists → mention it, offer `/gsd:resume-work ${GSD_WS}`
- Handoff file exists → mention it, offer `/gsd-resume-work ${GSD_WS}`
</step>
<step name="forensic_audit">
@@ -598,12 +598,12 @@ Review the flagged items above before acting on the routing suggestion.
```
Then for each failed check, add a concrete next action:
- Check 2 (orphaned handoff): `Read the handoff file(s) and resume from where work was paused: /gsd:resume-work ${GSD_WS}`
- Check 2 (orphaned handoff): `Read the handoff file(s) and resume from where work was paused: /gsd-resume-work ${GSD_WS}`
- Check 3 (deferred scope): `Add the missing phases to ROADMAP.md or update the deferred references`
- Check 4 (memory pending): `Review the flagged memory entries and resolve or clear them`
- Check 5 (blocking todos): `Complete the operational steps in .planning/todos/pending/ before continuing`
- Check 6 (uncommitted code): `Commit or stash the uncommitted changes before advancing`
- Check 1 (STATE inconsistency): `Run /gsd:verify-work ${PHASE} ${GSD_WS} to reconcile state`
- Check 1 (STATE inconsistency): `Run /gsd-verify-work ${PHASE} ${GSD_WS} to reconcile state`
</step>
</process>
@@ -613,7 +613,7 @@ Then for each failed check, add a concrete next action:
- [ ] Rich context provided (recent work, decisions, issues)
- [ ] Current position clear with visual progress
- [ ] What's next clearly explained
- [ ] Smart routing: /gsd:execute-phase if plans exist, /gsd:plan-phase if not
- [ ] Smart routing: /gsd-execute-phase if plans exist, /gsd-plan-phase if not
- [ ] User confirms before any action
- [ ] Seamless handoff to appropriate gsd command
</success_criteria>

View File

@@ -126,13 +126,13 @@ If `$VALIDATE_MODE` only:
```bash
if ! command -v gsd-sdk &>/dev/null; then
echo "⚠ gsd-sdk not found in PATH — /gsd:quick requires it."
echo "⚠ gsd-sdk not found in PATH — /gsd-quick requires it."
echo ""
echo "Install the GSD SDK:"
echo " npm install -g @gsd-build/sdk"
echo ""
echo "Or update GSD to get the latest packages:"
echo " /gsd:update"
echo " /gsd-update"
exit 1
fi
```
@@ -161,7 +161,7 @@ if [ -f .gitmodules ]; then
fi
```
**If `roadmap_exists` is false:** Error — Quick mode requires an active project with ROADMAP.md. Run `/gsd:new-project` first.
**If `roadmap_exists` is false:** Error — Quick mode requires an active project with ROADMAP.md. Run `/gsd-new-project` first.
Quick tasks can run mid-phase - validation only checks ROADMAP.md exists, not phase status.
@@ -930,7 +930,7 @@ Commit: ${commit_hash}
---
Ready for next task: /gsd:quick ${GSD_WS}
Ready for next task: /gsd-quick ${GSD_WS}
```
**If NOT `$VALIDATE_MODE`:**
@@ -947,7 +947,7 @@ Commit: ${commit_hash}
---
Ready for next task: /gsd:quick ${GSD_WS}
Ready for next task: /gsd-quick ${GSD_WS}
```
</process>

View File

@@ -11,15 +11,15 @@ Read all files referenced by the invoking prompt's execution_context before star
<step name="parse_arguments">
Parse the command arguments:
- Argument is the phase number to remove (integer or decimal)
- Example: `/gsd:remove-phase 17` → phase = 17
- Example: `/gsd:remove-phase 16.1` → phase = 16.1
- Example: `/gsd-remove-phase 17` → phase = 17
- Example: `/gsd-remove-phase 16.1` → phase = 16.1
If no argument provided:
```
ERROR: Phase number required
Usage: /gsd:remove-phase <phase-number>
Example: /gsd:remove-phase 17
Usage: /gsd-remove-phase <phase-number>
Example: /gsd-remove-phase 17
```
Exit.
@@ -53,7 +53,7 @@ Only future phases can be removed:
- Current phase: {current}
- Phase {target} is current or completed
To abandon current work, use /gsd:pause-work instead.
To abandon current work, use /gsd-pause-work instead.
```
Exit.
@@ -126,7 +126,7 @@ Changes:
## What's Next
Would you like to:
- `/gsd:progress` — see updated roadmap status
- `/gsd-progress` — see updated roadmap status
- Continue with current phase
- Review roadmap

View File

@@ -21,7 +21,7 @@ Parse JSON for: `workspace_name`, `workspace_path`, `has_manifest`, `strategy`,
**If no workspace name provided:**
First run `/gsd:list-workspaces` to show available workspaces, then ask:
First run `/gsd-list-workspaces` to show available workspaces, then ask:
**Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.

View File

@@ -1,7 +1,7 @@
<purpose>
Research how to implement a phase. Spawns gsd-phase-researcher with phase context.
Standalone research command. For most workflows, use `/gsd:plan-phase` which integrates research automatically.
Standalone research command. For most workflows, use `/gsd-plan-phase` which integrates research automatically.
</purpose>
<available_agent_types>
@@ -54,7 +54,7 @@ Research implementation approach for Phase {phase}: {name}
</objective>
<files_to_read>
- {context_path} (USER DECISIONS from /gsd:discuss-phase)
- {context_path} (USER DECISIONS from /gsd-discuss-phase)
- {requirements_path} (Project requirements)
- {state_path} (Project decisions and history)
</files_to_read>

View File

@@ -28,7 +28,7 @@ Parse JSON for: `state_exists`, `roadmap_exists`, `project_exists`, `planning_ex
**If `state_exists` is true:** Proceed to load_state
**If `state_exists` is false but `roadmap_exists` or `project_exists` is true:** Offer to reconstruct STATE.md
**If `planning_exists` is false:** This is a new project - route to /gsd:new-project
**If `planning_exists` is false:** This is a new project - route to /gsd-new-project
</step>
<step name="load_state">
@@ -84,7 +84,7 @@ fi
**If HANDOFF.json exists:**
- This is the primary resumption source — structured data from `/gsd:pause-work`
- This is the primary resumption source — structured data from `/gsd-pause-work`
- Parse `status`, `phase`, `plan`, `task`, `total_tasks`, `next_action`
- Check `blockers` and `human_actions_pending` — surface these immediately
- Check `completed_tasks` for `in_progress` items — these need attention first
@@ -140,7 +140,7 @@ Present complete project status to user:
Resume with: Task tool (resume parameter with agent ID)
[If pending todos exist:]
📋 [N] pending todos — /gsd:check-todos to review
📋 [N] pending todos — /gsd-check-todos to review
[If blockers exist:]
⚠️ Carried concerns:
@@ -200,11 +200,11 @@ What would you like to do?
[Primary action based on state - e.g.:]
1. Resume interrupted agent [if interrupted agent found]
OR
1. Execute phase (/gsd:execute-phase {phase} ${GSD_WS})
1. Execute phase (/gsd-execute-phase {phase} ${GSD_WS})
OR
1. Discuss Phase 3 context (/gsd:discuss-phase 3 ${GSD_WS}) [if CONTEXT.md missing]
1. Discuss Phase 3 context (/gsd-discuss-phase 3 ${GSD_WS}) [if CONTEXT.md missing]
OR
1. Plan Phase 3 (/gsd:plan-phase 3 ${GSD_WS}) [if CONTEXT.md exists or discuss option declined]
1. Plan Phase 3 (/gsd-plan-phase 3 ${GSD_WS}) [if CONTEXT.md exists or discuss option declined]
[Secondary options:]
2. Review current phase status
@@ -237,7 +237,7 @@ Based on user selection, route to appropriate workflow:
`/clear` then:
`/gsd:execute-phase {phase} ${GSD_WS}`
`/gsd-execute-phase {phase} ${GSD_WS}`
---
```
@@ -251,13 +251,13 @@ Based on user selection, route to appropriate workflow:
`/clear` then:
`/gsd:plan-phase [phase-number] ${GSD_WS}`
`/gsd-plan-phase [phase-number] ${GSD_WS}`
---
**Also available:**
- `/gsd:discuss-phase [N] ${GSD_WS}` — gather context first
- `/gsd:research-phase [N] ${GSD_WS}` — investigate unknowns
- `/gsd-discuss-phase [N] ${GSD_WS}` — gather context first
- `/gsd-research-phase [N] ${GSD_WS}` — investigate unknowns
---
```

View File

@@ -45,7 +45,7 @@ No external AI CLIs found. Install at least one:
- qwen: https://github.com/nicepkg/qwen-code (Alibaba Qwen models)
- cursor: https://cursor.com (Cursor IDE agent mode)
Then run /gsd:review again.
Then run /gsd-review again.
```
Exit.
@@ -327,7 +327,7 @@ Consensus concerns:
Full review: {padded_phase}-REVIEWS.md
To incorporate feedback into planning:
/gsd:plan-phase {N} --reviews
/gsd-plan-phase {N} --reviews
```
Clean up temp files.
@@ -340,5 +340,5 @@ Clean up temp files.
- [ ] REVIEWS.md written with structured feedback
- [ ] Consensus summary synthesized from multiple reviewers
- [ ] Temp files cleaned up
- [ ] User knows how to use feedback (/gsd:plan-phase --reviews)
- [ ] User knows how to use feedback (/gsd-plan-phase --reviews)
</success_criteria>

View File

@@ -88,7 +88,7 @@ Task(
**Documents produced:**
{list of documents written with line counts}
Use `/gsd:map-codebase` for a comprehensive 4-area parallel scan.
Use `/gsd-map-codebase` for a comprehensive 4-area parallel scan.
```
</process>

View File

@@ -28,7 +28,7 @@ AUDITOR_MODEL=$(gsd-sdk query resolve-model gsd-security-auditor --raw)
SECURITY_CFG=$(gsd-sdk query config-get workflow.security_enforcement --raw 2>/dev/null || echo "true")
```
If `SECURITY_CFG` is `false`: exit with "Security enforcement disabled. Enable via /gsd:settings."
If `SECURITY_CFG` is `false`: exit with "Security enforcement disabled. Enable via /gsd-settings."
Display banner: `GSD > SECURE PHASE {N}: {name}`
@@ -42,7 +42,7 @@ SUMMARY_FILES=$(ls "${PHASE_DIR}"/*-SUMMARY.md 2>/dev/null)
- **State A** (`SECURITY_FILE` non-empty): Audit existing
- **State B** (`SECURITY_FILE` empty, `PLAN_FILES` and `SUMMARY_FILES` non-empty): Run from artifacts
- **State C** (`SUMMARY_FILES` empty): Exit — "Phase {N} not executed. Run /gsd:execute-phase {N} first."
- **State C** (`SUMMARY_FILES` empty): Exit — "Phase {N} not executed. Run /gsd-execute-phase {N} first."
## 2. Discovery
@@ -125,7 +125,7 @@ Handle return:
```
GSD > PHASE {N} SECURITY BLOCKED
{K} threats open — phase advancement blocked until threats_open: 0
▶ Fix mitigations then re-run: /gsd:secure-phase {N}
▶ Fix mitigations then re-run: /gsd-secure-phase {N}
▶ Or document accepted risks in SECURITY.md and re-run.
```
@@ -143,8 +143,8 @@ gsd-sdk query commit "docs(phase-${PHASE}): add/update security threat verificat
```
GSD > PHASE {N} THREAT-SECURE
threats_open: 0 — all threats have dispositions.
▶ /gsd:validate-phase {N} validate test coverage
▶ /gsd:verify-work {N} run UAT
▶ /gsd-validate-phase {N} validate test coverage
▶ /gsd-verify-work {N} run UAT
```
Display `/clear` reminder.

View File

@@ -110,7 +110,7 @@ Write `.planning/reports/SESSION_REPORT.md` (or `.planning/reports/YYYYMMDD-sess
---
*Generated by `/gsd:session-report`*
*Generated by `/gsd-session-report`*
```
</step>
@@ -131,7 +131,7 @@ Show the user:
If this is the first report, mention:
```
💡 Run `/gsd:session-report` at the end of each session to build a history of project activity.
💡 Run `/gsd-session-report` at the end of each session to build a history of project activity.
```
</step>

Some files were not shown because too many files have changed in this diff Show More