fix(#170): migrate workflow fallback hints to @opengsd package (#204)

* fix(#170): update workflow fallback install hint package

* chore(#170): add changeset for workflow fallback hint migration

* fix(#170): mark workflow-hint test as structural text contract
This commit is contained in:
Tom Boucher
2026-05-24 14:16:30 -04:00
committed by GitHub
parent 0dc3fd604c
commit aaba233f83
72 changed files with 118 additions and 70 deletions

View File

@@ -0,0 +1,5 @@
---
type: Fixed
pr: 170
---
**Workflow fallback install hint migration** — workflow error-path guidance for missing `gsd-sdk` now points to `npx -y @opengsd/get-shit-done-redux@latest --claude --local` instead of the abandoned `get-shit-done-cc` package. Added a regression test to prevent legacy fallback hints from reappearing in workflow markdown.

View File

@@ -27,7 +27,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
NEXT=$($GSD_SDK query phase.next-decimal 999 --raw)

View File

@@ -37,7 +37,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "0")

View File

@@ -41,7 +41,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -20,7 +20,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.todos)

View File

@@ -28,7 +28,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.plan-phase "$PHASE")

View File

@@ -40,7 +40,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query audit-uat 2>/dev/null || echo "{}")

View File

@@ -24,7 +24,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.milestone-op)

View File

@@ -16,7 +16,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
AUDIT=$($GSD_SDK query audit-uat --raw)

View File

@@ -56,7 +56,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.milestone-op)

View File

@@ -20,7 +20,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.todos)

View File

@@ -132,7 +132,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/

View File

@@ -26,7 +26,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -26,7 +26,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -49,7 +49,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query audit-open

View File

@@ -24,7 +24,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query state.load)

View File

@@ -66,7 +66,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
USE_WORKTREES=$($GSD_SDK query config-get workflow.use_worktrees 2>/dev/null || echo "true")

View File

@@ -72,7 +72,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE}")

View File

