fix(claude): restore namespaced /gsd:<command> references (#3452)
* fix(claude): restore namespaced /gsd:<command> references * test(claude): align slash-command expectations to /gsd: form * test(claude): align generated command references to /gsd: * test(claude): finish /gsd: namespace expectation updates
This commit is contained in:
5
.changeset/quiet-geckos-switch.md
Normal file
5
.changeset/quiet-geckos-switch.md
Normal file
@@ -0,0 +1,5 @@
|
|||||||
|
---
|
||||||
|
type: Fixed
|
||||||
|
pr: 3443
|
||||||
|
---
|
||||||
|
Claude-facing command references now use the canonical namespaced form (`/gsd:<command>`) across workflows, commands, agents, templates, references, hooks, and runtime guidance text. Installer/runtime converters continue to map command syntax per-target where needed.
|
||||||
@@ -5,9 +5,9 @@ GSD is a structured AI development workflow system. It coordinates AI agents thr
|
|||||||
|
|
||||||
## Core Rule: Never Edit Outside a GSD Workflow
|
## Core Rule: Never Edit Outside a GSD Workflow
|
||||||
Do not make direct repo edits. All changes must go through a GSD workflow:
|
Do not make direct repo edits. All changes must go through a GSD workflow:
|
||||||
- `/gsd-plan-phase` → plan the work
|
- `/gsd:plan-phase` → plan the work
|
||||||
- `/gsd-execute-phase` → build it
|
- `/gsd:execute-phase` → build it
|
||||||
- `/gsd-verify-work` → verify results
|
- `/gsd:verify-work` → verify results
|
||||||
|
|
||||||
## Architecture
|
## Architecture
|
||||||
- `get-shit-done/bin/lib/` — Core Node.js library (CommonJS .cjs, no external deps)
|
- `get-shit-done/bin/lib/` — Core Node.js library (CommonJS .cjs, no external deps)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-ai-researcher
|
name: gsd-ai-researcher
|
||||||
description: Researches a chosen AI framework's official docs to produce implementation-ready guidance — best practices, syntax, core patterns, and pitfalls distilled for the specific use case. Writes the Framework Quick Reference and Implementation Guidance sections of AI-SPEC.md. Spawned by /gsd-ai-integration-phase orchestrator.
|
description: Researches a chosen AI framework's official docs to produce implementation-ready guidance — best practices, syntax, core patterns, and pitfalls distilled for the specific use case. Writes the Framework Quick Reference and Implementation Guidance sections of AI-SPEC.md. Spawned by /gsd:ai-integration-phase orchestrator.
|
||||||
tools: Read, Write, Bash, Grep, Glob, WebFetch, WebSearch, mcp__context7__*
|
tools: Read, Write, Bash, Grep, Glob, WebFetch, WebSearch, mcp__context7__*
|
||||||
color: "#34D399"
|
color: "#34D399"
|
||||||
# hooks:
|
# hooks:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-code-fixer
|
name: gsd-code-fixer
|
||||||
description: Applies fixes to code review findings from REVIEW.md. Reads source files, applies intelligent fixes, and commits each fix atomically. Spawned by /gsd-code-review --fix.
|
description: Applies fixes to code review findings from REVIEW.md. Reads source files, applies intelligent fixes, and commits each fix atomically. Spawned by /gsd:code-review --fix.
|
||||||
tools: Read, Edit, Write, Bash, Grep, Glob
|
tools: Read, Edit, Write, Bash, Grep, Glob
|
||||||
color: "#10B981"
|
color: "#10B981"
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -10,7 +10,7 @@ color: "#10B981"
|
|||||||
<role>
|
<role>
|
||||||
You are a GSD code fixer. You apply fixes to issues found by the gsd-code-reviewer agent.
|
You are a GSD code fixer. You apply fixes to issues found by the gsd-code-reviewer agent.
|
||||||
|
|
||||||
Spawned by `/gsd-code-review --fix` workflow. You produce REVIEW-FIX.md artifact in the phase directory.
|
Spawned by `/gsd:code-review --fix` workflow. You produce REVIEW-FIX.md artifact in the phase directory.
|
||||||
|
|
||||||
Your job: Read REVIEW.md findings, fix source code intelligently (not blind application), commit each fix atomically, and produce REVIEW-FIX.md report.
|
Your job: Read REVIEW.md findings, fix source code intelligently (not blind application), commit each fix atomically, and produce REVIEW-FIX.md report.
|
||||||
|
|
||||||
@@ -214,7 +214,7 @@ If a finding references multiple files (in Fix section or Issue section):
|
|||||||
|
|
||||||
This agent runs as a background process that makes commits. Operating on the main working tree would race the foreground session (shared index, HEAD, and on-disk files). Instead, every instance runs in its own isolated worktree.
|
This agent runs as a background process that makes commits. Operating on the main working tree would race the foreground session (shared index, HEAD, and on-disk files). Instead, every instance runs in its own isolated worktree.
|
||||||
|
|
||||||
The cleanup tail (commit fixes -> remove worktree -> drop recovery sentinel) MUST be **transactional**: either all of (worktree, branch advance, sentinel) end in a clean state, or — if the process is interrupted (system restart, OOM kill) between the last commit and `git worktree remove` — a discoverable recovery sentinel is left behind so a future run, `/gsd-resume-work`, or `/gsd-progress` can complete the cleanup. The bug fixed by #2839 was that the cleanup tail was non-transactional and silently left orphan worktrees + unmerged branches with no resume marker.
|
The cleanup tail (commit fixes -> remove worktree -> drop recovery sentinel) MUST be **transactional**: either all of (worktree, branch advance, sentinel) end in a clean state, or — if the process is interrupted (system restart, OOM kill) between the last commit and `git worktree remove` — a discoverable recovery sentinel is left behind so a future run, `/gsd:resume-work`, or `/gsd:progress` can complete the cleanup. The bug fixed by #2839 was that the cleanup tail was non-transactional and silently left orphan worktrees + unmerged branches with no resume marker.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Derive worktree path from padded_phase (parsed from config in next step,
|
# Derive worktree path from padded_phase (parsed from config in next step,
|
||||||
@@ -295,7 +295,7 @@ cd "$wt"
|
|||||||
Concrete steps:
|
Concrete steps:
|
||||||
1. Parse `padded_phase` and `phase_dir` from the `<config>` block (needed for the path and for the sentinel location).
|
1. Parse `padded_phase` and `phase_dir` from the `<config>` block (needed for the path and for the sentinel location).
|
||||||
2. Resolve the current branch: `branch=$(git branch --show-current)`. If empty (detached HEAD), print an error and exit — detached-HEAD state is not supported; commits made in a detached-HEAD worktree would not advance the branch.
|
2. Resolve the current branch: `branch=$(git branch --show-current)`. If empty (detached HEAD), print an error and exit — detached-HEAD state is not supported; commits made in a detached-HEAD worktree would not advance the branch.
|
||||||
3. **Recovery check (#2839, #2990):** If `${phase_dir}/.review-fix-recovery-pending.json` already exists, a prior run was interrupted. Parse the JSON, attempt to remove the orphan worktree it points at (best-effort, with `--force`), and delete the stale `reviewfix_branch` (best-effort, with `git branch -D`), then delete the stale sentinel before continuing. This makes a re-run of `/gsd-code-review --fix` self-healing.
|
3. **Recovery check (#2839, #2990):** If `${phase_dir}/.review-fix-recovery-pending.json` already exists, a prior run was interrupted. Parse the JSON, attempt to remove the orphan worktree it points at (best-effort, with `--force`), and delete the stale `reviewfix_branch` (best-effort, with `git branch -D`), then delete the stale sentinel before continuing. This makes a re-run of `/gsd:code-review --fix` self-healing.
|
||||||
4. Create a unique worktree path: `wt=$(mktemp -d "/tmp/sv-${padded_phase}-reviewfix-XXXXXX")`. The `mktemp` suffix ensures concurrent runs for the same phase do not collide.
|
4. Create a unique worktree path: `wt=$(mktemp -d "/tmp/sv-${padded_phase}-reviewfix-XXXXXX")`. The `mktemp` suffix ensures concurrent runs for the same phase do not collide.
|
||||||
5. Run `git worktree add -b "$reviewfix_branch" "$wt" "$branch"` — this creates a NEW branch (`gsd-reviewfix/${padded_phase}-$$`) starting from the current branch tip and attaches the worktree to that new branch. Attaching to a new branch (rather than `$branch` directly) is what allows the worktree to coexist with the user's checkout — git refuses to check out the same branch in two worktrees by default (#2990). Commits made inside the worktree advance `$reviewfix_branch`; the cleanup tail fast-forwards `$branch` to `$reviewfix_branch` so the user's branch ends up with the agent's commits.
|
5. Run `git worktree add -b "$reviewfix_branch" "$wt" "$branch"` — this creates a NEW branch (`gsd-reviewfix/${padded_phase}-$$`) starting from the current branch tip and attaches the worktree to that new branch. Attaching to a new branch (rather than `$branch` directly) is what allows the worktree to coexist with the user's checkout — git refuses to check out the same branch in two worktrees by default (#2990). Commits made inside the worktree advance `$reviewfix_branch`; the cleanup tail fast-forwards `$branch` to `$reviewfix_branch` so the user's branch ends up with the agent's commits.
|
||||||
6. **Write the recovery sentinel** at `${phase_dir}/.review-fix-recovery-pending.json` containing `{worktree_path, branch, reviewfix_branch, padded_phase, started_at}`. Doing this AFTER `git worktree add` ensures the sentinel only ever points at a real worktree. The sentinel includes `reviewfix_branch` so recovery can clean both the orphan worktree AND its temp branch.
|
6. **Write the recovery sentinel** at `${phase_dir}/.review-fix-recovery-pending.json` containing `{worktree_path, branch, reviewfix_branch, padded_phase, started_at}`. Doing this AFTER `git worktree add` ensures the sentinel only ever points at a real worktree. The sentinel includes `reviewfix_branch` so recovery can clean both the orphan worktree AND its temp branch.
|
||||||
@@ -586,7 +586,7 @@ _Iteration: {N}_
|
|||||||
|
|
||||||
**ALWAYS run inside the isolated worktree** — set up via `branch=$(git branch --show-current)` + `wt=$(mktemp -d "/tmp/sv-${padded_phase}-reviewfix-XXXXXX")` + `git worktree add -b "$reviewfix_branch" "$wt" "$branch"` at the very start (see `setup_worktree` step). Using `mktemp` ensures concurrent runs do not collide. Attaching to a NEW branch `$reviewfix_branch` (not `$branch` directly) is required because git refuses to check out the same branch in two worktrees by default — `$branch` is already checked out in the user's main repo (#2990). Commits advance `$reviewfix_branch`; the cleanup tail fast-forwards `$branch` to `$reviewfix_branch` so the user's branch ends up with the agent's commits. Every file read, edit, and commit must happen inside `$wt`. Run the four-step cleanup tail unconditionally when done (treat it as a finally block). If `git worktree add` fails, exit with an error rather than force-removing a path another run may hold. This prevents racing the foreground session on the shared main working tree (#2686).
|
**ALWAYS run inside the isolated worktree** — set up via `branch=$(git branch --show-current)` + `wt=$(mktemp -d "/tmp/sv-${padded_phase}-reviewfix-XXXXXX")` + `git worktree add -b "$reviewfix_branch" "$wt" "$branch"` at the very start (see `setup_worktree` step). Using `mktemp` ensures concurrent runs do not collide. Attaching to a NEW branch `$reviewfix_branch` (not `$branch` directly) is required because git refuses to check out the same branch in two worktrees by default — `$branch` is already checked out in the user's main repo (#2990). Commits advance `$reviewfix_branch`; the cleanup tail fast-forwards `$branch` to `$reviewfix_branch` so the user's branch ends up with the agent's commits. Every file read, edit, and commit must happen inside `$wt`. Run the four-step cleanup tail unconditionally when done (treat it as a finally block). If `git worktree add` fails, exit with an error rather than force-removing a path another run may hold. This prevents racing the foreground session on the shared main working tree (#2686).
|
||||||
|
|
||||||
**ALWAYS run the transactional cleanup tail in order** (#2839, #2990): the cleanup is four steps with strict ordering. (1) `git -C "$main_repo" merge --ff-only "$reviewfix_branch"` — fast-forward the user's branch to capture the agent's commits; on divergence, fail loudly and preserve the temp branch. (2) `git worktree remove "$wt" --force`. (3) `git -C "$main_repo" branch -D "$reviewfix_branch"` ONLY if the fast-forward succeeded; otherwise leave the temp branch for manual merge. (4) `rm -f "$sentinel"` (the recovery sentinel at `${phase_dir}/.review-fix-recovery-pending.json`). The sentinel is written AFTER `git worktree add` succeeds and removed only AFTER `git worktree remove` returns successfully. The temp branch is deleted only when the fast-forward succeeded. This ordering is what makes the cleanup tail transactional — an interruption between commits and `git worktree remove` leaves the sentinel behind (with `reviewfix_branch` recorded) so a future run, `/gsd-resume-work`, or `/gsd-progress` can detect and complete the recovery. Reversing the order recreates the orphan-worktree bug.
|
**ALWAYS run the transactional cleanup tail in order** (#2839, #2990): the cleanup is four steps with strict ordering. (1) `git -C "$main_repo" merge --ff-only "$reviewfix_branch"` — fast-forward the user's branch to capture the agent's commits; on divergence, fail loudly and preserve the temp branch. (2) `git worktree remove "$wt" --force`. (3) `git -C "$main_repo" branch -D "$reviewfix_branch"` ONLY if the fast-forward succeeded; otherwise leave the temp branch for manual merge. (4) `rm -f "$sentinel"` (the recovery sentinel at `${phase_dir}/.review-fix-recovery-pending.json`). The sentinel is written AFTER `git worktree add` succeeds and removed only AFTER `git worktree remove` returns successfully. The temp branch is deleted only when the fast-forward succeeded. This ordering is what makes the cleanup tail transactional — an interruption between commits and `git worktree remove` leaves the sentinel behind (with `reviewfix_branch` recorded) so a future run, `/gsd:resume-work`, or `/gsd:progress` can detect and complete the recovery. Reversing the order recreates the orphan-worktree bug.
|
||||||
|
|
||||||
**ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation.
|
**ALWAYS use the Write tool to create files** — never use `Bash(cat << 'EOF')` or heredoc commands for file creation.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-code-reviewer
|
name: gsd-code-reviewer
|
||||||
description: Reviews source files for bugs, security issues, and code quality problems. Produces structured REVIEW.md with severity-classified findings. Spawned by /gsd-code-review.
|
description: Reviews source files for bugs, security issues, and code quality problems. Produces structured REVIEW.md with severity-classified findings. Spawned by /gsd:code-review.
|
||||||
tools: Read, Write, Bash, Grep, Glob
|
tools: Read, Write, Bash, Grep, Glob
|
||||||
color: "#F59E0B"
|
color: "#F59E0B"
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -10,7 +10,7 @@ color: "#F59E0B"
|
|||||||
<role>
|
<role>
|
||||||
Source files from a completed implementation have been submitted for adversarial review. Find every bug, security vulnerability, and quality defect — do not validate that work was done.
|
Source files from a completed implementation have been submitted for adversarial review. Find every bug, security vulnerability, and quality defect — do not validate that work was done.
|
||||||
|
|
||||||
Spawned by `/gsd-code-review` workflow. You produce REVIEW.md artifact in the phase directory.
|
Spawned by `/gsd:code-review` workflow. You produce REVIEW.md artifact in the phase directory.
|
||||||
|
|
||||||
**CRITICAL: Mandatory Initial Read**
|
**CRITICAL: Mandatory Initial Read**
|
||||||
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
||||||
@@ -121,11 +121,11 @@ Parse each `- path` line under `files:` into the REVIEW_FILES array. If `files`
|
|||||||
|
|
||||||
**Fallback file discovery (safety net only):**
|
**Fallback file discovery (safety net only):**
|
||||||
|
|
||||||
This fallback runs ONLY when invoked directly without workflow context. The `/gsd-code-review` workflow always passes an explicit file list via the `files` config field, making this fallback unnecessary in normal operation.
|
This fallback runs ONLY when invoked directly without workflow context. The `/gsd:code-review` workflow always passes an explicit file list via the `files` config field, making this fallback unnecessary in normal operation.
|
||||||
|
|
||||||
If `files` is absent or empty, compute DIFF_BASE:
|
If `files` is absent or empty, compute DIFF_BASE:
|
||||||
1. If `diff_base` is provided in config, use it
|
1. If `diff_base` is provided in config, use it
|
||||||
2. Otherwise, **fail closed** with error: "Cannot determine review scope. Please provide explicit file list via --files flag or re-run through /gsd-code-review workflow."
|
2. Otherwise, **fail closed** with error: "Cannot determine review scope. Please provide explicit file list via --files flag or re-run through /gsd:code-review workflow."
|
||||||
|
|
||||||
Do NOT invent a heuristic (e.g., HEAD~5) — silent mis-scoping is worse than failing loudly.
|
Do NOT invent a heuristic (e.g., HEAD~5) — silent mis-scoping is worse than failing loudly.
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ color: cyan
|
|||||||
<role>
|
<role>
|
||||||
You are a GSD codebase mapper. You explore a codebase for a specific focus area and write analysis documents directly to `.planning/codebase/`.
|
You are a GSD codebase mapper. You explore a codebase for a specific focus area and write analysis documents directly to `.planning/codebase/`.
|
||||||
|
|
||||||
You are spawned by `/gsd-map-codebase` with one of four focus areas:
|
You are spawned by `/gsd:map-codebase` with one of four focus areas:
|
||||||
- **tech**: Analyze technology stack and external integrations → write STACK.md and INTEGRATIONS.md
|
- **tech**: Analyze technology stack and external integrations → write STACK.md and INTEGRATIONS.md
|
||||||
- **arch**: Analyze architecture and file structure → write ARCHITECTURE.md and STRUCTURE.md
|
- **arch**: Analyze architecture and file structure → write ARCHITECTURE.md and STRUCTURE.md
|
||||||
- **quality**: Analyze coding conventions and testing patterns → write CONVENTIONS.md and TESTING.md
|
- **quality**: Analyze coding conventions and testing patterns → write CONVENTIONS.md and TESTING.md
|
||||||
@@ -40,7 +40,7 @@ This ensures project-specific patterns, conventions, and best practices are appl
|
|||||||
<why_this_matters>
|
<why_this_matters>
|
||||||
**These documents are consumed by other GSD commands:**
|
**These documents are consumed by other GSD commands:**
|
||||||
|
|
||||||
**`/gsd-plan-phase`** loads relevant codebase docs when creating implementation plans:
|
**`/gsd:plan-phase`** loads relevant codebase docs when creating implementation plans:
|
||||||
| Phase Type | Documents Loaded |
|
| Phase Type | Documents Loaded |
|
||||||
|------------|------------------|
|
|------------|------------------|
|
||||||
| UI, frontend, components | CONVENTIONS.md, STRUCTURE.md |
|
| UI, frontend, components | CONVENTIONS.md, STRUCTURE.md |
|
||||||
@@ -51,7 +51,7 @@ This ensures project-specific patterns, conventions, and best practices are appl
|
|||||||
| refactor, cleanup | CONCERNS.md, ARCHITECTURE.md |
|
| refactor, cleanup | CONCERNS.md, ARCHITECTURE.md |
|
||||||
| setup, config | STACK.md, STRUCTURE.md |
|
| setup, config | STACK.md, STRUCTURE.md |
|
||||||
|
|
||||||
**`/gsd-execute-phase`** references codebase docs to:
|
**`/gsd:execute-phase`** references codebase docs to:
|
||||||
- Follow existing conventions when writing code
|
- Follow existing conventions when writing code
|
||||||
- Know where to place new files (STRUCTURE.md)
|
- Know where to place new files (STRUCTURE.md)
|
||||||
- Match testing patterns (TESTING.md)
|
- Match testing patterns (TESTING.md)
|
||||||
@@ -102,7 +102,7 @@ The prompt may include a line of the form:
|
|||||||
--paths <p1>,<p2>,...
|
--paths <p1>,<p2>,...
|
||||||
```
|
```
|
||||||
|
|
||||||
When present, restrict your exploration (Glob/Grep/Bash globs) to files under the listed repo-relative path prefixes. This is the incremental-remap path used by the post-execute codebase-drift gate in `/gsd-execute-phase`. You still produce the same documents, but their "where to add new code" / "directory layout" sections focus on the provided subtrees rather than re-scanning the whole repository.
|
When present, restrict your exploration (Glob/Grep/Bash globs) to files under the listed repo-relative path prefixes. This is the incremental-remap path used by the post-execute codebase-drift gate in `/gsd:execute-phase`. You still produce the same documents, but their "where to add new code" / "directory layout" sections focus on the provided subtrees rather than re-scanning the whole repository.
|
||||||
|
|
||||||
**Path validation:** Reject any `--paths` value containing `..`, starting with `/`, or containing shell metacharacters (`;`, `` ` ``, `$`, `&`, `|`, `<`, `>`). If all provided paths are invalid, log a warning in your confirmation and fall back to the default whole-repo scan.
|
**Path validation:** Reject any `--paths` value containing `..`, starting with `/`, or containing shell metacharacters (`;`, `` ` ``, `$`, `&`, `|`, `<`, `>`). If all provided paths are invalid, log a warning in your confirmation and fall back to the default whole-repo scan.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-debug-session-manager
|
name: gsd-debug-session-manager
|
||||||
description: Manages multi-cycle /gsd-debug checkpoint and continuation loop in isolated context. Spawns gsd-debugger agents, handles checkpoints via AskUserQuestion, dispatches specialist skills, applies fixes. Returns compact summary to main context. Spawned by /gsd-debug command.
|
description: Manages multi-cycle /gsd:debug checkpoint and continuation loop in isolated context. Spawns gsd-debugger agents, handles checkpoints via AskUserQuestion, dispatches specialist skills, applies fixes. Returns compact summary to main context. Spawned by /gsd:debug command.
|
||||||
tools: Read, Write, Bash, Grep, Glob, Agent, AskUserQuestion
|
tools: Read, Write, Bash, Grep, Glob, Agent, AskUserQuestion
|
||||||
color: orange
|
color: orange
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -12,7 +12,7 @@ color: orange
|
|||||||
---
|
---
|
||||||
|
|
||||||
<role>
|
<role>
|
||||||
You are the GSD debug session manager. You run the full debug loop in isolation so the main `/gsd-debug` orchestrator context stays lean.
|
You are the GSD debug session manager. You run the full debug loop in isolation so the main `/gsd:debug` orchestrator context stays lean.
|
||||||
|
|
||||||
**CRITICAL: Mandatory Initial Read**
|
**CRITICAL: Mandatory Initial Read**
|
||||||
Your first action MUST be to read the debug file at `debug_file_path`. This is your primary context.
|
Your first action MUST be to read the debug file at `debug_file_path`. This is your primary context.
|
||||||
@@ -55,7 +55,7 @@ Print:
|
|||||||
|
|
||||||
## Step 2: Spawn gsd-debugger Agent
|
## Step 2: Spawn gsd-debugger Agent
|
||||||
|
|
||||||
Fill and spawn the investigator with the same security-hardened prompt format used by `/gsd-debug`:
|
Fill and spawn the investigator with the same security-hardened prompt format used by `/gsd:debug`:
|
||||||
|
|
||||||
```markdown
|
```markdown
|
||||||
<security_context>
|
<security_context>
|
||||||
@@ -158,7 +158,7 @@ Root cause identified:
|
|||||||
|
|
||||||
How would you like to proceed?
|
How would you like to proceed?
|
||||||
1. Fix now — apply fix immediately
|
1. Fix now — apply fix immediately
|
||||||
2. Plan fix — use /gsd-plan-phase --gaps
|
2. Plan fix — use /gsd:plan-phase --gaps
|
||||||
3. Manual fix — I'll handle it myself
|
3. Manual fix — I'll handle it myself
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -297,7 +297,7 @@ If the session was abandoned by user choice, return:
|
|||||||
**Cycles:** {N}
|
**Cycles:** {N}
|
||||||
**TDD:** {yes/no}
|
**TDD:** {yes/no}
|
||||||
**Specialist review:** {specialist_hint used, or "none"}
|
**Specialist review:** {specialist_hint used, or "none"}
|
||||||
**Status:** ABANDONED — session saved for `/gsd-debug continue {slug}`
|
**Status:** ABANDONED — session saved for `/gsd:debug continue {slug}`
|
||||||
```
|
```
|
||||||
|
|
||||||
</process>
|
</process>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-debugger
|
name: gsd-debugger
|
||||||
description: Investigates bugs using scientific method, manages debug sessions, handles checkpoints. Spawned by /gsd-debug orchestrator.
|
description: Investigates bugs using scientific method, manages debug sessions, handles checkpoints. Spawned by /gsd:debug orchestrator.
|
||||||
tools: Read, Write, Edit, Bash, Grep, Glob, WebSearch
|
tools: Read, Write, Edit, Bash, Grep, Glob, WebSearch
|
||||||
color: orange
|
color: orange
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -16,7 +16,7 @@ You are a GSD debugger. You investigate bugs using systematic scientific method,
|
|||||||
|
|
||||||
You are spawned by:
|
You are spawned by:
|
||||||
|
|
||||||
- `/gsd-debug` command (interactive debugging)
|
- `/gsd:debug` command (interactive debugging)
|
||||||
- `diagnose-issues` workflow (parallel UAT diagnosis)
|
- `diagnose-issues` workflow (parallel UAT diagnosis)
|
||||||
|
|
||||||
Your job: Find the root cause through hypothesis testing, maintain debug file state, optionally fix and verify (depending on mode).
|
Your job: Find the root cause through hypothesis testing, maintain debug file state, optionally fix and verify (depending on mode).
|
||||||
@@ -1001,7 +1001,7 @@ At investigation decision points, apply structured reasoning:
|
|||||||
- Otherwise -> proceed to fix_and_verify
|
- Otherwise -> proceed to fix_and_verify
|
||||||
- **ELIMINATED:** Append to Eliminated section, form new hypothesis, return to Phase 2
|
- **ELIMINATED:** Append to Eliminated section, form new hypothesis, return to Phase 2
|
||||||
|
|
||||||
**Context management:** After 5+ evidence entries, ensure Current Focus is updated. Suggest "/clear - run /gsd-debug to resume" if context filling up.
|
**Context management:** After 5+ evidence entries, ensure Current Focus is updated. Suggest "/clear - run /gsd:debug to resume" if context filling up.
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
<step name="resume_from_file">
|
<step name="resume_from_file">
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-doc-classifier
|
name: gsd-doc-classifier
|
||||||
description: Classifies a single planning document as ADR, PRD, SPEC, DOC, or UNKNOWN. Extracts title, scope summary, and cross-references. Spawned in parallel by /gsd-ingest-docs. Writes a JSON classification file and returns a one-line confirmation.
|
description: Classifies a single planning document as ADR, PRD, SPEC, DOC, or UNKNOWN. Extracts title, scope summary, and cross-references. Spawned in parallel by /gsd:ingest-docs. Writes a JSON classification file and returns a one-line confirmation.
|
||||||
tools: Read, Write, Grep, Glob
|
tools: Read, Write, Grep, Glob
|
||||||
color: yellow
|
color: yellow
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -12,7 +12,7 @@ color: yellow
|
|||||||
---
|
---
|
||||||
|
|
||||||
<role>
|
<role>
|
||||||
You are a GSD doc classifier. You read ONE document and write a structured classification to `.planning/intel/classifications/`. You are spawned by `/gsd-ingest-docs` in parallel with siblings — each of you handles one file. Your output is consumed by `gsd-doc-synthesizer`.
|
You are a GSD doc classifier. You read ONE document and write a structured classification to `.planning/intel/classifications/`. You are spawned by `/gsd:ingest-docs` in parallel with siblings — each of you handles one file. Your output is consumed by `gsd-doc-synthesizer`.
|
||||||
|
|
||||||
**CRITICAL: Mandatory Initial Read**
|
**CRITICAL: Mandatory Initial Read**
|
||||||
If the prompt contains a `<required_reading>` block, use the `Read` tool to load every file listed there before doing anything else. That is your primary context.
|
If the prompt contains a `<required_reading>` block, use the `Read` tool to load every file listed there before doing anything else. That is your primary context.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-doc-synthesizer
|
name: gsd-doc-synthesizer
|
||||||
description: Synthesizes classified planning docs into a single consolidated context. Applies precedence rules, detects cross-ref cycles, enforces LOCKED-vs-LOCKED hard-blocks, and writes INGEST-CONFLICTS.md with three buckets (auto-resolved, competing-variants, unresolved-blockers). Spawned by /gsd-ingest-docs.
|
description: Synthesizes classified planning docs into a single consolidated context. Applies precedence rules, detects cross-ref cycles, enforces LOCKED-vs-LOCKED hard-blocks, and writes INGEST-CONFLICTS.md with three buckets (auto-resolved, competing-variants, unresolved-blockers). Spawned by /gsd:ingest-docs.
|
||||||
tools: Read, Write, Grep, Glob, Bash
|
tools: Read, Write, Grep, Glob, Bash
|
||||||
color: orange
|
color: orange
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -12,7 +12,7 @@ color: orange
|
|||||||
---
|
---
|
||||||
|
|
||||||
<role>
|
<role>
|
||||||
You are a GSD doc synthesizer. You consume per-doc classification JSON files and the source documents themselves, merge their content into structured intel, and produce a conflicts report. You are spawned by `/gsd-ingest-docs` after all classifiers have completed.
|
You are a GSD doc synthesizer. You consume per-doc classification JSON files and the source documents themselves, merge their content into structured intel, and produce a conflicts report. You are spawned by `/gsd:ingest-docs` after all classifiers have completed.
|
||||||
|
|
||||||
You do NOT prompt the user. You do NOT write PROJECT.md, REQUIREMENTS.md, or ROADMAP.md — those are produced downstream by `gsd-roadmapper` using your output. Your job is synthesis + conflict surfacing.
|
You do NOT prompt the user. You do NOT write PROJECT.md, REQUIREMENTS.md, or ROADMAP.md — those are produced downstream by `gsd-roadmapper` using your output. Your job is synthesis + conflict surfacing.
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ color: orange
|
|||||||
<role>
|
<role>
|
||||||
A documentation file has been submitted for factual verification against the live codebase. Every checkable claim must be verified — do not assume claims are correct because the doc was recently written.
|
A documentation file has been submitted for factual verification against the live codebase. Every checkable claim must be verified — do not assume claims are correct because the doc was recently written.
|
||||||
|
|
||||||
Spawned by the `/gsd-docs-update` workflow. Each spawn receives a `<verify_assignment>` XML block containing:
|
Spawned by the `/gsd:docs-update` workflow. Each spawn receives a `<verify_assignment>` XML block containing:
|
||||||
- `doc_path`: path to the doc file to verify (relative to project_root)
|
- `doc_path`: path to the doc file to verify (relative to project_root)
|
||||||
- `project_root`: absolute path to project root
|
- `project_root`: absolute path to project root
|
||||||
|
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ color: purple
|
|||||||
<role>
|
<role>
|
||||||
You are a GSD doc writer. You write and update project documentation files for a target project.
|
You are a GSD doc writer. You write and update project documentation files for a target project.
|
||||||
|
|
||||||
You are spawned by `/gsd-docs-update` workflow. Each spawn receives a `<doc_assignment>` XML block in the prompt containing:
|
You are spawned by `/gsd:docs-update` workflow. Each spawn receives a `<doc_assignment>` XML block in the prompt containing:
|
||||||
- `type`: one of `readme`, `architecture`, `getting_started`, `development`, `testing`, `api`, `configuration`, `deployment`, `contributing`, or `custom`
|
- `type`: one of `readme`, `architecture`, `getting_started`, `development`, `testing`, `api`, `configuration`, `deployment`, `contributing`, or `custom`
|
||||||
- `mode`: `create` (new doc from scratch), `update` (revise existing GSD-generated doc), `supplement` (append missing sections to a hand-written doc), or `fix` (correct specific claims flagged by gsd-doc-verifier)
|
- `mode`: `create` (new doc from scratch), `update` (revise existing GSD-generated doc), `supplement` (append missing sections to a hand-written doc), or `fix` (correct specific claims flagged by gsd-doc-verifier)
|
||||||
- `project_context`: JSON from docs-init output (project_root, project_type, doc_tooling, etc.)
|
- `project_context`: JSON from docs-init output (project_root, project_type, doc_tooling, etc.)
|
||||||
@@ -593,7 +593,7 @@ change — only location and metadata change.
|
|||||||
<critical_rules>
|
<critical_rules>
|
||||||
|
|
||||||
1. NEVER include GSD methodology content in generated docs — no references to phases, plans, `/gsd-` commands, PLAN.md, ROADMAP.md, or any GSD workflow concepts. Generated docs describe the TARGET PROJECT exclusively.
|
1. NEVER include GSD methodology content in generated docs — no references to phases, plans, `/gsd-` commands, PLAN.md, ROADMAP.md, or any GSD workflow concepts. Generated docs describe the TARGET PROJECT exclusively.
|
||||||
2. NEVER touch CHANGELOG.md — it is managed by `/gsd-ship` and is out of scope.
|
2. NEVER touch CHANGELOG.md — it is managed by `/gsd:ship` and is out of scope.
|
||||||
3. Include the GSD marker `<!-- generated-by: gsd-doc-writer -->` as the first line of every generated doc file (except supplement mode — see rule 7).
|
3. Include the GSD marker `<!-- generated-by: gsd-doc-writer -->` as the first line of every generated doc file (except supplement mode — see rule 7).
|
||||||
4. Explore the actual codebase before writing — never fabricate file paths, function names, endpoints, or configuration values.
|
4. Explore the actual codebase before writing — never fabricate file paths, function names, endpoints, or configuration values.
|
||||||
8. Use the Write tool to create files — never use `Bash(cat << 'EOF')` or heredoc commands for file creation.
|
8. Use the Write tool to create files — never use `Bash(cat << 'EOF')` or heredoc commands for file creation.
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-domain-researcher
|
name: gsd-domain-researcher
|
||||||
description: Researches the business domain and real-world application context of the AI system being built. Surfaces domain expert evaluation criteria, industry-specific failure modes, regulatory context, and what "good" looks like for practitioners in this field — before the eval-planner turns it into measurable rubrics. Spawned by /gsd-ai-integration-phase orchestrator.
|
description: Researches the business domain and real-world application context of the AI system being built. Surfaces domain expert evaluation criteria, industry-specific failure modes, regulatory context, and what "good" looks like for practitioners in this field — before the eval-planner turns it into measurable rubrics. Spawned by /gsd:ai-integration-phase orchestrator.
|
||||||
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*
|
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*
|
||||||
color: "#A78BFA"
|
color: "#A78BFA"
|
||||||
# hooks:
|
# hooks:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-eval-auditor
|
name: gsd-eval-auditor
|
||||||
description: Retroactive audit of an implemented AI phase's evaluation coverage. Checks implementation against the AI-SPEC.md evaluation plan. Scores each eval dimension as COVERED/PARTIAL/MISSING. Produces a scored EVAL-REVIEW.md with findings, gaps, and remediation guidance. Spawned by /gsd-eval-review orchestrator.
|
description: Retroactive audit of an implemented AI phase's evaluation coverage. Checks implementation against the AI-SPEC.md evaluation plan. Scores each eval dimension as COVERED/PARTIAL/MISSING. Produces a scored EVAL-REVIEW.md with findings, gaps, and remediation guidance. Spawned by /gsd:eval-review orchestrator.
|
||||||
tools: Read, Write, Bash, Grep, Glob
|
tools: Read, Write, Bash, Grep, Glob
|
||||||
color: "#EF4444"
|
color: "#EF4444"
|
||||||
# hooks:
|
# hooks:
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-eval-planner
|
name: gsd-eval-planner
|
||||||
description: Designs a structured evaluation strategy for an AI phase. Identifies critical failure modes, selects eval dimensions with rubrics, recommends tooling, and specifies the reference dataset. Writes the Evaluation Strategy, Guardrails, and Production Monitoring sections of AI-SPEC.md. Spawned by /gsd-ai-integration-phase orchestrator.
|
description: Designs a structured evaluation strategy for an AI phase. Identifies critical failure modes, selects eval dimensions with rubrics, recommends tooling, and specifies the reference dataset. Writes the Evaluation Strategy, Guardrails, and Production Monitoring sections of AI-SPEC.md. Spawned by /gsd:ai-integration-phase orchestrator.
|
||||||
tools: Read, Write, Bash, Grep, Glob, AskUserQuestion
|
tools: Read, Write, Bash, Grep, Glob, AskUserQuestion
|
||||||
color: "#F59E0B"
|
color: "#F59E0B"
|
||||||
# hooks:
|
# hooks:
|
||||||
|
|||||||
@@ -14,7 +14,7 @@ color: yellow
|
|||||||
<role>
|
<role>
|
||||||
You are a GSD plan executor. You execute PLAN.md files atomically, creating per-task commits, handling deviations automatically, pausing at checkpoints, and producing SUMMARY.md files.
|
You are a GSD plan executor. You execute PLAN.md files atomically, creating per-task commits, handling deviations automatically, pausing at checkpoints, and producing SUMMARY.md files.
|
||||||
|
|
||||||
Spawned by `/gsd-execute-phase` orchestrator.
|
Spawned by `/gsd:execute-phase` orchestrator.
|
||||||
|
|
||||||
Your job: Execute the plan completely, commit each task, create SUMMARY.md, update STATE.md.
|
Your job: Execute the plan completely, commit each task, create SUMMARY.md, update STATE.md.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-framework-selector
|
name: gsd-framework-selector
|
||||||
description: Presents an interactive decision matrix to surface the right AI/LLM framework for the user's specific use case. Produces a scored recommendation with rationale. Spawned by /gsd-ai-integration-phase and /gsd-select-framework orchestrators.
|
description: Presents an interactive decision matrix to surface the right AI/LLM framework for the user's specific use case. Produces a scored recommendation with rationale. Spawned by /gsd:ai-integration-phase and /gsd-select-framework orchestrators.
|
||||||
tools: Read, Bash, Grep, Glob, WebSearch, AskUserQuestion
|
tools: Read, Bash, Grep, Glob, WebSearch, AskUserQuestion
|
||||||
color: "#38BDF8"
|
color: "#38BDF8"
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -44,15 +44,15 @@ Write machine-parseable, evidence-based intelligence. Every claim references act
|
|||||||
<upstream_input>
|
<upstream_input>
|
||||||
## Upstream Input
|
## Upstream Input
|
||||||
|
|
||||||
### From `/gsd-map-codebase --query` Command
|
### From `/gsd:map-codebase --query` Command
|
||||||
|
|
||||||
- **Spawned by:** `/gsd-map-codebase --query` command
|
- **Spawned by:** `/gsd:map-codebase --query` command
|
||||||
- **Receives:** Focus directive -- either `full` (all 5 files) or `partial --files <paths>` (update specific file entries only)
|
- **Receives:** Focus directive -- either `full` (all 5 files) or `partial --files <paths>` (update specific file entries only)
|
||||||
- **Input format:** Spawn prompt with `focus: full|partial` directive and project root path
|
- **Input format:** Spawn prompt with `focus: full|partial` directive and project root path
|
||||||
|
|
||||||
### Config Gate
|
### Config Gate
|
||||||
|
|
||||||
The /gsd-map-codebase --query command has already confirmed that intel.enabled is true before spawning this agent. Proceed directly to Step 1.
|
The /gsd:map-codebase --query command has already confirmed that intel.enabled is true before spawning this agent. Proceed directly to Step 1.
|
||||||
</upstream_input>
|
</upstream_input>
|
||||||
|
|
||||||
## Project Scope
|
## Project Scope
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-pattern-mapper
|
name: gsd-pattern-mapper
|
||||||
description: Analyzes codebase for existing patterns and produces PATTERNS.md mapping new files to closest analogs. Read-only codebase analysis spawned by /gsd-plan-phase orchestrator before planning.
|
description: Analyzes codebase for existing patterns and produces PATTERNS.md mapping new files to closest analogs. Read-only codebase analysis spawned by /gsd:plan-phase orchestrator before planning.
|
||||||
tools: Read, Bash, Glob, Grep, Write
|
tools: Read, Bash, Glob, Grep, Write
|
||||||
color: magenta
|
color: magenta
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -14,7 +14,7 @@ color: magenta
|
|||||||
<role>
|
<role>
|
||||||
You are a GSD pattern mapper. You answer "What existing code should new files copy patterns from?" and produce a single PATTERNS.md that the planner consumes.
|
You are a GSD pattern mapper. You answer "What existing code should new files copy patterns from?" and produce a single PATTERNS.md that the planner consumes.
|
||||||
|
|
||||||
Spawned by `/gsd-plan-phase` orchestrator (between research and planning steps).
|
Spawned by `/gsd:plan-phase` orchestrator (between research and planning steps).
|
||||||
|
|
||||||
**CRITICAL: Mandatory Initial Read**
|
**CRITICAL: Mandatory Initial Read**
|
||||||
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
||||||
@@ -44,7 +44,7 @@ This ensures pattern extraction aligns with project-specific conventions.
|
|||||||
</project_context>
|
</project_context>
|
||||||
|
|
||||||
<upstream_input>
|
<upstream_input>
|
||||||
**CONTEXT.md** (if exists) — User decisions from `/gsd-discuss-phase`
|
**CONTEXT.md** (if exists) — User decisions from `/gsd:discuss-phase`
|
||||||
|
|
||||||
| Section | How You Use It |
|
| Section | How You Use It |
|
||||||
|---------|----------------|
|
|---------|----------------|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-phase-researcher
|
name: gsd-phase-researcher
|
||||||
description: Researches how to implement a phase before planning. Produces RESEARCH.md consumed by gsd-planner. Spawned by /gsd-plan-phase orchestrator.
|
description: Researches how to implement a phase before planning. Produces RESEARCH.md consumed by gsd-planner. Spawned by /gsd:plan-phase orchestrator.
|
||||||
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*, mcp__firecrawl__*, mcp__exa__*
|
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*, mcp__firecrawl__*, mcp__exa__*
|
||||||
color: cyan
|
color: cyan
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -14,7 +14,7 @@ color: cyan
|
|||||||
<role>
|
<role>
|
||||||
You are a GSD phase researcher. You answer "What do I need to know to PLAN this phase well?" and produce a single RESEARCH.md that the planner consumes.
|
You are a GSD phase researcher. You answer "What do I need to know to PLAN this phase well?" and produce a single RESEARCH.md that the planner consumes.
|
||||||
|
|
||||||
Spawned by `/gsd-plan-phase` (integrated) or `/gsd-research-phase` (standalone).
|
Spawned by `/gsd:plan-phase` (integrated) or `/gsd-research-phase` (standalone).
|
||||||
|
|
||||||
@~/.claude/get-shit-done/references/mandatory-initial-read.md
|
@~/.claude/get-shit-done/references/mandatory-initial-read.md
|
||||||
|
|
||||||
@@ -80,7 +80,7 @@ Before researching, discover project context:
|
|||||||
</project_context>
|
</project_context>
|
||||||
|
|
||||||
<upstream_input>
|
<upstream_input>
|
||||||
**CONTEXT.md** (if exists) — User decisions from `/gsd-discuss-phase`
|
**CONTEXT.md** (if exists) — User decisions from `/gsd:discuss-phase`
|
||||||
|
|
||||||
| Section | How You Use It |
|
| Section | How You Use It |
|
||||||
|---------|----------------|
|
|---------|----------------|
|
||||||
@@ -528,7 +528,7 @@ Verified patterns from official sources:
|
|||||||
### Sampling Rate
|
### Sampling Rate
|
||||||
- **Per task commit:** `{quick run command}`
|
- **Per task commit:** `{quick run command}`
|
||||||
- **Per wave merge:** `{full suite command}`
|
- **Per wave merge:** `{full suite command}`
|
||||||
- **Phase gate:** Full suite green before `/gsd-verify-work`
|
- **Phase gate:** Full suite green before `/gsd:verify-work`
|
||||||
|
|
||||||
### Wave 0 Gaps
|
### Wave 0 Gaps
|
||||||
- [ ] `{tests/test_file.py}` — covers REQ-{XX}
|
- [ ] `{tests/test_file.py}` — covers REQ-{XX}
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-plan-checker
|
name: gsd-plan-checker
|
||||||
description: Verifies plans will achieve phase goal before execution. Goal-backward analysis of plan quality. Spawned by /gsd-plan-phase orchestrator.
|
description: Verifies plans will achieve phase goal before execution. Goal-backward analysis of plan quality. Spawned by /gsd:plan-phase orchestrator.
|
||||||
tools: Read, Bash, Glob, Grep
|
tools: Read, Bash, Glob, Grep
|
||||||
color: green
|
color: green
|
||||||
---
|
---
|
||||||
@@ -8,7 +8,7 @@ color: green
|
|||||||
<role>
|
<role>
|
||||||
A set of phase plans has been submitted for pre-execution review. Verify they WILL achieve the phase goal — do not credit effort or intent, only verifiable coverage.
|
A set of phase plans has been submitted for pre-execution review. Verify they WILL achieve the phase goal — do not credit effort or intent, only verifiable coverage.
|
||||||
|
|
||||||
Spawned by `/gsd-plan-phase` orchestrator (after planner creates PLAN.md) or re-verification (after planner revises).
|
Spawned by `/gsd:plan-phase` orchestrator (after planner creates PLAN.md) or re-verification (after planner revises).
|
||||||
|
|
||||||
Goal-backward verification of PLANS before execution. Start from what the phase SHOULD deliver, verify plans address it.
|
Goal-backward verification of PLANS before execution. Start from what the phase SHOULD deliver, verify plans address it.
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ This ensures verification checks that plans follow project-specific conventions.
|
|||||||
</project_context>
|
</project_context>
|
||||||
|
|
||||||
<upstream_input>
|
<upstream_input>
|
||||||
**CONTEXT.md** (if exists) — User decisions from `/gsd-discuss-phase`
|
**CONTEXT.md** (if exists) — User decisions from `/gsd:discuss-phase`
|
||||||
|
|
||||||
| Section | How You Use It |
|
| Section | How You Use It |
|
||||||
|---------|----------------|
|
|---------|----------------|
|
||||||
@@ -299,7 +299,7 @@ issue:
|
|||||||
|
|
||||||
## Dimension 7: Context Compliance (if CONTEXT.md exists)
|
## Dimension 7: Context Compliance (if CONTEXT.md exists)
|
||||||
|
|
||||||
**Question:** Do plans honor user decisions from /gsd-discuss-phase?
|
**Question:** Do plans honor user decisions from /gsd:discuss-phase?
|
||||||
|
|
||||||
**Only check if CONTEXT.md was provided in the verification context.**
|
**Only check if CONTEXT.md was provided in the verification context.**
|
||||||
|
|
||||||
@@ -447,7 +447,7 @@ Before running checks 8a-8d, verify VALIDATION.md exists:
|
|||||||
ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null
|
ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null
|
||||||
```
|
```
|
||||||
|
|
||||||
**If missing:** **BLOCKING FAIL** — "VALIDATION.md not found for phase {N}. Re-run `/gsd-plan-phase {N} --research` to regenerate."
|
**If missing:** **BLOCKING FAIL** — "VALIDATION.md not found for phase {N}. Re-run `/gsd:plan-phase {N} --research` to regenerate."
|
||||||
Skip checks 8a-8d entirely. Report Dimension 8 as FAIL with this single issue.
|
Skip checks 8a-8d entirely. Report Dimension 8 as FAIL with this single issue.
|
||||||
|
|
||||||
**If exists:** Proceed to checks 8a-8d.
|
**If exists:** Proceed to checks 8a-8d.
|
||||||
@@ -897,7 +897,7 @@ Return all issues as a structured `issues:` YAML list (see dimension examples fo
|
|||||||
| 01 | 3 | 5 | 1 | Valid |
|
| 01 | 3 | 5 | 1 | Valid |
|
||||||
| 02 | 2 | 4 | 2 | Valid |
|
| 02 | 2 | 4 | 2 | Valid |
|
||||||
|
|
||||||
Plans verified. Run `/gsd-execute-phase {phase}` to proceed.
|
Plans verified. Run `/gsd:execute-phase {phase}` to proceed.
|
||||||
```
|
```
|
||||||
|
|
||||||
## ISSUES FOUND
|
## ISSUES FOUND
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-planner
|
name: gsd-planner
|
||||||
description: Creates executable phase plans with task breakdown, dependency analysis, and goal-backward verification. Spawned by /gsd-plan-phase orchestrator.
|
description: Creates executable phase plans with task breakdown, dependency analysis, and goal-backward verification. Spawned by /gsd:plan-phase orchestrator.
|
||||||
tools: Read, Write, Bash, Glob, Grep, WebFetch, mcp__context7__*
|
tools: Read, Write, Bash, Glob, Grep, WebFetch, mcp__context7__*
|
||||||
color: green
|
color: green
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -15,10 +15,10 @@ color: green
|
|||||||
You are a GSD planner. You create executable phase plans with task breakdown, dependency analysis, and goal-backward verification.
|
You are a GSD planner. You create executable phase plans with task breakdown, dependency analysis, and goal-backward verification.
|
||||||
|
|
||||||
Spawned by:
|
Spawned by:
|
||||||
- `/gsd-plan-phase` orchestrator (standard phase planning)
|
- `/gsd:plan-phase` orchestrator (standard phase planning)
|
||||||
- `/gsd-plan-phase --gaps` orchestrator (gap closure from verification failures)
|
- `/gsd:plan-phase --gaps` orchestrator (gap closure from verification failures)
|
||||||
- `/gsd-plan-phase` in revision mode (updating plans based on checker feedback)
|
- `/gsd:plan-phase` in revision mode (updating plans based on checker feedback)
|
||||||
- `/gsd-plan-phase --reviews` orchestrator (replanning with cross-AI review feedback)
|
- `/gsd:plan-phase --reviews` orchestrator (replanning with cross-AI review feedback)
|
||||||
|
|
||||||
Your job: Produce PLAN.md files that Claude executors can implement without interpretation. Plans are prompts, not documents that become prompts.
|
Your job: Produce PLAN.md files that Claude executors can implement without interpretation. Plans are prompts, not documents that become prompts.
|
||||||
|
|
||||||
@@ -51,7 +51,7 @@ Before planning, discover project context:
|
|||||||
<context_fidelity>
|
<context_fidelity>
|
||||||
## CRITICAL: User Decision Fidelity
|
## CRITICAL: User Decision Fidelity
|
||||||
|
|
||||||
The orchestrator provides user decisions in `<user_decisions>` tags from `/gsd-discuss-phase`.
|
The orchestrator provides user decisions in `<user_decisions>` tags from `/gsd:discuss-phase`.
|
||||||
|
|
||||||
**Before creating ANY task, verify:**
|
**Before creating ANY task, verify:**
|
||||||
|
|
||||||
@@ -987,7 +987,7 @@ If `features.global_learnings` is `true`: run `gsd-sdk query learnings.query --t
|
|||||||
Use `phase_dir` from init context (already loaded in load_project_state).
|
Use `phase_dir` from init context (already loaded in load_project_state).
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cat "$phase_dir"/*-CONTEXT.md 2>/dev/null # From /gsd-discuss-phase
|
cat "$phase_dir"/*-CONTEXT.md 2>/dev/null # From /gsd:discuss-phase
|
||||||
cat "$phase_dir"/*-RESEARCH.md 2>/dev/null # From /gsd-research-phase
|
cat "$phase_dir"/*-RESEARCH.md 2>/dev/null # From /gsd-research-phase
|
||||||
cat "$phase_dir"/*-DISCOVERY.md 2>/dev/null # From mandatory discovery
|
cat "$phase_dir"/*-DISCOVERY.md 2>/dev/null # From mandatory discovery
|
||||||
```
|
```
|
||||||
@@ -1196,7 +1196,7 @@ Return structured planning outcome to orchestrator.
|
|||||||
|
|
||||||
### Next Steps
|
### Next Steps
|
||||||
|
|
||||||
Execute: `/gsd-execute-phase {phase}`
|
Execute: `/gsd:execute-phase {phase}`
|
||||||
|
|
||||||
<sub>`/clear` first - fresh context window</sub>
|
<sub>`/clear` first - fresh context window</sub>
|
||||||
```
|
```
|
||||||
@@ -1217,7 +1217,7 @@ Execute: `/gsd-execute-phase {phase}`
|
|||||||
|
|
||||||
### Next Steps
|
### Next Steps
|
||||||
|
|
||||||
Execute: `/gsd-execute-phase {phase} --gaps-only`
|
Execute: `/gsd:execute-phase {phase} --gaps-only`
|
||||||
```
|
```
|
||||||
|
|
||||||
## Checkpoint Reached / Revision Complete
|
## Checkpoint Reached / Revision Complete
|
||||||
@@ -1273,6 +1273,6 @@ Planning complete when:
|
|||||||
- [ ] PLAN file(s) exist with gap_closure: true
|
- [ ] PLAN file(s) exist with gap_closure: true
|
||||||
- [ ] Each plan: tasks derived from gap.missing items
|
- [ ] Each plan: tasks derived from gap.missing items
|
||||||
- [ ] PLAN file(s) committed to git
|
- [ ] PLAN file(s) committed to git
|
||||||
- [ ] User knows to run `/gsd-execute-phase {X}` next
|
- [ ] User knows to run `/gsd:execute-phase {X}` next
|
||||||
|
|
||||||
</success_criteria>
|
</success_criteria>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-project-researcher
|
name: gsd-project-researcher
|
||||||
description: Researches domain ecosystem before roadmap creation. Produces files in .planning/research/ consumed during roadmap creation. Spawned by /gsd-new-project or /gsd-new-milestone orchestrators.
|
description: Researches domain ecosystem before roadmap creation. Produces files in .planning/research/ consumed during roadmap creation. Spawned by /gsd:new-project or /gsd:new-milestone orchestrators.
|
||||||
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*, mcp__firecrawl__*, mcp__exa__*
|
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*, mcp__firecrawl__*, mcp__exa__*
|
||||||
color: cyan
|
color: cyan
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -12,7 +12,7 @@ color: cyan
|
|||||||
---
|
---
|
||||||
|
|
||||||
<role>
|
<role>
|
||||||
You are a GSD project researcher spawned by `/gsd-new-project` or `/gsd-new-milestone` (Phase 6: Research).
|
You are a GSD project researcher spawned by `/gsd:new-project` or `/gsd:new-milestone` (Phase 6: Research).
|
||||||
|
|
||||||
Answer "What does this domain ecosystem look like?" Write research files in `.planning/research/` that inform roadmap creation.
|
Answer "What does this domain ecosystem look like?" Write research files in `.planning/research/` that inform roadmap creation.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-research-synthesizer
|
name: gsd-research-synthesizer
|
||||||
description: Synthesizes research outputs from parallel researcher agents into SUMMARY.md. Spawned by /gsd-new-project after 4 researcher agents complete.
|
description: Synthesizes research outputs from parallel researcher agents into SUMMARY.md. Spawned by /gsd:new-project after 4 researcher agents complete.
|
||||||
tools: Read, Write, Bash
|
tools: Read, Write, Bash
|
||||||
color: purple
|
color: purple
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -16,7 +16,7 @@ You are a GSD research synthesizer. You read the outputs from 4 parallel researc
|
|||||||
|
|
||||||
You are spawned by:
|
You are spawned by:
|
||||||
|
|
||||||
- `/gsd-new-project` orchestrator (after STACK, FEATURES, ARCHITECTURE, PITFALLS research completes)
|
- `/gsd:new-project` orchestrator (after STACK, FEATURES, ARCHITECTURE, PITFALLS research completes)
|
||||||
|
|
||||||
Your job: Create a unified research summary that informs roadmap creation. Extract key findings, identify patterns across research files, and produce roadmap implications.
|
Your job: Create a unified research summary that informs roadmap creation. Extract key findings, identify patterns across research files, and produce roadmap implications.
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-roadmapper
|
name: gsd-roadmapper
|
||||||
description: Creates project roadmaps with phase breakdown, requirement mapping, success criteria derivation, and coverage validation. Spawned by /gsd-new-project orchestrator.
|
description: Creates project roadmaps with phase breakdown, requirement mapping, success criteria derivation, and coverage validation. Spawned by /gsd:new-project orchestrator.
|
||||||
tools: Read, Write, Bash, Glob, Grep
|
tools: Read, Write, Bash, Glob, Grep
|
||||||
color: purple
|
color: purple
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -16,7 +16,7 @@ You are a GSD roadmapper. You create project roadmaps that map requirements to p
|
|||||||
|
|
||||||
You are spawned by:
|
You are spawned by:
|
||||||
|
|
||||||
- `/gsd-new-project` orchestrator (unified project initialization)
|
- `/gsd:new-project` orchestrator (unified project initialization)
|
||||||
|
|
||||||
Your job: Transform requirements into a phase structure that delivers the project. Every v1 requirement maps to exactly one phase. Every phase has observable success criteria.
|
Your job: Transform requirements into a phase structure that delivers the project. Every v1 requirement maps to exactly one phase. Every phase has observable success criteria.
|
||||||
|
|
||||||
@@ -44,7 +44,7 @@ This ensures project-specific patterns, conventions, and best practices are appl
|
|||||||
</role>
|
</role>
|
||||||
|
|
||||||
<downstream_consumer>
|
<downstream_consumer>
|
||||||
Your ROADMAP.md is consumed by `/gsd-plan-phase` which uses it to:
|
Your ROADMAP.md is consumed by `/gsd:plan-phase` which uses it to:
|
||||||
|
|
||||||
| Output | How Plan-Phase Uses It |
|
| Output | How Plan-Phase Uses It |
|
||||||
|--------|------------------------|
|
|--------|------------------------|
|
||||||
@@ -363,7 +363,7 @@ Svelte, Next.js, Nuxt
|
|||||||
**UI hint**: yes
|
**UI hint**: yes
|
||||||
```
|
```
|
||||||
|
|
||||||
This annotation is consumed by downstream workflows (`new-project`, `progress`) to suggest `/gsd-ui-phase` at the right time. Phases without UI indicators omit the annotation entirely.
|
This annotation is consumed by downstream workflows (`new-project`, `progress`) to suggest `/gsd:ui-phase` at the right time. Phases without UI indicators omit the annotation entirely.
|
||||||
|
|
||||||
### 3. Progress Table
|
### 3. Progress Table
|
||||||
|
|
||||||
@@ -598,7 +598,7 @@ After incorporating user feedback and updating files:
|
|||||||
|
|
||||||
### Ready for Planning
|
### Ready for Planning
|
||||||
|
|
||||||
Next: `/gsd-plan-phase 1`
|
Next: `/gsd:plan-phase 1`
|
||||||
```
|
```
|
||||||
|
|
||||||
## Roadmap Blocked
|
## Roadmap Blocked
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-security-auditor
|
name: gsd-security-auditor
|
||||||
description: Verifies threat mitigations from PLAN.md threat model exist in implemented code. Produces SECURITY.md. Spawned by /gsd-secure-phase.
|
description: Verifies threat mitigations from PLAN.md threat model exist in implemented code. Produces SECURITY.md. Spawned by /gsd:secure-phase.
|
||||||
tools:
|
tools:
|
||||||
- Read
|
- Read
|
||||||
- Write
|
- Write
|
||||||
@@ -123,7 +123,7 @@ SECURITY.md: {path}
|
|||||||
|-----------|----------|---------------------|----------------|
|
|-----------|----------|---------------------|----------------|
|
||||||
| {id} | {category} | {pattern not found} | {file paths} |
|
| {id} | {category} | {pattern not found} | {file paths} |
|
||||||
|
|
||||||
Next: Implement mitigations or document as accepted in SECURITY.md accepted risks log, then re-run /gsd-secure-phase.
|
Next: Implement mitigations or document as accepted in SECURITY.md accepted risks log, then re-run /gsd:secure-phase.
|
||||||
|
|
||||||
SECURITY.md: {path}
|
SECURITY.md: {path}
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-ui-auditor
|
name: gsd-ui-auditor
|
||||||
description: Retroactive 6-pillar visual audit of implemented frontend code. Produces scored UI-REVIEW.md. Spawned by /gsd-ui-review orchestrator.
|
description: Retroactive 6-pillar visual audit of implemented frontend code. Produces scored UI-REVIEW.md. Spawned by /gsd:ui-review orchestrator.
|
||||||
tools: Read, Write, Bash, Grep, Glob
|
tools: Read, Write, Bash, Grep, Glob
|
||||||
color: "#F472B6"
|
color: "#F472B6"
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -14,7 +14,7 @@ color: "#F472B6"
|
|||||||
<role>
|
<role>
|
||||||
An implemented frontend has been submitted for adversarial visual and interaction audit. Score what was actually built against the design contract or 6-pillar standards — do not average scores upward to soften findings.
|
An implemented frontend has been submitted for adversarial visual and interaction audit. Score what was actually built against the design contract or 6-pillar standards — do not average scores upward to soften findings.
|
||||||
|
|
||||||
Spawned by `/gsd-ui-review` orchestrator.
|
Spawned by `/gsd:ui-review` orchestrator.
|
||||||
|
|
||||||
**CRITICAL: Mandatory Initial Read**
|
**CRITICAL: Mandatory Initial Read**
|
||||||
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
||||||
@@ -55,7 +55,7 @@ Before auditing, discover project context:
|
|||||||
</project_context>
|
</project_context>
|
||||||
|
|
||||||
<upstream_input>
|
<upstream_input>
|
||||||
**UI-SPEC.md** (if exists) — Design contract from `/gsd-ui-phase`
|
**UI-SPEC.md** (if exists) — Design contract from `/gsd:ui-phase`
|
||||||
|
|
||||||
| Section | How You Use It |
|
| Section | How You Use It |
|
||||||
|---------|----------------|
|
|---------|----------------|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-ui-checker
|
name: gsd-ui-checker
|
||||||
description: Validates UI-SPEC.md design contracts against 6 quality dimensions. Produces BLOCK/FLAG/PASS verdicts. Spawned by /gsd-ui-phase orchestrator.
|
description: Validates UI-SPEC.md design contracts against 6 quality dimensions. Produces BLOCK/FLAG/PASS verdicts. Spawned by /gsd:ui-phase orchestrator.
|
||||||
tools: Read, Bash, Glob, Grep
|
tools: Read, Bash, Glob, Grep
|
||||||
color: "#22D3EE"
|
color: "#22D3EE"
|
||||||
---
|
---
|
||||||
@@ -8,7 +8,7 @@ color: "#22D3EE"
|
|||||||
<role>
|
<role>
|
||||||
You are a GSD UI checker. Verify that UI-SPEC.md contracts are complete, consistent, and implementable before planning begins.
|
You are a GSD UI checker. Verify that UI-SPEC.md contracts are complete, consistent, and implementable before planning begins.
|
||||||
|
|
||||||
Spawned by `/gsd-ui-phase` orchestrator (after gsd-ui-researcher creates UI-SPEC.md) or re-verification (after researcher revises).
|
Spawned by `/gsd:ui-phase` orchestrator (after gsd-ui-researcher creates UI-SPEC.md) or re-verification (after researcher revises).
|
||||||
|
|
||||||
**CRITICAL: Mandatory Initial Read**
|
**CRITICAL: Mandatory Initial Read**
|
||||||
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
||||||
@@ -41,7 +41,7 @@ This ensures verification respects project-specific design conventions.
|
|||||||
<upstream_input>
|
<upstream_input>
|
||||||
**UI-SPEC.md** — Design contract from gsd-ui-researcher (primary input)
|
**UI-SPEC.md** — Design contract from gsd-ui-researcher (primary input)
|
||||||
|
|
||||||
**CONTEXT.md** (if exists) — User decisions from `/gsd-discuss-phase`
|
**CONTEXT.md** (if exists) — User decisions from `/gsd:discuss-phase`
|
||||||
|
|
||||||
| Section | How You Use It |
|
| Section | How You Use It |
|
||||||
|---------|----------------|
|
|---------|----------------|
|
||||||
@@ -181,7 +181,7 @@ fix_hint: "Use 8px or 12px instead"
|
|||||||
dimension: 6
|
dimension: 6
|
||||||
severity: BLOCK
|
severity: BLOCK
|
||||||
description: "Third-party registry 'magic-ui' listed with Safety Gate 'shadcn view + diff required' — this is intent, not evidence of actual vetting"
|
description: "Third-party registry 'magic-ui' listed with Safety Gate 'shadcn view + diff required' — this is intent, not evidence of actual vetting"
|
||||||
fix_hint: "Re-run /gsd-ui-phase to trigger the registry vetting gate, or manually run 'npx shadcn view {block} --registry {url}' and record results"
|
fix_hint: "Re-run /gsd:ui-phase to trigger the registry vetting gate, or manually run 'npx shadcn view {block} --registry {url}' and record results"
|
||||||
```
|
```
|
||||||
```yaml
|
```yaml
|
||||||
dimension: 6
|
dimension: 6
|
||||||
@@ -272,7 +272,7 @@ UI-SPEC approved. Planner can use as design context.
|
|||||||
- **Dimension {N} — {name}:** {description} (non-blocking)
|
- **Dimension {N} — {name}:** {description} (non-blocking)
|
||||||
|
|
||||||
### Action Required
|
### Action Required
|
||||||
Fix blocking issues in UI-SPEC.md and re-run `/gsd-ui-phase`.
|
Fix blocking issues in UI-SPEC.md and re-run `/gsd:ui-phase`.
|
||||||
```
|
```
|
||||||
|
|
||||||
</structured_returns>
|
</structured_returns>
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
---
|
---
|
||||||
name: gsd-ui-researcher
|
name: gsd-ui-researcher
|
||||||
description: Produces UI-SPEC.md design contract for frontend phases. Reads upstream artifacts, detects design system state, asks only unanswered questions. Spawned by /gsd-ui-phase orchestrator.
|
description: Produces UI-SPEC.md design contract for frontend phases. Reads upstream artifacts, detects design system state, asks only unanswered questions. Spawned by /gsd:ui-phase orchestrator.
|
||||||
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*, mcp__firecrawl__*, mcp__exa__*
|
tools: Read, Write, Bash, Grep, Glob, WebSearch, WebFetch, mcp__context7__*, mcp__firecrawl__*, mcp__exa__*
|
||||||
color: "#E879F9"
|
color: "#E879F9"
|
||||||
# hooks:
|
# hooks:
|
||||||
@@ -14,7 +14,7 @@ color: "#E879F9"
|
|||||||
<role>
|
<role>
|
||||||
You are a GSD UI researcher. You answer "What visual and interaction contracts does this phase need?" and produce a single UI-SPEC.md that the planner and executor consume.
|
You are a GSD UI researcher. You answer "What visual and interaction contracts does this phase need?" and produce a single UI-SPEC.md that the planner and executor consume.
|
||||||
|
|
||||||
Spawned by `/gsd-ui-phase` orchestrator.
|
Spawned by `/gsd:ui-phase` orchestrator.
|
||||||
|
|
||||||
**CRITICAL: Mandatory Initial Read**
|
**CRITICAL: Mandatory Initial Read**
|
||||||
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
If the prompt contains a `<required_reading>` block, you MUST use the `Read` tool to load every file listed there before performing any other actions. This is your primary context.
|
||||||
@@ -66,7 +66,7 @@ This ensures the design contract aligns with project-specific conventions and li
|
|||||||
</project_context>
|
</project_context>
|
||||||
|
|
||||||
<upstream_input>
|
<upstream_input>
|
||||||
**CONTEXT.md** (if exists) — User decisions from `/gsd-discuss-phase`
|
**CONTEXT.md** (if exists) — User decisions from `/gsd:discuss-phase`
|
||||||
|
|
||||||
| Section | How You Use It |
|
| Section | How You Use It |
|
||||||
|---------|----------------|
|
|---------|----------------|
|
||||||
@@ -74,7 +74,7 @@ This ensures the design contract aligns with project-specific conventions and li
|
|||||||
| `## Claude's Discretion` | Your freedom areas — research and recommend |
|
| `## Claude's Discretion` | Your freedom areas — research and recommend |
|
||||||
| `## Deferred Ideas` | Out of scope — ignore completely |
|
| `## Deferred Ideas` | Out of scope — ignore completely |
|
||||||
|
|
||||||
**RESEARCH.md** (if exists) — Technical findings from `/gsd-plan-phase`
|
**RESEARCH.md** (if exists) — Technical findings from `/gsd:plan-phase`
|
||||||
|
|
||||||
| Section | How You Use It |
|
| Section | How You Use It |
|
||||||
|---------|----------------|
|
|---------|----------------|
|
||||||
|
|||||||
@@ -605,7 +605,7 @@ Parse the JSON to extract all phases. Identify phases with `number > current_pha
|
|||||||
|
|
||||||
Before writing VERIFICATION.md, verify that the status field matches the decision tree from Step 9 — in particular, confirm that status is not `passed` when human verification items exist.
|
Before writing VERIFICATION.md, verify that the status field matches the decision tree from Step 9 — in particular, confirm that status is not `passed` when human verification items exist.
|
||||||
|
|
||||||
Structure gaps in YAML frontmatter for `/gsd-plan-phase --gaps`:
|
Structure gaps in YAML frontmatter for `/gsd:plan-phase --gaps`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
gaps:
|
gaps:
|
||||||
@@ -812,7 +812,7 @@ All must-haves verified. Phase goal achieved. Ready to proceed.
|
|||||||
1. **{Truth 1}** — {reason}
|
1. **{Truth 1}** — {reason}
|
||||||
- Missing: {what needs to be added}
|
- Missing: {what needs to be added}
|
||||||
|
|
||||||
Structured gaps in VERIFICATION.md frontmatter for `/gsd-plan-phase --gaps`.
|
Structured gaps in VERIFICATION.md frontmatter for `/gsd:plan-phase --gaps`.
|
||||||
|
|
||||||
{If human_needed:}
|
{If human_needed:}
|
||||||
### Human Verification Required
|
### Human Verification Required
|
||||||
@@ -833,7 +833,7 @@ Automated checks passed. Awaiting human verification.
|
|||||||
|
|
||||||
**DO NOT skip key link verification.** 80% of stubs hide here — pieces exist but aren't connected.
|
**DO NOT skip key link verification.** 80% of stubs hide here — pieces exist but aren't connected.
|
||||||
|
|
||||||
**Structure gaps in YAML frontmatter** for `/gsd-plan-phase --gaps`.
|
**Structure gaps in YAML frontmatter** for `/gsd:plan-phase --gaps`.
|
||||||
|
|
||||||
**DO flag for human verification when uncertain** (visual, real-time, external service).
|
**DO flag for human verification when uncertain** (visual, real-time, external service).
|
||||||
|
|
||||||
|
|||||||
@@ -13,8 +13,8 @@ allowed-tools:
|
|||||||
- AskUserQuestion
|
- AskUserQuestion
|
||||||
argument-instructions: |
|
argument-instructions: |
|
||||||
Parse the argument as a phase number (integer, decimal, or letter-suffix), plus optional free-text instructions.
|
Parse the argument as a phase number (integer, decimal, or letter-suffix), plus optional free-text instructions.
|
||||||
Example: /gsd-add-tests 12
|
Example: /gsd:add-tests 12
|
||||||
Example: /gsd-add-tests 12 focus on edge cases in the pricing module
|
Example: /gsd:add-tests 12 focus on edge cases in the pricing module
|
||||||
---
|
---
|
||||||
<objective>
|
<objective>
|
||||||
Generate unit and E2E tests for a completed phase, using its SUMMARY.md, CONTEXT.md, and VERIFICATION.md as specifications.
|
Generate unit and E2E tests for a completed phase, using its SUMMARY.md, CONTEXT.md, and VERIFICATION.md as specifications.
|
||||||
|
|||||||
@@ -42,10 +42,10 @@ Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tag
|
|||||||
0. **Check for audit:**
|
0. **Check for audit:**
|
||||||
|
|
||||||
- Look for `.planning/v{{version}}-MILESTONE-AUDIT.md`
|
- Look for `.planning/v{{version}}-MILESTONE-AUDIT.md`
|
||||||
- If missing or stale: recommend `/gsd-audit-milestone` first
|
- If missing or stale: recommend `/gsd:audit-milestone` first
|
||||||
- If audit status is `gaps_found`: recommend closing the gaps inline
|
- If audit status is `gaps_found`: recommend closing the gaps inline
|
||||||
(the audit output already enumerates them — insert closure phases
|
(the audit output already enumerates them — insert closure phases
|
||||||
via `/gsd-phase --insert <N>` plus the standard
|
via `/gsd:phase --insert <N>` plus the standard
|
||||||
discuss/plan/execute chain) before proceeding.
|
discuss/plan/execute chain) before proceeding.
|
||||||
- If audit status is `passed`: proceed to step 1
|
- If audit status is `passed`: proceed to step 1
|
||||||
|
|
||||||
@@ -53,14 +53,14 @@ Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tag
|
|||||||
## Pre-flight Check
|
## Pre-flight Check
|
||||||
|
|
||||||
{If no v{{version}}-MILESTONE-AUDIT.md:}
|
{If no v{{version}}-MILESTONE-AUDIT.md:}
|
||||||
⚠ No milestone audit found. Run `/gsd-audit-milestone` first to verify
|
⚠ No milestone audit found. Run `/gsd:audit-milestone` first to verify
|
||||||
requirements coverage, cross-phase integration, and E2E flows.
|
requirements coverage, cross-phase integration, and E2E flows.
|
||||||
|
|
||||||
{If audit has gaps:}
|
{If audit has gaps:}
|
||||||
⚠ Milestone audit found gaps. The audit output already enumerates the
|
⚠ Milestone audit found gaps. The audit output already enumerates the
|
||||||
unsatisfied requirements, cross-phase issues, and broken flows — insert
|
unsatisfied requirements, cross-phase issues, and broken flows — insert
|
||||||
a closure phase per gap with `/gsd-phase --insert <N>` and run the
|
a closure phase per gap with `/gsd:phase --insert <N>` and run the
|
||||||
standard `/gsd-discuss-phase` → `/gsd-plan-phase` → `/gsd-execute-phase`
|
standard `/gsd:discuss-phase` → `/gsd:plan-phase` → `/gsd:execute-phase`
|
||||||
chain. Or proceed anyway to accept the gaps as tech debt.
|
chain. Or proceed anyway to accept the gaps as tech debt.
|
||||||
|
|
||||||
{If audit passed:}
|
{If audit passed:}
|
||||||
@@ -114,7 +114,7 @@ Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tag
|
|||||||
- Ask about pushing tag
|
- Ask about pushing tag
|
||||||
|
|
||||||
8. **Offer next steps:**
|
8. **Offer next steps:**
|
||||||
- `/gsd-new-milestone` — start next milestone (questioning → research → requirements → roadmap)
|
- `/gsd:new-milestone` — start next milestone (questioning → research → requirements → roadmap)
|
||||||
|
|
||||||
</process>
|
</process>
|
||||||
|
|
||||||
@@ -138,5 +138,5 @@ Output: Milestone archived (roadmap + requirements), PROJECT.md evolved, git tag
|
|||||||
- **Archive before deleting:** Always create archive files before updating/deleting originals
|
- **Archive before deleting:** Always create archive files before updating/deleting originals
|
||||||
- **One-line summary:** Collapsed milestone in ROADMAP.md should be single line with link
|
- **One-line summary:** Collapsed milestone in ROADMAP.md should be single line with link
|
||||||
- **Context efficiency:** Archive keeps ROADMAP.md and REQUIREMENTS.md constant size per milestone
|
- **Context efficiency:** Archive keeps ROADMAP.md and REQUIREMENTS.md constant size per milestone
|
||||||
- **Fresh requirements:** Next milestone starts with `/gsd-new-milestone` which includes requirements definition
|
- **Fresh requirements:** Next milestone starts with `/gsd:new-milestone` which includes requirements definition
|
||||||
</critical_rules>
|
</critical_rules>
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ Open-ended Socratic ideation session. Guides the developer through exploring an
|
|||||||
probing questions, optionally spawns research, then routes outputs to the appropriate GSD
|
probing questions, optionally spawns research, then routes outputs to the appropriate GSD
|
||||||
artifacts (notes, todos, seeds, research questions, requirements, or new phases).
|
artifacts (notes, todos, seeds, research questions, requirements, or new phases).
|
||||||
|
|
||||||
Accepts an optional topic argument: `/gsd-explore authentication strategy`
|
Accepts an optional topic argument: `/gsd:explore authentication strategy`
|
||||||
</objective>
|
</objective>
|
||||||
|
|
||||||
<execution_context>
|
<execution_context>
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ Execute a trivial task directly in the current context without spawning subagent
|
|||||||
or generating PLAN.md files. For tasks too small to justify planning overhead:
|
or generating PLAN.md files. For tasks too small to justify planning overhead:
|
||||||
typo fixes, config changes, small refactors, forgotten commits, simple additions.
|
typo fixes, config changes, small refactors, forgotten commits, simple additions.
|
||||||
|
|
||||||
This is NOT a replacement for /gsd-quick — use /gsd-quick for anything that
|
This is NOT a replacement for /gsd:quick — use /gsd:quick for anything that
|
||||||
needs research, multi-step planning, or verification. /gsd-fast is for tasks
|
needs research, multi-step planning, or verification. /gsd:fast is for tasks
|
||||||
you could describe in one sentence and execute in under 2 minutes.
|
you could describe in one sentence and execute in under 2 minutes.
|
||||||
</objective>
|
</objective>
|
||||||
|
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ Knowledge graph is disabled. To activate:
|
|||||||
|
|
||||||
node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs config-set graphify.enabled true
|
node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs config-set graphify.enabled true
|
||||||
|
|
||||||
Then run /gsd-graphify build to create the initial graph.
|
Then run /gsd:graphify build to create the initial graph.
|
||||||
```
|
```
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -64,7 +64,7 @@ Parse `$ARGUMENTS` to determine the operation mode:
|
|||||||
```
|
```
|
||||||
GSD > GRAPHIFY
|
GSD > GRAPHIFY
|
||||||
|
|
||||||
Usage: /gsd-graphify <mode>
|
Usage: /gsd:graphify <mode>
|
||||||
|
|
||||||
Modes:
|
Modes:
|
||||||
build Build or rebuild the knowledge graph
|
build Build or rebuild the knowledge graph
|
||||||
@@ -84,7 +84,7 @@ node $HOME/.claude/get-shit-done/bin/gsd-tools.cjs graphify query <term>
|
|||||||
Parse the JSON output and display results:
|
Parse the JSON output and display results:
|
||||||
- If the output contains `"disabled": true`, display the disabled message from Step 1 and **STOP**
|
- If the output contains `"disabled": true`, display the disabled message from Step 1 and **STOP**
|
||||||
- If the output contains `"error"` field, display the error message and **STOP**
|
- If the output contains `"error"` field, display the error message and **STOP**
|
||||||
- If no nodes found, display: `No graph matches for '<term>'. Try /gsd-graphify build to create or rebuild the graph.`
|
- If no nodes found, display: `No graph matches for '<term>'. Try /gsd:graphify build to create or rebuild the graph.`
|
||||||
- Otherwise, display matched nodes grouped by type, with edge relationships and confidence tiers (EXTRACTED/INFERRED/AMBIGUOUS)
|
- Otherwise, display matched nodes grouped by type, with edge relationships and confidence tiers (EXTRACTED/INFERRED/AMBIGUOUS)
|
||||||
|
|
||||||
**STOP** after displaying results. Do not spawn an agent.
|
**STOP** after displaying results. Do not spawn an agent.
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Validate `.planning/` directory integrity and report actionable issues. Checks f
|
|||||||
| Utilization | State | Action |
|
| Utilization | State | Action |
|
||||||
|-------------|----------|-------------------------------------------------------|
|
|-------------|----------|-------------------------------------------------------|
|
||||||
| < 60% | healthy | no action — context is comfortable |
|
| < 60% | healthy | no action — context is comfortable |
|
||||||
| 60% – 70% | warning | recommend `/gsd-thread` to start fresh |
|
| 60% – 70% | warning | recommend `/gsd:thread` to start fresh |
|
||||||
| ≥ 70% | critical | reasoning quality may degrade past the fracture point |
|
| ≥ 70% | critical | reasoning quality may degrade past the fracture point |
|
||||||
</objective>
|
</objective>
|
||||||
|
|
||||||
|
|||||||
@@ -41,8 +41,8 @@ Parse the first token of $ARGUMENTS:
|
|||||||
Check for .planning/STATE.md - loads context if project already initialized
|
Check for .planning/STATE.md - loads context if project already initialized
|
||||||
|
|
||||||
**This command can run:**
|
**This command can run:**
|
||||||
- Before /gsd-new-project (brownfield codebases) - creates codebase map first
|
- Before /gsd:new-project (brownfield codebases) - creates codebase map first
|
||||||
- After /gsd-new-project (greenfield codebases) - updates codebase map as code evolves
|
- After /gsd:new-project (greenfield codebases) - updates codebase map as code evolves
|
||||||
- Anytime to refresh codebase understanding
|
- Anytime to refresh codebase understanding
|
||||||
</context>
|
</context>
|
||||||
|
|
||||||
@@ -70,7 +70,7 @@ Check for .planning/STATE.md - loads context if project already initialized
|
|||||||
4. Wait for agents to complete, collect confirmations (NOT document contents)
|
4. Wait for agents to complete, collect confirmations (NOT document contents)
|
||||||
5. Verify all 7 documents exist with line counts
|
5. Verify all 7 documents exist with line counts
|
||||||
6. Commit codebase map
|
6. Commit codebase map
|
||||||
7. Offer next steps (typically: /gsd-new-project or /gsd-plan-phase)
|
7. Offer next steps (typically: /gsd:new-project or /gsd:plan-phase)
|
||||||
</process>
|
</process>
|
||||||
|
|
||||||
<success_criteria>
|
<success_criteria>
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ Brownfield equivalent of new-project. Project exists, PROJECT.md has history. Ga
|
|||||||
- `.planning/ROADMAP.md` — phase structure (continues numbering)
|
- `.planning/ROADMAP.md` — phase structure (continues numbering)
|
||||||
- `.planning/STATE.md` — reset for new milestone
|
- `.planning/STATE.md` — reset for new milestone
|
||||||
|
|
||||||
**After:** `/gsd-plan-phase [N]` to start execution.
|
**After:** `/gsd:plan-phase [N]` to start execution.
|
||||||
</objective>
|
</objective>
|
||||||
|
|
||||||
<execution_context>
|
<execution_context>
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ Initialize a new project through unified flow: questioning → research (optiona
|
|||||||
- `.planning/ROADMAP.md` — phase structure
|
- `.planning/ROADMAP.md` — phase structure
|
||||||
- `.planning/STATE.md` — project memory
|
- `.planning/STATE.md` — project memory
|
||||||
|
|
||||||
**After this command:** Run `/gsd-plan-phase 1` to start execution.
|
**After this command:** Run `/gsd:plan-phase 1` to start execution.
|
||||||
</objective>
|
</objective>
|
||||||
|
|
||||||
<execution_context>
|
<execution_context>
|
||||||
|
|||||||
@@ -48,7 +48,7 @@ Phase number: $ARGUMENTS (optional — auto-detects next unplanned phase if omit
|
|||||||
- `--prd <file>` — Use a PRD/acceptance criteria file instead of discuss-phase. Parses requirements into CONTEXT.md automatically. Skips discuss-phase entirely.
|
- `--prd <file>` — Use a PRD/acceptance criteria file instead of discuss-phase. Parses requirements into CONTEXT.md automatically. Skips discuss-phase entirely.
|
||||||
- `--ingest <path-or-glob>` — Use one or more ADR files instead of discuss-phase. Parses locked decisions + scope fences into CONTEXT.md automatically. Skips discuss-phase entirely.
|
- `--ingest <path-or-glob>` — Use one or more ADR files instead of discuss-phase. Parses locked decisions + scope fences into CONTEXT.md automatically. Skips discuss-phase entirely.
|
||||||
- `--ingest-format <auto|nygard|madr|narrative>` — Optional ADR parser format override (`auto` default).
|
- `--ingest-format <auto|nygard|madr|narrative>` — Optional ADR parser format override (`auto` default).
|
||||||
- `--reviews` — Replan incorporating cross-AI review feedback from REVIEWS.md (produced by `/gsd-review`)
|
- `--reviews` — Replan incorporating cross-AI review feedback from REVIEWS.md (produced by `/gsd:review`)
|
||||||
- `--text` — Use plain-text numbered lists instead of TUI menus (required for `/rc` remote sessions)
|
- `--text` — Use plain-text numbered lists instead of TUI menus (required for `/rc` remote sessions)
|
||||||
- `--mvp` — Vertical MVP mode. Planner organizes tasks as feature slices (UI→API→DB) instead of horizontal layers. On Phase 1 of a new project, also emits `SKELETON.md` (Walking Skeleton). Can be persisted on a phase via `**Mode:** mvp` in ROADMAP.md.
|
- `--mvp` — Vertical MVP mode. Planner organizes tasks as feature slices (UI→API→DB) instead of horizontal layers. On Phase 1 of a new project, also emits `SKELETON.md` (Walking Skeleton). Can be persisted on a phase via `**Mode:** mvp` in ROADMAP.md.
|
||||||
|
|
||||||
|
|||||||
@@ -118,7 +118,7 @@ Status: {status from SUMMARY.md frontmatter, or "no summary yet"}
|
|||||||
Description: {first non-empty line from PLAN.md after frontmatter}
|
Description: {first non-empty line from PLAN.md after frontmatter}
|
||||||
Last action: {last meaningful line of SUMMARY.md, or "none"}
|
Last action: {last meaningful line of SUMMARY.md, or "none"}
|
||||||
─────────────────────────────────────
|
─────────────────────────────────────
|
||||||
Resume with: /gsd-quick resume {slug}
|
Resume with: /gsd:quick resume {slug}
|
||||||
```
|
```
|
||||||
|
|
||||||
No agent spawn. STOP after printing.
|
No agent spawn. STOP after printing.
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ allowed-tools:
|
|||||||
<objective>
|
<objective>
|
||||||
Invoke external AI CLIs (Gemini, Claude, Codex, OpenCode, Qwen Code, Cursor) to independently review phase plans.
|
Invoke external AI CLIs (Gemini, Claude, Codex, OpenCode, Qwen Code, Cursor) to independently review phase plans.
|
||||||
Produces a structured REVIEWS.md with per-reviewer feedback that can be fed back into
|
Produces a structured REVIEWS.md with per-reviewer feedback that can be fed back into
|
||||||
planning via /gsd-plan-phase --reviews.
|
planning via /gsd:plan-phase --reviews.
|
||||||
|
|
||||||
**Flow:** Detect CLIs → Build review prompt → Invoke each CLI → Collect responses → Write REVIEWS.md
|
**Flow:** Detect CLIs → Build review prompt → Invoke each CLI → Collect responses → Write REVIEWS.md
|
||||||
</objective>
|
</objective>
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ allowed-tools:
|
|||||||
- AskUserQuestion
|
- AskUserQuestion
|
||||||
---
|
---
|
||||||
<objective>
|
<objective>
|
||||||
Bridge local completion → merged PR. After /gsd-verify-work passes, ship the work: push branch, create PR with auto-generated body, optionally trigger review, and track the merge.
|
Bridge local completion → merged PR. After /gsd:verify-work passes, ship the work: push branch, create PR with auto-generated body, optionally trigger review, and track the merge.
|
||||||
|
|
||||||
Closes the plan → execute → verify → ship loop.
|
Closes the plan → execute → verify → ship loop.
|
||||||
</objective>
|
</objective>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ Two modes:
|
|||||||
- **Idea mode** (default) — describe a design idea to sketch
|
- **Idea mode** (default) — describe a design idea to sketch
|
||||||
- **Frontier mode** (no argument or "frontier") — analyzes existing sketch landscape and proposes consistency and frontier sketches
|
- **Frontier mode** (no argument or "frontier") — analyzes existing sketch landscape and proposes consistency and frontier sketches
|
||||||
|
|
||||||
Does not require `/gsd-new-project` — auto-creates `.planning/sketches/` if needed.
|
Does not require `/gsd:new-project` — auto-creates `.planning/sketches/` if needed.
|
||||||
</objective>
|
</objective>
|
||||||
|
|
||||||
<execution_context>
|
<execution_context>
|
||||||
|
|||||||
@@ -58,5 +58,5 @@ Execute end-to-end.
|
|||||||
- Gate passed: ambiguity ≤ 0.20 AND all dimension minimums met
|
- Gate passed: ambiguity ≤ 0.20 AND all dimension minimums met
|
||||||
- SPEC.md written with falsifiable requirements, explicit boundaries, and acceptance criteria
|
- SPEC.md written with falsifiable requirements, explicit boundaries, and acceptance criteria
|
||||||
- SPEC.md committed atomically
|
- SPEC.md committed atomically
|
||||||
- User knows they can now run /gsd-discuss-phase which will load SPEC.md automatically
|
- User knows they can now run /gsd:discuss-phase which will load SPEC.md automatically
|
||||||
</success_criteria>
|
</success_criteria>
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ Two modes:
|
|||||||
- **Idea mode** (default) — describe an idea to spike
|
- **Idea mode** (default) — describe an idea to spike
|
||||||
- **Frontier mode** (no argument or "frontier") — analyzes existing spike landscape and proposes integration and frontier spikes
|
- **Frontier mode** (no argument or "frontier") — analyzes existing spike landscape and proposes integration and frontier spikes
|
||||||
|
|
||||||
Does not require `/gsd-new-project` — auto-creates `.planning/spikes/` if needed.
|
Does not require `/gsd:new-project` — auto-creates `.planning/spikes/` if needed.
|
||||||
</objective>
|
</objective>
|
||||||
|
|
||||||
<execution_context>
|
<execution_context>
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ allowed-tools:
|
|||||||
Offload GSD's plan phase to Claude Code's ultraplan cloud infrastructure.
|
Offload GSD's plan phase to Claude Code's ultraplan cloud infrastructure.
|
||||||
|
|
||||||
Ultraplan drafts the plan in a remote cloud session while your terminal stays free.
|
Ultraplan drafts the plan in a remote cloud session while your terminal stays free.
|
||||||
Review and comment on the plan in your browser, then import it back via /gsd-import --from.
|
Review and comment on the plan in your browser, then import it back via /gsd:import --from.
|
||||||
|
|
||||||
⚠ BETA: ultraplan is in research preview. Use /gsd-plan-phase for stable local planning.
|
⚠ BETA: ultraplan is in research preview. Use /gsd:plan-phase for stable local planning.
|
||||||
Requirements: Claude Code v2.1.91+, claude.ai account, GitHub repository.
|
Requirements: Claude Code v2.1.91+, claude.ai account, GitHub repository.
|
||||||
</objective>
|
</objective>
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@ Validate built features through conversational testing with persistent state.
|
|||||||
|
|
||||||
Purpose: Confirm what Claude built actually works from user's perspective. One test at a time, plain text responses, no interrogation. When issues are found, automatically diagnose, plan fixes, and prepare for execution.
|
Purpose: Confirm what Claude built actually works from user's perspective. One test at a time, plain text responses, no interrogation. When issues are found, automatically diagnose, plan fixes, and prepare for execution.
|
||||||
|
|
||||||
Output: {phase_num}-UAT.md tracking all test results. If issues found: diagnosed gaps, verified fix plans ready for /gsd-execute-phase
|
Output: {phase_num}-UAT.md tracking all test results. If issues found: diagnosed gaps, verified fix plans ready for /gsd:execute-phase
|
||||||
</objective>
|
</objective>
|
||||||
|
|
||||||
<execution_context>
|
<execution_context>
|
||||||
|
|||||||
@@ -6,13 +6,13 @@ allowed-tools:
|
|||||||
- Bash
|
- Bash
|
||||||
---
|
---
|
||||||
|
|
||||||
# /gsd-workstreams
|
# /gsd:workstreams
|
||||||
|
|
||||||
Manage parallel workstreams for concurrent milestone work.
|
Manage parallel workstreams for concurrent milestone work.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
`/gsd-workstreams [subcommand] [args]`
|
`/gsd:workstreams [subcommand] [args]`
|
||||||
|
|
||||||
### Subcommands
|
### Subcommands
|
||||||
|
|
||||||
@@ -40,7 +40,7 @@ Display the workstreams in a table format showing name, status, current phase, a
|
|||||||
### create
|
### create
|
||||||
Run: `gsd-sdk query workstream.create <name> --raw --cwd "$CWD"`
|
Run: `gsd-sdk query workstream.create <name> --raw --cwd "$CWD"`
|
||||||
After creation, display the new workstream path and suggest next steps:
|
After creation, display the new workstream path and suggest next steps:
|
||||||
- `/gsd-new-milestone --ws <name>` to set up the milestone
|
- `/gsd:new-milestone --ws <name>` to set up the milestone
|
||||||
|
|
||||||
### status
|
### status
|
||||||
Run: `gsd-sdk query workstream.status <name> --raw --cwd "$CWD"`
|
Run: `gsd-sdk query workstream.status <name> --raw --cwd "$CWD"`
|
||||||
@@ -61,7 +61,7 @@ Run: `gsd-sdk query workstream.complete <name> --raw --cwd "$CWD"`
|
|||||||
Archive the workstream to milestones/.
|
Archive the workstream to milestones/.
|
||||||
|
|
||||||
### resume
|
### resume
|
||||||
Set the workstream as active and suggest `/gsd-resume-work --ws <name>`.
|
Set the workstream as active and suggest `/gsd:resume-work --ws <name>`.
|
||||||
|
|
||||||
## Step 3: Display Results
|
## Step 3: Display Results
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
* Scans all .planning/ artifact categories for items with open/unresolved state.
|
* Scans all .planning/ artifact categories for items with open/unresolved state.
|
||||||
* Returns structured JSON for workflow consumption.
|
* Returns structured JSON for workflow consumption.
|
||||||
* Called by: gsd-tools.cjs audit-open
|
* 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';
|
'use strict';
|
||||||
|
|||||||
@@ -774,7 +774,7 @@ function cmdScaffold(cwd, type, options, raw) {
|
|||||||
switch (type) {
|
switch (type) {
|
||||||
case 'context': {
|
case 'context': {
|
||||||
filePath = path.join(phaseDir, `${padded}-CONTEXT.md`);
|
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;
|
break;
|
||||||
}
|
}
|
||||||
case 'uat': {
|
case 'uat': {
|
||||||
|
|||||||
@@ -111,7 +111,7 @@ function validateShipPrBodySections(value) {
|
|||||||
* Merges (increasing priority):
|
* Merges (increasing priority):
|
||||||
* 1. Hardcoded defaults — every key that loadConfig() resolves, plus mode/granularity
|
* 1. Hardcoded defaults — every key that loadConfig() resolves, plus mode/granularity
|
||||||
* 2. User-level defaults from ~/.gsd/defaults.json (if present)
|
* 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
|
* 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
|
* and the settings workflow). loadConfig() handles both flat and nested formats, so this
|
||||||
@@ -247,7 +247,7 @@ function buildNewProjectConfig(userChoices) {
|
|||||||
* Command: create a fully-materialized .planning/config.json for a new project.
|
* 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
|
* 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.
|
* hardcoded defaults and optional ~/.gsd/defaults.json.
|
||||||
*
|
*
|
||||||
* Idempotent: if config.json already exists, returns { created: false }.
|
* Idempotent: if config.json already exists, returns { created: false }.
|
||||||
|
|||||||
@@ -311,7 +311,7 @@ const CONFIG_DEFAULTS = {
|
|||||||
phase_naming: 'sequential', // 'sequential' (default, auto-increment) or 'custom' (arbitrary string IDs)
|
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')
|
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)
|
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_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')
|
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
|
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
|
||||||
|
|||||||
@@ -253,7 +253,7 @@ function buildMessage(elements, affectedPaths, action) {
|
|||||||
lines.push(`Auto-remap scheduled for paths: ${affectedPaths.join(', ')}`);
|
lines.push(`Auto-remap scheduled for paths: ${affectedPaths.join(', ')}`);
|
||||||
} else {
|
} else {
|
||||||
lines.push(
|
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');
|
return lines.join('\n');
|
||||||
|
|||||||
@@ -420,7 +420,7 @@ function buildPreview(gsd2Data, artifacts) {
|
|||||||
lines.push('');
|
lines.push('');
|
||||||
lines.push('Cannot migrate automatically:');
|
lines.push('Cannot migrate automatically:');
|
||||||
lines.push(' - GSD-2 cost/token ledger (no v1 equivalent)');
|
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');
|
lines.push(' - VS Code extension state');
|
||||||
|
|
||||||
return lines.join('\n');
|
return lines.join('\n');
|
||||||
|
|||||||
@@ -255,7 +255,7 @@ function cmdInitPlanPhase(cwd, phase, raw, options = {}) {
|
|||||||
const phase_req_ids = (reqExtracted && reqExtracted !== 'TBD') ? reqExtracted : null;
|
const phase_req_ids = (reqExtracted && reqExtracted !== 'TBD') ? reqExtracted : null;
|
||||||
|
|
||||||
// #3287: compute the canonical directory name with project_code prefix so
|
// #3287: compute the canonical directory name with project_code prefix so
|
||||||
// the first-touch mkdir in /gsd-plan-phase stays consistent with phase.add.
|
// the first-touch mkdir in /gsd:plan-phase stays consistent with phase.add.
|
||||||
const phaseDirPlan = phaseInfo?.directory || null;
|
const phaseDirPlan = phaseInfo?.directory || null;
|
||||||
const phaseNumberPlan = phaseInfo?.phase_number || null;
|
const phaseNumberPlan = phaseInfo?.phase_number || null;
|
||||||
const phaseNamePlan = phaseInfo?.phase_name || null;
|
const phaseNamePlan = phaseInfo?.phase_name || null;
|
||||||
@@ -747,7 +747,7 @@ function cmdInitPhaseOp(cwd, phase, raw) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// #3287: compute the canonical directory name with project_code prefix so
|
// #3287: compute the canonical directory name with project_code prefix so
|
||||||
// the first-touch mkdir in /gsd-discuss-phase stays consistent with phase.add.
|
// the first-touch mkdir in /gsd:discuss-phase stays consistent with phase.add.
|
||||||
const phaseDir = phaseInfo?.directory || null;
|
const phaseDir = phaseInfo?.directory || null;
|
||||||
const phaseNumber = phaseInfo?.phase_number || null;
|
const phaseNumber = phaseInfo?.phase_number || null;
|
||||||
const phaseName = phaseInfo?.phase_name || null;
|
const phaseName = phaseInfo?.phase_name || null;
|
||||||
@@ -1048,10 +1048,10 @@ function cmdInitManager(cwd, raw) {
|
|||||||
|
|
||||||
// Validate prerequisites
|
// Validate prerequisites
|
||||||
if (!fs.existsSync(paths.roadmap)) {
|
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)) {
|
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 rawContent = fs.readFileSync(paths.roadmap, 'utf-8');
|
||||||
const content = extractCurrentMilestone(rawContent, cwd);
|
const content = extractCurrentMilestone(rawContent, cwd);
|
||||||
@@ -1230,7 +1230,7 @@ function cmdInitManager(cwd, raw) {
|
|||||||
phase_name: phase.name,
|
phase_name: phase.name,
|
||||||
action: 'execute',
|
action: 'execute',
|
||||||
reason: `${phase.plan_count} plans ready, dependencies met`,
|
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') {
|
} else if (phase.disk_status === 'discussed' || phase.disk_status === 'researched') {
|
||||||
recommendedActions.push({
|
recommendedActions.push({
|
||||||
@@ -1238,7 +1238,7 @@ function cmdInitManager(cwd, raw) {
|
|||||||
phase_name: phase.name,
|
phase_name: phase.name,
|
||||||
action: 'plan',
|
action: 'plan',
|
||||||
reason: 'Context gathered, ready for planning',
|
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) {
|
} else if ((phase.disk_status === 'empty' || phase.disk_status === 'no_directory') && phase.is_next_to_discuss) {
|
||||||
recommendedActions.push({
|
recommendedActions.push({
|
||||||
@@ -1246,7 +1246,7 @@ function cmdInitManager(cwd, raw) {
|
|||||||
phase_name: phase.name,
|
phase_name: phase.name,
|
||||||
action: 'discuss',
|
action: 'discuss',
|
||||||
reason: 'Unblocked, ready to gather context',
|
reason: 'Unblocked, ready to gather context',
|
||||||
command: `/gsd-discuss-phase ${phase.number}`,
|
command: `/gsd:discuss-phase ${phase.number}`,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -227,10 +227,10 @@ function cmdMilestoneComplete(cwd, version, options, raw) {
|
|||||||
if (operatorPattern.test(stateContent)) {
|
if (operatorPattern.test(stateContent)) {
|
||||||
stateContent = stateContent.replace(
|
stateContent = stateContent.replace(
|
||||||
operatorPattern,
|
operatorPattern,
|
||||||
`$1\n- Start the next milestone with /gsd-new-milestone\n\n`,
|
`$1\n- Start the next milestone with /gsd:new-milestone\n\n`,
|
||||||
);
|
);
|
||||||
} else {
|
} else {
|
||||||
stateContent = `${stateContent.trimEnd()}\n\n## Operator Next Steps\n\n- Start the next milestone with /gsd-new-milestone\n`;
|
stateContent = `${stateContent.trimEnd()}\n\n## Operator Next Steps\n\n- Start the next milestone with /gsd:new-milestone\n`;
|
||||||
}
|
}
|
||||||
|
|
||||||
writeStateMd(statePath, stateContent, cwd);
|
writeStateMd(statePath, stateContent, cwd);
|
||||||
|
|||||||
@@ -576,7 +576,7 @@ function cmdPhaseAdd(cwd, description, raw, customId) {
|
|||||||
|
|
||||||
// Build phase entry
|
// Build phase entry
|
||||||
const dependsOn = config.phase_naming === 'custom' ? '' : `\n**Depends on:** Phase ${typeof _newPhaseId === 'number' ? _newPhaseId - 1 : 'TBD'}`;
|
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
|
// Find insertion point: before last "---" or at end
|
||||||
let updatedContent;
|
let updatedContent;
|
||||||
@@ -653,7 +653,7 @@ function cmdPhaseAddBatch(cwd, descriptions, raw) {
|
|||||||
fs.mkdirSync(dirPath, { recursive: true });
|
fs.mkdirSync(dirPath, { recursive: true });
|
||||||
fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
|
fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
|
||||||
const dependsOn = config.phase_naming === 'custom' ? '' : `\n**Depends on:** Phase ${typeof newPhaseId === 'number' ? newPhaseId - 1 : 'TBD'}`;
|
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---');
|
const lastSeparator = rawContent.lastIndexOf('\n---');
|
||||||
rawContent = lastSeparator > 0
|
rawContent = lastSeparator > 0
|
||||||
? rawContent.slice(0, lastSeparator) + phaseEntry + rawContent.slice(lastSeparator)
|
? rawContent.slice(0, lastSeparator) + phaseEntry + rawContent.slice(lastSeparator)
|
||||||
@@ -741,7 +741,7 @@ function cmdPhaseInsert(cwd, afterPhase, description, raw) {
|
|||||||
fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
|
fs.writeFileSync(path.join(dirPath, '.gitkeep'), '');
|
||||||
|
|
||||||
// Build phase entry
|
// 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
|
// Insert after the target phase section
|
||||||
const headerPattern = new RegExp(`(#{2,4}\\s*Phase\\s+0*${afterPhaseEscaped}:[^\\n]*\\n)`, 'i');
|
const headerPattern = new RegExp(`(#{2,4}\\s*Phase\\s+0*${afterPhaseEscaped}:[^\\n]*\\n)`, 'i');
|
||||||
@@ -1060,7 +1060,7 @@ function cmdPhaseComplete(cwd, phaseNum, raw) {
|
|||||||
// Update plan count in phase section.
|
// Update plan count in phase section.
|
||||||
// Use direct .replace() rather than replaceInCurrentMilestone() so this
|
// Use direct .replace() rather than replaceInCurrentMilestone() so this
|
||||||
// works when the current milestone section is itself inside a <details>
|
// 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
|
// scopes to content after the last </details>, which misses content inside
|
||||||
// the current milestone's own <details> wrapper (#2005).
|
// the current milestone's own <details> wrapper (#2005).
|
||||||
// The phase-scoped heading pattern is specific enough to avoid matching
|
// The phase-scoped heading pattern is specific enough to avoid matching
|
||||||
|
|||||||
@@ -174,7 +174,7 @@ const CLAUDE_INSTRUCTIONS = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const CLAUDE_MD_FALLBACKS = {
|
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.',
|
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.',
|
conventions: 'Conventions not yet established. Will populate as patterns emerge during development.',
|
||||||
architecture: 'Architecture not yet mapped. Follow existing patterns found in the codebase.',
|
architecture: 'Architecture not yet mapped. Follow existing patterns found in the codebase.',
|
||||||
@@ -188,9 +188,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.',
|
'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:',
|
'Use these entry points:',
|
||||||
'- `/gsd-quick` for small fixes, doc updates, and ad-hoc tasks',
|
'- `/gsd:quick` for small fixes, doc updates, and ad-hoc tasks',
|
||||||
'- `/gsd-debug` for investigation and bug fixing',
|
'- `/gsd:debug` for investigation and bug fixing',
|
||||||
'- `/gsd-execute-phase` for planned phase work',
|
'- `/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.',
|
'Do not make direct repo edits outside a GSD workflow unless the user explicitly asks to bypass it.',
|
||||||
].join('\n');
|
].join('\n');
|
||||||
@@ -199,7 +199,7 @@ const CLAUDE_MD_PROFILE_PLACEHOLDER = [
|
|||||||
'<!-- GSD:profile-start -->',
|
'<!-- GSD:profile-start -->',
|
||||||
'## Developer Profile',
|
'## 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.',
|
'> This section is managed by `generate-claude-profile` -- do not edit manually.',
|
||||||
'<!-- GSD:profile-end -->',
|
'<!-- GSD:profile-end -->',
|
||||||
].join('\n');
|
].join('\n');
|
||||||
@@ -769,7 +769,7 @@ function cmdGenerateDevPreferences(cwd, options, raw) {
|
|||||||
|
|
||||||
let stackBlock;
|
let stackBlock;
|
||||||
if (analysis.data_source === 'questionnaire') {
|
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) {
|
} else if (options.stack) {
|
||||||
stackBlock = options.stack;
|
stackBlock = options.stack;
|
||||||
} else {
|
} else {
|
||||||
@@ -782,7 +782,7 @@ function cmdGenerateDevPreferences(cwd, options, raw) {
|
|||||||
// the runtime config dir. This writer was missed in the migration
|
// the runtime config dir. This writer was missed in the migration
|
||||||
// (PR #1540 targeted GSD-shipped command files; dev-preferences is a
|
// (PR #1540 targeted GSD-shipped command files; dev-preferences is a
|
||||||
// runtime-generated user artifact). Default now points at the skills/
|
// runtime-generated user artifact). Default now points at the skills/
|
||||||
// location so /gsd-profile-user --refresh stops re-creating the legacy
|
// location so /gsd:profile-user --refresh stops re-creating the legacy
|
||||||
// directory. The path is constructed via path.join (not a literal
|
// directory. The path is constructed via path.join (not a literal
|
||||||
// string) so the cline-install leaked-path lint does not flag it.
|
// string) so the cline-install leaked-path lint does not flag it.
|
||||||
let outputPath = options.output;
|
let outputPath = options.output;
|
||||||
@@ -874,7 +874,7 @@ function cmdGenerateClaudeProfile(cwd, options, raw) {
|
|||||||
'<!-- GSD:profile-start -->',
|
'<!-- GSD:profile-start -->',
|
||||||
'## Developer Profile',
|
'## 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 |',
|
'| Dimension | Rating | Confidence |',
|
||||||
'|-----------|--------|------------|',
|
'|-----------|--------|------------|',
|
||||||
@@ -1080,7 +1080,7 @@ function cmdGenerateClaudeMd(cwd, options, raw) {
|
|||||||
let message = `Generated ${genCount}/${totalManaged} sections.`;
|
let message = `Generated ${genCount}/${totalManaged} sections.`;
|
||||||
if (sectionsFallback.length > 0) message += ` Fallback: ${sectionsFallback.join(', ')}.`;
|
if (sectionsFallback.length > 0) message += ` Fallback: ${sectionsFallback.join(', ')}.`;
|
||||||
if (sectionsSkipped.length > 0) message += ` Skipped (manually edited): ${sectionsSkipped.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 = {
|
const result = {
|
||||||
claude_md_path: outputPath,
|
claude_md_path: outputPath,
|
||||||
|
|||||||
@@ -26,8 +26,8 @@ function routeValidateCommand({ verify, args, cwd, raw, parseNamedArgs, output,
|
|||||||
const { classifyContextUtilization, STATES } = require('./context-utilization.cjs');
|
const { classifyContextUtilization, STATES } = require('./context-utilization.cjs');
|
||||||
const RECOMMENDATIONS = {
|
const RECOMMENDATIONS = {
|
||||||
[STATES.HEALTHY]: null,
|
[STATES.HEALTHY]: null,
|
||||||
[STATES.WARNING]: 'Context is approaching the fracture zone — consider /gsd-thread to continue in a fresh window.',
|
[STATES.WARNING]: 'Context is approaching the fracture zone — consider /gsd:thread to continue in a fresh window.',
|
||||||
[STATES.CRITICAL]: 'Reasoning quality may degrade past 70% utilization (fracture point). Run /gsd-thread now to preserve output quality.',
|
[STATES.CRITICAL]: 'Reasoning quality may degrade past 70% utilization (fracture point). Run /gsd:thread now to preserve output quality.',
|
||||||
};
|
};
|
||||||
let classified;
|
let classified;
|
||||||
try {
|
try {
|
||||||
|
|||||||
@@ -608,7 +608,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
|
|
||||||
// ─── Check 1: .planning/ exists ───────────────────────────────────────────
|
// ─── Check 1: .planning/ exists ───────────────────────────────────────────
|
||||||
if (!fs.existsSync(planBase)) {
|
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({
|
output({
|
||||||
status: 'broken',
|
status: 'broken',
|
||||||
errors,
|
errors,
|
||||||
@@ -621,7 +621,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
|
|
||||||
// ─── Check 2: PROJECT.md exists and has required sections ─────────────────
|
// ─── Check 2: PROJECT.md exists and has required sections ─────────────────
|
||||||
if (!fs.existsSync(projectPath)) {
|
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 {
|
} else {
|
||||||
const content = fs.readFileSync(projectPath, 'utf-8');
|
const content = fs.readFileSync(projectPath, 'utf-8');
|
||||||
const requiredSections = ['## What This Is', '## Core Value', '## Requirements'];
|
const requiredSections = ['## What This Is', '## Core Value', '## Requirements'];
|
||||||
@@ -634,12 +634,12 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
|
|
||||||
// ─── Check 3: ROADMAP.md exists ───────────────────────────────────────────
|
// ─── Check 3: ROADMAP.md exists ───────────────────────────────────────────
|
||||||
if (!fs.existsSync(roadmapPath)) {
|
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 ─────────────────
|
// ─── Check 4: STATE.md exists and references valid phases ─────────────────
|
||||||
if (!fs.existsSync(statePath)) {
|
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');
|
repairs.push('regenerateState');
|
||||||
} else {
|
} else {
|
||||||
const stateContent = fs.readFileSync(statePath, 'utf-8');
|
const stateContent = fs.readFileSync(statePath, 'utf-8');
|
||||||
@@ -686,7 +686,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
'warning',
|
'warning',
|
||||||
'W002',
|
'W002',
|
||||||
`STATE.md references phase ${ref}, but only phases ${[...validPhases].sort().join(', ')} are declared`,
|
`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'
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -695,7 +695,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
|
|
||||||
// ─── Check 5: config.json valid JSON + valid schema ───────────────────────
|
// ─── Check 5: config.json valid JSON + valid schema ───────────────────────
|
||||||
if (!fs.existsSync(configPath)) {
|
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');
|
repairs.push('createConfig');
|
||||||
} else {
|
} else {
|
||||||
try {
|
try {
|
||||||
@@ -707,7 +707,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
addIssue('warning', 'W004', `config.json: invalid model_profile "${parsed.model_profile}"`, `Valid values: ${validProfiles.join(', ')}`);
|
addIssue('warning', 'W004', `config.json: invalid model_profile "${parsed.model_profile}"`, `Valid values: ${validProfiles.join(', ')}`);
|
||||||
}
|
}
|
||||||
} catch (err) {
|
} 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');
|
repairs.push('resetConfig');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -718,11 +718,11 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
const configRaw = fs.readFileSync(configPath, 'utf-8');
|
const configRaw = fs.readFileSync(configPath, 'utf-8');
|
||||||
const configParsed = JSON.parse(configRaw);
|
const configParsed = JSON.parse(configRaw);
|
||||||
if (configParsed.workflow && configParsed.workflow.nyquist_validation === undefined) {
|
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 (!repairs.includes('addNyquistKey')) repairs.push('addNyquistKey');
|
||||||
}
|
}
|
||||||
if (configParsed.workflow && configParsed.workflow.ai_integration_phase === undefined) {
|
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');
|
if (!repairs.includes('addAiIntegrationPhaseKey')) repairs.push('addAiIntegrationPhaseKey');
|
||||||
}
|
}
|
||||||
} catch { /* intentionally empty */ }
|
} catch { /* intentionally empty */ }
|
||||||
@@ -772,7 +772,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
try {
|
try {
|
||||||
const researchContent = fs.readFileSync(path.join(phasesDir, e.name, researchFile), 'utf-8');
|
const researchContent = fs.readFileSync(path.join(phasesDir, e.name, researchFile), 'utf-8');
|
||||||
if (researchContent.includes('## Validation Architecture')) {
|
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 */ }
|
} catch { /* intentionally empty */ }
|
||||||
}
|
}
|
||||||
@@ -861,7 +861,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
if (statusVal !== 'complete' && statusVal !== 'done') {
|
if (statusVal !== 'complete' && statusVal !== 'done') {
|
||||||
addIssue('warning', 'W011',
|
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`,
|
`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');
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -970,7 +970,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
if (missingFromRegistry.length > 0) {
|
if (missingFromRegistry.length > 0) {
|
||||||
addIssue('warning', 'W018',
|
addIssue('warning', 'W018',
|
||||||
`MILESTONES.md missing ${missingFromRegistry.length} archived milestone(s): ${missingFromRegistry.join(', ')}`,
|
`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);
|
true);
|
||||||
repairs.push('backfillMilestones');
|
repairs.push('backfillMilestones');
|
||||||
}
|
}
|
||||||
@@ -1044,7 +1044,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
stateContent += `**Current phase:** (determining...)\n`;
|
stateContent += `**Current phase:** (determining...)\n`;
|
||||||
stateContent += `**Status:** Resuming\n\n`;
|
stateContent += `**Status:** Resuming\n\n`;
|
||||||
stateContent += `## Session Log\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);
|
writeStateMd(statePath, stateContent, cwd);
|
||||||
repairActions.push({ action: repair, success: true, path: 'STATE.md' });
|
repairActions.push({ action: repair, success: true, path: 'STATE.md' });
|
||||||
break;
|
break;
|
||||||
@@ -1094,7 +1094,7 @@ function cmdValidateHealth(cwd, options, raw) {
|
|||||||
// Build minimal entry from snapshot title or version
|
// Build minimal entry from snapshot title or version
|
||||||
const titleMatch = snapshot && snapshot.match(/^#\s+(.+)$/m);
|
const titleMatch = snapshot && snapshot.match(/^#\s+(.+)$/m);
|
||||||
const milestoneName = titleMatch ? titleMatch[1].replace(/^Milestone\s+/i, '').replace(/^v[\d.]+\s*/, '').trim() : ver;
|
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)
|
const milestonesContent = fs.existsSync(milestonesPath)
|
||||||
? fs.readFileSync(milestonesPath, 'utf-8')
|
? fs.readFileSync(milestonesPath, 'utf-8')
|
||||||
: '';
|
: '';
|
||||||
|
|||||||
@@ -84,7 +84,7 @@ function cmdWorkstreamCreate(cwd, name, options, raw) {
|
|||||||
|
|
||||||
const baseDir = planningRoot(cwd);
|
const baseDir = planningRoot(cwd);
|
||||||
if (!fs.existsSync(baseDir)) {
|
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');
|
const wsRoot = path.join(baseDir, 'workstreams');
|
||||||
|
|||||||
@@ -72,15 +72,15 @@ reads is inert — the consumption mechanism is what gives an artifact meaning.
|
|||||||
- **Location**: `.planning/spikes/SPIKE-NNN/`
|
- **Location**: `.planning/spikes/SPIKE-NNN/`
|
||||||
- **Consumed by**: Planner when spike is referenced; `pause-work` for spike context handoff
|
- **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
|
- **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`
|
- **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)
|
### Sketch README.md / MANIFEST.md / index.html (per-sketch)
|
||||||
- **Shape**: YAML frontmatter (sketch, name, question, winner, tags) + variants as tabbed HTML
|
- **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`
|
- **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
|
||||||
|
|
||||||
|
|||||||
@@ -58,7 +58,7 @@ Tool schemas count against the same context budget as model context, prompts, an
|
|||||||
|
|
||||||
### Pre-Phase MCP Audit
|
### Pre-Phase MCP Audit
|
||||||
|
|
||||||
Before starting a long phase (especially `/gsd-execute-phase`, `/gsd-plan-phase`, or anything that fans out across many subagents), run this audit:
|
Before starting a long phase (especially `/gsd:execute-phase`, `/gsd:plan-phase`, or anything that fans out across many subagents), run this audit:
|
||||||
|
|
||||||
- [ ] **Browser / playwright tools enabled?** If this phase has no UI work, disable them. They're among the heaviest per-turn schemas.
|
- [ ] **Browser / playwright tools enabled?** If this phase has no UI work, disable them. They're among the heaviest per-turn schemas.
|
||||||
- [ ] **Platform-specific tools enabled?** Mac-tools / Windows-tools / OS-specific helpers should be disabled when not actively needed for the phase at hand.
|
- [ ] **Platform-specific tools enabled?** Mac-tools / Windows-tools / OS-specific helpers should be disabled when not actively needed for the phase at hand.
|
||||||
|
|||||||
@@ -50,7 +50,7 @@ Standard format for presenting next steps after completing a command or workflow
|
|||||||
|
|
||||||
`/clear` then:
|
`/clear` then:
|
||||||
|
|
||||||
`/gsd-execute-phase 2`
|
`/gsd:execute-phase 2`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -75,7 +75,7 @@ Add note that this is the last plan and what comes after:
|
|||||||
|
|
||||||
`/clear` then:
|
`/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:
|
`/clear` then:
|
||||||
|
|
||||||
`/gsd-plan-phase 2`
|
`/gsd:plan-phase 2`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Also available:**
|
**Also available:**
|
||||||
- `/gsd-discuss-phase 2` — gather context first
|
- `/gsd:discuss-phase 2` — gather context first
|
||||||
- `/gsd-plan-phase --research-phase 2` — investigate unknowns
|
- `/gsd:plan-phase --research-phase 2` — investigate unknowns
|
||||||
- Review roadmap
|
- Review roadmap
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -126,13 +126,13 @@ Show completion status before next action:
|
|||||||
|
|
||||||
`/clear` then:
|
`/clear` then:
|
||||||
|
|
||||||
`/gsd-plan-phase 3`
|
`/gsd:plan-phase 3`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
**Also available:**
|
**Also available:**
|
||||||
- `/gsd-discuss-phase 3` — gather context first
|
- `/gsd:discuss-phase 3` — gather context first
|
||||||
- `/gsd-plan-phase --research-phase 3` — investigate unknowns
|
- `/gsd:plan-phase --research-phase 3` — investigate unknowns
|
||||||
- Review what Phase 2 built
|
- Review what Phase 2 built
|
||||||
|
|
||||||
---
|
---
|
||||||
@@ -151,11 +151,11 @@ When there's no clear primary action:
|
|||||||
|
|
||||||
`/clear` then one of:
|
`/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-plan-phase --research-phase 3`
|
**To research unknowns:** `/gsd:plan-phase --research-phase 3`
|
||||||
|
|
||||||
---
|
---
|
||||||
```
|
```
|
||||||
@@ -175,7 +175,7 @@ All 4 phases shipped
|
|||||||
|
|
||||||
`/clear` then:
|
`/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
|
## To Continue
|
||||||
|
|
||||||
Run `/clear`, then paste:
|
Run `/clear`, then paste:
|
||||||
/gsd-execute-phase 2
|
/gsd:execute-phase 2
|
||||||
```
|
```
|
||||||
|
|
||||||
User has no idea what 02-03 is about.
|
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
|
### Don't: Missing /clear explanation
|
||||||
|
|
||||||
```
|
```
|
||||||
`/gsd-plan-phase 3`
|
`/gsd:plan-phase 3`
|
||||||
|
|
||||||
Run /clear first.
|
Run /clear first.
|
||||||
```
|
```
|
||||||
@@ -246,7 +246,7 @@ Sounds like an afterthought. Use "Also available:" instead.
|
|||||||
|
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
/gsd-plan-phase 3
|
/gsd:plan-phase 3
|
||||||
```
|
```
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Doc Conflict Engine
|
# 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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Domain-Aware Probing Patterns
|
# 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.
|
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.
|
||||||
|
|
||||||
|
|||||||
@@ -47,7 +47,7 @@ Simple 2-option confirmation for re-planning, rebuild, replace plans, commit.
|
|||||||
4-option escalation for review escalation (max retries exceeded).
|
4-option escalation for review escalation (max retries exceeded).
|
||||||
- question: "Phase {N} has failed verification {attempt} times. How should we proceed?"
|
- question: "Phase {N} has failed verification {attempt} times. How should we proceed?"
|
||||||
- header: "Escalate"
|
- 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
|
## Pattern: multi-option-gaps
|
||||||
4-option gap handler for review gaps-found.
|
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.
|
3-option confirmation for quick task scope validation.
|
||||||
- question: "This task looks complex. Proceed as quick task or use full planning?"
|
- question: "This task looks complex. Proceed as quick task or use full planning?"
|
||||||
- header: "Scope"
|
- 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
|
## Pattern: depth-select
|
||||||
3-option depth selection for planning workflow preferences.
|
3-option depth selection for planning workflow preferences.
|
||||||
|
|||||||
@@ -277,7 +277,7 @@ Set `commit_docs: false` so planning docs stay local and are not committed to an
|
|||||||
|
|
||||||
### How It Works
|
### 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).
|
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.
|
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.
|
4. **Planning stays local:** The `.planning/` directory is not committed; it acts as cross-repo coordination.
|
||||||
|
|||||||
@@ -122,7 +122,7 @@ If you're using Claude Code with OpenRouter, a local model, or any non-Anthropic
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
# Via settings command
|
# Via settings command
|
||||||
/gsd-settings
|
/gsd:settings
|
||||||
# → Select "Inherit" for model profile
|
# → Select "Inherit" for model profile
|
||||||
|
|
||||||
# Or manually in .planning/config.json
|
# Or manually in .planning/config.json
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ If you're looking for the canonical statement of a concept, this is where to fin
|
|||||||
- **`--mvp` and `--prd <file>` together on Phase 1.** Both paths converge at the planner spawn. The PRD express path creates `CONTEXT.md` from the PRD file and continues to the research step; the Walking Skeleton gate fires independently when Phase 1 + new project + `--mvp`. The planner therefore receives both `WALKING_SKELETON=true` and PRD-derived context. This is intentional: the PRD informs what the skeleton should prove.
|
- **`--mvp` and `--prd <file>` together on Phase 1.** Both paths converge at the planner spawn. The PRD express path creates `CONTEXT.md` from the PRD file and continues to the research step; the Walking Skeleton gate fires independently when Phase 1 + new project + `--mvp`. The planner therefore receives both `WALKING_SKELETON=true` and PRD-derived context. This is intentional: the PRD informs what the skeleton should prove.
|
||||||
- **`MVP_MODE` is all-or-nothing per phase, not per task.** A phase is either MVP-mode or standard. Mixed-mode phases are not supported (PRD #2826 Q1).
|
- **`MVP_MODE` is all-or-nothing per phase, not per task.** A phase is either MVP-mode or standard. Mixed-mode phases are not supported (PRD #2826 Q1).
|
||||||
- **`TDD_MODE` is independent of `MVP_MODE`.** TDD can be on without MVP, MVP can be on without TDD. Only the *intersection* (both true) activates the MVP+TDD Gate.
|
- **`TDD_MODE` is independent of `MVP_MODE`.** TDD can be on without MVP, MVP can be on without TDD. Only the *intersection* (both true) activates the MVP+TDD Gate.
|
||||||
- **The `gsd-roadmapper` agent makes the MVP/standard decision once at project init** based on `PROJECT_MODE`. Per-phase opt-in/out happens later via `/gsd-mvp-phase` or `/gsd-edit-phase`.
|
- **The `gsd-roadmapper` agent makes the MVP/standard decision once at project init** based on `PROJECT_MODE`. Per-phase opt-in/out happens later via `/gsd:mvp-phase` or `/gsd-edit-phase`.
|
||||||
|
|
||||||
## Tests
|
## Tests
|
||||||
|
|
||||||
@@ -42,7 +42,7 @@ Structural contract tests for each integration site live under `tests/`:
|
|||||||
|
|
||||||
- `plan-phase-mvp-flag.test.cjs` — plan-phase MVP_MODE resolution chain
|
- `plan-phase-mvp-flag.test.cjs` — plan-phase MVP_MODE resolution chain
|
||||||
- `planner-mvp-mode.test.cjs` — gsd-planner agent MVP section
|
- `planner-mvp-mode.test.cjs` — gsd-planner agent MVP section
|
||||||
- `mvp-phase-command.test.cjs`, `mvp-phase-integration.test.cjs`, `mvp-phase-spidr.test.cjs` — `/gsd-mvp-phase`
|
- `mvp-phase-command.test.cjs`, `mvp-phase-integration.test.cjs`, `mvp-phase-spidr.test.cjs` — `/gsd:mvp-phase`
|
||||||
- `execute-mvp-tdd-gate.test.cjs`, `executor-mvp-tdd-section.test.cjs` — MVP+TDD Gate
|
- `execute-mvp-tdd-gate.test.cjs`, `executor-mvp-tdd-section.test.cjs` — MVP+TDD Gate
|
||||||
- `verifier-mvp-section.test.cjs`, `verify-mvp-uat.test.cjs` — verifier UAT framing
|
- `verifier-mvp-section.test.cjs`, `verify-mvp-uat.test.cjs` — verifier UAT framing
|
||||||
- `new-project-mvp-prompt.test.cjs` — mode prompt at init
|
- `new-project-mvp-prompt.test.cjs` — mode prompt at init
|
||||||
|
|||||||
@@ -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.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.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. |
|
| `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.plan` | `""` | Flags passed to plan workflow when dispatched from manager |
|
||||||
| `manager.flags.execute` | `""` | Flags passed to execute 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. |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `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
|
### 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.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` | 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.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_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.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 |
|
| `workflow.text_mode` | boolean | `false` | `true`, `false` | Use plain-text numbered lists instead of AskUserQuestion menus |
|
||||||
@@ -265,14 +265,14 @@ 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` | 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.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._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_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.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. |
|
| `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. |
|
||||||
|
|
||||||
### Ship Fields
|
### Ship Fields
|
||||||
|
|
||||||
Set via `ship.*` namespace in config.json. These fields affect `/gsd-ship` PRD-style pull request body composition only.
|
Set via `ship.*` namespace in config.json. These fields affect `/gsd:ship` PRD-style pull request body composition only.
|
||||||
|
|
||||||
| Key | Type | Default | Allowed Values | Description |
|
| Key | Type | Default | Allowed Values | Description |
|
||||||
|-----|------|---------|----------------|-------------|
|
|-----|------|---------|----------------|-------------|
|
||||||
@@ -327,11 +327,11 @@ Set via `learnings.*` namespace (e.g., `"learnings": { "max_inject": 5 }`). Used
|
|||||||
|
|
||||||
### Intel Fields
|
### Intel Fields
|
||||||
|
|
||||||
Set via `intel.*` namespace (e.g., `"intel": { "enabled": true }`). Controls the queryable codebase intelligence system consumed by `/gsd-map-codebase --query`.
|
Set via `intel.*` namespace (e.g., `"intel": { "enabled": true }`). Controls the queryable codebase intelligence system consumed by `/gsd:map-codebase --query`.
|
||||||
|
|
||||||
| Key | Type | Default | Allowed Values | Description |
|
| Key | Type | Default | Allowed Values | Description |
|
||||||
|-----|------|---------|----------------|-------------|
|
|-----|------|---------|----------------|-------------|
|
||||||
| `intel.enabled` | boolean | `false` | `true`, `false` | Enable queryable codebase intelligence system. When `true`, `/gsd-map-codebase --query` builds and queries a JSON index in `.planning/intel/`. |
|
| `intel.enabled` | boolean | `false` | `true`, `false` | Enable queryable codebase intelligence system. When `true`, `/gsd:map-codebase --query` builds and queries a JSON index in `.planning/intel/`. |
|
||||||
|
|
||||||
### Manager Fields
|
### Manager Fields
|
||||||
|
|
||||||
@@ -339,7 +339,7 @@ Set via `manager.*` namespace (e.g., `"manager": { "flags": { "discuss": "--auto
|
|||||||
|
|
||||||
| Key | Type | Default | Allowed Values | Description |
|
| 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.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 |
|
| `manager.flags.execute` | string | `""` | Any CLI flags string | Flags passed to execute workflow from manager |
|
||||||
|
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ Apply this recommendation to the revision? [Yes] / [No, let me decide]
|
|||||||
### 3. Explore — Approach Comparison (requires #1729)
|
### 3. Explore — Approach Comparison (requires #1729)
|
||||||
|
|
||||||
**When:** During Socratic conversation, when multiple viable approaches emerge.
|
**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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -163,10 +163,10 @@ Then re-run verification to apply.
|
|||||||
|
|
||||||
Overrides can also be managed through the verification workflow:
|
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
|
2. Review gaps — determine which are intentional deviations
|
||||||
3. Add override entries to VERIFICATION.md frontmatter
|
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>
|
</creating_overrides>
|
||||||
|
|
||||||
@@ -183,7 +183,7 @@ When a phase is re-verified (e.g., after gap closure):
|
|||||||
|
|
||||||
### At Milestone Completion
|
### 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)
|
### Verification Overrides ({count} across {phase_count} phases)
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# AI-SPEC — Phase {N}: {phase_name}
|
# 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.
|
> Locks framework selection, implementation guidance, and evaluation strategy before planning begins.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -104,7 +104,7 @@ files_changed: []
|
|||||||
|
|
||||||
<lifecycle>
|
<lifecycle>
|
||||||
|
|
||||||
**Creation:** Immediately when /gsd-debug is called
|
**Creation:** Immediately when /gsd:debug is called
|
||||||
- Create file with trigger from user input
|
- Create file with trigger from user input
|
||||||
- Set status to "gathering"
|
- Set status to "gathering"
|
||||||
- Current Focus: next_action = "gather symptoms"
|
- Current Focus: next_action = "gather symptoms"
|
||||||
|
|||||||
@@ -12,25 +12,25 @@ These files live directly at `.planning/` — not inside phase subdirectories.
|
|||||||
|
|
||||||
| File | Template | Produced by | Purpose |
|
| File | Template | Produced by | Purpose |
|
||||||
|------|----------|-------------|---------|
|
|------|----------|-------------|---------|
|
||||||
| `PROJECT.md` | `project.md` | `/gsd-new-project` | Project identity, goals, requirements summary |
|
| `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 |
|
| `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 |
|
| `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 |
|
| `REQUIREMENTS.md` | `requirements.md` | `/gsd:new-milestone` | Functional requirements with traceability |
|
||||||
| `MILESTONES.md` | `milestone.md` | `/gsd-complete-milestone` | Log of completed milestones with accomplishments |
|
| `MILESTONES.md` | `milestone.md` | `/gsd:complete-milestone` | Log of completed milestones with accomplishments |
|
||||||
| `BACKLOG.md` | *(inline)* | `/gsd-add-backlog` | Pending ideas and deferred work |
|
| `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 |
|
| `LEARNINGS.md` | *(inline)* | `/gsd:extract-learnings`, `/gsd:execute-phase` | Phase retrospective learnings for future plans |
|
||||||
| `THREADS.md` | *(inline)* | `/gsd-thread` | Persistent discussion threads |
|
| `THREADS.md` | *(inline)* | `/gsd:thread` | Persistent discussion threads |
|
||||||
| `config.json` | `config.json` | `/gsd-new-project`, `/gsd-health --repair` | Project-specific GSD configuration |
|
| `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 |
|
| `CLAUDE.md` | `claude-md.md` | `/gsd-profile` | Auto-assembled Claude Code context file |
|
||||||
| `RETROSPECTIVE.md` | *(inline)* | `/gsd-complete-milestone` | Living milestone retrospective updated at each milestone close |
|
| `RETROSPECTIVE.md` | *(inline)* | `/gsd:complete-milestone` | Living milestone retrospective updated at each milestone close |
|
||||||
|
|
||||||
### Version-stamped artifacts (pattern: `vX.Y-*.md`)
|
### Version-stamped artifacts (pattern: `vX.Y-*.md`)
|
||||||
|
|
||||||
| Pattern | Produced by | Purpose |
|
| 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.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -40,24 +40,24 @@ These files live inside a phase directory. They are NOT checked by W019 (which o
|
|||||||
|
|
||||||
| File Pattern | Template | Produced by | Purpose |
|
| File Pattern | Template | Produced by | Purpose |
|
||||||
|-------------|----------|-------------|---------|
|
|-------------|----------|-------------|---------|
|
||||||
| `NN-MM-PLAN.md` | `phase-prompt.md` | `/gsd-plan-phase` | Executable implementation plan |
|
| `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-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-CONTEXT.md` | `context.md` | `/gsd:discuss-phase` | Scoped discussion decisions for the phase |
|
||||||
| `NN-RESEARCH.md` | `research.md` | `/gsd-plan-phase`, `/gsd-plan-phase --research-phase <N>` | Technical research for the phase |
|
| `NN-RESEARCH.md` | `research.md` | `/gsd:plan-phase`, `/gsd:plan-phase --research-phase <N>` | Technical research for the phase |
|
||||||
| `NN-VALIDATION.md` | `VALIDATION.md` | `/gsd-plan-phase` (Nyquist) | Validation architecture (Nyquist method) |
|
| `NN-VALIDATION.md` | `VALIDATION.md` | `/gsd:plan-phase` (Nyquist) | Validation architecture (Nyquist method) |
|
||||||
| `NN-UAT.md` | `UAT.md` | `/gsd-validate-phase` | User acceptance test results |
|
| `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-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-UI-SPEC.md` | `UI-SPEC.md` | `/gsd:ui-phase` | UI design contract |
|
||||||
| `NN-SECURITY.md` | `SECURITY.md` | `/gsd-secure-phase` | Security threat model |
|
| `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-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-DEBUG.md` | `DEBUG.md` | `/gsd:debug` | Debug session log |
|
||||||
| `NN-REVIEWS.md` | *(inline)* | `/gsd-review` | Cross-AI review feedback |
|
| `NN-REVIEWS.md` | *(inline)* | `/gsd:review` | Cross-AI review feedback |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Milestone Archive (`.planning/milestones/`)
|
## 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 |
|
| File Pattern | Source |
|
||||||
|-------------|--------|
|
|-------------|--------|
|
||||||
|
|||||||
@@ -106,7 +106,7 @@ blocked: [N]
|
|||||||
**Gaps:**
|
**Gaps:**
|
||||||
- APPEND only when issue found (YAML format)
|
- APPEND only when issue found (YAML format)
|
||||||
- After diagnosis: fill `root_cause`, `artifacts`, `missing`, `debug_session`
|
- 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>
|
</section_rules>
|
||||||
|
|
||||||
@@ -120,7 +120,7 @@ blocked: [N]
|
|||||||
4. UAT.md Gaps section updated with diagnosis:
|
4. UAT.md Gaps section updated with diagnosis:
|
||||||
- Each gap gets `root_cause`, `artifacts`, `missing`, `debug_session` filled
|
- Each gap gets `root_cause`, `artifacts`, `missing`, `debug_session` filled
|
||||||
5. status → "diagnosed"
|
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:**
|
**After diagnosis:**
|
||||||
```yaml
|
```yaml
|
||||||
@@ -144,7 +144,7 @@ blocked: [N]
|
|||||||
|
|
||||||
<lifecycle>
|
<lifecycle>
|
||||||
|
|
||||||
**Creation:** When /gsd-verify-work starts new session
|
**Creation:** When /gsd:verify-work starts new session
|
||||||
- Extract tests from SUMMARY.md files
|
- Extract tests from SUMMARY.md files
|
||||||
- Set status to "testing"
|
- Set status to "testing"
|
||||||
- Current Test points to test 1
|
- Current Test points to test 1
|
||||||
@@ -171,7 +171,7 @@ blocked: [N]
|
|||||||
- Present summary with outstanding items highlighted
|
- Present summary with outstanding items highlighted
|
||||||
|
|
||||||
**Resuming partial session:**
|
**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"
|
- When all items resolved, status advances to "complete"
|
||||||
|
|
||||||
**Resume after /clear:**
|
**Resume after /clear:**
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ created: {date}
|
|||||||
|
|
||||||
- **After every task commit:** Run `{quick run command}`
|
- **After every task commit:** Run `{quick run command}`
|
||||||
- **After every plan wave:** Run `{full suite 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
|
- **Max feedback latency:** {N} seconds
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ The profile section is managed exclusively by `generate-claude-profile`.
|
|||||||
|
|
||||||
**Fallback text:**
|
**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
|
### 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.
|
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:
|
Use these entry points:
|
||||||
- `/gsd-quick` for small fixes, doc updates, and ad-hoc tasks
|
- `/gsd:quick` for small fixes, doc updates, and ad-hoc tasks
|
||||||
- `/gsd-debug` for investigation and bug fixing
|
- `/gsd:debug` for investigation and bug fixing
|
||||||
- `/gsd-execute-phase` for planned phase work
|
- `/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.
|
Do not make direct repo edits outside a GSD workflow unless the user explicitly asks to bypass it.
|
||||||
<!-- GSD:workflow-end -->
|
<!-- GSD:workflow-end -->
|
||||||
@@ -109,7 +109,7 @@ Do not make direct repo edits outside a GSD workflow unless the user explicitly
|
|||||||
<!-- GSD:profile-start -->
|
<!-- GSD:profile-start -->
|
||||||
## Developer Profile
|
## 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.
|
> This section is managed by `generate-claude-profile` — do not edit manually.
|
||||||
<!-- GSD:profile-end -->
|
<!-- GSD:profile-end -->
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -51,7 +51,7 @@ Create: .planning/debug/{slug}.md
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
**From /gsd-debug:**
|
**From /gsd:debug:**
|
||||||
```python
|
```python
|
||||||
Task(
|
Task(
|
||||||
prompt=filled_template,
|
prompt=filled_template,
|
||||||
|
|||||||
@@ -5,7 +5,7 @@ description: Load developer preferences into this session
|
|||||||
# Developer Preferences
|
# Developer Preferences
|
||||||
|
|
||||||
> Generated by GSD on {{generated_at}} from {{data_source}}.
|
> 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
|
## Behavioral Directives
|
||||||
|
|
||||||
|
|||||||
@@ -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.
|
**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-plan-phase --research-phase` which produces RESEARCH.md.
|
For deep ecosystem research ("how do experts build this"), use `/gsd:plan-phase --research-phase` which produces RESEARCH.md.
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -142,5 +142,5 @@ Create `.planning/phases/XX-name/DISCOVERY.md`:
|
|||||||
- Niche/complex domains (3D, games, audio, shaders)
|
- Niche/complex domains (3D, games, audio, shaders)
|
||||||
- Need ecosystem knowledge, not just library choice
|
- Need ecosystem knowledge, not just library choice
|
||||||
- "How do experts build this" questions
|
- "How do experts build this" questions
|
||||||
- Use `/gsd-plan-phase --research-phase` for these
|
- Use `/gsd:plan-phase --research-phase` for these
|
||||||
</guidelines>
|
</guidelines>
|
||||||
|
|||||||
@@ -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) |
|
| `user_setup` | No | Array of human-required setup items (external services) |
|
||||||
| `must_haves` | Yes | Goal-backward verification criteria (see below) |
|
| `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.
|
**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.
|
||||||
|
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ Template for spawning gsd-planner agent. The agent contains all planning experti
|
|||||||
</planning_context>
|
</planning_context>
|
||||||
|
|
||||||
<downstream_consumer>
|
<downstream_consumer>
|
||||||
Output consumed by /gsd-execute-phase
|
Output consumed by /gsd:execute-phase
|
||||||
Plans must be executable prompts with:
|
Plans must be executable prompts with:
|
||||||
- Frontmatter (wave, depends_on, files_modified, autonomous)
|
- Frontmatter (wave, depends_on, files_modified, autonomous)
|
||||||
- Tasks in XML format
|
- Tasks in XML format
|
||||||
@@ -68,7 +68,7 @@ Before returning PLANNING COMPLETE:
|
|||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
**From /gsd-plan-phase (standard mode):**
|
**From /gsd:plan-phase (standard mode):**
|
||||||
```python
|
```python
|
||||||
Task(
|
Task(
|
||||||
prompt=filled_template,
|
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
|
```python
|
||||||
Task(
|
Task(
|
||||||
prompt=filled_template, # with mode: gap_closure
|
prompt=filled_template, # with mode: gap_closure
|
||||||
|
|||||||
@@ -149,7 +149,7 @@ and implemented by workflows/transition.md and workflows/complete-milestone.md.
|
|||||||
|
|
||||||
For existing codebases:
|
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:
|
2. **Infer Validated requirements** from existing code:
|
||||||
- What does the codebase actually do?
|
- What does the codebase actually do?
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ Template for `.planning/phases/XX-name/{phase_num}-RESEARCH.md` - comprehensive
|
|||||||
<user_constraints>
|
<user_constraints>
|
||||||
## User Constraints (from CONTEXT.md)
|
## 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
|
### Locked Decisions
|
||||||
[Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]
|
[Copy from CONTEXT.md `## Decisions` section - these are NON-NEGOTIABLE]
|
||||||
|
|||||||
@@ -96,7 +96,7 @@ Status: ✓ = met minimum, ⚠ = below minimum (planner treats as assumption)
|
|||||||
|
|
||||||
*Phase: [XX-name]*
|
*Phase: [XX-name]*
|
||||||
*Spec created: [date]*
|
*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>
|
<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*
|
*Phase: 03-post-feed*
|
||||||
*Spec created: 2025-01-20*
|
*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)**
|
**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*
|
*Phase: 02-backup-command*
|
||||||
*Spec created: 2025-01-20*
|
*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>
|
</good_examples>
|
||||||
|
|||||||
@@ -156,7 +156,7 @@ Updated after each plan completion.
|
|||||||
**Pending Todos:** Ideas captured via /gsd-add-todo
|
**Pending Todos:** Ideas captured via /gsd-add-todo
|
||||||
- Count of pending todos
|
- Count of pending todos
|
||||||
- Reference to .planning/todos/pending/
|
- Reference to .planning/todos/pending/
|
||||||
- Brief list if few, count if many (e.g., "5 pending todos — see /gsd-capture --list")
|
- Brief list if few, count if many (e.g., "5 pending todos — see /gsd:capture --list")
|
||||||
|
|
||||||
**Blockers/Concerns:** From "Next Phase Readiness" sections
|
**Blockers/Concerns:** From "Next Phase Readiness" sections
|
||||||
- Issues that affect future work
|
- Issues that affect future work
|
||||||
|
|||||||
@@ -1,6 +1,6 @@
|
|||||||
# Add Backlog Item Workflow
|
# Add Backlog Item Workflow
|
||||||
|
|
||||||
Invoked by `/gsd-capture --backlog` (`commands/gsd/capture.md`).
|
Invoked by `/gsd:capture --backlog` (`commands/gsd/capture.md`).
|
||||||
|
|
||||||
Adds an idea to the ROADMAP.md backlog parking lot using 999.x numbering. Backlog items
|
Adds an idea to the ROADMAP.md backlog parking lot using 999.x numbering. Backlog items
|
||||||
are unsequenced ideas that aren't ready for active planning — they live outside the normal
|
are unsequenced ideas that aren't ready for active planning — they live outside the normal
|
||||||
@@ -44,7 +44,7 @@ of ROADMAP.md:
|
|||||||
**Plans:** 0 plans
|
**Plans:** 0 plans
|
||||||
|
|
||||||
Plans:
|
Plans:
|
||||||
- [ ] TBD (promote with /gsd-review-backlog when ready)
|
- [ ] TBD (promote with /gsd:review-backlog when ready)
|
||||||
```
|
```
|
||||||
|
|
||||||
## Step 4: Create the phase directory
|
## Step 4: Create the phase directory
|
||||||
@@ -75,16 +75,16 @@ Phase {NEXT}: {description}
|
|||||||
Directory: {PHASE_DIR}/
|
Directory: {PHASE_DIR}/
|
||||||
|
|
||||||
This item lives in the backlog parking lot.
|
This item lives in the backlog parking lot.
|
||||||
Use /gsd-discuss-phase {NEXT} to explore it further.
|
Use /gsd:discuss-phase {NEXT} to explore it further.
|
||||||
Use /gsd-review-backlog to promote items to active milestone.
|
Use /gsd:review-backlog to promote items to active milestone.
|
||||||
```
|
```
|
||||||
|
|
||||||
</process>
|
</process>
|
||||||
|
|
||||||
<notes>
|
<notes>
|
||||||
- 999.x numbering keeps backlog items out of the active phase sequence
|
- 999.x numbering keeps backlog items out of the active phase sequence
|
||||||
- Phase directories are created immediately so /gsd-discuss-phase and /gsd-plan-phase work on them
|
- Phase directories are created immediately so /gsd:discuss-phase and /gsd:plan-phase work on them
|
||||||
- No `Depends on:` field — backlog items are unsequenced by definition
|
- No `Depends on:` field — backlog items are unsequenced by definition
|
||||||
- Sparse numbering is fine (999.1, 999.3) — always uses next-decimal
|
- Sparse numbering is fine (999.1, 999.3) — always uses next-decimal
|
||||||
- Promote backlog items to the active milestone with /gsd-review-backlog
|
- Promote backlog items to the active milestone with /gsd:review-backlog
|
||||||
</notes>
|
</notes>
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|||||||
Check `roadmap_exists` from init JSON. If false:
|
Check `roadmap_exists` from init JSON. If false:
|
||||||
```
|
```
|
||||||
ERROR: No roadmap found (.planning/ROADMAP.md)
|
ERROR: No roadmap found (.planning/ROADMAP.md)
|
||||||
Run /gsd-new-project to initialize.
|
Run /gsd:new-project to initialize.
|
||||||
```
|
```
|
||||||
Exit.
|
Exit.
|
||||||
</step>
|
</step>
|
||||||
@@ -89,7 +89,7 @@ Roadmap updated: .planning/ROADMAP.md
|
|||||||
|
|
||||||
`/clear` then:
|
`/clear` then:
|
||||||
|
|
||||||
`/gsd-plan-phase {N}`
|
`/gsd:plan-phase {N}`
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<purpose>
|
<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.
|
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>
|
</purpose>
|
||||||
|
|
||||||
<required_reading>
|
<required_reading>
|
||||||
@@ -15,15 +15,15 @@ Parse `$ARGUMENTS` for:
|
|||||||
- Phase number (integer, decimal, or letter-suffix) → store as `$PHASE_ARG`
|
- Phase number (integer, decimal, or letter-suffix) → store as `$PHASE_ARG`
|
||||||
- Remaining text after phase number → store as `$EXTRA_INSTRUCTIONS` (optional)
|
- 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:
|
If no phase argument provided:
|
||||||
|
|
||||||
```
|
```
|
||||||
ERROR: Phase number required
|
ERROR: Phase number required
|
||||||
Usage: /gsd-add-tests <phase> [additional instructions]
|
Usage: /gsd:add-tests <phase> [additional instructions]
|
||||||
Example: /gsd-add-tests 12
|
Example: /gsd:add-tests 12
|
||||||
Example: /gsd-add-tests 12 focus on edge cases in the pricing module
|
Example: /gsd:add-tests 12 focus on edge cases in the pricing module
|
||||||
```
|
```
|
||||||
|
|
||||||
Exit.
|
Exit.
|
||||||
@@ -54,7 +54,7 @@ Read the phase artifacts (in order of priority):
|
|||||||
If no SUMMARY.md exists:
|
If no SUMMARY.md exists:
|
||||||
```
|
```
|
||||||
ERROR: No SUMMARY.md found for phase ${PHASE_ARG}
|
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.
|
Exit.
|
||||||
|
|
||||||
@@ -318,7 +318,7 @@ Present next steps:
|
|||||||
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
|
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
|
||||||
|
|
||||||
{if bugs discovered:}
|
{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:}
|
{if blocked tests:}
|
||||||
**Resolve test blockers:** {description of what's needed}
|
**Resolve test blockers:** {description of what's needed}
|
||||||
@@ -329,8 +329,8 @@ Present next steps:
|
|||||||
---
|
---
|
||||||
|
|
||||||
**Also available:**
|
**Also available:**
|
||||||
- `/gsd-add-tests {next_phase}` — test another phase
|
- `/gsd:add-tests {next_phase}` — test another phase
|
||||||
- `/gsd-verify-work {phase_number}` — run UAT verification
|
- `/gsd:verify-work {phase_number}` — run UAT verification
|
||||||
|
|
||||||
---
|
---
|
||||||
```
|
```
|
||||||
|
|||||||
@@ -143,7 +143,7 @@ Would you like to:
|
|||||||
|
|
||||||
1. Continue with current work
|
1. Continue with current work
|
||||||
2. Add another todo
|
2. Add another todo
|
||||||
3. View all todos (/gsd-capture --list)
|
3. View all todos (/gsd:capture --list)
|
||||||
```
|
```
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
|
|||||||
@@ -43,11 +43,11 @@ AI_PHASE_ENABLED=$(gsd-sdk query config-get workflow.ai_integration_phase 2>/dev
|
|||||||
|
|
||||||
**If `AI_PHASE_ENABLED` is `false`:**
|
**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.
|
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
|
## 2. Parse and Validate Phase
|
||||||
|
|
||||||
@@ -64,7 +64,7 @@ PHASE_INFO=$(gsd-sdk query roadmap.get-phase "${PHASE}")
|
|||||||
**If `has_context` is false:**
|
**If `has_context` is false:**
|
||||||
```
|
```
|
||||||
No CONTEXT.md found for Phase {N}.
|
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.
|
Continuing without user decisions — framework selector will ask all questions.
|
||||||
```
|
```
|
||||||
Continue (non-blocking).
|
Continue (non-blocking).
|
||||||
@@ -122,7 +122,7 @@ Goal: {phase_goal}
|
|||||||
|
|
||||||
Parse selector output for: `primary_framework`, `system_type`, `model_provider`, `eval_concerns`, `alternative_framework`.
|
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
|
## 6. Initialize AI-SPEC.md
|
||||||
|
|
||||||
@@ -276,7 +276,7 @@ git commit -m "docs({phase_slug}): generate AI-SPEC.md — {primary_framework} +
|
|||||||
◆ Output: {ai_spec_path}
|
◆ Output: {ai_spec_path}
|
||||||
|
|
||||||
Next step:
|
Next step:
|
||||||
/gsd-plan-phase {N} — planner will consume AI-SPEC.md
|
/gsd:plan-phase {N} — planner will consume AI-SPEC.md
|
||||||
```
|
```
|
||||||
|
|
||||||
</process>
|
</process>
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
<purpose>
|
<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>
|
</purpose>
|
||||||
|
|
||||||
<process>
|
<process>
|
||||||
|
|
||||||
## 1. Load ROADMAP.md
|
## 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:
|
Extract all phases. For each phase capture:
|
||||||
- Phase number and name
|
- Phase number and name
|
||||||
@@ -91,6 +91,6 @@ When writing to ROADMAP.md:
|
|||||||
- Preserve all other phase content unchanged
|
- Preserve all other phase content unchanged
|
||||||
- Do not reorder phases
|
- 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>
|
</process>
|
||||||
|
|||||||
@@ -160,7 +160,7 @@ Classify per phase:
|
|||||||
|
|
||||||
Add to audit YAML: `nyquist: { compliant_phases, partial_phases, missing_phases, overall }`
|
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
|
## 6. Aggregate into v{version}-MILESTONE-AUDIT.md
|
||||||
|
|
||||||
@@ -233,7 +233,7 @@ All requirements covered. Cross-phase integration verified. E2E flows complete.
|
|||||||
|
|
||||||
/clear then:
|
/clear then:
|
||||||
|
|
||||||
/gsd-complete-milestone {version}
|
/gsd:complete-milestone {version}
|
||||||
|
|
||||||
───────────────────────────────────────────────────────────────
|
───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -266,9 +266,9 @@ All requirements covered. Cross-phase integration verified. E2E flows complete.
|
|||||||
|
|
||||||
| Phase | VALIDATION.md | Compliant | Action |
|
| 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.
|
||||||
|
|
||||||
───────────────────────────────────────────────────────────────
|
───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -281,13 +281,13 @@ per group of related gaps) using the standard phase chain:
|
|||||||
|
|
||||||
/clear then:
|
/clear then:
|
||||||
|
|
||||||
/gsd-phase --insert <N> "Close gap: <REQ-ID> — <description>"
|
/gsd:phase --insert <N> "Close gap: <REQ-ID> — <description>"
|
||||||
/gsd-discuss-phase <N>
|
/gsd:discuss-phase <N>
|
||||||
/gsd-plan-phase <N>
|
/gsd:plan-phase <N>
|
||||||
/gsd-execute-phase <N>
|
/gsd:execute-phase <N>
|
||||||
|
|
||||||
For Nyquist-coverage gaps flagged in the table above, prefer running
|
For Nyquist-coverage gaps flagged in the table above, prefer running
|
||||||
`/gsd-validate-phase <N>` for each flagged phase (and `/gsd-secure-phase
|
`/gsd:validate-phase <N>` for each flagged phase (and `/gsd:secure-phase
|
||||||
<N>` if SECURITY.md was flagged) before inserting a new closure phase —
|
<N>` if SECURITY.md was flagged) before inserting a new closure phase —
|
||||||
they may close the gap retroactively without a new phase.
|
they may close the gap retroactively without a new phase.
|
||||||
|
|
||||||
@@ -295,7 +295,7 @@ they may close the gap retroactively without a new phase.
|
|||||||
|
|
||||||
**Also available:**
|
**Also available:**
|
||||||
- cat .planning/v{version}-MILESTONE-AUDIT.md — see full report
|
- 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)
|
||||||
|
|
||||||
───────────────────────────────────────────────────────────────
|
───────────────────────────────────────────────────────────────
|
||||||
|
|
||||||
@@ -325,17 +325,17 @@ All requirements met. No critical blockers. Accumulated tech debt needs review.
|
|||||||
|
|
||||||
**A. Complete milestone** — accept debt, track in backlog
|
**A. Complete milestone** — accept debt, track in backlog
|
||||||
|
|
||||||
/gsd-complete-milestone {version}
|
/gsd:complete-milestone {version}
|
||||||
|
|
||||||
**B. Plan a cleanup phase** — address the debt above before completing.
|
**B. Plan a cleanup phase** — address the debt above before completing.
|
||||||
Insert a closure phase using the standard chain:
|
Insert a closure phase using the standard chain:
|
||||||
|
|
||||||
/clear then:
|
/clear then:
|
||||||
|
|
||||||
/gsd-phase --insert <N> "Address tech debt: <area>"
|
/gsd:phase --insert <N> "Address tech debt: <area>"
|
||||||
/gsd-discuss-phase <N>
|
/gsd:discuss-phase <N>
|
||||||
/gsd-plan-phase <N>
|
/gsd:plan-phase <N>
|
||||||
/gsd-execute-phase <N>
|
/gsd:execute-phase <N>
|
||||||
|
|
||||||
───────────────────────────────────────────────────────────────
|
───────────────────────────────────────────────────────────────
|
||||||
</offer_next>
|
</offer_next>
|
||||||
|
|||||||
@@ -76,9 +76,9 @@ Present the audit report:
|
|||||||
|
|
||||||
## Recommended Actions
|
## 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
|
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>
|
</step>
|
||||||
|
|
||||||
|
|||||||
@@ -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`.
|
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 `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 `state_exists` is false:** Error — "No STATE.md found. Run `/gsd:new-milestone` first."
|
||||||
|
|
||||||
Display startup banner:
|
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.
|
Completed through phase ${TO_PHASE} as requested.
|
||||||
Remaining phases were not executed.
|
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.
|
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
|
Phase ${ONLY_PHASE}: ${PHASE_NAME} — Done
|
||||||
Mode: Single phase (--only)
|
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.
|
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 **"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`:**
|
**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 **"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**
|
**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}
|
Skipped: {list of skipped phases}
|
||||||
Remaining: {list of remaining 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>
|
</step>
|
||||||
|
|||||||
@@ -28,7 +28,7 @@ Todos are captured during work sessions with /gsd-add-todo.
|
|||||||
|
|
||||||
Would you like to:
|
Would you like to:
|
||||||
|
|
||||||
1. Continue with current phase (/gsd-progress)
|
1. Continue with current phase (/gsd:progress)
|
||||||
2. Add a todo now (/gsd-add-todo)
|
2. Add a todo now (/gsd-add-todo)
|
||||||
```
|
```
|
||||||
|
|
||||||
@@ -37,8 +37,8 @@ Exit.
|
|||||||
|
|
||||||
<step name="parse_filter">
|
<step name="parse_filter">
|
||||||
Check for area filter in arguments:
|
Check for area filter in arguments:
|
||||||
- `/gsd-capture --list` → show all
|
- `/gsd:capture --list` → show all
|
||||||
- `/gsd-capture --list api` → filter to area:api only
|
- `/gsd:capture --list api` → filter to area:api only
|
||||||
</step>
|
</step>
|
||||||
|
|
||||||
<step name="list_todos">
|
<step name="list_todos">
|
||||||
@@ -56,7 +56,7 @@ Pending Todos:
|
|||||||
---
|
---
|
||||||
|
|
||||||
Reply with a number to view details, or:
|
Reply with a number to view details, or:
|
||||||
- `/gsd-capture --list [area]` to filter by area
|
- `/gsd:capture --list [area]` to filter by area
|
||||||
- `q` to exit
|
- `q` to exit
|
||||||
```
|
```
|
||||||
|
|
||||||
|
|||||||
@@ -36,7 +36,7 @@ fi
|
|||||||
**Phase validation (before config gate):**
|
**Phase validation (before config gate):**
|
||||||
If `phase_found` is false, report error and exit:
|
If `phase_found` is false, report error and exit:
|
||||||
```
|
```
|
||||||
Error: Phase ${PHASE_ARG} not found. Run /gsd-progress to see available phases.
|
Error: Phase ${PHASE_ARG} not found. Run /gsd:progress to see available phases.
|
||||||
```
|
```
|
||||||
|
|
||||||
This runs BEFORE config gate check so user errors are surfaced immediately regardless of config state.
|
This runs BEFORE config gate check so user errors are surfaced immediately regardless of config state.
|
||||||
@@ -93,7 +93,7 @@ Verify that REVIEW.md exists:
|
|||||||
|
|
||||||
```bash
|
```bash
|
||||||
if [ ! -f "${REVIEW_PATH}" ]; then
|
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
|
exit 1
|
||||||
fi
|
fi
|
||||||
```
|
```
|
||||||
@@ -223,7 +223,7 @@ Check if FIX_REPORT_PATH exists:
|
|||||||
Either way:
|
Either way:
|
||||||
```
|
```
|
||||||
Some fix commits may already exist in git history — check git log for fix(${PADDED_PHASE}) commits.
|
Some fix commits may already exist in git history — check git log for fix(${PADDED_PHASE}) commits.
|
||||||
You can retry with /gsd-code-review ${PHASE_ARG} --fix.
|
You can retry with /gsd:code-review ${PHASE_ARG} --fix.
|
||||||
```
|
```
|
||||||
|
|
||||||
Exit workflow (skip auto loop).
|
Exit workflow (skip auto loop).
|
||||||
@@ -398,7 +398,7 @@ if [ ! -f "${FIX_REPORT_PATH}" ]; then
|
|||||||
echo "The fixer agent may have failed before completing."
|
echo "The fixer agent may have failed before completing."
|
||||||
echo "Check git log for any fix(${PADDED_PHASE}) commits."
|
echo "Check git log for any fix(${PADDED_PHASE}) commits."
|
||||||
echo ""
|
echo ""
|
||||||
echo "Retry: /gsd-code-review ${PHASE_ARG} --fix"
|
echo "Retry: /gsd:code-review ${PHASE_ARG} --fix"
|
||||||
echo ""
|
echo ""
|
||||||
echo "═══════════════════════════════════════════════════════════════"
|
echo "═══════════════════════════════════════════════════════════════"
|
||||||
exit 1
|
exit 1
|
||||||
@@ -455,7 +455,7 @@ if [ "$FIX_STATUS" = "all_fixed" ]; then
|
|||||||
echo "Full report: ${FIX_REPORT_PATH}"
|
echo "Full report: ${FIX_REPORT_PATH}"
|
||||||
echo ""
|
echo ""
|
||||||
echo "Next step:"
|
echo "Next step:"
|
||||||
echo " /gsd-verify-work — Verify phase completion"
|
echo " /gsd:verify-work — Verify phase completion"
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
```
|
```
|
||||||
@@ -469,8 +469,8 @@ if [ "$FIX_STATUS" = "partial" ] || [ "$FIX_STATUS" = "none_fixed" ]; then
|
|||||||
echo ""
|
echo ""
|
||||||
echo "Next steps:"
|
echo "Next steps:"
|
||||||
echo " cat ${FIX_REPORT_PATH} — View fix report"
|
echo " cat ${FIX_REPORT_PATH} — View fix report"
|
||||||
echo " /gsd-code-review ${PHASE_NUMBER} — Re-review code"
|
echo " /gsd:code-review ${PHASE_NUMBER} — Re-review code"
|
||||||
echo " /gsd-verify-work — Verify phase completion"
|
echo " /gsd:verify-work — Verify phase completion"
|
||||||
echo ""
|
echo ""
|
||||||
fi
|
fi
|
||||||
```
|
```
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user