From 0e6907050ec6053905bf984fcb0f74a66bd2e2d4 Mon Sep 17 00:00:00 2001 From: Tom Boucher Date: Mon, 25 May 2026 12:03:10 -0400 Subject: [PATCH] docs(#195): migrate workflow markdown off gsd-sdk query --- .changeset/195-workflow-gsd-tools-query.md | 6 ++++++ get-shit-done/workflows/add-backlog.md | 6 ++---- get-shit-done/workflows/add-phase.md | 10 ++++------ get-shit-done/workflows/add-tests.md | 6 ++---- get-shit-done/workflows/add-todo.md | 6 ++---- get-shit-done/workflows/ai-integration-phase.md | 6 ++---- get-shit-done/workflows/audit-fix.md | 6 ++---- get-shit-done/workflows/audit-milestone.md | 6 ++---- get-shit-done/workflows/audit-uat.md | 6 ++---- get-shit-done/workflows/autonomous.md | 6 ++---- get-shit-done/workflows/check-todos.md | 6 ++---- get-shit-done/workflows/cleanup.md | 6 ++---- get-shit-done/workflows/code-review-fix.md | 6 ++---- get-shit-done/workflows/code-review.md | 8 +++----- get-shit-done/workflows/complete-milestone.md | 14 ++++++-------- get-shit-done/workflows/debug.md | 6 ++---- get-shit-done/workflows/diagnose-issues.md | 6 ++---- .../workflows/discuss-phase-assumptions.md | 6 ++---- get-shit-done/workflows/discuss-phase.md | 2 +- .../workflows/discuss-phase/modes/text.md | 2 +- get-shit-done/workflows/do.md | 6 ++---- get-shit-done/workflows/docs-update.md | 6 ++---- get-shit-done/workflows/edit-phase.md | 6 ++---- get-shit-done/workflows/eval-review.md | 6 ++---- get-shit-done/workflows/execute-phase.md | 12 +++++------- get-shit-done/workflows/execute-plan.md | 12 +++++------- get-shit-done/workflows/explore.md | 6 ++---- get-shit-done/workflows/extract-learnings.md | 6 ++---- get-shit-done/workflows/forensics.md | 6 ++---- get-shit-done/workflows/graduation.md | 6 ++---- get-shit-done/workflows/health.md | 6 ++---- get-shit-done/workflows/import.md | 6 ++---- get-shit-done/workflows/insert-phase.md | 14 ++++++-------- get-shit-done/workflows/list-workspaces.md | 6 ++---- get-shit-done/workflows/manager.md | 8 +++----- get-shit-done/workflows/map-codebase.md | 6 ++---- get-shit-done/workflows/milestone-summary.md | 6 ++---- get-shit-done/workflows/mvp-phase.md | 6 ++---- get-shit-done/workflows/new-milestone.md | 6 ++---- get-shit-done/workflows/new-project.md | 6 ++---- get-shit-done/workflows/new-workspace.md | 6 ++---- get-shit-done/workflows/next.md | 8 +++----- get-shit-done/workflows/pause-work.md | 6 ++---- get-shit-done/workflows/plan-milestone-gaps.md | 6 ++---- get-shit-done/workflows/plan-phase.md | 10 ++++------ get-shit-done/workflows/plan-review-convergence.md | 6 ++---- get-shit-done/workflows/plant-seed.md | 6 ++---- get-shit-done/workflows/profile-user.md | 12 +++++------- get-shit-done/workflows/progress.md | 14 ++++++-------- get-shit-done/workflows/quick.md | 8 +++----- get-shit-done/workflows/remove-phase.md | 12 +++++------- get-shit-done/workflows/remove-workspace.md | 6 ++---- get-shit-done/workflows/resume-project.md | 6 ++---- get-shit-done/workflows/review.md | 8 +++----- get-shit-done/workflows/scan.md | 6 ++---- get-shit-done/workflows/secure-phase.md | 6 ++---- get-shit-done/workflows/settings-advanced.md | 14 ++++++-------- get-shit-done/workflows/settings-integrations.md | 8 +++----- get-shit-done/workflows/settings.md | 8 +++----- get-shit-done/workflows/ship.md | 6 ++---- get-shit-done/workflows/sketch-wrap-up.md | 6 ++---- get-shit-done/workflows/sketch.md | 6 ++---- get-shit-done/workflows/spike-wrap-up.md | 6 ++---- get-shit-done/workflows/spike.md | 6 ++---- get-shit-done/workflows/stats.md | 8 +++----- get-shit-done/workflows/thread.md | 10 ++++------ get-shit-done/workflows/transition.md | 12 +++++------- get-shit-done/workflows/ui-phase.md | 6 ++---- get-shit-done/workflows/ui-review.md | 6 ++---- get-shit-done/workflows/ultraplan-phase.md | 6 ++---- get-shit-done/workflows/update.md | 10 ++++------ get-shit-done/workflows/validate-phase.md | 6 ++---- get-shit-done/workflows/verify-phase.md | 12 +++++------- get-shit-done/workflows/verify-work.md | 8 +++----- 74 files changed, 201 insertions(+), 337 deletions(-) create mode 100644 .changeset/195-workflow-gsd-tools-query.md diff --git a/.changeset/195-workflow-gsd-tools-query.md b/.changeset/195-workflow-gsd-tools-query.md new file mode 100644 index 000000000..28c9415a8 --- /dev/null +++ b/.changeset/195-workflow-gsd-tools-query.md @@ -0,0 +1,6 @@ +--- +type: Changed +pr: 195 +--- +Replaced workflow markdown `gsd-sdk` query references with `gsd-tools.cjs query` command usage and removed global `gsd-sdk` fallback in workflow runtime command resolution blocks. + diff --git a/get-shit-done/workflows/add-backlog.md b/get-shit-done/workflows/add-backlog.md index b61b417c2..5e8185780 100644 --- a/get-shit-done/workflows/add-backlog.md +++ b/get-shit-done/workflows/add-backlog.md @@ -19,14 +19,12 @@ cat .planning/ROADMAP.md ## Step 2: Find next backlog number ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/add-phase.md b/get-shit-done/workflows/add-phase.md index c9dd72641..9a767d02e 100644 --- a/get-shit-done/workflows/add-phase.md +++ b/get-shit-done/workflows/add-phase.md @@ -29,14 +29,12 @@ Exit. Load phase operation context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -53,7 +51,7 @@ Exit. -**Delegate the phase addition to `gsd-sdk query phase.add`:** +**Delegate the phase addition to `gsd-tools.cjs query phase.add`:** ```bash RESULT=$($GSD_SDK query phase.add "${description}") @@ -115,7 +113,7 @@ Roadmap updated: .planning/ROADMAP.md -- [ ] `gsd-sdk query phase.add` executed successfully +- [ ] `gsd-tools.cjs query phase.add` executed successfully - [ ] Phase directory created - [ ] Roadmap updated with new phase entry - [ ] STATE.md updated with roadmap evolution note diff --git a/get-shit-done/workflows/add-tests.md b/get-shit-done/workflows/add-tests.md index 086d05a33..3cc242605 100644 --- a/get-shit-done/workflows/add-tests.md +++ b/get-shit-done/workflows/add-tests.md @@ -33,14 +33,12 @@ Exit. Load phase operation context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/add-todo.md b/get-shit-done/workflows/add-todo.md index 65dcf3905..a46ae23a1 100644 --- a/get-shit-done/workflows/add-todo.md +++ b/get-shit-done/workflows/add-todo.md @@ -12,14 +12,12 @@ Read all files referenced by the invoking prompt's execution_context before star Load todo context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/ai-integration-phase.md b/get-shit-done/workflows/ai-integration-phase.md index e2ec6ed68..3ef951732 100644 --- a/get-shit-done/workflows/ai-integration-phase.md +++ b/get-shit-done/workflows/ai-integration-phase.md @@ -20,14 +20,12 @@ This prevents the two most common AI development failures: choosing the wrong fr ## 1. Initialize ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/audit-fix.md b/get-shit-done/workflows/audit-fix.md index 4d0028a22..057baf52d 100644 --- a/get-shit-done/workflows/audit-fix.md +++ b/get-shit-done/workflows/audit-fix.md @@ -32,14 +32,12 @@ Invoke the source audit command and capture output. For `audit-uat` source: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/audit-milestone.md b/get-shit-done/workflows/audit-milestone.md index a75d2bdc1..1108f9fc4 100644 --- a/get-shit-done/workflows/audit-milestone.md +++ b/get-shit-done/workflows/audit-milestone.md @@ -16,14 +16,12 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize Milestone Context ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/audit-uat.md b/get-shit-done/workflows/audit-uat.md index 2daea6ee3..c6749dac1 100644 --- a/get-shit-done/workflows/audit-uat.md +++ b/get-shit-done/workflows/audit-uat.md @@ -8,14 +8,12 @@ Cross-phase audit of all UAT and verification files. Finds every outstanding ite Run the CLI audit: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/autonomous.md b/get-shit-done/workflows/autonomous.md index 964eab083..a1a6aa880 100644 --- a/get-shit-done/workflows/autonomous.md +++ b/get-shit-done/workflows/autonomous.md @@ -48,14 +48,12 @@ When `--interactive` is set, discuss runs inline with questions (not auto-answer Bootstrap via milestone-level init: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/check-todos.md b/get-shit-done/workflows/check-todos.md index 3cfc6adc6..d6b14bf0e 100644 --- a/get-shit-done/workflows/check-todos.md +++ b/get-shit-done/workflows/check-todos.md @@ -12,14 +12,12 @@ Read all files referenced by the invoking prompt's execution_context before star Load todo context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/cleanup.md b/get-shit-done/workflows/cleanup.md index 7150056cc..76627b3f2 100644 --- a/get-shit-done/workflows/cleanup.md +++ b/get-shit-done/workflows/cleanup.md @@ -124,14 +124,12 @@ Repeat for all milestones in the cleanup set. Commit the changes: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/code-review-fix.md b/get-shit-done/workflows/code-review-fix.md index 07452cd9c..a9b0e903a 100644 --- a/get-shit-done/workflows/code-review-fix.md +++ b/get-shit-done/workflows/code-review-fix.md @@ -18,14 +18,12 @@ Parse arguments and load project state: ```bash PHASE_ARG="${1}" -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/code-review.md b/get-shit-done/workflows/code-review.md index 7a53b955d..777633da4 100644 --- a/get-shit-done/workflows/code-review.md +++ b/get-shit-done/workflows/code-review.md @@ -18,14 +18,12 @@ Parse arguments and load project state: ```bash PHASE_ARG="${1}" -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -101,7 +99,7 @@ Default is true — only skip on explicit false. This check runs AFTER phase val Determine review depth with priority order: 1. DEPTH_OVERRIDE from --depth flag (highest priority) -2. Config value: `gsd-sdk query config-get workflow.code_review_depth 2>/dev/null` +2. Config value: `gsd-tools.cjs query config-get workflow.code_review_depth 2>/dev/null` 3. Default: "standard" ```bash diff --git a/get-shit-done/workflows/complete-milestone.md b/get-shit-done/workflows/complete-milestone.md index 721bca3e7..61dfff33e 100644 --- a/get-shit-done/workflows/complete-milestone.md +++ b/get-shit-done/workflows/complete-milestone.md @@ -41,14 +41,12 @@ When a milestone completes: Before proceeding with milestone close, run the comprehensive open artifact audit. ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -68,7 +66,7 @@ These items are open. Choose an action: ``` If user chooses [A] (Acknowledge): -1. Re-run `gsd-sdk query audit-open --json` to get structured data +1. Re-run `gsd-tools.cjs query audit-open --json` to get structured data 2. Write acknowledged items to STATE.md under `## Deferred Items` section: ```markdown ## Deferred Items @@ -229,7 +227,7 @@ Key accomplishments for this milestone: -**Note:** MILESTONES.md entry is now created automatically by `gsd-sdk query milestone.complete` in the archive_milestone step. The entry includes version, date, phase/plan/task counts, and accomplishments extracted from SUMMARY.md files. +**Note:** MILESTONES.md entry is now created automatically by `gsd-tools.cjs query milestone.complete` in the archive_milestone step. The entry includes version, date, phase/plan/task counts, and accomplishments extracted from SUMMARY.md files. If additional details are needed (e.g., user-provided "Delivered" summary, git range, LOC stats), add them manually after the CLI creates the base entry. @@ -420,7 +418,7 @@ Update `.planning/ROADMAP.md` — group completed milestone phases: -**Delegate archival to `gsd-sdk query milestone.complete`:** +**Delegate archival to `gsd-tools.cjs query milestone.complete`:** ```bash ARCHIVE=$($GSD_SDK query milestone.complete "v[X.Y]" --name "[Milestone Name]") @@ -736,7 +734,7 @@ fi -Read `git.create_tag` via `gsd-sdk query config-get git.create_tag 2>/dev/null || echo "true"`. +Read `git.create_tag` via `gsd-tools.cjs query config-get git.create_tag 2>/dev/null || echo "true"`. If the result is `false` → skip this step entirely and proceed to `git_commit_milestone`. diff --git a/get-shit-done/workflows/debug.md b/get-shit-done/workflows/debug.md index de2442c78..e3838e6df 100644 --- a/get-shit-done/workflows/debug.md +++ b/get-shit-done/workflows/debug.md @@ -16,14 +16,12 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize Context ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/diagnose-issues.md b/get-shit-done/workflows/diagnose-issues.md index 8d20d4096..1d108fbf6 100644 --- a/get-shit-done/workflows/diagnose-issues.md +++ b/get-shit-done/workflows/diagnose-issues.md @@ -58,14 +58,12 @@ gaps = [ **Read worktree config:** ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/discuss-phase-assumptions.md b/get-shit-done/workflows/discuss-phase-assumptions.md index 0e5767b82..0c0db4e8a 100644 --- a/get-shit-done/workflows/discuss-phase-assumptions.md +++ b/get-shit-done/workflows/discuss-phase-assumptions.md @@ -64,14 +64,12 @@ plain-text numbered list and ask the user to type their choice number. Phase number from argument (required). ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/discuss-phase.md b/get-shit-done/workflows/discuss-phase.md index e848a659a..116a124cf 100644 --- a/get-shit-done/workflows/discuss-phase.md +++ b/get-shit-done/workflows/discuss-phase.md @@ -109,7 +109,7 @@ Phase: "API documentation" → Structure/navigation, Code examples depth, Phase number from argument (required). ```bash -GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs"; [ -f "$GSD_TOOLS" ] && GSD_SDK="node $GSD_TOOLS" || { command -v gsd-sdk >/dev/null 2>&1 && GSD_SDK=gsd-sdk || { echo "ERROR: gsd-sdk not found. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; }; } +GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs"; [ -f "$GSD_TOOLS" ] && GSD_SDK="node $GSD_TOOLS" || { echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2; exit 1; } INIT=$($GSD_SDK query init.phase-op "${PHASE}"); [[ "$INIT" == @file:* ]] && INIT=$(cat "${INIT#@file:}") AGENT_SKILLS_ADVISOR=$($GSD_SDK query agent-skills gsd-advisor-researcher) ``` diff --git a/get-shit-done/workflows/discuss-phase/modes/text.md b/get-shit-done/workflows/discuss-phase/modes/text.md index cfc7ea197..84309d099 100644 --- a/get-shit-done/workflows/discuss-phase/modes/text.md +++ b/get-shit-done/workflows/discuss-phase/modes/text.md @@ -18,7 +18,7 @@ Claude App cannot forward TUI menu selections back to the host. - Per-session: pass `--text` flag to any command (e.g., `/gsd:discuss-phase --text`) -- Per-project: `gsd-sdk query config-set workflow.text_mode true` +- Per-project: `gsd-tools.cjs query config-set workflow.text_mode true` Text mode applies to ALL workflows in the session, not just discuss-phase. diff --git a/get-shit-done/workflows/do.md b/get-shit-done/workflows/do.md index 0afc32e21..aedd3bde7 100644 --- a/get-shit-done/workflows/do.md +++ b/get-shit-done/workflows/do.md @@ -26,15 +26,13 @@ Wait for response before continuing. **Check if project exists.** ```bash -# SDK resolution: prefer local node shim, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local node shim, fail if local gsd-tools.cjs is missing (#3668) _GSD_SHIM_NAME="gsd-tools.cjs" GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/${_GSD_SHIM_NAME}" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/docs-update.md b/get-shit-done/workflows/docs-update.md index 6f1444df1..2d6570621 100644 --- a/get-shit-done/workflows/docs-update.md +++ b/get-shit-done/workflows/docs-update.md @@ -14,14 +14,12 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo Load docs-update context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/edit-phase.md b/get-shit-done/workflows/edit-phase.md index 6dd0e1ab4..e0a19ab96 100644 --- a/get-shit-done/workflows/edit-phase.md +++ b/get-shit-done/workflows/edit-phase.md @@ -34,14 +34,12 @@ Exit. Load phase operation context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/eval-review.md b/get-shit-done/workflows/eval-review.md index ed510474b..2f8ddb2b9 100644 --- a/get-shit-done/workflows/eval-review.md +++ b/get-shit-done/workflows/eval-review.md @@ -13,14 +13,12 @@ Use after /gsd:execute-phase to verify that the evaluation strategy from AI-SPEC ## 0. Initialize ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/execute-phase.md b/get-shit-done/workflows/execute-phase.md index 1381fa141..435ed9898 100644 --- a/get-shit-done/workflows/execute-phase.md +++ b/get-shit-done/workflows/execute-phase.md @@ -66,14 +66,12 @@ If `--wave` is absent, preserve the current behavior of executing all incomplete Load all context in one call: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -376,7 +374,7 @@ CROSS_AI_TIMEOUT=$($GSD_SDK query config-get workflow.cross_ai_timeout 2>/dev/nu **If no plans are marked for cross-AI:** Skip to execute_waves. **If plans are marked but `cross_ai_command` is empty:** Error — tell user to set -`workflow.cross_ai_command` via `gsd-sdk query config-set workflow.cross_ai_command ""`. +`workflow.cross_ai_command` via `gsd-tools.cjs query config-set workflow.cross_ai_command ""`. **For each cross-AI plan (sequentially):** @@ -951,7 +949,7 @@ increases monotonically across waves. `{status}` is `complete` (success), Report failed plan and ask Continue/Stop; continuing may cascade into dependent plan failures. 7b. **Pre-wave dependency check (waves 2+ only):** - Before wave N+1, run `gsd-sdk query verify.key-links {phase_dir}/{plan}-PLAN.md` for each upcoming plan. + Before wave N+1, run `gsd-tools.cjs query verify.key-links {phase_dir}/{plan}-PLAN.md` for each upcoming plan. If any PRIOR-wave artifact link fails, present: - `## Cross-Plan Wiring Gap` with plan/link/from/pattern rows - Options: investigate+fix before continue, or continue with cascade risk @@ -1702,7 +1700,7 @@ For 1M+ context models, consider: -- **Quota / rate-limit (any runtime — #3095):** Agent return body contains a sentinel like `usage limit`, `rate limit`, `429`, `too many requests`, `RESOURCE_EXHAUSTED`, `usage_limit_reached`. Route via `gsd-sdk query agent.classify-failure` → `class: "quota-exceeded"`. Do not offer retry-now; the right action is wait-for-reset and resume. +- **Quota / rate-limit (any runtime — #3095):** Agent return body contains a sentinel like `usage limit`, `rate limit`, `429`, `too many requests`, `RESOURCE_EXHAUSTED`, `usage_limit_reached`. Route via `gsd-tools.cjs query agent.classify-failure` → `class: "quota-exceeded"`. Do not offer retry-now; the right action is wait-for-reset and resume. - **classifyHandoffIfNeeded false failure:** Agent reports "failed" but error is `classifyHandoffIfNeeded is not defined` → Claude Code bug, not GSD. Spot-check (SUMMARY exists, commits present) → if pass, treat as success - **Agent fails mid-plan:** Missing SUMMARY.md → report, ask user how to proceed - **Dependency chain breaks:** Wave 1 fails → Wave 2 dependents likely fail → user chooses attempt or skip diff --git a/get-shit-done/workflows/execute-plan.md b/get-shit-done/workflows/execute-plan.md index b9f725d1f..442be5a6e 100644 --- a/get-shit-done/workflows/execute-plan.md +++ b/get-shit-done/workflows/execute-plan.md @@ -30,14 +30,12 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo Load execution context (paths only to minimize orchestrator context): ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -61,7 +59,7 @@ Find first PLAN without matching SUMMARY. Decimal phases supported (`01.1-hotfix ```bash PHASE=$(echo "$PLAN_PATH" | grep -oE '[0-9]+(\.[0-9]+)?-[0-9]+') -# config settings can be fetched via gsd-sdk query config-get if needed +# config settings can be fetched via gsd-tools.cjs query config-get if needed ``` @@ -386,7 +384,7 @@ Next: more plans → "Ready for {next-plan}" | last → "Phase complete, ready f handles STATE.md/ROADMAP.md updates centrally after merging worktrees to avoid merge conflicts). -Update STATE.md using gsd-sdk query (or legacy gsd-tools) state mutations: +Update STATE.md using gsd-tools.cjs query (or legacy gsd-tools) state mutations: ```bash # Auto-detect parallel mode: .git is a file in worktrees, a directory in main repo @@ -423,7 +421,7 @@ $GSD_SDK query state.add-blocker --text-file "${BLOCKER_TEXT_FILE}" -Update session info using gsd-sdk query (or legacy gsd-tools): +Update session info using gsd-tools.cjs query (or legacy gsd-tools): ```bash $GSD_SDK query state.record-session \ diff --git a/get-shit-done/workflows/explore.md b/get-shit-done/workflows/explore.md index 91c219ea8..317e5ede4 100644 --- a/get-shit-done/workflows/explore.md +++ b/get-shit-done/workflows/explore.md @@ -115,14 +115,12 @@ For each selected output, write the file: Commit if `commit_docs` is enabled: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/extract-learnings.md b/get-shit-done/workflows/extract-learnings.md index 7ce2b9f93..2e98e7519 100644 --- a/get-shit-done/workflows/extract-learnings.md +++ b/get-shit-done/workflows/extract-learnings.md @@ -16,14 +16,12 @@ Analyze completed phase artifacts (PLAN.md, SUMMARY.md, VERIFICATION.md, UAT.md, Parse arguments and load project state: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/forensics.md b/get-shit-done/workflows/forensics.md index 82975d352..891312b24 100644 --- a/get-shit-done/workflows/forensics.md +++ b/get-shit-done/workflows/forensics.md @@ -272,14 +272,12 @@ gh issue create \ ## Step 8: Update STATE.md ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/graduation.md b/get-shit-done/workflows/graduation.md index be5bc90dc..d12d7fcd0 100644 --- a/get-shit-done/workflows/graduation.md +++ b/get-shit-done/workflows/graduation.md @@ -21,14 +21,12 @@ Read from project config (`config.json`): ## Step 1: Guard Checks ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/health.md b/get-shit-done/workflows/health.md index 5c2cd82f2..8157cff6f 100644 --- a/get-shit-done/workflows/health.md +++ b/get-shit-done/workflows/health.md @@ -49,14 +49,12 @@ available — replace the prompt with a plain-text two-question sequence plain text from the user's response. ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/import.md b/get-shit-done/workflows/import.md index 24953d5f2..e4dbc7fdf 100644 --- a/get-shit-done/workflows/import.md +++ b/get-shit-done/workflows/import.md @@ -176,14 +176,12 @@ 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: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/insert-phase.md b/get-shit-done/workflows/insert-phase.md index b492a4846..db56f75d6 100644 --- a/get-shit-done/workflows/insert-phase.md +++ b/get-shit-done/workflows/insert-phase.md @@ -34,14 +34,12 @@ Validate first argument is an integer. Load phase operation context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -57,7 +55,7 @@ Exit. -**Delegate the phase insertion to `gsd-sdk query phase.insert`:** +**Delegate the phase insertion to `gsd-tools.cjs query phase.insert`:** ```bash RESULT=$($GSD_SDK query phase.insert "${after_phase}" "${description}") @@ -153,10 +151,10 @@ Project state updated: .planning/STATE.md Phase insertion is complete when: -- [ ] `gsd-sdk query phase.insert` executed successfully +- [ ] `gsd-tools.cjs query phase.insert` executed successfully - [ ] Phase directory created - [ ] Roadmap updated with new phase entry (includes "(INSERTED)" marker) -- [ ] `gsd-sdk query state.add-roadmap-evolution ...` returned `{ added: true }` or `{ added: false, reason: "duplicate" }` -- [ ] `gsd-sdk query state.patch` returned matched next-phase pointer field(s) +- [ ] `gsd-tools.cjs query state.add-roadmap-evolution ...` returned `{ added: true }` or `{ added: false, reason: "duplicate" }` +- [ ] `gsd-tools.cjs query state.patch` returned matched next-phase pointer field(s) - [ ] User informed of next steps and dependency implications diff --git a/get-shit-done/workflows/list-workspaces.md b/get-shit-done/workflows/list-workspaces.md index 92664926d..a702b6366 100644 --- a/get-shit-done/workflows/list-workspaces.md +++ b/get-shit-done/workflows/list-workspaces.md @@ -11,14 +11,12 @@ Read all files referenced by the invoking prompt's execution_context before star ## 1. Setup ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/manager.md b/get-shit-done/workflows/manager.md index b9979e082..352eb7906 100644 --- a/get-shit-done/workflows/manager.md +++ b/get-shit-done/workflows/manager.md @@ -19,14 +19,12 @@ Read all files referenced by the invoking prompt's execution_context before star Bootstrap via manager init: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -41,7 +39,7 @@ Parse JSON for: `milestone_version`, `milestone_name`, `phase_count`, `completed - `manager_flags.plan` — appended to plan agent init command - `manager_flags.execute` — appended to execute agent init command -These are empty strings by default. Set via: `gsd-sdk query config-set manager.flags.discuss "--auto --analyze"` +These are empty strings by default. Set via: `gsd-tools.cjs query config-set manager.flags.discuss "--auto --analyze"` **If error:** Display the error message and exit. diff --git a/get-shit-done/workflows/map-codebase.md b/get-shit-done/workflows/map-codebase.md index 31aa82106..d5b368ecc 100644 --- a/get-shit-done/workflows/map-codebase.md +++ b/get-shit-done/workflows/map-codebase.md @@ -69,14 +69,12 @@ documents refreshed. Load codebase mapping context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/milestone-summary.md b/get-shit-done/workflows/milestone-summary.md index 6bb75a440..691ea2c9a 100644 --- a/get-shit-done/workflows/milestone-summary.md +++ b/get-shit-done/workflows/milestone-summary.md @@ -53,14 +53,12 @@ Read all files that exist. Missing files are fine — the summary adapts to what Find all phase directories: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/mvp-phase.md b/get-shit-done/workflows/mvp-phase.md index 6be97d256..85b1bed40 100644 --- a/get-shit-done/workflows/mvp-phase.md +++ b/get-shit-done/workflows/mvp-phase.md @@ -34,14 +34,12 @@ Normalize per `@~/.claude/get-shit-done/references/phase-argument-parsing.md` (z ## 2. Validate phase exists and check status ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/new-milestone.md b/get-shit-done/workflows/new-milestone.md index 6ec345337..c9faa2346 100644 --- a/get-shit-done/workflows/new-milestone.md +++ b/get-shit-done/workflows/new-milestone.md @@ -181,14 +181,12 @@ blockers, todos) is preserved across the switch — symmetric with `milestone.complete`. ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/new-project.md b/get-shit-done/workflows/new-project.md index 2f17bd5b8..fca0f5454 100644 --- a/get-shit-done/workflows/new-project.md +++ b/get-shit-done/workflows/new-project.md @@ -57,14 +57,12 @@ The document should describe what you want to build. **MANDATORY FIRST STEP — Execute these checks before ANY user interaction:** ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/new-workspace.md b/get-shit-done/workflows/new-workspace.md index a54c7bf23..b512467e9 100644 --- a/get-shit-done/workflows/new-workspace.md +++ b/get-shit-done/workflows/new-workspace.md @@ -13,14 +13,12 @@ Read all files referenced by the invoking prompt's execution_context before star **MANDATORY FIRST STEP — Execute init command:** ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/next.md b/get-shit-done/workflows/next.md index e317f1377..a488f37f9 100644 --- a/get-shit-done/workflows/next.md +++ b/get-shit-done/workflows/next.md @@ -14,14 +14,12 @@ Read project state to determine current position: ```bash # Get state snapshot -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -94,7 +92,7 @@ Use `--force` to bypass this check. Exit. **Prior-phase completeness scan:** -After passing all three hard-stop gates, scan all phases that precede the current phase in ROADMAP.md order for incomplete work. For each prior phase number `N`, use `gsd-sdk query find-phase ` JSON (plans, summaries, incomplete_plans, etc.) to inspect that phase. +After passing all three hard-stop gates, scan all phases that precede the current phase in ROADMAP.md order for incomplete work. For each prior phase number `N`, use `gsd-tools.cjs query find-phase ` JSON (plans, summaries, incomplete_plans, etc.) to inspect that phase. Detect three categories of incomplete work: 1. **Plans without summaries** — a PLAN.md exists in a prior phase directory but no matching SUMMARY.md exists (execution started but not completed). diff --git a/get-shit-done/workflows/pause-work.md b/get-shit-done/workflows/pause-work.md index 55b5fd23a..3bd87ffa3 100644 --- a/get-shit-done/workflows/pause-work.md +++ b/get-shit-done/workflows/pause-work.md @@ -66,14 +66,12 @@ Report any summaries with placeholder content as incomplete items. **Write structured handoff to `.planning/HANDOFF.json`:** ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/plan-milestone-gaps.md b/get-shit-done/workflows/plan-milestone-gaps.md index d8f1e6d89..e4c4a6e5f 100644 --- a/get-shit-done/workflows/plan-milestone-gaps.md +++ b/get-shit-done/workflows/plan-milestone-gaps.md @@ -65,14 +65,12 @@ Gap: Flow "View dashboard" broken at data fetch Find highest existing phase: ```bash # Get sorted phase list, extract last one -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/plan-phase.md b/get-shit-done/workflows/plan-phase.md index 6356a5a31..f37ccf75b 100644 --- a/get-shit-done/workflows/plan-phase.md +++ b/get-shit-done/workflows/plan-phase.md @@ -31,14 +31,12 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo Load all context in one call (paths only to minimize orchestrator context): ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -329,7 +327,7 @@ $GSD_SDK query commit "docs(${padded_phase}): generate context from PRD" --files 3. Status gate: reject `superseded`/`rejected`/`deprecated`; warn on `proposed`; missing status defaults to `accepted`. 4. Empty-decisions fallback: if all parsed ADRs have zero `decisions[]`, emit `ADR ingest produced no locked decisions; fall back to discuss-phase for this phase.` and exit with `/gsd:discuss-phase {N}` guidance. 5. Generate CONTEXT.md using ``, ``, ``, ``, ``, ``, map `consequences_positive[]` to Success Criteria and `consequences_negative[]` to Risk Summary, and include `**Source:** ADR Ingest Express Path ({INGEST_PATH})`. -6. Commit with `gsd-sdk query commit "docs(${padded_phase}): generate context from ADR ingest" --files "${phase_dir}/${padded_phase}-CONTEXT.md"` and set `context_content`; continue to step 5. +6. Commit with `gsd-tools.cjs query commit "docs(${padded_phase}): generate context from ADR ingest" --files "${phase_dir}/${padded_phase}-CONTEXT.md"` and set `context_content`; continue to step 5. **Effect:** This bypasses step 4 (Load CONTEXT.md) since CONTEXT.md was synthesized from ADR input. @@ -801,7 +799,7 @@ VALIDATION_EXISTS=$(ls "${PHASE_DIR}"/*-VALIDATION.md 2>/dev/null | head -1) If missing and Nyquist is still enabled/applicable — ask user: 1. Re-run: `/gsd:plan-phase {PHASE} --research ${GSD_WS}` 2. Disable Nyquist with the exact command: - `gsd-sdk query config-set workflow.nyquist_validation false` + `gsd-tools.cjs query config-set workflow.nyquist_validation false` 3. Continue anyway (plans fail Dimension 8) Proceed to Step 7.8 (or Step 8 if pattern mapper is disabled) only if user selects 2 or 3. diff --git a/get-shit-done/workflows/plan-review-convergence.md b/get-shit-done/workflows/plan-review-convergence.md index d0520e637..cbe57172a 100644 --- a/get-shit-done/workflows/plan-review-convergence.md +++ b/get-shit-done/workflows/plan-review-convergence.md @@ -43,14 +43,12 @@ echo "$ARGUMENTS" | grep -qE '\-\-ws\s+\S+' && GSD_WS=$(echo "$ARGUMENTS" | grep ## 1.5. Config Gate (feature disabled by default) ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/plant-seed.md b/get-shit-done/workflows/plant-seed.md index 817d82980..60eeba366 100644 --- a/get-shit-done/workflows/plant-seed.md +++ b/get-shit-done/workflows/plant-seed.md @@ -135,14 +135,12 @@ Store relevant file paths as `$BREADCRUMBS`. ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/profile-user.md b/get-shit-done/workflows/profile-user.md index b28388486..5e6c8eff6 100644 --- a/get-shit-done/workflows/profile-user.md +++ b/get-shit-done/workflows/profile-user.md @@ -1,7 +1,7 @@ Orchestrate the full developer profiling flow: consent, session analysis (or questionnaire fallback), profile generation, result display, and artifact creation. -This workflow wires Phase 1 (session pipeline) and Phase 2 (profiling engine) into a cohesive user-facing experience. All heavy lifting is done by existing `gsd-sdk query` handlers (with legacy `gsd-tools.cjs` parity where needed) and the gsd-user-profiler agent -- this workflow orchestrates the sequence, handles branching, and provides the UX. +This workflow wires Phase 1 (session pipeline) and Phase 2 (profiling engine) into a cohesive user-facing experience. All heavy lifting is done by existing `gsd-tools.cjs query` handlers (with legacy `gsd-tools.cjs` parity where needed) and the gsd-user-profiler agent -- this workflow orchestrates the sequence, handles branching, and provides the UX. @@ -130,14 +130,12 @@ Display: "◆ Scanning sessions..." Run session scan: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -382,7 +380,7 @@ $GSD_SDK query generate-claude-profile --analysis "$ANALYSIS_PATH" --global --js Display: "✓ Added profile section to $HOME/.claude/CLAUDE.md" -**Error handling:** If any `gsd-sdk query` or gsd-tools.cjs call fails, display the error message and use AskUserQuestion to offer "Retry" or "Skip this artifact". On retry, re-run the command. On skip, continue to next artifact. +**Error handling:** If any `gsd-tools.cjs query` or gsd-tools.cjs call fails, display the error message and use AskUserQuestion to offer "Retry" or "Skip this artifact". On retry, re-run the command. On skip, continue to next artifact. --- @@ -457,7 +455,7 @@ rm -f "$ANALYSIS_PATH" 2>/dev/null - [ ] Profile written to USER-PROFILE.md via write-profile subcommand - [ ] Result display shows report card table and highlight reel with evidence - [ ] Artifact selection uses multiSelect with all options pre-selected -- [ ] Artifacts generated sequentially via gsd-sdk query (or gsd-tools.cjs) subcommands +- [ ] Artifacts generated sequentially via gsd-tools.cjs query (or gsd-tools.cjs) subcommands - [ ] Refresh diff shows changed dimensions when --refresh was used - [ ] Temp files cleaned up on completion diff --git a/get-shit-done/workflows/progress.md b/get-shit-done/workflows/progress.md index a241021ba..c9e815812 100644 --- a/get-shit-done/workflows/progress.md +++ b/get-shit-done/workflows/progress.md @@ -12,14 +12,12 @@ Read all files referenced by the invoking prompt's execution_context before star **Load progress context (paths only):** ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -53,11 +51,11 @@ If missing both ROADMAP.md and PROJECT.md: suggest `/gsd:new-project`. -**Use structured extraction from `gsd-sdk query` (or legacy gsd-tools.cjs):** +**Use structured extraction from `gsd-tools.cjs query` (or legacy gsd-tools.cjs):** Instead of reading full files, use targeted tools to get only the data needed for the report: -- `ROADMAP=$(gsd-sdk query roadmap.analyze)` -- `STATE=$(gsd-sdk query state-snapshot)` +- `ROADMAP=$(gsd-tools.cjs query roadmap.analyze)` +- `STATE=$(gsd-tools.cjs query state-snapshot)` This minimizes orchestrator context usage. @@ -105,7 +103,7 @@ Use this instead of manually reading/parsing ROADMAP.md. > blocks are a secondary config aid that may be significantly stale — do NOT use the > CLAUDE.md project description as a source for any progress report field. -**Generate progress bar from `gsd-sdk query progress` / `progress.json`, then present rich status report:** +**Generate progress bar from `gsd-tools.cjs query progress` / `progress.json`, then present rich status report:** ```bash # Get formatted progress bar diff --git a/get-shit-done/workflows/quick.md b/get-shit-done/workflows/quick.md index 8ba14522d..e301045ae 100644 --- a/get-shit-done/workflows/quick.md +++ b/get-shit-done/workflows/quick.md @@ -125,14 +125,12 @@ If `$VALIDATE_MODE` only: **Step 2: Initialize** ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -961,7 +959,7 @@ Use Edit tool to make these changes atomically **Step 8: Final commit and completion** -Stage and commit quick task artifacts. This step MUST always run — even if the executor already committed some files (e.g. when running without worktree isolation). The `gsd-sdk query commit` command (or legacy `gsd-tools.cjs` commit) handles already-committed files gracefully. +Stage and commit quick task artifacts. This step MUST always run — even if the executor already committed some files (e.g. when running without worktree isolation). The `gsd-tools.cjs query commit` command (or legacy `gsd-tools.cjs` commit) handles already-committed files gracefully. Build file list: - `${QUICK_DIR}/${quick_id}-PLAN.md` diff --git a/get-shit-done/workflows/remove-phase.md b/get-shit-done/workflows/remove-phase.md index b87064b45..a61c4e3f6 100644 --- a/get-shit-done/workflows/remove-phase.md +++ b/get-shit-done/workflows/remove-phase.md @@ -29,14 +29,12 @@ Exit. Load phase operation context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -88,7 +86,7 @@ Wait for confirmation. -**Delegate the entire removal operation to `gsd-sdk query phase.remove`:** +**Delegate the entire removal operation to `gsd-tools.cjs query phase.remove`:** ```bash RESULT=$($GSD_SDK query phase.remove "${target}") @@ -151,7 +149,7 @@ Would you like to: - Don't remove completed phases (have SUMMARY.md files) without --force - Don't remove current or past phases -- Don't manually renumber — use `gsd-sdk query phase.remove` which handles all renumbering +- Don't manually renumber — use `gsd-tools.cjs query phase.remove` which handles all renumbering - Don't add "removed phase" notes to STATE.md — git commit is the record - Don't modify completed phase directories @@ -160,7 +158,7 @@ Would you like to: Phase removal is complete when: - [ ] Target phase validated as future/unstarted -- [ ] `gsd-sdk query phase.remove` executed successfully +- [ ] `gsd-tools.cjs query phase.remove` executed successfully - [ ] Changes committed with descriptive message - [ ] User informed of changes diff --git a/get-shit-done/workflows/remove-workspace.md b/get-shit-done/workflows/remove-workspace.md index b9ec76139..d04ba6356 100644 --- a/get-shit-done/workflows/remove-workspace.md +++ b/get-shit-done/workflows/remove-workspace.md @@ -13,14 +13,12 @@ Read all files referenced by the invoking prompt's execution_context before star Extract workspace name from $ARGUMENTS. ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/resume-project.md b/get-shit-done/workflows/resume-project.md index 74e026175..d7dbe5b6b 100644 --- a/get-shit-done/workflows/resume-project.md +++ b/get-shit-done/workflows/resume-project.md @@ -20,14 +20,12 @@ Instantly restore full project context so "Where were we?" has an immediate, com Load all context in one call: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/review.md b/get-shit-done/workflows/review.md index d14ed4378..8e35a4982 100644 --- a/get-shit-done/workflows/review.md +++ b/get-shit-done/workflows/review.md @@ -24,14 +24,12 @@ command -v qwen >/dev/null 2>&1 && echo "qwen:available" || echo "qwen:missing" command -v cursor >/dev/null 2>&1 && echo "cursor:available" || echo "cursor:missing" # Check local model servers (OpenAI-compatible HTTP API — no CLI binary required) -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -223,7 +221,7 @@ Note: The variable names above (`INSTRUCTIONS_BLOCK_FILE`, `ROADMAP_SECTION_FILE Read model preferences from planning config. Null/missing values fall back to CLI defaults. ```bash -# JSON scalars from gsd-sdk query; use jq -r to strip JSON string quotes (install jq if missing) +# JSON scalars from gsd-tools.cjs query; use jq -r to strip JSON string quotes (install jq if missing) GEMINI_MODEL=$($GSD_SDK query config-get review.models.gemini 2>/dev/null | jq -r '.' 2>/dev/null || true) CLAUDE_MODEL=$($GSD_SDK query config-get review.models.claude 2>/dev/null | jq -r '.' 2>/dev/null || true) CODEX_MODEL=$($GSD_SDK query config-get review.models.codex 2>/dev/null | jq -r '.' 2>/dev/null || true) diff --git a/get-shit-done/workflows/scan.md b/get-shit-done/workflows/scan.md index ef258cbc0..7a81f2ac3 100644 --- a/get-shit-done/workflows/scan.md +++ b/get-shit-done/workflows/scan.md @@ -39,14 +39,12 @@ Exit. ## Step 2: Check for existing documents ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/secure-phase.md b/get-shit-done/workflows/secure-phase.md index cfcb26f81..ce314eee1 100644 --- a/get-shit-done/workflows/secure-phase.md +++ b/get-shit-done/workflows/secure-phase.md @@ -16,14 +16,12 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/settings-advanced.md b/get-shit-done/workflows/settings-advanced.md index 129fc92f1..8b7114ad7 100644 --- a/get-shit-done/workflows/settings-advanced.md +++ b/get-shit-done/workflows/settings-advanced.md @@ -20,14 +20,12 @@ Read all files referenced by the invoking prompt's execution_context before star Ensure config exists and resolve the workstream-aware config path (mirrors `settings.md`): ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -432,7 +430,7 @@ AskUserQuestion([ If "Other (Group B or custom)" is selected, prompt the user to enter the runtime name as a free-text string. If the selected runtime differs from the stored `runtime` key, update `runtime` via -`gsd-sdk query config-set runtime ` before proceeding to Step C. +`gsd-tools.cjs query config-set runtime ` before proceeding to Step C. **Step C — Configure tier overrides for the selected runtime:** @@ -492,7 +490,7 @@ change. Merge the new settings into the existing config at `$GSD_CONFIG_PATH`. This merge is the core correctness invariant: **preserve every unrelated key** — do not clobber siblings. -Apply each selected value via `gsd-sdk query config-set ` so the central +Apply each selected value via `gsd-tools.cjs query config-set ` so the central validator (`isValidConfigKey`) accepts the write and the deep-merge preserves unrelated keys and sibling sub-objects. @@ -557,7 +555,7 @@ anything not listed in Sections 1–7 MUST survive the update): ``` Never emit a full overwrite of the file that omits keys the user did not touch. Always -route each write through `gsd-sdk query config-set` so sibling preservation is handled by +route each write through `gsd-tools.cjs query config-set` so sibling preservation is handled by the central setter. @@ -612,7 +610,7 @@ UI/AI phase gates), use /gsd:settings. - [ ] Numeric inputs validated — non-numeric rejected and re-prompted - [ ] Branch-template inputs validated — non-default must contain a placeholder - [ ] Null-allowed fields accept an empty input as a clear -- [ ] Writes routed through `gsd-sdk query config-set` so unrelated keys are preserved +- [ ] Writes routed through `gsd-tools.cjs query config-set` so unrelated keys are preserved - [ ] Section 7 shows current runtime and built-in tier table - [ ] Group B runtimes display "(no built-in default — your runtime handles model selection)" - [ ] Override set/clear/keep paths all work correctly for each tier diff --git a/get-shit-done/workflows/settings-integrations.md b/get-shit-done/workflows/settings-integrations.md index 447b0bad0..cebb51613 100644 --- a/get-shit-done/workflows/settings-integrations.md +++ b/get-shit-done/workflows/settings-integrations.md @@ -2,7 +2,7 @@ Interactive configuration of third-party integrations for GSD — search API keys (Brave / Firecrawl / Exa), code-review CLI routing (`review.models.`), and agent-skill injection (`agent_skills.`). Writes to -`.planning/config.json` via `gsd-sdk`/`gsd-tools` so unrelated keys are +`.planning/config.json` via `gsd-tools` so unrelated keys are preserved, never clobbered. This command is deliberately separate from `/gsd:settings` (workflow toggles) @@ -42,14 +42,12 @@ Read all files referenced by the invoking prompt's execution_context before star Ensure config exists and resolve the active config path (flat vs workstream, #2282): ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/settings.md b/get-shit-done/workflows/settings.md index 2a328f204..2f269aae6 100644 --- a/get-shit-done/workflows/settings.md +++ b/get-shit-done/workflows/settings.md @@ -12,14 +12,12 @@ Read all files referenced by the invoking prompt's execution_context before star Ensure config exists and load current state: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -424,7 +422,7 @@ Merge new settings into existing config.json: } ``` -**Safe merge:** Apply each chosen value via `gsd-sdk query config-set ` so unrelated keys are never clobbered. `code_review_depth` is written only if the code_review question was answered `on`; otherwise leave the existing value in place. `model_profile` is written on Q1 "Adaptive (Recommended)" (→ adaptive) or Q1 "Inherit" (→ inherit) immediately; for Q1 "Standard tier…", `model_profile` is written from Q2's answer. If Q1 = "Standard tier…" but Q2 is cancelled, leave the existing `model_profile` value unchanged — do not write any new value. +**Safe merge:** Apply each chosen value via `gsd-tools.cjs query config-set ` so unrelated keys are never clobbered. `code_review_depth` is written only if the code_review question was answered `on`; otherwise leave the existing value in place. `model_profile` is written on Q1 "Adaptive (Recommended)" (→ adaptive) or Q1 "Inherit" (→ inherit) immediately; for Q1 "Standard tier…", `model_profile` is written from Q2's answer. If Q1 = "Standard tier…" but Q2 is cancelled, leave the existing `model_profile` value unchanged — do not write any new value. Write updated config to `$GSD_CONFIG_PATH` (the workstream-aware path resolved in `ensure_and_load_config`). Never hardcode `.planning/config.json` — workstream installs route to `.planning/workstreams//config.json`. diff --git a/get-shit-done/workflows/ship.md b/get-shit-done/workflows/ship.md index 9b1bcf55f..79a599043 100644 --- a/get-shit-done/workflows/ship.md +++ b/get-shit-done/workflows/ship.md @@ -12,14 +12,12 @@ Read all files referenced by the invoking prompt's execution_context before star Parse arguments and load project state: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/sketch-wrap-up.md b/get-shit-done/workflows/sketch-wrap-up.md index e8fa2be7f..3695ac51d 100644 --- a/get-shit-done/workflows/sketch-wrap-up.md +++ b/get-shit-done/workflows/sketch-wrap-up.md @@ -37,14 +37,12 @@ Exit. Check `commit_docs` config: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/sketch.md b/get-shit-done/workflows/sketch.md index f27dff7a9..f27c006b3 100644 --- a/get-shit-done/workflows/sketch.md +++ b/get-shit-done/workflows/sketch.md @@ -99,14 +99,12 @@ ls -d .planning/sketches/[0-9][0-9][0-9]-* 2>/dev/null | sort | tail -1 Check `commit_docs` config: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/spike-wrap-up.md b/get-shit-done/workflows/spike-wrap-up.md index 408825a3e..28250cefa 100644 --- a/get-shit-done/workflows/spike-wrap-up.md +++ b/get-shit-done/workflows/spike-wrap-up.md @@ -37,14 +37,12 @@ Exit. Check `commit_docs` config: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/spike.md b/get-shit-done/workflows/spike.md index 379c224d3..e41429ede 100644 --- a/get-shit-done/workflows/spike.md +++ b/get-shit-done/workflows/spike.md @@ -96,14 +96,12 @@ ls -d .planning/spikes/[0-9][0-9][0-9]-* 2>/dev/null | sort | tail -1 Check `commit_docs` config: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/stats.md b/get-shit-done/workflows/stats.md index 8915b8f1a..73f4b4014 100644 --- a/get-shit-done/workflows/stats.md +++ b/get-shit-done/workflows/stats.md @@ -12,14 +12,12 @@ Read all files referenced by the invoking prompt's execution_context before star Gather project statistics: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -63,7 +61,7 @@ If no `.planning/` directory exists, inform the user to run `/gsd:new-project` f -**MVP phase summary.** Read all phases via `gsd-sdk query roadmap.analyze` (Phase 1's `cmdRoadmapAnalyze` surfaces a `mode` field per phase). Count phases by mode: +**MVP phase summary.** Read all phases via `gsd-tools.cjs query roadmap.analyze` (Phase 1's `cmdRoadmapAnalyze` surfaces a `mode` field per phase). Count phases by mode: ```bash ANALYZE=$($GSD_SDK query roadmap.analyze) diff --git a/get-shit-done/workflows/thread.md b/get-shit-done/workflows/thread.md index 8348ff44c..f7d3f465c 100644 --- a/get-shit-done/workflows/thread.md +++ b/get-shit-done/workflows/thread.md @@ -28,14 +28,12 @@ ls .planning/threads/*.md 2>/dev/null For each thread file found: - Read frontmatter `status` field via: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -227,6 +225,6 @@ updated: {today ISO date} - Slugs from $ARGUMENTS are sanitized before use in file paths: only [a-z0-9-] allowed, max 60 chars, reject ".." and "/" - File names from readdir/ls are sanitized before display: strip non-printable chars and ANSI sequences - Artifact content (thread titles, goal sections, next steps) rendered as plain text only — never executed or passed to agent prompts without DATA_START/DATA_END boundaries -- Status fields read via gsd-sdk query frontmatter.get — never eval'd or shell-expanded -- The generate-slug call for new threads runs through gsd-sdk query (or gsd-tools) which sanitizes input — keep that pattern +- Status fields read via gsd-tools.cjs query frontmatter.get — never eval'd or shell-expanded +- The generate-slug call for new threads runs through gsd-tools.cjs query (or gsd-tools) which sanitizes input — keep that pattern diff --git a/get-shit-done/workflows/transition.md b/get-shit-done/workflows/transition.md index 2e80c1c6d..c700eb58e 100644 --- a/get-shit-done/workflows/transition.md +++ b/get-shit-done/workflows/transition.md @@ -160,17 +160,15 @@ If found, delete them — phase is complete, handoffs are stale. -**Delegate ROADMAP.md and STATE.md updates to `gsd-sdk query phase.complete`:** +**Delegate ROADMAP.md and STATE.md updates to `gsd-tools.cjs query phase.complete`:** ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -306,7 +304,7 @@ This step is fully delegated to `graduation.md`. It handles guard checks (featur -**Note:** Basic position updates (Current Phase, Status, Current Plan, Last Activity) were already handled by `gsd-sdk query phase.complete` in the update_roadmap_and_state step. +**Note:** Basic position updates (Current Phase, Status, Current Plan, Last Activity) were already handled by `gsd-tools.cjs query phase.complete` in the update_roadmap_and_state step. Verify the updates are correct by reading STATE.md. If the progress bar needs updating, use: @@ -410,7 +408,7 @@ Resume file: None **MANDATORY: Verify milestone status before presenting next steps.** -**Use the transition result from `gsd-sdk query phase.complete`:** +**Use the transition result from `gsd-tools.cjs query phase.complete`:** The `is_last_phase` field from the phase complete result tells you directly: - `is_last_phase: false` → More phases remain → Go to **Route A** diff --git a/get-shit-done/workflows/ui-phase.md b/get-shit-done/workflows/ui-phase.md index 7e731073e..40d1b812e 100644 --- a/get-shit-done/workflows/ui-phase.md +++ b/get-shit-done/workflows/ui-phase.md @@ -19,14 +19,12 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 1. Initialize ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/ui-review.md b/get-shit-done/workflows/ui-review.md index e1165b29b..9a81f7448 100644 --- a/get-shit-done/workflows/ui-review.md +++ b/get-shit-done/workflows/ui-review.md @@ -16,14 +16,12 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/ultraplan-phase.md b/get-shit-done/workflows/ultraplan-phase.md index d35ea85f4..84be39a52 100644 --- a/get-shit-done/workflows/ultraplan-phase.md +++ b/get-shit-done/workflows/ultraplan-phase.md @@ -66,14 +66,12 @@ unplanned phase from the roadmap (same logic as /gsd:plan-phase). Load GSD phase context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/update.md b/get-shit-done/workflows/update.md index 16a5044f4..92d3be874 100644 --- a/get-shit-done/workflows/update.md +++ b/get-shit-done/workflows/update.md @@ -457,9 +457,9 @@ installer does not know about and will delete during the wipe. **Do not use bash path-stripping (`${filepath#$RUNTIME_DIR/}`) or `node -e require()` inline** — those patterns fail when `$RUNTIME_DIR` is unset and the stripped relative path may not match manifest key format, which causes CUSTOM_COUNT=0 -even when custom files exist (bug #1997). Use `gsd-sdk query detect-custom-files` -when `gsd-sdk` is on `PATH`, or the bundled `gsd-tools.cjs detect-custom-files` -otherwise — both resolve paths reliably with Node.js `path.relative()`. +even when custom files exist (bug #1997). Use `gsd-tools.cjs query detect-custom-files` +or the bundled `gsd-tools.cjs detect-custom-files` path — both resolve paths +reliably with Node.js `path.relative()`. First, resolve the config directory (`RUNTIME_DIR`) from the install scope detected in `get_installed_version`: @@ -480,15 +480,13 @@ fi If `RUNTIME_DIR` is empty or does not exist, skip this step (no config dir to inspect). -Otherwise run `detect-custom-files` (prefer SDK when available): +Otherwise run `detect-custom-files`: ```bash GSD_TOOLS="$RUNTIME_DIR/get-shit-done/bin/gsd-tools.cjs" CUSTOM_JSON='' if [ -f "$GSD_TOOLS" ] && [ -n "$RUNTIME_DIR" ]; then CUSTOM_JSON=$(node "$GSD_TOOLS" detect-custom-files --config-dir "$RUNTIME_DIR" 2>/dev/null) -elif [ -n "$RUNTIME_DIR" ] && command -v gsd-sdk >/dev/null 2>&1; then - CUSTOM_JSON=$(gsd-sdk query detect-custom-files --config-dir "$RUNTIME_DIR" 2>/dev/null) fi if [ -z "$CUSTOM_JSON" ]; then CUSTOM_JSON='{"custom_files":[],"custom_count":0}' diff --git a/get-shit-done/workflows/validate-phase.md b/get-shit-done/workflows/validate-phase.md index 334be6955..1b6fef90f 100644 --- a/get-shit-done/workflows/validate-phase.md +++ b/get-shit-done/workflows/validate-phase.md @@ -16,14 +16,12 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi diff --git a/get-shit-done/workflows/verify-phase.md b/get-shit-done/workflows/verify-phase.md index 509e63043..772b91548 100644 --- a/get-shit-done/workflows/verify-phase.md +++ b/get-shit-done/workflows/verify-phase.md @@ -29,14 +29,12 @@ Then verify each level against the actual codebase. Load phase operation context: ```bash -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -64,7 +62,7 @@ Extract **phase goal** from ROADMAP.md (the outcome to verify, not tasks), **req **Option A: Must-haves in PLAN frontmatter** -Use `gsd-sdk query` verify handlers (or legacy gsd-tools) to extract must_haves from each PLAN: +Use `gsd-tools.cjs query` verify handlers (or legacy gsd-tools) to extract must_haves from each PLAN: ```bash for plan in "$PHASE_DIR"/*-PLAN.md; do @@ -114,7 +112,7 @@ For each truth: identify supporting artifacts → check artifact status → chec -Use `gsd-sdk query verify.artifacts` (or legacy gsd-tools) for artifact verification against must_haves in each PLAN: +Use `gsd-tools.cjs query verify.artifacts` (or legacy gsd-tools) for artifact verification against must_haves in each PLAN: ```bash for plan in "$PHASE_DIR"/*-PLAN.md; do @@ -157,7 +155,7 @@ wiring or leftover code from plan revisions. -Use `gsd-sdk query verify.key-links` (or legacy gsd-tools) for key link verification against must_haves in each PLAN: +Use `gsd-tools.cjs query verify.key-links` (or legacy gsd-tools) for key link verification against must_haves in each PLAN: ```bash for plan in "$PHASE_DIR"/*-PLAN.md; do diff --git a/get-shit-done/workflows/verify-work.md b/get-shit-done/workflows/verify-work.md index 05352d57c..cee9a984e 100644 --- a/get-shit-done/workflows/verify-work.md +++ b/get-shit-done/workflows/verify-work.md @@ -34,14 +34,12 @@ GSD_WS="" echo "$ARGUMENTS" | grep -qE -- '--ws[[:space:]]+[^[:space:]]+' && GSD_WS=$(echo "$ARGUMENTS" | grep -oE -- '--ws[[:space:]]+[^[:space:]]+') PHASE_ARG=$(echo "$ARGUMENTS" | sed -E 's/--ws[[:space:]]+[^[:space:]]+//g' | xargs) -# SDK resolution: prefer local gsd-tools.cjs, fall back to global gsd-sdk (#3668) +# SDK resolution: prefer local gsd-tools.cjs, fail if local gsd-tools.cjs is missing (#3668) GSD_TOOLS="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}/get-shit-done/bin/gsd-tools.cjs" if [ -f "$GSD_TOOLS" ]; then GSD_SDK="node $GSD_TOOLS" -elif command -v gsd-sdk >/dev/null 2>&1; then - GSD_SDK="gsd-sdk" else - echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 + echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS." >&2 echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi @@ -506,7 +504,7 @@ All tests passed. Phase {phase} marked complete. Run phase artifact scan to surface any open items before marking phase verified: -`audit-open` is CJS-only until registered on `gsd-sdk query`: +`audit-open` is CJS-only until registered on `gsd-tools.cjs query`: ```bash $GSD_SDK query audit-open --json