-
-
Notifications
You must be signed in to change notification settings - Fork 2.1k
Description
GSD Version
1.22.2
Runtime
Claude Code
What happened?
After updating from v1.22.1 to v1.22.2 via /gsd:update on a local install (--local), all GSD commands fail with exit code 1. The workflow files contain hardcoded $HOME/.claude/get-shit-done/... paths that point to a non-existent global directory instead of the local ./.claude/get-shit-done/....
The root cause is in bin/install.js — the copyWithPathReplacement() function only has a regex for ~/.claude/:
const globalClaudeRegex = /~\/\.claude\//g; content = content.replace(globalClaudeRegex, pathPrefix);
But the source workflow files in v1.22.2 now predominantly use $HOME/.claude/ (115 occurrences) instead of ~/.claude/ (34 occurrences). The $HOME variant passes through the installer unreplaced.
This is invisible for global installs (where $HOME/.claude/ expands correctly at runtime) but breaks local installs completely.
What did you expect?
All $HOME/.claude/ references in workflow files should be replaced with ./.claude/ for local installs, just like ~/.claude/ references are.
Steps to reproduce
- Have a project with a local GSD install (e.g., npx get-shit-done-cc --local)
- Update to v1.22.2: /gsd:update
- Run any GSD command: /gsd:progress
- Command fails with exit code 1
Verify with:
grep -c '$HOME/.claude' .claude/get-shit-done/workflows/*.md
Returns 115 (should be 0 for local installs)
Relevant logs or error messages
$ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" init progress
# Exit code 1 — file not found at /home/user/.claude/get-shit-done/bin/gsd-tools.cjs
# (only exists at ./project/.claude/get-shit-done/bin/gsd-tools.cjs)
Suggested fix — add a $HOME regex alongside the existing ~/ regex in all 3 replacement locations in bin/install.js:
const dollarHomeClaudeRegex = /\$HOME\/\.claude\//g;
content = content.replace(dollarHomeClaudeRegex, pathPrefix);
Workaround — run after install:
find .claude/get-shit-done -name '*.md' -exec sed -i 's|\$HOME/\.claude/|./\.claude/|g' {} +