mirror of
https://github.com/glittercowboy/get-shit-done
synced 2026-05-15 03:26:38 +02:00
* fix(#3010): post-install message and docs use /gsd-update --reapply PR #2824 consolidated 86 skills into ~58, removing the standalone /gsd-reapply-patches command and folding it into a flag on /gsd-update (/gsd-update --reapply). The 1.39.1 hotfix (#2954) updated help.md but missed three other surfaces that still recommended the dead form: 1. bin/install.js reportLocalPatches() — runtime emitter shown after every install with backed-up patches. All branches updated: - claude/opencode/kilo/copilot: /gsd-update --reapply - gemini: /gsd:update --reapply - codex: $gsd-update --reapply - cursor: gsd-update --reapply (mention the skill name) 2. get-shit-done/workflows/update.md — Step 4 prose and the check_local_patches block both referenced /gsd-reapply-patches. Replaced with /gsd-update --reapply (with backticks around the command per CR feedback for copy/paste UX). 3. Localized docs (en/ja-JP/ko-KR/zh-CN) — 14 files across ARCHITECTURE.md / COMMANDS.md / FEATURES.md / INVENTORY.md / USER-GUIDE.md / manual-update.md still listed the removed command. Tests: - bug-3010-reapply-patches-references.test.cjs (4 tests): scans bin/install.js's reportLocalPatches body, every workflow file, and every doc (excluding CHANGELOG history and help.md's deprecation notice) for the removed command form, and verifies each runtime branch emits the consolidated form via captured console output. - tests/copilot-install.test.cjs:1081-1115 — stale assertions that hard-coded the removed string updated to assert /gsd-update --reapply. Verification: 115/115 pass across both files. Co-authored-by: Patrick Clery <patrick@patrickclery.com> Closes #3010 * test(#3010): broaden dead-command scan + tighten runtime exact-match CodeRabbit follow-up findings on #3012: 1. Workflow + docs scans only matched "/gsd-reapply-patches", missing the gemini ("/gsd:reapply-patches") and codex ("$gsd-reapply-patches") spellings. A regression that re-introduced either form in localized docs would have passed silently. Extracted a DEAD_COMMAND_PATTERNS array + findDeadCommands() helper used by both scans, so all three removed forms are checked uniformly. Match output also reports which spellings hit, for faster diagnosis. 2. reportLocalPatches runtime test asserted output.includes('update --reapply'), which is too loose — a malformed prefix like '/gsd:update --reapply' on the claude branch would have passed. Replaced with an exact {runtime → expected token} map covering all 7 branches: claude/opencode/kilo/copilot → /gsd-update --reapply gemini → /gsd:update --reapply codex → $gsd-update --reapply cursor → gsd-update --reapply Negative assertion also runs DEAD_COMMAND_PATTERNS against output for every runtime, so dead forms can't slip in regardless of branch. Verification: 4/4 pass on bug-3010-reapply-patches-references.test.cjs. * test(#3010): add prefix-absence guard for cursor runtime (CR follow-up) CodeRabbit (Minor): the cursor expected token "gsd-update --reapply" is a substring of every prefixed form ("/gsd-update --reapply" for claude/ opencode/kilo/copilot, "\$gsd-update --reapply" for codex). The positive output.includes(expectedToken) check therefore can't distinguish correct cursor output from a regression where the installer emits a prefixed form for cursor — both pass the substring check. Add an explicit prefix-absence assertion for cursor that fails if any of /, \$, or : appears immediately before "gsd-update --reapply" in output. The gemini form ("/gsd:update --reapply") doesn't share the substring (gsd:update vs gsd-update) so it's already caught by the positive includes failing on cursor's expected bare token. Verification: 4/4 pass. --------- Co-authored-by: Patrick Clery <patrick@patrickclery.com>
1.8 KiB
1.8 KiB
Manual Update (Non-npm Install)
Use this procedure when npx get-shit-done-cc@latest is unavailable — e.g. during a publish outage or if you are working directly from the source repo.
Prerequisites
- Node.js installed
- This repo cloned locally (
git clone https://github.com/gsd-build/get-shit-done)
Steps
# 1. Pull latest code
git pull --rebase origin main
# 2. Build the hooks dist (required — hooks/dist/ is generated, not checked in as source)
node scripts/build-hooks.js
# 3. Run the installer directly
node bin/install.js --claude --global
# 4. Clear the update cache so the statusline indicator resets
rm -f ~/.cache/gsd/gsd-update-check.json
Step 5 — Restart your runtime to pick up the new commands and agents.
Runtime flags
Replace --claude with the flag for your runtime:
| Runtime | Flag |
|---|---|
| Claude Code | --claude |
| Gemini CLI | --gemini |
| OpenCode | --opencode |
| Kilo | --kilo |
| Codex | --codex |
| Copilot | --copilot |
| Cursor | --cursor |
| Windsurf | --windsurf |
| Augment | --augment |
| All runtimes | --all |
Use --local instead of --global for a project-scoped install.
What the installer replaces
The installer performs a clean wipe-and-replace of GSD-managed directories only:
~/.claude/get-shit-done/— workflows, references, templates~/.claude/commands/gsd/— slash commands~/.claude/agents/gsd-*.md— GSD agents~/.claude/hooks/dist/— compiled hooks
What is preserved:
- Custom agents not prefixed with
gsd- - Custom commands outside
commands/gsd/ - Your
CLAUDE.mdfiles - Custom hooks
Locally modified GSD files are automatically backed up to gsd-local-patches/ before the install. Run /gsd-update --reapply after updating to merge your modifications back in.