fix(#2402): honor response_language across orchestrator output + UAT checkpoint renderer (#2457)

* fix(#2402): honor response_language across orchestrator output + UAT checkpoint renderer

Replays the in-flight bot branch fix/2402-response-language-orchestrator-coverage
(seven commits, never pushed) onto current origin/next as a single squashed commit.
The original work was substantial and correct; this commit preserves its full scope,
trimmed where rebase conflicts + workflow size budgets required it.

Three independent layers where response_language was being dropped are closed:

Layer 1 — orchestrator-facing directives across workflows. Adds the strong
"All user-facing output in this workflow MUST be presented in {response_language};
technical terms, code, paths, and subagent prompts stay in English" directive
to ~40 workflows that previously either lacked it entirely (verify-work,
new-project, new-milestone, quick, manager, and ~35 more) or carried only
the weak subagent-prompt-only form (plan-phase, execute-phase). The directive
covers narration between tool calls and banner output, not just the
AskUserQuestion prompts.

Layer 2 — UAT checkpoint renderer (src/uat.cts). buildCheckpoint now accepts
an optional responseLanguage parameter and renders the frame strings
("CHECKPOINT: Verification Required", "Type `pass` or describe what's wrong.")
in any of 9 languages (English/Spanish/French/German/Portuguese/Japanese/
Chinese/Korean/Italian) with an alias table covering ~30 input variants
(en, es, español, ja, 日本語, etc.). cmdRenderCheckpoint reads
config.response_language via loadConfig(cwd) and passes it through, so the
byte-for-byte block verify-work.md reprints verbatim is already localized
when written — preserving the anti-injection hygiene rule at verify-work.md
(the model is forbidden to translate after the fact). CJK display width is
computed by East Asian Width property ranges (W/F) so the right ║ border of
the banner stays aligned for full-width characters. English fallback is
byte-identical to the pre-fix behavior when response_language is unset or
unrecognized.

Layer 3 — literal English report templates in execute-phase. The top-of-
workflow directive covers all template sites (templates are a structural
source, not literal output). Inline render-language notes that previously
sat at each template site were removed during the squash because they
pushed execute-phase.md over its frozen pre-phase-6 byte ceiling
(93600 — ADR-857 Phase 6 capstone). The single top directive covers the
same surface with fewer bytes.

Also extends src/docs.cts and src/init.cts to propagate response_language
into the init JSON bundle of the additional workflows so the directive can
read it.

Tests added:
- tests/uat.test.cjs: buildCheckpoint with unset/unrecognized language falls
  back to English default; recognized language swaps only the two frame
  strings while structural lines stay untouched; CJK display-width regression
  (independent recomputation of East Asian Width W/F ranges).
- tests/workspace.test.cjs, tests/docs-update.test.cjs: response_language
  wiring through docs.cts/init.cts.

References: #2402; reporter's three-layer triage + Layer-4 follow-up; the
byte-for-byte anti-injection hygiene rule at verify-work.md (the reason
Layer 2 must be renderer-side, not model-translated).

This is a squash of the in-flight bot branch — seven commits representing
the original implementation plus its subsequent fix/CJK-padding/test/
changeset/regen cycles, none of which were ever pushed or PR'd. The squash
captures the final coherent state.

* chore(#2402): backfill pr:2457 in .changeset/2402-response-language-orchestrator-coverage.md

* chore(#2402): regen golden + size baseline after rebase against #2315 (PR #2451)

Rebase conflicts were entirely in generated artifacts (golden-install-parity
fixtures + workflow-size-baseline.json). After taking theirs during rebase,
regenerated cleanly against the merged source tree.
This commit is contained in:
Tom Boucher
2026-07-20 14:22:27 -04:00
committed by GitHub
parent 352876ff0c
commit b6e6a22fce
90 changed files with 1435 additions and 846 deletions

View File

@@ -0,0 +1,5 @@
---
type: Fixed
pr: 2457
---
**`response_language` now reaches orchestrator-owned prompts across most workflows and the UAT verification checkpoint frame** — previously only subagent prompts honored a configured `response_language`; the orchestrator's own questions (verify-work, new-project, new-milestone, quick, manager, and others) and the hardcoded English UAT checkpoint banner stayed in English regardless of configuration. Both now render in the configured language, with output byte-identical to before when unset. (#2402)

View File

@@ -230,6 +230,7 @@
"execute-phase-between-wave-reset.md", "execute-phase-between-wave-reset.md",
"execute-phase-context-guard.md", "execute-phase-context-guard.md",
"execute-phase-requirement-revert.md", "execute-phase-requirement-revert.md",
"execute-phase-response-language.md",
"execute-phase-wave-guard.md", "execute-phase-wave-guard.md",
"executor-examples.md", "executor-examples.md",
"gate-prompts.md", "gate-prompts.md",

View File

@@ -316,6 +316,7 @@ Full roster at `gsd-core/references/*.md`. References are shared knowledge docum
| `context-budget.md` | Context window budget allocation rules. | | `context-budget.md` | Context window budget allocation rules. |
| `execute-phase-context-guard.md` | Context exhaustion guard step for `execute-phase` wave loop — `workflow.context_guard_mode` dispatch table (warn/auto/off) and POOR-tier pause-work trigger (#1452). | | `execute-phase-context-guard.md` | Context exhaustion guard step for `execute-phase` wave loop — `workflow.context_guard_mode` dispatch table (warn/auto/off) and POOR-tier pause-work trigger (#1452). |
| `execute-phase-requirement-revert.md` | Gap-report step for `execute-phase` — reverts this phase's own shared requirement IDs out of `Complete` in REQUIREMENTS.md before rendering a `gaps_found` report, scoped to `PHASE_REQ_IDS` so other phases' rows are untouched (#2388). | | `execute-phase-requirement-revert.md` | Gap-report step for `execute-phase` — reverts this phase's own shared requirement IDs out of `Complete` in REQUIREMENTS.md before rendering a `gaps_found` report, scoped to `PHASE_REQ_IDS` so other phases' rows are untouched (#2388). |
| `execute-phase-response-language.md` | Response-language directive for `execute-phase` orchestrator output (questions, narration, report-template prose); extracted to keep the workflow under the frozen pre-phase-6 byte ceiling (#2402). |
| `continuation-format.md` | Session continuation/resume format. | | `continuation-format.md` | Session continuation/resume format. |
| `domain-probes.md` | Domain-specific probing questions for discuss-phase. | | `domain-probes.md` | Domain-specific probing questions for discuss-phase. |
| `edge-probe.md` | Spec-phase edge-completeness probe — 8-category edge taxonomy, shape classification, and the `requirements → checks → verifier` resolution model (Step 5.5). | | `edge-probe.md` | Spec-phase edge-completeness probe — 8-category edge taxonomy, shape classification, and the `requirements → checks → verifier` resolution model (Step 5.5). |

View File

@@ -0,0 +1,7 @@
# Execute-Phase Response-Language Directive (#2402)
**If `response_language` is set:** User-facing orchestrator output (questions, narration, report-template prose) in `{response_language}`; technical terms, code, file paths, and subagent prompts stay in English. Pass `response_language: {value}` into every spawned subagent prompt so any user-facing output they produce stays in the configured language.
The literal report templates embedded in this workflow (`## Execution Plan`, `## Phase {X}: {Name} Execution Complete`, `## ⚠ Phase {X}: {Name} — Gaps Found`, etc.) are a structural source, not literal output to copy verbatim — render their prose translated into `{response_language}` while keeping headings' structural markers, table columns, IDs, commands, and file paths unchanged.
This directive was extracted from `workflows/execute-phase.md` to keep that file under the frozen pre-phase-6 byte ceiling (ADR-857 Phase 6 capstone, `tests/fix-2285-claude-orchestration-wiring.test.cjs`). The `@-reference` is eager, so the runtime still loads this content alongside the workflow — the extraction is purely a file-size discipline, not a lazy-load optimization.

View File

@@ -38,7 +38,9 @@ INIT=$(gsd_run query init.phase-op "${PHASE_ARG}")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`. Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`, `response_language`.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Verify the phase directory exists. If not: Verify the phase directory exists. If not:
``` ```

View File

@@ -17,7 +17,9 @@ INIT=$(gsd_run query init.todos)
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`. Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`, `response_language`.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Ensure directories exist: Ensure directories exist:
```bash ```bash

View File

@@ -25,7 +25,9 @@ INIT=$(gsd_run query init.plan-phase "$PHASE")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
Parse JSON for: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_context`, `has_research`, `commit_docs`. Parse JSON for: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_context`, `has_research`, `commit_docs`, `response_language`.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
**File paths:** `state_path`, `roadmap_path`, `requirements_path`, `context_path`. **File paths:** `state_path`, `roadmap_path`, `requirements_path`, `context_path`.

View File

@@ -17,7 +17,9 @@ INIT=$(gsd_run query init.todos)
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
Extract from init JSON: `todo_count`, `todos`, `pending_dir`. Extract from init JSON: `todo_count`, `todos`, `pending_dir`, `response_language`.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
If `todo_count` is 0: If `todo_count` is 0:
``` ```

View File

@@ -13,6 +13,13 @@ Archive accumulated phase directories from completed milestones into `.planning/
</required_reading> </required_reading>
<process> <process>
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
<step name="identify_completed_milestones"> <step name="identify_completed_milestones">
@@ -161,7 +168,6 @@ Notes:
Commit the changes: Commit the changes:
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
gsd_run query commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/ gsd_run query commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/
``` ```

View File

@@ -42,9 +42,12 @@ Before proceeding with milestone close, run the comprehensive open artifact audi
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
gsd_run query audit-open gsd_run query audit-open
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
If the output contains open items (any section with count > 0): If the output contains open items (any section with count > 0):
Display the full audit report to the user. Display the full audit report to the user.

View File

@@ -21,7 +21,11 @@ INIT=$(gsd_run query state.load)
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
Extract `commit_docs` from init JSON. Extract `debug_dir` from init JSON — an absolute path anchored on `project_root` (#2376: `debug_file_path` values handed to the spawned `gsd-debug-session-manager` must resolve regardless of that subagent's own cwd, which may differ from the orchestrator's — build them as `{debug_dir}/{slug}.md`, never a bare `.planning/debug/...` literal). Resolve debugger model: Extract `commit_docs` and `config.response_language` from init JSON. Extract `debug_dir` from init JSON — an absolute path anchored on `project_root` (#2376: `debug_file_path` values handed to the spawned `gsd-debug-session-manager` must resolve regardless of that subagent's own cwd, which may differ from the orchestrator's — build them as `{debug_dir}/{slug}.md`, never a bare `.planning/debug/...` literal).
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Resolve debugger model:
```bash ```bash
debugger_model=$(gsd_run query resolve-model gsd-debugger 2>/dev/null | jq -r '.model' 2>/dev/null || true) debugger_model=$(gsd_run query resolve-model gsd-debugger 2>/dev/null | jq -r '.model' 2>/dev/null || true)
``` ```

View File

@@ -6,6 +6,13 @@ Called from plan-phase.md's mandatory_discovery step with a depth parameter.
NOTE: For comprehensive ecosystem research ("how do experts build this"), use /gsd:plan-phase --research-phase instead, which produces RESEARCH.md. NOTE: For comprehensive ecosystem research ("how do experts build this"), use /gsd:plan-phase --research-phase instead, which produces RESEARCH.md.
</purpose> </purpose>
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
<depth_levels> <depth_levels>
**This workflow supports three depth levels:** **This workflow supports three depth levels:**

View File

@@ -65,6 +65,7 @@ Phase number from argument (required).
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
INIT=$(gsd_run query init.phase-op "${PHASE}") INIT=$(gsd_run query init.phase-op "${PHASE}")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
AGENT_SKILLS_ANALYZER=$(gsd_run query agent-skills gsd-assumptions-analyzer) AGENT_SKILLS_ANALYZER=$(gsd_run query agent-skills gsd-assumptions-analyzer)
@@ -73,6 +74,8 @@ AGENT_SKILLS_ANALYZER=$(gsd_run query agent-skills gsd-assumptions-analyzer)
ANALYZER_MODEL=$(gsd_run query resolve-model gsd-assumptions-analyzer --raw) ANALYZER_MODEL=$(gsd_run query resolve-model gsd-assumptions-analyzer --raw)
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, Parse JSON for: `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`,
`phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_plans`, `has_verification`,
`plan_count`, `roadmap_exists`, `planning_exists`. `plan_count`, `roadmap_exists`, `planning_exists`.

View File

@@ -8,6 +8,13 @@ Read all files referenced by the invoking prompt's execution_context before star
<process> <process>
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
<step name="validate"> <step name="validate">
**Check for input.** **Check for input.**
@@ -26,7 +33,6 @@ Wait for response before continuing.
**Check if project exists.** **Check if project exists.**
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
INIT=$(gsd_run query state.load 2>/dev/null) INIT=$(gsd_run query state.load 2>/dev/null)
``` ```

View File

@@ -28,6 +28,7 @@ Extract from init JSON:
- `doc_tooling` — object with booleans: `docusaurus`, `vitepress`, `mkdocs`, `storybook` - `doc_tooling` — object with booleans: `docusaurus`, `vitepress`, `mkdocs`, `storybook`
- `monorepo_workspaces` — array of workspace glob patterns (empty if not a monorepo) - `monorepo_workspaces` — array of workspace glob patterns (empty if not a monorepo)
- `project_root` — absolute path to the project root - `project_root` — absolute path to the project root
- `response_language` — if set, present all user-facing questions, prompts, and explanations in this workflow in that language; technical terms, code, file paths, and subagent prompts stay in English
</step> </step>
<step name="classify_project"> <step name="classify_project">

View File

@@ -14,10 +14,13 @@ Use after /gsd:execute-phase to verify that the evaluation strategy from AI-SPEC
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") INIT=$(gsd_run query init.phase-op "${PHASE_ARG}")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `commit_docs`. Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `commit_docs`.
```bash ```bash

View File

@@ -86,7 +86,7 @@ Parse JSON for: `executor_model`, `verifier_model`, `commit_docs`, `parallelizat
**Model resolution:** If `executor_model` is `"inherit"`, omit the `model=` parameter from all `Agent()` calls — do NOT pass `model="inherit"` to Agent. Omitting the `model=` parameter causes Claude Code to inherit the current orchestrator model automatically. Only set `model=` when `executor_model` is an explicit model name (e.g., `"claude-sonnet-5"`, `"claude-opus-4-8"`). **Model resolution:** If `executor_model` is `"inherit"`, omit the `model=` parameter from all `Agent()` calls — do NOT pass `model="inherit"` to Agent. Omitting the `model=` parameter causes Claude Code to inherit the current orchestrator model automatically. Only set `model=` when `executor_model` is an explicit model name (e.g., `"claude-sonnet-5"`, `"claude-opus-4-8"`).
**If `response_language` is set:** Include `response_language: {value}` in all spawned subagent prompts so any user-facing output stays in the configured language. @~/.claude/gsd-core/references/execute-phase-response-language.md
Read runtime/worktree config and fail closed before any executor dispatch: Read runtime/worktree config and fail closed before any executor dispatch:
@@ -1415,7 +1415,7 @@ Commit the file:
gsd_run query commit "test({phase_num}): persist human verification items as UAT" --files "{phase_dir}/{phase_num}-UAT.md" gsd_run query commit "test({phase_num}): persist human verification items as UAT" --files "{phase_dir}/{phase_num}-UAT.md"
``` ```
**Step B: Present to user:** **Step B: Present to user**:
``` ```
## ◷ Phase {X}: {Name} — Human Verification Needed ## ◷ Phase {X}: {Name} — Human Verification Needed
@@ -1481,7 +1481,7 @@ The CLI handles:
Extract from result: `next_phase`, `next_phase_name`, `is_last_phase`, `warnings`, `has_warnings`. Extract from result: `next_phase`, `next_phase_name`, `is_last_phase`, `warnings`, `has_warnings`.
**If has_warnings is true:** **If has_warnings is true**:
``` ```
## Phase {X} marked complete with {N} warnings: ## Phase {X} marked complete with {N} warnings:

View File

@@ -48,7 +48,9 @@ INIT=$(gsd_run query init.execute-phase "${PHASE}")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
Extract from init JSON: `executor_model`, `commit_docs`, `sub_repos`, `phase_dir`, `phase_number`, `plans`, `summaries`, `incomplete_plans`, `state_path`, `config_path`. Extract from init JSON: `executor_model`, `commit_docs`, `sub_repos`, `phase_dir`, `phase_number`, `plans`, `summaries`, `incomplete_plans`, `state_path`, `config_path`, `response_language`.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
If `.planning/` missing: error. If `.planning/` missing: error.
</step> </step>

View File

@@ -22,11 +22,14 @@ Read from project config (`config.json`):
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
GRADUATION_ENABLED=$(gsd_run query config-get features.graduation 2>/dev/null || echo "true") GRADUATION_ENABLED=$(gsd_run query config-get features.graduation 2>/dev/null || echo "true")
GRADUATION_WINDOW=$(gsd_run query config-get features.graduation_window 2>/dev/null || echo "5") GRADUATION_WINDOW=$(gsd_run query config-get features.graduation_window 2>/dev/null || echo "5")
GRADUATION_THRESHOLD=$(gsd_run query config-get features.graduation_threshold 2>/dev/null || echo "3") GRADUATION_THRESHOLD=$(gsd_run query config-get features.graduation_threshold 2>/dev/null || echo "3")
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
**Skip silently (print nothing) if:** **Skip silently (print nothing) if:**
- `features.graduation` is `false` - `features.graduation` is `false`
- Fewer than `graduation_threshold` completed prior phases exist (not enough data) - Fewer than `graduation_threshold` completed prior phases exist (not enough data)

View File

@@ -7,6 +7,13 @@ Read all files referenced by the invoking prompt's execution_context before star
</required_reading> </required_reading>
<process> <process>
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
<step name="parse_args"> <step name="parse_args">
**Parse arguments:** **Parse arguments:**
@@ -49,7 +56,6 @@ available — replace the prompt with a plain-text two-question sequence
plain text from the user's response. plain text from the user's response.
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
gsd_run query validate.context \ gsd_run query validate.context \
--tokens-used "$TOKENS_USED" \ --tokens-used "$TOKENS_USED" \
--context-window "$CONTEXT_WINDOW" --context-window "$CONTEXT_WINDOW"

View File

@@ -11,6 +11,13 @@ Future: `--prd` mode (PRD extraction into PROJECT.md + REQUIREMENTS.md + ROADMAP
<step name="banner"> <step name="banner">
Display the stage banner: Display the stage banner:
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
``` ```
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
@@ -176,7 +183,6 @@ Apply GSD naming convention for the output filename:
Determine the target directory by querying `init.phase-op` for the phase number extracted in `plan_read_input`. This ensures the `project_code` prefix from `.planning/config.json` is applied: Determine the target directory by querying `init.phase-op` for the phase number extracted in `plan_read_input`. This ensures the `project_code` prefix from `.planning/config.json` is applied:
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
INIT=$(gsd_run query init.phase-op "{NN}") INIT=$(gsd_run query init.phase-op "{NN}")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
expected_phase_dir=$(echo "$INIT" | node -e "process.stdout.write(JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')).expected_phase_dir)") expected_phase_dir=$(echo "$INIT" | node -e "process.stdout.write(JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')).expected_phase_dir)")

View File

@@ -17,6 +17,13 @@ Before starting, read these project files to understand the review criteria:
</required_reading> </required_reading>
<process> <process>
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
<step name="preflight"> <step name="preflight">
Verify prerequisites: Verify prerequisites:

View File

@@ -53,10 +53,13 @@ Run the init query:
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
INIT=$(gsd_run init ingest-docs) INIT=$(gsd_run init ingest-docs)
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Parse `project_exists`, `planning_exists`, `has_git`, `git_worktree_root`, `in_nested_subdir`, `project_path` from INIT. Parse `project_exists`, `planning_exists`, `has_git`, `git_worktree_root`, `in_nested_subdir`, `project_path` from INIT.
**Absolute path fields (#2376):** INIT also carries `requirements_path`, `roadmap_path`, `state_path`, `intel_dir`, and `conflicts_path` — all anchored on `project_root`, not the orchestrator's own cwd. Use these (not bare `.planning/...` literals) whenever building `<files_to_read>`/output paths for a spawned subagent, since that subagent's own cwd may differ from the orchestrator's. **Absolute path fields (#2376):** INIT also carries `requirements_path`, `roadmap_path`, `state_path`, `intel_dir`, and `conflicts_path` — all anchored on `project_root`, not the orchestrator's own cwd. Use these (not bare `.planning/...` literals) whenever building `<files_to_read>`/output paths for a spawned subagent, since that subagent's own cwd may differ from the orchestrator's.

View File

@@ -24,7 +24,9 @@ INIT=$(gsd_run query init.manager)
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed_count`, `in_progress_count`, `phases`, `recommended_actions`, `all_complete`, `waiting_signal`, `manager_flags`, and the optional trio `queued_milestone_version`, `queued_milestone_name`, `queued_phases` (added in SDK fix `2495-2496-2497` — may be absent on older SDK versions, treat missing as empty). Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed_count`, `in_progress_count`, `phases`, `recommended_actions`, `all_complete`, `waiting_signal`, `manager_flags`, `response_language`, and the optional trio `queued_milestone_version`, `queued_milestone_name`, `queued_phases` (added in SDK fix `2495-2496-2497` — may be absent on older SDK versions, treat missing as empty).
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated. Subagent dispatches (discuss/plan/execute) stay in English at the prompt level; include `response_language` in their spawn args per the workflow being dispatched.
`manager_flags` contains per-step passthrough flags from config: `manager_flags` contains per-step passthrough flags from config:
- `manager_flags.discuss` — appended to `/gsd:discuss-phase` args (e.g. `"--auto --analyze"`) - `manager_flags.discuss` — appended to `/gsd:discuss-phase` args (e.g. `"--auto --analyze"`)

View File

@@ -35,6 +35,7 @@ Normalize per `@~/.claude/gsd-core/references/phase-argument-parsing.md` (zero-p
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
PHASE_INFO=$(gsd_run query roadmap.get-phase "${PHASE}") PHASE_INFO=$(gsd_run query roadmap.get-phase "${PHASE}")
PHASE_FOUND=$(echo "$PHASE_INFO" | jq -r '.found') PHASE_FOUND=$(echo "$PHASE_INFO" | jq -r '.found')
PHASE_NAME=$(echo "$PHASE_INFO" | jq -r '.phase_name') PHASE_NAME=$(echo "$PHASE_INFO" | jq -r '.phase_name')
@@ -54,6 +55,8 @@ else
fi fi
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
If `PHASE_FOUND` is `false`: error and exit. Suggest `/gsd add-phase` or `/gsd insert-phase` to create the phase first. If `PHASE_FOUND` is `false`: error and exit. Suggest `/gsd add-phase` or `/gsd insert-phase` to create the phase first.
**Status guard.** If the phase is `in_progress` (has plans but not complete) or `completed`, refuse unless `--force` is in `$ARGUMENTS`: **Status guard.** If the phase is `in_progress` (has plans but not complete) or `completed`, refuse unless `--force` is in `$ARGUMENTS`:

View File

@@ -30,13 +30,17 @@ Parse `$ARGUMENTS` before doing anything else:
Parse `GSD_WS` and `MILESTONE_ARG` using the established idiom (see `verify-work.md`): Parse `GSD_WS` and `MILESTONE_ARG` using the established idiom (see `verify-work.md`):
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
GSD_WS="" GSD_WS=""
echo "$ARGUMENTS" | grep -qE -- '--ws[[:space:]]+[^[:space:]]+' && GSD_WS=$(echo "$ARGUMENTS" | grep -oE -- '--ws[[:space:]]+[^[:space:]]+') echo "$ARGUMENTS" | grep -qE -- '--ws[[:space:]]+[^[:space:]]+' && GSD_WS=$(echo "$ARGUMENTS" | grep -oE -- '--ws[[:space:]]+[^[:space:]]+')
MILESTONE_ARG=$(echo "$ARGUMENTS" | sed -E 's/--ws[[:space:]]+[^[:space:]]+//g' | xargs) MILESTONE_ARG=$(echo "$ARGUMENTS" | sed -E 's/--ws[[:space:]]+[^[:space:]]+//g' | xargs)
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
``` ```
`GSD_WS` must chain to every downstream routing suggestion in this workflow (Step 4's shared-file guard, and the `/gsd:discuss-phase`/`/gsd:plan-phase` routing hints below) per the routing-propagation contract in `references/workstream-flag.md` — never let it silently drop. `GSD_WS` must chain to every downstream routing suggestion in this workflow (Step 4's shared-file guard, and the `/gsd:discuss-phase`/`/gsd:plan-phase` routing hints below) per the routing-propagation contract in `references/workstream-flag.md` — never let it silently drop.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow (including the "What do you want to build next?" prompt and seed-selection questions below) MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
- Read PROJECT.md (existing project, validated requirements, decisions) - Read PROJECT.md (existing project, validated requirements, decisions)
- Read MILESTONES.md (what shipped previously) - Read MILESTONES.md (what shipped previously)
- Read STATE.md (pending todos, blockers) - Read STATE.md (pending todos, blockers)
@@ -195,7 +199,6 @@ blockers, todos) is preserved across the switch — symmetric with
`milestone.complete`. `milestone.complete`.
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
OUTGOING_MILESTONE=$(gsd_run query state.get milestone --raw 2>/dev/null || true) OUTGOING_MILESTONE=$(gsd_run query state.get milestone --raw 2>/dev/null || true)
printf '%s' "$OUTGOING_MILESTONE" > .planning/.gsd-outgoing-milestone 2>/dev/null || true printf '%s' "$OUTGOING_MILESTONE" > .planning/.gsd-outgoing-milestone 2>/dev/null || true
echo "Outgoing milestone (phase history archives under THIS version in step 6): ${OUTGOING_MILESTONE:-<unknown>}" echo "Outgoing milestone (phase history archives under THIS version in step 6): ${OUTGOING_MILESTONE:-<unknown>}"

View File

@@ -65,7 +65,9 @@ AGENT_SKILLS_SYNTHESIZER=$(gsd_run query agent-skills gsd-research-synthesizer)
AGENT_SKILLS_ROADMAPPER=$(gsd_run query agent-skills gsd-roadmapper) AGENT_SKILLS_ROADMAPPER=$(gsd_run query agent-skills gsd-roadmapper)
``` ```
Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `git_worktree_root`, `in_nested_subdir`, `project_path`, `agents_installed`, `missing_agents`, `agent_runtime`, `agents_dir`, `required_agents`, `required_agents_installed`, `missing_required_agents`, `agent_skill_payloads_available`, `agent_skill_payload_agents`, `requirements_path`, `roadmap_path`, `config_path`, `research_dir`. Parse JSON for: `researcher_model`, `synthesizer_model`, `roadmapper_model`, `commit_docs`, `project_exists`, `has_codebase_map`, `planning_exists`, `has_existing_code`, `has_package_file`, `is_brownfield`, `needs_codebase_map`, `has_git`, `git_worktree_root`, `in_nested_subdir`, `project_path`, `agents_installed`, `missing_agents`, `agent_runtime`, `agents_dir`, `required_agents`, `required_agents_installed`, `missing_required_agents`, `agent_skill_payloads_available`, `agent_skill_payload_agents`, `requirements_path`, `roadmap_path`, `config_path`, `research_dir`, `response_language`.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
**If `agents_installed` is false:** Display a warning before proceeding: **If `agents_installed` is false:** Display a warning before proceeding:
```text ```text

View File

@@ -18,7 +18,9 @@ INIT=$(gsd_run query init.new-workspace)
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
Parse JSON for: `default_workspace_base`, `child_repos`, `child_repo_count`, `worktree_available`, `is_git_repo`, `cwd_repo_name`, `project_root`. Parse JSON for: `default_workspace_base`, `child_repos`, `child_repo_count`, `worktree_available`, `is_git_repo`, `cwd_repo_name`, `project_root`, `response_language`.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
## 2. Parse Arguments ## 2. Parse Arguments

View File

@@ -31,6 +31,9 @@ Parse JSON fields from `INIT`:
- `missing_codebase_map_files`, `missing_fast_codebase_map_files` - `missing_codebase_map_files`, `missing_fast_codebase_map_files`
- `has_docs_candidates`, `doc_candidate_count`, `onboarding_summary_exists` - `has_docs_candidates`, `doc_candidate_count`, `onboarding_summary_exists`
- `commit_docs`, `text_mode`, `has_git`, `git_worktree_root`, `in_nested_subdir` - `commit_docs`, `text_mode`, `has_git`, `git_worktree_root`, `in_nested_subdir`
- `response_language`
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Set: Set:
- `TEXT_MODE=true` if `--text` is present or `text_mode` is true. When `TEXT_MODE` is active, replace every `AskUserQuestion` call below with a plain-text numbered list and ask the user to type their choice number — required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available. - `TEXT_MODE=true` if `--text` is present or `text_mode` is true. When `TEXT_MODE` is active, replace every `AskUserQuestion` call below with a plain-text numbered list and ask the user to type their choice number — required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.

View File

@@ -83,7 +83,7 @@ When `CONTEXT_WINDOW >= 500000`, the planner prompt includes the 3 most recent p
Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `nyquist_validation_enabled`, `commit_docs`, `text_mode`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_reviews`, `has_plans`, `plan_count`, `phase_status` (#3569), `planning_exists`, `roadmap_exists`, `phase_req_ids`, `response_language`, `granularity`. Parse JSON for: `researcher_model`, `planner_model`, `checker_model`, `research_enabled`, `plan_checker_enabled`, `nyquist_validation_enabled`, `commit_docs`, `text_mode`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_research`, `has_context`, `has_reviews`, `has_plans`, `plan_count`, `phase_status` (#3569), `planning_exists`, `roadmap_exists`, `phase_req_ids`, `response_language`, `granularity`.
**If `response_language` is set:** Include `response_language: {value}` in all spawned subagent prompts so any user-facing output stays in the configured language. **If `response_language` is set:** All user-facing orchestrator output MUST be in `{response_language}`; technical terms, code, paths, and subagent prompts stay in English. Pass `response_language: {value}` into every spawned subagent prompt.
**File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`, `reviews_path`. These are null if files don't exist. **File paths (for <files_to_read> blocks):** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`, `verification_path`, `uat_path`, `reviews_path`. These are null if files don't exist.

View File

@@ -136,8 +136,11 @@ Store relevant file paths as `$BREADCRUMBS`.
<step name="commit-seed"> <step name="commit-seed">
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
gsd_run query commit "docs: plant seed — {$IDEA}" --files .planning/seeds/SEED-{PADDED}-{slug}.md gsd_run query commit "docs: plant seed — {$IDEA}" --files .planning/seeds/SEED-{PADDED}-{slug}.md
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
</step> </step>
<step name="confirm"> <step name="confirm">

View File

@@ -14,6 +14,13 @@ Key references:
</required_reading> </required_reading>
<process> <process>
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
## 1. Initialize ## 1. Initialize
@@ -130,7 +137,6 @@ Display: "◆ Scanning sessions..."
Run session scan: Run session scan:
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
SCAN_RESULT=$(gsd_run query scan-sessions --json 2>/dev/null) SCAN_RESULT=$(gsd_run query scan-sessions --json 2>/dev/null)
``` ```

View File

@@ -38,6 +38,13 @@ Parse `$ARGUMENTS` for:
After parsing, normalize: if `$DISCUSS_MODE` and `$RESEARCH_MODE` and `$VALIDATE_MODE` are all true, set `$FULL_MODE=true`. This ensures `--discuss --research --validate` is treated identically to `--full`. After parsing, normalize: if `$DISCUSS_MODE` and `$RESEARCH_MODE` and `$VALIDATE_MODE` are all true, set `$FULL_MODE=true`. This ensures `--discuss --research --validate` is treated identically to `--full`.
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
If `$DESCRIPTION` is empty after parsing, prompt user interactively: If `$DESCRIPTION` is empty after parsing, prompt user interactively:
@@ -125,7 +132,6 @@ If `$VALIDATE_MODE` only:
**Step 2: Initialize** **Step 2: Initialize**
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
INIT=$(gsd_run query init.quick "$DESCRIPTION") INIT=$(gsd_run query init.quick "$DESCRIPTION")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
AGENT_SKILLS_PLANNER=$(gsd_run query agent-skills gsd-planner) AGENT_SKILLS_PLANNER=$(gsd_run query agent-skills gsd-planner)
@@ -134,7 +140,7 @@ AGENT_SKILLS_CHECKER=$(gsd_run query agent-skills gsd-plan-checker)
AGENT_SKILLS_VERIFIER=$(gsd_run query agent-skills gsd-verifier) AGENT_SKILLS_VERIFIER=$(gsd_run query agent-skills gsd-verifier)
``` ```
Parse JSON for: `planner_model`, `executor_model`, `checker_model`, `verifier_model`, `reviewer_model`, `commit_docs`, `branch_name`, `quick_id`, `slug`, `date`, `timestamp`, `quick_dir`, `task_dir`, `roadmap_exists`, `planning_exists`. Parse JSON for: `planner_model`, `executor_model`, `checker_model`, `verifier_model`, `reviewer_model`, `commit_docs`, `branch_name`, `quick_id`, `slug`, `date`, `timestamp`, `quick_dir`, `task_dir`, `roadmap_exists`, `planning_exists`, `response_language`.
`init.quick` does not emit dedicated `state_path`/`project_path` fields, so derive them from the already-absolute `quick_dir` (#2376 — files handed to a spawned subagent must resolve regardless of that subagent's own cwd): `init.quick` does not emit dedicated `state_path`/`project_path` fields, so derive them from the already-absolute `quick_dir` (#2376 — files handed to a spawned subagent must resolve regardless of that subagent's own cwd):
```bash ```bash

View File

@@ -14,10 +14,13 @@ Extract workspace name from $ARGUMENTS.
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
INIT=$(gsd_run query init.remove-workspace "$WORKSPACE_NAME") INIT=$(gsd_run query init.remove-workspace "$WORKSPACE_NAME")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Parse JSON for: `workspace_name`, `workspace_path`, `has_manifest`, `strategy`, `repos`, `repo_count`, `dirty_repos`, `has_dirty_repos`. Parse JSON for: `workspace_name`, `workspace_path`, `has_manifest`, `strategy`, `repos`, `repo_count`, `dirty_repos`, `has_dirty_repos`.
**If no workspace name provided:** **If no workspace name provided:**

View File

@@ -17,11 +17,14 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") INIT=$(gsd_run query init.phase-op "${PHASE_ARG}")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
AGENT_SKILLS_AUDITOR=$(gsd_run query agent-skills gsd-security-auditor) AGENT_SKILLS_AUDITOR=$(gsd_run query agent-skills gsd-security-auditor)
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`. Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`.
```bash ```bash

View File

@@ -43,6 +43,7 @@ Ensure config exists and resolve the active config path (flat vs workstream, #22
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
gsd_run query config-ensure-section gsd_run query config-ensure-section
if [[ -z "${GSD_CONFIG_PATH:-}" ]]; then if [[ -z "${GSD_CONFIG_PATH:-}" ]]; then
if [[ -f .planning/active-workstream ]]; then if [[ -f .planning/active-workstream ]]; then
@@ -54,6 +55,8 @@ if [[ -z "${GSD_CONFIG_PATH:-}" ]]; then
fi fi
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Store `$GSD_CONFIG_PATH`. Every subsequent read/write uses it. Store `$GSD_CONFIG_PATH`. Every subsequent read/write uses it.
</step> </step>

View File

@@ -13,6 +13,7 @@ Ensure config exists and load current state:
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
gsd_run query config-ensure-section gsd_run query config-ensure-section
INIT=$(gsd_run query state.load) INIT=$(gsd_run query state.load)
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
@@ -27,6 +28,8 @@ if [[ -z "${GSD_CONFIG_PATH:-}" ]]; then
fi fi
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Creates `config.json` (at the resolved path) with defaults if missing. `INIT` still holds `state.load` output for any step that needs STATE fields. Creates `config.json` (at the resolved path) with defaults if missing. `INIT` still holds `state.load` output for any step that needs STATE fields.
Store `$GSD_CONFIG_PATH` — all subsequent reads and writes use this path, not a hardcoded `.planning/config.json`, so active-workstream installs target the correct file (#2282). Store `$GSD_CONFIG_PATH` — all subsequent reads and writes use this path, not a hardcoded `.planning/config.json`, so active-workstream installs target the correct file (#2282).
</step> </step>

View File

@@ -25,10 +25,13 @@ Parse arguments and load project state:
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") INIT=$(gsd_run query init.phase-op "${PHASE_ARG}")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Parse from init JSON: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `padded_phase`, `commit_docs`. Parse from init JSON: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `padded_phase`, `commit_docs`.
Also load config for branching strategy: Also load config for branching strategy:

View File

@@ -100,8 +100,11 @@ ls -d .planning/sketches/[0-9][0-9][0-9]-* 2>/dev/null | sort | tail -1
Check `commit_docs` config: Check `commit_docs` config:
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
COMMIT_DOCS=$(gsd_run query config-get commit_docs 2>/dev/null || echo "true") COMMIT_DOCS=$(gsd_run query config-get commit_docs 2>/dev/null || echo "true")
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
</step> </step>
<step name="mood_intake"> <step name="mood_intake">

View File

@@ -30,9 +30,12 @@ Run this resolver block exactly. It locates `gsd-tools.cjs` across every support
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
SNAPSHOT=$(gsd_run smart-entry --json 2>/dev/null) SNAPSHOT=$(gsd_run smart-entry --json 2>/dev/null)
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Parse `SNAPSHOT` as JSON. It has the shape: Parse `SNAPSHOT` as JSON. It has the shape:
```json ```json

View File

@@ -13,6 +13,13 @@ Read all files referenced by the invoking prompt's execution_context before star
</required_reading> </required_reading>
<process> <process>
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
<step name="banner"> <step name="banner">
``` ```
@@ -96,7 +103,6 @@ ls -d .planning/spikes/[0-9][0-9][0-9]-* 2>/dev/null | sort | tail -1
Check `commit_docs` config: Check `commit_docs` config:
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
COMMIT_DOCS=$(gsd_run query config-get commit_docs 2>/dev/null || echo "true") COMMIT_DOCS=$(gsd_run query config-get commit_docs 2>/dev/null || echo "true")
``` ```
</step> </step>

View File

@@ -26,7 +26,9 @@ AGENT_SKILLS_UI=$(gsd_run query agent-skills gsd-ui-researcher)
AGENT_SKILLS_UI_CHECKER=$(gsd_run query agent-skills gsd-ui-checker) AGENT_SKILLS_UI_CHECKER=$(gsd_run query agent-skills gsd-ui-checker)
``` ```
Parse JSON for: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_context`, `has_research`, `commit_docs`. Parse JSON for: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_context`, `has_research`, `commit_docs`, `response_language`.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
**File paths:** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`. **File paths:** `state_path`, `roadmap_path`, `requirements_path`, `context_path`, `research_path`.

View File

@@ -17,11 +17,14 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") INIT=$(gsd_run query init.phase-op "${PHASE_ARG}")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
AGENT_SKILLS_UI_REVIEWER=$(gsd_run query agent-skills gsd-ui-auditor) AGENT_SKILLS_UI_REVIEWER=$(gsd_run query agent-skills gsd-ui-auditor)
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `commit_docs`. Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `commit_docs`.
```bash ```bash

View File

@@ -8,6 +8,13 @@ Safe git revert workflow. Rolls back GSD phase or plan commits using the phase m
</required_reading> </required_reading>
<process> <process>
```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
<step name="banner" priority="first"> <step name="banner" priority="first">
Display the stage banner: Display the stage banner:

View File

@@ -7,6 +7,8 @@ Read all files referenced by the invoking prompt's execution_context before star
</required_reading> </required_reading>
<process> <process>
**If `response_language` is configured:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in that language. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
<step name="get_installed_version"> <step name="get_installed_version">
Detect the installed GSD version, scope, runtime, and config dir. Detect the installed GSD version, scope, runtime, and config dir.

View File

@@ -17,11 +17,14 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo
```bash ```bash
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi _GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") INIT=$(gsd_run query init.phase-op "${PHASE_ARG}")
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
AGENT_SKILLS_AUDITOR=$(gsd_run query agent-skills gsd-nyquist-auditor) AGENT_SKILLS_AUDITOR=$(gsd_run query agent-skills gsd-nyquist-auditor)
``` ```
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`. Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`.
```bash ```bash

View File

@@ -48,7 +48,9 @@ AGENT_SKILLS_PLANNER=$(gsd_run query agent-skills gsd-planner)
AGENT_SKILLS_CHECKER=$(gsd_run query agent-skills gsd-plan-checker) AGENT_SKILLS_CHECKER=$(gsd_run query agent-skills gsd-plan-checker)
``` ```
Parse JSON for: `planner_model`, `checker_model`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `has_verification`, `uat_path`, `state_path`, `roadmap_path`. Parse JSON for: `planner_model`, `checker_model`, `commit_docs`, `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `has_verification`, `uat_path`, `state_path`, `roadmap_path`, `response_language`.
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
```bash ```bash
# MVP mode detection via the centralized phase.mvp-mode resolver. # MVP mode detection via the centralized phase.mvp-mode resolver.
@@ -245,6 +247,8 @@ For each deliverable, create a test:
- name: Brief test name - name: Brief test name
- expected: What the user should see/experience (specific, observable) - expected: What the user should see/experience (specific, observable)
**If `response_language` is set, write the `name` and `expected` text in `{response_language}`** — the examples below are illustrative templates only, not literal output to copy.
Examples: Examples:
- Accomplishment: "Added comment threading with infinite nesting" - Accomplishment: "Added comment threading with infinite nesting"
→ Test: "Reply to a Comment" → Test: "Reply to a Comment"

View File

@@ -285,6 +285,12 @@ function cmdDocsInit(cwd: string, raw: boolean): void {
const agentStatus = checkAgentsInstalled(); const agentStatus = checkAgentsInstalled();
result['agents_installed'] = agentStatus.agents_installed; result['agents_installed'] = agentStatus.agents_installed;
result['missing_agents'] = agentStatus.missing_agents; result['missing_agents'] = agentStatus.missing_agents;
// #2402: withProjectRoot injects response_language when set; cmdDocsInit predates
// that helper and never picked it up, so docs-update's orchestrator-owned prompts
// silently stayed English even with response_language configured.
if (config.response_language) {
result['response_language'] = config.response_language;
}
output(result, raw, undefined); output(result, raw, undefined);
} }

View File

@@ -2092,7 +2092,9 @@ function cmdInitRemoveWorkspace(cwd: string, name: string | undefined, raw: bool
has_dirty_repos: dirtyRepos.length > 0, has_dirty_repos: dirtyRepos.length > 0,
}; };
output(result, raw); // #2402: sibling init commands route through withProjectRoot so response_language
// (and project_root/agents_installed) reach the workflow; this one didn't.
output(withProjectRoot(cwd, result), raw);
} }
function buildAgentSkillsBlock( function buildAgentSkillsBlock(

View File

@@ -36,6 +36,9 @@ const { extractFrontmatter } = frontmatter;
import phaseIdMod = require('./phase-id.cjs'); import phaseIdMod = require('./phase-id.cjs');
const { PHASE_NUMBER_TOKEN_SOURCE } = phaseIdMod; const { PHASE_NUMBER_TOKEN_SOURCE } = phaseIdMod;
import { requireSafePath, sanitizeForDisplay } from './security.cjs'; import { requireSafePath, sanitizeForDisplay } from './security.cjs';
// eslint-disable-next-line @typescript-eslint/no-require-imports -- config-loader.cjs is an export= CommonJS module
import configLoader = require('./config-loader.cjs');
const { loadConfig } = configLoader;
// ─── Types ──────────────────────────────────────────────────────────────────── // ─── Types ────────────────────────────────────────────────────────────────────
@@ -200,7 +203,9 @@ function cmdRenderCheckpoint(cwd: string, options: { file?: string } = {}, raw:
error('UAT session is already complete; no pending checkpoint to render'); error('UAT session is already complete; no pending checkpoint to render');
} }
const checkpoint = buildCheckpoint(currentTest as Required<Omit<CurrentTest, 'complete'>> & { complete: false }); const config = loadConfig(cwd);
const responseLanguage = typeof config.response_language === 'string' ? config.response_language : undefined;
const checkpoint = buildCheckpoint(currentTest as Required<Omit<CurrentTest, 'complete'>> & { complete: false }, responseLanguage);
output({ output({
file_path: toPosixPath(path.relative(cwd, resolvedPath)), file_path: toPosixPath(path.relative(cwd, resolvedPath)),
test_number: currentTest.number, test_number: currentTest.number,
@@ -342,11 +347,130 @@ function parseExpectedFromTestBlock(block: string): string | null {
} }
// ─── buildCheckpoint ────────────────────────────────────────────────────────── // ─── buildCheckpoint ──────────────────────────────────────────────────────────
//
// Localized frame strings (#2402): the checkpoint banner + instruction line are
// the byte-for-byte block verify-work.md reprints verbatim, so the model can't
// translate it after the fact — the frame must already be in `response_language`
// when this function returns it. Bounded table with an ENGLISH FALLBACK for
// unset/unrecognized languages keeps the default path byte-identical.
function buildCheckpoint(currentTest: { number: number; name: string; expected: string }): string { interface CheckpointFrame {
banner: string;
instruction: string;
}
const CHECKPOINT_BOX_WIDTH = 64; // total column width of the ╔══...╗ border, borders stay byte-identical
const CHECKPOINT_FRAMES: Record<string, CheckpointFrame> = {
english: {
banner: 'CHECKPOINT: Verification Required',
instruction: 'Type `pass` or describe what\'s wrong.',
},
spanish: {
banner: 'PUNTO DE CONTROL: Verificación requerida',
instruction: 'Escribe `pass` o describe qué está mal.',
},
french: {
banner: 'POINT DE CONTRÔLE : Vérification requise',
instruction: 'Tapez `pass` ou décrivez ce qui ne va pas.',
},
german: {
banner: 'KONTROLLPUNKT: Überprüfung erforderlich',
instruction: 'Gib `pass` ein oder beschreibe, was nicht stimmt.',
},
portuguese: {
banner: 'PONTO DE VERIFICAÇÃO: Verificação necessária',
instruction: 'Digite `pass` ou descreva o que está errado.',
},
japanese: {
banner: 'チェックポイント: 検証が必要です',
instruction: '`pass` と入力するか、問題点を説明してください。',
},
chinese: {
banner: '检查点:需要验证',
instruction: '输入 `pass` 或描述问题所在。',
},
korean: {
banner: '체크포인트: 검증 필요',
instruction: '`pass`를 입력하거나 문제를 설명하세요.',
},
italian: {
banner: 'PUNTO DI CONTROLLO: Verifica richiesta',
instruction: 'Digita `pass` o descrivi cosa non va.',
},
};
// Free-form response_language aliases → canonical CHECKPOINT_FRAMES key.
const CHECKPOINT_LANGUAGE_ALIASES: Record<string, string> = {
english: 'english', en: 'english', 'en-us': 'english', 'en-gb': 'english',
spanish: 'spanish', es: 'spanish', 'español': 'spanish', espanol: 'spanish', castellano: 'spanish',
french: 'french', fr: 'french', 'français': 'french', francais: 'french',
german: 'german', de: 'german', deutsch: 'german',
portuguese: 'portuguese', pt: 'portuguese', 'pt-br': 'portuguese', 'português': 'portuguese', portugues: 'portuguese', 'brazilian portuguese': 'portuguese',
japanese: 'japanese', ja: 'japanese', '日本語': 'japanese',
chinese: 'chinese', zh: 'chinese', 'zh-cn': 'chinese', 'zh-tw': 'chinese', mandarin: 'chinese', 'simplified chinese': 'chinese', 'traditional chinese': 'chinese', '中文': 'chinese',
korean: 'korean', ko: 'korean', '한국어': 'korean',
italian: 'italian', it: 'italian', italiano: 'italian',
};
function resolveCheckpointFrame(responseLanguage: string | undefined): CheckpointFrame {
if (!responseLanguage) return CHECKPOINT_FRAMES.english;
const key = CHECKPOINT_LANGUAGE_ALIASES[responseLanguage.trim().toLowerCase()];
return (key && CHECKPOINT_FRAMES[key]) || CHECKPOINT_FRAMES.english;
}
// Approximate East Asian Width ranges (Unicode property values W and F) — the
// CJK scripts CHECKPOINT_FRAMES ships (Japanese/Chinese/Korean) render each
// matching code point at 2 terminal/display columns, not 1. Padding computed
// from `.length` (UTF-16 code units) undercounts these by one column per
// wide character, visually misaligning the box's right border (#2402 review
// medium finding). Latin-script frames (English/Spanish/French/German/
// Portuguese/Italian) contain no wide code points, so displayWidth === length
// for them — no behavior change there.
function isWideCodePoint(codePoint: number): boolean {
return (
(codePoint >= 0x1100 && codePoint <= 0x115f) || // Hangul Jamo
codePoint === 0x2329 || codePoint === 0x232a ||
(codePoint >= 0x2e80 && codePoint <= 0x303e) || // CJK Radicals .. CJK Symbols and Punctuation
(codePoint >= 0x3041 && codePoint <= 0x33ff) || // Hiragana .. CJK Compatibility
(codePoint >= 0x3400 && codePoint <= 0x4dbf) || // CJK Unified Ideographs Extension A
(codePoint >= 0x4e00 && codePoint <= 0x9fff) || // CJK Unified Ideographs
(codePoint >= 0xa000 && codePoint <= 0xa4cf) || // Yi Syllables
(codePoint >= 0xac00 && codePoint <= 0xd7a3) || // Hangul Syllables
(codePoint >= 0xf900 && codePoint <= 0xfaff) || // CJK Compatibility Ideographs
(codePoint >= 0xfe30 && codePoint <= 0xfe4f) || // CJK Compatibility Forms
(codePoint >= 0xff00 && codePoint <= 0xff60) || // Fullwidth Forms
(codePoint >= 0xffe0 && codePoint <= 0xffe6) ||
(codePoint >= 0x20000 && codePoint <= 0x3fffd) // CJK Unified Ideographs Extension B+ / supplementary
);
}
// Iterates by Unicode code point (not UTF-16 code unit) so astral characters
// are measured once, not as two surrogate units.
function displayWidth(text: string): number {
let width = 0;
for (const ch of text) {
width += isWideCodePoint(ch.codePointAt(0) as number) ? 2 : 1;
}
return width;
}
// Pads `text` into a `║ text… ║` line matching CHECKPOINT_BOX_WIDTH. Content
// that overflows the box (a longer translated string) is left unpadded rather
// than truncated — a slightly ragged border beats losing text.
function checkpointBoxLine(text: string): string {
const innerWidth = CHECKPOINT_BOX_WIDTH - 2;
const content = ` ${text}`;
const padLength = innerWidth - displayWidth(content);
const padded = padLength > 0 ? content + ' '.repeat(padLength) : content;
return `║${padded}║`;
}
function buildCheckpoint(currentTest: { number: number; name: string; expected: string }, responseLanguage?: string): string {
const frame = resolveCheckpointFrame(responseLanguage);
return [ return [
'╔══════════════════════════════════════════════════════════════╗', '╔══════════════════════════════════════════════════════════════╗',
'║ CHECKPOINT: Verification Required ║', checkpointBoxLine(frame.banner),
'╚══════════════════════════════════════════════════════════════╝', '╚══════════════════════════════════════════════════════════════╝',
'', '',
`**Test ${currentTest.number}: ${currentTest.name}**`, `**Test ${currentTest.number}: ${currentTest.name}**`,
@@ -354,7 +478,7 @@ function buildCheckpoint(currentTest: { number: number; name: string; expected:
currentTest.expected, currentTest.expected,
'', '',
'──────────────────────────────────────────────────────────────', '──────────────────────────────────────────────────────────────',
'Type `pass` or describe what\'s wrong.', frame.instruction,
'──────────────────────────────────────────────────────────────', '──────────────────────────────────────────────────────────────',
].join('\n'); ].join('\n');
} }

View File

@@ -91,6 +91,47 @@ describe('docs-init command', () => {
}); });
}); });
// ─── response_language wiring (#2402) ─────────────────────────────────────────
//
// cmdDocsInit predates withProjectRoot (init.cts) and never picked up
// response_language, so docs-update's orchestrator-owned prompts silently
// stayed English even with response_language configured. Mirrors the
// established `init manager` response_language coverage pattern
// (tests/init-manager.test.cjs).
describe('docs-init response_language wiring (#2402)', () => {
let tmpDir;
beforeEach(() => {
tmpDir = createTempProject();
});
afterEach(() => {
cleanup(tmpDir);
});
test('output includes response_language when configured', () => {
fs.writeFileSync(
path.join(tmpDir, '.planning', 'config.json'),
JSON.stringify({ response_language: 'Japanese' })
);
const result = runGsdTools(['docs-init'], tmpDir);
assert.ok(result.success, `Command failed: ${result.error}`);
const data = JSON.parse(result.output);
assert.strictEqual(data.response_language, 'Japanese');
});
test('output omits response_language when not configured', () => {
const result = runGsdTools(['docs-init'], tmpDir);
assert.ok(result.success, `Command failed: ${result.error}`);
const data = JSON.parse(result.output);
assert.strictEqual(data.response_language, undefined);
});
});
// ─── project type detection ─────────────────────────────────────────────────── // ─── project type detection ───────────────────────────────────────────────────
describe('project type detection', () => { describe('project type detection', () => {

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "826cf9315e592a1d", "gsd-core/references/execute-phase-wave-guard.md": "826cf9315e592a1d",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -208,23 +209,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "8cc2e884a021b79b", "gsd-core/workflows/add-backlog.md": "8cc2e884a021b79b",
"gsd-core/workflows/add-phase.md": "820572da6367308c", "gsd-core/workflows/add-phase.md": "820572da6367308c",
"gsd-core/workflows/add-tests.md": "ad6d49634e04ca7c", "gsd-core/workflows/add-tests.md": "6eb1897c448bbd21",
"gsd-core/workflows/add-todo.md": "e410a72c168e43c0", "gsd-core/workflows/add-todo.md": "69af1e11021d6765",
"gsd-core/workflows/ai-integration-phase.md": "ea5a229a9cad3b4d", "gsd-core/workflows/ai-integration-phase.md": "fe881bd1429758df",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "68d2133e0d483905", "gsd-core/workflows/audit-fix.md": "68d2133e0d483905",
"gsd-core/workflows/audit-milestone.md": "280cd85908dd45cb", "gsd-core/workflows/audit-milestone.md": "280cd85908dd45cb",
"gsd-core/workflows/audit-uat.md": "ea8ddd910ed16ba4", "gsd-core/workflows/audit-uat.md": "ea8ddd910ed16ba4",
"gsd-core/workflows/autonomous.md": "603ce2019835f00e", "gsd-core/workflows/autonomous.md": "603ce2019835f00e",
"gsd-core/workflows/check-todos.md": "5a62092df800ad7c", "gsd-core/workflows/check-todos.md": "d05762462ced3702",
"gsd-core/workflows/cleanup.md": "12c8fd85d3010fe6", "gsd-core/workflows/cleanup.md": "260c5e46afc1c174",
"gsd-core/workflows/code-review-fix.md": "60640e633b0a124b", "gsd-core/workflows/code-review-fix.md": "60640e633b0a124b",
"gsd-core/workflows/code-review.md": "1a72ce22df16b3fa", "gsd-core/workflows/code-review.md": "1a72ce22df16b3fa",
"gsd-core/workflows/complete-milestone.md": "aaf272074acec69d", "gsd-core/workflows/complete-milestone.md": "f54214679be6a98a",
"gsd-core/workflows/debug.md": "220b0ddc8bc4fb59", "gsd-core/workflows/debug.md": "013255ecf10f5219",
"gsd-core/workflows/diagnose-issues.md": "27c2012f67f9cf79", "gsd-core/workflows/diagnose-issues.md": "27c2012f67f9cf79",
"gsd-core/workflows/discovery-phase.md": "3de990caffdde4f8", "gsd-core/workflows/discovery-phase.md": "222887a5b2094a50",
"gsd-core/workflows/discuss-phase-assumptions.md": "8581fd77def7ce84", "gsd-core/workflows/discuss-phase-assumptions.md": "6e6a0c20cf0a04b7",
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383", "gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
"gsd-core/workflows/discuss-phase.md": "c0a977154470b7f5", "gsd-core/workflows/discuss-phase.md": "c0a977154470b7f5",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "ab0c68941386998b", "gsd-core/workflows/discuss-phase/modes/advisor.md": "ab0c68941386998b",
@@ -239,88 +240,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405", "gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "2b56ec2868cbddb4", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "2b56ec2868cbddb4",
"gsd-core/workflows/do.md": "3eddf1cc9e04b685", "gsd-core/workflows/do.md": "6be997df35e9e82b",
"gsd-core/workflows/docs-update.md": "8e986e26d0e6e1a0", "gsd-core/workflows/docs-update.md": "16acb903dbe2bcbe",
"gsd-core/workflows/edit-phase.md": "fc932e82ba1f585a", "gsd-core/workflows/edit-phase.md": "fc932e82ba1f585a",
"gsd-core/workflows/eval-review.md": "eb4040eaa5b8497f", "gsd-core/workflows/eval-review.md": "9e8b169c05098b57",
"gsd-core/workflows/execute-phase.md": "2e9ca8842df9e543", "gsd-core/workflows/execute-phase.md": "e96e1fa1b78b8a21",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "55d0706e80a2554a", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "55d0706e80a2554a",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "13aa54f8279960ae", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "13aa54f8279960ae",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "476f88892510a09e", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "476f88892510a09e",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "b5eec9e33626aefa", "gsd-core/workflows/execute-plan.md": "8d0cd5e80d86de35",
"gsd-core/workflows/explore.md": "934c00f9f216dbdb", "gsd-core/workflows/explore.md": "934c00f9f216dbdb",
"gsd-core/workflows/extract-learnings.md": "167ea7f0e23bf496", "gsd-core/workflows/extract-learnings.md": "167ea7f0e23bf496",
"gsd-core/workflows/fast.md": "568e6c3ec00b6e00", "gsd-core/workflows/fast.md": "568e6c3ec00b6e00",
"gsd-core/workflows/forensics.md": "b64f0309b8c3fde1", "gsd-core/workflows/forensics.md": "b64f0309b8c3fde1",
"gsd-core/workflows/graduation.md": "a9d8f15ba81a993f", "gsd-core/workflows/graduation.md": "c892887f212c9cff",
"gsd-core/workflows/health.md": "1ac4d567ee95acfb", "gsd-core/workflows/health.md": "8202d3532bde3952",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0", "gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "80d03a09b561766b", "gsd-core/workflows/help/modes/full.md": "80d03a09b561766b",
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69", "gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
"gsd-core/workflows/import.md": "3885f4fd9f20597d", "gsd-core/workflows/import.md": "7778705ca6c3bc23",
"gsd-core/workflows/inbox.md": "a448220c548f27bc", "gsd-core/workflows/inbox.md": "923bf25e18a71698",
"gsd-core/workflows/ingest-docs.md": "c7efcceb0eb11822", "gsd-core/workflows/ingest-docs.md": "74c6dcea23eb0569",
"gsd-core/workflows/insert-phase.md": "cdd83cf77d0f7485", "gsd-core/workflows/insert-phase.md": "cdd83cf77d0f7485",
"gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3", "gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3",
"gsd-core/workflows/list-seeds.md": "3a8b612306ecf9c3", "gsd-core/workflows/list-seeds.md": "3a8b612306ecf9c3",
"gsd-core/workflows/list-workspaces.md": "f6b1bc9fa13cc155", "gsd-core/workflows/list-workspaces.md": "f6b1bc9fa13cc155",
"gsd-core/workflows/manager.md": "77133c13a8d303d5", "gsd-core/workflows/manager.md": "7cd083b4f5b721b6",
"gsd-core/workflows/map-codebase.md": "bd7fe5c0ff0768e0", "gsd-core/workflows/map-codebase.md": "bd7fe5c0ff0768e0",
"gsd-core/workflows/milestone-summary.md": "c4620853fe489126", "gsd-core/workflows/milestone-summary.md": "c4620853fe489126",
"gsd-core/workflows/mvp-phase.md": "5f0e355ff4583d67", "gsd-core/workflows/mvp-phase.md": "3675856fb091e68a",
"gsd-core/workflows/new-milestone.md": "74d4c6d4549a32fd", "gsd-core/workflows/new-milestone.md": "ebc6ba9d92a2304e",
"gsd-core/workflows/new-project.md": "0c170425e247ec03", "gsd-core/workflows/new-project.md": "8d61773d599cf64c",
"gsd-core/workflows/new-workspace.md": "21bfae58b9cc2990", "gsd-core/workflows/new-workspace.md": "2310910fea2368db",
"gsd-core/workflows/next.md": "8beefb4335dd7c41", "gsd-core/workflows/next.md": "8beefb4335dd7c41",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "3ce09c0aa0a20599", "gsd-core/workflows/note.md": "3ce09c0aa0a20599",
"gsd-core/workflows/onboard.md": "69d871aa53a1a859", "gsd-core/workflows/onboard.md": "af12b0573b14ce7f",
"gsd-core/workflows/pause-work.md": "564de32981a24337", "gsd-core/workflows/pause-work.md": "564de32981a24337",
"gsd-core/workflows/plan-milestone-gaps.md": "dd6a4b3a8b05ab6e", "gsd-core/workflows/plan-milestone-gaps.md": "dd6a4b3a8b05ab6e",
"gsd-core/workflows/plan-phase.md": "27c60469f88532f2", "gsd-core/workflows/plan-phase.md": "4488a41ec68c9da4",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "ab0b22244c3389aa", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "ab0b22244c3389aa",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "b06546c4bf47e521", "gsd-core/workflows/plan-review-convergence.md": "b06546c4bf47e521",
"gsd-core/workflows/plant-seed.md": "6cf726be6427a35a", "gsd-core/workflows/plant-seed.md": "1dddbafe892d8cf3",
"gsd-core/workflows/pr-branch.md": "dc5598ae8accdecd", "gsd-core/workflows/pr-branch.md": "dc5598ae8accdecd",
"gsd-core/workflows/profile-user.md": "355af92ac285567f", "gsd-core/workflows/profile-user.md": "3a3f8e417de0074c",
"gsd-core/workflows/progress.md": "9fb8c93970e0b4aa", "gsd-core/workflows/progress.md": "9fb8c93970e0b4aa",
"gsd-core/workflows/quick.md": "29739776f5c91338", "gsd-core/workflows/quick.md": "0dc4065a3cb40b67",
"gsd-core/workflows/reapply-patches.md": "4dcd6117d0a507ca", "gsd-core/workflows/reapply-patches.md": "4dcd6117d0a507ca",
"gsd-core/workflows/remove-phase.md": "23b9eb0858a2535e", "gsd-core/workflows/remove-phase.md": "23b9eb0858a2535e",
"gsd-core/workflows/remove-workspace.md": "d0bd7e0601138798", "gsd-core/workflows/remove-workspace.md": "1058d1d3160eb120",
"gsd-core/workflows/resume-project.md": "98e2cf8908e73a52", "gsd-core/workflows/resume-project.md": "98e2cf8908e73a52",
"gsd-core/workflows/review.md": "6f6575621367b9ff", "gsd-core/workflows/review.md": "6f6575621367b9ff",
"gsd-core/workflows/scan.md": "1feb5f040e426562", "gsd-core/workflows/scan.md": "1feb5f040e426562",
"gsd-core/workflows/secure-phase.md": "52ddc46233e8fa66", "gsd-core/workflows/secure-phase.md": "34c0aba32c922218",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "6d25100a9de15b31", "gsd-core/workflows/settings-advanced.md": "6d25100a9de15b31",
"gsd-core/workflows/settings-integrations.md": "4d3001ad2b5dad8f", "gsd-core/workflows/settings-integrations.md": "e1fda52e8c9afa5f",
"gsd-core/workflows/settings.md": "8258f7bd3700d608", "gsd-core/workflows/settings.md": "9b7e0a34f4f41a80",
"gsd-core/workflows/ship.md": "3fb340ea87726ed2", "gsd-core/workflows/ship.md": "0eca9ab4bcdeeb17",
"gsd-core/workflows/sketch-wrap-up.md": "0f842a609851a401", "gsd-core/workflows/sketch-wrap-up.md": "0f842a609851a401",
"gsd-core/workflows/sketch.md": "314b7d323c6b57eb", "gsd-core/workflows/sketch.md": "c42d993c1e9a6240",
"gsd-core/workflows/smart-entry.md": "3ce5b6228238fdb6", "gsd-core/workflows/smart-entry.md": "6d887ca5d9df9185",
"gsd-core/workflows/spec-phase.md": "978462218855c213", "gsd-core/workflows/spec-phase.md": "978462218855c213",
"gsd-core/workflows/spike-wrap-up.md": "8db41edc87cb7886", "gsd-core/workflows/spike-wrap-up.md": "8db41edc87cb7886",
"gsd-core/workflows/spike.md": "dd8d139947a8fb31", "gsd-core/workflows/spike.md": "a6daeb0b927563a3",
"gsd-core/workflows/stats.md": "b64bda5c0a1a06fb", "gsd-core/workflows/stats.md": "b64bda5c0a1a06fb",
"gsd-core/workflows/sync-skills.md": "8326a7ff0411b077", "gsd-core/workflows/sync-skills.md": "8326a7ff0411b077",
"gsd-core/workflows/thread.md": "31201839d0530e89", "gsd-core/workflows/thread.md": "31201839d0530e89",
"gsd-core/workflows/transition.md": "d3486f115d808175", "gsd-core/workflows/transition.md": "d3486f115d808175",
"gsd-core/workflows/ui-phase.md": "be51b5f5229ac856", "gsd-core/workflows/ui-phase.md": "377385c2c2af8791",
"gsd-core/workflows/ui-review.md": "ba558aaf1ad9f58d", "gsd-core/workflows/ui-review.md": "a5728055817ab45c",
"gsd-core/workflows/ultraplan-phase.md": "d8e92b0b7214eba6", "gsd-core/workflows/ultraplan-phase.md": "d8e92b0b7214eba6",
"gsd-core/workflows/undo.md": "6ab639d1fc7e0721", "gsd-core/workflows/undo.md": "a2c65d90d5761f71",
"gsd-core/workflows/update.md": "2c58df5e21c41c31", "gsd-core/workflows/update.md": "61e8f7c4f63444ae",
"gsd-core/workflows/validate-phase.md": "ae3f0180a2316fcd", "gsd-core/workflows/validate-phase.md": "f6f20a30b497b462",
"gsd-core/workflows/verify-phase.md": "913acaef091797d7", "gsd-core/workflows/verify-phase.md": "913acaef091797d7",
"gsd-core/workflows/verify-work.md": "1d404aed6a3baf4b", "gsd-core/workflows/verify-work.md": "61b6aa9ab3a8ac68",
"hooks/gsd-check-update-worker.js": "fa301e6366270d5f", "hooks/gsd-check-update-worker.js": "fa301e6366270d5f",
"hooks/gsd-check-update.js": "4617a98bf529e4c3", "hooks/gsd-check-update.js": "4617a98bf529e4c3",
"hooks/gsd-config-reload.js": "96546e0e8bb47904", "hooks/gsd-config-reload.js": "96546e0e8bb47904",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242", "gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8", "gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -279,23 +280,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "953314cdfef56bc4", "gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/ai-integration-phase.md": "0d6d7183ae189fbe",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa", "gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "3835762c3147a927", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564", "gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "7e5683728ef33707", "gsd-core/workflows/autonomous.md": "7e5683728ef33707",
"gsd-core/workflows/check-todos.md": "bdeaf43f9c61e0cc", "gsd-core/workflows/check-todos.md": "f39e3251a78f6f5a",
"gsd-core/workflows/cleanup.md": "0daa2f2720c111f1", "gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075", "gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
"gsd-core/workflows/code-review.md": "c877ad812b4a511e", "gsd-core/workflows/code-review.md": "c877ad812b4a511e",
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2", "gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "79c2f7dc12815e30", "gsd-core/workflows/debug.md": "a2d04237fbbce72b",
"gsd-core/workflows/diagnose-issues.md": "a4d015391e079b90", "gsd-core/workflows/diagnose-issues.md": "a4d015391e079b90",
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761", "gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88", "gsd-core/workflows/discuss-phase-assumptions.md": "185419d61517727b",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a", "gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "5c5e8d8c2c9d95aa", "gsd-core/workflows/discuss-phase.md": "5c5e8d8c2c9d95aa",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653", "gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
@@ -310,88 +311,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "7512dd1892f118a1", "gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9", "gsd-core/workflows/docs-update.md": "b5cdf1c35043cf7b",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04", "gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130", "gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
"gsd-core/workflows/execute-phase.md": "982d35b8ed16619d", "gsd-core/workflows/execute-phase.md": "1325f146afc9404a",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "83cb02952b514bd8", "gsd-core/workflows/execute-plan.md": "6d93a4c4383b1cb3",
"gsd-core/workflows/explore.md": "6c04f2e658d93261", "gsd-core/workflows/explore.md": "6c04f2e658d93261",
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4", "gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3", "gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913", "gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "47f1594c88c08501", "gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "107e3c72e76d9535", "gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0", "gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50", "gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "110608f0352bb0a3", "gsd-core/workflows/help/modes/full.md": "110608f0352bb0a3",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d", "gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "12c6cbcbdecb6392", "gsd-core/workflows/import.md": "31a0f3a33154939f",
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26", "gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5", "gsd-core/workflows/ingest-docs.md": "e5c63b5e539f6e17",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b", "gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3", "gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65", "gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453", "gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "3ba7a3e8213c4b23", "gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2", "gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043", "gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74", "gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5", "gsd-core/workflows/new-milestone.md": "f6029bcb535bee69",
"gsd-core/workflows/new-project.md": "00016f35bf5cd2f2", "gsd-core/workflows/new-project.md": "bb53336d89c51ee4",
"gsd-core/workflows/new-workspace.md": "017688423110ed66", "gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "13fb800f2472d970", "gsd-core/workflows/next.md": "13fb800f2472d970",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619", "gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "dd23944278603a87", "gsd-core/workflows/plan-phase.md": "32703b6b822f44c0",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8", "gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8",
"gsd-core/workflows/plant-seed.md": "10b92ae08a6fdede", "gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b", "gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "14263db831230142", "gsd-core/workflows/profile-user.md": "59e5066c5c66572a",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84", "gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "988fbe85a0251cf1", "gsd-core/workflows/quick.md": "8c2bb04edaa6a429",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89", "gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999", "gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c", "gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4", "gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "f1fbefbd64bd890e", "gsd-core/workflows/review.md": "f1fbefbd64bd890e",
"gsd-core/workflows/scan.md": "e6424af05656725a", "gsd-core/workflows/scan.md": "e6424af05656725a",
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7", "gsd-core/workflows/secure-phase.md": "f8b9436c35372281",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44", "gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "70515c5838fb9826", "gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "d96ddf01fb85e61e", "gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "4642ebbaa38f8cc2", "gsd-core/workflows/ship.md": "09056fccdf20e41b",
"gsd-core/workflows/sketch-wrap-up.md": "5f5ebb6a80d610c6", "gsd-core/workflows/sketch-wrap-up.md": "5f5ebb6a80d610c6",
"gsd-core/workflows/sketch.md": "8319cedf3f93fc35", "gsd-core/workflows/sketch.md": "efc5a794b4bd6e78",
"gsd-core/workflows/smart-entry.md": "449238eb94abe187", "gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c", "gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "8467dadf2af758e6", "gsd-core/workflows/spike-wrap-up.md": "8467dadf2af758e6",
"gsd-core/workflows/spike.md": "7727c07bb221c8cc", "gsd-core/workflows/spike.md": "a159bf4018564cb2",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2", "gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c", "gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7", "gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "0ae35f603071630e", "gsd-core/workflows/ui-phase.md": "8271b83199961d98",
"gsd-core/workflows/ui-review.md": "7acfc485526d064b", "gsd-core/workflows/ui-review.md": "202c4e399cd95719",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d", "gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "96d2775f008b3a85", "gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "fd160e13f8b7e83c", "gsd-core/workflows/update.md": "947c8b421de2eb59",
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607", "gsd-core/workflows/validate-phase.md": "2e19caff07397728",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf", "gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72", "gsd-core/workflows/verify-work.md": "5b92e34f1d0da848",
"hooks/gsd-check-update-worker.js": "cc1ef5f840f9dfc9", "hooks/gsd-check-update-worker.js": "cc1ef5f840f9dfc9",
"hooks/gsd-check-update.js": "7b3a7983d5f1f5d3", "hooks/gsd-check-update.js": "7b3a7983d5f1f5d3",
"hooks/gsd-config-reload.js": "96546e0e8bb47904", "hooks/gsd-config-reload.js": "96546e0e8bb47904",

View File

@@ -159,6 +159,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8", "gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -278,23 +279,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "8d05775f367d1e48", "gsd-core/workflows/add-backlog.md": "8d05775f367d1e48",
"gsd-core/workflows/add-phase.md": "b3c61dc9b4d799ed", "gsd-core/workflows/add-phase.md": "b3c61dc9b4d799ed",
"gsd-core/workflows/add-tests.md": "ffbaf55a25f455a2", "gsd-core/workflows/add-tests.md": "040ed419b025f233",
"gsd-core/workflows/add-todo.md": "0a0f4d718ea50bea", "gsd-core/workflows/add-todo.md": "5f85e6eb5b1136d2",
"gsd-core/workflows/ai-integration-phase.md": "462b75ae916e2793", "gsd-core/workflows/ai-integration-phase.md": "82085726efcdd3b9",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "f03266102d4ee978", "gsd-core/workflows/audit-fix.md": "f03266102d4ee978",
"gsd-core/workflows/audit-milestone.md": "ae8605b4ecc37c0b", "gsd-core/workflows/audit-milestone.md": "ae8605b4ecc37c0b",
"gsd-core/workflows/audit-uat.md": "1c4a02a8c1ab930f", "gsd-core/workflows/audit-uat.md": "1c4a02a8c1ab930f",
"gsd-core/workflows/autonomous.md": "6adf957e64518d15", "gsd-core/workflows/autonomous.md": "6adf957e64518d15",
"gsd-core/workflows/check-todos.md": "8f2c6b27f18cc5e2", "gsd-core/workflows/check-todos.md": "f403daa26ba34cfb",
"gsd-core/workflows/cleanup.md": "bfbab4b981d39544", "gsd-core/workflows/cleanup.md": "8490f912cd609049",
"gsd-core/workflows/code-review-fix.md": "78c716068ccdf820", "gsd-core/workflows/code-review-fix.md": "78c716068ccdf820",
"gsd-core/workflows/code-review.md": "7db21e884906595e", "gsd-core/workflows/code-review.md": "7db21e884906595e",
"gsd-core/workflows/complete-milestone.md": "9962377cddee50d7", "gsd-core/workflows/complete-milestone.md": "529119d0ff9664d9",
"gsd-core/workflows/debug.md": "89cbdec677d92844", "gsd-core/workflows/debug.md": "a2986ce2b2fad490",
"gsd-core/workflows/diagnose-issues.md": "a631d913c36dc2b0", "gsd-core/workflows/diagnose-issues.md": "a631d913c36dc2b0",
"gsd-core/workflows/discovery-phase.md": "a20dfb32adec51de", "gsd-core/workflows/discovery-phase.md": "6d691c38a911e27d",
"gsd-core/workflows/discuss-phase-assumptions.md": "35a3b2d1285565d8", "gsd-core/workflows/discuss-phase-assumptions.md": "c1f11ad5f5b3407e",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6", "gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "ff2563dc378c5e5c", "gsd-core/workflows/discuss-phase.md": "ff2563dc378c5e5c",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "f64ece6d53b6d432", "gsd-core/workflows/discuss-phase/modes/advisor.md": "f64ece6d53b6d432",
@@ -309,88 +310,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "149084d893a23024", "gsd-core/workflows/do.md": "0f7b639ff37660b5",
"gsd-core/workflows/docs-update.md": "cd753783ab95da00", "gsd-core/workflows/docs-update.md": "99908189254c0131",
"gsd-core/workflows/edit-phase.md": "dbbb6191f5a8b65e", "gsd-core/workflows/edit-phase.md": "dbbb6191f5a8b65e",
"gsd-core/workflows/eval-review.md": "086a1f2b3c11462c", "gsd-core/workflows/eval-review.md": "11620e0dc4a003dd",
"gsd-core/workflows/execute-phase.md": "66e4f92099ba3a7a", "gsd-core/workflows/execute-phase.md": "4e272ba9df401dc5",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "6d38bfd540030da4", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "6d38bfd540030da4",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "a7f9b9a45303382f", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "a7f9b9a45303382f",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "b14d7fa2c4ec2406", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "b14d7fa2c4ec2406",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "587757b937368212", "gsd-core/workflows/execute-plan.md": "16c4d168d424b030",
"gsd-core/workflows/explore.md": "95e463d4bdd6dadd", "gsd-core/workflows/explore.md": "95e463d4bdd6dadd",
"gsd-core/workflows/extract-learnings.md": "fd75072c339b58bd", "gsd-core/workflows/extract-learnings.md": "fd75072c339b58bd",
"gsd-core/workflows/fast.md": "7f7687b920d79b29", "gsd-core/workflows/fast.md": "7f7687b920d79b29",
"gsd-core/workflows/forensics.md": "857d7b064f4cca21", "gsd-core/workflows/forensics.md": "857d7b064f4cca21",
"gsd-core/workflows/graduation.md": "ecf8da93e094fd2e", "gsd-core/workflows/graduation.md": "7a1d9e1327dce4e7",
"gsd-core/workflows/health.md": "551e63aa6f3df711", "gsd-core/workflows/health.md": "dddcdd72162d23b5",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0", "gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "2388596fd5bcbd07", "gsd-core/workflows/help/modes/full.md": "2388596fd5bcbd07",
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9", "gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
"gsd-core/workflows/import.md": "477b3d7676ce1a66", "gsd-core/workflows/import.md": "5b78323f7538abb6",
"gsd-core/workflows/inbox.md": "91aac6360e1a8672", "gsd-core/workflows/inbox.md": "47e718a37c7a738f",
"gsd-core/workflows/ingest-docs.md": "9f8e42decf5adf82", "gsd-core/workflows/ingest-docs.md": "a6d3cfe0bc9d338e",
"gsd-core/workflows/insert-phase.md": "ae977afd1509dc86", "gsd-core/workflows/insert-phase.md": "ae977afd1509dc86",
"gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c", "gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c",
"gsd-core/workflows/list-seeds.md": "7576156b91e9abee", "gsd-core/workflows/list-seeds.md": "7576156b91e9abee",
"gsd-core/workflows/list-workspaces.md": "90caeeb11cec0128", "gsd-core/workflows/list-workspaces.md": "90caeeb11cec0128",
"gsd-core/workflows/manager.md": "36559ff897e55c09", "gsd-core/workflows/manager.md": "9dcb5eaf64f86627",
"gsd-core/workflows/map-codebase.md": "0cad5825e637e7fc", "gsd-core/workflows/map-codebase.md": "0cad5825e637e7fc",
"gsd-core/workflows/milestone-summary.md": "99636900c216c8d2", "gsd-core/workflows/milestone-summary.md": "99636900c216c8d2",
"gsd-core/workflows/mvp-phase.md": "254baac57e85dca7", "gsd-core/workflows/mvp-phase.md": "88cf363abd25f41e",
"gsd-core/workflows/new-milestone.md": "7c39849d67fc0256", "gsd-core/workflows/new-milestone.md": "1a4717b3abe97133",
"gsd-core/workflows/new-project.md": "287483eea4d1415c", "gsd-core/workflows/new-project.md": "3cb398a0e64db7b1",
"gsd-core/workflows/new-workspace.md": "26615bf710f0a324", "gsd-core/workflows/new-workspace.md": "8ec67b5bc4c3f95a",
"gsd-core/workflows/next.md": "1193222c5618d3db", "gsd-core/workflows/next.md": "1193222c5618d3db",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "a2cc926854a5666c", "gsd-core/workflows/note.md": "a2cc926854a5666c",
"gsd-core/workflows/onboard.md": "b86d78eef6c77e5b", "gsd-core/workflows/onboard.md": "f7d0dbcfd94ab130",
"gsd-core/workflows/pause-work.md": "da902807d2213204", "gsd-core/workflows/pause-work.md": "da902807d2213204",
"gsd-core/workflows/plan-milestone-gaps.md": "7679fac068d1009d", "gsd-core/workflows/plan-milestone-gaps.md": "7679fac068d1009d",
"gsd-core/workflows/plan-phase.md": "ac61699f0eeccccf", "gsd-core/workflows/plan-phase.md": "50fad2ee2017f9e9",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "b810f9f2374e23a5", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "b810f9f2374e23a5",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "7db990f90908a5e4", "gsd-core/workflows/plan-review-convergence.md": "7db990f90908a5e4",
"gsd-core/workflows/plant-seed.md": "fbe964fcdb244802", "gsd-core/workflows/plant-seed.md": "727991ecd521b617",
"gsd-core/workflows/pr-branch.md": "513f6cff722eff2d", "gsd-core/workflows/pr-branch.md": "513f6cff722eff2d",
"gsd-core/workflows/profile-user.md": "3b34dcb337d50f4b", "gsd-core/workflows/profile-user.md": "7a7786eb43efda0d",
"gsd-core/workflows/progress.md": "01079a85cbc41ffe", "gsd-core/workflows/progress.md": "01079a85cbc41ffe",
"gsd-core/workflows/quick.md": "0f49d4553de5da88", "gsd-core/workflows/quick.md": "da526cdfe5fbe79b",
"gsd-core/workflows/reapply-patches.md": "44a96b52b975e9bb", "gsd-core/workflows/reapply-patches.md": "44a96b52b975e9bb",
"gsd-core/workflows/remove-phase.md": "8effc8742d58a11a", "gsd-core/workflows/remove-phase.md": "8effc8742d58a11a",
"gsd-core/workflows/remove-workspace.md": "10882656198d9075", "gsd-core/workflows/remove-workspace.md": "64b73daff58b9aec",
"gsd-core/workflows/resume-project.md": "af9761bcec0f6fe9", "gsd-core/workflows/resume-project.md": "af9761bcec0f6fe9",
"gsd-core/workflows/review.md": "8c05b76fe9d00c30", "gsd-core/workflows/review.md": "8c05b76fe9d00c30",
"gsd-core/workflows/scan.md": "9126e95bf9c50f7e", "gsd-core/workflows/scan.md": "9126e95bf9c50f7e",
"gsd-core/workflows/secure-phase.md": "8030d2b2a5bfdf07", "gsd-core/workflows/secure-phase.md": "396e2f708abfa7a1",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "94d61da368e9f85b", "gsd-core/workflows/settings-advanced.md": "94d61da368e9f85b",
"gsd-core/workflows/settings-integrations.md": "dfe3672c4fabf139", "gsd-core/workflows/settings-integrations.md": "9e0108e01e78832c",
"gsd-core/workflows/settings.md": "acdd79110699a608", "gsd-core/workflows/settings.md": "a1a35e58da33b23b",
"gsd-core/workflows/ship.md": "30ff5e4ebf0edee8", "gsd-core/workflows/ship.md": "205632a5eb12e473",
"gsd-core/workflows/sketch-wrap-up.md": "d52a5462bafda830", "gsd-core/workflows/sketch-wrap-up.md": "d52a5462bafda830",
"gsd-core/workflows/sketch.md": "dbe6acc4d976060c", "gsd-core/workflows/sketch.md": "9bc12018344f8110",
"gsd-core/workflows/smart-entry.md": "1850447c045f36d8", "gsd-core/workflows/smart-entry.md": "70445afde3a9ead6",
"gsd-core/workflows/spec-phase.md": "ec4d7e4e83bb001d", "gsd-core/workflows/spec-phase.md": "ec4d7e4e83bb001d",
"gsd-core/workflows/spike-wrap-up.md": "4bdfaf9d05c63e7c", "gsd-core/workflows/spike-wrap-up.md": "4bdfaf9d05c63e7c",
"gsd-core/workflows/spike.md": "1571a05457beea8d", "gsd-core/workflows/spike.md": "0ec1ff41fefe5012",
"gsd-core/workflows/stats.md": "3953356f476b5053", "gsd-core/workflows/stats.md": "3953356f476b5053",
"gsd-core/workflows/sync-skills.md": "5624d529dae1ad79", "gsd-core/workflows/sync-skills.md": "5624d529dae1ad79",
"gsd-core/workflows/thread.md": "14a9d195572a198f", "gsd-core/workflows/thread.md": "14a9d195572a198f",
"gsd-core/workflows/transition.md": "42c46f7bdf3d97cc", "gsd-core/workflows/transition.md": "42c46f7bdf3d97cc",
"gsd-core/workflows/ui-phase.md": "50b0dd962c8029b9", "gsd-core/workflows/ui-phase.md": "d71b0a3c222d152b",
"gsd-core/workflows/ui-review.md": "9c6005236e2067b5", "gsd-core/workflows/ui-review.md": "3a93e532c91811ed",
"gsd-core/workflows/ultraplan-phase.md": "b926ba7e4de0c76d", "gsd-core/workflows/ultraplan-phase.md": "b926ba7e4de0c76d",
"gsd-core/workflows/undo.md": "d759702f84e308fa", "gsd-core/workflows/undo.md": "71ee46d4ab85e5c4",
"gsd-core/workflows/update.md": "2a59b4edf4a3c8c7", "gsd-core/workflows/update.md": "0e01b1dc9a2c61fa",
"gsd-core/workflows/validate-phase.md": "3150904744b4a1bd", "gsd-core/workflows/validate-phase.md": "9d5597928a602bf0",
"gsd-core/workflows/verify-phase.md": "90773de32a966c85", "gsd-core/workflows/verify-phase.md": "90773de32a966c85",
"gsd-core/workflows/verify-work.md": "eceb0f76087c81c3", "gsd-core/workflows/verify-work.md": "dcdcf728589e4856",
"hooks/gsd-check-update-worker.js": "a530efdb5fdc0da3", "hooks/gsd-check-update-worker.js": "a530efdb5fdc0da3",
"hooks/gsd-check-update.js": "25cde66a12d6b886", "hooks/gsd-check-update.js": "25cde66a12d6b886",
"hooks/gsd-config-reload.js": "96546e0e8bb47904", "hooks/gsd-config-reload.js": "96546e0e8bb47904",

View File

@@ -88,6 +88,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8", "gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -207,23 +208,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "485c4b6673ddf832", "gsd-core/workflows/add-backlog.md": "485c4b6673ddf832",
"gsd-core/workflows/add-phase.md": "b2c06b7ed648658c", "gsd-core/workflows/add-phase.md": "b2c06b7ed648658c",
"gsd-core/workflows/add-tests.md": "c4b133a102d36a27", "gsd-core/workflows/add-tests.md": "5168c1de6321484c",
"gsd-core/workflows/add-todo.md": "2c5176263ad4ae8f", "gsd-core/workflows/add-todo.md": "1841baacd58b7593",
"gsd-core/workflows/ai-integration-phase.md": "a280593ad22fc9a3", "gsd-core/workflows/ai-integration-phase.md": "2c7e009d64dea436",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa", "gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710", "gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710",
"gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405", "gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405",
"gsd-core/workflows/autonomous.md": "722397c04272dfaa", "gsd-core/workflows/autonomous.md": "722397c04272dfaa",
"gsd-core/workflows/check-todos.md": "6c2a43d1d3e86589", "gsd-core/workflows/check-todos.md": "a5b8d73734b1fe7a",
"gsd-core/workflows/cleanup.md": "0daa2f2720c111f1", "gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "722416b71b31c5fc", "gsd-core/workflows/code-review-fix.md": "722416b71b31c5fc",
"gsd-core/workflows/code-review.md": "3fd49c93357fe4f7", "gsd-core/workflows/code-review.md": "3fd49c93357fe4f7",
"gsd-core/workflows/complete-milestone.md": "dcf1182398efb1ca", "gsd-core/workflows/complete-milestone.md": "c3798c50670f6801",
"gsd-core/workflows/debug.md": "d9396e0be41bdb3c", "gsd-core/workflows/debug.md": "f6b3f24de830ae49",
"gsd-core/workflows/diagnose-issues.md": "d66a88cae4aa6d99", "gsd-core/workflows/diagnose-issues.md": "d66a88cae4aa6d99",
"gsd-core/workflows/discovery-phase.md": "6161c60d752d0058", "gsd-core/workflows/discovery-phase.md": "89a3084e40430039",
"gsd-core/workflows/discuss-phase-assumptions.md": "a8cd1db094fefd35", "gsd-core/workflows/discuss-phase-assumptions.md": "590a8c842acd7e02",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6", "gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "df56c8cd170b2150", "gsd-core/workflows/discuss-phase.md": "df56c8cd170b2150",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653", "gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
@@ -238,88 +239,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "61b92fb4d0bf3975", "gsd-core/workflows/do.md": "97a456ceda9d4513",
"gsd-core/workflows/docs-update.md": "63082608d3ae92be", "gsd-core/workflows/docs-update.md": "e94d48c979be0211",
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a", "gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
"gsd-core/workflows/eval-review.md": "f59e8329dae1e528", "gsd-core/workflows/eval-review.md": "7c2f5ff8cc4d06e5",
"gsd-core/workflows/execute-phase.md": "7a7f63e7839f530d", "gsd-core/workflows/execute-phase.md": "95ab6bf45302a773",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "facb0e816d87a0c7", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "facb0e816d87a0c7",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "bc1c2a159117642c", "gsd-core/workflows/execute-plan.md": "92a4065d92966e03",
"gsd-core/workflows/explore.md": "b9eea1bac358c9ce", "gsd-core/workflows/explore.md": "b9eea1bac358c9ce",
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee", "gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
"gsd-core/workflows/fast.md": "41a6568b873aef99", "gsd-core/workflows/fast.md": "41a6568b873aef99",
"gsd-core/workflows/forensics.md": "c01da0178fb97b21", "gsd-core/workflows/forensics.md": "c01da0178fb97b21",
"gsd-core/workflows/graduation.md": "47f1594c88c08501", "gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "f934b1f1e9f3ae72", "gsd-core/workflows/health.md": "a0ec33a0401a4dbe",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0", "gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "3d55c7266241f79d", "gsd-core/workflows/help/modes/full.md": "3d55c7266241f79d",
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9", "gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
"gsd-core/workflows/import.md": "3f40ccd2e8cbc708", "gsd-core/workflows/import.md": "171471150be5a722",
"gsd-core/workflows/inbox.md": "91aac6360e1a8672", "gsd-core/workflows/inbox.md": "e47920b4495b019a",
"gsd-core/workflows/ingest-docs.md": "bea47796f6b86172", "gsd-core/workflows/ingest-docs.md": "aa1b8122f3d168b4",
"gsd-core/workflows/insert-phase.md": "964ca91863a8749a", "gsd-core/workflows/insert-phase.md": "964ca91863a8749a",
"gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c", "gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c",
"gsd-core/workflows/list-seeds.md": "5a46337f55ae8453", "gsd-core/workflows/list-seeds.md": "5a46337f55ae8453",
"gsd-core/workflows/list-workspaces.md": "418570fbc8b938da", "gsd-core/workflows/list-workspaces.md": "418570fbc8b938da",
"gsd-core/workflows/manager.md": "e39dd3c23a782eb5", "gsd-core/workflows/manager.md": "441d052077bee516",
"gsd-core/workflows/map-codebase.md": "4c7bef74d1c3e95e", "gsd-core/workflows/map-codebase.md": "4c7bef74d1c3e95e",
"gsd-core/workflows/milestone-summary.md": "ad8e69fcb3463ce4", "gsd-core/workflows/milestone-summary.md": "ad8e69fcb3463ce4",
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74", "gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "bbc2dc21f532f810", "gsd-core/workflows/new-milestone.md": "7b8cdada362581b0",
"gsd-core/workflows/new-project.md": "5eb1e4e361e67c43", "gsd-core/workflows/new-project.md": "3d79b98bf4c65ca0",
"gsd-core/workflows/new-workspace.md": "04356c9b675da7c9", "gsd-core/workflows/new-workspace.md": "63ab4cb51ad88df4",
"gsd-core/workflows/next.md": "ef30b829a6d5c5f6", "gsd-core/workflows/next.md": "ef30b829a6d5c5f6",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "42b66686b2c102cb", "gsd-core/workflows/note.md": "42b66686b2c102cb",
"gsd-core/workflows/onboard.md": "3c50ed1f1fd07619", "gsd-core/workflows/onboard.md": "0f0af11294d31715",
"gsd-core/workflows/pause-work.md": "5716362557f44ce4", "gsd-core/workflows/pause-work.md": "5716362557f44ce4",
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e", "gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
"gsd-core/workflows/plan-phase.md": "692b3f711e91b3da", "gsd-core/workflows/plan-phase.md": "9a274b986f3a28e5",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "35fd32d839a2e4ba", "gsd-core/workflows/plan-review-convergence.md": "35fd32d839a2e4ba",
"gsd-core/workflows/plant-seed.md": "af50e9f10d3cc6e1", "gsd-core/workflows/plant-seed.md": "3dd79b65ad08e456",
"gsd-core/workflows/pr-branch.md": "ab157cd8e49621dd", "gsd-core/workflows/pr-branch.md": "ab157cd8e49621dd",
"gsd-core/workflows/profile-user.md": "ff3820a27731ceb8", "gsd-core/workflows/profile-user.md": "84fff69a630033ed",
"gsd-core/workflows/progress.md": "1b56219777ea078c", "gsd-core/workflows/progress.md": "1b56219777ea078c",
"gsd-core/workflows/quick.md": "46da35933571f3f6", "gsd-core/workflows/quick.md": "a332fd9277e28f98",
"gsd-core/workflows/reapply-patches.md": "ba9406b60f2c4041", "gsd-core/workflows/reapply-patches.md": "ba9406b60f2c4041",
"gsd-core/workflows/remove-phase.md": "ada8a0546c686483", "gsd-core/workflows/remove-phase.md": "ada8a0546c686483",
"gsd-core/workflows/remove-workspace.md": "f3ab3a88a7e9e1ed", "gsd-core/workflows/remove-workspace.md": "015cde237c75be39",
"gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96", "gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96",
"gsd-core/workflows/review.md": "013126685d8a9d50", "gsd-core/workflows/review.md": "013126685d8a9d50",
"gsd-core/workflows/scan.md": "1890c846b98690bb", "gsd-core/workflows/scan.md": "1890c846b98690bb",
"gsd-core/workflows/secure-phase.md": "d6ac1f4db6a5da75", "gsd-core/workflows/secure-phase.md": "3f8fabf375f7d880",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "339def28c34b0797", "gsd-core/workflows/settings-advanced.md": "339def28c34b0797",
"gsd-core/workflows/settings-integrations.md": "53649313d20694ae", "gsd-core/workflows/settings-integrations.md": "9c9db643112b2371",
"gsd-core/workflows/settings.md": "7e7458cdb2b68ec5", "gsd-core/workflows/settings.md": "d3f05e22f21bfb3a",
"gsd-core/workflows/ship.md": "cf9425876e736a52", "gsd-core/workflows/ship.md": "965497167a9df93b",
"gsd-core/workflows/sketch-wrap-up.md": "121ed4b8127abf04", "gsd-core/workflows/sketch-wrap-up.md": "121ed4b8127abf04",
"gsd-core/workflows/sketch.md": "737c0492686fea2d", "gsd-core/workflows/sketch.md": "ac7a5265c6970bdf",
"gsd-core/workflows/smart-entry.md": "ad20cf74ae2e8291", "gsd-core/workflows/smart-entry.md": "99c73236890605a1",
"gsd-core/workflows/spec-phase.md": "d935df4ab9dd4f7c", "gsd-core/workflows/spec-phase.md": "d935df4ab9dd4f7c",
"gsd-core/workflows/spike-wrap-up.md": "e2704024992b3fee", "gsd-core/workflows/spike-wrap-up.md": "e2704024992b3fee",
"gsd-core/workflows/spike.md": "6dce83a2c5e7e49c", "gsd-core/workflows/spike.md": "a5b1e3c15271f21e",
"gsd-core/workflows/stats.md": "e7852c5d8f2b05a9", "gsd-core/workflows/stats.md": "e7852c5d8f2b05a9",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "3b2c560d7189576d", "gsd-core/workflows/thread.md": "3b2c560d7189576d",
"gsd-core/workflows/transition.md": "fb35a3de7feaa056", "gsd-core/workflows/transition.md": "fb35a3de7feaa056",
"gsd-core/workflows/ui-phase.md": "05eb644af3a15516", "gsd-core/workflows/ui-phase.md": "5afb127aea056fd6",
"gsd-core/workflows/ui-review.md": "7b488a7486a6b7cf", "gsd-core/workflows/ui-review.md": "480596326d80473e",
"gsd-core/workflows/ultraplan-phase.md": "328664400a001fd5", "gsd-core/workflows/ultraplan-phase.md": "328664400a001fd5",
"gsd-core/workflows/undo.md": "791e0bf96d9a057f", "gsd-core/workflows/undo.md": "894deb5d28769ac9",
"gsd-core/workflows/update.md": "f9e7d8a760d0d3c8", "gsd-core/workflows/update.md": "aad041e79d84b189",
"gsd-core/workflows/validate-phase.md": "7a3db6ab8ce9f380", "gsd-core/workflows/validate-phase.md": "556a3a96ce79aae0",
"gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9", "gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9",
"gsd-core/workflows/verify-work.md": "fc8dacbe15266b03", "gsd-core/workflows/verify-work.md": "21702d59ce37371c",
"hooks/gsd-check-update-worker.js": "a530efdb5fdc0da3", "hooks/gsd-check-update-worker.js": "a530efdb5fdc0da3",
"hooks/gsd-check-update.js": "25cde66a12d6b886", "hooks/gsd-check-update.js": "25cde66a12d6b886",
"hooks/gsd-config-reload.js": "96546e0e8bb47904", "hooks/gsd-config-reload.js": "96546e0e8bb47904",

View File

@@ -92,6 +92,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "e9582246dbc617e0", "gsd-core/references/execute-phase-between-wave-reset.md": "e9582246dbc617e0",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242", "gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "742bb890af014c87", "gsd-core/references/execute-phase-wave-guard.md": "742bb890af014c87",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -211,23 +212,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "6c4393113fa9d209", "gsd-core/workflows/add-backlog.md": "6c4393113fa9d209",
"gsd-core/workflows/add-phase.md": "2558614a81b9e977", "gsd-core/workflows/add-phase.md": "2558614a81b9e977",
"gsd-core/workflows/add-tests.md": "0354376bffdc0080", "gsd-core/workflows/add-tests.md": "0dd47f73dd3ca32a",
"gsd-core/workflows/add-todo.md": "aa89018230c87f13", "gsd-core/workflows/add-todo.md": "13a465fa41ba5aec",
"gsd-core/workflows/ai-integration-phase.md": "878d0a2c6eb08c88", "gsd-core/workflows/ai-integration-phase.md": "7794d0223c23f396",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "635168ce87774bd4", "gsd-core/workflows/audit-fix.md": "635168ce87774bd4",
"gsd-core/workflows/audit-milestone.md": "202b726748604c93", "gsd-core/workflows/audit-milestone.md": "202b726748604c93",
"gsd-core/workflows/audit-uat.md": "1fb7b2ab9d587c8f", "gsd-core/workflows/audit-uat.md": "1fb7b2ab9d587c8f",
"gsd-core/workflows/autonomous.md": "cc5217b1b2238a4c", "gsd-core/workflows/autonomous.md": "cc5217b1b2238a4c",
"gsd-core/workflows/check-todos.md": "32fdf33f5dc8bdde", "gsd-core/workflows/check-todos.md": "a68b369d64c9365c",
"gsd-core/workflows/cleanup.md": "b0ebfc48792b407b", "gsd-core/workflows/cleanup.md": "6ed44dc47fd9972b",
"gsd-core/workflows/code-review-fix.md": "e4549af672e74e6f", "gsd-core/workflows/code-review-fix.md": "e4549af672e74e6f",
"gsd-core/workflows/code-review.md": "e2bfb4267041812a", "gsd-core/workflows/code-review.md": "e2bfb4267041812a",
"gsd-core/workflows/complete-milestone.md": "c0808127038a8f86", "gsd-core/workflows/complete-milestone.md": "85be65035bcd4e41",
"gsd-core/workflows/debug.md": "4758a68d5c76447d", "gsd-core/workflows/debug.md": "7e5dadd9e8423452",
"gsd-core/workflows/diagnose-issues.md": "164efb4842d1fe75", "gsd-core/workflows/diagnose-issues.md": "164efb4842d1fe75",
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761", "gsd-core/workflows/discovery-phase.md": "0fa751163960abc2",
"gsd-core/workflows/discuss-phase-assumptions.md": "9efcb2ef6a9245b3", "gsd-core/workflows/discuss-phase-assumptions.md": "15bba3e88a011f67",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a", "gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "a290d5ee19607bb7", "gsd-core/workflows/discuss-phase.md": "a290d5ee19607bb7",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "250de9aae90daebc", "gsd-core/workflows/discuss-phase/modes/advisor.md": "250de9aae90daebc",
@@ -242,88 +243,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "045a18f30efb1202", "gsd-core/workflows/do.md": "6b3cad91b3bd1419",
"gsd-core/workflows/docs-update.md": "39f288623a8f6f32", "gsd-core/workflows/docs-update.md": "4bcb3d9630d6bb10",
"gsd-core/workflows/edit-phase.md": "9c9fadc047c61d74", "gsd-core/workflows/edit-phase.md": "9c9fadc047c61d74",
"gsd-core/workflows/eval-review.md": "3e1d7829ed2ed494", "gsd-core/workflows/eval-review.md": "17fc9b4c4f7e1c74",
"gsd-core/workflows/execute-phase.md": "5aa6d3220bb3c755", "gsd-core/workflows/execute-phase.md": "1c703e5f1855b1e2",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "67ebc93f51968cb6", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "67ebc93f51968cb6",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "35612890c1173577", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "35612890c1173577",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "26825e1aacf224d0", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "26825e1aacf224d0",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "0db7b9db6454f380", "gsd-core/workflows/execute-plan.md": "f3e7d5ae2103a8ff",
"gsd-core/workflows/explore.md": "e83af8ceae314cf9", "gsd-core/workflows/explore.md": "e83af8ceae314cf9",
"gsd-core/workflows/extract-learnings.md": "6f39375b7dc775f9", "gsd-core/workflows/extract-learnings.md": "6f39375b7dc775f9",
"gsd-core/workflows/fast.md": "e4f74a454b6ca5e8", "gsd-core/workflows/fast.md": "e4f74a454b6ca5e8",
"gsd-core/workflows/forensics.md": "9fc65a8eed5d8bfc", "gsd-core/workflows/forensics.md": "9fc65a8eed5d8bfc",
"gsd-core/workflows/graduation.md": "16fedecda36769eb", "gsd-core/workflows/graduation.md": "68d83a47e9cfaa7a",
"gsd-core/workflows/health.md": "788fad84fa42eb9f", "gsd-core/workflows/health.md": "ac50e6c68edc2667",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0", "gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "86f7a14ad06e2f6f", "gsd-core/workflows/help/modes/default.md": "86f7a14ad06e2f6f",
"gsd-core/workflows/help/modes/full.md": "e4f1ae9d0902dda0", "gsd-core/workflows/help/modes/full.md": "e4f1ae9d0902dda0",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d", "gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "53a3069f244edd8b", "gsd-core/workflows/import.md": "d24be8c61759b593",
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26", "gsd-core/workflows/inbox.md": "2e584f45e52f26f5",
"gsd-core/workflows/ingest-docs.md": "d9d29b5329285af8", "gsd-core/workflows/ingest-docs.md": "d79478beb9da40cc",
"gsd-core/workflows/insert-phase.md": "147f0009ec74b589", "gsd-core/workflows/insert-phase.md": "147f0009ec74b589",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3", "gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "25050c5e1b2b7176", "gsd-core/workflows/list-seeds.md": "25050c5e1b2b7176",
"gsd-core/workflows/list-workspaces.md": "8f0707ecbc395856", "gsd-core/workflows/list-workspaces.md": "8f0707ecbc395856",
"gsd-core/workflows/manager.md": "05eee19fe93c063d", "gsd-core/workflows/manager.md": "2988de4db361ceae",
"gsd-core/workflows/map-codebase.md": "34527a4bc301564f", "gsd-core/workflows/map-codebase.md": "34527a4bc301564f",
"gsd-core/workflows/milestone-summary.md": "20e56b9e3902e1d2", "gsd-core/workflows/milestone-summary.md": "20e56b9e3902e1d2",
"gsd-core/workflows/mvp-phase.md": "3e3936e1f247ac7c", "gsd-core/workflows/mvp-phase.md": "a95d43689a43163c",
"gsd-core/workflows/new-milestone.md": "2b53742bc07121b2", "gsd-core/workflows/new-milestone.md": "f7ca5f829520d7ec",
"gsd-core/workflows/new-project.md": "4e7a8136f2aa1d94", "gsd-core/workflows/new-project.md": "666859d1dab84b46",
"gsd-core/workflows/new-workspace.md": "f5eed5dd9a21878f", "gsd-core/workflows/new-workspace.md": "dc67033c5ad37f97",
"gsd-core/workflows/next.md": "3f8b61a35587a021", "gsd-core/workflows/next.md": "3f8b61a35587a021",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619", "gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "3530607514b0ac00", "gsd-core/workflows/pause-work.md": "3530607514b0ac00",
"gsd-core/workflows/plan-milestone-gaps.md": "bafdc6945cd2bd87", "gsd-core/workflows/plan-milestone-gaps.md": "bafdc6945cd2bd87",
"gsd-core/workflows/plan-phase.md": "c2be936c9b73ea8a", "gsd-core/workflows/plan-phase.md": "cdb95e556e63cb09",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "4b0a2cb0f4f28179", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "4b0a2cb0f4f28179",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "090c31e22b1508fe", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "090c31e22b1508fe",
"gsd-core/workflows/plan-review-convergence.md": "cb03bd703057f395", "gsd-core/workflows/plan-review-convergence.md": "cb03bd703057f395",
"gsd-core/workflows/plant-seed.md": "a2cdd513663226f1", "gsd-core/workflows/plant-seed.md": "94b54ead506385d3",
"gsd-core/workflows/pr-branch.md": "9923878a4f6a2d91", "gsd-core/workflows/pr-branch.md": "9923878a4f6a2d91",
"gsd-core/workflows/profile-user.md": "26f74db0a7fcd268", "gsd-core/workflows/profile-user.md": "4c51320e7caa09ca",
"gsd-core/workflows/progress.md": "53b4310b873d233e", "gsd-core/workflows/progress.md": "53b4310b873d233e",
"gsd-core/workflows/quick.md": "f4d73a7a52b11bd1", "gsd-core/workflows/quick.md": "0b48dc882c83bad5",
"gsd-core/workflows/reapply-patches.md": "eb4272145a117904", "gsd-core/workflows/reapply-patches.md": "eb4272145a117904",
"gsd-core/workflows/remove-phase.md": "e336350f8113a328", "gsd-core/workflows/remove-phase.md": "e336350f8113a328",
"gsd-core/workflows/remove-workspace.md": "e685dfbd736dfd90", "gsd-core/workflows/remove-workspace.md": "79d3669cc9eb0b10",
"gsd-core/workflows/resume-project.md": "e23981178fa37b3d", "gsd-core/workflows/resume-project.md": "e23981178fa37b3d",
"gsd-core/workflows/review.md": "075ea1aa6a2b8339", "gsd-core/workflows/review.md": "075ea1aa6a2b8339",
"gsd-core/workflows/scan.md": "aa2ddc734251c24c", "gsd-core/workflows/scan.md": "aa2ddc734251c24c",
"gsd-core/workflows/secure-phase.md": "00de56d6d993bb2c", "gsd-core/workflows/secure-phase.md": "f7c624c1ab3cde3f",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "69f3a19bf2c61160", "gsd-core/workflows/settings-advanced.md": "69f3a19bf2c61160",
"gsd-core/workflows/settings-integrations.md": "76eee76d6eb57657", "gsd-core/workflows/settings-integrations.md": "a2682897e663fec4",
"gsd-core/workflows/settings.md": "3701faed09d55247", "gsd-core/workflows/settings.md": "17a5de032a64eb22",
"gsd-core/workflows/ship.md": "e2eb0a000c515798", "gsd-core/workflows/ship.md": "d094208aca181f9c",
"gsd-core/workflows/sketch-wrap-up.md": "1f44789553180d84", "gsd-core/workflows/sketch-wrap-up.md": "1f44789553180d84",
"gsd-core/workflows/sketch.md": "2226779b6003a71c", "gsd-core/workflows/sketch.md": "fadc2cbe6763c010",
"gsd-core/workflows/smart-entry.md": "9a64f43927641ca4", "gsd-core/workflows/smart-entry.md": "22ef18e897b67907",
"gsd-core/workflows/spec-phase.md": "641208ed90684364", "gsd-core/workflows/spec-phase.md": "641208ed90684364",
"gsd-core/workflows/spike-wrap-up.md": "846958e0012a0899", "gsd-core/workflows/spike-wrap-up.md": "846958e0012a0899",
"gsd-core/workflows/spike.md": "868b15cdf229cc43", "gsd-core/workflows/spike.md": "94dd22a21565921c",
"gsd-core/workflows/stats.md": "f9241bb65770c5a4", "gsd-core/workflows/stats.md": "f9241bb65770c5a4",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "d71b1e815925c5cc", "gsd-core/workflows/thread.md": "d71b1e815925c5cc",
"gsd-core/workflows/transition.md": "6fa9751b097a3f52", "gsd-core/workflows/transition.md": "6fa9751b097a3f52",
"gsd-core/workflows/ui-phase.md": "c7e6a2ab78e74c1b", "gsd-core/workflows/ui-phase.md": "b1a53f472f52679b",
"gsd-core/workflows/ui-review.md": "8cd9605add21301e", "gsd-core/workflows/ui-review.md": "30270ae78e5bff68",
"gsd-core/workflows/ultraplan-phase.md": "ceff456b1e9d94d8", "gsd-core/workflows/ultraplan-phase.md": "ceff456b1e9d94d8",
"gsd-core/workflows/undo.md": "96d2775f008b3a85", "gsd-core/workflows/undo.md": "8de0e036f58d9b17",
"gsd-core/workflows/update.md": "165beec33490bd28", "gsd-core/workflows/update.md": "387f9721372101a0",
"gsd-core/workflows/validate-phase.md": "706627c190ae11aa", "gsd-core/workflows/validate-phase.md": "5a232acb321b4a58",
"gsd-core/workflows/verify-phase.md": "a8b3c15e7ef9c394", "gsd-core/workflows/verify-phase.md": "a8b3c15e7ef9c394",
"gsd-core/workflows/verify-work.md": "bd20cf21e7a1e132", "gsd-core/workflows/verify-work.md": "14778e367d6ad337",
"scripts/changeset/README.md": "86ff89331dfd94b2", "scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271", "scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132", "scripts/changeset/github-release-notes.cjs": "795677f0c009b132",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242", "gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8", "gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -279,23 +280,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "953314cdfef56bc4", "gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/ai-integration-phase.md": "0d6d7183ae189fbe",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa", "gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "3835762c3147a927", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564", "gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "7e5683728ef33707", "gsd-core/workflows/autonomous.md": "7e5683728ef33707",
"gsd-core/workflows/check-todos.md": "bdeaf43f9c61e0cc", "gsd-core/workflows/check-todos.md": "f39e3251a78f6f5a",
"gsd-core/workflows/cleanup.md": "0daa2f2720c111f1", "gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075", "gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
"gsd-core/workflows/code-review.md": "c877ad812b4a511e", "gsd-core/workflows/code-review.md": "c877ad812b4a511e",
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2", "gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "79c2f7dc12815e30", "gsd-core/workflows/debug.md": "a2d04237fbbce72b",
"gsd-core/workflows/diagnose-issues.md": "a00507a8aea82796", "gsd-core/workflows/diagnose-issues.md": "a00507a8aea82796",
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761", "gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88", "gsd-core/workflows/discuss-phase-assumptions.md": "185419d61517727b",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a", "gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "02a5381c9a2173be", "gsd-core/workflows/discuss-phase.md": "02a5381c9a2173be",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653", "gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
@@ -310,88 +311,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "7512dd1892f118a1", "gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9", "gsd-core/workflows/docs-update.md": "b5cdf1c35043cf7b",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04", "gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130", "gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
"gsd-core/workflows/execute-phase.md": "77629722f47ec6c7", "gsd-core/workflows/execute-phase.md": "b090500cb2b6fe9f",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "1c26c1cf464fa6b7", "gsd-core/workflows/execute-plan.md": "51cb2b05be8090ed",
"gsd-core/workflows/explore.md": "6c04f2e658d93261", "gsd-core/workflows/explore.md": "6c04f2e658d93261",
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4", "gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3", "gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913", "gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "47f1594c88c08501", "gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "107e3c72e76d9535", "gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0", "gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50", "gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "5eefc87999cde1a6", "gsd-core/workflows/help/modes/full.md": "5eefc87999cde1a6",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d", "gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "12c6cbcbdecb6392", "gsd-core/workflows/import.md": "31a0f3a33154939f",
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26", "gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5", "gsd-core/workflows/ingest-docs.md": "e5c63b5e539f6e17",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b", "gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3", "gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65", "gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453", "gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "3ba7a3e8213c4b23", "gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2", "gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043", "gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74", "gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5", "gsd-core/workflows/new-milestone.md": "f6029bcb535bee69",
"gsd-core/workflows/new-project.md": "31a16f12e0b59918", "gsd-core/workflows/new-project.md": "3ff0861ced194253",
"gsd-core/workflows/new-workspace.md": "017688423110ed66", "gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "13fb800f2472d970", "gsd-core/workflows/next.md": "13fb800f2472d970",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619", "gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "628d54d63365a6b2", "gsd-core/workflows/plan-phase.md": "ef07de99f05cb223",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8", "gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8",
"gsd-core/workflows/plant-seed.md": "10b92ae08a6fdede", "gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b", "gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "4fa910d15dea5695", "gsd-core/workflows/profile-user.md": "1419f1dad1853da0",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84", "gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "68a60c8fe332cb4e", "gsd-core/workflows/quick.md": "68f8adba85c03fea",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89", "gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999", "gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c", "gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4", "gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "f1fbefbd64bd890e", "gsd-core/workflows/review.md": "f1fbefbd64bd890e",
"gsd-core/workflows/scan.md": "e6424af05656725a", "gsd-core/workflows/scan.md": "e6424af05656725a",
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7", "gsd-core/workflows/secure-phase.md": "f8b9436c35372281",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44", "gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "70515c5838fb9826", "gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "d96ddf01fb85e61e", "gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "4642ebbaa38f8cc2", "gsd-core/workflows/ship.md": "09056fccdf20e41b",
"gsd-core/workflows/sketch-wrap-up.md": "2aba89ecd8f41a0d", "gsd-core/workflows/sketch-wrap-up.md": "2aba89ecd8f41a0d",
"gsd-core/workflows/sketch.md": "5eedd93f9a5b49d5", "gsd-core/workflows/sketch.md": "2913d90416a3c0f0",
"gsd-core/workflows/smart-entry.md": "449238eb94abe187", "gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c", "gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "2b004744c52e565c", "gsd-core/workflows/spike-wrap-up.md": "2b004744c52e565c",
"gsd-core/workflows/spike.md": "24a0fee1447b6f0a", "gsd-core/workflows/spike.md": "9d189e302ce51694",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2", "gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c", "gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7", "gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "e4bef31fd9389c63", "gsd-core/workflows/ui-phase.md": "3ebc9febb666a7c2",
"gsd-core/workflows/ui-review.md": "7acfc485526d064b", "gsd-core/workflows/ui-review.md": "202c4e399cd95719",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d", "gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "96d2775f008b3a85", "gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "5ff1f77222977648", "gsd-core/workflows/update.md": "94e31cb2aa350edd",
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607", "gsd-core/workflows/validate-phase.md": "2e19caff07397728",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf", "gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72", "gsd-core/workflows/verify-work.md": "5b92e34f1d0da848",
"hooks/gsd-check-update-worker.js": "bdc9324a2f080ddd", "hooks/gsd-check-update-worker.js": "bdc9324a2f080ddd",
"hooks/gsd-check-update.js": "b7669f605631e506", "hooks/gsd-check-update.js": "b7669f605631e506",
"hooks/gsd-config-reload.js": "96546e0e8bb47904", "hooks/gsd-config-reload.js": "96546e0e8bb47904",

View File

@@ -195,6 +195,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a483199612e216f1", "gsd-core/references/execute-phase-context-guard.md": "a483199612e216f1",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "95e55087876a0d96", "gsd-core/references/execute-phase-wave-guard.md": "95e55087876a0d96",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -314,23 +315,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "62431b27424ff1ff", "gsd-core/workflows/add-backlog.md": "62431b27424ff1ff",
"gsd-core/workflows/add-phase.md": "d7a401b48271964f", "gsd-core/workflows/add-phase.md": "d7a401b48271964f",
"gsd-core/workflows/add-tests.md": "5cdb15508c4b6075", "gsd-core/workflows/add-tests.md": "f2f30978099144d3",
"gsd-core/workflows/add-todo.md": "776e554602e3d1b7", "gsd-core/workflows/add-todo.md": "fc26decc33e3e6a4",
"gsd-core/workflows/ai-integration-phase.md": "d46f7e1a0b24345a", "gsd-core/workflows/ai-integration-phase.md": "0954a83ab8315cc3",
"gsd-core/workflows/analyze-dependencies.md": "f799abc00907377f", "gsd-core/workflows/analyze-dependencies.md": "f799abc00907377f",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa", "gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "5f362cead97ceaca", "gsd-core/workflows/audit-milestone.md": "5f362cead97ceaca",
"gsd-core/workflows/audit-uat.md": "2564078edb15b5e9", "gsd-core/workflows/audit-uat.md": "2564078edb15b5e9",
"gsd-core/workflows/autonomous.md": "92f08626d4aea668", "gsd-core/workflows/autonomous.md": "92f08626d4aea668",
"gsd-core/workflows/check-todos.md": "b2b103e8638e760a", "gsd-core/workflows/check-todos.md": "7206ca486214637f",
"gsd-core/workflows/cleanup.md": "5d48d64664222a3e", "gsd-core/workflows/cleanup.md": "2f7d77d1b13d0410",
"gsd-core/workflows/code-review-fix.md": "ae7f9c6b39a23c12", "gsd-core/workflows/code-review-fix.md": "ae7f9c6b39a23c12",
"gsd-core/workflows/code-review.md": "9b02ebf8fc9b87fa", "gsd-core/workflows/code-review.md": "9b02ebf8fc9b87fa",
"gsd-core/workflows/complete-milestone.md": "017df7443bd08da5", "gsd-core/workflows/complete-milestone.md": "bd3d10386edf1121",
"gsd-core/workflows/debug.md": "e61047038f3e8b37", "gsd-core/workflows/debug.md": "7853f9890f8192eb",
"gsd-core/workflows/diagnose-issues.md": "7b7fde068d3b4c7a", "gsd-core/workflows/diagnose-issues.md": "7b7fde068d3b4c7a",
"gsd-core/workflows/discovery-phase.md": "71a4b78ff876a854", "gsd-core/workflows/discovery-phase.md": "ae93d9d808c8c018",
"gsd-core/workflows/discuss-phase-assumptions.md": "0d936ec25299917c", "gsd-core/workflows/discuss-phase-assumptions.md": "f34b2920b6c6cbc5",
"gsd-core/workflows/discuss-phase-power.md": "3f8b83dc6be2e9d5", "gsd-core/workflows/discuss-phase-power.md": "3f8b83dc6be2e9d5",
"gsd-core/workflows/discuss-phase.md": "7c9df6656b81fda9", "gsd-core/workflows/discuss-phase.md": "7c9df6656b81fda9",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653", "gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
@@ -345,88 +346,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405", "gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "2b56ec2868cbddb4", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "2b56ec2868cbddb4",
"gsd-core/workflows/do.md": "feec00355f896a3d", "gsd-core/workflows/do.md": "b30d5b8eca60ef79",
"gsd-core/workflows/docs-update.md": "e255317df939e302", "gsd-core/workflows/docs-update.md": "70ad463cdad599c9",
"gsd-core/workflows/edit-phase.md": "e592a4d85ce5380f", "gsd-core/workflows/edit-phase.md": "e592a4d85ce5380f",
"gsd-core/workflows/eval-review.md": "63d0d0670b54c244", "gsd-core/workflows/eval-review.md": "c89a63285ead961e",
"gsd-core/workflows/execute-phase.md": "4771222b9f9609d0", "gsd-core/workflows/execute-phase.md": "994554be349d76bd",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f4cacd27d37bac65", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "f4cacd27d37bac65",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "4492431f93e1df8c", "gsd-core/workflows/execute-plan.md": "5c4915ce921c0612",
"gsd-core/workflows/explore.md": "2ef10d17c8864a04", "gsd-core/workflows/explore.md": "2ef10d17c8864a04",
"gsd-core/workflows/extract-learnings.md": "f716aa03fcb5f8da", "gsd-core/workflows/extract-learnings.md": "f716aa03fcb5f8da",
"gsd-core/workflows/fast.md": "e4ed60f96a7b3ac8", "gsd-core/workflows/fast.md": "e4ed60f96a7b3ac8",
"gsd-core/workflows/forensics.md": "2e8a01b5b44e65f3", "gsd-core/workflows/forensics.md": "2e8a01b5b44e65f3",
"gsd-core/workflows/graduation.md": "47f1594c88c08501", "gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "5b835fc606fd3e9b", "gsd-core/workflows/health.md": "6fedf96650e0f1e5",
"gsd-core/workflows/help.md": "08e1349950c5602a", "gsd-core/workflows/help.md": "08e1349950c5602a",
"gsd-core/workflows/help/modes/brief.md": "da44b130d1afe556", "gsd-core/workflows/help/modes/brief.md": "da44b130d1afe556",
"gsd-core/workflows/help/modes/default.md": "4bb3082d28026eea", "gsd-core/workflows/help/modes/default.md": "4bb3082d28026eea",
"gsd-core/workflows/help/modes/full.md": "9a512db0dce1a315", "gsd-core/workflows/help/modes/full.md": "9a512db0dce1a315",
"gsd-core/workflows/help/modes/topic.md": "b7c7e4a8800bc3ea", "gsd-core/workflows/help/modes/topic.md": "b7c7e4a8800bc3ea",
"gsd-core/workflows/import.md": "f29e0a0f330f2bc0", "gsd-core/workflows/import.md": "5b0076b667b15c01",
"gsd-core/workflows/inbox.md": "61b8b10e7a74b2e9", "gsd-core/workflows/inbox.md": "ddb6832b7e0ad46b",
"gsd-core/workflows/ingest-docs.md": "57af769d029ceb0e", "gsd-core/workflows/ingest-docs.md": "86a63169433cd74f",
"gsd-core/workflows/insert-phase.md": "5e23bd8d55b388c7", "gsd-core/workflows/insert-phase.md": "5e23bd8d55b388c7",
"gsd-core/workflows/list-phase-assumptions.md": "4d245f6ea899bcb9", "gsd-core/workflows/list-phase-assumptions.md": "4d245f6ea899bcb9",
"gsd-core/workflows/list-seeds.md": "0a2d9fd5b06b8ded", "gsd-core/workflows/list-seeds.md": "0a2d9fd5b06b8ded",
"gsd-core/workflows/list-workspaces.md": "bb74607336897b94", "gsd-core/workflows/list-workspaces.md": "bb74607336897b94",
"gsd-core/workflows/manager.md": "3a5abb31ad83334f", "gsd-core/workflows/manager.md": "5f9365147f53e3f5",
"gsd-core/workflows/map-codebase.md": "d47b52761b9de231", "gsd-core/workflows/map-codebase.md": "d47b52761b9de231",
"gsd-core/workflows/milestone-summary.md": "a53b30a84f904b50", "gsd-core/workflows/milestone-summary.md": "a53b30a84f904b50",
"gsd-core/workflows/mvp-phase.md": "100dded5c7b4cb86", "gsd-core/workflows/mvp-phase.md": "85fea39f30f8c698",
"gsd-core/workflows/new-milestone.md": "05fab4b8e193bfd2", "gsd-core/workflows/new-milestone.md": "fa709eae51e697c7",
"gsd-core/workflows/new-project.md": "1ae7021b79d3144b", "gsd-core/workflows/new-project.md": "e6e9efed667d71e0",
"gsd-core/workflows/new-workspace.md": "3630b78e83b1e491", "gsd-core/workflows/new-workspace.md": "2d9dc09dd7739921",
"gsd-core/workflows/next.md": "7097a9607a981086", "gsd-core/workflows/next.md": "7097a9607a981086",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "664da466ab989f9d", "gsd-core/workflows/note.md": "664da466ab989f9d",
"gsd-core/workflows/onboard.md": "83c40ba7055b8b24", "gsd-core/workflows/onboard.md": "f022a379ede13512",
"gsd-core/workflows/pause-work.md": "a217770ecafcb2e0", "gsd-core/workflows/pause-work.md": "a217770ecafcb2e0",
"gsd-core/workflows/plan-milestone-gaps.md": "73d46f77c50a0690", "gsd-core/workflows/plan-milestone-gaps.md": "73d46f77c50a0690",
"gsd-core/workflows/plan-phase.md": "98b926fb0bced6ef", "gsd-core/workflows/plan-phase.md": "422cea035ea5c515",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "d838b87563feedf6", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "d838b87563feedf6",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "f5edc589cab52a7b", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "f5edc589cab52a7b",
"gsd-core/workflows/plan-review-convergence.md": "6f904fb1befa8991", "gsd-core/workflows/plan-review-convergence.md": "6f904fb1befa8991",
"gsd-core/workflows/plant-seed.md": "5b07de07e4593281", "gsd-core/workflows/plant-seed.md": "25b0c824f7eff40e",
"gsd-core/workflows/pr-branch.md": "d13e1cc81de40896", "gsd-core/workflows/pr-branch.md": "d13e1cc81de40896",
"gsd-core/workflows/profile-user.md": "05828c8cc61ef384", "gsd-core/workflows/profile-user.md": "6d23d0594082c78a",
"gsd-core/workflows/progress.md": "e57d5a148df38508", "gsd-core/workflows/progress.md": "e57d5a148df38508",
"gsd-core/workflows/quick.md": "ef0af6ee7788f64b", "gsd-core/workflows/quick.md": "dea316acfe698107",
"gsd-core/workflows/reapply-patches.md": "26297b84736e66a4", "gsd-core/workflows/reapply-patches.md": "26297b84736e66a4",
"gsd-core/workflows/remove-phase.md": "9ee0fddd11a0d9d4", "gsd-core/workflows/remove-phase.md": "9ee0fddd11a0d9d4",
"gsd-core/workflows/remove-workspace.md": "19d7465aaa50cb62", "gsd-core/workflows/remove-workspace.md": "d0160c5d05bcb2bb",
"gsd-core/workflows/resume-project.md": "9965f87eb278f7f8", "gsd-core/workflows/resume-project.md": "9965f87eb278f7f8",
"gsd-core/workflows/review.md": "e4e61845190da702", "gsd-core/workflows/review.md": "e4e61845190da702",
"gsd-core/workflows/scan.md": "9d331d74a5ad47e5", "gsd-core/workflows/scan.md": "9d331d74a5ad47e5",
"gsd-core/workflows/secure-phase.md": "ab387a4bca381c18", "gsd-core/workflows/secure-phase.md": "858ef74a9f247bd5",
"gsd-core/workflows/session-report.md": "dd8fa011c9394075", "gsd-core/workflows/session-report.md": "dd8fa011c9394075",
"gsd-core/workflows/settings-advanced.md": "2431433811616f76", "gsd-core/workflows/settings-advanced.md": "2431433811616f76",
"gsd-core/workflows/settings-integrations.md": "77730321d3d6d317", "gsd-core/workflows/settings-integrations.md": "d6d222af8690d09b",
"gsd-core/workflows/settings.md": "054c8c31b3905ced", "gsd-core/workflows/settings.md": "3c8bd45b123b5db6",
"gsd-core/workflows/ship.md": "ccd8cda30a4a4231", "gsd-core/workflows/ship.md": "a54841f23fd14626",
"gsd-core/workflows/sketch-wrap-up.md": "07724a390fbb43f6", "gsd-core/workflows/sketch-wrap-up.md": "07724a390fbb43f6",
"gsd-core/workflows/sketch.md": "576f300dfdde1b7d", "gsd-core/workflows/sketch.md": "3f6ed885d2ee5528",
"gsd-core/workflows/smart-entry.md": "6f686195ae531b03", "gsd-core/workflows/smart-entry.md": "2914f9d54d365931",
"gsd-core/workflows/spec-phase.md": "3dd8ae6137492d80", "gsd-core/workflows/spec-phase.md": "3dd8ae6137492d80",
"gsd-core/workflows/spike-wrap-up.md": "ace265c114298376", "gsd-core/workflows/spike-wrap-up.md": "ace265c114298376",
"gsd-core/workflows/spike.md": "f42a9983eb9c89a1", "gsd-core/workflows/spike.md": "1f70a13fe2080da7",
"gsd-core/workflows/stats.md": "6dfc500555849d74", "gsd-core/workflows/stats.md": "6dfc500555849d74",
"gsd-core/workflows/sync-skills.md": "e2b793963799f8ce", "gsd-core/workflows/sync-skills.md": "e2b793963799f8ce",
"gsd-core/workflows/thread.md": "3eef3b6baf50fbfa", "gsd-core/workflows/thread.md": "3eef3b6baf50fbfa",
"gsd-core/workflows/transition.md": "de3c63b3f62e6988", "gsd-core/workflows/transition.md": "de3c63b3f62e6988",
"gsd-core/workflows/ui-phase.md": "989eefe25c06ae48", "gsd-core/workflows/ui-phase.md": "9bd8969f78f6a9d8",
"gsd-core/workflows/ui-review.md": "5768b7aac1429ea0", "gsd-core/workflows/ui-review.md": "99455710aacf3da3",
"gsd-core/workflows/ultraplan-phase.md": "0bafc2af27be4591", "gsd-core/workflows/ultraplan-phase.md": "0bafc2af27be4591",
"gsd-core/workflows/undo.md": "5ff7d63b0a2f46d5", "gsd-core/workflows/undo.md": "bd29a3a4fbc3fdc2",
"gsd-core/workflows/update.md": "5c35c0ec0f462ea6", "gsd-core/workflows/update.md": "d5323ffe252f8ed2",
"gsd-core/workflows/validate-phase.md": "6d6d10fe53f6b1d0", "gsd-core/workflows/validate-phase.md": "e616c9ed40e7c6f6",
"gsd-core/workflows/verify-phase.md": "ce508f9c2242b91f", "gsd-core/workflows/verify-phase.md": "ce508f9c2242b91f",
"gsd-core/workflows/verify-work.md": "c2357af11b257433", "gsd-core/workflows/verify-work.md": "ea3ea7cdd7202de0",
"hooks/gsd-check-update.js": "ef48957eb6ac6a10", "hooks/gsd-check-update.js": "ef48957eb6ac6a10",
"hooks/gsd-context-monitor.js": "ec76b23f45d29b02", "hooks/gsd-context-monitor.js": "ec76b23f45d29b02",
"scripts/changeset/README.md": "86ff89331dfd94b2", "scripts/changeset/README.md": "86ff89331dfd94b2",

View File

@@ -90,6 +90,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "1eb1e1e552ebd17b", "gsd-core/references/execute-phase-wave-guard.md": "1eb1e1e552ebd17b",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -209,23 +210,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "98f2dbb7c7cc93c2", "gsd-core/workflows/add-backlog.md": "98f2dbb7c7cc93c2",
"gsd-core/workflows/add-phase.md": "f4fbfad54be5d46f", "gsd-core/workflows/add-phase.md": "f4fbfad54be5d46f",
"gsd-core/workflows/add-tests.md": "7f5da4d2a9fa8a1a", "gsd-core/workflows/add-tests.md": "bc656e055e09138d",
"gsd-core/workflows/add-todo.md": "f86f4efa25a5d0d6", "gsd-core/workflows/add-todo.md": "0f6cdf522df6c87e",
"gsd-core/workflows/ai-integration-phase.md": "9dd7f80180f9c8e9", "gsd-core/workflows/ai-integration-phase.md": "eaf002dfaa8e33e3",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "1baff2494a1c093e", "gsd-core/workflows/audit-fix.md": "1baff2494a1c093e",
"gsd-core/workflows/audit-milestone.md": "258e4dfd259ab13f", "gsd-core/workflows/audit-milestone.md": "258e4dfd259ab13f",
"gsd-core/workflows/audit-uat.md": "5ea0e30548ed0933", "gsd-core/workflows/audit-uat.md": "5ea0e30548ed0933",
"gsd-core/workflows/autonomous.md": "dd972ddde9663295", "gsd-core/workflows/autonomous.md": "dd972ddde9663295",
"gsd-core/workflows/check-todos.md": "be9b50b5f28d7504", "gsd-core/workflows/check-todos.md": "c8b8fed995a00c26",
"gsd-core/workflows/cleanup.md": "8233b05ebf011bec", "gsd-core/workflows/cleanup.md": "90d4119b70f32fce",
"gsd-core/workflows/code-review-fix.md": "fda53892ae4b17fc", "gsd-core/workflows/code-review-fix.md": "fda53892ae4b17fc",
"gsd-core/workflows/code-review.md": "e36479e4d924c9a6", "gsd-core/workflows/code-review.md": "e36479e4d924c9a6",
"gsd-core/workflows/complete-milestone.md": "470cf39261400ee2", "gsd-core/workflows/complete-milestone.md": "c3d961cc123a7492",
"gsd-core/workflows/debug.md": "4fa78215bcd5b156", "gsd-core/workflows/debug.md": "b08d2b098bcad8ca",
"gsd-core/workflows/diagnose-issues.md": "1ddcee0f5aa0a968", "gsd-core/workflows/diagnose-issues.md": "1ddcee0f5aa0a968",
"gsd-core/workflows/discovery-phase.md": "8e99da61fb2b7074", "gsd-core/workflows/discovery-phase.md": "c97943b1f3d3db96",
"gsd-core/workflows/discuss-phase-assumptions.md": "ab0c432b84038681", "gsd-core/workflows/discuss-phase-assumptions.md": "c50c6745dfdabdc0",
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383", "gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
"gsd-core/workflows/discuss-phase.md": "31a79ea11c1cdd5f", "gsd-core/workflows/discuss-phase.md": "31a79ea11c1cdd5f",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "654cdaf1138d5e27", "gsd-core/workflows/discuss-phase/modes/advisor.md": "654cdaf1138d5e27",
@@ -240,88 +241,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405", "gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "2b56ec2868cbddb4", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "2b56ec2868cbddb4",
"gsd-core/workflows/do.md": "9b46119803df09a6", "gsd-core/workflows/do.md": "ba9dd204343ab48b",
"gsd-core/workflows/docs-update.md": "9292cfa3c52c434e", "gsd-core/workflows/docs-update.md": "fddba4a71268a33f",
"gsd-core/workflows/edit-phase.md": "8667c28b22b1599f", "gsd-core/workflows/edit-phase.md": "8667c28b22b1599f",
"gsd-core/workflows/eval-review.md": "81c8e72ba3862856", "gsd-core/workflows/eval-review.md": "1ae2d3d3fbf72893",
"gsd-core/workflows/execute-phase.md": "9ecbabf9c4e62e80", "gsd-core/workflows/execute-phase.md": "0afe5c2ba3b22f15",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "63b712920f21a40f", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "63b712920f21a40f",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "25bebed74e645109", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "25bebed74e645109",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "dc0b96d285327b18", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "dc0b96d285327b18",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "388f3cd58a3adac5", "gsd-core/workflows/execute-plan.md": "6408ea31974478ff",
"gsd-core/workflows/explore.md": "5fd91a8510e1114b", "gsd-core/workflows/explore.md": "5fd91a8510e1114b",
"gsd-core/workflows/extract-learnings.md": "f34d0b1927545b18", "gsd-core/workflows/extract-learnings.md": "f34d0b1927545b18",
"gsd-core/workflows/fast.md": "66821090b6b8ed3b", "gsd-core/workflows/fast.md": "66821090b6b8ed3b",
"gsd-core/workflows/forensics.md": "459644dce26ee2ef", "gsd-core/workflows/forensics.md": "459644dce26ee2ef",
"gsd-core/workflows/graduation.md": "f013efc29096faf0", "gsd-core/workflows/graduation.md": "343e287b8bfac6b2",
"gsd-core/workflows/health.md": "f343fd32a0e398e4", "gsd-core/workflows/health.md": "53f350663df5f7b2",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0", "gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "fb46abb57e525863", "gsd-core/workflows/help/modes/full.md": "fb46abb57e525863",
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69", "gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
"gsd-core/workflows/import.md": "7d65189539122d3b", "gsd-core/workflows/import.md": "ae33f4683e7b69e9",
"gsd-core/workflows/inbox.md": "a448220c548f27bc", "gsd-core/workflows/inbox.md": "2f4edb2681b84d9c",
"gsd-core/workflows/ingest-docs.md": "f9aeae8fe219ad31", "gsd-core/workflows/ingest-docs.md": "974d963c31f9f0d2",
"gsd-core/workflows/insert-phase.md": "60a52a63a8b288f6", "gsd-core/workflows/insert-phase.md": "60a52a63a8b288f6",
"gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3", "gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3",
"gsd-core/workflows/list-seeds.md": "71dc6f748b1d1c0e", "gsd-core/workflows/list-seeds.md": "71dc6f748b1d1c0e",
"gsd-core/workflows/list-workspaces.md": "3c9f76af08ced623", "gsd-core/workflows/list-workspaces.md": "3c9f76af08ced623",
"gsd-core/workflows/manager.md": "97f57c099a668f83", "gsd-core/workflows/manager.md": "5acdd15485a04ab0",
"gsd-core/workflows/map-codebase.md": "4d86b6d024f5a8d5", "gsd-core/workflows/map-codebase.md": "4d86b6d024f5a8d5",
"gsd-core/workflows/milestone-summary.md": "8a53906253984a62", "gsd-core/workflows/milestone-summary.md": "8a53906253984a62",
"gsd-core/workflows/mvp-phase.md": "93304b26c92e4418", "gsd-core/workflows/mvp-phase.md": "3c00d29043864af2",
"gsd-core/workflows/new-milestone.md": "339496291115d1fc", "gsd-core/workflows/new-milestone.md": "6cc12552aae97cb1",
"gsd-core/workflows/new-project.md": "2d50bec2e25c66f4", "gsd-core/workflows/new-project.md": "0fd56b2cfe818102",
"gsd-core/workflows/new-workspace.md": "403796bdf6318515", "gsd-core/workflows/new-workspace.md": "a609b382e83c2f10",
"gsd-core/workflows/next.md": "81c08abb34b2da88", "gsd-core/workflows/next.md": "81c08abb34b2da88",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "4a5ee74cf2fc1f54", "gsd-core/workflows/note.md": "4a5ee74cf2fc1f54",
"gsd-core/workflows/onboard.md": "a62602c6f3fd538a", "gsd-core/workflows/onboard.md": "357b7ae1367560dd",
"gsd-core/workflows/pause-work.md": "9ce66367be6c40db", "gsd-core/workflows/pause-work.md": "9ce66367be6c40db",
"gsd-core/workflows/plan-milestone-gaps.md": "5cf589802d08bdf3", "gsd-core/workflows/plan-milestone-gaps.md": "5cf589802d08bdf3",
"gsd-core/workflows/plan-phase.md": "a0d7aa722c4db2dc", "gsd-core/workflows/plan-phase.md": "27ea81d0be74a2ee",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "bb052483744f0a6d", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "bb052483744f0a6d",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "0afd8eb4b0689bc9", "gsd-core/workflows/plan-review-convergence.md": "0afd8eb4b0689bc9",
"gsd-core/workflows/plant-seed.md": "21e461cd39e5181b", "gsd-core/workflows/plant-seed.md": "aac7ffbbec7e7a22",
"gsd-core/workflows/pr-branch.md": "2833905f119b5722", "gsd-core/workflows/pr-branch.md": "2833905f119b5722",
"gsd-core/workflows/profile-user.md": "5cc032206c99ef71", "gsd-core/workflows/profile-user.md": "e2135bdd20e17620",
"gsd-core/workflows/progress.md": "97f4971366c381ee", "gsd-core/workflows/progress.md": "97f4971366c381ee",
"gsd-core/workflows/quick.md": "dff6d086ef16a14f", "gsd-core/workflows/quick.md": "5e6982ad469df9cc",
"gsd-core/workflows/reapply-patches.md": "8fd59e24b486f180", "gsd-core/workflows/reapply-patches.md": "8fd59e24b486f180",
"gsd-core/workflows/remove-phase.md": "e262654e319d1bc4", "gsd-core/workflows/remove-phase.md": "e262654e319d1bc4",
"gsd-core/workflows/remove-workspace.md": "ceddfeef5f2d6754", "gsd-core/workflows/remove-workspace.md": "e7e5b5b1e0cc9d81",
"gsd-core/workflows/resume-project.md": "40db7f350f5866d8", "gsd-core/workflows/resume-project.md": "40db7f350f5866d8",
"gsd-core/workflows/review.md": "a9f422db38ab8bb9", "gsd-core/workflows/review.md": "a9f422db38ab8bb9",
"gsd-core/workflows/scan.md": "b8615653ffa85e12", "gsd-core/workflows/scan.md": "b8615653ffa85e12",
"gsd-core/workflows/secure-phase.md": "9bec6635ee1cbaed", "gsd-core/workflows/secure-phase.md": "3afa175ee48491af",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "230a658de9c017a6", "gsd-core/workflows/settings-advanced.md": "230a658de9c017a6",
"gsd-core/workflows/settings-integrations.md": "a1d146d6bfd14db5", "gsd-core/workflows/settings-integrations.md": "58acee11162b4a4e",
"gsd-core/workflows/settings.md": "f611f14f2f447f1e", "gsd-core/workflows/settings.md": "876e954acd64cb18",
"gsd-core/workflows/ship.md": "9a260c559e783769", "gsd-core/workflows/ship.md": "24fd52a74258aaad",
"gsd-core/workflows/sketch-wrap-up.md": "f2590cb6ddbfad94", "gsd-core/workflows/sketch-wrap-up.md": "f2590cb6ddbfad94",
"gsd-core/workflows/sketch.md": "e2063966439af8c1", "gsd-core/workflows/sketch.md": "9cbf5860b6a005e5",
"gsd-core/workflows/smart-entry.md": "6c707b959a41900b", "gsd-core/workflows/smart-entry.md": "93f90cd7a12dbbc7",
"gsd-core/workflows/spec-phase.md": "44bd9c50b42e73fb", "gsd-core/workflows/spec-phase.md": "44bd9c50b42e73fb",
"gsd-core/workflows/spike-wrap-up.md": "a34d1e9ec15ae904", "gsd-core/workflows/spike-wrap-up.md": "a34d1e9ec15ae904",
"gsd-core/workflows/spike.md": "89f299c07ac0edd2", "gsd-core/workflows/spike.md": "bf51085ab23117d1",
"gsd-core/workflows/stats.md": "1db01bd96aa570fe", "gsd-core/workflows/stats.md": "1db01bd96aa570fe",
"gsd-core/workflows/sync-skills.md": "eca50ffe8320dba8", "gsd-core/workflows/sync-skills.md": "eca50ffe8320dba8",
"gsd-core/workflows/thread.md": "c5cbd66223906998", "gsd-core/workflows/thread.md": "c5cbd66223906998",
"gsd-core/workflows/transition.md": "9219cd7c61e3323f", "gsd-core/workflows/transition.md": "9219cd7c61e3323f",
"gsd-core/workflows/ui-phase.md": "646b99f22a6e4762", "gsd-core/workflows/ui-phase.md": "778609094491575c",
"gsd-core/workflows/ui-review.md": "2851b3576894ee75", "gsd-core/workflows/ui-review.md": "f700e68d765ef15f",
"gsd-core/workflows/ultraplan-phase.md": "7217c34dc9eaf7bb", "gsd-core/workflows/ultraplan-phase.md": "7217c34dc9eaf7bb",
"gsd-core/workflows/undo.md": "ba1ef7aa80bef6bd", "gsd-core/workflows/undo.md": "e168c2eb8f7e105c",
"gsd-core/workflows/update.md": "f444a7cfcd246cfb", "gsd-core/workflows/update.md": "c0cf121daaaa75a7",
"gsd-core/workflows/validate-phase.md": "e7aa423ebdd6a230", "gsd-core/workflows/validate-phase.md": "affb923d150f07e5",
"gsd-core/workflows/verify-phase.md": "3fcc54a0c46e5e2f", "gsd-core/workflows/verify-phase.md": "3fcc54a0c46e5e2f",
"gsd-core/workflows/verify-work.md": "5a0983da1e822293", "gsd-core/workflows/verify-work.md": "3a3c0cef66f63de5",
"hooks/gsd-session.json": "3382597f61e3a559", "hooks/gsd-session.json": "3382597f61e3a559",
"scripts/changeset/README.md": "86ff89331dfd94b2", "scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271", "scripts/changeset/cli.cjs": "68f92a344b199271",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "44e31bdae72ed5d5", "gsd-core/references/execute-phase-between-wave-reset.md": "44e31bdae72ed5d5",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "b0e27ed2d8405974", "gsd-core/references/execute-phase-wave-guard.md": "b0e27ed2d8405974",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -279,23 +280,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "2926457ed07b4500", "gsd-core/workflows/add-backlog.md": "2926457ed07b4500",
"gsd-core/workflows/add-phase.md": "b2c06b7ed648658c", "gsd-core/workflows/add-phase.md": "b2c06b7ed648658c",
"gsd-core/workflows/add-tests.md": "37f031c4b3236a32", "gsd-core/workflows/add-tests.md": "100349c1d23af47f",
"gsd-core/workflows/add-todo.md": "1ee0525664fb062f", "gsd-core/workflows/add-todo.md": "8f2b65d7ce28e4fd",
"gsd-core/workflows/ai-integration-phase.md": "a349e94b18839873", "gsd-core/workflows/ai-integration-phase.md": "ed2ca9b215566e8e",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa", "gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710", "gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710",
"gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405", "gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405",
"gsd-core/workflows/autonomous.md": "4b20eda9a0b587ce", "gsd-core/workflows/autonomous.md": "4b20eda9a0b587ce",
"gsd-core/workflows/check-todos.md": "1a67337d1630848f", "gsd-core/workflows/check-todos.md": "f52f3ba034c0b9f1",
"gsd-core/workflows/cleanup.md": "db47963f103c2748", "gsd-core/workflows/cleanup.md": "c0c243aa070b993b",
"gsd-core/workflows/code-review-fix.md": "c57af378033b1b58", "gsd-core/workflows/code-review-fix.md": "c57af378033b1b58",
"gsd-core/workflows/code-review.md": "9860df7228426ae5", "gsd-core/workflows/code-review.md": "9860df7228426ae5",
"gsd-core/workflows/complete-milestone.md": "1400a4856f592f3e", "gsd-core/workflows/complete-milestone.md": "2281ee0a53264ca5",
"gsd-core/workflows/debug.md": "100ed7fce99f3ec2", "gsd-core/workflows/debug.md": "42ea025c334a9cbb",
"gsd-core/workflows/diagnose-issues.md": "1e8e965609250776", "gsd-core/workflows/diagnose-issues.md": "1e8e965609250776",
"gsd-core/workflows/discovery-phase.md": "7dcf150998559c11", "gsd-core/workflows/discovery-phase.md": "13393233272db9b6",
"gsd-core/workflows/discuss-phase-assumptions.md": "c25c6a6c633d71b6", "gsd-core/workflows/discuss-phase-assumptions.md": "89cabd7a5e3a1a5e",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6", "gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "14688ff19ce2184c", "gsd-core/workflows/discuss-phase.md": "14688ff19ce2184c",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "30612a2de153cb5b", "gsd-core/workflows/discuss-phase/modes/advisor.md": "30612a2de153cb5b",
@@ -310,88 +311,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "cd5d01c9ef84ab73", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "cd5d01c9ef84ab73",
"gsd-core/workflows/do.md": "9da6a73980ef2a71", "gsd-core/workflows/do.md": "53839c6429ae1234",
"gsd-core/workflows/docs-update.md": "e86d7d7e2e3dac6d", "gsd-core/workflows/docs-update.md": "817776e1a5f87b39",
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a", "gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
"gsd-core/workflows/eval-review.md": "a86279dd98dd5c03", "gsd-core/workflows/eval-review.md": "9389c58f7384972d",
"gsd-core/workflows/execute-phase.md": "0b9c81c3085926e6", "gsd-core/workflows/execute-phase.md": "6dbd3d9281ba270d",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "facb0e816d87a0c7", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "facb0e816d87a0c7",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "13e9664263d3844d", "gsd-core/workflows/execute-plan.md": "a2f18afa588bbde3",
"gsd-core/workflows/explore.md": "b9eea1bac358c9ce", "gsd-core/workflows/explore.md": "b9eea1bac358c9ce",
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee", "gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
"gsd-core/workflows/fast.md": "77b49793e26b3323", "gsd-core/workflows/fast.md": "77b49793e26b3323",
"gsd-core/workflows/forensics.md": "a65f817d4a515291", "gsd-core/workflows/forensics.md": "a65f817d4a515291",
"gsd-core/workflows/graduation.md": "53a4a6fa3b4e6613", "gsd-core/workflows/graduation.md": "0c0f4e6258ae482f",
"gsd-core/workflows/health.md": "e4d770484b5e7496", "gsd-core/workflows/health.md": "3da94d58e1d40ed1",
"gsd-core/workflows/help.md": "08e1349950c5602a", "gsd-core/workflows/help.md": "08e1349950c5602a",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "b88ff431fffe40ae", "gsd-core/workflows/help/modes/default.md": "b88ff431fffe40ae",
"gsd-core/workflows/help/modes/full.md": "9ae8b1e8908c7ead", "gsd-core/workflows/help/modes/full.md": "9ae8b1e8908c7ead",
"gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c", "gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c",
"gsd-core/workflows/import.md": "f336d2ce3ffb5687", "gsd-core/workflows/import.md": "5d6b58c9b6048e03",
"gsd-core/workflows/inbox.md": "797c287852eb8957", "gsd-core/workflows/inbox.md": "07404a616a95fe6c",
"gsd-core/workflows/ingest-docs.md": "762b25021d6a775c", "gsd-core/workflows/ingest-docs.md": "210982f5826d6ff8",
"gsd-core/workflows/insert-phase.md": "964ca91863a8749a", "gsd-core/workflows/insert-phase.md": "964ca91863a8749a",
"gsd-core/workflows/list-phase-assumptions.md": "eb986c301d59f620", "gsd-core/workflows/list-phase-assumptions.md": "eb986c301d59f620",
"gsd-core/workflows/list-seeds.md": "831ddc27b684e30b", "gsd-core/workflows/list-seeds.md": "831ddc27b684e30b",
"gsd-core/workflows/list-workspaces.md": "418570fbc8b938da", "gsd-core/workflows/list-workspaces.md": "418570fbc8b938da",
"gsd-core/workflows/manager.md": "7efd6874ff9768d6", "gsd-core/workflows/manager.md": "c6c3dc3eaa815c51",
"gsd-core/workflows/map-codebase.md": "d2830c7316a2e6a3", "gsd-core/workflows/map-codebase.md": "d2830c7316a2e6a3",
"gsd-core/workflows/milestone-summary.md": "6c76386b500cc5d3", "gsd-core/workflows/milestone-summary.md": "6c76386b500cc5d3",
"gsd-core/workflows/mvp-phase.md": "50b189c5f4503369", "gsd-core/workflows/mvp-phase.md": "f0f7d7d6c2e5435f",
"gsd-core/workflows/new-milestone.md": "2def2ce95ea12681", "gsd-core/workflows/new-milestone.md": "14f833622d0da949",
"gsd-core/workflows/new-project.md": "356828ab4d29c7e6", "gsd-core/workflows/new-project.md": "0e977e5cbca1cc97",
"gsd-core/workflows/new-workspace.md": "9e76e96253d54a57", "gsd-core/workflows/new-workspace.md": "4da5355de8f19485",
"gsd-core/workflows/next.md": "174356dcfd7c6c32", "gsd-core/workflows/next.md": "174356dcfd7c6c32",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "1c1e466c764e3deb", "gsd-core/workflows/note.md": "1c1e466c764e3deb",
"gsd-core/workflows/onboard.md": "20c28136423d40ac", "gsd-core/workflows/onboard.md": "7d0c7449b84c7997",
"gsd-core/workflows/pause-work.md": "5716362557f44ce4", "gsd-core/workflows/pause-work.md": "5716362557f44ce4",
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e", "gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
"gsd-core/workflows/plan-phase.md": "dd78f3cdd1c7f3f1", "gsd-core/workflows/plan-phase.md": "74dd1ac212c945da",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3bed01c3c906ac52", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3bed01c3c906ac52",
"gsd-core/workflows/plan-review-convergence.md": "68139431c21ef46d", "gsd-core/workflows/plan-review-convergence.md": "68139431c21ef46d",
"gsd-core/workflows/plant-seed.md": "7bccd151ce7b69f2", "gsd-core/workflows/plant-seed.md": "3c36a48064aa98d1",
"gsd-core/workflows/pr-branch.md": "c67d90c65da47168", "gsd-core/workflows/pr-branch.md": "c67d90c65da47168",
"gsd-core/workflows/profile-user.md": "8c943983241260b5", "gsd-core/workflows/profile-user.md": "e1a6ec04051931f7",
"gsd-core/workflows/progress.md": "2dbc495deed1a36d", "gsd-core/workflows/progress.md": "2dbc495deed1a36d",
"gsd-core/workflows/quick.md": "ad40466dd04e4147", "gsd-core/workflows/quick.md": "24bd4b32e4b8e673",
"gsd-core/workflows/reapply-patches.md": "ba9406b60f2c4041", "gsd-core/workflows/reapply-patches.md": "ba9406b60f2c4041",
"gsd-core/workflows/remove-phase.md": "ada8a0546c686483", "gsd-core/workflows/remove-phase.md": "ada8a0546c686483",
"gsd-core/workflows/remove-workspace.md": "433affcd1a200826", "gsd-core/workflows/remove-workspace.md": "0572a83d71650937",
"gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96", "gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96",
"gsd-core/workflows/review.md": "ea18faf9ff633667", "gsd-core/workflows/review.md": "ea18faf9ff633667",
"gsd-core/workflows/scan.md": "1890c846b98690bb", "gsd-core/workflows/scan.md": "1890c846b98690bb",
"gsd-core/workflows/secure-phase.md": "3063b0b6f7b56d46", "gsd-core/workflows/secure-phase.md": "383a94ac2b089cc0",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "bf8ea69c8f7ae019", "gsd-core/workflows/settings-advanced.md": "bf8ea69c8f7ae019",
"gsd-core/workflows/settings-integrations.md": "166ca51b1f33c2a3", "gsd-core/workflows/settings-integrations.md": "37d4212d83664224",
"gsd-core/workflows/settings.md": "0623c673eaf04799", "gsd-core/workflows/settings.md": "f90f106a9490c7c9",
"gsd-core/workflows/ship.md": "1515bb4909387b1d", "gsd-core/workflows/ship.md": "4be3c89ccda1d856",
"gsd-core/workflows/sketch-wrap-up.md": "5be73b7bdf96b539", "gsd-core/workflows/sketch-wrap-up.md": "5be73b7bdf96b539",
"gsd-core/workflows/sketch.md": "373bc0d83368a411", "gsd-core/workflows/sketch.md": "64543e59b00637d4",
"gsd-core/workflows/smart-entry.md": "c8fc316358cdcd7b", "gsd-core/workflows/smart-entry.md": "fdc5113754223df8",
"gsd-core/workflows/spec-phase.md": "239b6e6cbddaf8c2", "gsd-core/workflows/spec-phase.md": "239b6e6cbddaf8c2",
"gsd-core/workflows/spike-wrap-up.md": "4a3bf1058691e55d", "gsd-core/workflows/spike-wrap-up.md": "4a3bf1058691e55d",
"gsd-core/workflows/spike.md": "f741bead24d5669a", "gsd-core/workflows/spike.md": "4cb55efeeacc9661",
"gsd-core/workflows/stats.md": "e7852c5d8f2b05a9", "gsd-core/workflows/stats.md": "e7852c5d8f2b05a9",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "bf9a944978dad763", "gsd-core/workflows/thread.md": "bf9a944978dad763",
"gsd-core/workflows/transition.md": "fb35a3de7feaa056", "gsd-core/workflows/transition.md": "fb35a3de7feaa056",
"gsd-core/workflows/ui-phase.md": "d1ae54a7ba413d69", "gsd-core/workflows/ui-phase.md": "10400dde4b67974a",
"gsd-core/workflows/ui-review.md": "4bc0fd55fc037998", "gsd-core/workflows/ui-review.md": "24feca716c57a845",
"gsd-core/workflows/ultraplan-phase.md": "466e01d65c350ef6", "gsd-core/workflows/ultraplan-phase.md": "466e01d65c350ef6",
"gsd-core/workflows/undo.md": "18dec684fb1076f9", "gsd-core/workflows/undo.md": "052c99f02bb5eb0a",
"gsd-core/workflows/update.md": "23e294ba707c3580", "gsd-core/workflows/update.md": "9e38bc073162bb65",
"gsd-core/workflows/validate-phase.md": "d03a94b7b807be12", "gsd-core/workflows/validate-phase.md": "e45dcfcad992ef99",
"gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9", "gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9",
"gsd-core/workflows/verify-work.md": "2e30a7b779b82a85", "gsd-core/workflows/verify-work.md": "3511ac4792752912",
"hooks/gsd-cursor-post-tool.js": "019d503aee8b4a3f", "hooks/gsd-cursor-post-tool.js": "019d503aee8b4a3f",
"hooks/gsd-cursor-pre-tool.js": "fe274720781fcbb5", "hooks/gsd-cursor-pre-tool.js": "fe274720781fcbb5",
"hooks/gsd-cursor-session-start.js": "c6e04ed597ea7020", "hooks/gsd-cursor-session-start.js": "c6e04ed597ea7020",

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "4d6ea8e85e88b1fe", "gsd-core/references/execute-phase-between-wave-reset.md": "4d6ea8e85e88b1fe",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "b13d8860a76b7a41", "gsd-core/references/execute-phase-wave-guard.md": "b13d8860a76b7a41",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -208,23 +209,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "79a453a2270483fb", "gsd-core/workflows/add-backlog.md": "79a453a2270483fb",
"gsd-core/workflows/add-phase.md": "2a6452fc51339b9c", "gsd-core/workflows/add-phase.md": "2a6452fc51339b9c",
"gsd-core/workflows/add-tests.md": "02f9e11ad2371c00", "gsd-core/workflows/add-tests.md": "beaec899e9a70b0e",
"gsd-core/workflows/add-todo.md": "8ba173153be63a40", "gsd-core/workflows/add-todo.md": "aa7be08f52478922",
"gsd-core/workflows/ai-integration-phase.md": "753a41301e4d2a4c", "gsd-core/workflows/ai-integration-phase.md": "3906d579a47aaa52",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "a7f94d5c43583aeb", "gsd-core/workflows/audit-fix.md": "a7f94d5c43583aeb",
"gsd-core/workflows/audit-milestone.md": "b96a78c6bd2e7690", "gsd-core/workflows/audit-milestone.md": "b96a78c6bd2e7690",
"gsd-core/workflows/audit-uat.md": "86d9131fccabf2ad", "gsd-core/workflows/audit-uat.md": "86d9131fccabf2ad",
"gsd-core/workflows/autonomous.md": "853dd93846332743", "gsd-core/workflows/autonomous.md": "853dd93846332743",
"gsd-core/workflows/check-todos.md": "ea9a303c48a5d752", "gsd-core/workflows/check-todos.md": "494a60cebcd65059",
"gsd-core/workflows/cleanup.md": "6c488059fc152a49", "gsd-core/workflows/cleanup.md": "c811970042bc4ff1",
"gsd-core/workflows/code-review-fix.md": "5e396494a79c3f19", "gsd-core/workflows/code-review-fix.md": "5e396494a79c3f19",
"gsd-core/workflows/code-review.md": "b73d0784b9abd2f4", "gsd-core/workflows/code-review.md": "b73d0784b9abd2f4",
"gsd-core/workflows/complete-milestone.md": "f1866541148dc291", "gsd-core/workflows/complete-milestone.md": "e87bf463430945d6",
"gsd-core/workflows/debug.md": "84b70e75cfe601a7", "gsd-core/workflows/debug.md": "5684db0b73309af3",
"gsd-core/workflows/diagnose-issues.md": "24dd9382e2ff010a", "gsd-core/workflows/diagnose-issues.md": "24dd9382e2ff010a",
"gsd-core/workflows/discovery-phase.md": "6161c60d752d0058", "gsd-core/workflows/discovery-phase.md": "56d07842d140f388",
"gsd-core/workflows/discuss-phase-assumptions.md": "71b86e3cf85d8697", "gsd-core/workflows/discuss-phase-assumptions.md": "9754acc053ccfc26",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6", "gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "0aa052ae4ee70bf6", "gsd-core/workflows/discuss-phase.md": "0aa052ae4ee70bf6",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "624db27cd84c4626", "gsd-core/workflows/discuss-phase/modes/advisor.md": "624db27cd84c4626",
@@ -239,88 +240,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "e37540cc874fb782", "gsd-core/workflows/do.md": "b30d1efcb0297580",
"gsd-core/workflows/docs-update.md": "ba4cf926fc463cbe", "gsd-core/workflows/docs-update.md": "de614d940b6f64ff",
"gsd-core/workflows/edit-phase.md": "7f27003f20e88fb8", "gsd-core/workflows/edit-phase.md": "7f27003f20e88fb8",
"gsd-core/workflows/eval-review.md": "f510e5762212dc6f", "gsd-core/workflows/eval-review.md": "e7cd5dfcf18e2458",
"gsd-core/workflows/execute-phase.md": "df3020f022405a84", "gsd-core/workflows/execute-phase.md": "1b9e1284cf788e43",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "14a27cc0828f59d3", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "14a27cc0828f59d3",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "26ee34c543926402", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "26ee34c543926402",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "362123fdf99e9980", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "362123fdf99e9980",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "a691e3afe88031b8", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "a691e3afe88031b8",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "ed1528fcbfb792a8", "gsd-core/workflows/execute-plan.md": "b294869742d456c1",
"gsd-core/workflows/explore.md": "d931b4d85a74c795", "gsd-core/workflows/explore.md": "d931b4d85a74c795",
"gsd-core/workflows/extract-learnings.md": "e9e167c718949c0b", "gsd-core/workflows/extract-learnings.md": "e9e167c718949c0b",
"gsd-core/workflows/fast.md": "c801145115755524", "gsd-core/workflows/fast.md": "c801145115755524",
"gsd-core/workflows/forensics.md": "91961b811917c5c4", "gsd-core/workflows/forensics.md": "91961b811917c5c4",
"gsd-core/workflows/graduation.md": "d1fd52bbe41dcf34", "gsd-core/workflows/graduation.md": "938c71f1e7650da0",
"gsd-core/workflows/health.md": "c622a5ad0d347d30", "gsd-core/workflows/health.md": "6ea6ceba2568909b",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "8874dac94eb68ae6", "gsd-core/workflows/help/modes/default.md": "8874dac94eb68ae6",
"gsd-core/workflows/help/modes/full.md": "a9351cf72f580a87", "gsd-core/workflows/help/modes/full.md": "a9351cf72f580a87",
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9", "gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
"gsd-core/workflows/import.md": "22483de9c9b6acda", "gsd-core/workflows/import.md": "c1c19d52b9637113",
"gsd-core/workflows/inbox.md": "91aac6360e1a8672", "gsd-core/workflows/inbox.md": "20159d4f9a1fca7f",
"gsd-core/workflows/ingest-docs.md": "af0f93dd5ac9587d", "gsd-core/workflows/ingest-docs.md": "ae6685e9171b3204",
"gsd-core/workflows/insert-phase.md": "a0537c09191121f6", "gsd-core/workflows/insert-phase.md": "a0537c09191121f6",
"gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c", "gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c",
"gsd-core/workflows/list-seeds.md": "ad1d81683e48c4e1", "gsd-core/workflows/list-seeds.md": "ad1d81683e48c4e1",
"gsd-core/workflows/list-workspaces.md": "1fe28ba52cee1394", "gsd-core/workflows/list-workspaces.md": "1fe28ba52cee1394",
"gsd-core/workflows/manager.md": "68e6e70c4ebe0986", "gsd-core/workflows/manager.md": "f0eb25349617495b",
"gsd-core/workflows/map-codebase.md": "c653fdd03ce61189", "gsd-core/workflows/map-codebase.md": "c653fdd03ce61189",
"gsd-core/workflows/milestone-summary.md": "353fffb60749d892", "gsd-core/workflows/milestone-summary.md": "353fffb60749d892",
"gsd-core/workflows/mvp-phase.md": "4d102523b5d81f95", "gsd-core/workflows/mvp-phase.md": "593faf3ec49b26d0",
"gsd-core/workflows/new-milestone.md": "ee2c8c9984c8036a", "gsd-core/workflows/new-milestone.md": "318fa26f8dbe3876",
"gsd-core/workflows/new-project.md": "6b157fbe70203cd8", "gsd-core/workflows/new-project.md": "346ab3abec6a320c",
"gsd-core/workflows/new-workspace.md": "5c78c58ad84e886b", "gsd-core/workflows/new-workspace.md": "5e4ace6da343b8a8",
"gsd-core/workflows/next.md": "8e1fa29751d96564", "gsd-core/workflows/next.md": "8e1fa29751d96564",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "42b66686b2c102cb", "gsd-core/workflows/note.md": "42b66686b2c102cb",
"gsd-core/workflows/onboard.md": "3c50ed1f1fd07619", "gsd-core/workflows/onboard.md": "0f0af11294d31715",
"gsd-core/workflows/pause-work.md": "ae2d5789a95f70fe", "gsd-core/workflows/pause-work.md": "ae2d5789a95f70fe",
"gsd-core/workflows/plan-milestone-gaps.md": "c86cdc1964256b98", "gsd-core/workflows/plan-milestone-gaps.md": "c86cdc1964256b98",
"gsd-core/workflows/plan-phase.md": "0cb80f9cb7a47d52", "gsd-core/workflows/plan-phase.md": "6bafababd9a71291",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "9607e6d03e93c1c2", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "9607e6d03e93c1c2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "62f8e4f3b475fe5f", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "62f8e4f3b475fe5f",
"gsd-core/workflows/plan-review-convergence.md": "d9c282754c05eb81", "gsd-core/workflows/plan-review-convergence.md": "d9c282754c05eb81",
"gsd-core/workflows/plant-seed.md": "f862f77fca983749", "gsd-core/workflows/plant-seed.md": "4643bc78faaf9005",
"gsd-core/workflows/pr-branch.md": "ecabd55e4eabf229", "gsd-core/workflows/pr-branch.md": "ecabd55e4eabf229",
"gsd-core/workflows/profile-user.md": "de5030437226cf2c", "gsd-core/workflows/profile-user.md": "877c2c9b3ab8742c",
"gsd-core/workflows/progress.md": "589f60eb809c0bb9", "gsd-core/workflows/progress.md": "589f60eb809c0bb9",
"gsd-core/workflows/quick.md": "fab58ce8581251fa", "gsd-core/workflows/quick.md": "58735fa1f486b74f",
"gsd-core/workflows/reapply-patches.md": "158083a310859594", "gsd-core/workflows/reapply-patches.md": "158083a310859594",
"gsd-core/workflows/remove-phase.md": "fce799aae3ab2715", "gsd-core/workflows/remove-phase.md": "fce799aae3ab2715",
"gsd-core/workflows/remove-workspace.md": "8facde381657dd71", "gsd-core/workflows/remove-workspace.md": "42029a7559f1d8fb",
"gsd-core/workflows/resume-project.md": "a0443839f1f83c2d", "gsd-core/workflows/resume-project.md": "a0443839f1f83c2d",
"gsd-core/workflows/review.md": "cde982eb704261ef", "gsd-core/workflows/review.md": "cde982eb704261ef",
"gsd-core/workflows/scan.md": "6c340b901b5d5d18", "gsd-core/workflows/scan.md": "6c340b901b5d5d18",
"gsd-core/workflows/secure-phase.md": "5284cfc143ad0e2c", "gsd-core/workflows/secure-phase.md": "07415614146d8601",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "49be159144d7f426", "gsd-core/workflows/settings-advanced.md": "49be159144d7f426",
"gsd-core/workflows/settings-integrations.md": "1dce76db0aca08a5", "gsd-core/workflows/settings-integrations.md": "75405795c8462a8a",
"gsd-core/workflows/settings.md": "9ced580679ed0255", "gsd-core/workflows/settings.md": "41c0f737bfd311fd",
"gsd-core/workflows/ship.md": "b2f16c18a7e1e19b", "gsd-core/workflows/ship.md": "7f27ba3add159c13",
"gsd-core/workflows/sketch-wrap-up.md": "f1ece50ac65ea281", "gsd-core/workflows/sketch-wrap-up.md": "f1ece50ac65ea281",
"gsd-core/workflows/sketch.md": "d5887983e62b574a", "gsd-core/workflows/sketch.md": "592283400d70317b",
"gsd-core/workflows/smart-entry.md": "47f5c5e8608e5f7a", "gsd-core/workflows/smart-entry.md": "4dc50d4af659c651",
"gsd-core/workflows/spec-phase.md": "6ace28390408475f", "gsd-core/workflows/spec-phase.md": "6ace28390408475f",
"gsd-core/workflows/spike-wrap-up.md": "367325e6d567b904", "gsd-core/workflows/spike-wrap-up.md": "367325e6d567b904",
"gsd-core/workflows/spike.md": "cdacb2887a321e11", "gsd-core/workflows/spike.md": "176cf0ecfc038581",
"gsd-core/workflows/stats.md": "49a991d0d3905a56", "gsd-core/workflows/stats.md": "49a991d0d3905a56",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "5a6759e01763c2a6", "gsd-core/workflows/thread.md": "5a6759e01763c2a6",
"gsd-core/workflows/transition.md": "bcfaad44668d07fd", "gsd-core/workflows/transition.md": "bcfaad44668d07fd",
"gsd-core/workflows/ui-phase.md": "64a49ae4ec7e11a9", "gsd-core/workflows/ui-phase.md": "0d346ebaea14d06e",
"gsd-core/workflows/ui-review.md": "2f669a3f62913703", "gsd-core/workflows/ui-review.md": "58e6ce18f29e06de",
"gsd-core/workflows/ultraplan-phase.md": "0d103bf2622436f7", "gsd-core/workflows/ultraplan-phase.md": "0d103bf2622436f7",
"gsd-core/workflows/undo.md": "791e0bf96d9a057f", "gsd-core/workflows/undo.md": "0a03405c0345fcf7",
"gsd-core/workflows/update.md": "7499bb4cb2a3ce6f", "gsd-core/workflows/update.md": "06e3a9996f1e6d32",
"gsd-core/workflows/validate-phase.md": "24be83176c7db9f9", "gsd-core/workflows/validate-phase.md": "cbd764b47c1bc8ce",
"gsd-core/workflows/verify-phase.md": "42f0fba74d069537", "gsd-core/workflows/verify-phase.md": "42f0fba74d069537",
"gsd-core/workflows/verify-work.md": "472b875c446004cd", "gsd-core/workflows/verify-work.md": "67bbb452a240dfb8",
"hooks/gsd-check-update-worker.js": "7989cc2bedd1138d", "hooks/gsd-check-update-worker.js": "7989cc2bedd1138d",
"hooks/gsd-check-update.js": "25f5ad726f76fc11", "hooks/gsd-check-update.js": "25f5ad726f76fc11",
"hooks/gsd-config-reload.js": "880b696458e85e9b", "hooks/gsd-config-reload.js": "880b696458e85e9b",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8", "gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -279,23 +280,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "485c4b6673ddf832", "gsd-core/workflows/add-backlog.md": "485c4b6673ddf832",
"gsd-core/workflows/add-phase.md": "b2c06b7ed648658c", "gsd-core/workflows/add-phase.md": "b2c06b7ed648658c",
"gsd-core/workflows/add-tests.md": "6e54f3d71a202671", "gsd-core/workflows/add-tests.md": "cb6e4492adfcc5d4",
"gsd-core/workflows/add-todo.md": "31bc520d77b14139", "gsd-core/workflows/add-todo.md": "edd50462079c77d0",
"gsd-core/workflows/ai-integration-phase.md": "d4400169618e6925", "gsd-core/workflows/ai-integration-phase.md": "9b26b4b7b6f7f51f",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa", "gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710", "gsd-core/workflows/audit-milestone.md": "9f8ec364e58d5710",
"gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405", "gsd-core/workflows/audit-uat.md": "e11db0d74c2a7405",
"gsd-core/workflows/autonomous.md": "73f429f7472c9949", "gsd-core/workflows/autonomous.md": "73f429f7472c9949",
"gsd-core/workflows/check-todos.md": "ed4b4eb12be222d7", "gsd-core/workflows/check-todos.md": "50b49013062c8552",
"gsd-core/workflows/cleanup.md": "c5f1bf186395d67d", "gsd-core/workflows/cleanup.md": "1c669fc358db3e19",
"gsd-core/workflows/code-review-fix.md": "722416b71b31c5fc", "gsd-core/workflows/code-review-fix.md": "722416b71b31c5fc",
"gsd-core/workflows/code-review.md": "3fd49c93357fe4f7", "gsd-core/workflows/code-review.md": "3fd49c93357fe4f7",
"gsd-core/workflows/complete-milestone.md": "59753bf44d4300da", "gsd-core/workflows/complete-milestone.md": "e507b10f26188186",
"gsd-core/workflows/debug.md": "a603f52749acde62", "gsd-core/workflows/debug.md": "a4ef40303a5da552",
"gsd-core/workflows/diagnose-issues.md": "5eebc4764b19c4f6", "gsd-core/workflows/diagnose-issues.md": "5eebc4764b19c4f6",
"gsd-core/workflows/discovery-phase.md": "ca7b2be46e59e862", "gsd-core/workflows/discovery-phase.md": "af5ec483093bcede",
"gsd-core/workflows/discuss-phase-assumptions.md": "3ef1df313e715387", "gsd-core/workflows/discuss-phase-assumptions.md": "f7f2237c8fced5b6",
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383", "gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
"gsd-core/workflows/discuss-phase.md": "bd4b26ba168bb51f", "gsd-core/workflows/discuss-phase.md": "bd4b26ba168bb51f",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "f8ae26ba4e07672b", "gsd-core/workflows/discuss-phase/modes/advisor.md": "f8ae26ba4e07672b",
@@ -310,88 +311,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405", "gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "04e4feee14772275", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "04e4feee14772275",
"gsd-core/workflows/do.md": "d9a889717e390f8d", "gsd-core/workflows/do.md": "ea068f5a797f2178",
"gsd-core/workflows/docs-update.md": "79afaaf19fd527cc", "gsd-core/workflows/docs-update.md": "6bca7d8fda0d1d54",
"gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a", "gsd-core/workflows/edit-phase.md": "8323bfe10faa0c0a",
"gsd-core/workflows/eval-review.md": "926eda8bbee28b23", "gsd-core/workflows/eval-review.md": "35be91cd22a9bc11",
"gsd-core/workflows/execute-phase.md": "ae91076f29981cc2", "gsd-core/workflows/execute-phase.md": "49e2f1740bf7c6b1",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "facb0e816d87a0c7", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "facb0e816d87a0c7",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "0e40eda4ae70fcab", "gsd-core/workflows/execute-plan.md": "c921c4e80a2f6314",
"gsd-core/workflows/explore.md": "14242d36d4822df6", "gsd-core/workflows/explore.md": "14242d36d4822df6",
"gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee", "gsd-core/workflows/extract-learnings.md": "d8177b0c13b7e5ee",
"gsd-core/workflows/fast.md": "41a6568b873aef99", "gsd-core/workflows/fast.md": "41a6568b873aef99",
"gsd-core/workflows/forensics.md": "c01da0178fb97b21", "gsd-core/workflows/forensics.md": "c01da0178fb97b21",
"gsd-core/workflows/graduation.md": "5cc8638dabcbfd40", "gsd-core/workflows/graduation.md": "636df3c43e9b3bca",
"gsd-core/workflows/health.md": "064b3668d5d9569a", "gsd-core/workflows/health.md": "2be3dcec0d4865df",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0", "gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "08101a965254f10e", "gsd-core/workflows/help/modes/full.md": "08101a965254f10e",
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69", "gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
"gsd-core/workflows/import.md": "8038d1e702e4894b", "gsd-core/workflows/import.md": "9e9e83e5549eaf0f",
"gsd-core/workflows/inbox.md": "a073396097c89c01", "gsd-core/workflows/inbox.md": "f2b38be09a2dee08",
"gsd-core/workflows/ingest-docs.md": "ae86b5460794c835", "gsd-core/workflows/ingest-docs.md": "753f8d4fb37d9227",
"gsd-core/workflows/insert-phase.md": "964ca91863a8749a", "gsd-core/workflows/insert-phase.md": "964ca91863a8749a",
"gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3", "gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3",
"gsd-core/workflows/list-seeds.md": "5a46337f55ae8453", "gsd-core/workflows/list-seeds.md": "5a46337f55ae8453",
"gsd-core/workflows/list-workspaces.md": "418570fbc8b938da", "gsd-core/workflows/list-workspaces.md": "418570fbc8b938da",
"gsd-core/workflows/manager.md": "f3d17d2ae11ec7b5", "gsd-core/workflows/manager.md": "2fadda5e3ebd3c4e",
"gsd-core/workflows/map-codebase.md": "ec7fd85d7bbc5a29", "gsd-core/workflows/map-codebase.md": "ec7fd85d7bbc5a29",
"gsd-core/workflows/milestone-summary.md": "25775eeb4e2747be", "gsd-core/workflows/milestone-summary.md": "25775eeb4e2747be",
"gsd-core/workflows/mvp-phase.md": "a97708464f103300", "gsd-core/workflows/mvp-phase.md": "b2f6ba5de4c96180",
"gsd-core/workflows/new-milestone.md": "2cf08b4be93028c1", "gsd-core/workflows/new-milestone.md": "189272989a4a9a5f",
"gsd-core/workflows/new-project.md": "0737b8140906a9cc", "gsd-core/workflows/new-project.md": "e9c1edc83893c17e",
"gsd-core/workflows/new-workspace.md": "f58d6a8c0c7796a1", "gsd-core/workflows/new-workspace.md": "00162d8c32428d55",
"gsd-core/workflows/next.md": "888297a0b21888ea", "gsd-core/workflows/next.md": "888297a0b21888ea",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "f8c2842a2217f776", "gsd-core/workflows/note.md": "f8c2842a2217f776",
"gsd-core/workflows/onboard.md": "78b288089305dc46", "gsd-core/workflows/onboard.md": "c8d9795021d4fce6",
"gsd-core/workflows/pause-work.md": "a6e5336c409fdc8b", "gsd-core/workflows/pause-work.md": "a6e5336c409fdc8b",
"gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e", "gsd-core/workflows/plan-milestone-gaps.md": "1b43d12812f7bc1e",
"gsd-core/workflows/plan-phase.md": "11e490f7ed5a6947", "gsd-core/workflows/plan-phase.md": "d16b1c70ec0022a1",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "f10975692cbd036e",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "232c93a9aed224fe", "gsd-core/workflows/plan-review-convergence.md": "232c93a9aed224fe",
"gsd-core/workflows/plant-seed.md": "ffa5774304243649", "gsd-core/workflows/plant-seed.md": "107bfe8f5b2a7843",
"gsd-core/workflows/pr-branch.md": "ab157cd8e49621dd", "gsd-core/workflows/pr-branch.md": "ab157cd8e49621dd",
"gsd-core/workflows/profile-user.md": "203ebe3f8f3876a8", "gsd-core/workflows/profile-user.md": "645f81d80c4775c4",
"gsd-core/workflows/progress.md": "172e4168e326ca61", "gsd-core/workflows/progress.md": "172e4168e326ca61",
"gsd-core/workflows/quick.md": "4ef7da71a596604a", "gsd-core/workflows/quick.md": "4c659f61d01e2118",
"gsd-core/workflows/reapply-patches.md": "becf9728cdb124c4", "gsd-core/workflows/reapply-patches.md": "becf9728cdb124c4",
"gsd-core/workflows/remove-phase.md": "ada8a0546c686483", "gsd-core/workflows/remove-phase.md": "ada8a0546c686483",
"gsd-core/workflows/remove-workspace.md": "fc83f362a2d0a1b7", "gsd-core/workflows/remove-workspace.md": "f5dc82bb63e2efa4",
"gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96", "gsd-core/workflows/resume-project.md": "7f8dc986f0f35d96",
"gsd-core/workflows/review.md": "6033fab6d070c993", "gsd-core/workflows/review.md": "6033fab6d070c993",
"gsd-core/workflows/scan.md": "1890c846b98690bb", "gsd-core/workflows/scan.md": "1890c846b98690bb",
"gsd-core/workflows/secure-phase.md": "4977cf9e0462745b", "gsd-core/workflows/secure-phase.md": "7e1613050966ae28",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "edd858cd6cfddaf1", "gsd-core/workflows/settings-advanced.md": "edd858cd6cfddaf1",
"gsd-core/workflows/settings-integrations.md": "3ea8095d5fad891b", "gsd-core/workflows/settings-integrations.md": "3ec4f77c421b87b4",
"gsd-core/workflows/settings.md": "1925ecc2225c2216", "gsd-core/workflows/settings.md": "0e3cf91e952b48a2",
"gsd-core/workflows/ship.md": "cb5f2f25ca80bd3b", "gsd-core/workflows/ship.md": "aab2ad926f4613c6",
"gsd-core/workflows/sketch-wrap-up.md": "888c0548e63197b3", "gsd-core/workflows/sketch-wrap-up.md": "888c0548e63197b3",
"gsd-core/workflows/sketch.md": "34a0c10fa56af7ea", "gsd-core/workflows/sketch.md": "75ffbd233fd9a762",
"gsd-core/workflows/smart-entry.md": "7ffe4fdb93935400", "gsd-core/workflows/smart-entry.md": "2ad5b63a9deea0ce",
"gsd-core/workflows/spec-phase.md": "a5f3de15eeb7ce72", "gsd-core/workflows/spec-phase.md": "a5f3de15eeb7ce72",
"gsd-core/workflows/spike-wrap-up.md": "458230d4d7c44b09", "gsd-core/workflows/spike-wrap-up.md": "458230d4d7c44b09",
"gsd-core/workflows/spike.md": "8e63427fc146b45c", "gsd-core/workflows/spike.md": "30d080d99b2555ca",
"gsd-core/workflows/stats.md": "e7852c5d8f2b05a9", "gsd-core/workflows/stats.md": "e7852c5d8f2b05a9",
"gsd-core/workflows/sync-skills.md": "dc7b8b015afa4b3b", "gsd-core/workflows/sync-skills.md": "dc7b8b015afa4b3b",
"gsd-core/workflows/thread.md": "3b2c560d7189576d", "gsd-core/workflows/thread.md": "3b2c560d7189576d",
"gsd-core/workflows/transition.md": "590128488fe2ad66", "gsd-core/workflows/transition.md": "590128488fe2ad66",
"gsd-core/workflows/ui-phase.md": "47ae6541bbfdf2b6", "gsd-core/workflows/ui-phase.md": "41d0be8d22f5c263",
"gsd-core/workflows/ui-review.md": "0fb289914252d53e", "gsd-core/workflows/ui-review.md": "d496e6999f62b8b7",
"gsd-core/workflows/ultraplan-phase.md": "29245758b8497fa0", "gsd-core/workflows/ultraplan-phase.md": "29245758b8497fa0",
"gsd-core/workflows/undo.md": "7cd2153f8b15e30d", "gsd-core/workflows/undo.md": "774615a01c20e4a3",
"gsd-core/workflows/update.md": "07dc2fba78ad1865", "gsd-core/workflows/update.md": "af593557256e1f84",
"gsd-core/workflows/validate-phase.md": "52b9fa8a9533b444", "gsd-core/workflows/validate-phase.md": "041ac495974cddd4",
"gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9", "gsd-core/workflows/verify-phase.md": "b8cca6ef3be502b9",
"gsd-core/workflows/verify-work.md": "9b4bda9a8ff3fa7d", "gsd-core/workflows/verify-work.md": "431b447d58529cfd",
"hooks/gsd-check-update-worker.js": "c992bbad91d0e994", "hooks/gsd-check-update-worker.js": "c992bbad91d0e994",
"hooks/gsd-check-update.js": "fdd77abe7ef26a2d", "hooks/gsd-check-update.js": "fdd77abe7ef26a2d",
"hooks/gsd-config-reload.js": "96546e0e8bb47904", "hooks/gsd-config-reload.js": "96546e0e8bb47904",

View File

@@ -153,6 +153,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242", "gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8", "gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -272,23 +273,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "953314cdfef56bc4", "gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/ai-integration-phase.md": "0d6d7183ae189fbe",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa", "gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "3835762c3147a927", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564", "gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "7e5683728ef33707", "gsd-core/workflows/autonomous.md": "7e5683728ef33707",
"gsd-core/workflows/check-todos.md": "bdeaf43f9c61e0cc", "gsd-core/workflows/check-todos.md": "f39e3251a78f6f5a",
"gsd-core/workflows/cleanup.md": "0daa2f2720c111f1", "gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075", "gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
"gsd-core/workflows/code-review.md": "c877ad812b4a511e", "gsd-core/workflows/code-review.md": "c877ad812b4a511e",
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2", "gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "79c2f7dc12815e30", "gsd-core/workflows/debug.md": "a2d04237fbbce72b",
"gsd-core/workflows/diagnose-issues.md": "fe8951e98446ad79", "gsd-core/workflows/diagnose-issues.md": "fe8951e98446ad79",
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761", "gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88", "gsd-core/workflows/discuss-phase-assumptions.md": "185419d61517727b",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a", "gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "0c0465ba668adb33", "gsd-core/workflows/discuss-phase.md": "0c0465ba668adb33",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653", "gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
@@ -303,88 +304,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "7512dd1892f118a1", "gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9", "gsd-core/workflows/docs-update.md": "b5cdf1c35043cf7b",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04", "gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130", "gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
"gsd-core/workflows/execute-phase.md": "ae2c1d3f9518bee5", "gsd-core/workflows/execute-phase.md": "e9c9c9691bbc24e2",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "045ad8cb48444e57", "gsd-core/workflows/execute-plan.md": "3399bf5491e85a7c",
"gsd-core/workflows/explore.md": "6c04f2e658d93261", "gsd-core/workflows/explore.md": "6c04f2e658d93261",
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4", "gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3", "gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913", "gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "47f1594c88c08501", "gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "107e3c72e76d9535", "gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0", "gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50", "gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "91e115f058b6d3cf", "gsd-core/workflows/help/modes/full.md": "91e115f058b6d3cf",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d", "gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "12c6cbcbdecb6392", "gsd-core/workflows/import.md": "31a0f3a33154939f",
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26", "gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5", "gsd-core/workflows/ingest-docs.md": "e5c63b5e539f6e17",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b", "gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3", "gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65", "gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453", "gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "3ba7a3e8213c4b23", "gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2", "gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043", "gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74", "gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5", "gsd-core/workflows/new-milestone.md": "f6029bcb535bee69",
"gsd-core/workflows/new-project.md": "c1d822aa1c81d390", "gsd-core/workflows/new-project.md": "032fd380752ad3ef",
"gsd-core/workflows/new-workspace.md": "017688423110ed66", "gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "13fb800f2472d970", "gsd-core/workflows/next.md": "13fb800f2472d970",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619", "gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "c9aeef0741af0ac5", "gsd-core/workflows/plan-phase.md": "a41a135a82c2f307",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8", "gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8",
"gsd-core/workflows/plant-seed.md": "10b92ae08a6fdede", "gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b", "gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "5abfae83739fa978", "gsd-core/workflows/profile-user.md": "37af07833c81a0bd",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84", "gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "2a9476454b69b4ff", "gsd-core/workflows/quick.md": "de56bbe44cb67d52",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89", "gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999", "gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c", "gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4", "gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "f1fbefbd64bd890e", "gsd-core/workflows/review.md": "f1fbefbd64bd890e",
"gsd-core/workflows/scan.md": "e6424af05656725a", "gsd-core/workflows/scan.md": "e6424af05656725a",
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7", "gsd-core/workflows/secure-phase.md": "f8b9436c35372281",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44", "gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "70515c5838fb9826", "gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "d96ddf01fb85e61e", "gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "4642ebbaa38f8cc2", "gsd-core/workflows/ship.md": "09056fccdf20e41b",
"gsd-core/workflows/sketch-wrap-up.md": "b767a1d3db129a8a", "gsd-core/workflows/sketch-wrap-up.md": "b767a1d3db129a8a",
"gsd-core/workflows/sketch.md": "88cfdf4edcf222ab", "gsd-core/workflows/sketch.md": "5f0a7d3640cdff54",
"gsd-core/workflows/smart-entry.md": "449238eb94abe187", "gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c", "gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "da0dcb252c54fa82", "gsd-core/workflows/spike-wrap-up.md": "da0dcb252c54fa82",
"gsd-core/workflows/spike.md": "7813e120577282d4", "gsd-core/workflows/spike.md": "a51eaa05bd40e3cf",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2", "gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c", "gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7", "gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "d02054ab9f01abb4", "gsd-core/workflows/ui-phase.md": "9bcc048f577d7ea5",
"gsd-core/workflows/ui-review.md": "7acfc485526d064b", "gsd-core/workflows/ui-review.md": "202c4e399cd95719",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d", "gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "96d2775f008b3a85", "gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "6718e0632bba26ca", "gsd-core/workflows/update.md": "eab6ce95ff7bdee1",
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607", "gsd-core/workflows/validate-phase.md": "2e19caff07397728",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf", "gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72", "gsd-core/workflows/verify-work.md": "5b92e34f1d0da848",
"scripts/changeset/README.md": "86ff89331dfd94b2", "scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271", "scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132", "scripts/changeset/github-release-notes.cjs": "795677f0c009b132",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8", "gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -279,23 +280,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "08289088a88d410f", "gsd-core/workflows/add-backlog.md": "08289088a88d410f",
"gsd-core/workflows/add-phase.md": "739e34f6122e1e61", "gsd-core/workflows/add-phase.md": "739e34f6122e1e61",
"gsd-core/workflows/add-tests.md": "b4deb88c74d491c7", "gsd-core/workflows/add-tests.md": "582b03df9cb71fe0",
"gsd-core/workflows/add-todo.md": "36b6d7fec9631ec7", "gsd-core/workflows/add-todo.md": "2ccd1c97a3636c36",
"gsd-core/workflows/ai-integration-phase.md": "f8288f0434d17c84", "gsd-core/workflows/ai-integration-phase.md": "be951047fcdf6f67",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "3aaafee8857dcfab", "gsd-core/workflows/audit-fix.md": "3aaafee8857dcfab",
"gsd-core/workflows/audit-milestone.md": "8bd0b730de08d1a8", "gsd-core/workflows/audit-milestone.md": "8bd0b730de08d1a8",
"gsd-core/workflows/audit-uat.md": "c800099fab1e1c1b", "gsd-core/workflows/audit-uat.md": "c800099fab1e1c1b",
"gsd-core/workflows/autonomous.md": "6cb0c014f5f56965", "gsd-core/workflows/autonomous.md": "6cb0c014f5f56965",
"gsd-core/workflows/check-todos.md": "6526b64ee88c7d2e", "gsd-core/workflows/check-todos.md": "795eb611182bf038",
"gsd-core/workflows/cleanup.md": "94d771d26f62dc86", "gsd-core/workflows/cleanup.md": "9d510a45aec81ba1",
"gsd-core/workflows/code-review-fix.md": "adb9388bb157610c", "gsd-core/workflows/code-review-fix.md": "adb9388bb157610c",
"gsd-core/workflows/code-review.md": "016d1c9cbabf04f2", "gsd-core/workflows/code-review.md": "016d1c9cbabf04f2",
"gsd-core/workflows/complete-milestone.md": "614299b2c08e66c3", "gsd-core/workflows/complete-milestone.md": "9482dadd0f8902d2",
"gsd-core/workflows/debug.md": "63ea176f51f2eeb7", "gsd-core/workflows/debug.md": "0055f60eb85d8d8f",
"gsd-core/workflows/diagnose-issues.md": "1d1aa1d919bc4d03", "gsd-core/workflows/diagnose-issues.md": "1d1aa1d919bc4d03",
"gsd-core/workflows/discovery-phase.md": "724408336596c50c", "gsd-core/workflows/discovery-phase.md": "0ef23f38adfb0e6e",
"gsd-core/workflows/discuss-phase-assumptions.md": "92e43cd12200c610", "gsd-core/workflows/discuss-phase-assumptions.md": "f582dc980face737",
"gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383", "gsd-core/workflows/discuss-phase-power.md": "5c0d1ca6abda0383",
"gsd-core/workflows/discuss-phase.md": "3a62a8d4c374c69f", "gsd-core/workflows/discuss-phase.md": "3a62a8d4c374c69f",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "83ca3ea4fac785af", "gsd-core/workflows/discuss-phase/modes/advisor.md": "83ca3ea4fac785af",
@@ -310,88 +311,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405", "gsd-core/workflows/discuss-phase/templates/context.md": "9804674fccada405",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "04e4feee14772275", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "04e4feee14772275",
"gsd-core/workflows/do.md": "85c4c8cb7aa8af87", "gsd-core/workflows/do.md": "532afe82bbf9f775",
"gsd-core/workflows/docs-update.md": "850366c2ef8fb780", "gsd-core/workflows/docs-update.md": "4c7ea896438d9d45",
"gsd-core/workflows/edit-phase.md": "1876c855fb0a0a39", "gsd-core/workflows/edit-phase.md": "1876c855fb0a0a39",
"gsd-core/workflows/eval-review.md": "5394694d29ad7543", "gsd-core/workflows/eval-review.md": "1973f08d0eb34159",
"gsd-core/workflows/execute-phase.md": "83e7df675b781f8f", "gsd-core/workflows/execute-phase.md": "6148ab536d9210cc",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "1804215577f1ad35", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "1804215577f1ad35",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "c4cba01539f0368a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "c4cba01539f0368a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "21f4d9b3abc334ce", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "21f4d9b3abc334ce",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "ac4a07ff7e42190d", "gsd-core/workflows/execute-plan.md": "cf668f02001b9778",
"gsd-core/workflows/explore.md": "7f5f9231cfd3089b", "gsd-core/workflows/explore.md": "7f5f9231cfd3089b",
"gsd-core/workflows/extract-learnings.md": "92b3c0979604b7d0", "gsd-core/workflows/extract-learnings.md": "92b3c0979604b7d0",
"gsd-core/workflows/fast.md": "12187b242e6af970", "gsd-core/workflows/fast.md": "12187b242e6af970",
"gsd-core/workflows/forensics.md": "9354cb830152fd28", "gsd-core/workflows/forensics.md": "9354cb830152fd28",
"gsd-core/workflows/graduation.md": "13080b5c24eec27d", "gsd-core/workflows/graduation.md": "589b9b303cff8643",
"gsd-core/workflows/health.md": "a91e0a8e5d20b2e9", "gsd-core/workflows/health.md": "05447688e0b332c5",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0", "gsd-core/workflows/help/modes/default.md": "be05e56b2c5ee2c0",
"gsd-core/workflows/help/modes/full.md": "7e68200aeb086535", "gsd-core/workflows/help/modes/full.md": "7e68200aeb086535",
"gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69", "gsd-core/workflows/help/modes/topic.md": "0bf9ab39d7044d69",
"gsd-core/workflows/import.md": "03527dcd27f9f7e7", "gsd-core/workflows/import.md": "15d09b825badf7ed",
"gsd-core/workflows/inbox.md": "a073396097c89c01", "gsd-core/workflows/inbox.md": "7e46f5d6b0694074",
"gsd-core/workflows/ingest-docs.md": "9066e37d34b2691e", "gsd-core/workflows/ingest-docs.md": "d6e090893e6083d9",
"gsd-core/workflows/insert-phase.md": "858224afbf977c14", "gsd-core/workflows/insert-phase.md": "858224afbf977c14",
"gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3", "gsd-core/workflows/list-phase-assumptions.md": "e7b5e35c9452e3b3",
"gsd-core/workflows/list-seeds.md": "9b05425fa7d24827", "gsd-core/workflows/list-seeds.md": "9b05425fa7d24827",
"gsd-core/workflows/list-workspaces.md": "dc6d30036c6dc426", "gsd-core/workflows/list-workspaces.md": "dc6d30036c6dc426",
"gsd-core/workflows/manager.md": "b652b27ca9c6451a", "gsd-core/workflows/manager.md": "eda80c0d3d32dbf6",
"gsd-core/workflows/map-codebase.md": "ab67f493aac12fa3", "gsd-core/workflows/map-codebase.md": "ab67f493aac12fa3",
"gsd-core/workflows/milestone-summary.md": "321ea8a6a206f38f", "gsd-core/workflows/milestone-summary.md": "321ea8a6a206f38f",
"gsd-core/workflows/mvp-phase.md": "b4d688baa4c60dfc", "gsd-core/workflows/mvp-phase.md": "94360741a1d8d7ce",
"gsd-core/workflows/new-milestone.md": "11c0d446a3320ef5", "gsd-core/workflows/new-milestone.md": "70cc7e68313ce1fd",
"gsd-core/workflows/new-project.md": "4a4a4f0010b3e1a0", "gsd-core/workflows/new-project.md": "e3691650a7483f10",
"gsd-core/workflows/new-workspace.md": "3d82392388ee24c7", "gsd-core/workflows/new-workspace.md": "53f8abf8baca9345",
"gsd-core/workflows/next.md": "6719a37b8ce2ac4f", "gsd-core/workflows/next.md": "6719a37b8ce2ac4f",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "0d1374f2a2257858", "gsd-core/workflows/note.md": "0d1374f2a2257858",
"gsd-core/workflows/onboard.md": "102556e1715c01b9", "gsd-core/workflows/onboard.md": "ca3a59a2e36b829a",
"gsd-core/workflows/pause-work.md": "70c72beca55c080a", "gsd-core/workflows/pause-work.md": "70c72beca55c080a",
"gsd-core/workflows/plan-milestone-gaps.md": "0a9dacd422cd9533", "gsd-core/workflows/plan-milestone-gaps.md": "0a9dacd422cd9533",
"gsd-core/workflows/plan-phase.md": "b133e7c08a39aad0", "gsd-core/workflows/plan-phase.md": "9dc1b4d1e7c0878f",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "3a09141de7f3dedb", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "3a09141de7f3dedb",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "e9de7a96bbfff261",
"gsd-core/workflows/plan-review-convergence.md": "f91c297dce1253a2", "gsd-core/workflows/plan-review-convergence.md": "f91c297dce1253a2",
"gsd-core/workflows/plant-seed.md": "b8dad652e31c2318", "gsd-core/workflows/plant-seed.md": "ac8bbe2d9d52f2c1",
"gsd-core/workflows/pr-branch.md": "929b7cb0c99c7b9e", "gsd-core/workflows/pr-branch.md": "929b7cb0c99c7b9e",
"gsd-core/workflows/profile-user.md": "248d59a31948e0ed", "gsd-core/workflows/profile-user.md": "9275d5895237b801",
"gsd-core/workflows/progress.md": "c3d7149133d571a9", "gsd-core/workflows/progress.md": "c3d7149133d571a9",
"gsd-core/workflows/quick.md": "f2641bad95c6614e", "gsd-core/workflows/quick.md": "2b83359cc9a39d17",
"gsd-core/workflows/reapply-patches.md": "a0e9b53f90abceb2", "gsd-core/workflows/reapply-patches.md": "a0e9b53f90abceb2",
"gsd-core/workflows/remove-phase.md": "dea4661e8f89596f", "gsd-core/workflows/remove-phase.md": "dea4661e8f89596f",
"gsd-core/workflows/remove-workspace.md": "446847e71aa52504", "gsd-core/workflows/remove-workspace.md": "21a8581add5f31ae",
"gsd-core/workflows/resume-project.md": "ad9f06a10bab8cc0", "gsd-core/workflows/resume-project.md": "ad9f06a10bab8cc0",
"gsd-core/workflows/review.md": "fbe68c9f86385274", "gsd-core/workflows/review.md": "fbe68c9f86385274",
"gsd-core/workflows/scan.md": "63cf8d9067610704", "gsd-core/workflows/scan.md": "63cf8d9067610704",
"gsd-core/workflows/secure-phase.md": "71e6e689e80288ec", "gsd-core/workflows/secure-phase.md": "7ad9fd285facdef8",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "252b0d3edc315339", "gsd-core/workflows/settings-advanced.md": "252b0d3edc315339",
"gsd-core/workflows/settings-integrations.md": "d1711a95f44fdbde", "gsd-core/workflows/settings-integrations.md": "1c3997dc6953e7eb",
"gsd-core/workflows/settings.md": "2e42ee34c791378a", "gsd-core/workflows/settings.md": "a244850ce2f7b8dd",
"gsd-core/workflows/ship.md": "9e773a94f4abf0e6", "gsd-core/workflows/ship.md": "b3dedb0506ba3ab6",
"gsd-core/workflows/sketch-wrap-up.md": "681800323681c5c6", "gsd-core/workflows/sketch-wrap-up.md": "681800323681c5c6",
"gsd-core/workflows/sketch.md": "fcb7af914159ef7b", "gsd-core/workflows/sketch.md": "da82c9be7074545c",
"gsd-core/workflows/smart-entry.md": "2a253fe437496eea", "gsd-core/workflows/smart-entry.md": "c4c780d3aa2124f8",
"gsd-core/workflows/spec-phase.md": "5c4a3001095ca722", "gsd-core/workflows/spec-phase.md": "5c4a3001095ca722",
"gsd-core/workflows/spike-wrap-up.md": "30a73aa19a1db271", "gsd-core/workflows/spike-wrap-up.md": "30a73aa19a1db271",
"gsd-core/workflows/spike.md": "f8b07d411473560a", "gsd-core/workflows/spike.md": "7462ab0428468932",
"gsd-core/workflows/stats.md": "846cd2808461ccdc", "gsd-core/workflows/stats.md": "846cd2808461ccdc",
"gsd-core/workflows/sync-skills.md": "7e2c138cdbef4282", "gsd-core/workflows/sync-skills.md": "7e2c138cdbef4282",
"gsd-core/workflows/thread.md": "82652edb1883af59", "gsd-core/workflows/thread.md": "82652edb1883af59",
"gsd-core/workflows/transition.md": "372b6fc7c0c68a89", "gsd-core/workflows/transition.md": "372b6fc7c0c68a89",
"gsd-core/workflows/ui-phase.md": "4d11cc725ebfe597", "gsd-core/workflows/ui-phase.md": "bef76916ad5844df",
"gsd-core/workflows/ui-review.md": "149f39373eee5c92", "gsd-core/workflows/ui-review.md": "5be4a2ea3dc52222",
"gsd-core/workflows/ultraplan-phase.md": "f4bad8de3fdb49fa", "gsd-core/workflows/ultraplan-phase.md": "f4bad8de3fdb49fa",
"gsd-core/workflows/undo.md": "0bba5e7f6196c894", "gsd-core/workflows/undo.md": "bbb91a18ee896975",
"gsd-core/workflows/update.md": "71b6cd852f38b4bc", "gsd-core/workflows/update.md": "7af09036dc7b5f98",
"gsd-core/workflows/validate-phase.md": "434d9927c65f2bba", "gsd-core/workflows/validate-phase.md": "4c3ed60b16a5e91f",
"gsd-core/workflows/verify-phase.md": "73025aa5d8bf7bd5", "gsd-core/workflows/verify-phase.md": "73025aa5d8bf7bd5",
"gsd-core/workflows/verify-work.md": "528fa7529501ee10", "gsd-core/workflows/verify-work.md": "c9b631068931ad15",
"hooks/gsd-check-update-worker.js": "385fb7c67810baf6", "hooks/gsd-check-update-worker.js": "385fb7c67810baf6",
"hooks/gsd-check-update.js": "4549451414ffa7d7", "hooks/gsd-check-update.js": "4549451414ffa7d7",
"hooks/gsd-config-reload.js": "96546e0e8bb47904", "hooks/gsd-config-reload.js": "96546e0e8bb47904",

View File

@@ -56,6 +56,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242", "gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8", "gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -175,23 +176,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "953314cdfef56bc4", "gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/ai-integration-phase.md": "0d6d7183ae189fbe",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa", "gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "3835762c3147a927", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564", "gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "7e5683728ef33707", "gsd-core/workflows/autonomous.md": "7e5683728ef33707",
"gsd-core/workflows/check-todos.md": "bdeaf43f9c61e0cc", "gsd-core/workflows/check-todos.md": "f39e3251a78f6f5a",
"gsd-core/workflows/cleanup.md": "0daa2f2720c111f1", "gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075", "gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
"gsd-core/workflows/code-review.md": "c877ad812b4a511e", "gsd-core/workflows/code-review.md": "c877ad812b4a511e",
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2", "gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "79c2f7dc12815e30", "gsd-core/workflows/debug.md": "a2d04237fbbce72b",
"gsd-core/workflows/diagnose-issues.md": "f6feda980d2e5f02", "gsd-core/workflows/diagnose-issues.md": "f6feda980d2e5f02",
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761", "gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88", "gsd-core/workflows/discuss-phase-assumptions.md": "185419d61517727b",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a", "gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "acfe2baa4c8bebbe", "gsd-core/workflows/discuss-phase.md": "acfe2baa4c8bebbe",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653", "gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
@@ -206,88 +207,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "7512dd1892f118a1", "gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9", "gsd-core/workflows/docs-update.md": "b5cdf1c35043cf7b",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04", "gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130", "gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
"gsd-core/workflows/execute-phase.md": "60d61e7d2332e889", "gsd-core/workflows/execute-phase.md": "043ed0d7fb5452dc",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "6412aa2edd5a4452", "gsd-core/workflows/execute-plan.md": "9af2868516c0e118",
"gsd-core/workflows/explore.md": "6c04f2e658d93261", "gsd-core/workflows/explore.md": "6c04f2e658d93261",
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4", "gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3", "gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913", "gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "47f1594c88c08501", "gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "107e3c72e76d9535", "gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0", "gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50", "gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "99d5387021de656f", "gsd-core/workflows/help/modes/full.md": "99d5387021de656f",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d", "gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "12c6cbcbdecb6392", "gsd-core/workflows/import.md": "31a0f3a33154939f",
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26", "gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5", "gsd-core/workflows/ingest-docs.md": "e5c63b5e539f6e17",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b", "gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3", "gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65", "gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453", "gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "3ba7a3e8213c4b23", "gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2", "gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043", "gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74", "gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5", "gsd-core/workflows/new-milestone.md": "f6029bcb535bee69",
"gsd-core/workflows/new-project.md": "52c773fc5de47b6c", "gsd-core/workflows/new-project.md": "fb7a89c14665ae0e",
"gsd-core/workflows/new-workspace.md": "017688423110ed66", "gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "13fb800f2472d970", "gsd-core/workflows/next.md": "13fb800f2472d970",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619", "gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "09cc50e25bc8293a", "gsd-core/workflows/plan-phase.md": "2b7d29129452a804",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8", "gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8",
"gsd-core/workflows/plant-seed.md": "10b92ae08a6fdede", "gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b", "gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "1bac7f69142801ef", "gsd-core/workflows/profile-user.md": "e5c0e0a0dc54dccb",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84", "gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "c00a6574ff650a86", "gsd-core/workflows/quick.md": "c583a8cbc0e29f2c",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89", "gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999", "gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c", "gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4", "gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "f1fbefbd64bd890e", "gsd-core/workflows/review.md": "f1fbefbd64bd890e",
"gsd-core/workflows/scan.md": "e6424af05656725a", "gsd-core/workflows/scan.md": "e6424af05656725a",
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7", "gsd-core/workflows/secure-phase.md": "f8b9436c35372281",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44", "gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "70515c5838fb9826", "gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "d96ddf01fb85e61e", "gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "4642ebbaa38f8cc2", "gsd-core/workflows/ship.md": "09056fccdf20e41b",
"gsd-core/workflows/sketch-wrap-up.md": "838c701bd072ae73", "gsd-core/workflows/sketch-wrap-up.md": "838c701bd072ae73",
"gsd-core/workflows/sketch.md": "c7725562b3efd311", "gsd-core/workflows/sketch.md": "70df86d9d8eeba0f",
"gsd-core/workflows/smart-entry.md": "449238eb94abe187", "gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c", "gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "0b24057c340a8a17", "gsd-core/workflows/spike-wrap-up.md": "0b24057c340a8a17",
"gsd-core/workflows/spike.md": "9134cdc3b75282c9", "gsd-core/workflows/spike.md": "c6e13cbfbf28d128",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2", "gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c", "gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7", "gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "d77fa19403a4684b", "gsd-core/workflows/ui-phase.md": "7aa19da8c4258143",
"gsd-core/workflows/ui-review.md": "7acfc485526d064b", "gsd-core/workflows/ui-review.md": "202c4e399cd95719",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d", "gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "96d2775f008b3a85", "gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "7e69d278375a2493", "gsd-core/workflows/update.md": "2873b4beea839838",
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607", "gsd-core/workflows/validate-phase.md": "2e19caff07397728",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf", "gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72", "gsd-core/workflows/verify-work.md": "5b92e34f1d0da848",
"hooks/gsd-check-update-worker.js": "55376b5b9335a580", "hooks/gsd-check-update-worker.js": "55376b5b9335a580",
"hooks/gsd-check-update.js": "a89562537a41f83d", "hooks/gsd-check-update.js": "a89562537a41f83d",
"hooks/gsd-config-reload.js": "96546e0e8bb47904", "hooks/gsd-config-reload.js": "96546e0e8bb47904",

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "8c2e5a596401dd33", "gsd-core/references/execute-phase-between-wave-reset.md": "8c2e5a596401dd33",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "41d8123374d3838b", "gsd-core/references/execute-phase-wave-guard.md": "41d8123374d3838b",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -208,23 +209,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "cee41d5fc52d4e37", "gsd-core/workflows/add-backlog.md": "cee41d5fc52d4e37",
"gsd-core/workflows/add-phase.md": "395fb0f9f0385073", "gsd-core/workflows/add-phase.md": "395fb0f9f0385073",
"gsd-core/workflows/add-tests.md": "7cd945118e83246e", "gsd-core/workflows/add-tests.md": "1f95484dbcd26015",
"gsd-core/workflows/add-todo.md": "83426131a56b8e77", "gsd-core/workflows/add-todo.md": "38dc89ce5080120f",
"gsd-core/workflows/ai-integration-phase.md": "dd58ee9044bdf3c2", "gsd-core/workflows/ai-integration-phase.md": "6b6cdfae4c2e9968",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "83896ff28c48b182", "gsd-core/workflows/audit-fix.md": "83896ff28c48b182",
"gsd-core/workflows/audit-milestone.md": "78dbc1e8c4499d7d", "gsd-core/workflows/audit-milestone.md": "78dbc1e8c4499d7d",
"gsd-core/workflows/audit-uat.md": "97d441d07e7972b3", "gsd-core/workflows/audit-uat.md": "97d441d07e7972b3",
"gsd-core/workflows/autonomous.md": "3014ff90115f0daf", "gsd-core/workflows/autonomous.md": "3014ff90115f0daf",
"gsd-core/workflows/check-todos.md": "ec8c22920f6b2df1", "gsd-core/workflows/check-todos.md": "52d3497948db7709",
"gsd-core/workflows/cleanup.md": "6a18b165752e3087", "gsd-core/workflows/cleanup.md": "48aa7291ace5d413",
"gsd-core/workflows/code-review-fix.md": "f3725ae9d685bed2", "gsd-core/workflows/code-review-fix.md": "f3725ae9d685bed2",
"gsd-core/workflows/code-review.md": "657f309742b1a4c9", "gsd-core/workflows/code-review.md": "657f309742b1a4c9",
"gsd-core/workflows/complete-milestone.md": "40085d32b15805c8", "gsd-core/workflows/complete-milestone.md": "69925bcfd955d31e",
"gsd-core/workflows/debug.md": "76b028848be60ffe", "gsd-core/workflows/debug.md": "50c592d07681fcb7",
"gsd-core/workflows/diagnose-issues.md": "5092f9003e7a9582", "gsd-core/workflows/diagnose-issues.md": "5092f9003e7a9582",
"gsd-core/workflows/discovery-phase.md": "6161c60d752d0058", "gsd-core/workflows/discovery-phase.md": "6ad9da4779d7b6b0",
"gsd-core/workflows/discuss-phase-assumptions.md": "18712f78bb960ec8", "gsd-core/workflows/discuss-phase-assumptions.md": "3cafc868a8bb4a73",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6", "gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "8644b72386a51241", "gsd-core/workflows/discuss-phase.md": "8644b72386a51241",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "3102430dfad9c012", "gsd-core/workflows/discuss-phase/modes/advisor.md": "3102430dfad9c012",
@@ -239,88 +240,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "68f2607de614157d", "gsd-core/workflows/do.md": "2e784b2d6a02ea94",
"gsd-core/workflows/docs-update.md": "45d2f0d173c84e07", "gsd-core/workflows/docs-update.md": "db6e70dddaf019ad",
"gsd-core/workflows/edit-phase.md": "0fb5e0123cfc6f36", "gsd-core/workflows/edit-phase.md": "0fb5e0123cfc6f36",
"gsd-core/workflows/eval-review.md": "6dee8a1e40ececd4", "gsd-core/workflows/eval-review.md": "88431952699d9fa6",
"gsd-core/workflows/execute-phase.md": "c06b2630c14ebac3", "gsd-core/workflows/execute-phase.md": "782d4ca8c8439afd",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "36af8d91e4ae8b9c", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "36af8d91e4ae8b9c",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "0b04cc2dcab61107", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "0b04cc2dcab61107",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "9cbf100b17f4bcb1", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "9cbf100b17f4bcb1",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "25ef51fc9900f4b4", "gsd-core/workflows/execute-plan.md": "46514264818b30c9",
"gsd-core/workflows/explore.md": "e1a83a8982532e5b", "gsd-core/workflows/explore.md": "e1a83a8982532e5b",
"gsd-core/workflows/extract-learnings.md": "dd4fdb88605de49a", "gsd-core/workflows/extract-learnings.md": "dd4fdb88605de49a",
"gsd-core/workflows/fast.md": "93ed453edddd8c0c", "gsd-core/workflows/fast.md": "93ed453edddd8c0c",
"gsd-core/workflows/forensics.md": "82800a3138ac1da9", "gsd-core/workflows/forensics.md": "82800a3138ac1da9",
"gsd-core/workflows/graduation.md": "40401655435beee3", "gsd-core/workflows/graduation.md": "5d5004de086db1c8",
"gsd-core/workflows/health.md": "043de14edb6a9723", "gsd-core/workflows/health.md": "c6616e2893731db4",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "7ca77077085452f5", "gsd-core/workflows/help/modes/default.md": "7ca77077085452f5",
"gsd-core/workflows/help/modes/full.md": "6022991e0f56fd1d", "gsd-core/workflows/help/modes/full.md": "6022991e0f56fd1d",
"gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9", "gsd-core/workflows/help/modes/topic.md": "6e42db16f1568be9",
"gsd-core/workflows/import.md": "9e29736463899f31", "gsd-core/workflows/import.md": "3bcc9194fffcd259",
"gsd-core/workflows/inbox.md": "91aac6360e1a8672", "gsd-core/workflows/inbox.md": "e8a5db7443c524d6",
"gsd-core/workflows/ingest-docs.md": "5d7946a7557d8a05", "gsd-core/workflows/ingest-docs.md": "f1ef200aba5f1831",
"gsd-core/workflows/insert-phase.md": "00a34b792c323959", "gsd-core/workflows/insert-phase.md": "00a34b792c323959",
"gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c", "gsd-core/workflows/list-phase-assumptions.md": "2a6b6a5acfb7742c",
"gsd-core/workflows/list-seeds.md": "8d6e1b5d85f64c6f", "gsd-core/workflows/list-seeds.md": "8d6e1b5d85f64c6f",
"gsd-core/workflows/list-workspaces.md": "5e434933a3db695c", "gsd-core/workflows/list-workspaces.md": "5e434933a3db695c",
"gsd-core/workflows/manager.md": "176ca710b4be4860", "gsd-core/workflows/manager.md": "745a2b5080767882",
"gsd-core/workflows/map-codebase.md": "b88010a34b89a07f", "gsd-core/workflows/map-codebase.md": "b88010a34b89a07f",
"gsd-core/workflows/milestone-summary.md": "97ddfc40c6bce906", "gsd-core/workflows/milestone-summary.md": "97ddfc40c6bce906",
"gsd-core/workflows/mvp-phase.md": "5ca64695120d250c", "gsd-core/workflows/mvp-phase.md": "9d226159c2aaae3d",
"gsd-core/workflows/new-milestone.md": "be7839cd48260215", "gsd-core/workflows/new-milestone.md": "08b9b9ce005be669",
"gsd-core/workflows/new-project.md": "ef9676c1473f2073", "gsd-core/workflows/new-project.md": "c07c1dce7b937308",
"gsd-core/workflows/new-workspace.md": "0d59bb987430003e", "gsd-core/workflows/new-workspace.md": "0b93348ced44810e",
"gsd-core/workflows/next.md": "c13515a80c20d37d", "gsd-core/workflows/next.md": "c13515a80c20d37d",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "42b66686b2c102cb", "gsd-core/workflows/note.md": "42b66686b2c102cb",
"gsd-core/workflows/onboard.md": "3c50ed1f1fd07619", "gsd-core/workflows/onboard.md": "0f0af11294d31715",
"gsd-core/workflows/pause-work.md": "be33f84dc1d4822f", "gsd-core/workflows/pause-work.md": "be33f84dc1d4822f",
"gsd-core/workflows/plan-milestone-gaps.md": "d98e98486123eb97", "gsd-core/workflows/plan-milestone-gaps.md": "d98e98486123eb97",
"gsd-core/workflows/plan-phase.md": "3edc831cfa8ad1cb", "gsd-core/workflows/plan-phase.md": "9b436899cbc7bbca",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "4099ef6d0868de60",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "c22ff5ea46de665a", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "c22ff5ea46de665a",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "d050d8d551ed1756", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "d050d8d551ed1756",
"gsd-core/workflows/plan-review-convergence.md": "7b887180677f11ac", "gsd-core/workflows/plan-review-convergence.md": "7b887180677f11ac",
"gsd-core/workflows/plant-seed.md": "0a92ba12993ac261", "gsd-core/workflows/plant-seed.md": "6b7375b5d52be7c7",
"gsd-core/workflows/pr-branch.md": "cef0f65b16d500b4", "gsd-core/workflows/pr-branch.md": "cef0f65b16d500b4",
"gsd-core/workflows/profile-user.md": "263c0693563d98da", "gsd-core/workflows/profile-user.md": "bb02367a5fc8653c",
"gsd-core/workflows/progress.md": "475eb60a2e739eed", "gsd-core/workflows/progress.md": "475eb60a2e739eed",
"gsd-core/workflows/quick.md": "f5de70665fbea4fa", "gsd-core/workflows/quick.md": "6a3caf7b8e608711",
"gsd-core/workflows/reapply-patches.md": "de0ee8acfe7245b2", "gsd-core/workflows/reapply-patches.md": "de0ee8acfe7245b2",
"gsd-core/workflows/remove-phase.md": "e8ae4fbbfac700f0", "gsd-core/workflows/remove-phase.md": "e8ae4fbbfac700f0",
"gsd-core/workflows/remove-workspace.md": "4ac64de862dc650e", "gsd-core/workflows/remove-workspace.md": "ae520235f4d1f4a5",
"gsd-core/workflows/resume-project.md": "7f20769f302e5427", "gsd-core/workflows/resume-project.md": "7f20769f302e5427",
"gsd-core/workflows/review.md": "b3548b43dcf1fb4e", "gsd-core/workflows/review.md": "b3548b43dcf1fb4e",
"gsd-core/workflows/scan.md": "9ebe1d469171af0d", "gsd-core/workflows/scan.md": "9ebe1d469171af0d",
"gsd-core/workflows/secure-phase.md": "ef7b5ad194b687bf", "gsd-core/workflows/secure-phase.md": "e5e8bf031e95cf1d",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "5e05212fb5cba531", "gsd-core/workflows/settings-advanced.md": "5e05212fb5cba531",
"gsd-core/workflows/settings-integrations.md": "29c5de27fbbb18e9", "gsd-core/workflows/settings-integrations.md": "c9fb71d26fd93527",
"gsd-core/workflows/settings.md": "26b9b7979d3a5747", "gsd-core/workflows/settings.md": "83a13de5926ead14",
"gsd-core/workflows/ship.md": "15420ac2a46fc203", "gsd-core/workflows/ship.md": "8a4fe0b69f5c72f9",
"gsd-core/workflows/sketch-wrap-up.md": "89e0eab2af946b04", "gsd-core/workflows/sketch-wrap-up.md": "89e0eab2af946b04",
"gsd-core/workflows/sketch.md": "483387542d6fc3af", "gsd-core/workflows/sketch.md": "6e68bbff5c1e6db0",
"gsd-core/workflows/smart-entry.md": "d309710bcabd4675", "gsd-core/workflows/smart-entry.md": "072ac6efe8aafc38",
"gsd-core/workflows/spec-phase.md": "546b3a8eb1a97013", "gsd-core/workflows/spec-phase.md": "546b3a8eb1a97013",
"gsd-core/workflows/spike-wrap-up.md": "fe04cb3d30dcbc6c", "gsd-core/workflows/spike-wrap-up.md": "fe04cb3d30dcbc6c",
"gsd-core/workflows/spike.md": "fad28f2ecf2dac52", "gsd-core/workflows/spike.md": "c83108b751b70307",
"gsd-core/workflows/stats.md": "89a08155b92f4a2d", "gsd-core/workflows/stats.md": "89a08155b92f4a2d",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "f24b6454c69d064a", "gsd-core/workflows/thread.md": "f24b6454c69d064a",
"gsd-core/workflows/transition.md": "a30cba2ad6920641", "gsd-core/workflows/transition.md": "a30cba2ad6920641",
"gsd-core/workflows/ui-phase.md": "041cb6bcb496881d", "gsd-core/workflows/ui-phase.md": "f8b59f98a0647e43",
"gsd-core/workflows/ui-review.md": "8b989f372684851f", "gsd-core/workflows/ui-review.md": "2c1e1cf0177e4884",
"gsd-core/workflows/ultraplan-phase.md": "49921383982474e0", "gsd-core/workflows/ultraplan-phase.md": "49921383982474e0",
"gsd-core/workflows/undo.md": "791e0bf96d9a057f", "gsd-core/workflows/undo.md": "c433a552dab136dc",
"gsd-core/workflows/update.md": "b34cb866152d4de3", "gsd-core/workflows/update.md": "ef757d600e333764",
"gsd-core/workflows/validate-phase.md": "dfb9bd178ee1b67b", "gsd-core/workflows/validate-phase.md": "2eb4bb28d6d62cb7",
"gsd-core/workflows/verify-phase.md": "7d8e241350136ca0", "gsd-core/workflows/verify-phase.md": "7d8e241350136ca0",
"gsd-core/workflows/verify-work.md": "14c856aab2e4c099", "gsd-core/workflows/verify-work.md": "98757838ee328f5d",
"hooks/gsd-check-update-worker.js": "4bb354044e0dff91", "hooks/gsd-check-update-worker.js": "4bb354044e0dff91",
"hooks/gsd-check-update.js": "d2065cb3e725a42a", "hooks/gsd-check-update.js": "d2065cb3e725a42a",
"hooks/gsd-config-reload.js": "4f52b8a0120bb1b8", "hooks/gsd-config-reload.js": "4f52b8a0120bb1b8",

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "7a1aa0ad7963f809", "gsd-core/references/execute-phase-between-wave-reset.md": "7a1aa0ad7963f809",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "973a3a6a5db7e449", "gsd-core/references/execute-phase-wave-guard.md": "973a3a6a5db7e449",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -208,23 +209,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1851e97996d445d5", "gsd-core/workflows/add-backlog.md": "1851e97996d445d5",
"gsd-core/workflows/add-phase.md": "7403cf0bc93a9699", "gsd-core/workflows/add-phase.md": "7403cf0bc93a9699",
"gsd-core/workflows/add-tests.md": "8ad08d29415f8f43", "gsd-core/workflows/add-tests.md": "0eb1496a1afdff33",
"gsd-core/workflows/add-todo.md": "fefa923ed596225f", "gsd-core/workflows/add-todo.md": "bc8dcc0faf1e46f8",
"gsd-core/workflows/ai-integration-phase.md": "197ebcc6abb0b873", "gsd-core/workflows/ai-integration-phase.md": "a94affaaeba7a2c2",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "eb92f0de6ccc23a5", "gsd-core/workflows/audit-fix.md": "eb92f0de6ccc23a5",
"gsd-core/workflows/audit-milestone.md": "ebec95af8f68f2ed", "gsd-core/workflows/audit-milestone.md": "ebec95af8f68f2ed",
"gsd-core/workflows/audit-uat.md": "6e768b1c208a787a", "gsd-core/workflows/audit-uat.md": "6e768b1c208a787a",
"gsd-core/workflows/autonomous.md": "c482645c5d1ead46", "gsd-core/workflows/autonomous.md": "c482645c5d1ead46",
"gsd-core/workflows/check-todos.md": "0dda8236355e8c9c", "gsd-core/workflows/check-todos.md": "a0006366ced03b06",
"gsd-core/workflows/cleanup.md": "82f65f5214ecd748", "gsd-core/workflows/cleanup.md": "ad625e9596e04cda",
"gsd-core/workflows/code-review-fix.md": "f2761f7f8c4a5674", "gsd-core/workflows/code-review-fix.md": "f2761f7f8c4a5674",
"gsd-core/workflows/code-review.md": "41f0c51d8c4e7732", "gsd-core/workflows/code-review.md": "41f0c51d8c4e7732",
"gsd-core/workflows/complete-milestone.md": "6e918b72bd885426", "gsd-core/workflows/complete-milestone.md": "98951eb5783fe72c",
"gsd-core/workflows/debug.md": "3cf5251e5ef0a372", "gsd-core/workflows/debug.md": "9d1c54eaa27af604",
"gsd-core/workflows/diagnose-issues.md": "8e3d340b79e25616", "gsd-core/workflows/diagnose-issues.md": "8e3d340b79e25616",
"gsd-core/workflows/discovery-phase.md": "b32b6197b66c9a13", "gsd-core/workflows/discovery-phase.md": "7644e2d890a21212",
"gsd-core/workflows/discuss-phase-assumptions.md": "e376b1cf29379df4", "gsd-core/workflows/discuss-phase-assumptions.md": "2308a4637a4a3f0a",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6", "gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "4509657816c5566a", "gsd-core/workflows/discuss-phase.md": "4509657816c5566a",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "c9cd7db62e76ebcb", "gsd-core/workflows/discuss-phase/modes/advisor.md": "c9cd7db62e76ebcb",
@@ -239,88 +240,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "5131e8796ba9d99b", "gsd-core/workflows/do.md": "6b56aa4a44ca61fc",
"gsd-core/workflows/docs-update.md": "f13571f08e083356", "gsd-core/workflows/docs-update.md": "141185e54648df02",
"gsd-core/workflows/edit-phase.md": "7facd0faa33c8cad", "gsd-core/workflows/edit-phase.md": "7facd0faa33c8cad",
"gsd-core/workflows/eval-review.md": "37d545d4f0db4927", "gsd-core/workflows/eval-review.md": "90a29a4fa0cdd947",
"gsd-core/workflows/execute-phase.md": "4a8b484097cae892", "gsd-core/workflows/execute-phase.md": "67c7f93f3cef43f1",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "c985a30317a1aa6b", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "c985a30317a1aa6b",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7d30384e9bf82664", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7d30384e9bf82664",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "90efedae3decaffe", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "90efedae3decaffe",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "1a409bc80100b6ee", "gsd-core/workflows/execute-plan.md": "5dbc77ed09ebebe3",
"gsd-core/workflows/explore.md": "8a5437aa0c239c38", "gsd-core/workflows/explore.md": "8a5437aa0c239c38",
"gsd-core/workflows/extract-learnings.md": "3fcc858b20d0d0e6", "gsd-core/workflows/extract-learnings.md": "3fcc858b20d0d0e6",
"gsd-core/workflows/fast.md": "0f05b1e008ac2fc2", "gsd-core/workflows/fast.md": "0f05b1e008ac2fc2",
"gsd-core/workflows/forensics.md": "665546666547875d", "gsd-core/workflows/forensics.md": "665546666547875d",
"gsd-core/workflows/graduation.md": "1ca877cda258a5de", "gsd-core/workflows/graduation.md": "defc0dfcbfeb68d2",
"gsd-core/workflows/health.md": "1f9fd2deea45896f", "gsd-core/workflows/health.md": "d4cec6ef023e9833",
"gsd-core/workflows/help.md": "08e1349950c5602a", "gsd-core/workflows/help.md": "08e1349950c5602a",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "ed7368e0d1b8644a", "gsd-core/workflows/help/modes/default.md": "ed7368e0d1b8644a",
"gsd-core/workflows/help/modes/full.md": "01a34fdde96bf138", "gsd-core/workflows/help/modes/full.md": "01a34fdde96bf138",
"gsd-core/workflows/help/modes/topic.md": "8a5344e56fa64ab9", "gsd-core/workflows/help/modes/topic.md": "8a5344e56fa64ab9",
"gsd-core/workflows/import.md": "93707f52cf6f1b19", "gsd-core/workflows/import.md": "9ebddd4142200a3e",
"gsd-core/workflows/inbox.md": "e9ea37b2d46dc5b4", "gsd-core/workflows/inbox.md": "1abe5a3114bbf1c3",
"gsd-core/workflows/ingest-docs.md": "0f9f6b7080690244", "gsd-core/workflows/ingest-docs.md": "4cb4166402041f37",
"gsd-core/workflows/insert-phase.md": "753fa719f0d41d76", "gsd-core/workflows/insert-phase.md": "753fa719f0d41d76",
"gsd-core/workflows/list-phase-assumptions.md": "eb986c301d59f620", "gsd-core/workflows/list-phase-assumptions.md": "eb986c301d59f620",
"gsd-core/workflows/list-seeds.md": "74ec072a74f8fdfe", "gsd-core/workflows/list-seeds.md": "74ec072a74f8fdfe",
"gsd-core/workflows/list-workspaces.md": "886e99378a3d19d9", "gsd-core/workflows/list-workspaces.md": "886e99378a3d19d9",
"gsd-core/workflows/manager.md": "212a50d3f65fff21", "gsd-core/workflows/manager.md": "fd834a4236bd1b2e",
"gsd-core/workflows/map-codebase.md": "a95bb77eee37a13d", "gsd-core/workflows/map-codebase.md": "a95bb77eee37a13d",
"gsd-core/workflows/milestone-summary.md": "a0063cfbe08f2250", "gsd-core/workflows/milestone-summary.md": "a0063cfbe08f2250",
"gsd-core/workflows/mvp-phase.md": "8ed9f4552350ede8", "gsd-core/workflows/mvp-phase.md": "c4e49ad83e1413ef",
"gsd-core/workflows/new-milestone.md": "528c034cb2d12244", "gsd-core/workflows/new-milestone.md": "a8338124bfd3f529",
"gsd-core/workflows/new-project.md": "2284fc43b216f715", "gsd-core/workflows/new-project.md": "cf4b47721efffcff",
"gsd-core/workflows/new-workspace.md": "6b6fbad18d30f783", "gsd-core/workflows/new-workspace.md": "89e5df89d54a2f47",
"gsd-core/workflows/next.md": "2163195861877de5", "gsd-core/workflows/next.md": "2163195861877de5",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "acc9130fb1e94f0b", "gsd-core/workflows/note.md": "acc9130fb1e94f0b",
"gsd-core/workflows/onboard.md": "61f111302af0f404", "gsd-core/workflows/onboard.md": "015695a7e9cf59bc",
"gsd-core/workflows/pause-work.md": "c20d267e28ce92f0", "gsd-core/workflows/pause-work.md": "c20d267e28ce92f0",
"gsd-core/workflows/plan-milestone-gaps.md": "26db7b9329b7ddc8", "gsd-core/workflows/plan-milestone-gaps.md": "26db7b9329b7ddc8",
"gsd-core/workflows/plan-phase.md": "2cecda2750562a11", "gsd-core/workflows/plan-phase.md": "5209ca67d77d19e3",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "778b73a8db6f7c32", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "778b73a8db6f7c32",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "619946c879f33b9d", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "619946c879f33b9d",
"gsd-core/workflows/plan-review-convergence.md": "610d816af89b1b16", "gsd-core/workflows/plan-review-convergence.md": "610d816af89b1b16",
"gsd-core/workflows/plant-seed.md": "856ad565b2eb0c47", "gsd-core/workflows/plant-seed.md": "622f246ea8e163fa",
"gsd-core/workflows/pr-branch.md": "79fd55b88ea2db9c", "gsd-core/workflows/pr-branch.md": "79fd55b88ea2db9c",
"gsd-core/workflows/profile-user.md": "672821e6b1266645", "gsd-core/workflows/profile-user.md": "aa0737531d487f10",
"gsd-core/workflows/progress.md": "1fe098b4d559ba55", "gsd-core/workflows/progress.md": "1fe098b4d559ba55",
"gsd-core/workflows/quick.md": "95ad5630aca7f1e2", "gsd-core/workflows/quick.md": "27c49529f7d0ea16",
"gsd-core/workflows/reapply-patches.md": "21b38c374f19fd78", "gsd-core/workflows/reapply-patches.md": "21b38c374f19fd78",
"gsd-core/workflows/remove-phase.md": "a46c2fe853bf4e86", "gsd-core/workflows/remove-phase.md": "a46c2fe853bf4e86",
"gsd-core/workflows/remove-workspace.md": "ae0e1c6d4438d663", "gsd-core/workflows/remove-workspace.md": "8ddc5f04f7c48d6c",
"gsd-core/workflows/resume-project.md": "f242e4c8aba18ea2", "gsd-core/workflows/resume-project.md": "f242e4c8aba18ea2",
"gsd-core/workflows/review.md": "35d023ff48e3827f", "gsd-core/workflows/review.md": "35d023ff48e3827f",
"gsd-core/workflows/scan.md": "a3ce29ceb62b8192", "gsd-core/workflows/scan.md": "a3ce29ceb62b8192",
"gsd-core/workflows/secure-phase.md": "4a647aec1e4d2dfe", "gsd-core/workflows/secure-phase.md": "85112be3547bced4",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "39e66386f6c48025", "gsd-core/workflows/settings-advanced.md": "39e66386f6c48025",
"gsd-core/workflows/settings-integrations.md": "f8f756709ec02363", "gsd-core/workflows/settings-integrations.md": "8bb1c2bdebbc56e6",
"gsd-core/workflows/settings.md": "44b10c59215633b8", "gsd-core/workflows/settings.md": "db6121276c6f63a4",
"gsd-core/workflows/ship.md": "58d9fd3ee13ce1c2", "gsd-core/workflows/ship.md": "6c97dde34a8edcd7",
"gsd-core/workflows/sketch-wrap-up.md": "dbec602d104cb951", "gsd-core/workflows/sketch-wrap-up.md": "dbec602d104cb951",
"gsd-core/workflows/sketch.md": "44ff275150b6d045", "gsd-core/workflows/sketch.md": "6a6e543f2b667278",
"gsd-core/workflows/smart-entry.md": "d8018578571f08d5", "gsd-core/workflows/smart-entry.md": "5631e2e70b02abba",
"gsd-core/workflows/spec-phase.md": "7b8873b0cd3eb9d7", "gsd-core/workflows/spec-phase.md": "7b8873b0cd3eb9d7",
"gsd-core/workflows/spike-wrap-up.md": "6fe876cb87603bc3", "gsd-core/workflows/spike-wrap-up.md": "6fe876cb87603bc3",
"gsd-core/workflows/spike.md": "c042a437baaf10ad", "gsd-core/workflows/spike.md": "0644cd621b35bedb",
"gsd-core/workflows/stats.md": "e4f84542fb5721ef", "gsd-core/workflows/stats.md": "e4f84542fb5721ef",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "0582c6be8a78bbd8", "gsd-core/workflows/thread.md": "0582c6be8a78bbd8",
"gsd-core/workflows/transition.md": "45dc17cc631dc485", "gsd-core/workflows/transition.md": "45dc17cc631dc485",
"gsd-core/workflows/ui-phase.md": "0c4c1a26a4297ac3", "gsd-core/workflows/ui-phase.md": "7af7af6e7019fd10",
"gsd-core/workflows/ui-review.md": "4e70afbfd5601853", "gsd-core/workflows/ui-review.md": "c68b0f33d377ad45",
"gsd-core/workflows/ultraplan-phase.md": "77b58ef8af5209bd", "gsd-core/workflows/ultraplan-phase.md": "77b58ef8af5209bd",
"gsd-core/workflows/undo.md": "59b8baa54efc4110", "gsd-core/workflows/undo.md": "0222476f90d97de3",
"gsd-core/workflows/update.md": "1f935251fca1f276", "gsd-core/workflows/update.md": "a633cf9f44595c58",
"gsd-core/workflows/validate-phase.md": "58fd1a0a679d7115", "gsd-core/workflows/validate-phase.md": "d20bdb66ebe213fd",
"gsd-core/workflows/verify-phase.md": "101bf5a6e15f0b04", "gsd-core/workflows/verify-phase.md": "101bf5a6e15f0b04",
"gsd-core/workflows/verify-work.md": "0b9e6ea0ad0f8c9c", "gsd-core/workflows/verify-work.md": "0d527b54ed7f82e6",
"scripts/changeset/README.md": "86ff89331dfd94b2", "scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271", "scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132", "scripts/changeset/github-release-notes.cjs": "795677f0c009b132",

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "1587345770b19c7f", "gsd-core/references/execute-phase-between-wave-reset.md": "1587345770b19c7f",
"gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e", "gsd-core/references/execute-phase-context-guard.md": "a5a1058d35806a8e",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "96485eccd4606e54", "gsd-core/references/execute-phase-wave-guard.md": "96485eccd4606e54",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -208,23 +209,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "61169973a10b1321", "gsd-core/workflows/add-backlog.md": "61169973a10b1321",
"gsd-core/workflows/add-phase.md": "78cca7f86793f7f8", "gsd-core/workflows/add-phase.md": "78cca7f86793f7f8",
"gsd-core/workflows/add-tests.md": "d51e69bb433535a4", "gsd-core/workflows/add-tests.md": "4a244c69af35ede3",
"gsd-core/workflows/add-todo.md": "50d17053c6cfbc31", "gsd-core/workflows/add-todo.md": "21cdcf699aac8c64",
"gsd-core/workflows/ai-integration-phase.md": "e556fe979752c52b", "gsd-core/workflows/ai-integration-phase.md": "ead319c879215ec7",
"gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c", "gsd-core/workflows/analyze-dependencies.md": "77aff48f97fa6f1c",
"gsd-core/workflows/audit-fix.md": "f12182fa57f92cb5", "gsd-core/workflows/audit-fix.md": "f12182fa57f92cb5",
"gsd-core/workflows/audit-milestone.md": "868db5a8f5d55040", "gsd-core/workflows/audit-milestone.md": "868db5a8f5d55040",
"gsd-core/workflows/audit-uat.md": "d496e39402e160de", "gsd-core/workflows/audit-uat.md": "d496e39402e160de",
"gsd-core/workflows/autonomous.md": "fe7bb7c978f305a2", "gsd-core/workflows/autonomous.md": "fe7bb7c978f305a2",
"gsd-core/workflows/check-todos.md": "afc840fceb07bf99", "gsd-core/workflows/check-todos.md": "32364179c84869a3",
"gsd-core/workflows/cleanup.md": "93c14107979a4428", "gsd-core/workflows/cleanup.md": "da44b987853e1a74",
"gsd-core/workflows/code-review-fix.md": "b99b1f20bb27c291", "gsd-core/workflows/code-review-fix.md": "b99b1f20bb27c291",
"gsd-core/workflows/code-review.md": "a89512ce6c30693c", "gsd-core/workflows/code-review.md": "a89512ce6c30693c",
"gsd-core/workflows/complete-milestone.md": "f463bf4e86ac26f6", "gsd-core/workflows/complete-milestone.md": "3324ec6da5856f21",
"gsd-core/workflows/debug.md": "381eb8a8e610d82a", "gsd-core/workflows/debug.md": "8faee21b508c4577",
"gsd-core/workflows/diagnose-issues.md": "dbe0fdc2fc23097c", "gsd-core/workflows/diagnose-issues.md": "dbe0fdc2fc23097c",
"gsd-core/workflows/discovery-phase.md": "7dcf150998559c11", "gsd-core/workflows/discovery-phase.md": "313c3a5213449309",
"gsd-core/workflows/discuss-phase-assumptions.md": "b091b3d3e580dd29", "gsd-core/workflows/discuss-phase-assumptions.md": "f28f53d11104c818",
"gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6", "gsd-core/workflows/discuss-phase-power.md": "290c0d83d783f9f6",
"gsd-core/workflows/discuss-phase.md": "ce4e6abce9cb2d4e", "gsd-core/workflows/discuss-phase.md": "ce4e6abce9cb2d4e",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "cb49f485c4a1f09e", "gsd-core/workflows/discuss-phase/modes/advisor.md": "cb49f485c4a1f09e",
@@ -239,88 +240,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "cd5d01c9ef84ab73", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "cd5d01c9ef84ab73",
"gsd-core/workflows/do.md": "e2b848547e43c7a5", "gsd-core/workflows/do.md": "c2ee0bb845bc1cf1",
"gsd-core/workflows/docs-update.md": "70f73cc8c27e0ca0", "gsd-core/workflows/docs-update.md": "a7b78ce2f5404160",
"gsd-core/workflows/edit-phase.md": "c0ae7d0063f3e789", "gsd-core/workflows/edit-phase.md": "c0ae7d0063f3e789",
"gsd-core/workflows/eval-review.md": "b28be79ef29f16fd", "gsd-core/workflows/eval-review.md": "713de00ea5326988",
"gsd-core/workflows/execute-phase.md": "3989e6302807b826", "gsd-core/workflows/execute-phase.md": "a0b5283f992532a2",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "47ae5482f8e64100", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "47ae5482f8e64100",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "fb4497767cdf73a3", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "fb4497767cdf73a3",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "c54d55fad3ab5263", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "c54d55fad3ab5263",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "864931070aedf894", "gsd-core/workflows/execute-plan.md": "885ed41edf53e94b",
"gsd-core/workflows/explore.md": "04e461ff8159a24e", "gsd-core/workflows/explore.md": "04e461ff8159a24e",
"gsd-core/workflows/extract-learnings.md": "af793bdf4ffd1c8a", "gsd-core/workflows/extract-learnings.md": "af793bdf4ffd1c8a",
"gsd-core/workflows/fast.md": "b03b9f595892479a", "gsd-core/workflows/fast.md": "b03b9f595892479a",
"gsd-core/workflows/forensics.md": "3d1ce16b5f605592", "gsd-core/workflows/forensics.md": "3d1ce16b5f605592",
"gsd-core/workflows/graduation.md": "a766039ff6ca653f", "gsd-core/workflows/graduation.md": "0783b074a1c7013b",
"gsd-core/workflows/health.md": "7b19d6e2c0357c3e", "gsd-core/workflows/health.md": "b629995ffabf5386",
"gsd-core/workflows/help.md": "08e1349950c5602a", "gsd-core/workflows/help.md": "08e1349950c5602a",
"gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3", "gsd-core/workflows/help/modes/brief.md": "fa2675516b40e2e3",
"gsd-core/workflows/help/modes/default.md": "6a253f1756f74e95", "gsd-core/workflows/help/modes/default.md": "6a253f1756f74e95",
"gsd-core/workflows/help/modes/full.md": "670392a80cbcbd7d", "gsd-core/workflows/help/modes/full.md": "670392a80cbcbd7d",
"gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c", "gsd-core/workflows/help/modes/topic.md": "cee80e0adfa3b06c",
"gsd-core/workflows/import.md": "757e310c6a5cefad", "gsd-core/workflows/import.md": "3df83dccd78ae0a6",
"gsd-core/workflows/inbox.md": "797c287852eb8957", "gsd-core/workflows/inbox.md": "556b5a10c580ebad",
"gsd-core/workflows/ingest-docs.md": "657708e6aa00d107", "gsd-core/workflows/ingest-docs.md": "d73700225c86fdf0",
"gsd-core/workflows/insert-phase.md": "9aac75665c3a0ee8", "gsd-core/workflows/insert-phase.md": "9aac75665c3a0ee8",
"gsd-core/workflows/list-phase-assumptions.md": "eb986c301d59f620", "gsd-core/workflows/list-phase-assumptions.md": "eb986c301d59f620",
"gsd-core/workflows/list-seeds.md": "39162bbefe932b3d", "gsd-core/workflows/list-seeds.md": "39162bbefe932b3d",
"gsd-core/workflows/list-workspaces.md": "6950fb740a1e96ab", "gsd-core/workflows/list-workspaces.md": "6950fb740a1e96ab",
"gsd-core/workflows/manager.md": "fc1e8daaf8d40bf0", "gsd-core/workflows/manager.md": "10e895f5b83168fc",
"gsd-core/workflows/map-codebase.md": "ba6f267cb754ed31", "gsd-core/workflows/map-codebase.md": "ba6f267cb754ed31",
"gsd-core/workflows/milestone-summary.md": "1fdbae19ad06a0a3", "gsd-core/workflows/milestone-summary.md": "1fdbae19ad06a0a3",
"gsd-core/workflows/mvp-phase.md": "e3c4cade4fe69408", "gsd-core/workflows/mvp-phase.md": "0b22d99b2f3aee0b",
"gsd-core/workflows/new-milestone.md": "a07bf1c998a99a33", "gsd-core/workflows/new-milestone.md": "5c18f0a011875574",
"gsd-core/workflows/new-project.md": "f4ff85b9a6fc52aa", "gsd-core/workflows/new-project.md": "e8aa253804ec15dc",
"gsd-core/workflows/new-workspace.md": "8c2b60fbbf241e03", "gsd-core/workflows/new-workspace.md": "b503e947ab08ab96",
"gsd-core/workflows/next.md": "d48cea140a5153cb", "gsd-core/workflows/next.md": "d48cea140a5153cb",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "1c1e466c764e3deb", "gsd-core/workflows/note.md": "1c1e466c764e3deb",
"gsd-core/workflows/onboard.md": "20c28136423d40ac", "gsd-core/workflows/onboard.md": "7d0c7449b84c7997",
"gsd-core/workflows/pause-work.md": "93fcc1c845da6396", "gsd-core/workflows/pause-work.md": "93fcc1c845da6396",
"gsd-core/workflows/plan-milestone-gaps.md": "7880866ee1caf923", "gsd-core/workflows/plan-milestone-gaps.md": "7880866ee1caf923",
"gsd-core/workflows/plan-phase.md": "4a8e4d1886efd959", "gsd-core/workflows/plan-phase.md": "870aff8ccfe7b1a4",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "e06ccd4d4c0703fb",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "80b1ba493a9a967f", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "80b1ba493a9a967f",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3fed4740a91d0443", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "3fed4740a91d0443",
"gsd-core/workflows/plan-review-convergence.md": "27dcce3dbca22e3d", "gsd-core/workflows/plan-review-convergence.md": "27dcce3dbca22e3d",
"gsd-core/workflows/plant-seed.md": "6cf61f540cdbd8b9", "gsd-core/workflows/plant-seed.md": "caa8fef75821b24c",
"gsd-core/workflows/pr-branch.md": "acd59f915d018ad4", "gsd-core/workflows/pr-branch.md": "acd59f915d018ad4",
"gsd-core/workflows/profile-user.md": "c4313672b81b5bcd", "gsd-core/workflows/profile-user.md": "33b150468a6789db",
"gsd-core/workflows/progress.md": "3e4ac518362ba665", "gsd-core/workflows/progress.md": "3e4ac518362ba665",
"gsd-core/workflows/quick.md": "baff92603ade7489", "gsd-core/workflows/quick.md": "8c485cc76a42d8fc",
"gsd-core/workflows/reapply-patches.md": "d449a23d3acf6379", "gsd-core/workflows/reapply-patches.md": "d449a23d3acf6379",
"gsd-core/workflows/remove-phase.md": "e7a6af429b36e77b", "gsd-core/workflows/remove-phase.md": "e7a6af429b36e77b",
"gsd-core/workflows/remove-workspace.md": "b5e60fbb33b3e33a", "gsd-core/workflows/remove-workspace.md": "30ca05fe4a3efc25",
"gsd-core/workflows/resume-project.md": "82cfe1b8cb17c085", "gsd-core/workflows/resume-project.md": "82cfe1b8cb17c085",
"gsd-core/workflows/review.md": "805bea46bed56bd8", "gsd-core/workflows/review.md": "805bea46bed56bd8",
"gsd-core/workflows/scan.md": "389025e963d0e502", "gsd-core/workflows/scan.md": "389025e963d0e502",
"gsd-core/workflows/secure-phase.md": "185a15d389951e6e", "gsd-core/workflows/secure-phase.md": "666828983e5dd51f",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "2f86ec7b998f9485", "gsd-core/workflows/settings-advanced.md": "2f86ec7b998f9485",
"gsd-core/workflows/settings-integrations.md": "b082fc518b484c07", "gsd-core/workflows/settings-integrations.md": "159d0ae32b511129",
"gsd-core/workflows/settings.md": "002eb0ce3c10c741", "gsd-core/workflows/settings.md": "26fff45b86d827aa",
"gsd-core/workflows/ship.md": "63ea5e85cbd33058", "gsd-core/workflows/ship.md": "7682321e294a2574",
"gsd-core/workflows/sketch-wrap-up.md": "10063f56c2c7f141", "gsd-core/workflows/sketch-wrap-up.md": "10063f56c2c7f141",
"gsd-core/workflows/sketch.md": "25c1f8f7acfb1da9", "gsd-core/workflows/sketch.md": "c15716376df41c97",
"gsd-core/workflows/smart-entry.md": "bd81482cb6a7ac53", "gsd-core/workflows/smart-entry.md": "3fed94530109124b",
"gsd-core/workflows/spec-phase.md": "744faedd273da0f7", "gsd-core/workflows/spec-phase.md": "744faedd273da0f7",
"gsd-core/workflows/spike-wrap-up.md": "8029ca4effb5b716", "gsd-core/workflows/spike-wrap-up.md": "8029ca4effb5b716",
"gsd-core/workflows/spike.md": "a94af5171bb9d2ce", "gsd-core/workflows/spike.md": "d3190af9c3f57260",
"gsd-core/workflows/stats.md": "d58325fc3fb8d1b6", "gsd-core/workflows/stats.md": "d58325fc3fb8d1b6",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "d83a0d0bd0f94c4c", "gsd-core/workflows/thread.md": "d83a0d0bd0f94c4c",
"gsd-core/workflows/transition.md": "5e2c96544e9981ed", "gsd-core/workflows/transition.md": "5e2c96544e9981ed",
"gsd-core/workflows/ui-phase.md": "829285b180dd7b9e", "gsd-core/workflows/ui-phase.md": "e6494e1f4a886fa9",
"gsd-core/workflows/ui-review.md": "dca8100a43161ea7", "gsd-core/workflows/ui-review.md": "5414d822f6c00826",
"gsd-core/workflows/ultraplan-phase.md": "53b77a8edf60acd0", "gsd-core/workflows/ultraplan-phase.md": "53b77a8edf60acd0",
"gsd-core/workflows/undo.md": "18dec684fb1076f9", "gsd-core/workflows/undo.md": "733189fb34cc026b",
"gsd-core/workflows/update.md": "79aaf4b8f1f83045", "gsd-core/workflows/update.md": "0c02d18be2ccd04d",
"gsd-core/workflows/validate-phase.md": "bf16fd7ff71286b2", "gsd-core/workflows/validate-phase.md": "c2613db454f975b6",
"gsd-core/workflows/verify-phase.md": "382490481d794ed5", "gsd-core/workflows/verify-phase.md": "382490481d794ed5",
"gsd-core/workflows/verify-work.md": "5044f0a73bc6a136", "gsd-core/workflows/verify-work.md": "6258bc3ec21906c4",
"hooks/gsd-windsurf-pre-command.js": "7467a8a63e354aad", "hooks/gsd-windsurf-pre-command.js": "7467a8a63e354aad",
"hooks/gsd-windsurf-pre-write.js": "1c8a776d7ae2dcce", "hooks/gsd-windsurf-pre-write.js": "1c8a776d7ae2dcce",
"scripts/changeset/README.md": "86ff89331dfd94b2", "scripts/changeset/README.md": "86ff89331dfd94b2",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e", "gsd-core/references/execute-phase-between-wave-reset.md": "3ad96ca0f7fee37e",
"gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242", "gsd-core/references/execute-phase-context-guard.md": "982006c1f3364242",
"gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2", "gsd-core/references/execute-phase-requirement-revert.md": "48ade76866c57ce2",
"gsd-core/references/execute-phase-response-language.md": "c240dc476dd15df5",
"gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8", "gsd-core/references/execute-phase-wave-guard.md": "de9ac22cead4cfd8",
"gsd-core/references/executor-examples.md": "ba59243ed45c8ab1", "gsd-core/references/executor-examples.md": "ba59243ed45c8ab1",
"gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4", "gsd-core/references/few-shot-examples/plan-checker.md": "2574808188ac9de4",
@@ -279,23 +280,23 @@
"gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335", "gsd-core/workflows/_runtime-launcher.snippet.sh": "bf2dd5d1debd5335",
"gsd-core/workflows/add-backlog.md": "1bc7377b105194fc", "gsd-core/workflows/add-backlog.md": "1bc7377b105194fc",
"gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8", "gsd-core/workflows/add-phase.md": "ac43883e2d8e34d8",
"gsd-core/workflows/add-tests.md": "24b0d8157a9ccb8b", "gsd-core/workflows/add-tests.md": "7e7268602f9e1b2a",
"gsd-core/workflows/add-todo.md": "953314cdfef56bc4", "gsd-core/workflows/add-todo.md": "5dc04cfaa0b6b072",
"gsd-core/workflows/ai-integration-phase.md": "45c727e49de71636", "gsd-core/workflows/ai-integration-phase.md": "0d6d7183ae189fbe",
"gsd-core/workflows/analyze-dependencies.md": "52942af10f140717", "gsd-core/workflows/analyze-dependencies.md": "52942af10f140717",
"gsd-core/workflows/audit-fix.md": "d511f4094ce351aa", "gsd-core/workflows/audit-fix.md": "d511f4094ce351aa",
"gsd-core/workflows/audit-milestone.md": "3835762c3147a927", "gsd-core/workflows/audit-milestone.md": "3835762c3147a927",
"gsd-core/workflows/audit-uat.md": "fcfbec501620b564", "gsd-core/workflows/audit-uat.md": "fcfbec501620b564",
"gsd-core/workflows/autonomous.md": "7e5683728ef33707", "gsd-core/workflows/autonomous.md": "7e5683728ef33707",
"gsd-core/workflows/check-todos.md": "bdeaf43f9c61e0cc", "gsd-core/workflows/check-todos.md": "f39e3251a78f6f5a",
"gsd-core/workflows/cleanup.md": "0daa2f2720c111f1", "gsd-core/workflows/cleanup.md": "df79d1dc7b84d736",
"gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075", "gsd-core/workflows/code-review-fix.md": "2e113d1f4350a075",
"gsd-core/workflows/code-review.md": "c877ad812b4a511e", "gsd-core/workflows/code-review.md": "c877ad812b4a511e",
"gsd-core/workflows/complete-milestone.md": "c1f91b77f4ace7f2", "gsd-core/workflows/complete-milestone.md": "8f98d7b05793cf4a",
"gsd-core/workflows/debug.md": "79c2f7dc12815e30", "gsd-core/workflows/debug.md": "a2d04237fbbce72b",
"gsd-core/workflows/diagnose-issues.md": "804ad766100d93ea", "gsd-core/workflows/diagnose-issues.md": "804ad766100d93ea",
"gsd-core/workflows/discovery-phase.md": "3ba7cfb89fb1e761", "gsd-core/workflows/discovery-phase.md": "0aa8d8d872b53858",
"gsd-core/workflows/discuss-phase-assumptions.md": "f5b765d33eba4f88", "gsd-core/workflows/discuss-phase-assumptions.md": "185419d61517727b",
"gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a", "gsd-core/workflows/discuss-phase-power.md": "0841f7dc6e9a054a",
"gsd-core/workflows/discuss-phase.md": "d0a67b6f77b4d339", "gsd-core/workflows/discuss-phase.md": "d0a67b6f77b4d339",
"gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653", "gsd-core/workflows/discuss-phase/modes/advisor.md": "db488d74d080c653",
@@ -310,88 +311,88 @@
"gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb", "gsd-core/workflows/discuss-phase/templates/checkpoint.json": "e3bc3dca49db59eb",
"gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f", "gsd-core/workflows/discuss-phase/templates/context.md": "6cd929e989fe2b0f",
"gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1", "gsd-core/workflows/discuss-phase/templates/discussion-log.md": "1bbd7703f11128e1",
"gsd-core/workflows/do.md": "7512dd1892f118a1", "gsd-core/workflows/do.md": "90df4f1fe248cdf3",
"gsd-core/workflows/docs-update.md": "f35922d15b7061c9", "gsd-core/workflows/docs-update.md": "b5cdf1c35043cf7b",
"gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04", "gsd-core/workflows/edit-phase.md": "966a3eadd1bebc04",
"gsd-core/workflows/eval-review.md": "f898936e2cfe4130", "gsd-core/workflows/eval-review.md": "32d3d7e80ab2bfc7",
"gsd-core/workflows/execute-phase.md": "e0f1d13f102364a8", "gsd-core/workflows/execute-phase.md": "3054948793be8131",
"gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e", "gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md": "4e265392b3f2ba0e",
"gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028", "gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md": "7ebb7d1af6082028",
"gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a", "gsd-core/workflows/execute-phase/steps/post-merge-gate.md": "7b2d9a4a4013fd6a",
"gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea", "gsd-core/workflows/execute-phase/steps/regression-gate.md": "7a49bc47da5411ea",
"gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e", "gsd-core/workflows/execute-phase/steps/worktree-recovery-policy.md": "be84efbd71e1513e",
"gsd-core/workflows/execute-plan.md": "ee300f9c6f7626c8", "gsd-core/workflows/execute-plan.md": "8b66e46ab4512511",
"gsd-core/workflows/explore.md": "6c04f2e658d93261", "gsd-core/workflows/explore.md": "6c04f2e658d93261",
"gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4", "gsd-core/workflows/extract-learnings.md": "b6f01ca3d8f58de4",
"gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3", "gsd-core/workflows/fast.md": "11f5cd10ae5cc7d3",
"gsd-core/workflows/forensics.md": "0d500a3f5ab26913", "gsd-core/workflows/forensics.md": "0d500a3f5ab26913",
"gsd-core/workflows/graduation.md": "47f1594c88c08501", "gsd-core/workflows/graduation.md": "973dcebcd17e1b10",
"gsd-core/workflows/health.md": "107e3c72e76d9535", "gsd-core/workflows/health.md": "c25b5e5f62874c31",
"gsd-core/workflows/help.md": "5d040504b9ab35e3", "gsd-core/workflows/help.md": "5d040504b9ab35e3",
"gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0", "gsd-core/workflows/help/modes/brief.md": "924860e1f07defb0",
"gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50", "gsd-core/workflows/help/modes/default.md": "08a02976c0c5cc50",
"gsd-core/workflows/help/modes/full.md": "dda8f6d101b0870d", "gsd-core/workflows/help/modes/full.md": "dda8f6d101b0870d",
"gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d", "gsd-core/workflows/help/modes/topic.md": "5c160093f3cbf35d",
"gsd-core/workflows/import.md": "12c6cbcbdecb6392", "gsd-core/workflows/import.md": "31a0f3a33154939f",
"gsd-core/workflows/inbox.md": "437f981ef9ae7b26", "gsd-core/workflows/inbox.md": "a7d439981775bc29",
"gsd-core/workflows/ingest-docs.md": "f7c3fa659ca77bc5", "gsd-core/workflows/ingest-docs.md": "e5c63b5e539f6e17",
"gsd-core/workflows/insert-phase.md": "08dca838d831bb5b", "gsd-core/workflows/insert-phase.md": "08dca838d831bb5b",
"gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3", "gsd-core/workflows/list-phase-assumptions.md": "53dd4b69536c1bc3",
"gsd-core/workflows/list-seeds.md": "b687f2a843032d65", "gsd-core/workflows/list-seeds.md": "b687f2a843032d65",
"gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453", "gsd-core/workflows/list-workspaces.md": "7f94e18b5c549453",
"gsd-core/workflows/manager.md": "3ba7a3e8213c4b23", "gsd-core/workflows/manager.md": "c18fab593344253d",
"gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2", "gsd-core/workflows/map-codebase.md": "8fb02d635a86d6b2",
"gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043", "gsd-core/workflows/milestone-summary.md": "e0cdfddbd39a9043",
"gsd-core/workflows/mvp-phase.md": "344dd300e0cc1e74", "gsd-core/workflows/mvp-phase.md": "58a952b4715db283",
"gsd-core/workflows/new-milestone.md": "6227eaddad367bc5", "gsd-core/workflows/new-milestone.md": "f6029bcb535bee69",
"gsd-core/workflows/new-project.md": "2e00175f2297f8fb", "gsd-core/workflows/new-project.md": "2a0fab3a433a0bd9",
"gsd-core/workflows/new-workspace.md": "017688423110ed66", "gsd-core/workflows/new-workspace.md": "bbeb706c7a697617",
"gsd-core/workflows/next.md": "13fb800f2472d970", "gsd-core/workflows/next.md": "13fb800f2472d970",
"gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b", "gsd-core/workflows/node-repair.md": "07a1628e5a1ff96b",
"gsd-core/workflows/note.md": "5a99eb396c744619", "gsd-core/workflows/note.md": "5a99eb396c744619",
"gsd-core/workflows/onboard.md": "6f9e6c0b484271a9", "gsd-core/workflows/onboard.md": "f29c4fbef3b473fd",
"gsd-core/workflows/pause-work.md": "f2b33bba5593d422", "gsd-core/workflows/pause-work.md": "f2b33bba5593d422",
"gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc", "gsd-core/workflows/plan-milestone-gaps.md": "852f6d7c0c4299dc",
"gsd-core/workflows/plan-phase.md": "8fdc4b795e10670b", "gsd-core/workflows/plan-phase.md": "f05af110cc6b0eb5",
"gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072", "gsd-core/workflows/plan-phase/steps/closed-phase-gate.md": "b36f77ac7344a072",
"gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2", "gsd-core/workflows/plan-phase/steps/prd-express-path.md": "197c0590326371b2",
"gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5", "gsd-core/workflows/plan-phase/steps/windows-troubleshooting.md": "49f58c3f75be3eb5",
"gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8", "gsd-core/workflows/plan-review-convergence.md": "1c31d4905c1556c8",
"gsd-core/workflows/plant-seed.md": "10b92ae08a6fdede", "gsd-core/workflows/plant-seed.md": "9596db80ab282c6f",
"gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b", "gsd-core/workflows/pr-branch.md": "c87db7ac8c28be1b",
"gsd-core/workflows/profile-user.md": "e23bea0a69c0bb4b", "gsd-core/workflows/profile-user.md": "74005f062c870393",
"gsd-core/workflows/progress.md": "46c83ad61b3c4a84", "gsd-core/workflows/progress.md": "46c83ad61b3c4a84",
"gsd-core/workflows/quick.md": "5331f238c75a821f", "gsd-core/workflows/quick.md": "4176fac7f9291aac",
"gsd-core/workflows/reapply-patches.md": "39050f72601aec89", "gsd-core/workflows/reapply-patches.md": "39050f72601aec89",
"gsd-core/workflows/remove-phase.md": "df9a45f0b1880999", "gsd-core/workflows/remove-phase.md": "df9a45f0b1880999",
"gsd-core/workflows/remove-workspace.md": "a7ca66db6b7c132c", "gsd-core/workflows/remove-workspace.md": "f67860c795fb4bfe",
"gsd-core/workflows/resume-project.md": "f28da1200e4545f4", "gsd-core/workflows/resume-project.md": "f28da1200e4545f4",
"gsd-core/workflows/review.md": "f1fbefbd64bd890e", "gsd-core/workflows/review.md": "f1fbefbd64bd890e",
"gsd-core/workflows/scan.md": "e6424af05656725a", "gsd-core/workflows/scan.md": "e6424af05656725a",
"gsd-core/workflows/secure-phase.md": "22ab3bb5da494ea7", "gsd-core/workflows/secure-phase.md": "f8b9436c35372281",
"gsd-core/workflows/session-report.md": "2e5b1205324ddefa", "gsd-core/workflows/session-report.md": "2e5b1205324ddefa",
"gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44", "gsd-core/workflows/settings-advanced.md": "414db4dbea97ba44",
"gsd-core/workflows/settings-integrations.md": "70515c5838fb9826", "gsd-core/workflows/settings-integrations.md": "effcef778d4a855f",
"gsd-core/workflows/settings.md": "d96ddf01fb85e61e", "gsd-core/workflows/settings.md": "85ceb482dc713169",
"gsd-core/workflows/ship.md": "4642ebbaa38f8cc2", "gsd-core/workflows/ship.md": "09056fccdf20e41b",
"gsd-core/workflows/sketch-wrap-up.md": "86db87b16548117e", "gsd-core/workflows/sketch-wrap-up.md": "86db87b16548117e",
"gsd-core/workflows/sketch.md": "e96f1866d3e60cab", "gsd-core/workflows/sketch.md": "fcd52f8d9076e183",
"gsd-core/workflows/smart-entry.md": "449238eb94abe187", "gsd-core/workflows/smart-entry.md": "004b4060eab97cb9",
"gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c", "gsd-core/workflows/spec-phase.md": "fa8669b75392cf6c",
"gsd-core/workflows/spike-wrap-up.md": "d643447e16e95753", "gsd-core/workflows/spike-wrap-up.md": "d643447e16e95753",
"gsd-core/workflows/spike.md": "265e5c5a13ea0deb", "gsd-core/workflows/spike.md": "242c6ba2176bac83",
"gsd-core/workflows/stats.md": "76a42cbeaf6007c2", "gsd-core/workflows/stats.md": "76a42cbeaf6007c2",
"gsd-core/workflows/sync-skills.md": "b505e6f8331c0918", "gsd-core/workflows/sync-skills.md": "b505e6f8331c0918",
"gsd-core/workflows/thread.md": "927e7eeefd2fcf5c", "gsd-core/workflows/thread.md": "927e7eeefd2fcf5c",
"gsd-core/workflows/transition.md": "aea486bb7a0e80e7", "gsd-core/workflows/transition.md": "aea486bb7a0e80e7",
"gsd-core/workflows/ui-phase.md": "98d044ed4d7163d7", "gsd-core/workflows/ui-phase.md": "592e332fc8c4b30a",
"gsd-core/workflows/ui-review.md": "7acfc485526d064b", "gsd-core/workflows/ui-review.md": "202c4e399cd95719",
"gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d", "gsd-core/workflows/ultraplan-phase.md": "0fb8291153e3937d",
"gsd-core/workflows/undo.md": "96d2775f008b3a85", "gsd-core/workflows/undo.md": "1712417bade30b30",
"gsd-core/workflows/update.md": "dc580dee13f881a6", "gsd-core/workflows/update.md": "3573b340820d7d4d",
"gsd-core/workflows/validate-phase.md": "ce9890f21c6e5607", "gsd-core/workflows/validate-phase.md": "2e19caff07397728",
"gsd-core/workflows/verify-phase.md": "d26a2c3269340caf", "gsd-core/workflows/verify-phase.md": "d26a2c3269340caf",
"gsd-core/workflows/verify-work.md": "86c6f0c77b5adc72", "gsd-core/workflows/verify-work.md": "5b92e34f1d0da848",
"scripts/changeset/README.md": "86ff89331dfd94b2", "scripts/changeset/README.md": "86ff89331dfd94b2",
"scripts/changeset/cli.cjs": "68f92a344b199271", "scripts/changeset/cli.cjs": "68f92a344b199271",
"scripts/changeset/github-release-notes.cjs": "795677f0c009b132", "scripts/changeset/github-release-notes.cjs": "795677f0c009b132",

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -159,6 +159,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -88,6 +88,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -92,6 +92,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -195,6 +195,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -90,6 +90,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -153,6 +153,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -56,6 +56,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -89,6 +89,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -160,6 +160,7 @@
"gsd-core/references/execute-phase-between-wave-reset.md", "gsd-core/references/execute-phase-between-wave-reset.md",
"gsd-core/references/execute-phase-context-guard.md", "gsd-core/references/execute-phase-context-guard.md",
"gsd-core/references/execute-phase-requirement-revert.md", "gsd-core/references/execute-phase-requirement-revert.md",
"gsd-core/references/execute-phase-response-language.md",
"gsd-core/references/execute-phase-wave-guard.md", "gsd-core/references/execute-phase-wave-guard.md",
"gsd-core/references/executor-examples.md", "gsd-core/references/executor-examples.md",
"gsd-core/references/few-shot-examples/plan-checker.md", "gsd-core/references/few-shot-examples/plan-checker.md",

View File

@@ -9,6 +9,7 @@ const assert = require('node:assert/strict');
const fs = require('fs'); const fs = require('fs');
const path = require('path'); const path = require('path');
const { runGsdTools, createTempProject, cleanup } = require('./helpers.cjs'); const { runGsdTools, createTempProject, cleanup } = require('./helpers.cjs');
const { buildCheckpoint } = require('../gsd-core/bin/lib/uat.cjs');
describe('audit-uat command', () => { describe('audit-uat command', () => {
let tmpDir; let tmpDir;
@@ -833,6 +834,99 @@ describe('uat render-checkpoint', () => {
cleanup(tmpDir); cleanup(tmpDir);
}); });
test('buildCheckpoint: unset/unrecognized language falls back to English default (#2402)', () => {
const currentTest = { number: 1, name: 'Sample', expected: 'Something happens.' };
const defaultOutput = buildCheckpoint(currentTest);
const explicitEnglish = buildCheckpoint(currentTest, 'English');
const unrecognized = buildCheckpoint(currentTest, 'Klingon');
assert.strictEqual(defaultOutput, explicitEnglish, 'unset language should equal the English frame');
assert.strictEqual(defaultOutput, unrecognized, 'unrecognized language should fall back to the English frame');
assert.ok(defaultOutput.includes('CHECKPOINT: Verification Required'));
});
test('buildCheckpoint: recognized language swaps only the two frame strings (#2402)', () => {
const currentTest = { number: 1, name: 'Sample', expected: 'Something happens.' };
const english = buildCheckpoint(currentTest);
const japanese = buildCheckpoint(currentTest, 'Japanese');
assert.ok(japanese.includes('チェックポイント'));
assert.ok(japanese.includes('`pass`'));
// Structural lines (borders, separators, Test N heading, expected content) are untouched.
assert.ok(japanese.includes('╔══════════════════════════════════════════════════════════════╗'));
assert.ok(japanese.includes('╚══════════════════════════════════════════════════════════════╝'));
assert.ok(japanese.includes('──────────────────────────────────────────────────────────────'));
assert.ok(japanese.includes('**Test 1: Sample**'));
assert.ok(japanese.includes('Something happens.'));
assert.notStrictEqual(japanese, english);
});
// Regression: #2402 review medium finding — checkpointBoxLine() padded using
// JS string `.length` (UTF-16 code units), not display width. Japanese/
// Chinese/Korean use full-width characters that render at 2 terminal
// columns each, so the padded line was JS-length-correct (64) but visually
// 8-15 columns too wide, misaligning the right `║` border relative to the
// box's single-width border lines. Independently recomputes display width
// (East Asian Width W/F ranges) rather than reading source, so this test
// fails if the fix regresses even if the banner copy itself later changes.
describe('CJK checkpoint banner padding uses display width, not UTF-16 length (#2402)', () => {
function isWideCodePoint(codePoint) {
return (
(codePoint >= 0x1100 && codePoint <= 0x115f) ||
codePoint === 0x2329 || codePoint === 0x232a ||
(codePoint >= 0x2e80 && codePoint <= 0x303e) ||
(codePoint >= 0x3041 && codePoint <= 0x33ff) ||
(codePoint >= 0x3400 && codePoint <= 0x4dbf) ||
(codePoint >= 0x4e00 && codePoint <= 0x9fff) ||
(codePoint >= 0xa000 && codePoint <= 0xa4cf) ||
(codePoint >= 0xac00 && codePoint <= 0xd7a3) ||
(codePoint >= 0xf900 && codePoint <= 0xfaff) ||
(codePoint >= 0xfe30 && codePoint <= 0xfe4f) ||
(codePoint >= 0xff00 && codePoint <= 0xff60) ||
(codePoint >= 0xffe0 && codePoint <= 0xffe6) ||
(codePoint >= 0x20000 && codePoint <= 0x3fffd)
);
}
function displayWidth(text) {
let width = 0;
for (const ch of text) width += isWideCodePoint(ch.codePointAt(0)) ? 2 : 1;
return width;
}
for (const lang of ['Japanese', 'Chinese', 'Korean']) {
test(`${lang} checkpoint banner line renders at display-width 64, aligning the right border`, () => {
const currentTest = { number: 1, name: 'Sample', expected: 'Something happens.' };
const output = buildCheckpoint(currentTest, lang);
const lines = output.split('\n');
const topBorder = lines[0];
const bannerLine = lines[1];
const bottomBorder = lines[2];
assert.strictEqual(displayWidth(topBorder), 64, 'top border is the 64-column reference width');
assert.strictEqual(displayWidth(bottomBorder), 64, 'bottom border is the 64-column reference width');
assert.strictEqual(displayWidth(bannerLine), 64,
`${lang} banner line must render at the same 64-column display width as the borders — ` +
'padding by UTF-16 .length under-pads full-width characters and overflows the box');
});
}
test('exact rendered banner lines for Japanese/Chinese/Korean (regression pin)', () => {
const currentTest = { number: 1, name: 'Sample', expected: 'Something happens.' };
assert.strictEqual(
buildCheckpoint(currentTest, 'Japanese').split('\n')[1],
'║ チェックポイント: 検証が必要です ║',
);
assert.strictEqual(
buildCheckpoint(currentTest, 'Chinese').split('\n')[1],
'║ 检查点:需要验证 ║',
);
assert.strictEqual(
buildCheckpoint(currentTest, 'Korean').split('\n')[1],
'║ 체크포인트: 검증 필요 ║',
);
});
});
test('renders the current checkpoint as raw output', () => { test('renders the current checkpoint as raw output', () => {
fs.writeFileSync(uatPath, `--- fs.writeFileSync(uatPath, `---
status: testing status: testing
@@ -1034,4 +1128,85 @@ phase: 01-test-phase
assert.strictEqual(result.success, false, 'Should fail when no current test exists'); assert.strictEqual(result.success, false, 'Should fail when no current test exists');
assert.ok(result.error.includes('already complete')); assert.ok(result.error.includes('already complete'));
}); });
// #2402: response_language must reach the checkpoint frame itself — verify-work.md
// requires the model to reprint the checkpoint byte-for-byte, so translation can't
// happen after the fact. The renderer has to already emit localized frame strings.
test('localizes the checkpoint frame when response_language is configured (#2402)', () => {
fs.writeFileSync(
path.join(tmpDir, '.planning', 'config.json'),
JSON.stringify({ response_language: 'Spanish' })
);
fs.writeFileSync(uatPath, `---
status: testing
phase: 01-test-phase
---
## Current Test
number: 2
name: Submit form validation
expected: |
Empty submit keeps controls visible.
Validation error copy is shown.
awaiting: user response
`);
const result = runGsdTools(['uat', 'render-checkpoint', '--file', '.planning/phases/01-test-phase/01-UAT.md', '--raw'], tmpDir);
assert.strictEqual(result.success, true, `render-checkpoint failed: ${result.error}`);
// Frame strings must be localized, not English.
assert.ok(!result.output.includes('CHECKPOINT: Verification Required'),
'banner should be localized, not the English default');
assert.ok(!result.output.includes("Type `pass` or describe what's wrong."),
'instruction line should be localized, not the English default');
assert.ok(result.output.includes('Verificación requerida'), 'banner should be in Spanish');
assert.ok(result.output.includes('Escribe `pass`'), 'instruction line should be in Spanish');
// Structure/IDs stay untranslated: box borders, the Test N: name line, and the
// expected content are preserved verbatim.
assert.ok(result.output.includes('╔══════════════════════════════════════════════════════════════╗'));
assert.ok(result.output.includes('╚══════════════════════════════════════════════════════════════╝'));
assert.ok(result.output.includes('──────────────────────────────────────────────────────────────'));
assert.ok(result.output.includes('**Test 2: Submit form validation**'));
assert.ok(result.output.includes('Empty submit keeps controls visible.'));
assert.ok(result.output.includes('Validation error copy is shown.'));
});
// Regression guard for the "unset ⇒ byte-identical English" acceptance criterion.
test('renders byte-identical English checkpoint when response_language is unset (#2402)', () => {
fs.writeFileSync(uatPath, `---
status: testing
phase: 01-test-phase
---
## Current Test
number: 2
name: Submit form validation
expected: |
Empty submit keeps controls visible.
Validation error copy is shown.
awaiting: user response
`);
const result = runGsdTools(['uat', 'render-checkpoint', '--file', '.planning/phases/01-test-phase/01-UAT.md', '--raw'], tmpDir);
assert.strictEqual(result.success, true, `render-checkpoint failed: ${result.error}`);
const expected = [
'╔══════════════════════════════════════════════════════════════╗',
'║ CHECKPOINT: Verification Required ║',
'╚══════════════════════════════════════════════════════════════╝',
'',
'**Test 2: Submit form validation**',
'',
'Empty submit keeps controls visible.\nValidation error copy is shown.',
'',
'──────────────────────────────────────────────────────────────',
'Type `pass` or describe what\'s wrong.',
'──────────────────────────────────────────────────────────────',
].join('\n');
assert.strictEqual(result.output, expected);
});
}); });

View File

@@ -1,93 +1,93 @@
{ {
"add-backlog.md": 7176, "add-backlog.md": 7176,
"add-phase.md": 7578, "add-phase.md": 7578,
"add-tests.md": 16961, "add-tests.md": 17247,
"add-todo.md": 10734, "add-todo.md": 11020,
"ai-integration-phase.md": 15134, "ai-integration-phase.md": 15420,
"analyze-dependencies.md": 3887, "analyze-dependencies.md": 3887,
"audit-fix.md": 11743, "audit-fix.md": 11743,
"audit-milestone.md": 18448, "audit-milestone.md": 18448,
"audit-uat.md": 7469, "audit-uat.md": 7469,
"autonomous.md": 42474, "autonomous.md": 42474,
"check-todos.md": 9475, "check-todos.md": 9761,
"cleanup.md": 9941, "cleanup.md": 10319,
"code-review-fix.md": 24320, "code-review-fix.md": 24320,
"code-review.md": 32524, "code-review.md": 32524,
"complete-milestone.md": 31071, "complete-milestone.md": 31436,
"debug.md": 19370, "debug.md": 19667,
"diagnose-issues.md": 12858, "diagnose-issues.md": 12858,
"discovery-phase.md": 8651, "discovery-phase.md": 13543,
"discuss-phase-assumptions.md": 27302, "discuss-phase-assumptions.md": 27667,
"discuss-phase-power.md": 11273, "discuss-phase-power.md": 11273,
"discuss-phase.md": 31986, "discuss-phase.md": 31986,
"do.md": 10353, "do.md": 10731,
"docs-update.md": 55706, "docs-update.md": 55908,
"edit-phase.md": 12927, "edit-phase.md": 12927,
"eval-review.md": 9967, "eval-review.md": 10332,
"execute-phase.md": 93390, "execute-phase.md": 93292,
"execute-plan.md": 34262, "execute-plan.md": 34548,
"explore.md": 10541, "explore.md": 10541,
"extract-learnings.md": 12893, "extract-learnings.md": 12893,
"fast.md": 7613, "fast.md": 7613,
"forensics.md": 12531, "forensics.md": 12531,
"graduation.md": 11622, "graduation.md": 11987,
"health.md": 11868, "health.md": 12246,
"help.md": 1722, "help.md": 1722,
"import.md": 14636, "import.md": 15014,
"inbox.md": 14407, "inbox.md": 19299,
"ingest-docs.md": 18870, "ingest-docs.md": 19235,
"insert-phase.md": 8987, "insert-phase.md": 8987,
"list-phase-assumptions.md": 4305, "list-phase-assumptions.md": 4305,
"list-seeds.md": 6987, "list-seeds.md": 6987,
"list-workspaces.md": 5699, "list-workspaces.md": 5699,
"manager.md": 27302, "manager.md": 27751,
"map-codebase.md": 20817, "map-codebase.md": 20817,
"milestone-summary.md": 11842, "milestone-summary.md": 11842,
"mvp-phase.md": 13626, "mvp-phase.md": 13991,
"new-milestone.md": 37624, "new-milestone.md": 38081,
"new-project.md": 66184, "new-project.md": 66470,
"new-workspace.md": 11298, "new-workspace.md": 11584,
"next.md": 20138, "next.md": 20138,
"node-repair.md": 4173, "node-repair.md": 4173,
"note.md": 6563, "note.md": 6563,
"onboard.md": 8590, "onboard.md": 8877,
"pause-work.md": 14441, "pause-work.md": 14441,
"plan-milestone-gaps.md": 11809, "plan-milestone-gaps.md": 11809,
"plan-phase.md": 94391, "plan-phase.md": 94470,
"plan-review-convergence.md": 26285, "plan-review-convergence.md": 26285,
"plant-seed.md": 11785, "plant-seed.md": 12150,
"pr-branch.md": 15963, "pr-branch.md": 15963,
"profile-user.md": 21246, "profile-user.md": 21624,
"progress.md": 32632, "progress.md": 32632,
"quick.md": 50993, "quick.md": 51392,
"reapply-patches.md": 20312, "reapply-patches.md": 20312,
"remove-phase.md": 8513, "remove-phase.md": 8513,
"remove-workspace.md": 7551, "remove-workspace.md": 7916,
"resume-project.md": 17270, "resume-project.md": 17270,
"review.md": 50497, "review.md": 50497,
"scan.md": 7728, "scan.md": 7728,
"secure-phase.md": 13622, "secure-phase.md": 13987,
"session-report.md": 4044, "session-report.md": 4044,
"settings-advanced.md": 40019, "settings-advanced.md": 40019,
"settings-integrations.md": 15892, "settings-integrations.md": 16257,
"settings.md": 33467, "settings.md": 33832,
"ship.md": 27945, "ship.md": 28310,
"sketch-wrap-up.md": 14267, "sketch-wrap-up.md": 14267,
"sketch.md": 20004, "sketch.md": 20369,
"smart-entry.md": 11124, "smart-entry.md": 11489,
"spec-phase.md": 31987, "spec-phase.md": 31987,
"spike-wrap-up.md": 15136, "spike-wrap-up.md": 15136,
"spike.md": 24561, "spike.md": 24939,
"stats.md": 6762, "stats.md": 6762,
"sync-skills.md": 6125, "sync-skills.md": 6125,
"thread.md": 12508, "thread.md": 12508,
"transition.md": 22070, "transition.md": 22070,
"ui-phase.md": 26054, "ui-phase.md": 26340,
"ui-review.md": 11216, "ui-review.md": 11581,
"ultraplan-phase.md": 10512, "ultraplan-phase.md": 10512,
"undo.md": 10431, "undo.md": 15323,
"update.md": 20914, "update.md": 21178,
"validate-phase.md": 10849, "validate-phase.md": 11214,
"verify-phase.md": 40949, "verify-phase.md": 40949,
"verify-work.md": 40265 "verify-work.md": 40733
} }

View File

@@ -214,6 +214,51 @@ describe('init remove-workspace', () => {
assert.strictEqual(data.strategy, 'clone'); assert.strictEqual(data.strategy, 'clone');
assert.strictEqual(data.has_dirty_repos, false); assert.strictEqual(data.has_dirty_repos, false);
}); });
// #2402: cmdInitRemoveWorkspace didn't route through withProjectRoot, so
// remove-workspace.md never received response_language (nor project_root/
// agents_installed). Mirrors the established `init manager` response_language
// coverage pattern (tests/init-manager.test.cjs).
describe('response_language wiring (#2402)', () => {
function writeWorkspace(base, name) {
const ws = path.join(base, 'gsd-workspaces', name);
fs.mkdirSync(ws, { recursive: true });
fs.writeFileSync(path.join(ws, 'WORKSPACE.md'), [
`# Workspace: ${name}`,
'',
'Created: 2026-03-20',
'Strategy: clone',
'',
'## Member Repos',
'',
'| Repo | Source | Branch | Strategy |',
'|------|--------|--------|----------|',
].join('\n'));
}
test('output includes response_language when configured', () => {
writeWorkspace(tmpDir, 'test-ws');
fs.mkdirSync(path.join(tmpDir, '.planning'), { recursive: true });
fs.writeFileSync(
path.join(tmpDir, '.planning', 'config.json'),
JSON.stringify({ response_language: 'Japanese' })
);
const result = runGsdTools('init remove-workspace test-ws', tmpDir, { HOME: tmpDir });
assert.ok(result.success, `init failed: ${result.error}`);
const data = JSON.parse(result.output);
assert.strictEqual(data.response_language, 'Japanese');
});
test('output omits response_language when not configured', () => {
writeWorkspace(tmpDir, 'test-ws');
const result = runGsdTools('init remove-workspace test-ws', tmpDir, { HOME: tmpDir });
assert.ok(result.success, `init failed: ${result.error}`);
const data = JSON.parse(result.output);
assert.strictEqual(data.response_language, undefined);
});
});
}); });
// ─── Integration: worktree creation and removal ───────────────────────────── // ─── Integration: worktree creation and removal ─────────────────────────────