@@ -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 get-shit-done-cc@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" || { 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; }; }
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)
```

View File

@@ -35,7 +35,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query state.load 2>/dev/null)

View File

@@ -22,7 +22,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query docs-init)

View File

@@ -42,7 +42,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${target}")

View File

@@ -21,7 +21,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -74,7 +74,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.execute-phase "${PHASE_ARG}")

View File

@@ -38,7 +38,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.execute-phase "${PHASE}")

View File

@@ -123,7 +123,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query commit "docs: capture exploration — {topic_slug}" --files {file_list}

View File

@@ -24,7 +24,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -280,7 +280,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query state.record-session "" \

View File

@@ -29,7 +29,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
GRADUATION_ENABLED=$($GSD_SDK query config-get features.graduation 2>/dev/null || echo "true")

View File

@@ -57,7 +57,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query validate.context \

View File

@@ -184,7 +184,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "{NN}")

View File

@@ -42,7 +42,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${after_phase}")

View File

@@ -19,7 +19,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.list-workspaces)

View File

@@ -27,7 +27,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.manager)

View File

@@ -77,7 +77,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.map-codebase)

View File

@@ -61,7 +61,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query init.progress

View File

@@ -42,7 +42,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
PHASE_INFO=$($GSD_SDK query roadmap.get-phase "${PHASE}")

View File

@@ -189,7 +189,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query state.milestone-switch --milestone "v[X.Y]" --name "[Name]"

View File

@@ -65,7 +65,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.new-project)

View File

@@ -21,7 +21,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.new-workspace)

View File

@@ -22,7 +22,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query state.json 2>/dev/null || echo "{}"

View File

@@ -74,7 +74,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
timestamp=$($GSD_SDK query current-timestamp full --raw)

View File

@@ -73,7 +73,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
HIGHEST=$($GSD_SDK query phases.list --pick directories[-1])

View File

@@ -39,7 +39,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.plan-phase "$PHASE")

View File

@@ -51,7 +51,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
CONVERGENCE_ENABLED=$($GSD_SDK query config-get workflow.plan_review_convergence 2>/dev/null || echo "false")

View File

@@ -143,7 +143,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query commit "docs: plant seed — {$IDEA}" --files .planning/seeds/SEED-{PADDED}-{slug}.md

View File

@@ -138,7 +138,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
SCAN_RESULT=$($GSD_SDK query scan-sessions --json 2>/dev/null)

View File

@@ -20,7 +20,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.progress)

View File

@@ -37,7 +37,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${target}")

View File

@@ -21,7 +21,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.remove-workspace "$WORKSPACE_NAME")

View File

@@ -28,7 +28,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.resume)

View File

@@ -32,7 +32,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
OLLAMA_HOST=$($GSD_SDK query config-get review.ollama_host 2>/dev/null | jq -r '.' 2>/dev/null || echo "")

View File

@@ -47,7 +47,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.map-codebase 2>/dev/null || echo "{}")

View File

@@ -24,7 +24,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -28,7 +28,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query config-ensure-section

View File

@@ -50,7 +50,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query config-ensure-section

View File

@@ -20,7 +20,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query config-ensure-section

View File

@@ -20,7 +20,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -45,7 +45,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
COMMIT_DOCS=$($GSD_SDK query config-get commit_docs 2>/dev/null || echo "true")

View File

@@ -107,7 +107,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
COMMIT_DOCS=$($GSD_SDK query config-get commit_docs 2>/dev/null || echo "true")

View File

@@ -45,7 +45,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
COMMIT_DOCS=$($GSD_SDK query config-get commit_docs 2>/dev/null || echo "true")

View File

@@ -104,7 +104,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
COMMIT_DOCS=$($GSD_SDK query config-get commit_docs 2>/dev/null || echo "true")

View File

@@ -20,7 +20,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
STATS=$($GSD_SDK query stats.json)

View File

@@ -36,7 +36,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
$GSD_SDK query frontmatter.get .planning/threads/{file} status

View File

@@ -171,7 +171,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
TRANSITION=$($GSD_SDK query phase.complete "${current_phase}")

View File

@@ -27,7 +27,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.plan-phase "$PHASE")

View File

@@ -24,7 +24,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -74,7 +74,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.plan-phase "$PHASE")

View File

@@ -24,7 +24,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -37,7 +37,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.phase-op "${PHASE_ARG}")

View File

@@ -42,7 +42,7 @@ 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 "Run: npx get-shit-done-cc@latest --claude --local" >&2
echo "Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2
exit 1
fi
INIT=$($GSD_SDK query init.verify-work "${PHASE_ARG}" ${GSD_WS})

View File

@@ -0,0 +1,43 @@
'use strict';
// allow-test-rule: workflow markdown is shipped product text; this test validates fallback hint literals across all workflow files
const { test } = require('node:test');
const assert = require('node:assert/strict');
const fs = require('node:fs');
const path = require('node:path');
const WORKFLOWS_DIR = path.join(__dirname, '..', 'get-shit-done', 'workflows');
const LEGACY_HINT = 'npx get-shit-done-cc@latest --claude --local';
const CURRENT_HINT = 'npx -y @opengsd/get-shit-done-redux@latest --claude --local';
function findMarkdownFiles(dir) {
const out = [];
for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
const full = path.join(dir, entry.name);
if (entry.isDirectory()) out.push(...findMarkdownFiles(full));
else if (entry.isFile() && full.endsWith('.md')) out.push(full);
}
return out;
}
test('bug #170: workflow fallback hints do not reference get-shit-done-cc', () => {
const files = findMarkdownFiles(WORKFLOWS_DIR);
let legacyCount = 0;
let currentCount = 0;
for (const file of files) {
const src = fs.readFileSync(file, 'utf8');
if (src.includes(LEGACY_HINT)) legacyCount += 1;
if (src.includes(CURRENT_HINT)) currentCount += 1;
}
assert.equal(
legacyCount,
0,
`workflow fallback hints must not reference legacy package (${LEGACY_HINT})`
);
assert.ok(
currentCount > 0,
`expected at least one workflow fallback hint to use current package (${CURRENT_HINT})`
);
});