diff --git a/.changeset/sunny-herons-bark.md b/.changeset/sunny-herons-bark.md new file mode 100644 index 000000000..a899e743b --- /dev/null +++ b/.changeset/sunny-herons-bark.md @@ -0,0 +1,5 @@ +--- +type: Changed +pr: 519 +--- +**Package renamed to `@opengsd/gsd-core`** — to match the renamed repository. Install with `npx @opengsd/gsd-core` (bin: `gsd-core`). The prior package `@opengsd/get-shit-done-redux` is deprecated. (#518) diff --git a/.coderabbit.yaml b/.coderabbit.yaml index d57df6e1d..789fc5423 100644 --- a/.coderabbit.yaml +++ b/.coderabbit.yaml @@ -1,4 +1,4 @@ -# CodeRabbit configuration — open-gsd/get-shit-done-redux +# CodeRabbit configuration — open-gsd/gsd-core # # Schema: https://docs.coderabbit.ai/reference/yaml-template/ # diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index d00a8a77d..78c4bad3a 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.yml +++ b/.github/ISSUE_TEMPLATE/bug_report.yml @@ -17,7 +17,7 @@ body: id: version attributes: label: GSD Version - description: "Run: `npm list -g @opengsd/get-shit-done-redux` or check `npx @opengsd/get-shit-done-redux --version`" + description: "Run: `npm list -g @opengsd/gsd-core` or check `npx @opengsd/gsd-core --version`" placeholder: "e.g., 1.18.0" validations: required: true @@ -78,8 +78,8 @@ body: attributes: label: Installation Method options: - - npx @opengsd/get-shit-done-redux@latest (fresh run) - - npm install -g @opengsd/get-shit-done-redux + - npx @opengsd/gsd-core@latest (fresh run) + - npm install -g @opengsd/gsd-core - Updated from a previous version validations: required: true @@ -109,7 +109,7 @@ body: description: | Exact steps to reproduce the issue. Include the GSD command used. placeholder: | - 1. Install GSD with `npx @opengsd/get-shit-done-redux@latest` + 1. Install GSD with `npx @opengsd/gsd-core@latest` 2. Select runtime: Claude Code 3. Run `/gsd-init` with a new project 4. Run `/gsd-plan` @@ -215,7 +215,7 @@ body: Anything else — screenshots, screen recordings, related issues, or links. **Useful diagnostics to include (if applicable):** - - `npm list -g @opengsd/get-shit-done-redux` — confirms installed version + - `npm list -g @opengsd/gsd-core` — confirms installed version - `ls -la ~/.claude/get-shit-done/` — confirms installation files (Claude Code) - `cat ~/.claude/get-shit-done/gsd-file-manifest.json` — file manifest for debugging install issues - `ls -la .planning/` — confirms planning directory state diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml index 32bef1b26..0219418dd 100644 --- a/.github/ISSUE_TEMPLATE/config.yml +++ b/.github/ISSUE_TEMPLATE/config.yml @@ -1,11 +1,11 @@ blank_issues_enabled: false contact_links: - name: "⚠️ v1.31.0 not on npm yet (known issue — workaround inside)" - url: https://github.com/open-gsd/get-shit-done-redux/discussions + url: https://github.com/open-gsd/gsd-core/discussions about: v1.31.0 was not published to npm due to a hardware failure. Read the pinned announcement for the workaround before opening an issue. - name: Discord Community url: https://discord.gg/mYgfVNfA2r about: Ask questions and get help from the community - name: Discussions - url: https://github.com/open-gsd/get-shit-done-redux/discussions + url: https://github.com/open-gsd/gsd-core/discussions about: Share ideas or ask general questions diff --git a/.github/ISSUE_TEMPLATE/feature_request.yml b/.github/ISSUE_TEMPLATE/feature_request.yml index ddd89073d..eb701e079 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.yml +++ b/.github/ISSUE_TEMPLATE/feature_request.yml @@ -11,7 +11,7 @@ body: A feature adds something new to GSD — a new command, workflow, concept, or integration. Features have the **highest bar** for acceptance because every feature adds permanent maintenance burden to a project built for solo developers. **Before opening this issue:** - - Check [Discussions](https://github.com/open-gsd/get-shit-done-redux/discussions) — has this been proposed and declined before? + - Check [Discussions](https://github.com/open-gsd/gsd-core/discussions) — has this been proposed and declined before? - Read [CONTRIBUTING.md](../../CONTRIBUTING.md#-feature) — understand what "approved-feature" means and why you must wait for it before writing code. - Ask yourself: *does this solve a real problem for a solo developer working with an AI coding tool, or is it a feature I personally want?* diff --git a/.github/pull_request_template.md b/.github/pull_request_template.md index f850a08c4..51a550488 100644 --- a/.github/pull_request_template.md +++ b/.github/pull_request_template.md @@ -17,7 +17,7 @@ Select the template that matches your PR: - If it **corrects broken behavior** → Fix - If it **improves existing behavior** without adding new commands or concepts → Enhancement - If it **adds something that doesn't exist today** → Feature -- If you are not sure → open a [Discussion](https://github.com/open-gsd/get-shit-done-redux/discussions) first +- If you are not sure → open a [Discussion](https://github.com/open-gsd/gsd-core/discussions) first --- diff --git a/.github/workflows/hotfix.yml b/.github/workflows/hotfix.yml index fd45102ea..1bed1b21e 100644 --- a/.github/workflows/hotfix.yml +++ b/.github/workflows/hotfix.yml @@ -309,9 +309,9 @@ jobs: env: VERSION: ${{ inputs.version }} run: | - EXISTING=$(npm view get-shit-done-redux@"$VERSION" version 2>/dev/null || true) + EXISTING=$(npm view @opengsd/gsd-core@"$VERSION" version 2>/dev/null || true) if [ -n "$EXISTING" ]; then - echo "::warning::get-shit-done-redux@${VERSION} is already on the registry — entering reconciliation mode (skip publish, continue with tag/release/PR/dist-tag)." + echo "::warning::@opengsd/gsd-core@${VERSION} is already on the registry — entering reconciliation mode (skip publish, continue with tag/release/PR/dist-tag)." echo "skip_publish=true" >> "$GITHUB_OUTPUT" else echo "skip_publish=false" >> "$GITHUB_OUTPUT" @@ -358,7 +358,7 @@ jobs: VERSION: ${{ inputs.version }} NODE_AUTH_TOKEN: ${{ secrets.GETSHITDONEREDUXNPMTOKEN }} run: | - npm dist-tag add "get-shit-done-redux@${VERSION}" next + npm dist-tag add "@opengsd/gsd-core@${VERSION}" next echo "✅ next dist-tag re-pointed to v${VERSION} (matches latest)" - name: Create GitHub Release (idempotent) @@ -404,7 +404,7 @@ jobs: run: | PUBLISHED="NOT_FOUND" for delay in 5 10 20 30 45; do - PUBLISHED=$(npm view get-shit-done-redux@"$VERSION" version 2>/dev/null || echo "NOT_FOUND") + PUBLISHED=$(npm view @opengsd/gsd-core@"$VERSION" version 2>/dev/null || echo "NOT_FOUND") if [ "$PUBLISHED" = "$VERSION" ]; then break fi @@ -415,12 +415,12 @@ jobs: echo "::error::Version $VERSION did not appear on the registry within timeout" exit 1 fi - LATEST_VER=$(npm view get-shit-done-redux dist-tags.latest 2>/dev/null || echo "NOT_FOUND") + LATEST_VER=$(npm view @opengsd/gsd-core dist-tags.latest 2>/dev/null || echo "NOT_FOUND") if [ "$LATEST_VER" != "$VERSION" ]; then echo "::error::dist-tag 'latest' resolves to '$LATEST_VER', expected '$VERSION'" exit 1 fi - echo "✓ Verified: get-shit-done-redux@$VERSION is live on @latest" + echo "✓ Verified: @opengsd/gsd-core@$VERSION is live on @latest" - name: Summary env: diff --git a/.github/workflows/install-smoke.yml b/.github/workflows/install-smoke.yml index bab73581b..a93f46be2 100644 --- a/.github/workflows/install-smoke.yml +++ b/.github/workflows/install-smoke.yml @@ -147,13 +147,13 @@ jobs: TMPDIR_ROOT=$(mktemp -d) cd "$TMPDIR_ROOT" npm install -g "$WORKSPACE/$TARBALL" - command -v get-shit-done-redux + command -v gsd-core # `--claude --local` is the non-interactive code path. Don't swallow # non-zero exit — if the installer fails, that IS the CI failure, and # its own error message is more useful than the downstream "shim # regression" assertion masking the real cause. - if ! get-shit-done-redux --claude --local; then - echo "::error::get-shit-done-redux --claude --local failed. See the install.js output above for the real error." + if ! gsd-core --claude --local; then + echo "::error::gsd-core --claude --local failed. See the install.js output above for the real error." exit 1 fi @@ -235,8 +235,8 @@ jobs: TMPDIR_ROOT=$(mktemp -d) cd "$TMPDIR_ROOT" npm install -g "$GITHUB_WORKSPACE" - command -v get-shit-done-redux - get-shit-done-redux --claude --local || true + command -v gsd-core + gsd-core --claude --local || true - name: Assert gsd-tools resolves on PATH after unpacked install run: | diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 5fa5bbcf5..2dc8a087d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -65,7 +65,7 @@ jobs: env: VERSION: ${{ inputs.version }} run: | - for pkg in @opengsd/get-shit-done-redux; do + for pkg in @opengsd/gsd-core; do if npm view "$pkg@$VERSION" version >/dev/null 2>&1; then echo "::error::$pkg@$VERSION is already published on npm — bump to a new version" exit 1 @@ -245,14 +245,14 @@ jobs: PRE_VERSION: ${{ steps.prerelease.outputs.pre_version }} run: | sleep 10 - PUBLISHED=$(npm view @opengsd/get-shit-done-redux@"$PRE_VERSION" version 2>/dev/null || echo "NOT_FOUND") + PUBLISHED=$(npm view @opengsd/gsd-core@"$PRE_VERSION" version 2>/dev/null || echo "NOT_FOUND") if [ "$PUBLISHED" != "$PRE_VERSION" ]; then echo "::error::Published version verification failed. Expected $PRE_VERSION, got $PUBLISHED" exit 1 fi - echo "✓ Verified: @opengsd/get-shit-done-redux@$PRE_VERSION is live on npm" + echo "✓ Verified: @opengsd/gsd-core@$PRE_VERSION is live on npm" # Also verify dist-tag - NEXT_TAG=$(npm dist-tag ls @opengsd/get-shit-done-redux 2>/dev/null | grep "next:" | awk '{print $2}') + NEXT_TAG=$(npm dist-tag ls @opengsd/gsd-core 2>/dev/null | grep "next:" | awk '{print $2}') echo "✓ next tag points to: $NEXT_TAG" - name: Summary @@ -265,7 +265,7 @@ jobs: echo "**DRY RUN** — npm publish, tagging, and push skipped" >> "$GITHUB_STEP_SUMMARY" else echo "- Published to npm as \`next\`" >> "$GITHUB_STEP_SUMMARY" - echo "- Install: \`npx @opengsd/get-shit-done-redux@next\`" >> "$GITHUB_STEP_SUMMARY" + echo "- Install: \`npx @opengsd/gsd-core@next\`" >> "$GITHUB_STEP_SUMMARY" fi echo "" >> "$GITHUB_STEP_SUMMARY" echo "To publish another pre-release: run \`rc\` again" >> "$GITHUB_STEP_SUMMARY" @@ -400,7 +400,7 @@ jobs: run: | # Point next to the stable release so @next never returns something # older than @latest. This prevents stale pre-release installs. - npm dist-tag add "@opengsd/get-shit-done-redux@${VERSION}" next 2>/dev/null || true + npm dist-tag add "@opengsd/gsd-core@${VERSION}" next 2>/dev/null || true echo "✓ next dist-tag updated to v${VERSION}" - name: Verify publish @@ -409,14 +409,14 @@ jobs: VERSION: ${{ inputs.version }} run: | sleep 10 - PUBLISHED=$(npm view @opengsd/get-shit-done-redux@"$VERSION" version 2>/dev/null || echo "NOT_FOUND") + PUBLISHED=$(npm view @opengsd/gsd-core@"$VERSION" version 2>/dev/null || echo "NOT_FOUND") if [ "$PUBLISHED" != "$VERSION" ]; then echo "::error::Published version verification failed. Expected $VERSION, got $PUBLISHED" exit 1 fi - echo "✓ Verified: @opengsd/get-shit-done-redux@$VERSION is live on npm" + echo "✓ Verified: @opengsd/gsd-core@$VERSION is live on npm" # Verify latest tag - LATEST_TAG=$(npm dist-tag ls @opengsd/get-shit-done-redux 2>/dev/null | grep "latest:" | awk '{print $2}') + LATEST_TAG=$(npm dist-tag ls @opengsd/gsd-core 2>/dev/null | grep "latest:" | awk '{print $2}') echo "✓ latest tag points to: $LATEST_TAG" - name: Summary @@ -431,5 +431,5 @@ jobs: echo "- Published to npm as \`latest\`" >> "$GITHUB_STEP_SUMMARY" echo "- Tagged \`v${VERSION}\`" >> "$GITHUB_STEP_SUMMARY" echo "- PR created to merge back to main" >> "$GITHUB_STEP_SUMMARY" - echo "- Install: \`npx @opengsd/get-shit-done-redux@latest\`" >> "$GITHUB_STEP_SUMMARY" + echo "- Install: \`npx @opengsd/gsd-core@latest\`" >> "$GITHUB_STEP_SUMMARY" fi diff --git a/.out-of-scope/agent-template-rendering.md b/.out-of-scope/agent-template-rendering.md index 53dbc86b6..3afb0dd31 100644 --- a/.out-of-scope/agent-template-rendering.md +++ b/.out-of-scope/agent-template-rendering.md @@ -1,6 +1,6 @@ # Render agent definitions from templates at install/config-change time -**Source:** [#2758](https://github.com/open-gsd/get-shit-done-redux/issues/2758) +**Source:** [#2758](https://github.com/open-gsd/gsd-core/issues/2758) **Decision:** wontfix — closed on the technical merits **Date:** 2026-05-02 diff --git a/.out-of-scope/temporal-context.md b/.out-of-scope/temporal-context.md index 8732d5e9f..448908d75 100644 --- a/.out-of-scope/temporal-context.md +++ b/.out-of-scope/temporal-context.md @@ -1,6 +1,6 @@ # Temporal context as a first-class GSD signal -**Source:** [#2756](https://github.com/open-gsd/get-shit-done-redux/issues/2756) +**Source:** [#2756](https://github.com/open-gsd/gsd-core/issues/2756) **Decision:** wontfix — closed without further engagement **Date:** 2026-05-02 diff --git a/.release-monitor.sh b/.release-monitor.sh index c36937f41..d8f3b4771 100755 --- a/.release-monitor.sh +++ b/.release-monitor.sh @@ -1,8 +1,8 @@ #!/usr/bin/env bash -# Release monitor for open-gsd/get-shit-done-redux +# Release monitor for open-gsd/gsd-core # Checks every 15 minutes, writes new release info to a signal file -REPO="open-gsd/get-shit-done-redux" +REPO="open-gsd/gsd-core" SIGNAL_FILE="/tmp/gsd-new-release.json" STATE_FILE="/tmp/gsd-monitor-last-tag" LOG_FILE="/tmp/gsd-monitor.log" diff --git a/CONTEXT.md b/CONTEXT.md index fa3c47b4b..f6cba4343 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -219,7 +219,7 @@ The canonical lint infrastructure adopted in ADR 452 (`docs/adr/452-eslint-lint- ## Workspace seams (machine-oriented predicates) `RULESET.GH.AUTH.DEFAULT=source .envrc GITHUB_TOKEN before gh; exception=ambient allowed only when user explicitly says machine-only fallback` -`RULESET.CODERABBIT.GUARD.OPEN_PRS=gh pr list --repo open-gsd/get-shit-done-redux --author @me --state open; repeat near end because open PR set can change mid-run` +`RULESET.CODERABBIT.GUARD.OPEN_PRS=gh pr list --repo open-gsd/gsd-core --author @me --state open; repeat near end because open PR set can change mid-run` `RULESET.CODERABBIT.GUARD.COMPLETE=required_checks_green && coderabbit_check_pass && graphQL(reviewThreads.unresolved_count)==0` `RULESET.CODERABBIT.GUARD.GRAPHQL=reviewThreads(first:100){nodes{id isResolved comments{nodes{author body path line originalLine url}}}}; use unresolved threads as authoritative, not badge text alone` `RULESET.CODERABBIT.GUARD.RERUN=after every push wait for CodeRabbit completion, then re-query unresolved threads; CodeRabbit can add new findings after earlier threads were resolved` @@ -279,9 +279,9 @@ The canonical lint infrastructure adopted in ADR 452 (`docs/adr/452-eslint-lint- `RELEASE-NOTES.STANDARD.heading-level=## for category, ### for subgroup (area), - for bullet` `RELEASE-NOTES.STANDARD.bullet-shape=**Bold user-visible change** — explanation of what was broken or what's new, leading with symptom not implementation. Trailing (#NNN) PR ref.` `RELEASE-NOTES.STANDARD.subgroups=phase-planning-state | workstream | query-dispatch-cli | code-review | install | capture | docs | architecture | security` -`RELEASE-NOTES.STANDARD.footer.hotfix=Install/upgrade: \`npx @opengsd/get-shit-done-redux@latest\`` -`RELEASE-NOTES.STANDARD.footer.rc=Install for testing: \`npx @opengsd/get-shit-done-redux@next\` (per branch->dist-tag policy)` -`RELEASE-NOTES.STANDARD.footer.full-changelog=**Full Changelog**: https://github.com/open-gsd/get-shit-done-redux/compare/...` +`RELEASE-NOTES.STANDARD.footer.hotfix=Install/upgrade: \`npx @opengsd/gsd-core@latest\`` +`RELEASE-NOTES.STANDARD.footer.rc=Install for testing: \`npx @opengsd/gsd-core@next\` (per branch->dist-tag policy)` +`RELEASE-NOTES.STANDARD.footer.full-changelog=**Full Changelog**: https://github.com/open-gsd/gsd-core/compare/...` `RELEASE-NOTES.STANDARD.intro=optional one-paragraph framing for RC/feature releases; omit for pure-fix hotfixes` `RELEASE-NOTES.SOURCE.commits=git log .. --pretty=format:'%s%n%n%b' --no-merges` @@ -298,12 +298,12 @@ The canonical lint infrastructure adopted in ADR 452 (`docs/adr/452-eslint-lint- `RELEASE-NOTES.ANTI-PATTERN.implementation-first=do not lead bullet with file path or function name; lead with symptom/user-visible behavior` `RELEASE-NOTES.ANTI-PATTERN.risk-commentary=do not include "may break", "be careful", "test thoroughly" - per global CLAUDE.md no-risk-commentary rule` -`RELEASE-NOTES.EXAMPLE.hotfix=v1.41.1 (https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.41.1) - 14 fixes grouped by 6 subgroups` -`RELEASE-NOTES.EXAMPLE.rc=v1.42.0-rc1 (https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.42.0-rc1) - intro + Added/Changed/Fixed/Documentation taxonomy` +`RELEASE-NOTES.EXAMPLE.hotfix=v1.41.1 (https://github.com/open-gsd/gsd-core/releases/tag/v1.41.1) - 14 fixes grouped by 6 subgroups` +`RELEASE-NOTES.EXAMPLE.rc=v1.42.0-rc1 (https://github.com/open-gsd/gsd-core/releases/tag/v1.42.0-rc1) - intro + Added/Changed/Fixed/Documentation taxonomy` `RELEASE-NOTES.EXAMPLE.minor-auto-acceptable=v1.41.0 - kept auto-generated body; many small fixes with clean conventional-commit titles` -`RELEASE-NOTES.TEMPLATE.hotfix=## Fixed\n\n### \n- **** — . (#)\n\n---\n\nInstall/upgrade: \`npx @opengsd/get-shit-done-redux@latest\`\n\n**Full Changelog**: ` -`RELEASE-NOTES.TEMPLATE.rc=\n\n## Added\n### \n- **** — . (#)\n\n## Changed\n### Architecture\n- **** — . (#)\n\n## Fixed\n### \n- **** — . (#)\n\n## Documentation\n- **** — . (#)\n\n---\n\nThis is a release candidate. Install for testing:\n\`\`\`bash\nnpx @opengsd/get-shit-done-redux@next\n\`\`\`\n\n**Full Changelog**: ` +`RELEASE-NOTES.TEMPLATE.hotfix=## Fixed\n\n### \n- **** — . (#)\n\n---\n\nInstall/upgrade: \`npx @opengsd/gsd-core@latest\`\n\n**Full Changelog**: ` +`RELEASE-NOTES.TEMPLATE.rc=\n\n## Added\n### \n- **** — . (#)\n\n## Changed\n### Architecture\n- **** — . (#)\n\n## Fixed\n### \n- **** — . (#)\n\n## Documentation\n- **** — . (#)\n\n---\n\nThis is a release candidate. Install for testing:\n\`\`\`bash\nnpx @opengsd/gsd-core@next\n\`\`\`\n\n**Full Changelog**: ` `RELEASE-NOTES.RELEASE-STREAM.main-branch=next (RCs) + latest (stable); install via @next or @latest` `RELEASE-NOTES.RELEASE-STREAM.rule=streams do not mix; do not document @next in hotfix/stable notes` @@ -610,7 +610,7 @@ Migration plan: Phase 1 (#3465) seam additions complete; Phase 2 (#3466) targets `DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.root-cause=gsd-test-summary lines 126-127 default LOCAL_OUT/DOCKER_OUT to fixed /tmp/gsd-test-{local,docker}.jsonl; concurrent line-buffered writers interleave bytes mid-multibyte → split UTF-8 sequence → decoder explodes on f.read()` `DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.detect=two gsd-test-summary --both runs in flight; UnicodeDecodeError in parse_events_from_string traceback; /tmp/gsd-test-*.jsonl size mismatch vs total events emitted` `DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.fix-forward=set per-invocation LOCAL_OUT=/tmp/gsd-test--local.jsonl DOCKER_OUT=/tmp/gsd-test--docker.jsonl env vars; or serialize the runs; upstream fix tracked in #3545 (default to tempfile.mkstemp + advisory flock)` -`DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.upstream=open-gsd/get-shit-done-redux#3545` +`DEFECT.GSD-TEST-CONCURRENT-OUTPUT-COLLISION.upstream=open-gsd/gsd-core#3545` `DEFECT.SUBAGENT-LONG-RUNNING-BG-STALL.symptom=spawned sub-agent kicks off gsd-test-summary --both via Bash run_in_background, then stops on the harness "you will be notified" message; never receives the notification because cross-turn task-notifications are only delivered to the top-level orchestrator` `DEFECT.SUBAGENT-LONG-RUNNING-BG-STALL.detect=sub-agent returns prematurely with text like "I should wait for the notification per CLAUDE.md" and incomplete work in its worktree (commits absent, push absent, PR absent)` `DEFECT.SUBAGENT-LONG-RUNNING-BG-STALL.fix-forward=keep gsd-test-summary --both at the top-level orchestrator; sub-agents either run it foreground with timeout: 1500000 (25min) and block, OR delegate the test step back to the orchestrator (write commits + return); never have a sub-agent fire-and-await a backgrounded long task` @@ -634,7 +634,7 @@ Migration plan: Phase 1 (#3465) seam additions complete; Phase 2 (#3466) targets ## PR fix discipline — patterns observed 2026-05-23 -Full detail in `~/.claude/skills/gsd-pr-fix-discipline/SKILL.md`. AI agents MUST check this section before pushing to `open-gsd/get-shit-done-redux`. +Full detail in `~/.claude/skills/gsd-pr-fix-discipline/SKILL.md`. AI agents MUST check this section before pushing to `open-gsd/gsd-core`. ### INVENTORY / manifest drift @@ -652,7 +652,7 @@ Full detail in `~/.claude/skills/gsd-pr-fix-discipline/SKILL.md`. AI agents MUST - **Symptom:** `gh pr checks` shows failures but the latest commit SHA's run was cancelled before Tests even started - **Affected this session:** #154, #136 -- **Fix:** `gh workflow run Tests --repo open-gsd/get-shit-done-redux --ref `; verify with `gh run list --branch --workflow Tests --limit 1 --json status,conclusion,headSha` +- **Fix:** `gh workflow run Tests --repo open-gsd/gsd-core --ref `; verify with `gh run list --branch --workflow Tests --limit 1 --json status,conclusion,headSha` ### Missing changeset fragment @@ -688,4 +688,4 @@ Full detail in `~/.claude/skills/gsd-pr-fix-discipline/SKILL.md`. AI agents MUST - **Symptom:** `gh pr merge --auto` returns `GraphQL: Auto merge is not allowed for this repository` - **Affected this session:** All stacked PRs -- **Fix:** Merge manually by hand in dependency order once CI greens; `gh pr merge --squash --repo open-gsd/get-shit-done-redux` +- **Fix:** Merge manually by hand in dependency order once CI greens; `gh pr merge --squash --repo open-gsd/gsd-core` diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index ec29019f4..7e909d875 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -4,7 +4,7 @@ ```bash # Clone the repo -git clone https://github.com/open-gsd/get-shit-done-redux.git +git clone https://github.com/open-gsd/gsd-core.git cd get-shit-done # Install dependencies @@ -42,7 +42,7 @@ GSD accepts three types of contributions. Each type has a different process and A fix corrects something that is broken, crashes, produces wrong output, or behaves contrary to documented behavior. **Process:** -1. Open a [Bug Report issue](https://github.com/open-gsd/get-shit-done-redux/issues/new?template=bug_report.yml) — fill it out completely. +1. Open a [Bug Report issue](https://github.com/open-gsd/gsd-core/issues/new?template=bug_report.yml) — fill it out completely. 2. Wait for a maintainer to confirm it is a bug (label: `confirmed-bug`). For obvious, reproducible bugs this is typically fast. 3. Fix it. Write a test that would have caught the bug. 4. Open a PR using the [Fix PR template](.github/PULL_REQUEST_TEMPLATE/fix.md) — link the confirmed issue. @@ -58,7 +58,7 @@ An enhancement improves an existing feature — better output, faster execution, **The bar:** Enhancements must have a scoped written proposal approved by a maintainer before any code is written. A PR for an enhancement will be closed without review if the linked issue does not carry the `approved-enhancement` label. **Process:** -1. Open an [Enhancement issue](https://github.com/open-gsd/get-shit-done-redux/issues/new?template=enhancement.yml) with the full proposal. The issue template requires: the problem being solved, the concrete benefit, the scope of changes, and alternatives considered. +1. Open an [Enhancement issue](https://github.com/open-gsd/gsd-core/issues/new?template=enhancement.yml) with the full proposal. The issue template requires: the problem being solved, the concrete benefit, the scope of changes, and alternatives considered. 2. **Wait for maintainer approval.** A maintainer must label the issue `approved-enhancement` before you write a single line of code. Do not open a PR against an unapproved enhancement issue — it will be closed. 3. Write the code. Keep the scope exactly as approved. If scope creep occurs, comment on the issue and get re-approval before continuing. 4. Open a PR using the [Enhancement PR template](.github/PULL_REQUEST_TEMPLATE/enhancement.md) — link the approved issue. @@ -74,8 +74,8 @@ A feature adds something new — a new command, a new workflow, a new concept, a **The bar:** Features require a complete written specification approved by a maintainer before any code is written. A PR for a feature will be closed without review if the linked issue does not carry the `approved-feature` label. Incomplete specs are closed, not revised by maintainers. **Process:** -1. **Discuss first** — check [Discussions](https://github.com/open-gsd/get-shit-done-redux/discussions) to see if the idea has been raised. If it has and was declined, don't open a new issue. -2. Open a [Feature Request issue](https://github.com/open-gsd/get-shit-done-redux/issues/new?template=feature_request.yml) with the complete spec. The template requires: the solo-developer problem being solved, what is being added, full scope of affected files and systems, user stories, acceptance criteria, and assessment of maintenance burden. +1. **Discuss first** — check [Discussions](https://github.com/open-gsd/gsd-core/discussions) to see if the idea has been raised. If it has and was declined, don't open a new issue. +2. Open a [Feature Request issue](https://github.com/open-gsd/gsd-core/issues/new?template=feature_request.yml) with the complete spec. The template requires: the solo-developer problem being solved, what is being added, full scope of affected files and systems, user stories, acceptance criteria, and assessment of maintenance burden. 3. **Wait for maintainer approval.** A maintainer must label the issue `approved-feature` before you write a single line of code. Approval is not guaranteed — GSD is intentionally lean and many valid ideas are declined because they conflict with the project's design philosophy. 4. Write the code. Implement exactly the approved spec. Changes to scope require re-approval. 5. Open a PR using the [Feature PR template](.github/PULL_REQUEST_TEMPLATE/feature.md) — link the approved issue. @@ -144,7 +144,7 @@ git checkout next git pull --ff-only origin next git checkout -b fix/3187-config-corruption # ... commit, push -gh pr create --base next --repo open-gsd/get-shit-done-redux +gh pr create --base next --repo open-gsd/gsd-core ``` If you target the wrong branch by accident, the `PR Target Validator` @@ -203,7 +203,7 @@ npm run changeset -- --type Fixed --pr \ This writes `.changeset/--.md`. Three random words → concurrent PRs never collide. Allowed `type:` values follow [Keep a Changelog](https://keepachangelog.com/): `Added`, `Changed`, `Deprecated`, `Removed`, `Fixed`, `Security`. -Fragments are consolidated into `CHANGELOG.md` at release time by the release workflow. See [`.changeset/README.md`](.changeset/README.md) for the format spec and [#2975](https://github.com/open-gsd/get-shit-done-redux/issues/2975) for the rationale. +Fragments are consolidated into `CHANGELOG.md` at release time by the release workflow. See [`.changeset/README.md`](.changeset/README.md) for the format spec and [#2975](https://github.com/open-gsd/gsd-core/issues/2975) for the rationale. **CI enforcement:** the `Changeset Required` workflow (`scripts/changeset/lint.cjs`) fails any PR that touches `bin/`, `get-shit-done/`, `agents/`, `commands/`, `hooks/`, or `sdk/src/` without a `.changeset/*.md` fragment. @@ -211,7 +211,7 @@ Fragments are consolidated into `CHANGELOG.md` at release time by the release wo ## Documentation Updates — Update the Relevant Docs -If your PR adds, changes, deprecates, or removes user-visible behavior, you **must** update the relevant documentation in `docs/`. CI will fail any PR whose changeset fragment is typed `Added`, `Changed`, `Deprecated`, or `Removed` without also modifying at least one file under `docs/` ([#3213](https://github.com/open-gsd/get-shit-done-redux/issues/3213)). +If your PR adds, changes, deprecates, or removes user-visible behavior, you **must** update the relevant documentation in `docs/`. CI will fail any PR whose changeset fragment is typed `Added`, `Changed`, `Deprecated`, or `Removed` without also modifying at least one file under `docs/` ([#3213](https://github.com/open-gsd/gsd-core/issues/3213)). `Fixed` and `Security` fragments do not trigger this lint — bug fixes restore documented behavior, they do not introduce new behavior to document. (Edit the docs anyway if a fix corrects something the docs got wrong.) diff --git a/QUICK-WINS-CONFIRMED-BUGS.md b/QUICK-WINS-CONFIRMED-BUGS.md index c503571a1..ac041691e 100644 --- a/QUICK-WINS-CONFIRMED-BUGS.md +++ b/QUICK-WINS-CONFIRMED-BUGS.md @@ -15,12 +15,12 @@ All six issues carry the `confirmed-bug` label, meaning the bug has been verifie | # | Issue | Short Title | Type | Recommended Flow | Est. Effort | Status | Notes | |---|-------|-------------|------|------------------|-------------|--------|-------| -| 1 | [#3583](https://github.com/open-gsd/get-shit-done-redux/issues/3583) | Claude skill install leaves `/gsd:` in `SKILL.md` body | Installer / Command namespace | PR 3629 (our branch) + competing 3586 | Small (1 file + test) | PR opened / Review | **Leading PR: 3629** (cristianuibar) — reviewed + hardened with CodeRabbit feedback (left-boundary regex + body-scoped guard). Competing PR 3586 has "needs changes" + "ci: failing". Issue still carries `confirmed-bug`. | -| 2 | [#3579](https://github.com/open-gsd/get-shit-done-redux/issues/3579) | `build-hooks.js` + npm publish omit graphify auto-update hook | Packaging / Build | `/gsd-quick` | Small | Not started | Classic "new feature missed in release artifact". Easy local verification. | -| 3 | [#3496](https://github.com/open-gsd/get-shit-done-redux/issues/3496) | `/gsd:update` changelog extraction skips intermediate versions | Workflow / Update logic | `/gsd-quick` or lightweight plan | Medium-small | Not started | Needs deterministic version-range helper. | -| 4 | [#3588](https://github.com/open-gsd/get-shit-done-redux/issues/3588) | Production `npm audit` has 1 high + 5 moderate advisories | Security / Dependencies | Direct + careful review | Medium | Not started | Transitive via `@anthropic-ai/claude-agent-sdk`. May need overrides. | -| 5 | [#3584](https://github.com/open-gsd/get-shit-done-redux/issues/3584) | Runtime `bin/lib/*.cjs` still emit `/gsd:` (larger piece deferred from #3583) | Runtime output / Slash formatter | Short plan first, then execute | Medium-Large | Not started | 16+ files. Design a centralized runtime-aware formatter. Do after #3583. | -| 6 | [#3340](https://github.com/open-gsd/get-shit-done-redux/issues/3340) | SDK publish lag — agent dir fix never shipped in `@opengsd/gsd-sdk@0.1.0` | Release / SDK publishing | Plan + coordination | Medium (release-focused) | Not started | Oldest. Mostly a publishing/versioning task. | +| 1 | [#3583](https://github.com/open-gsd/gsd-core/issues/3583) | Claude skill install leaves `/gsd:` in `SKILL.md` body | Installer / Command namespace | PR 3629 (our branch) + competing 3586 | Small (1 file + test) | PR opened / Review | **Leading PR: 3629** (cristianuibar) — reviewed + hardened with CodeRabbit feedback (left-boundary regex + body-scoped guard). Competing PR 3586 has "needs changes" + "ci: failing". Issue still carries `confirmed-bug`. | +| 2 | [#3579](https://github.com/open-gsd/gsd-core/issues/3579) | `build-hooks.js` + npm publish omit graphify auto-update hook | Packaging / Build | `/gsd-quick` | Small | Not started | Classic "new feature missed in release artifact". Easy local verification. | +| 3 | [#3496](https://github.com/open-gsd/gsd-core/issues/3496) | `/gsd:update` changelog extraction skips intermediate versions | Workflow / Update logic | `/gsd-quick` or lightweight plan | Medium-small | Not started | Needs deterministic version-range helper. | +| 4 | [#3588](https://github.com/open-gsd/gsd-core/issues/3588) | Production `npm audit` has 1 high + 5 moderate advisories | Security / Dependencies | Direct + careful review | Medium | Not started | Transitive via `@anthropic-ai/claude-agent-sdk`. May need overrides. | +| 5 | [#3584](https://github.com/open-gsd/gsd-core/issues/3584) | Runtime `bin/lib/*.cjs` still emit `/gsd:` (larger piece deferred from #3583) | Runtime output / Slash formatter | Short plan first, then execute | Medium-Large | Not started | 16+ files. Design a centralized runtime-aware formatter. Do after #3583. | +| 6 | [#3340](https://github.com/open-gsd/gsd-core/issues/3340) | SDK publish lag — agent dir fix never shipped in `@opengsd/gsd-sdk@0.1.0` | Release / SDK publishing | Plan + coordination | Medium (release-focused) | Not started | Oldest. Mostly a publishing/versioning task. | ## Execution Rules for This Batch diff --git a/README.ja-JP.md b/README.ja-JP.md index ff2ab2647..0dcc96985 100644 --- a/README.ja-JP.md +++ b/README.ja-JP.md @@ -10,17 +10,17 @@ **コンテキストロット(Claudeがコンテキストウィンドウを消費するにつれ品質が劣化する現象)を解決します。** -[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml) +[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/gsd-core/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/gsd-core/actions/workflows/test.yml) [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r) -[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux) +[![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **Mac、Windows、Linuxで動作します。** @@ -77,14 +77,14 @@ GSDはそれを解決します。Claude Codeを信頼性の高いものにする ### v1.39.0 ハイライト -完全なリストは [v1.39.0 リリースノート](https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.39.0) を参照してください。 +完全なリストは [v1.39.0 リリースノート](https://github.com/open-gsd/gsd-core/releases/tag/v1.39.0) を参照してください。 - **`--minimal` インストールプロファイル** — エイリアス `--core-only`。メインループの6スキル(`new-project`、`discuss-phase`、`plan-phase`、`execute-phase`、`help`、`update`)のみをインストールし、`gsd-*` サブエージェントはゼロ。コールドスタート時のシステムプロンプトのオーバーヘッドを ~12kトークンから ~700トークンへ削減(≥94%減)。32K〜128Kコンテキストのローカル LLM やトークン課金 API に有効。 - **`/gsd-phase --edit`** — `ROADMAP.md` 上の既存フェーズの任意フィールドをその場で編集(番号や位置は変更されない)。`--force` で確認 diff をスキップ、`depends_on` の参照を検証し、書き込み時に `STATE.md` も更新。 - **マージ後ビルド & テストゲート** — `execute-phase` のステップ 5.6 が `workflow.build_command` の設定を自動検出し、無ければ Xcode(`.xcodeproj`)、Makefile、Justfile、Cargo、Go、Python、npm の順にフォールバック。Xcode/iOS プロジェクトでは `xcodebuild build` と `xcodebuild test` を自動実行。並列・直列両モードで動作。 - **ランタイム別レビューモデル選択** — `review.models.` で各外部レビュー CLI(codex、gemini など)が使うモデルをプランナー/実行プロファイルとは独立に指定可能。 - **ワークストリーム設定の継承** — `GSD_WORKSTREAM` が設定されている場合、ルートの `.planning/config.json` を先に読み込み、ワークストリーム設定をディープマージ(衝突時はワークストリーム側が優先)。ワークストリーム設定で明示的に `null` を指定するとルート値を上書き可能。 -- **手動カナリアリリースワークフロー** — `.github/workflows/canary.yml` が `workflow_dispatch` 経由で `dev` ブランチから `{base}-canary.{N}` ビルドを `@canary` dist-tag に手動公開(`@opengsd/get-shit-done-redux` と `@opengsd/gsd-sdk`)。 +- **手動カナリアリリースワークフロー** — `.github/workflows/canary.yml` が `workflow_dispatch` 経由で `dev` ブランチから `{base}-canary.{N}` ビルドを `@canary` dist-tag に手動公開(`@opengsd/gsd-core` と `@opengsd/gsd-sdk`)。 - **スキルの統合:86 → 59** — 4つの新しいグループ化スキル(`capture`、`phase`、`config`、`workspace`)が31のマイクロスキルを吸収。既存の親スキル6つはラップアップやサブ操作をフラグ化:`update --sync/--reapply`、`sketch --wrap-up`、`spike --wrap-up`、`map-codebase --fast/--query`、`code-review --fix`、`progress --do/--next`。機能の欠損なし。 --- @@ -92,7 +92,7 @@ GSDはそれを解決します。Claude Codeを信頼性の高いものにする ## はじめに ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` インストーラーが以下の選択を求めます: @@ -116,7 +116,7 @@ npx @opengsd/get-shit-done-redux@latest GSDは急速に進化しています。定期的にアップデートしてください: ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ```
@@ -124,49 +124,49 @@ npx @opengsd/get-shit-done-redux@latest ```bash # Claude Code -npx @opengsd/get-shit-done-redux --claude --global # ~/.claude/ にインストール -npx @opengsd/get-shit-done-redux --claude --local # ./.claude/ にインストール +npx @opengsd/gsd-core --claude --global # ~/.claude/ にインストール +npx @opengsd/gsd-core --claude --local # ./.claude/ にインストール # OpenCode -npx @opengsd/get-shit-done-redux --opencode --global # ~/.config/opencode/ にインストール +npx @opengsd/gsd-core --opencode --global # ~/.config/opencode/ にインストール # Gemini CLI -npx @opengsd/get-shit-done-redux --gemini --global # ~/.gemini/ にインストール +npx @opengsd/gsd-core --gemini --global # ~/.gemini/ にインストール # Kilo -npx @opengsd/get-shit-done-redux --kilo --global # ~/.config/kilo/ にインストール -npx @opengsd/get-shit-done-redux --kilo --local # ./.kilo/ にインストール +npx @opengsd/gsd-core --kilo --global # ~/.config/kilo/ にインストール +npx @opengsd/gsd-core --kilo --local # ./.kilo/ にインストール # Codex -npx @opengsd/get-shit-done-redux --codex --global # ~/.codex/ にインストール -npx @opengsd/get-shit-done-redux --codex --local # ./.codex/ にインストール +npx @opengsd/gsd-core --codex --global # ~/.codex/ にインストール +npx @opengsd/gsd-core --codex --local # ./.codex/ にインストール # Copilot -npx @opengsd/get-shit-done-redux --copilot --global # ~/.github/ にインストール -npx @opengsd/get-shit-done-redux --copilot --local # ./.github/ にインストール +npx @opengsd/gsd-core --copilot --global # ~/.github/ にインストール +npx @opengsd/gsd-core --copilot --local # ./.github/ にインストール # Cursor CLI -npx @opengsd/get-shit-done-redux --cursor --global # ~/.cursor/ にインストール -npx @opengsd/get-shit-done-redux --cursor --local # ./.cursor/ にインストール +npx @opengsd/gsd-core --cursor --global # ~/.cursor/ にインストール +npx @opengsd/gsd-core --cursor --local # ./.cursor/ にインストール # Antigravity -npx @opengsd/get-shit-done-redux --antigravity --global # ~/.gemini/antigravity/ にインストール -npx @opengsd/get-shit-done-redux --antigravity --local # ./.agent/ にインストール +npx @opengsd/gsd-core --antigravity --global # ~/.gemini/antigravity/ にインストール +npx @opengsd/gsd-core --antigravity --local # ./.agent/ にインストール # Augment -npx @opengsd/get-shit-done-redux --augment --global # ~/.augment/ にインストール -npx @opengsd/get-shit-done-redux --augment --local # ./.augment/ にインストール +npx @opengsd/gsd-core --augment --global # ~/.augment/ にインストール +npx @opengsd/gsd-core --augment --local # ./.augment/ にインストール # Trae -npx @opengsd/get-shit-done-redux --trae --global # ~/.trae/ にインストール -npx @opengsd/get-shit-done-redux --trae --local # ./.trae/ にインストール +npx @opengsd/gsd-core --trae --global # ~/.trae/ にインストール +npx @opengsd/gsd-core --trae --local # ./.trae/ にインストール # Cline -npx @opengsd/get-shit-done-redux --cline --global # ~/.cline/ にインストール -npx @opengsd/get-shit-done-redux --cline --local # ./.clinerules にインストール +npx @opengsd/gsd-core --cline --global # ~/.cline/ にインストール +npx @opengsd/gsd-core --cline --local # ./.clinerules にインストール # 全ランタイム -npx @opengsd/get-shit-done-redux --all --global # すべてのディレクトリにインストール +npx @opengsd/gsd-core --all --global # すべてのディレクトリにインストール ``` `--global`(`-g`)または `--local`(`-l`)でインストール先の質問をスキップできます。 @@ -180,7 +180,7 @@ npx @opengsd/get-shit-done-redux --all --global # すべてのディレク リポジトリをクローンしてインストーラーをローカルで実行します: ```bash -git clone https://github.com/open-gsd/get-shit-done-redux.git +git clone https://github.com/open-gsd/gsd-core.git cd get-shit-done node bin/install.js --claude --local ``` @@ -785,18 +785,18 @@ GSDのコードベースマッピングおよび分析コマンドは、プロ **コマンドが期待通りに動作しない?** - `/gsd-help` を実行してインストールを確認してください -- `npx @opengsd/get-shit-done-redux` を再実行して再インストールしてください +- `npx @opengsd/gsd-core` を再実行して再インストールしてください **最新バージョンへのアップデート?** ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **Dockerまたはコンテナ化環境を使用している?** チルダパス(`~/.claude/...`)でファイル読み取りが失敗する場合、インストール前に `CLAUDE_CONFIG_DIR` を設定してください: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global ``` これにより、コンテナ内で正しく展開されない可能性がある `~` の代わりに絶対パスが使用されます。 @@ -806,26 +806,26 @@ GSDを完全に削除するには: ```bash # グローバルインストール -npx @opengsd/get-shit-done-redux --claude --global --uninstall -npx @opengsd/get-shit-done-redux --opencode --global --uninstall -npx @opengsd/get-shit-done-redux --gemini --global --uninstall -npx @opengsd/get-shit-done-redux --kilo --global --uninstall -npx @opengsd/get-shit-done-redux --codex --global --uninstall -npx @opengsd/get-shit-done-redux --copilot --global --uninstall -npx @opengsd/get-shit-done-redux --cursor --global --uninstall -npx @opengsd/get-shit-done-redux --antigravity --global --uninstall -npx @opengsd/get-shit-done-redux --trae --global --uninstall +npx @opengsd/gsd-core --claude --global --uninstall +npx @opengsd/gsd-core --opencode --global --uninstall +npx @opengsd/gsd-core --gemini --global --uninstall +npx @opengsd/gsd-core --kilo --global --uninstall +npx @opengsd/gsd-core --codex --global --uninstall +npx @opengsd/gsd-core --copilot --global --uninstall +npx @opengsd/gsd-core --cursor --global --uninstall +npx @opengsd/gsd-core --antigravity --global --uninstall +npx @opengsd/gsd-core --trae --global --uninstall # ローカルインストール(現在のプロジェクト) -npx @opengsd/get-shit-done-redux --claude --local --uninstall -npx @opengsd/get-shit-done-redux --opencode --local --uninstall -npx @opengsd/get-shit-done-redux --gemini --local --uninstall -npx @opengsd/get-shit-done-redux --kilo --local --uninstall -npx @opengsd/get-shit-done-redux --codex --local --uninstall -npx @opengsd/get-shit-done-redux --copilot --local --uninstall -npx @opengsd/get-shit-done-redux --cursor --local --uninstall -npx @opengsd/get-shit-done-redux --antigravity --local --uninstall -npx @opengsd/get-shit-done-redux --trae --local --uninstall +npx @opengsd/gsd-core --claude --local --uninstall +npx @opengsd/gsd-core --opencode --local --uninstall +npx @opengsd/gsd-core --gemini --local --uninstall +npx @opengsd/gsd-core --kilo --local --uninstall +npx @opengsd/gsd-core --codex --local --uninstall +npx @opengsd/gsd-core --copilot --local --uninstall +npx @opengsd/gsd-core --cursor --local --uninstall +npx @opengsd/gsd-core --antigravity --local --uninstall +npx @opengsd/gsd-core --trae --local --uninstall ``` これにより、他の設定を保持しながら、すべてのGSDコマンド、エージェント、フック、設定が削除されます。 @@ -834,7 +834,7 @@ npx @opengsd/get-shit-done-redux --trae --local --uninstall ## コミュニティポート -OpenCode、Gemini CLI、Kilo、Codexは `npx @opengsd/get-shit-done-redux` でネイティブサポートされています。 +OpenCode、Gemini CLI、Kilo、Codexは `npx @opengsd/gsd-core` でネイティブサポートされています。 以下のコミュニティポートがマルチランタイムサポートの先駆けとなりました: @@ -847,11 +847,11 @@ OpenCode、Gemini CLI、Kilo、Codexは `npx @opengsd/get-shit-done-redux` で ## スター履歴 - + - - - Star History Chart + + + Star History Chart diff --git a/README.ko-KR.md b/README.ko-KR.md index 38e0aa274..0772cd0db 100644 --- a/README.ko-KR.md +++ b/README.ko-KR.md @@ -10,17 +10,17 @@ **컨텍스트 rot를 해결합니다 — Claude의 컨텍스트 창이 채워질수록 품질이 저하되는 문제.** -[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml) +[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/gsd-core/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/gsd-core/actions/workflows/test.yml) [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r) -[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux) +[![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **Mac, Windows, Linux 모두 지원.** @@ -77,14 +77,14 @@ GSD가 그걸 고칩니다. Claude Code를 신뢰할 수 있게 만드는 컨텍 ### v1.39.0 하이라이트 -전체 목록은 [v1.39.0 릴리스 노트](https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.39.0)를 참고하세요. +전체 목록은 [v1.39.0 릴리스 노트](https://github.com/open-gsd/gsd-core/releases/tag/v1.39.0)를 참고하세요. - **`--minimal` 설치 프로파일** — 별칭 `--core-only`. 메인 루프 6개 스킬(`new-project`, `discuss-phase`, `plan-phase`, `execute-phase`, `help`, `update`)만 설치하고 `gsd-*` 서브에이전트는 설치하지 않음. 콜드 스타트 시스템 프롬프트 오버헤드를 ~12k 토큰에서 ~700 토큰으로 축소(≥94% 감소). 32K–128K 컨텍스트의 로컬 LLM이나 토큰 과금 API에 유용. - **`/gsd-phase --edit`** — `ROADMAP.md`에 있는 기존 단계의 임의 필드를 그 자리에서 수정(번호와 위치는 변경되지 않음). `--force`는 확인 diff를 건너뛰고, `depends_on` 참조를 검증하며 쓰기 시 `STATE.md`도 갱신. - **머지 후 빌드 & 테스트 게이트** — `execute-phase` 5.6 단계가 `workflow.build_command` 설정을 우선 자동 감지하고, 없으면 Xcode(`.xcodeproj`), Makefile, Justfile, Cargo, Go, Python, npm 순으로 폴백. Xcode/iOS 프로젝트는 `xcodebuild build` 및 `xcodebuild test`를 자동 실행. 병렬·직렬 모드 모두에서 동작. - **런타임별 리뷰 모델 선택** — `review.models.`로 각 외부 리뷰 CLI(codex, gemini 등)가 플래너/실행 프로파일과 독립적으로 자체 모델을 선택할 수 있음. - **워크스트림 설정 상속** — `GSD_WORKSTREAM`이 설정되면 루트 `.planning/config.json`을 먼저 로드한 뒤 워크스트림 설정을 딥 머지(충돌 시 워크스트림 우선). 워크스트림 설정에서 명시적 `null`은 루트 값을 덮어씀. -- **수동 카나리 릴리스 워크플로** — `.github/workflows/canary.yml`이 `workflow_dispatch`로 `dev` 브랜치에서 `{base}-canary.{N}` 빌드를 `@canary` dist-tag로 수동 게시(`@opengsd/get-shit-done-redux`와 `@opengsd/gsd-sdk`). +- **수동 카나리 릴리스 워크플로** — `.github/workflows/canary.yml`이 `workflow_dispatch`로 `dev` 브랜치에서 `{base}-canary.{N}` 빌드를 `@canary` dist-tag로 수동 게시(`@opengsd/gsd-core`와 `@opengsd/gsd-sdk`). - **스킬 통합: 86 → 59** — 4개의 새로운 그룹 스킬(`capture`, `phase`, `config`, `workspace`)이 31개의 마이크로 스킬을 흡수. 기존 6개의 부모 스킬은 래퍼업/하위 동작을 플래그로 흡수: `update --sync/--reapply`, `sketch --wrap-up`, `spike --wrap-up`, `map-codebase --fast/--query`, `code-review --fix`, `progress --do/--next`. 기능 손실 없음. --- @@ -92,7 +92,7 @@ GSD가 그걸 고칩니다. Claude Code를 신뢰할 수 있게 만드는 컨텍 ## 시작하기 ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` 설치 중에 다음을 선택합니다: @@ -116,7 +116,7 @@ npx @opengsd/get-shit-done-redux@latest GSD는 빠르게 발전합니다. 주기적으로 업데이트하세요: ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ```
@@ -124,49 +124,49 @@ npx @opengsd/get-shit-done-redux@latest ```bash # Claude Code -npx @opengsd/get-shit-done-redux --claude --global # ~/.claude/에 설치 -npx @opengsd/get-shit-done-redux --claude --local # ./.claude/에 설치 +npx @opengsd/gsd-core --claude --global # ~/.claude/에 설치 +npx @opengsd/gsd-core --claude --local # ./.claude/에 설치 # OpenCode -npx @opengsd/get-shit-done-redux --opencode --global # ~/.config/opencode/에 설치 +npx @opengsd/gsd-core --opencode --global # ~/.config/opencode/에 설치 # Gemini CLI -npx @opengsd/get-shit-done-redux --gemini --global # ~/.gemini/에 설치 +npx @opengsd/gsd-core --gemini --global # ~/.gemini/에 설치 # Kilo -npx @opengsd/get-shit-done-redux --kilo --global # ~/.config/kilo/에 설치 -npx @opengsd/get-shit-done-redux --kilo --local # ./.kilo/에 설치 +npx @opengsd/gsd-core --kilo --global # ~/.config/kilo/에 설치 +npx @opengsd/gsd-core --kilo --local # ./.kilo/에 설치 # Codex -npx @opengsd/get-shit-done-redux --codex --global # ~/.codex/에 설치 -npx @opengsd/get-shit-done-redux --codex --local # ./.codex/에 설치 +npx @opengsd/gsd-core --codex --global # ~/.codex/에 설치 +npx @opengsd/gsd-core --codex --local # ./.codex/에 설치 # Copilot -npx @opengsd/get-shit-done-redux --copilot --global # ~/.github/에 설치 -npx @opengsd/get-shit-done-redux --copilot --local # ./.github/에 설치 +npx @opengsd/gsd-core --copilot --global # ~/.github/에 설치 +npx @opengsd/gsd-core --copilot --local # ./.github/에 설치 # Cursor CLI -npx @opengsd/get-shit-done-redux --cursor --global # ~/.cursor/에 설치 -npx @opengsd/get-shit-done-redux --cursor --local # ./.cursor/에 설치 +npx @opengsd/gsd-core --cursor --global # ~/.cursor/에 설치 +npx @opengsd/gsd-core --cursor --local # ./.cursor/에 설치 # Antigravity -npx @opengsd/get-shit-done-redux --antigravity --global # ~/.gemini/antigravity/에 설치 -npx @opengsd/get-shit-done-redux --antigravity --local # ./.agent/에 설치 +npx @opengsd/gsd-core --antigravity --global # ~/.gemini/antigravity/에 설치 +npx @opengsd/gsd-core --antigravity --local # ./.agent/에 설치 # Augment -npx @opengsd/get-shit-done-redux --augment --global # ~/.augment/에 설치 -npx @opengsd/get-shit-done-redux --augment --local # ./.augment/에 설치 +npx @opengsd/gsd-core --augment --global # ~/.augment/에 설치 +npx @opengsd/gsd-core --augment --local # ./.augment/에 설치 # Trae -npx @opengsd/get-shit-done-redux --trae --global # ~/.trae/에 설치 -npx @opengsd/get-shit-done-redux --trae --local # ./.trae/에 설치 +npx @opengsd/gsd-core --trae --global # ~/.trae/에 설치 +npx @opengsd/gsd-core --trae --local # ./.trae/에 설치 # Cline -npx @opengsd/get-shit-done-redux --cline --global # ~/.cline/에 설치 -npx @opengsd/get-shit-done-redux --cline --local # ./.clinerules에 설치 +npx @opengsd/gsd-core --cline --global # ~/.cline/에 설치 +npx @opengsd/gsd-core --cline --local # ./.clinerules에 설치 # 전체 런타임 -npx @opengsd/get-shit-done-redux --all --global # 모든 디렉터리에 설치 +npx @opengsd/gsd-core --all --global # 모든 디렉터리에 설치 ``` 위치 프롬프트 건너뛰기: `--global` (`-g`) 또는 `--local` (`-l`). @@ -180,7 +180,7 @@ npx @opengsd/get-shit-done-redux --all --global # 모든 디렉터리에 저장소를 클론하고 설치 프로그램을 로컬에서 실행합니다: ```bash -git clone https://github.com/open-gsd/get-shit-done-redux.git +git clone https://github.com/open-gsd/gsd-core.git cd get-shit-done node bin/install.js --claude --local ``` @@ -776,18 +776,18 @@ GSD의 코드베이스 매핑 및 분석 명령어는 프로젝트를 이해하 **명령어가 예상대로 작동하지 않나요?** - `/gsd-help`를 실행해 설치 확인 -- `npx @opengsd/get-shit-done-redux`를 다시 실행해 재설치 +- `npx @opengsd/gsd-core`를 다시 실행해 재설치 **최신 버전으로 업데이트하나요?** ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **Docker 또는 컨테이너 환경을 사용하나요?** 파일 읽기가 틸드 경로(`~/.claude/...`)로 실패하면 설치 전에 `CLAUDE_CONFIG_DIR`를 설정하세요: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global ``` 컨테이너에서 올바르게 확장되지 않을 수 있는 `~` 대신 절대 경로가 사용됩니다. @@ -797,26 +797,26 @@ GSD를 완전히 제거하려면: ```bash # 전역 설치 -npx @opengsd/get-shit-done-redux --claude --global --uninstall -npx @opengsd/get-shit-done-redux --opencode --global --uninstall -npx @opengsd/get-shit-done-redux --gemini --global --uninstall -npx @opengsd/get-shit-done-redux --kilo --global --uninstall -npx @opengsd/get-shit-done-redux --codex --global --uninstall -npx @opengsd/get-shit-done-redux --copilot --global --uninstall -npx @opengsd/get-shit-done-redux --cursor --global --uninstall -npx @opengsd/get-shit-done-redux --antigravity --global --uninstall -npx @opengsd/get-shit-done-redux --trae --global --uninstall +npx @opengsd/gsd-core --claude --global --uninstall +npx @opengsd/gsd-core --opencode --global --uninstall +npx @opengsd/gsd-core --gemini --global --uninstall +npx @opengsd/gsd-core --kilo --global --uninstall +npx @opengsd/gsd-core --codex --global --uninstall +npx @opengsd/gsd-core --copilot --global --uninstall +npx @opengsd/gsd-core --cursor --global --uninstall +npx @opengsd/gsd-core --antigravity --global --uninstall +npx @opengsd/gsd-core --trae --global --uninstall # 로컬 설치 (현재 프로젝트) -npx @opengsd/get-shit-done-redux --claude --local --uninstall -npx @opengsd/get-shit-done-redux --opencode --local --uninstall -npx @opengsd/get-shit-done-redux --gemini --local --uninstall -npx @opengsd/get-shit-done-redux --kilo --local --uninstall -npx @opengsd/get-shit-done-redux --codex --local --uninstall -npx @opengsd/get-shit-done-redux --copilot --local --uninstall -npx @opengsd/get-shit-done-redux --cursor --local --uninstall -npx @opengsd/get-shit-done-redux --antigravity --local --uninstall -npx @opengsd/get-shit-done-redux --trae --local --uninstall +npx @opengsd/gsd-core --claude --local --uninstall +npx @opengsd/gsd-core --opencode --local --uninstall +npx @opengsd/gsd-core --gemini --local --uninstall +npx @opengsd/gsd-core --kilo --local --uninstall +npx @opengsd/gsd-core --codex --local --uninstall +npx @opengsd/gsd-core --copilot --local --uninstall +npx @opengsd/gsd-core --cursor --local --uninstall +npx @opengsd/gsd-core --antigravity --local --uninstall +npx @opengsd/gsd-core --trae --local --uninstall ``` 다른 설정은 그대로 유지하면서 GSD의 모든 명령어, 에이전트, 훅, 설정을 제거합니다. @@ -825,7 +825,7 @@ npx @opengsd/get-shit-done-redux --trae --local --uninstall ## 커뮤니티 포트 -OpenCode, Gemini CLI, Kilo, Codex는 이제 `npx @opengsd/get-shit-done-redux`를 통해 기본 지원됩니다. +OpenCode, Gemini CLI, Kilo, Codex는 이제 `npx @opengsd/gsd-core`를 통해 기본 지원됩니다. 이 커뮤니티 포트들이 멀티 런타임 지원의 선구자였습니다: @@ -838,11 +838,11 @@ OpenCode, Gemini CLI, Kilo, Codex는 이제 `npx @opengsd/get-shit-done-redux` ## 스타 히스토리 - + - - - Star History Chart + + + Star History Chart diff --git a/README.md b/README.md index 87672fc48..ee6525c02 100644 --- a/README.md +++ b/README.md @@ -1,11 +1,11 @@ > # Project Continuity Notice > > GSD is maintained by the **open-gsd** team at: -> **`open-gsd/get-shit-done-redux`** +> **`open-gsd/gsd-core`** > > Use only these package names: > -> - npm (main): `@opengsd/get-shit-done-redux` +> - npm (main): `@opengsd/gsd-core` > - npm (sdk): `@opengsd/gsd-sdk` > > The legacy upstream is outside open-gsd control. Based on public transition announcements and repository ownership reality, we strongly recommend removing legacy packages and migrating to `@opengsd/*`. @@ -18,8 +18,8 @@ > > See: > -> - continuity announcement: https://github.com/open-gsd/get-shit-done-redux/discussions/109 -> - audit transparency report: https://github.com/open-gsd/get-shit-done-redux/discussions/119 +> - continuity announcement: https://github.com/open-gsd/gsd-core/discussions/109 +> - audit transparency report: https://github.com/open-gsd/gsd-core/discussions/119 > > --- @@ -33,17 +33,17 @@ **Solves context rot — the quality degradation that happens as your AI fills its context window.** -[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml) +[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/gsd-core/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/gsd-core/actions/workflows/test.yml) [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r) -[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux) +[![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **Works on Mac, Windows, and Linux.** @@ -79,7 +79,7 @@ npx @opengsd/get-shit-done-redux@latest GSD exists to help solo builders and small teams ship reliably with AI: clear specs, controlled context, and verification before release. -In May 2026, maintainers published a continuity announcement and migrated active development to `open-gsd/get-shit-done-redux` after trust and ownership concerns around the former upstream, including a meme-coin rug-pull incident publicly associated with that ecosystem. +In May 2026, maintainers published a continuity announcement and migrated active development to `open-gsd/gsd-core` after trust and ownership concerns around the former upstream, including a meme-coin rug-pull incident publicly associated with that ecosystem. The former creator and legacy lineage are no longer part of this program. This repository is the maintained continuation under open-gsd governance. @@ -152,7 +152,7 @@ Loop discuss → plan → execute → verify → ship until the milestone is don ## Getting Started ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` The installer prompts for your runtime (Claude Code, OpenCode, Gemini CLI, Kilo, Codex, Copilot, Cursor, Windsurf, and more) and whether to install globally or locally. @@ -169,7 +169,7 @@ Current release highlights are in [docs/RELEASE-v1.42.1.md](docs/RELEASE-v1.42.1 ### Cross-runtime compatibility: installer required -The `agents/` and `commands/` directories in this repository are Claude Code-format source files. The installer (`npx @opengsd/get-shit-done-redux@latest`) transforms them per target runtime — stripping or converting frontmatter fields that Claude Code uses but other runtimes reject. For example, OpenCode requires `color` as a hex or semantic value from a fixed set, and does not accept a `tools:` frontmatter field; the installer function `convertClaudeToOpencodeFrontmatter` (`bin/install.js`) handles this automatically. +The `agents/` and `commands/` directories in this repository are Claude Code-format source files. The installer (`npx @opengsd/gsd-core@latest`) transforms them per target runtime — stripping or converting frontmatter fields that Claude Code uses but other runtimes reject. For example, OpenCode requires `color` as a hex or semantic value from a fixed set, and does not accept a `tools:` frontmatter field; the installer function `convertClaudeToOpencodeFrontmatter` (`bin/install.js`) handles this automatically. **Manually copying files** from `agents/` or `commands/` directly into a non-Claude-Code runtime config directory (e.g., `~/.config/opencode/agents`) skips the conversion step and will produce schema validation errors in that runtime. @@ -255,12 +255,12 @@ For the full configuration reference — all settings, git branching strategies, **Something broken?** Re-run the installer — it's idempotent: ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **Containers or Docker?** Set `CLAUDE_CONFIG_DIR` before installing to avoid tilde-expansion issues: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global ``` Full troubleshooting and uninstall instructions in **[docs/USER-GUIDE.md](docs/USER-GUIDE.md#troubleshooting)**. @@ -278,11 +278,11 @@ Full troubleshooting and uninstall instructions in **[docs/USER-GUIDE.md](docs/U ## Star History - + - - - Star History Chart + + + Star History Chart diff --git a/README.pt-BR.md b/README.pt-BR.md index 636ca1d7b..41040c42a 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -10,17 +10,17 @@ **Resolve context rot — a degradação de qualidade que acontece conforme o Claude enche a janela de contexto.** -[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml) +[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/gsd-core/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/gsd-core/actions/workflows/test.yml) [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r) -[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux) +[![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **Funciona em Mac, Windows e Linux.** @@ -75,14 +75,14 @@ Quality gates embutidos capturam problemas reais: detecção de schema drift sin ### Destaques v1.39.0 -Lista completa nas [notas de release v1.39.0](https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.39.0). +Lista completa nas [notas de release v1.39.0](https://github.com/open-gsd/gsd-core/releases/tag/v1.39.0). - **Perfil de instalação `--minimal`** — alias `--core-only`. Instala apenas os 6 skills do loop principal (`new-project`, `discuss-phase`, `plan-phase`, `execute-phase`, `help`, `update`) e nenhum subagente `gsd-*`. Reduz o overhead do system prompt no cold-start de ~12k para ~700 tokens (≥94% de redução). Útil para LLMs locais com contexto de 32K–128K e APIs cobradas por token. - **`/gsd-phase --edit`** — edita qualquer campo de uma fase existente em `ROADMAP.md` no lugar, sem alterar o número ou a posição. `--force` pula o diff de confirmação; referências em `depends_on` são validadas e o `STATE.md` é atualizado na escrita. - **Build & test gate pós-merge** — o passo 5.6 de `execute-phase` agora detecta automaticamente o comando de build em `workflow.build_command`, com fallback para Xcode (`.xcodeproj`), Makefile, Justfile, Cargo, Go, Python ou npm. Projetos Xcode/iOS rodam `xcodebuild build` e `xcodebuild test` automaticamente. Funciona em modo paralelo e serial. - **Modelo de review por runtime** — `review.models.` permite que cada CLI externa de review (codex, gemini, etc.) escolha seu próprio modelo, independente do perfil de planner/executor. - **Herança de configuração de workstream** — quando `GSD_WORKSTREAM` está definido, o `.planning/config.json` raiz é carregado primeiro e merge-deep com o config da workstream (workstream vence em conflito). Um `null` explícito no config da workstream sobrescreve corretamente o valor raiz. -- **Workflow manual de canary release** — `.github/workflows/canary.yml` publica builds `{base}-canary.{N}` de `@opengsd/get-shit-done-redux` e `@opengsd/gsd-sdk` na dist-tag `@canary` a partir de `dev`, sob demanda via `workflow_dispatch`. +- **Workflow manual de canary release** — `.github/workflows/canary.yml` publica builds `{base}-canary.{N}` de `@opengsd/gsd-core` e `@opengsd/gsd-sdk` na dist-tag `@canary` a partir de `dev`, sob demanda via `workflow_dispatch`. - **Consolidação de skills: 86 → 59** — 4 novos skills agrupados (`capture`, `phase`, `config`, `workspace`) absorvem 31 micro-skills. 6 skills pais existentes absorvem wrap-up e sub-operações como flags: `update --sync/--reapply`, `sketch --wrap-up`, `spike --wrap-up`, `map-codebase --fast/--query`, `code-review --fix`, `progress --do/--next`. Sem perda funcional. --- @@ -90,7 +90,7 @@ Lista completa nas [notas de release v1.39.0](https://github.com/open-gsd/get-sh ## Primeiros passos ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` O instalador pede: @@ -112,7 +112,7 @@ Verifique com: ### Mantendo atualizado ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ```
@@ -120,49 +120,49 @@ npx @opengsd/get-shit-done-redux@latest ```bash # Claude Code -npx @opengsd/get-shit-done-redux --claude --global -npx @opengsd/get-shit-done-redux --claude --local +npx @opengsd/gsd-core --claude --global +npx @opengsd/gsd-core --claude --local # OpenCode -npx @opengsd/get-shit-done-redux --opencode --global +npx @opengsd/gsd-core --opencode --global # Gemini CLI -npx @opengsd/get-shit-done-redux --gemini --global +npx @opengsd/gsd-core --gemini --global # Kilo -npx @opengsd/get-shit-done-redux --kilo --global -npx @opengsd/get-shit-done-redux --kilo --local +npx @opengsd/gsd-core --kilo --global +npx @opengsd/gsd-core --kilo --local # Codex -npx @opengsd/get-shit-done-redux --codex --global -npx @opengsd/get-shit-done-redux --codex --local +npx @opengsd/gsd-core --codex --global +npx @opengsd/gsd-core --codex --local # Copilot -npx @opengsd/get-shit-done-redux --copilot --global -npx @opengsd/get-shit-done-redux --copilot --local +npx @opengsd/gsd-core --copilot --global +npx @opengsd/gsd-core --copilot --local # Cursor -npx @opengsd/get-shit-done-redux --cursor --global -npx @opengsd/get-shit-done-redux --cursor --local +npx @opengsd/gsd-core --cursor --global +npx @opengsd/gsd-core --cursor --local # Antigravity -npx @opengsd/get-shit-done-redux --antigravity --global -npx @opengsd/get-shit-done-redux --antigravity --local +npx @opengsd/gsd-core --antigravity --global +npx @opengsd/gsd-core --antigravity --local # Augment -npx @opengsd/get-shit-done-redux --augment --global # Install to ~/.augment/ -npx @opengsd/get-shit-done-redux --augment --local # Install to ./.augment/ +npx @opengsd/gsd-core --augment --global # Install to ~/.augment/ +npx @opengsd/gsd-core --augment --local # Install to ./.augment/ # Trae -npx @opengsd/get-shit-done-redux --trae --global # Install to ~/.trae/ -npx @opengsd/get-shit-done-redux --trae --local # Install to ./.trae/ +npx @opengsd/gsd-core --trae --global # Install to ~/.trae/ +npx @opengsd/gsd-core --trae --local # Install to ./.trae/ # Cline -npx @opengsd/get-shit-done-redux --cline --global # Install to ~/.cline/ -npx @opengsd/get-shit-done-redux --cline --local # Install to ./.clinerules +npx @opengsd/gsd-core --cline --global # Install to ~/.cline/ +npx @opengsd/gsd-core --cline --local # Install to ./.clinerules # Todos -npx @opengsd/get-shit-done-redux --all --global +npx @opengsd/gsd-core --all --global ``` Use `--global` (`-g`) ou `--local` (`-l`) para pular a pergunta de local. @@ -415,50 +415,50 @@ Adicione padrões sensíveis ao deny list do Claude Code: **Comandos não funcionam como esperado?** - Rode `/gsd-help` -- Reinstale com `npx @opengsd/get-shit-done-redux@latest` +- Reinstale com `npx @opengsd/gsd-core@latest` **Em Docker/container?** - Defina `CLAUDE_CONFIG_DIR` antes da instalação: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global ``` ### Desinstalar ```bash # Instalações globais -npx @opengsd/get-shit-done-redux --claude --global --uninstall -npx @opengsd/get-shit-done-redux --opencode --global --uninstall -npx @opengsd/get-shit-done-redux --gemini --global --uninstall -npx @opengsd/get-shit-done-redux --kilo --global --uninstall -npx @opengsd/get-shit-done-redux --codex --global --uninstall -npx @opengsd/get-shit-done-redux --copilot --global --uninstall -npx @opengsd/get-shit-done-redux --cursor --global --uninstall -npx @opengsd/get-shit-done-redux --antigravity --global --uninstall -npx @opengsd/get-shit-done-redux --augment --global --uninstall -npx @opengsd/get-shit-done-redux --trae --global --uninstall -npx @opengsd/get-shit-done-redux --cline --global --uninstall +npx @opengsd/gsd-core --claude --global --uninstall +npx @opengsd/gsd-core --opencode --global --uninstall +npx @opengsd/gsd-core --gemini --global --uninstall +npx @opengsd/gsd-core --kilo --global --uninstall +npx @opengsd/gsd-core --codex --global --uninstall +npx @opengsd/gsd-core --copilot --global --uninstall +npx @opengsd/gsd-core --cursor --global --uninstall +npx @opengsd/gsd-core --antigravity --global --uninstall +npx @opengsd/gsd-core --augment --global --uninstall +npx @opengsd/gsd-core --trae --global --uninstall +npx @opengsd/gsd-core --cline --global --uninstall # Instalações locais (projeto atual) -npx @opengsd/get-shit-done-redux --claude --local --uninstall -npx @opengsd/get-shit-done-redux --opencode --local --uninstall -npx @opengsd/get-shit-done-redux --gemini --local --uninstall -npx @opengsd/get-shit-done-redux --kilo --local --uninstall -npx @opengsd/get-shit-done-redux --codex --local --uninstall -npx @opengsd/get-shit-done-redux --copilot --local --uninstall -npx @opengsd/get-shit-done-redux --cursor --local --uninstall -npx @opengsd/get-shit-done-redux --antigravity --local --uninstall -npx @opengsd/get-shit-done-redux --augment --local --uninstall -npx @opengsd/get-shit-done-redux --trae --local --uninstall -npx @opengsd/get-shit-done-redux --cline --local --uninstall +npx @opengsd/gsd-core --claude --local --uninstall +npx @opengsd/gsd-core --opencode --local --uninstall +npx @opengsd/gsd-core --gemini --local --uninstall +npx @opengsd/gsd-core --kilo --local --uninstall +npx @opengsd/gsd-core --codex --local --uninstall +npx @opengsd/gsd-core --copilot --local --uninstall +npx @opengsd/gsd-core --cursor --local --uninstall +npx @opengsd/gsd-core --antigravity --local --uninstall +npx @opengsd/gsd-core --augment --local --uninstall +npx @opengsd/gsd-core --trae --local --uninstall +npx @opengsd/gsd-core --cline --local --uninstall ``` --- ## Community Ports -OpenCode, Gemini CLI, Kilo e Codex agora são suportados nativamente via `npx @opengsd/get-shit-done-redux`. +OpenCode, Gemini CLI, Kilo e Codex agora são suportados nativamente via `npx @opengsd/gsd-core`. | Projeto | Plataforma | Descrição | |---------|------------|-----------| @@ -469,11 +469,11 @@ OpenCode, Gemini CLI, Kilo e Codex agora são suportados nativamente via `npx @o ## Star History - + - - - Star History Chart + + + Star History Chart diff --git a/README.zh-CN.md b/README.zh-CN.md index b3345f191..0f879088f 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -10,17 +10,17 @@ **它解决的是 context rot:随着 Claude 的上下文窗口被填满,输出质量逐步劣化的问题。** -[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml) +[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/gsd-core/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/gsd-core/actions/workflows/test.yml) [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r) -[![GitHub stars](https://img.shields.io/github/stars/open-gsd/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/get-shit-done-redux) +[![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **支持 Mac、Windows 和 Linux。** @@ -75,14 +75,14 @@ GSD 解决的就是这个问题。它是让 Claude Code 变得可靠的上下文 ### v1.39.0 亮点 -完整列表请参阅 [v1.39.0 发行说明](https://github.com/open-gsd/get-shit-done-redux/releases/tag/v1.39.0)。 +完整列表请参阅 [v1.39.0 发行说明](https://github.com/open-gsd/gsd-core/releases/tag/v1.39.0)。 - **`--minimal` 安装档** — 别名 `--core-only`。仅安装主循环的 6 个核心技能(`new-project`、`discuss-phase`、`plan-phase`、`execute-phase`、`help`、`update`),不安装任何 `gsd-*` 子代理。将冷启动系统提示开销从 ~12k token 降至 ~700 token(≥94% 减少)。适合 32K–128K 上下文的本地 LLM 和按 token 计费的 API。 - **`/gsd-phase --edit`** — 就地修改 `ROADMAP.md` 中已有阶段的任意字段,不改变其编号或位置。`--force` 跳过确认 diff,验证 `depends_on` 引用,并在写入时更新 `STATE.md`。 - **合并后构建与测试门** — `execute-phase` 步骤 5.6 优先自动检测 `workflow.build_command` 配置,否则按 Xcode(`.xcodeproj`)、Makefile、Justfile、Cargo、Go、Python、npm 顺序回退。Xcode/iOS 项目自动运行 `xcodebuild build` 和 `xcodebuild test`。在并行与串行模式下均生效。 - **每运行时评审模型选择** — `review.models.` 让每个外部评审 CLI(codex、gemini 等)独立于规划/执行档选择自己的模型。 - **工作流设置继承** — 设置 `GSD_WORKSTREAM` 后,先加载根 `.planning/config.json`,再与该工作流的配置进行深合并(冲突时工作流优先)。工作流配置中显式 `null` 会覆盖根值。 -- **手动 canary 发布工作流** — `.github/workflows/canary.yml` 通过 `workflow_dispatch` 从 `dev` 分支按需将 `{base}-canary.{N}` 构建(`@opengsd/get-shit-done-redux` 与 `@opengsd/gsd-sdk`)发布到 `@canary` dist-tag。 +- **手动 canary 发布工作流** — `.github/workflows/canary.yml` 通过 `workflow_dispatch` 从 `dev` 分支按需将 `{base}-canary.{N}` 构建(`@opengsd/gsd-core` 与 `@opengsd/gsd-sdk`)发布到 `@canary` dist-tag。 - **技能整合:86 → 59** — 4 个新分组技能(`capture`、`phase`、`config`、`workspace`)吸收了 31 个微技能。6 个已有父技能将收尾与子操作合并为标志:`update --sync/--reapply`、`sketch --wrap-up`、`spike --wrap-up`、`map-codebase --fast/--query`、`code-review --fix`、`progress --do/--next`。功能无损失。 --- @@ -90,7 +90,7 @@ GSD 解决的就是这个问题。它是让 Claude Code 变得可靠的上下文 ## 快速开始 ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` 安装器会提示你选择: @@ -114,7 +114,7 @@ npx @opengsd/get-shit-done-redux@latest GSD 迭代很快,建议定期更新: ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ```
@@ -122,53 +122,53 @@ npx @opengsd/get-shit-done-redux@latest ```bash # Claude Code -npx @opengsd/get-shit-done-redux --claude --global # 安装到 ~/.claude/ -npx @opengsd/get-shit-done-redux --claude --local # 安装到 ./.claude/ +npx @opengsd/gsd-core --claude --global # 安装到 ~/.claude/ +npx @opengsd/gsd-core --claude --local # 安装到 ./.claude/ # OpenCode -npx @opengsd/get-shit-done-redux --opencode --global # 安装到 ~/.config/opencode/ +npx @opengsd/gsd-core --opencode --global # 安装到 ~/.config/opencode/ # Gemini CLI -npx @opengsd/get-shit-done-redux --gemini --global # 安装到 ~/.gemini/ +npx @opengsd/gsd-core --gemini --global # 安装到 ~/.gemini/ # Kilo -npx @opengsd/get-shit-done-redux --kilo --global # 安装到 ~/.config/kilo/ -npx @opengsd/get-shit-done-redux --kilo --local # 安装到 ./.kilo/ +npx @opengsd/gsd-core --kilo --global # 安装到 ~/.config/kilo/ +npx @opengsd/gsd-core --kilo --local # 安装到 ./.kilo/ # Codex -npx @opengsd/get-shit-done-redux --codex --global # 安装到 ~/.codex/ -npx @opengsd/get-shit-done-redux --codex --local # 安装到 ./.codex/ +npx @opengsd/gsd-core --codex --global # 安装到 ~/.codex/ +npx @opengsd/gsd-core --codex --local # 安装到 ./.codex/ # Copilot -npx @opengsd/get-shit-done-redux --copilot --global # 安装到 ~/.github/ -npx @opengsd/get-shit-done-redux --copilot --local # 安装到 ./.github/ +npx @opengsd/gsd-core --copilot --global # 安装到 ~/.github/ +npx @opengsd/gsd-core --copilot --local # 安装到 ./.github/ # Cursor CLI -npx @opengsd/get-shit-done-redux --cursor --global # 安装到 ~/.cursor/ -npx @opengsd/get-shit-done-redux --cursor --local # 安装到 ./.cursor/ +npx @opengsd/gsd-core --cursor --global # 安装到 ~/.cursor/ +npx @opengsd/gsd-core --cursor --local # 安装到 ./.cursor/ # Antigravity -npx @opengsd/get-shit-done-redux --antigravity --global # 安装到 ~/.gemini/antigravity/ -npx @opengsd/get-shit-done-redux --antigravity --local # 安装到 ./.agent/ +npx @opengsd/gsd-core --antigravity --global # 安装到 ~/.gemini/antigravity/ +npx @opengsd/gsd-core --antigravity --local # 安装到 ./.agent/ # Augment -npx @opengsd/get-shit-done-redux --augment --global # 安装到 ~/.augment/ -npx @opengsd/get-shit-done-redux --augment --local # 安装到 ./.augment/ +npx @opengsd/gsd-core --augment --global # 安装到 ~/.augment/ +npx @opengsd/gsd-core --augment --local # 安装到 ./.augment/ # Trae -npx @opengsd/get-shit-done-redux --trae --global # 安装到 ~/.trae/ -npx @opengsd/get-shit-done-redux --trae --local # 安装到 ./.trae/ +npx @opengsd/gsd-core --trae --global # 安装到 ~/.trae/ +npx @opengsd/gsd-core --trae --local # 安装到 ./.trae/ # CodeBuddy -npx @opengsd/get-shit-done-redux --codebuddy --global # 安装到 ~/.codebuddy/ -npx @opengsd/get-shit-done-redux --codebuddy --local # 安装到 ./.codebuddy/ +npx @opengsd/gsd-core --codebuddy --global # 安装到 ~/.codebuddy/ +npx @opengsd/gsd-core --codebuddy --local # 安装到 ./.codebuddy/ # Cline -npx @opengsd/get-shit-done-redux --cline --global # 安装到 ~/.cline/ -npx @opengsd/get-shit-done-redux --cline --local # 安装到 ./.clinerules +npx @opengsd/gsd-core --cline --global # 安装到 ~/.cline/ +npx @opengsd/gsd-core --cline --local # 安装到 ./.clinerules # 所有运行时 -npx @opengsd/get-shit-done-redux --all --global # 安装到所有目录 +npx @opengsd/gsd-core --all --global # 安装到所有目录 ``` 使用 `--global`(`-g`)或 `--local`(`-l`)可以跳过安装位置提示。 @@ -182,7 +182,7 @@ npx @opengsd/get-shit-done-redux --all --global # 安装到所有目录 克隆仓库并在本地运行安装器: ```bash -git clone https://github.com/open-gsd/get-shit-done-redux.git +git clone https://github.com/open-gsd/gsd-core.git cd get-shit-done node bin/install.js --claude --local ``` @@ -753,18 +753,18 @@ GSD 的代码库映射和分析命令会读取文件来理解你的项目。** **命令行为不符合预期?** - 运行 `/gsd-help` 确认安装成功 -- 重新执行 `npx @opengsd/get-shit-done-redux` 进行重装 +- 重新执行 `npx @opengsd/gsd-core` 进行重装 **想更新到最新版本?** ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **在 Docker 或容器环境中使用?** 如果使用波浪线路径(`~/.claude/...`)时读取失败,请在安装前设置 `CLAUDE_CONFIG_DIR`: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global ``` 这样可以确保使用绝对路径,而不是在容器里可能无法正确展开的 `~`。 @@ -774,30 +774,30 @@ CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --glob ```bash # 全局安装 -npx @opengsd/get-shit-done-redux --claude --global --uninstall -npx @opengsd/get-shit-done-redux --opencode --global --uninstall -npx @opengsd/get-shit-done-redux --gemini --global --uninstall -npx @opengsd/get-shit-done-redux --kilo --global --uninstall -npx @opengsd/get-shit-done-redux --codex --global --uninstall -npx @opengsd/get-shit-done-redux --copilot --global --uninstall -npx @opengsd/get-shit-done-redux --cursor --global --uninstall -npx @opengsd/get-shit-done-redux --antigravity --global --uninstall -npx @opengsd/get-shit-done-redux --augment --global --uninstall -npx @opengsd/get-shit-done-redux --trae --global --uninstall -npx @opengsd/get-shit-done-redux --cline --global --uninstall +npx @opengsd/gsd-core --claude --global --uninstall +npx @opengsd/gsd-core --opencode --global --uninstall +npx @opengsd/gsd-core --gemini --global --uninstall +npx @opengsd/gsd-core --kilo --global --uninstall +npx @opengsd/gsd-core --codex --global --uninstall +npx @opengsd/gsd-core --copilot --global --uninstall +npx @opengsd/gsd-core --cursor --global --uninstall +npx @opengsd/gsd-core --antigravity --global --uninstall +npx @opengsd/gsd-core --augment --global --uninstall +npx @opengsd/gsd-core --trae --global --uninstall +npx @opengsd/gsd-core --cline --global --uninstall # 本地安装(当前项目) -npx @opengsd/get-shit-done-redux --claude --local --uninstall -npx @opengsd/get-shit-done-redux --opencode --local --uninstall -npx @opengsd/get-shit-done-redux --gemini --local --uninstall -npx @opengsd/get-shit-done-redux --kilo --local --uninstall -npx @opengsd/get-shit-done-redux --codex --local --uninstall -npx @opengsd/get-shit-done-redux --copilot --local --uninstall -npx @opengsd/get-shit-done-redux --cursor --local --uninstall -npx @opengsd/get-shit-done-redux --antigravity --local --uninstall -npx @opengsd/get-shit-done-redux --augment --local --uninstall -npx @opengsd/get-shit-done-redux --trae --local --uninstall -npx @opengsd/get-shit-done-redux --cline --local --uninstall +npx @opengsd/gsd-core --claude --local --uninstall +npx @opengsd/gsd-core --opencode --local --uninstall +npx @opengsd/gsd-core --gemini --local --uninstall +npx @opengsd/gsd-core --kilo --local --uninstall +npx @opengsd/gsd-core --codex --local --uninstall +npx @opengsd/gsd-core --copilot --local --uninstall +npx @opengsd/gsd-core --cursor --local --uninstall +npx @opengsd/gsd-core --antigravity --local --uninstall +npx @opengsd/gsd-core --augment --local --uninstall +npx @opengsd/gsd-core --trae --local --uninstall +npx @opengsd/gsd-core --cline --local --uninstall ``` 这会移除所有 GSD 命令、代理、hooks 和设置,但会保留你其他配置。 @@ -806,7 +806,7 @@ npx @opengsd/get-shit-done-redux --cline --local --uninstall ## 社区移植版本 -OpenCode、Gemini CLI、Kilo 和 Codex 现在都已经通过 `npx @opengsd/get-shit-done-redux` 获得原生支持。 +OpenCode、Gemini CLI、Kilo 和 Codex 现在都已经通过 `npx @opengsd/gsd-core` 获得原生支持。 这些社区移植版本曾率先探索多运行时支持: @@ -819,11 +819,11 @@ OpenCode、Gemini CLI、Kilo 和 Codex 现在都已经通过 `npx @opengsd/get-s ## Star History - + - - - Star History Chart + + + Star History Chart diff --git a/SECURITY.md b/SECURITY.md index acd9e8ee1..8e76159c1 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -6,7 +6,7 @@ Instead, please report them via a **private GitHub security advisory**: -**https://github.com/open-gsd/get-shit-done-redux/security/advisories/new** +**https://github.com/open-gsd/gsd-core/security/advisories/new** Include: - Description of the vulnerability diff --git a/TESTING-STANDARDS.md b/TESTING-STANDARDS.md index 8d05fa1e8..0efaaf081 100644 --- a/TESTING-STANDARDS.md +++ b/TESTING-STANDARDS.md @@ -176,7 +176,7 @@ Real multi-process race tests are deleted once the corresponding deterministic c | `no-restricted-syntax` (ban 1) | `error` | Top-level `setTimeout` in `ExpressionStatement` | | `no-restricted-syntax` (ban 2) | `error` | `.only` member access on `test`/`it`/`describe` (belt-and-suspenders) | -All three `local/*` rules currently ship at `warn`. They become `error` after the cleanup sweep tracked at [#453](https://github.com/open-gsd/get-shit-done-redux/issues/453) merges. New violations added after the acceptance of ADR 456 are out of policy regardless of the current ESLint severity. +All three `local/*` rules currently ship at `warn`. They become `error` after the cleanup sweep tracked at [#453](https://github.com/open-gsd/gsd-core/issues/453) merges. New violations added after the acceptance of ADR 456 are out of policy regardless of the current ESLint severity. ESLint harness details: [`docs/adr/452-eslint-lint-harness.md`](docs/adr/452-eslint-lint-harness.md). diff --git a/VERSIONING.md b/VERSIONING.md index 73ee45525..cb9de4e96 100644 --- a/VERSIONING.md +++ b/VERSIONING.md @@ -6,9 +6,9 @@ GSD follows [Semantic Versioning 2.0.0](https://semver.org/) with three release | Tier | What ships | Version format | npm tag | Branch | Install | |------|-----------|---------------|---------|--------|---------| -| **Patch** | Bug fixes only | `1.27.1` | `latest` | `hotfix/1.27.1` | `npx @opengsd/get-shit-done-redux@latest` | -| **Minor** | Fixes + enhancements | `1.28.0` | `latest` (after RC) | `release/1.28.0` | `npx @opengsd/get-shit-done-redux@next` (RC) | -| **Major** | Fixes + enhancements + features | `2.0.0` | `latest` (after beta) | `release/2.0.0` | `npx @opengsd/get-shit-done-redux@next` (beta) | +| **Patch** | Bug fixes only | `1.27.1` | `latest` | `hotfix/1.27.1` | `npx @opengsd/gsd-core@latest` | +| **Minor** | Fixes + enhancements | `1.28.0` | `latest` (after RC) | `release/1.28.0` | `npx @opengsd/gsd-core@next` (RC) | +| **Major** | Fixes + enhancements + features | `2.0.0` | `latest` (after beta) | `release/2.0.0` | `npx @opengsd/gsd-core@next` (beta) | ## npm Dist-Tags @@ -16,8 +16,8 @@ Only two tags, following Angular/Next.js convention: | Tag | Meaning | Installed by | |-----|---------|-------------| -| `latest` | Stable production release | `npm install @opengsd/get-shit-done-redux` (default) | -| `next` | Pre-release (RC or beta) | `npm install @opengsd/get-shit-done-redux@next` (opt-in) | +| `latest` | Stable production release | `npm install @opengsd/gsd-core` (default) | +| `next` | Pre-release (RC or beta) | `npm install @opengsd/gsd-core@next` (opt-in) | The version string (`-rc.1` vs `-beta.1`) communicates stability level. Users never get pre-releases unless they explicitly opt in. @@ -107,7 +107,7 @@ For accumulated fixes and enhancements. 1. Trigger `release.yml` with action `create` and version (e.g., `1.28.0`) 2. Workflow creates `release/1.28.0` branch from main, bumps package.json 3. Trigger `release.yml` with action `rc` to publish `1.28.0-rc.1` to `next` -4. Test the RC: `npx @opengsd/get-shit-done-redux@next` +4. Test the RC: `npx @opengsd/gsd-core@next` 5. If issues found: fix on release branch, publish `rc.2`, `rc.3`, etc. 6. Trigger `release.yml` with action `finalize` — publishes `1.28.0` to `latest` 7. Merge release branch to main @@ -145,5 +145,5 @@ npm publish npm publish --tag next # Verify what latest and next point to -npm dist-tag ls @opengsd/get-shit-done-redux +npm dist-tag ls @opengsd/gsd-core ``` diff --git a/agents/gsd-intel-updater.md b/agents/gsd-intel-updater.md index 77c341d02..15f99e3e3 100644 --- a/agents/gsd-intel-updater.md +++ b/agents/gsd-intel-updater.md @@ -59,11 +59,11 @@ The /gsd:map-codebase --query command has already confirmed that intel.enabled i -**Runtime layout detection (GSD framework repo only):** If `package.json` `"name"` equals `"get-shit-done-redux"`, this project IS the GSD framework. In that case, detect the runtime root to choose canonical paths: +**Runtime layout detection (GSD framework repo only):** If `package.json` `"name"` equals `"@opengsd/gsd-core"`, this project IS the GSD framework. In that case, detect the runtime root to choose canonical paths: ```bash # Only run layout detection when analysing the GSD framework repo itself. -if [[ "$(jq -r '.name // ""' package.json 2>/dev/null)" == "get-shit-done-redux" ]]; then +if [[ "$(jq -r '.name // ""' package.json 2>/dev/null)" == "@opengsd/gsd-core" ]]; then ls -d .kilo 2>/dev/null && echo "kilo" || (ls -d .claude/get-shit-done 2>/dev/null && echo "claude") || echo "unknown" fi ``` diff --git a/assets/terminal.svg b/assets/terminal.svg index 82f7ba4c0..9d4d3df93 100644 --- a/assets/terminal.svg +++ b/assets/terminal.svg @@ -38,7 +38,7 @@ ~ $ - npx @opengsd/get-shit-done-redux + npx @opengsd/gsd-core ██████╗ ███████╗██████╗ diff --git a/bin/install.js b/bin/install.js index d6d076416..918da634d 100755 --- a/bin/install.js +++ b/bin/install.js @@ -8624,7 +8624,7 @@ function install(isGlobal, runtime = 'claude', options = {}) { // behind by a previous version), there is no actual "user choice" to // make — the file is a known GSD-managed artifact and the installer is // about to write the fresh bundled version. Gating the resolver on - // `!isTTY` made `npx @opengsd/get-shit-done-redux@latest --codex` hard-abort with + // `!isTTY` made `npx @opengsd/gsd-core@latest --codex` hard-abort with // 12 blocked bundled hooks. The env-override branch (operator-supplied // GSD_INSTALLER_MIGRATION_RESOLVE) still applies only in non-TTY mode. const _migrationIsTty = process.stdin && process.stdin.isTTY === true; @@ -8863,7 +8863,7 @@ function install(isGlobal, runtime = 'claude', options = {}) { // Copy agents to agents directory. // Skipped under --minimal: gsd-* subagent descriptions are eagerly loaded // into the runtime's Agent tool schema, costing ~6k tokens per turn even - // when no GSD workflow is active. See open-gsd/get-shit-done-redux#2762. + // when no GSD workflow is active. See open-gsd/gsd-core#2762. // Note: agentsSrc is declared as let before the enclosing try block so it // is accessible by installCodexConfig() in the Codex config section below. agentsSrc = _stageAgents(path.join(src, 'agents')); @@ -10694,12 +10694,12 @@ function maybeSuggestPathExport(globalBin, homeDir) { /** * #3406 helper: detect a stale globally-installed `@opengsd/gsd-sdk` package - * shadowing the `gsd-sdk` shim that `@opengsd/get-shit-done-redux` installs. + * shadowing the `gsd-sdk` shim that `@opengsd/gsd-core` installs. * * Background: `@opengsd/gsd-sdk@0.1.0` was published once and never updated - * (the SDK now ships embedded in `@opengsd/get-shit-done-redux`). When a user has the + * (the SDK now ships embedded in `@opengsd/gsd-core`). When a user has the * 0.1.0 standalone package installed globally, its `gsd-sdk` bin shadows - * the one `@opengsd/get-shit-done-redux` provides — and the 0.1.0 binary only knows + * the one `@opengsd/gsd-core` provides — and the 0.1.0 binary only knows * `run | auto | init` (no `query`), so every `gsd-sdk query ` * call from skills/hooks fails until the user runs * `npm uninstall -g @opengsd/gsd-sdk`. @@ -10762,7 +10762,7 @@ function formatStaleStandaloneSdkWarning(info) { ' npm uninstall -g @opengsd/gsd-sdk', ' npx -y ' + pkg.name + '@latest -- --global', '', - ' Tracking: #3406 — https://github.com/open-gsd/get-shit-done-redux/issues/3406', + ' Tracking: #3406 — https://github.com/open-gsd/gsd-core/issues/3406', ].join('\n'); } diff --git a/commands/gsd/config.md b/commands/gsd/config.md index 6ff5dcc1a..c52496adb 100644 --- a/commands/gsd/config.md +++ b/commands/gsd/config.md @@ -44,7 +44,7 @@ Parse the first token of $ARGUMENTS: - If it is `--advanced`: strip the flag, execute settings-advanced workflow - If it is `--integrations`: strip the flag, execute settings-integrations workflow - If it starts with `--profile`: extract the profile name (remainder after `--profile`), then: - 1. Verify `gsd-tools` is on PATH via `command -v gsd-tools`; if absent, emit the install hint `Install GSD via 'npm i -g @opengsd/get-shit-done-redux'` and stop. + 1. Verify `gsd-tools` is on PATH via `command -v gsd-tools`; if absent, emit the install hint `Install GSD via 'npm i -g @opengsd/gsd-core'` and stop. 2. Run: `gsd-tools query config-set-model-profile --raw` and display the output verbatim. - Otherwise: execute settings workflow (no argument needed) diff --git a/docs/ARCHITECTURE.md b/docs/ARCHITECTURE.md index 25cac74df..bf973af77 100644 --- a/docs/ARCHITECTURE.md +++ b/docs/ARCHITECTURE.md @@ -120,7 +120,7 @@ User-facing entry points. Each file contains YAML frontmatter (name, description **Total commands:** see [`docs/INVENTORY.md`](INVENTORY.md#commands) for the authoritative count and full roster. -#### Two-stage hierarchical routing (v1.40, [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792)) +#### Two-stage hierarchical routing (v1.40, [#2792](https://github.com/open-gsd/gsd-core/issues/2792)) To keep the eager skill-listing token cost low, v1.40 introduces six namespace **meta-skills** (`gsd-workflow`, `gsd-project`, `gsd-quality`, `gsd-context`, `gsd-manage`, `gsd-ideate` — sourced from `commands/gsd/ns-*.md`, but the invocable `name:` is the bare form shown here) layered above the concrete sub-skills. The model sees 6 namespace routers (~120 tokens) instead of a flat 86-skill listing (~2,150 tokens), selects a namespace, then routes to the concrete sub-skill via a routing table embedded in the namespace router's body. Namespace skills are **additive** — every concrete command is still directly invocable. diff --git a/docs/CANARY.md b/docs/CANARY.md index 6f8fad451..0dd0dd8ef 100644 --- a/docs/CANARY.md +++ b/docs/CANARY.md @@ -20,13 +20,13 @@ A canary build NEVER becomes a `next` build directly, and a `next` build NEVER b ```bash # One-off invocation (npx) -npx @opengsd/get-shit-done-redux@canary +npx @opengsd/gsd-core@canary # Pin to the canary dist-tag globally -npm install -g @opengsd/get-shit-done-redux@canary +npm install -g @opengsd/gsd-core@canary # Pin to an exact canary version -npm install -g @opengsd/get-shit-done-redux@1.50.0-canary.1 +npm install -g @opengsd/gsd-core@1.50.0-canary.1 ``` The CC installer's defensive purge rewrites stale config blocks left by older GSD versions, so reinstalling on top of an existing project is safe. @@ -47,20 +47,20 @@ The CC installer's defensive purge rewrites stale config blocks left by older GS ```bash # Back to the current stable -npm install -g @opengsd/get-shit-done-redux@latest +npm install -g @opengsd/gsd-core@latest # Or to the next/RC train -npm install -g @opengsd/get-shit-done-redux@next +npm install -g @opengsd/gsd-core@next ``` If you have a local project that interacted with canary-only features (for instance, an MVP-mode phase planned by 1.50.0-canary), the planner artifacts in `.planning/` remain valid — older GSD versions will just ignore the `**Mode:** mvp` field on phases. ## Reporting issues against canary -File against the [issue tracker](https://github.com/open-gsd/get-shit-done-redux/issues) with the `bug` template. Include the exact canary version (`get-shit-done-redux --version` reports it) so triage can route the report back into the `dev` stream rather than the stable stream. +File against the [issue tracker](https://github.com/open-gsd/gsd-core/issues) with the `bug` template. Include the exact canary version (`gsd-core --version` reports it) so triage can route the report back into the `dev` stream rather than the stable stream. ## Where to look next - Active canary release notes: [`docs/RELEASE-v1.50.0-canary.1.md`](RELEASE-v1.50.0-canary.1.md) - Stable release notes: [`CHANGELOG.md`](../CHANGELOG.md) -- Stream architecture rationale: discussed across [#2727](https://github.com/open-gsd/get-shit-done-redux/issues/2727), [#2773](https://github.com/open-gsd/get-shit-done-redux/issues/2773) (codex schema-break and the resulting promotion bottleneck that motivated explicit stream isolation) +- Stream architecture rationale: discussed across [#2727](https://github.com/open-gsd/gsd-core/issues/2727), [#2773](https://github.com/open-gsd/gsd-core/issues/2773) (codex schema-break and the resulting promotion bottleneck that motivated explicit stream isolation) diff --git a/docs/COMMANDS.md b/docs/COMMANDS.md index fffaa3d39..1dd4bdf09 100644 --- a/docs/COMMANDS.md +++ b/docs/COMMANDS.md @@ -16,7 +16,7 @@ The hyphen and colon forms are *runtime-specific spellings of the same command*. ## Namespace Meta-Skills -Six namespace routers ship as the first-stage entry points in v1.40. They keep the eager skill-listing token cost low (~120 tokens for 6 routers vs ~2,150 for a flat 86-skill listing) while the full surface remains directly invocable. The model selects a namespace, then routes to the concrete sub-skill. See [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792). +Six namespace routers ship as the first-stage entry points in v1.40. They keep the eager skill-listing token cost low (~120 tokens for 6 routers vs ~2,150 for a flat 86-skill listing) while the full surface remains directly invocable. The model selects a namespace, then routes to the concrete sub-skill. See [#2792](https://github.com/open-gsd/gsd-core/issues/2792). | Command | Routes to | |---------|-----------| @@ -757,7 +757,7 @@ Generate a developer behavioral profile from Claude Code session analysis across Validate `.planning/` directory integrity. With `--context`, probes the context-window utilization guard against the 60 % / 70 % thresholds (added -v1.40.0, [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792)). +v1.40.0, [#2792](https://github.com/open-gsd/gsd-core/issues/2792)). | Flag | Description | |------|-------------| diff --git a/docs/CONFIGURATION.md b/docs/CONFIGURATION.md index 29723f08e..55820adb1 100644 --- a/docs/CONFIGURATION.md +++ b/docs/CONFIGURATION.md @@ -136,11 +136,11 @@ GSD stores project settings in `.planning/config.json`. Created during `/gsd-new |---------|------|---------|---------|-------------| | `mode` | enum | `interactive`, `yolo` | `interactive` | `yolo` auto-approves decisions; `interactive` confirms at each step | | `granularity` | enum | `coarse`, `standard`, `fine` | `standard` | Controls phase count: `coarse` (3-5), `standard` (5-8), `fine` (8-12) | -| `model_profile` | enum | `quality`, `balanced`, `budget`, `adaptive`, `inherit` | `balanced` | Model tier for each agent (see [Model Profiles](#model-profiles)). `adaptive` was added per [#1713](https://github.com/open-gsd/get-shit-done-redux/issues/1713) / [#1806](https://github.com/open-gsd/get-shit-done-redux/issues/1806) and resolves the same way as the other tiers under runtime-aware profiles. | -| `runtime` | string | `claude`, `codex`, or any string | (none) | Active runtime for [runtime-aware profile resolution](#runtime-aware-profiles-2517). When set, profile tiers (opus/sonnet/haiku) resolve to runtime-native model IDs. Today only the Codex install path emits per-agent model IDs from this resolver; other runtimes (`opencode`, `gemini`, `qwen`, `copilot`, …) consume the resolver at spawn time and gain dedicated install-path support in [#2612](https://github.com/open-gsd/get-shit-done-redux/issues/2612). When unset (default), behavior is unchanged from prior versions. Added in v1.39 | +| `model_profile` | enum | `quality`, `balanced`, `budget`, `adaptive`, `inherit` | `balanced` | Model tier for each agent (see [Model Profiles](#model-profiles)). `adaptive` was added per [#1713](https://github.com/open-gsd/gsd-core/issues/1713) / [#1806](https://github.com/open-gsd/gsd-core/issues/1806) and resolves the same way as the other tiers under runtime-aware profiles. | +| `runtime` | string | `claude`, `codex`, or any string | (none) | Active runtime for [runtime-aware profile resolution](#runtime-aware-profiles-2517). When set, profile tiers (opus/sonnet/haiku) resolve to runtime-native model IDs. Today only the Codex install path emits per-agent model IDs from this resolver; other runtimes (`opencode`, `gemini`, `qwen`, `copilot`, …) consume the resolver at spawn time and gain dedicated install-path support in [#2612](https://github.com/open-gsd/gsd-core/issues/2612). When unset (default), behavior is unchanged from prior versions. Added in v1.39 | | `model_profile_overrides..` | string \| object | per-runtime tier override | (none) | Override the runtime-aware tier mapping for a specific `(runtime, tier)`. Tier is one of `opus`, `sonnet`, `haiku`. Value is either a model ID string (e.g. `"gpt-5-pro"`) or `{ model, reasoning_effort }`. See [Runtime-Aware Profiles](#runtime-aware-profiles-2517). Added in v1.39 | -| `models.` | enum | `opus`, `sonnet`, `haiku`, `inherit` | (none) | Per-phase-type model tier. Six accepted slots: `planning`, `discuss`, `research`, `execution`, `verification`, `completion`. Lets you tune at the phase level ("Opus for planning, Sonnet for the rest") without learning agent names. Resolves between `model_overrides` (higher) and `model_profile` (lower); see [Per-Phase-Type Models](#per-phase-type-models-models--added-in-v140). Added in v1.40 ([#3023](https://github.com/open-gsd/get-shit-done-redux/pull/3030)) | -| `dynamic_routing.enabled` | boolean | `true`, `false` | `false` | Master switch for [dynamic routing with failure-tier escalation](#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140). When `true`, agents resolve to `tier_models[default_tier]` and escalate one tier up on orchestrator-detected soft failure. Added in v1.40 ([#3024](https://github.com/open-gsd/get-shit-done-redux/pull/3031)) | +| `models.` | enum | `opus`, `sonnet`, `haiku`, `inherit` | (none) | Per-phase-type model tier. Six accepted slots: `planning`, `discuss`, `research`, `execution`, `verification`, `completion`. Lets you tune at the phase level ("Opus for planning, Sonnet for the rest") without learning agent names. Resolves between `model_overrides` (higher) and `model_profile` (lower); see [Per-Phase-Type Models](#per-phase-type-models-models--added-in-v140). Added in v1.40 ([#3023](https://github.com/open-gsd/gsd-core/pull/3030)) | +| `dynamic_routing.enabled` | boolean | `true`, `false` | `false` | Master switch for [dynamic routing with failure-tier escalation](#dynamic-routing-with-failure-tier-escalation-dynamic_routing--added-in-v140). When `true`, agents resolve to `tier_models[default_tier]` and escalate one tier up on orchestrator-detected soft failure. Added in v1.40 ([#3024](https://github.com/open-gsd/gsd-core/pull/3031)) | | `dynamic_routing.tier_models.` | enum | `opus`, `sonnet`, `haiku` | (none) | Tier alias for `light`, `standard`, or `heavy`. Used when `dynamic_routing.enabled: true`. Added in v1.40 | | `dynamic_routing.escalate_on_failure` | boolean | `true`, `false` | `true` | When `false`, escalation is disabled even if `enabled: true` — every attempt uses the default tier. Added in v1.40 | | `dynamic_routing.max_escalations` | integer | `0`, `1`, `2`, … | `1` | Hard cap on retries per agent invocation. Beyond the cap the resolver returns the cap-tier model. Added in v1.40 | @@ -258,7 +258,7 @@ All workflow toggles follow the **absent = enabled** pattern. If a key is missin | `executor.stall_detect_interval_minutes` | number | `5` | Minutes between executor stall checks while an executor agent is active. The execute-phase orchestrator uses this cadence to inspect recent commits and avoid waiting forever on a silent agent. | | `executor.stall_threshold_minutes` | number | `10` | Minutes without executor completion or expected-branch commit activity before execute-phase offers recovery choices for a possible stalled executor. | | `workflow.inline_plan_threshold` | number | `3` | Maximum number of tasks in a phase before the planner generates a separate PLAN.md file instead of inlining tasks in the prompt | -| `workflow.drift_threshold` | number | `3` | Minimum number of new structural elements (new directories, barrel exports, migrations, route modules) introduced during a phase before the post-execute codebase-drift gate takes action. See [#2003](https://github.com/open-gsd/get-shit-done-redux/issues/2003). Added in v1.39 | +| `workflow.drift_threshold` | number | `3` | Minimum number of new structural elements (new directories, barrel exports, migrations, route modules) introduced during a phase before the post-execute codebase-drift gate takes action. See [#2003](https://github.com/open-gsd/gsd-core/issues/2003). Added in v1.39 | | `workflow.drift_action` | string | `warn` | What to do when `workflow.drift_threshold` is exceeded after `/gsd-execute-phase`. `warn` prints a message suggesting `/gsd-map-codebase --paths …`; `auto-remap` spawns `gsd-codebase-mapper` scoped to the affected paths. Added in v1.39 | | `workflow.build_command` | string | (none) | Shell command to build the project in the post-merge build gate (Step A of step 5.6 in execute-phase). When unset, the gate auto-detects: Xcode (`.xcodeproj` present) → `xcodebuild build`, `Makefile` with `build:` target → `make build`, Justfile → `just build`, `Cargo.toml` → `cargo build`, `go.mod` → `go build ./...`, Python → `python -m py_compile`, `package.json` with `build` script → `npm run build`. Runs with a 5-minute timeout; failure increments `WAVE_FAILURE_COUNT`. Added in v1.39 | | `workflow.test_command` | string | (none) | Shell command to run the project's test suite in the post-merge test gate (Step B of step 5.6 in execute-phase) and the regression gate. When unset, the gate auto-detects: Xcode (`.xcodeproj` present) → `xcodebuild test`, `Makefile` with `test:` target → `make test`, Justfile → `just test`, `package.json` → `npm test`, `Cargo.toml` → `cargo test`, `go.mod` → `go test ./...`, Python → `python -m pytest`. Runs with a 5-minute timeout; failure increments `WAVE_FAILURE_COUNT`. Added in v1.39 | @@ -821,7 +821,7 @@ for the change to take effect. See issue #2256. ### Per-Phase-Type Models (`models`) — added in v1.41 -> Express tuning at the **phase** level (planning, research, execution, verification) without learning the agent taxonomy. Added in [#3023](https://github.com/open-gsd/get-shit-done-redux/pull/3030). +> Express tuning at the **phase** level (planning, research, execution, verification) without learning the agent taxonomy. Added in [#3023](https://github.com/open-gsd/gsd-core/pull/3030). `model_overrides` is per-**agent** (precise but verbose; you have to know that `gsd-codebase-mapper` is research and `gsd-doc-writer` is execution). The `models` block lets you say "Opus for planning and execution, Sonnet for the rest" in two lines: @@ -905,7 +905,7 @@ Direct edits to `.planning/config.json` are looser — the resolver simply ignor ### Dynamic Routing with Failure-Tier Escalation (`dynamic_routing`) — added in v1.41 -> Start cheap, escalate only when the agent fails the gate. Added in [#3024](https://github.com/open-gsd/get-shit-done-redux/pull/3031). +> Start cheap, escalate only when the agent fails the gate. Added in [#3024](https://github.com/open-gsd/gsd-core/pull/3031). `dynamic_routing` lets you pay for the cheap tier by default and only escalate to the more expensive tier when the orchestrator detects a soft failure (verification inconclusive, plan-check FLAG, etc.). @@ -986,7 +986,7 @@ The `dynamic_routing` block is **disabled by default** — `enabled: false` (or ### Effort Control (`effort`) — added in v1.42 -> Unified cross-provider effort knob. Added in [#443](https://github.com/open-gsd/get-shit-done-redux/issues/443). +> Unified cross-provider effort knob. Added in [#443](https://github.com/open-gsd/gsd-core/issues/443). Control the reasoning effort of agent invocations with a single config. The universal ladder is: @@ -1039,7 +1039,7 @@ Valid effort values: `minimal`, `low`, `medium`, `high`, `xhigh`, `max`. ### Fast Mode (`fast_mode`) — added in v1.42 -> Per-agent fast_mode propagation knob. Added in [#443](https://github.com/open-gsd/get-shit-done-redux/issues/443). +> Per-agent fast_mode propagation knob. Added in [#443](https://github.com/open-gsd/gsd-core/issues/443). Control whether fast_mode is propagated to agent invocations. Only accepts real booleans — string `"true"` is rejected. @@ -1101,7 +1101,7 @@ Use `node gsd-tools.cjs resolve-execution [--effort ] [--fas ### Non-Claude Runtimes (Codex, OpenCode, Gemini CLI, Kilo) -> **Codex CLI minimum supported version: `0.130.0`** (issue [#3562](https://github.com/open-gsd/get-shit-done-redux/issues/3562)). +> **Codex CLI minimum supported version: `0.130.0`** (issue [#3562](https://github.com/open-gsd/gsd-core/issues/3562)). > > [Codex CLI 0.130.0](https://github.com/openai/codex/releases/tag/rust-v0.130.0) (released 2026-05-08) removed extra-skills-roots discovery via [openai/codex#21485](https://github.com/openai/codex/pull/21485). From this version forward, Codex CLI only scans `~/.codex/skills//SKILL.md`, `/.codex/skills/`, and registered plugin roots for invocable skills. GSD installs the `$gsd-*` surface as `~/.codex/skills/gsd-/SKILL.md` so commands resolve after a Codex restart. Earlier Codex CLI versions can show a duplicate listing (the legacy extra-roots scan plus the user-root copies) — restart Codex and either upgrade to ≥ 0.130.0 or accept the duplicates until you do. diff --git a/docs/FEATURES.md b/docs/FEATURES.md index f662bf83b..80221e498 100644 --- a/docs/FEATURES.md +++ b/docs/FEATURES.md @@ -1050,7 +1050,7 @@ When the user declines (or keeps a non-GSD) statusline, the installer offers a S GSD update available: 1.39.0 → 1.40.0. Run /gsd-update. ``` -The banner is silent when up-to-date and rate-limits "check failed" diagnostics to once per 24 hours. Removed cleanly by `npx @opengsd/get-shit-done-redux --uninstall` or by deleting the SessionStart entry that references `gsd-update-banner.js`. +The banner is silent when up-to-date and rate-limits "check failed" diagnostics to once per 24 hours. Removed cleanly by `npx @opengsd/gsd-core --uninstall` or by deleting the SessionStart entry that references `gsd-update-banner.js`. ### 38. Developer Profiling @@ -1432,7 +1432,7 @@ Test suite that scans all agent, workflow, and command files for embedded inject ### 55. Multi-Runtime Installer Selection -**Part of:** `npx @opengsd/get-shit-done-redux` +**Part of:** `npx @opengsd/gsd-core` **Purpose:** Select multiple runtimes in a single interactive install session. @@ -1451,7 +1451,7 @@ Test suite that scans all agent, workflow, and command files for embedded inject ### 56. Windsurf Runtime Support -**Part of:** `npx @opengsd/get-shit-done-redux` +**Part of:** `npx @opengsd/gsd-core` **Purpose:** Add Windsurf as a supported AI CLI runtime for GSD installation and execution. @@ -1671,7 +1671,7 @@ Test suite that scans all agent, workflow, and command files for embedded inject ### 68. Claude Code Skills Migration -**Part of:** `npx @opengsd/get-shit-done-redux` +**Part of:** `npx @opengsd/gsd-core` **Purpose:** Migrate GSD commands to Claude Code 2.1.88+ skills format with backward compatibility. @@ -1935,7 +1935,7 @@ Test suite that scans all agent, workflow, and command files for embedded inject ### 85. New Runtime Support (Trae, Cline, Augment Code) -**Part of:** `npx @opengsd/get-shit-done-redux` +**Part of:** `npx @opengsd/gsd-core` **Purpose:** Extend GSD installation to Trae IDE, Cline, and Augment Code runtimes. @@ -2277,7 +2277,7 @@ Test suite that scans all agent, workflow, and command files for embedded inject ### 104. New Runtime Support (Cline, CodeBuddy, Qwen Code) -**Part of:** `npx @opengsd/get-shit-done-redux` +**Part of:** `npx @opengsd/gsd-core` **Purpose:** Extend GSD installation to Cline, CodeBuddy, and Qwen Code runtimes. @@ -2606,7 +2606,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style - REQ-CONSOLIDATE-03: Deleted micro-skill slash forms (the bare `gsd-add-todo`, `gsd-add-backlog`, `gsd-plant-seed`, `gsd-check-todos`, `gsd-add-phase`, `gsd-insert-phase`, `gsd-remove-phase`, `gsd-edit-phase`, `gsd-new-workspace`, `gsd-list-workspaces`, `gsd-remove-workspace`, `gsd-settings-advanced`, `gsd-settings-integrations`, `gsd-set-profile`, `gsd-sketch-wrap-up`, `gsd-spike-wrap-up`, `gsd-reapply-patches`, `gsd-code-review-fix`, …) MUST resolve to "Unknown command" — no shadow stubs. - REQ-CONSOLIDATE-04: `autonomous.md` invokes `/gsd-code-review --fix` (was previously calling the deleted `gsd-code-review-fix`). -**Reference issue:** [#2790](https://github.com/open-gsd/get-shit-done-redux/issues/2790) +**Reference issue:** [#2790](https://github.com/open-gsd/gsd-core/issues/2790) --- @@ -2634,7 +2634,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style - REQ-NS-02: Existing sub-skills are unchanged and still invocable directly — namespace skills are additive, not a replacement for direct slash forms. - REQ-NS-03: The body of each namespace router contains a routing table that maps user intent to the correct concrete sub-skill on the post-#2790 consolidated surface. -**Reference issue:** [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792) +**Reference issue:** [#2792](https://github.com/open-gsd/gsd-core/issues/2792) --- @@ -2649,7 +2649,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style - REQ-CTX-GUARD-02: The same triage is exposed as `gsd-tools.cjs validate context --tokens-used --context-window ` — a structured envelope for status-line and hook callers (#125). Both flags are required; the handler returns the same `{ percent, state }` envelope as the pure classifier in REQ-CTX-GUARD-03. - REQ-CTX-GUARD-03: The classifier (`bin/lib/context-utilization.cjs`) is pure: input `(tokensUsed, contextWindow)`, output `{ percent, state }`. Easy to unit-test, easy to reuse from any caller. -**Reference issue:** [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792) +**Reference issue:** [#2792](https://github.com/open-gsd/gsd-core/issues/2792) --- @@ -2666,7 +2666,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style - REQ-LIFECYCLE-02: `formatGsdState()` checks the lifecycle fields in priority order and emits the first matching scene (Phase active → Idle next-recommended → Milestone complete → Default fallback). - REQ-LIFECYCLE-03: All four fields default to undefined; existing STATE.md files render byte-for-byte identically. -**Reference issue:** [#2833](https://github.com/open-gsd/get-shit-done-redux/issues/2833) — see [`docs/STATE-MD-LIFECYCLE.md`](STATE-MD-LIFECYCLE.md) for the full field reference and rendering rules. +**Reference issue:** [#2833](https://github.com/open-gsd/gsd-core/issues/2833) — see [`docs/STATE-MD-LIFECYCLE.md`](STATE-MD-LIFECYCLE.md) for the full field reference and rendering rules. --- @@ -2706,7 +2706,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style - REQ-PHASE-MODELS-02: Configs without a `models` block behave byte-for-byte identically to pre-v1.41 behavior. - REQ-PHASE-MODELS-03: `discuss` and `completion` are accepted by the schema for forward compatibility; setting them today is a no-op until a subagent maps to each. -**Reference issue:** [#3023](https://github.com/open-gsd/get-shit-done-redux/pull/3030) +**Reference issue:** [#3023](https://github.com/open-gsd/gsd-core/pull/3030) --- @@ -2727,7 +2727,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style - REQ-DYNROUTE-02: New resolver `resolveModelForTier(cwd, agent, attempt)` in `core.cjs` is the single call-site for orchestrator integration. - REQ-DYNROUTE-03: `max_escalations` caps the escalation chain to prevent runaway cost. -**Reference issue:** [#3024](https://github.com/open-gsd/get-shit-done-redux/pull/3031) +**Reference issue:** [#3024](https://github.com/open-gsd/gsd-core/pull/3031) --- @@ -2740,14 +2740,14 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style - The hook reads the existing `~/.cache/gsd/gsd-update-check.json` cache — the same cache used by the statusline — and prints a banner only when an update is available. - Silent when up-to-date. - Failure diagnostics rate-limited to once per 24 h. -- Cleanly removed by `npx @opengsd/get-shit-done-redux --uninstall`. +- Cleanly removed by `npx @opengsd/gsd-core --uninstall`. **Requirements:** - REQ-BANNER-01: Banner does not install without explicit opt-in. - REQ-BANNER-02: No additional network requests — reuses the existing background update-check cache. - REQ-BANNER-03: Uninstall path removes the banner hook. -**Reference issue:** [#2795](https://github.com/open-gsd/get-shit-done-redux/pull/2795) +**Reference issue:** [#2795](https://github.com/open-gsd/gsd-core/pull/2795) --- @@ -2766,7 +2766,7 @@ Users who run a memory / knowledge-base MCP server (for example, ExoCortex-style No new commands or daemon process — purely a documentation artifact that maps existing primitives onto a tracker-driven workflow. -**Reference issue:** [#2840](https://github.com/open-gsd/get-shit-done-redux/pull/2840) +**Reference issue:** [#2840](https://github.com/open-gsd/gsd-core/pull/2840) --- @@ -2794,7 +2794,7 @@ Source commit: abc1234 (3 commits behind HEAD) **Fallback:** pre-v0.7 graphs and non-git checkouts return `commit_stale: null`; callers fall back to the existing mtime-based `stale` flag. No behavior change for existing users. -**Reference issue:** [#3170](https://github.com/open-gsd/get-shit-done-redux/issues/3170) +**Reference issue:** [#3170](https://github.com/open-gsd/gsd-core/issues/3170) --- diff --git a/docs/INVENTORY.md b/docs/INVENTORY.md index 1b84728b2..d29098972 100644 --- a/docs/INVENTORY.md +++ b/docs/INVENTORY.md @@ -60,7 +60,7 @@ Full roster at `commands/gsd/*.md`. The groupings below mirror `docs/COMMANDS.md ### Namespace Meta-Skills -These six routers are descriptor-only entries that the model picks first; the body of each contains a routing table that points at the correct concrete sub-skill. They exist to keep the eager skill-listing token cost low while the full surface remains reachable. See [#2792](https://github.com/open-gsd/get-shit-done-redux/issues/2792) for the rationale; the routing tables target the post-[#2790](https://github.com/open-gsd/get-shit-done-redux/issues/2790) consolidated surface. +These six routers are descriptor-only entries that the model picks first; the body of each contains a routing table that points at the correct concrete sub-skill. They exist to keep the eager skill-listing token cost low while the full surface remains reachable. See [#2792](https://github.com/open-gsd/gsd-core/issues/2792) for the rationale; the routing tables target the post-[#2790](https://github.com/open-gsd/gsd-core/issues/2790) consolidated surface. | Command | Role | Source | |---------|------|--------| diff --git a/docs/STATE-MD-LIFECYCLE.md b/docs/STATE-MD-LIFECYCLE.md index a4316b7d7..40464cb95 100644 --- a/docs/STATE-MD-LIFECYCLE.md +++ b/docs/STATE-MD-LIFECYCLE.md @@ -1,7 +1,7 @@ # STATE.md Phase Lifecycle Frontmatter > **Status:** Read-side shipped in v1.40.0 (issue -> [#2833](https://github.com/open-gsd/get-shit-done-redux/issues/2833)). +> [#2833](https://github.com/open-gsd/gsd-core/issues/2833)). > `parseStateMd()` reads the four frontmatter fields below and > `formatGsdState()` renders the in-flight / idle / progress scenes. > SDK write-side support to maintain the fields automatically is tracked diff --git a/docs/TESTING-SUITES.md b/docs/TESTING-SUITES.md index 024ba3a40..8705a030e 100644 --- a/docs/TESTING-SUITES.md +++ b/docs/TESTING-SUITES.md @@ -2,7 +2,7 @@ This project's `tests/` directory uses **filename suffix markers** to group tests into named suites. The harness `scripts/run-tests.cjs` filters by suite when given `--suite `. Without a flag it runs every `*.test.cjs` file (the historical default — unchanged). -> Tracked by issue [#3597](https://github.com/open-gsd/get-shit-done-redux/issues/3597). +> Tracked by issue [#3597](https://github.com/open-gsd/gsd-core/issues/3597). ## Suites diff --git a/docs/USER-GUIDE.md b/docs/USER-GUIDE.md index c5481e5e2..af33e4c25 100644 --- a/docs/USER-GUIDE.md +++ b/docs/USER-GUIDE.md @@ -1246,7 +1246,7 @@ For the full audit, harness reference, and the composition note with `model_prof ### Using Non-Claude Runtimes (Codex, OpenCode, Gemini CLI, Kilo) -> **Codex CLI minimum supported version: `0.130.0`** (issue [#3562](https://github.com/open-gsd/get-shit-done-redux/issues/3562)). +> **Codex CLI minimum supported version: `0.130.0`** (issue [#3562](https://github.com/open-gsd/gsd-core/issues/3562)). > > Codex CLI [0.130.0](https://github.com/openai/codex/releases/tag/rust-v0.130.0) (released 2026-05-08) removed extra-skills-roots discovery via [openai/codex#21485](https://github.com/openai/codex/pull/21485). From that version onward, Codex only discovers commands from `~/.codex/skills//SKILL.md` (user root), `/.codex/skills/` (cwd root), and registered plugin roots. The GSD installer writes `~/.codex/skills/gsd-/SKILL.md` directly so `$gsd-help`, `$gsd-new-project`, etc. are discoverable after restart. > @@ -1313,7 +1313,7 @@ All other frontmatter fields (`description:`, `system:`, `model:`) are accepted If you have access to any machine with Node.js — including WSL, a Linux VM, a CI runner, or a Docker container — you can run: ```bash -npx @opengsd/get-shit-done-redux@latest --opencode --global +npx @opengsd/gsd-core@latest --opencode --global ``` This produces a correctly converted `~/.config/opencode/agents/` directory. Copy that directory to your Windows machine. @@ -1328,10 +1328,10 @@ Cline uses a rules-based integration — GSD installs as `.clinerules` rather th ```bash # Global install (applies to all projects) -npx @opengsd/get-shit-done-redux --cline --global +npx @opengsd/gsd-core --cline --global # Local install (this project only) -npx @opengsd/get-shit-done-redux --cline --local +npx @opengsd/gsd-core --cline --local ``` Global installs write to `~/.cline/`. Local installs write to `./.cline/`. No custom slash commands are registered — GSD rules are loaded automatically by Cline from the rules file. @@ -1341,7 +1341,7 @@ Global installs write to `~/.cline/`. Local installs write to `./.cline/`. No cu CodeBuddy uses a skills-based integration. ```bash -npx @opengsd/get-shit-done-redux --codebuddy --global +npx @opengsd/gsd-core --codebuddy --global ``` Skills are installed to `~/.codebuddy/skills/gsd-*/SKILL.md`. @@ -1351,7 +1351,7 @@ Skills are installed to `~/.codebuddy/skills/gsd-*/SKILL.md`. Qwen Code uses the same open skills standard as Claude Code 2.1.88+. ```bash -npx @opengsd/get-shit-done-redux --qwen --global +npx @opengsd/gsd-core --qwen --global ``` Skills are installed to `~/.qwen/skills/gsd-*/SKILL.md`. Use the `QWEN_CONFIG_DIR` environment variable to override the default install path. @@ -1360,12 +1360,12 @@ Skills are installed to `~/.qwen/skills/gsd-*/SKILL.md`. Use the `QWEN_CONFIG_DI Many supported runtimes ship a prerelease edition alongside their stable release — Windsurf Next, Cursor Nightly, VS Code Insiders, Codex preview channels, JetBrains EAP, and so on. Prerelease editions read from a sibling configuration directory, so the default install path won't reach them. -GSD does not enumerate prerelease editions as separate named runtimes. They are accommodated through the existing `_CONFIG_DIR` environment variables and the free-string runtime policy (see [#2517](https://github.com/open-gsd/get-shit-done-redux/issues/2517)) — installs work, paths resolve, GSD operates. Prerelease editions are **best-effort and not separately tested** as part of release CI. +GSD does not enumerate prerelease editions as separate named runtimes. They are accommodated through the existing `_CONFIG_DIR` environment variables and the free-string runtime policy (see [#2517](https://github.com/open-gsd/gsd-core/issues/2517)) — installs work, paths resolve, GSD operates. Prerelease editions are **best-effort and not separately tested** as part of release CI. **Pattern.** Set the runtime's `*_CONFIG_DIR` env var to the prerelease directory before running the installer: ```bash -WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/get-shit-done-redux@latest --windsurf --global +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/gsd-core@latest --windsurf --global ``` Select the corresponding stable runtime in the installer prompt. Skills land in the prerelease directory; commands appear in the prerelease editor. @@ -1405,7 +1405,7 @@ Since v1.17, the installer backs up locally modified files to `gsd-local-patches ### Cannot Update via npm -If `npx @opengsd/get-shit-done-redux` fails due to npm outages or network restrictions, see [docs/manual-update.md](manual-update.md) for a step-by-step manual update procedure that works without npm access. +If `npx @opengsd/gsd-core` fails due to npm outages or network restrictions, see [docs/manual-update.md](manual-update.md) for a step-by-step manual update procedure that works without npm access. ### Surface GSD Update Notifications Without GSD's Statusline @@ -1427,7 +1427,7 @@ GSD update available: 1.39.0 → 1.40.0. Run /gsd-update. The banner is silent when no update is available. If the cache file is corrupt, GSD emits one diagnostic line (`GSD update check failed.`) and stays silent for 24 hours so a broken cache does not nag every session. -**Opt-out / removal:** delete the SessionStart hook entry that references `gsd-update-banner.js` from your runtime's `settings.json` (Claude Code: `~/.claude/settings.json`; Gemini: `~/.gemini/settings.json`). `npx @opengsd/get-shit-done-redux --uninstall` removes both the script and the registration in one pass. +**Opt-out / removal:** delete the SessionStart hook entry that references `gsd-update-banner.js` from your runtime's `settings.json` (Claude Code: `~/.claude/settings.json`; Gemini: `~/.gemini/settings.json`). `npx @opengsd/gsd-core --uninstall` removes both the script and the registration in one pass. The banner is not offered when GSD's statusline is installed — that channel already surfaces update info, so re-prompting would be noise. diff --git a/docs/agents/issue-tracker.md b/docs/agents/issue-tracker.md index 6516b7b2e..8ab6dec72 100644 --- a/docs/agents/issue-tracker.md +++ b/docs/agents/issue-tracker.md @@ -1,6 +1,6 @@ # Issue tracker: GitHub -Issues for this repo live in **GitHub Issues** at `open-gsd/get-shit-done-redux`. +Issues for this repo live in **GitHub Issues** at `open-gsd/gsd-core`. ## Auth @@ -9,19 +9,19 @@ repo-local `.envrc` before running `gh`. ## Conventions -- **Create**: `gh issue create --repo open-gsd/get-shit-done-redux --title "..." --body "..."` -- **Read**: `gh issue view --repo open-gsd/get-shit-done-redux --comments` -- **List**: `gh issue list --repo open-gsd/get-shit-done-redux --state open --json number,title,labels --jq '...'` -- **Comment**: `gh issue comment --repo open-gsd/get-shit-done-redux --body "..."` -- **Label**: `gh issue edit --repo open-gsd/get-shit-done-redux --add-label "..." --remove-label "..."` -- **Close**: `gh issue close --repo open-gsd/get-shit-done-redux --comment "..."` +- **Create**: `gh issue create --repo open-gsd/gsd-core --title "..." --body "..."` +- **Read**: `gh issue view --repo open-gsd/gsd-core --comments` +- **List**: `gh issue list --repo open-gsd/gsd-core --state open --json number,title,labels --jq '...'` +- **Comment**: `gh issue comment --repo open-gsd/gsd-core --body "..."` +- **Label**: `gh issue edit --repo open-gsd/gsd-core --add-label "..." --remove-label "..."` +- **Close**: `gh issue close --repo open-gsd/gsd-core --comment "..."` -Always pass `--repo open-gsd/get-shit-done-redux` explicitly — the local clone has multiple remotes and `gh` may resolve to the wrong one. +Always pass `--repo open-gsd/gsd-core` explicitly — the local clone has multiple remotes and `gh` may resolve to the wrong one. ## When a skill says "publish to the issue tracker" -Create a GitHub issue at `open-gsd/get-shit-done-redux`. +Create a GitHub issue at `open-gsd/gsd-core`. ## When a skill says "fetch the relevant ticket" -Run `gh issue view --repo open-gsd/get-shit-done-redux --comments`. +Run `gh issue view --repo open-gsd/gsd-core --comments`. diff --git a/docs/agents/triage-labels.md b/docs/agents/triage-labels.md index 2ba1c8b69..04b40b648 100644 --- a/docs/agents/triage-labels.md +++ b/docs/agents/triage-labels.md @@ -1,6 +1,6 @@ # Triage Labels -Maps the five canonical triage roles to the actual label strings in `open-gsd/get-shit-done-redux`. +Maps the five canonical triage roles to the actual label strings in `open-gsd/gsd-core`. | Canonical role | Label in this repo | Notes | |-------------------|--------------------------|----------------------------------------------------------------| diff --git a/docs/branch-protection.md b/docs/branch-protection.md index e4c1d286f..27a21e5b7 100644 --- a/docs/branch-protection.md +++ b/docs/branch-protection.md @@ -38,13 +38,13 @@ immutable once created. Tag creation is unrestricted. ```bash # Dry-run (evaluate mode — logs violations, does not block) -REPO=open-gsd/get-shit-done-redux ENFORCEMENT=evaluate bash scripts/sync-rulesets.sh +REPO=open-gsd/gsd-core ENFORCEMENT=evaluate bash scripts/sync-rulesets.sh # Activate protection -REPO=open-gsd/get-shit-done-redux ENFORCEMENT=active bash scripts/sync-rulesets.sh +REPO=open-gsd/gsd-core ENFORCEMENT=active bash scripts/sync-rulesets.sh # Roll back to disabled -REPO=open-gsd/get-shit-done-redux ENFORCEMENT=disabled bash scripts/sync-rulesets.sh +REPO=open-gsd/gsd-core ENFORCEMENT=disabled bash scripts/sync-rulesets.sh ``` The script is idempotent: running it twice with the same `ENFORCEMENT` value @@ -55,7 +55,7 @@ is a no-op semantically (PUT with identical body). After applying with `evaluate`, check which PRs/pushes would have been blocked: ```bash -REPO=open-gsd/get-shit-done-redux +REPO=open-gsd/gsd-core RULESET_ID=$(gh api repos/$REPO/rulesets --jq '.[] | select(.name=="main-protection") | .id') gh api repos/$REPO/rulesets/$RULESET_ID/rule-suites ``` diff --git a/docs/branching.md b/docs/branching.md index 8d286d0ad..6dd40958a 100644 --- a/docs/branching.md +++ b/docs/branching.md @@ -102,7 +102,7 @@ git add -A && git commit -m "fix: harden config parse for trailing comma" git push -u origin fix/3187-config-corruption # 4. Open a PR. Target = next. (Don't change the target.) -gh pr create --base next --repo open-gsd/get-shit-done-redux +gh pr create --base next --repo open-gsd/gsd-core # 5. CI runs. Reviewer approves. PR squash-merges into `next`. # Your branch auto-deletes. diff --git a/docs/context-monitor.md b/docs/context-monitor.md index 0375cceb1..e398b7588 100644 --- a/docs/context-monitor.md +++ b/docs/context-monitor.md @@ -60,7 +60,7 @@ GSD's `/gsd-pause-work` command saves execution state. The WARNING message sugge ## Setup -Both hooks are automatically registered during `npx @opengsd/get-shit-done-redux` installation: +Both hooks are automatically registered during `npx @opengsd/gsd-core` installation: - **Statusline** (writes bridge file): Registered as `statusLine` in settings.json - **Context Monitor** (reads bridge file): Registered as `PostToolUse` hook in settings.json (`AfterTool` for Gemini) diff --git a/docs/contributing/bootstrap.md b/docs/contributing/bootstrap.md index 56dd51348..f9d189225 100644 --- a/docs/contributing/bootstrap.md +++ b/docs/contributing/bootstrap.md @@ -36,8 +36,8 @@ will read it. ```bash # 1. Clone -git clone https://github.com/open-gsd/get-shit-done-redux.git -cd get-shit-done-redux +git clone https://github.com/open-gsd/gsd-core.git +cd gsd-core # 2. Activate the pinned Node version nvm use # nvm @@ -67,7 +67,7 @@ See https://docs.npmjs.com/cli/v10/commands/npm-ci | `npm run test:integration` | Integration tests | | `npm run build:sdk` | Rebuild the SDK dist (required before first test run) | -> `npm run check:integrity` — available once [#114](https://github.com/open-gsd/get-shit-done-redux/issues/114) merges. +> `npm run check:integrity` — available once [#114](https://github.com/open-gsd/gsd-core/issues/114) merges. --- diff --git a/docs/contributor-standards.md b/docs/contributor-standards.md index af9ed9763..286126639 100644 --- a/docs/contributor-standards.md +++ b/docs/contributor-standards.md @@ -72,7 +72,7 @@ Currently accepted ADRs: | `0004-worktree-workstream-seam-module.md` | Planning Workspace Module as single seam for worktree and workstream state | | `0005-sdk-architecture-seam-map.md` | SDK Architecture seam map for query/runtime surfaces | | `0006-planning-path-projection-module.md` | Planning Path Projection Module for SDK query handlers | -| `0007-sdk-package-seam-module.md` | SDK Package Seam Module owns SDK-to-get-shit-done-redux compatibility | +| `0007-sdk-package-seam-module.md` | SDK Package Seam Module owns SDK-to-gsd-core compatibility | ### When an ADR is required diff --git a/docs/discussions/grok-build-support-2026-05.md b/docs/discussions/grok-build-support-2026-05.md index 160ceed98..0cd2b846d 100644 --- a/docs/discussions/grok-build-support-2026-05.md +++ b/docs/discussions/grok-build-support-2026-05.md @@ -28,7 +28,7 @@ Currently, Grok Build is only supported via its Claude compatibility layer. This ## 2. Current Multi-Runtime Setup (as of May 2026) ### Development Source (Single Source of Truth) -- **Path:** `/home/cristian/bum/get-shit-done` (this repo — your working fork of `open-gsd/get-shit-done-redux`) +- **Path:** `/home/cristian/bum/get-shit-done` (this repo — your working fork of `open-gsd/gsd-core`) ### Installed Locations - `~/.agents/get-shit-done/` — Core workflows, references, templates, `gsd-tools.cjs`, `bin/` diff --git a/docs/ja-JP/FEATURES.md b/docs/ja-JP/FEATURES.md index 00b0aac76..3a36a31e6 100644 --- a/docs/ja-JP/FEATURES.md +++ b/docs/ja-JP/FEATURES.md @@ -1306,7 +1306,7 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を ### 55. マルチランタイムインストーラー選択 -**対象:** `npx @opengsd/get-shit-done-redux` +**対象:** `npx @opengsd/gsd-core` **目的:** 1回のインタラクティブなインストールセッションで複数のランタイムを選択します。 @@ -1325,7 +1325,7 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を ### 56. Windsurf ランタイムサポート -**対象:** `npx @opengsd/get-shit-done-redux` +**対象:** `npx @opengsd/gsd-core` **目的:** Windsurf AI IDE のサポートを追加します。 @@ -1546,7 +1546,7 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を ### 68. Claude Code スキルマイグレーション -**対象:** `npx @opengsd/get-shit-done-redux` +**対象:** `npx @opengsd/gsd-core` **目的:** GSD コマンドを Claude Code 2.1.88+ のスキル形式に後方互換性を維持してマイグレーションします。 @@ -1809,7 +1809,7 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を ### 85. 新規ランタイムサポート (Trae, Cline, Augment Code) -**対象:** `npx @opengsd/get-shit-done-redux` +**対象:** `npx @opengsd/gsd-core` **目的:** Trae IDE、Cline、Augment Code ランタイムへの GSD インストールを拡張します。 diff --git a/docs/ja-JP/context-monitor.md b/docs/ja-JP/context-monitor.md index 459431fbc..4ec0ab4c6 100644 --- a/docs/ja-JP/context-monitor.md +++ b/docs/ja-JP/context-monitor.md @@ -60,7 +60,7 @@ GSD の `/gsd-pause-work` コマンドは実行状態を保存します。WARNIN ## セットアップ -両フックは `npx @opengsd/get-shit-done-redux` のインストール時に自動的に登録されます: +両フックは `npx @opengsd/gsd-core` のインストール時に自動的に登録されます: - **ステータスライン**(ブリッジファイルの書き込み): settings.json の `statusLine` として登録 - **コンテキストモニター**(ブリッジファイルの読み取り): settings.json の `PostToolUse` フックとして登録(Gemini では `AfterTool`) diff --git a/docs/ko-KR/FEATURES.md b/docs/ko-KR/FEATURES.md index 82566219f..0617a2648 100644 --- a/docs/ko-KR/FEATURES.md +++ b/docs/ko-KR/FEATURES.md @@ -1306,7 +1306,7 @@ Claude가 GSD 워크플로우 컨텍스트 밖에서 파일 편집을 시도하 ### 55. Multi-Runtime Installer Selection -**일부:** `npx @opengsd/get-shit-done-redux` +**일부:** `npx @opengsd/gsd-core` **목적:** 단일 대화형 설치 세션에서 여러 런타임을 선택합니다. @@ -1325,7 +1325,7 @@ Claude가 GSD 워크플로우 컨텍스트 밖에서 파일 편집을 시도하 ### 56. Windsurf 런타임 지원 -**대상:** `npx @opengsd/get-shit-done-redux` +**대상:** `npx @opengsd/gsd-core` **목적:** Windsurf AI IDE 지원을 추가합니다. @@ -1546,7 +1546,7 @@ Claude가 GSD 워크플로우 컨텍스트 밖에서 파일 편집을 시도하 ### 68. Claude Code 스킬 마이그레이션 -**대상:** `npx @opengsd/get-shit-done-redux` +**대상:** `npx @opengsd/gsd-core` **목적:** GSD 명령어를 하위 호환성을 유지하면서 Claude Code 2.1.88+ 스킬 형식으로 마이그레이션합니다. @@ -1809,7 +1809,7 @@ Claude가 GSD 워크플로우 컨텍스트 밖에서 파일 편집을 시도하 ### 85. 신규 런타임 지원 (Trae, Cline, Augment Code) -**대상:** `npx @opengsd/get-shit-done-redux` +**대상:** `npx @opengsd/gsd-core` **목적:** Trae IDE, Cline, Augment Code 런타임으로 GSD 설치를 확장합니다. diff --git a/docs/ko-KR/context-monitor.md b/docs/ko-KR/context-monitor.md index 9721ac721..ce00d51f9 100644 --- a/docs/ko-KR/context-monitor.md +++ b/docs/ko-KR/context-monitor.md @@ -60,7 +60,7 @@ GSD의 `/gsd-pause-work` 명령어는 실행 상태를 저장합니다. WARNING ## 설정 -두 훅 모두 `npx @opengsd/get-shit-done-redux` 설치 중에 자동으로 등록됩니다. +두 훅 모두 `npx @opengsd/gsd-core` 설치 중에 자동으로 등록됩니다. - **Statusline** (브리지 파일 기록): settings.json에 `statusLine`으로 등록 - **Context Monitor** (브리지 파일 읽기): settings.json에 `PostToolUse` 훅으로 등록 (Gemini의 경우 `AfterTool`) diff --git a/docs/manual-update.md b/docs/manual-update.md index ad3c23c40..18ac5056d 100644 --- a/docs/manual-update.md +++ b/docs/manual-update.md @@ -1,11 +1,11 @@ # Manual Update (Non-npm Install) -Use this procedure when `npx @opengsd/get-shit-done-redux@latest` is unavailable — e.g. during a publish outage or if you are working directly from the source repo. +Use this procedure when `npx @opengsd/gsd-core@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/open-gsd/get-shit-done-redux`) +- This repo cloned locally (`git clone https://github.com/open-gsd/gsd-core`) ## Steps diff --git a/docs/prd/209-readme-continuity-release-update.md b/docs/prd/209-readme-continuity-release-update.md index 4ce9cdb6a..66f9590da 100644 --- a/docs/prd/209-readme-continuity-release-update.md +++ b/docs/prd/209-readme-continuity-release-update.md @@ -41,7 +41,7 @@ The top-level README still mixes legacy transition language, personal attributio ## Acceptance Criteria -1. README contains a continuity notice naming `open-gsd/get-shit-done-redux` as canonical. +1. README contains a continuity notice naming `open-gsd/gsd-core` as canonical. 2. README removes personal legacy attribution in origin-story prose. 3. README strongly recommends migration away from legacy artifacts. 4. README links to Discussions #109 and #119. diff --git a/docs/prd/3524-cjs-sdk-hard-seam.md b/docs/prd/3524-cjs-sdk-hard-seam.md index 1e135f607..43e482192 100644 --- a/docs/prd/3524-cjs-sdk-hard-seam.md +++ b/docs/prd/3524-cjs-sdk-hard-seam.md @@ -2,7 +2,7 @@ - **Status:** Reference - **Date:** 2026-05-14 -- **Tracking issue:** [#3524](https://github.com/open-gsd/get-shit-done-redux/issues/3524) +- **Tracking issue:** [#3524](https://github.com/open-gsd/gsd-core/issues/3524) - **Related ADR:** [`docs/adr/3524-cjs-sdk-hard-seam.md`](../adr/3524-cjs-sdk-hard-seam.md) ## Why this PRD exists @@ -11,7 +11,7 @@ The ADR defines the target architecture — one source of truth per Shared Modul ## Problem statement -The CJS↔SDK boundary in `open-gsd/get-shit-done-redux` is structurally permeable. Multiple Shared Modules — STATE.md Document Module, Workstream Inventory Module, and several others — exist today as **hand-synced pairs** of `.cjs` and `.ts` files with character-identical implementations. Constants (`CONFIG_DEFAULTS`, `VALID_CONFIG_KEYS`) are likewise defined twice. The boundary is policed only by: +The CJS↔SDK boundary in `open-gsd/gsd-core` is structurally permeable. Multiple Shared Modules — STATE.md Document Module, Workstream Inventory Module, and several others — exist today as **hand-synced pairs** of `.cjs` and `.ts` files with character-identical implementations. Constants (`CONFIG_DEFAULTS`, `VALID_CONFIG_KEYS`) are likewise defined twice. The boundary is policed only by: - A naming-parity test (`tests/config-schema-sdk-parity.test.cjs`) - Output-parity golden tests for read-only handlers (`sdk/src/golden/read-only-parity.integration.test.ts`) @@ -209,7 +209,7 @@ Phase 5 specifically preserves the in-process model: `QueryRuntimeBridge.execute ### Build/install pipeline impact - Each generator runs at build time on the developer machine (and in CI for the freshness check). No runtime generator execution. -- The published `@opengsd/get-shit-done-redux` package already includes both `get-shit-done/bin/` and `sdk/dist/`. The generated `.cjs` files are committed to the repo (like `command-aliases.generated.cjs` today), so the install flow is unchanged — no on-install code generation. +- The published `@opengsd/gsd-core` package already includes both `get-shit-done/bin/` and `sdk/dist/`. The generated `.cjs` files are committed to the repo (like `command-aliases.generated.cjs` today), so the install flow is unchanged — no on-install code generation. - `npm run build:sdk` continues to do what it does. Generators are invoked via `npm run gen:` per the existing precedent. ### Risks diff --git a/docs/security/baseline.md b/docs/security/baseline.md index ba1d10ed8..aa3dbb151 100644 --- a/docs/security/baseline.md +++ b/docs/security/baseline.md @@ -12,7 +12,7 @@ ### Repos in scope All active, non-archived repositories under the `open-gsd` GitHub organization, -beginning with the pilot repo `open-gsd/get-shit-done-redux`. +beginning with the pilot repo `open-gsd/gsd-core`. ### Out of scope @@ -26,7 +26,7 @@ beginning with the pilot repo `open-gsd/get-shit-done-redux`. This section defines the mandatory security controls for every in-scope repo. Each control links to the PR that implements it in the pilot repo -(`open-gsd/get-shit-done-redux`). Sibling repos adopt the same controls during +(`open-gsd/gsd-core`). Sibling repos adopt the same controls during Phase 2 rollout (§ 6). ### 2.1 Dependency integrity @@ -45,9 +45,9 @@ integrity as a prerequisite. ([SLSA](https://slsa.dev/)) **Implementation in pilot:** PR -[#135](https://github.com/open-gsd/get-shit-done-redux/pull/135) +[#135](https://github.com/open-gsd/gsd-core/pull/135) (linked to issue -[#114](https://github.com/open-gsd/get-shit-done-redux/issues/114)). +[#114](https://github.com/open-gsd/gsd-core/issues/114)). **Verify locally:** @@ -79,9 +79,9 @@ mechanism. ([GitGuardian exclusion grammar](https://docs.gitguardian.com/internal-repositories-monitoring/integrations/cli/secrets)) **Implementation in pilot:** PR -[#134](https://github.com/open-gsd/get-shit-done-redux/pull/134) +[#134](https://github.com/open-gsd/gsd-core/pull/134) (linked to issue -[#115](https://github.com/open-gsd/get-shit-done-redux/issues/115)). +[#115](https://github.com/open-gsd/gsd-core/issues/115)). Exclusion annotation files: `.secretscanignore` (top-level) and `.base64scanignore` (top-level, for base64-encoded values). @@ -114,9 +114,9 @@ risks in automated pipelines. ([CNCF Security TAG](https://github.com/cncf/tag-security)) **Implementation in pilot:** PR -[#133](https://github.com/open-gsd/get-shit-done-redux/pull/133) +[#133](https://github.com/open-gsd/gsd-core/pull/133) (linked to issue -[#113](https://github.com/open-gsd/get-shit-done-redux/issues/113)). +[#113](https://github.com/open-gsd/gsd-core/issues/113)). **Verify locally:** @@ -142,9 +142,9 @@ supply-chain vectors (CVE-2021-42574 — "Trojan Source"). Detecting them at sca time prevents invisible payload injection in source and output files. **Implementation in pilot:** PR -[#132](https://github.com/open-gsd/get-shit-done-redux/pull/132) +[#132](https://github.com/open-gsd/gsd-core/pull/132) (linked to issue -[#116](https://github.com/open-gsd/get-shit-done-redux/issues/116)). +[#116](https://github.com/open-gsd/gsd-core/issues/116)). **Verify locally:** @@ -174,7 +174,7 @@ OpenSSF Scorecard's "Pinned-Dependencies" check measures this directly. ([OpenSSF Scorecard](https://github.com/ossf/scorecard/blob/main/docs/checks.md)) **Implementation in pilot:** PR for issue -[#117](https://github.com/open-gsd/get-shit-done-redux/issues/117) +[#117](https://github.com/open-gsd/gsd-core/issues/117) (see PR #136). **Verify locally:** @@ -280,7 +280,7 @@ Post-Incident Activity. ### Where to report Report security vulnerabilities via **private security advisory** on GitHub: -`https://github.com/open-gsd/get-shit-done-redux/security/advisories/new` +`https://github.com/open-gsd/gsd-core/security/advisories/new` Do not open public issues for security vulnerabilities. @@ -294,7 +294,7 @@ If private advisory filing is unavailable, contact the open-gsd maintainers and ```text Title: [Short description, e.g., "Secret exposed in CI log for PR #NNN"] -Affected repo: open-gsd/get-shit-done-redux (or sibling repo name) +Affected repo: open-gsd/gsd-core (or sibling repo name) Affected ver: [npm version range, e.g., "<=1.42.3" or "all versions"] Reporter: [Your name / handle, or "Anonymous"] Date found: YYYY-MM-DD @@ -383,7 +383,7 @@ Responsibilities: | Step | Detail | |---|---| -| 1 | Requester opens a GitHub issue in `open-gsd/get-shit-done-redux` tagged `security-exception` | +| 1 | Requester opens a GitHub issue in `open-gsd/gsd-core` tagged `security-exception` | | 2 | Issue describes: which control, why the exception is needed, proposed compensating control | | 3 | One maintainer approves the exception in the issue thread | | 4 | Exception is time-limited: maximum 90 days. Requester must file a renewal or close the issue. | @@ -393,7 +393,7 @@ Responsibilities: ## 6. Rollout plan -### Phase 1 — Pilot: `open-gsd/get-shit-done-redux` (in progress) +### Phase 1 — Pilot: `open-gsd/gsd-core` (in progress) | Item | Status | Owner | Target date | Exit criteria | |---|---|---|---|---| diff --git a/docs/zh-CN/README.md b/docs/zh-CN/README.md index a2f153c8c..054c561e1 100644 --- a/docs/zh-CN/README.md +++ b/docs/zh-CN/README.md @@ -6,19 +6,19 @@ **解决上下文衰减 —— 即 Claude 填充上下文窗口时发生的质量退化问题。** -[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fget-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/get-shit-done-redux) -[![Tests](https://img.shields.io/github/actions/workflow/status/GSD-redux/get-shit-done-redux/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/GSD-redux/get-shit-done-redux/actions/workflows/test.yml) +[![npm version](https://img.shields.io/npm/v/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![npm downloads](https://img.shields.io/npm/dm/%40opengsd%2Fgsd-core?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/@opengsd/gsd-core) +[![Tests](https://img.shields.io/github/actions/workflow/status/open-gsd/gsd-core/test.yml?branch=main&style=for-the-badge&logo=github&label=Tests)](https://github.com/open-gsd/gsd-core/actions/workflows/test.yml) [![Discord](https://img.shields.io/badge/Discord-Join-5865F2?style=for-the-badge&logo=discord&logoColor=white)](https://discord.gg/mYgfVNfA2r) [![X (Twitter)](https://img.shields.io/badge/X-@gsd__foundation-000000?style=for-the-badge&logo=x&logoColor=white)](https://x.com/gsd_foundation) [![$GSD Token](https://img.shields.io/badge/$GSD-Dexscreener-1C1C1C?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjQiIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgZmlsbD0ibm9uZSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgZmlsbD0iIzAwRkYwMCIvPjwvc3ZnPg==&logoColor=00FF00)](https://dexscreener.com/solana/dwudwjvan7bzkw9zwlbyv6kspdlvhwzrqy6ebk8xzxkv) -[![GitHub stars](https://img.shields.io/github/stars/GSD-redux/get-shit-done-redux?style=for-the-badge&logo=github&color=181717)](https://github.com/GSD-redux/get-shit-done-redux) +[![GitHub stars](https://img.shields.io/github/stars/open-gsd/gsd-core?style=for-the-badge&logo=github&color=181717)](https://github.com/open-gsd/gsd-core) [![License](https://img.shields.io/badge/license-MIT-blue?style=for-the-badge)](LICENSE)
```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **支持 Mac、Windows 和 Linux。** @@ -78,7 +78,7 @@ GSD 解决了这个问题。它是让 Claude Code 变得可靠的上下文工程 ## 快速开始 ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` 安装程序会提示你选择: @@ -99,7 +99,7 @@ npx @opengsd/get-shit-done-redux@latest GSD 快速迭代。定期更新: ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ```
@@ -107,25 +107,25 @@ npx @opengsd/get-shit-done-redux@latest ```bash # Claude Code -npx @opengsd/get-shit-done-redux --claude --global # 安装到 ~/.claude/ -npx @opengsd/get-shit-done-redux --claude --local # 安装到 ./.claude/ +npx @opengsd/gsd-core --claude --global # 安装到 ~/.claude/ +npx @opengsd/gsd-core --claude --local # 安装到 ./.claude/ # OpenCode -npx @opengsd/get-shit-done-redux --opencode --global # 安装到 ~/.config/opencode/ +npx @opengsd/gsd-core --opencode --global # 安装到 ~/.config/opencode/ # Gemini CLI -npx @opengsd/get-shit-done-redux --gemini --global # 安装到 ~/.gemini/ +npx @opengsd/gsd-core --gemini --global # 安装到 ~/.gemini/ # Kilo -npx @opengsd/get-shit-done-redux --kilo --global # 安装到 ~/.config/kilo/ -npx @opengsd/get-shit-done-redux --kilo --local # 安装到 ./.kilo/ +npx @opengsd/gsd-core --kilo --global # 安装到 ~/.config/kilo/ +npx @opengsd/gsd-core --kilo --local # 安装到 ./.kilo/ # Codex -npx @opengsd/get-shit-done-redux --codex --global # 安装到 ~/.codex/ -npx @opengsd/get-shit-done-redux --codex --local # 安装到 ./.codex/ +npx @opengsd/gsd-core --codex --global # 安装到 ~/.codex/ +npx @opengsd/gsd-core --codex --local # 安装到 ./.codex/ # 所有运行时 -npx @opengsd/get-shit-done-redux --all --global # 安装到所有目录 +npx @opengsd/gsd-core --all --global # 安装到所有目录 ``` 使用 `--global`(`-g`)或 `--local`(`-l`)跳过位置提示。 @@ -139,7 +139,7 @@ npx @opengsd/get-shit-done-redux --all --global # 安装到所有目录 克隆仓库并本地运行安装程序: ```bash -git clone https://github.com/GSD-redux/get-shit-done-redux.git +git clone https://github.com/open-gsd/gsd-core.git cd get-shit-done node bin/install.js --claude --local ``` @@ -652,18 +652,18 @@ GSD 的代码库映射和分析命令读取文件以了解你的项目。**保 **命令没有按预期工作?** - 运行 `/gsd-help` 验证安装 -- 重新运行 `npx @opengsd/get-shit-done-redux` 重新安装 +- 重新运行 `npx @opengsd/gsd-core` 重新安装 **更新到最新版本?** ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` **使用 Docker 或容器化环境?** 如果用波浪号路径(`~/.claude/...`)读取文件失败,在安装前设置 `CLAUDE_CONFIG_DIR`: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/gsd-core --global ``` 这确保使用绝对路径而不是 `~`,后者在容器中可能无法正确展开。 @@ -673,16 +673,16 @@ CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --glob ```bash # 全局安装 -npx @opengsd/get-shit-done-redux --claude --global --uninstall -npx @opengsd/get-shit-done-redux --opencode --global --uninstall -npx @opengsd/get-shit-done-redux --kilo --global --uninstall -npx @opengsd/get-shit-done-redux --codex --global --uninstall +npx @opengsd/gsd-core --claude --global --uninstall +npx @opengsd/gsd-core --opencode --global --uninstall +npx @opengsd/gsd-core --kilo --global --uninstall +npx @opengsd/gsd-core --codex --global --uninstall # 本地安装(当前项目) -npx @opengsd/get-shit-done-redux --claude --local --uninstall -npx @opengsd/get-shit-done-redux --opencode --local --uninstall -npx @opengsd/get-shit-done-redux --kilo --local --uninstall -npx @opengsd/get-shit-done-redux --codex --local --uninstall +npx @opengsd/gsd-core --claude --local --uninstall +npx @opengsd/gsd-core --opencode --local --uninstall +npx @opengsd/gsd-core --kilo --local --uninstall +npx @opengsd/gsd-core --codex --local --uninstall ``` 这删除所有 GSD 命令、代理、钩子和设置,同时保留你的其他配置。 @@ -691,7 +691,7 @@ npx @opengsd/get-shit-done-redux --codex --local --uninstall ## 社区移植 -OpenCode、Gemini CLI、Kilo 和 Codex 现在通过 `npx @opengsd/get-shit-done-redux` 原生支持。 +OpenCode、Gemini CLI、Kilo 和 Codex 现在通过 `npx @opengsd/gsd-core` 原生支持。 这些社区移植开创了多运行时支持: @@ -704,11 +704,11 @@ OpenCode、Gemini CLI、Kilo 和 Codex 现在通过 `npx @opengsd/get-shit-done- ## Star 历史 - + - - - Star History Chart + + + Star History Chart diff --git a/get-shit-done/bin/check-latest-version.cjs b/get-shit-done/bin/check-latest-version.cjs index 3fcff384e..9760c4910 100755 --- a/get-shit-done/bin/check-latest-version.cjs +++ b/get-shit-done/bin/check-latest-version.cjs @@ -5,7 +5,7 @@ * Deterministic latest-version check for /gsd-update (#2992). * * The /gsd-update workflow's check_latest_version step was previously - * prescribed in LLM-driven prose ("run `npm view get-shit-done-redux + * prescribed in LLM-driven prose ("run `npm view gsd-core * version`"). The executing model could shortcut the prescription and * invent npm queries against wrong-shaped names (`@get-shit-done/cli`, * `get-shit-done-cli`, `gsd`), all of which 404 or — worse — return an diff --git a/get-shit-done/bin/lib/model-catalog.cjs b/get-shit-done/bin/lib/model-catalog.cjs index 1f3644b1e..7c0926b00 100644 --- a/get-shit-done/bin/lib/model-catalog.cjs +++ b/get-shit-done/bin/lib/model-catalog.cjs @@ -11,7 +11,7 @@ const path = require('node:path'); // // 2. Source-repo dev path — sdk/shared/model-catalog.json // Three levels up from bin/lib/: works when running directly from the -// open-gsd/get-shit-done-redux clone (the original path introduced by #3230). +// open-gsd/gsd-core clone (the original path introduced by #3230). // // 3. GSD_MODEL_CATALOG env override — allows test harnesses and custom // deployments to point at an arbitrary catalog file. diff --git a/get-shit-done/bin/lib/package-identity.cjs b/get-shit-done/bin/lib/package-identity.cjs index dd387bf2b..cd6cf3b8b 100644 --- a/get-shit-done/bin/lib/package-identity.cjs +++ b/get-shit-done/bin/lib/package-identity.cjs @@ -3,11 +3,11 @@ // node scripts/generate-package-identity.cjs 'use strict'; -const packageName = "@opengsd/get-shit-done-redux"; -const binName = "get-shit-done-redux"; -const repoSlug = "open-gsd/get-shit-done-redux"; -const repoUrl = "https://github.com/open-gsd/get-shit-done-redux"; -const changelogRawUrl = "https://raw.githubusercontent.com/open-gsd/get-shit-done-redux/main/CHANGELOG.md"; +const packageName = "@opengsd/gsd-core"; +const binName = "gsd-core"; +const repoSlug = "open-gsd/gsd-core"; +const repoUrl = "https://github.com/open-gsd/gsd-core"; +const changelogRawUrl = "https://raw.githubusercontent.com/open-gsd/gsd-core/main/CHANGELOG.md"; function formatManualInstall({ packageName, binName, scope, runtime } = {}) { const runtimeFlag = runtime ? ` --${runtime}` : ''; diff --git a/get-shit-done/bin/lib/phase-lifecycle.cjs b/get-shit-done/bin/lib/phase-lifecycle.cjs index 8edf6c892..b70560414 100644 --- a/get-shit-done/bin/lib/phase-lifecycle.cjs +++ b/get-shit-done/bin/lib/phase-lifecycle.cjs @@ -16,7 +16,7 @@ * * References: * - ADR-3524 (docs/adr/3524-cjs-sdk-hard-seam.md) - * - Issue #4 (open-gsd/get-shit-done-redux) + * - Issue #4 (open-gsd/gsd-core) */ /** diff --git a/get-shit-done/bin/lib/validate.cjs b/get-shit-done/bin/lib/validate.cjs index 079bba363..54828ef8c 100644 --- a/get-shit-done/bin/lib/validate.cjs +++ b/get-shit-done/bin/lib/validate.cjs @@ -22,8 +22,8 @@ * * References: * - ADR-3524 (docs/adr/3524-cjs-sdk-hard-seam.md) - * - Issue #6 (open-gsd/get-shit-done-redux) - * - Issue #26 (open-gsd/get-shit-done-redux) + * - Issue #6 (open-gsd/gsd-core) + * - Issue #26 (open-gsd/gsd-core) * - PR #154 (issue #4) — generator pattern precedent * - PR #156 (issue #6) — validate.ts generator that #26 extends */ diff --git a/get-shit-done/workflows/_runtime-launcher.snippet.sh b/get-shit-done/workflows/_runtime-launcher.snippet.sh index 509df6ae9..8cba445b9 100644 --- a/get-shit-done/workflows/_runtime-launcher.snippet.sh +++ b/get-shit-done/workflows/_runtime-launcher.snippet.sh @@ -1 +1 @@ -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi diff --git a/get-shit-done/workflows/add-backlog.md b/get-shit-done/workflows/add-backlog.md index 977a89f6f..46e21f4c0 100644 --- a/get-shit-done/workflows/add-backlog.md +++ b/get-shit-done/workflows/add-backlog.md @@ -19,7 +19,7 @@ cat .planning/ROADMAP.md ## Step 2: Find next backlog number ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi NEXT=$(gsd_run query phase.next-decimal 999 --raw) ``` diff --git a/get-shit-done/workflows/add-phase.md b/get-shit-done/workflows/add-phase.md index 2df154b13..3301afc82 100644 --- a/get-shit-done/workflows/add-phase.md +++ b/get-shit-done/workflows/add-phase.md @@ -29,7 +29,7 @@ Exit. Load phase operation context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "0") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/add-tests.md b/get-shit-done/workflows/add-tests.md index 4aaaa26ae..9dc2766d4 100644 --- a/get-shit-done/workflows/add-tests.md +++ b/get-shit-done/workflows/add-tests.md @@ -33,7 +33,7 @@ Exit. Load phase operation context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/add-todo.md b/get-shit-done/workflows/add-todo.md index c9047711a..7b9c0f7dd 100644 --- a/get-shit-done/workflows/add-todo.md +++ b/get-shit-done/workflows/add-todo.md @@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star Load todo context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.todos) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/ai-integration-phase.md b/get-shit-done/workflows/ai-integration-phase.md index af1466005..e5565a0bb 100644 --- a/get-shit-done/workflows/ai-integration-phase.md +++ b/get-shit-done/workflows/ai-integration-phase.md @@ -20,7 +20,7 @@ This prevents the two most common AI development failures: choosing the wrong fr ## 1. Initialize ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.plan-phase "$PHASE") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/audit-fix.md b/get-shit-done/workflows/audit-fix.md index b55e21bef..e6474bbe1 100644 --- a/get-shit-done/workflows/audit-fix.md +++ b/get-shit-done/workflows/audit-fix.md @@ -32,7 +32,7 @@ Invoke the source audit command and capture output. For `audit-uat` source: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query audit-uat 2>/dev/null || echo "{}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/audit-milestone.md b/get-shit-done/workflows/audit-milestone.md index a6adb7e65..709fe2278 100644 --- a/get-shit-done/workflows/audit-milestone.md +++ b/get-shit-done/workflows/audit-milestone.md @@ -16,7 +16,7 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize Milestone Context ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.milestone-op) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_CHECKER=$(gsd_run query agent-skills gsd-integration-checker) diff --git a/get-shit-done/workflows/audit-uat.md b/get-shit-done/workflows/audit-uat.md index 9583427ff..5e559cab3 100644 --- a/get-shit-done/workflows/audit-uat.md +++ b/get-shit-done/workflows/audit-uat.md @@ -8,7 +8,7 @@ Cross-phase audit of all UAT and verification files. Finds every outstanding ite Run the CLI audit: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi AUDIT=$(gsd_run query audit-uat --raw) ``` diff --git a/get-shit-done/workflows/autonomous.md b/get-shit-done/workflows/autonomous.md index 4b7f9c872..43056699f 100644 --- a/get-shit-done/workflows/autonomous.md +++ b/get-shit-done/workflows/autonomous.md @@ -48,7 +48,7 @@ When `--interactive` is set, discuss runs inline with questions (not auto-answer Bootstrap via milestone-level init: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.milestone-op) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/check-todos.md b/get-shit-done/workflows/check-todos.md index 74c62607c..3c54ac1c5 100644 --- a/get-shit-done/workflows/check-todos.md +++ b/get-shit-done/workflows/check-todos.md @@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star Load todo context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.todos) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/cleanup.md b/get-shit-done/workflows/cleanup.md index bf28c5f3b..52dce76a6 100644 --- a/get-shit-done/workflows/cleanup.md +++ b/get-shit-done/workflows/cleanup.md @@ -124,7 +124,7 @@ Repeat for all milestones in the cleanup set. Commit the changes: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query commit "chore: archive phase directories from completed milestones" --files .planning/milestones/ .planning/phases/ ``` diff --git a/get-shit-done/workflows/code-review-fix.md b/get-shit-done/workflows/code-review-fix.md index c09372ec4..eedb60e11 100644 --- a/get-shit-done/workflows/code-review-fix.md +++ b/get-shit-done/workflows/code-review-fix.md @@ -17,7 +17,7 @@ Read all files referenced by the invoking prompt's execution_context before star Parse arguments and load project state: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi PHASE_ARG="${1}" INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi diff --git a/get-shit-done/workflows/code-review.md b/get-shit-done/workflows/code-review.md index cca719791..974395668 100644 --- a/get-shit-done/workflows/code-review.md +++ b/get-shit-done/workflows/code-review.md @@ -17,7 +17,7 @@ Read all files referenced by the invoking prompt's execution_context before star Parse arguments and load project state: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi PHASE_ARG="${1}" INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi diff --git a/get-shit-done/workflows/complete-milestone.md b/get-shit-done/workflows/complete-milestone.md index ba778d0e4..f2b4f72a7 100644 --- a/get-shit-done/workflows/complete-milestone.md +++ b/get-shit-done/workflows/complete-milestone.md @@ -41,7 +41,7 @@ When a milestone completes: Before proceeding with milestone close, run the comprehensive open artifact audit. ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query audit-open ``` diff --git a/get-shit-done/workflows/debug.md b/get-shit-done/workflows/debug.md index 7f0e02f8f..dec8d8495 100644 --- a/get-shit-done/workflows/debug.md +++ b/get-shit-done/workflows/debug.md @@ -16,7 +16,7 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize Context ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query state.load) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/diagnose-issues.md b/get-shit-done/workflows/diagnose-issues.md index a8e65063d..003f84d2b 100644 --- a/get-shit-done/workflows/diagnose-issues.md +++ b/get-shit-done/workflows/diagnose-issues.md @@ -58,7 +58,7 @@ gaps = [ **Read worktree config:** ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi USE_WORKTREES=$(gsd_run query config-get workflow.use_worktrees 2>/dev/null || echo "true") ``` diff --git a/get-shit-done/workflows/discuss-phase-assumptions.md b/get-shit-done/workflows/discuss-phase-assumptions.md index 3e5ec0024..b674b7883 100644 --- a/get-shit-done/workflows/discuss-phase-assumptions.md +++ b/get-shit-done/workflows/discuss-phase-assumptions.md @@ -64,7 +64,7 @@ plain-text numbered list and ask the user to type their choice number. Phase number from argument (required). ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_ANALYZER=$(gsd_run query agent-skills gsd-assumptions-analyzer) diff --git a/get-shit-done/workflows/discuss-phase.md b/get-shit-done/workflows/discuss-phase.md index c65874c98..bb1627d77 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_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE}"); [[ "$INIT" == @file:* ]] && INIT=$(cat "${INIT#@file:}") AGENT_SKILLS_ADVISOR=$(gsd_run query agent-skills gsd-advisor-researcher) ``` diff --git a/get-shit-done/workflows/discuss-phase/modes/advisor.md b/get-shit-done/workflows/discuss-phase/modes/advisor.md index 092d8684e..b6be0d09b 100644 --- a/get-shit-done/workflows/discuss-phase/modes/advisor.md +++ b/get-shit-done/workflows/discuss-phase/modes/advisor.md @@ -37,7 +37,7 @@ Map to calibration tier: Resolve advisor model: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi ADVISOR_MODEL=$(gsd_run query resolve-model gsd-advisor-researcher --raw) ``` diff --git a/get-shit-done/workflows/discuss-phase/modes/auto.md b/get-shit-done/workflows/discuss-phase/modes/auto.md index cf2f50da6..1246a4ae3 100644 --- a/get-shit-done/workflows/discuss-phase/modes/auto.md +++ b/get-shit-done/workflows/discuss-phase/modes/auto.md @@ -40,7 +40,7 @@ that the next pass treats as gaps, consuming unbounded time and resources. Check the pass cap from config: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi MAX_PASSES=$(gsd_run query config-get workflow.max_discuss_passes 2>/dev/null || echo "3") ``` diff --git a/get-shit-done/workflows/discuss-phase/modes/chain.md b/get-shit-done/workflows/discuss-phase/modes/chain.md index fdd8a54e0..3a70d2b3a 100644 --- a/get-shit-done/workflows/discuss-phase/modes/chain.md +++ b/get-shit-done/workflows/discuss-phase/modes/chain.md @@ -25,7 +25,7 @@ interrupted `--auto` chain. This does NOT touch `workflow.auto_advance` (the user's persistent settings preference): ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi if [[ ! "$ARGUMENTS" =~ --auto ]] && [[ ! "$ARGUMENTS" =~ --chain ]]; then gsd_run query config-set workflow._auto_chain_active false || true fi diff --git a/get-shit-done/workflows/do.md b/get-shit-done/workflows/do.md index 5faa8e4b1..56f5016d9 100644 --- a/get-shit-done/workflows/do.md +++ b/get-shit-done/workflows/do.md @@ -26,7 +26,7 @@ Wait for response before continuing. **Check if project exists.** ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query state.load 2>/dev/null) ``` diff --git a/get-shit-done/workflows/docs-update.md b/get-shit-done/workflows/docs-update.md index de2b28416..caf274440 100644 --- a/get-shit-done/workflows/docs-update.md +++ b/get-shit-done/workflows/docs-update.md @@ -14,7 +14,7 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo Load docs-update context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query docs-init) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS=$(gsd_run query agent-skills gsd-doc-writer) diff --git a/get-shit-done/workflows/edit-phase.md b/get-shit-done/workflows/edit-phase.md index aced1214b..6f17dd4d4 100644 --- a/get-shit-done/workflows/edit-phase.md +++ b/get-shit-done/workflows/edit-phase.md @@ -34,7 +34,7 @@ Exit. Load phase operation context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${target}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/eval-review.md b/get-shit-done/workflows/eval-review.md index d9f8ca64c..19ad488f8 100644 --- a/get-shit-done/workflows/eval-review.md +++ b/get-shit-done/workflows/eval-review.md @@ -13,7 +13,7 @@ Use after /gsd:execute-phase to verify that the evaluation strategy from AI-SPEC ## 0. Initialize ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/execute-phase.md b/get-shit-done/workflows/execute-phase.md index 7970027fa..850e44136 100644 --- a/get-shit-done/workflows/execute-phase.md +++ b/get-shit-done/workflows/execute-phase.md @@ -66,7 +66,7 @@ If `--wave` is absent, preserve the current behavior of executing all incomplete Load all context in one call: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.execute-phase "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS=$(gsd_run query agent-skills gsd-executor) diff --git a/get-shit-done/workflows/execute-phase/steps/codebase-drift-gate.md b/get-shit-done/workflows/execute-phase/steps/codebase-drift-gate.md index 2098e3edf..648ea796d 100644 --- a/get-shit-done/workflows/execute-phase/steps/codebase-drift-gate.md +++ b/get-shit-done/workflows/execute-phase/steps/codebase-drift-gate.md @@ -45,7 +45,7 @@ First load the mapper agent's skill bundle (the executor's `AGENT_SKILLS` from step `init_context` is for `gsd-executor`, not the mapper): ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi AGENT_SKILLS_MAPPER=$(gsd_run query agent-skills gsd-codebase-mapper) ``` diff --git a/get-shit-done/workflows/execute-phase/steps/post-merge-gate.md b/get-shit-done/workflows/execute-phase/steps/post-merge-gate.md index 7b73fad6c..cb869d9f9 100644 --- a/get-shit-done/workflows/execute-phase/steps/post-merge-gate.md +++ b/get-shit-done/workflows/execute-phase/steps/post-merge-gate.md @@ -8,7 +8,7 @@ detect. **Step A — Build gate:** ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi # Resolve build command: project config > Xcode > Makefile > language sniff BUILD_CMD=$(gsd_run query config-get workflow.build_command --default "" 2>/dev/null || true) if [ -z "$BUILD_CMD" ]; then diff --git a/get-shit-done/workflows/execute-plan.md b/get-shit-done/workflows/execute-plan.md index 372823c80..39a487ced 100644 --- a/get-shit-done/workflows/execute-plan.md +++ b/get-shit-done/workflows/execute-plan.md @@ -30,7 +30,7 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo Load execution context (paths only to minimize orchestrator context): ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.execute-phase "${PHASE}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/explore.md b/get-shit-done/workflows/explore.md index 76e5d228b..d93635725 100644 --- a/get-shit-done/workflows/explore.md +++ b/get-shit-done/workflows/explore.md @@ -115,7 +115,7 @@ For each selected output, write the file: Commit if `commit_docs` is enabled: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query commit "docs: capture exploration — {topic_slug}" --files {file_list} ``` diff --git a/get-shit-done/workflows/extract-learnings.md b/get-shit-done/workflows/extract-learnings.md index 888a31180..2687a00e1 100644 --- a/get-shit-done/workflows/extract-learnings.md +++ b/get-shit-done/workflows/extract-learnings.md @@ -16,7 +16,7 @@ Analyze completed phase artifacts (PLAN.md, SUMMARY.md, VERIFICATION.md, UAT.md, Parse arguments and load project state: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/forensics.md b/get-shit-done/workflows/forensics.md index 84f9fe80c..d77f2dcbf 100644 --- a/get-shit-done/workflows/forensics.md +++ b/get-shit-done/workflows/forensics.md @@ -256,14 +256,14 @@ If actionable anomalies were found (HIGH or MEDIUM confidence): If confirmed: ```bash # Check if "bug" label exists before using it -BUG_LABEL=$(gh label list --repo open-gsd/get-shit-done-redux --search "bug" --json name -q '.[0].name' 2>/dev/null) +BUG_LABEL=$(gh label list --repo open-gsd/gsd-core --search "bug" --json name -q '.[0].name' 2>/dev/null) LABEL_FLAG="" if [ -n "$BUG_LABEL" ]; then LABEL_FLAG="--label bug" fi gh issue create \ - --repo open-gsd/get-shit-done-redux \ + --repo open-gsd/gsd-core \ --title "bug: {concise description from anomaly}" \ $LABEL_FLAG \ --body "{formatted findings from report}" @@ -272,7 +272,7 @@ gh issue create \ ## Step 8: Update STATE.md ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query state.record-session "" \ "Forensic investigation complete" \ ".planning/forensics/report-{timestamp}.md" diff --git a/get-shit-done/workflows/graduation.md b/get-shit-done/workflows/graduation.md index 6a3d5a9bc..bea2cfa93 100644 --- a/get-shit-done/workflows/graduation.md +++ b/get-shit-done/workflows/graduation.md @@ -21,7 +21,7 @@ Read from project config (`config.json`): ## Step 1: Guard Checks ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi GRADUATION_ENABLED=$(gsd_run query config-get features.graduation 2>/dev/null || echo "true") GRADUATION_WINDOW=$(gsd_run query config-get features.graduation_window 2>/dev/null || echo "5") GRADUATION_THRESHOLD=$(gsd_run query config-get features.graduation_threshold 2>/dev/null || echo "3") diff --git a/get-shit-done/workflows/health.md b/get-shit-done/workflows/health.md index b61f98dde..cae4b8292 100644 --- a/get-shit-done/workflows/health.md +++ b/get-shit-done/workflows/health.md @@ -49,7 +49,7 @@ available — replace the prompt with a plain-text two-question sequence plain text from the user's response. ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query validate.context \ --tokens-used "$TOKENS_USED" \ --context-window "$CONTEXT_WINDOW" diff --git a/get-shit-done/workflows/help/modes/default.md b/get-shit-done/workflows/help/modes/default.md index a70e94459..85ae99b92 100644 --- a/get-shit-done/workflows/help/modes/default.md +++ b/get-shit-done/workflows/help/modes/default.md @@ -45,6 +45,6 @@ Topics: `workflow` · `planning` · `execute` · `quick` · `debug` · `capture` ## Update GSD ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` diff --git a/get-shit-done/workflows/help/modes/full.md b/get-shit-done/workflows/help/modes/full.md index b0ac08a29..7279c41ae 100644 --- a/get-shit-done/workflows/help/modes/full.md +++ b/get-shit-done/workflows/help/modes/full.md @@ -18,7 +18,7 @@ Display the complete GSD command reference. Output ONLY the reference content. D GSD evolves fast. Update periodically: ```bash -npx @opengsd/get-shit-done-redux@latest +npx @opengsd/gsd-core@latest ``` ## Core Workflow @@ -560,7 +560,7 @@ Update GSD to latest version with changelog preview. - Displays changelog entries for versions you've missed - Highlights breaking changes - Confirms before running install -- Better than raw `npx get-shit-done-redux` +- Better than raw `npx @opengsd/gsd-core` Usage: `/gsd:update` diff --git a/get-shit-done/workflows/import.md b/get-shit-done/workflows/import.md index 630409c5e..dda817932 100644 --- a/get-shit-done/workflows/import.md +++ b/get-shit-done/workflows/import.md @@ -176,7 +176,7 @@ 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 -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "{NN}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi expected_phase_dir=$(echo "$INIT" | node -e "process.stdout.write(JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')).expected_phase_dir)") diff --git a/get-shit-done/workflows/insert-phase.md b/get-shit-done/workflows/insert-phase.md index d97995e66..0c3b8e91e 100644 --- a/get-shit-done/workflows/insert-phase.md +++ b/get-shit-done/workflows/insert-phase.md @@ -34,7 +34,7 @@ Validate first argument is an integer. Load phase operation context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${after_phase}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/list-workspaces.md b/get-shit-done/workflows/list-workspaces.md index 42ec545ef..32698055b 100644 --- a/get-shit-done/workflows/list-workspaces.md +++ b/get-shit-done/workflows/list-workspaces.md @@ -11,7 +11,7 @@ Read all files referenced by the invoking prompt's execution_context before star ## 1. Setup ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.list-workspaces) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/manager.md b/get-shit-done/workflows/manager.md index 3f080ab80..032d69c8d 100644 --- a/get-shit-done/workflows/manager.md +++ b/get-shit-done/workflows/manager.md @@ -19,7 +19,7 @@ Read all files referenced by the invoking prompt's execution_context before star Bootstrap via manager init: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.manager) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/map-codebase.md b/get-shit-done/workflows/map-codebase.md index 23c871441..22526067d 100644 --- a/get-shit-done/workflows/map-codebase.md +++ b/get-shit-done/workflows/map-codebase.md @@ -69,7 +69,7 @@ documents refreshed. Load codebase mapping context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.map-codebase) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_MAPPER=$(gsd_run query agent-skills gsd-codebase-mapper) diff --git a/get-shit-done/workflows/milestone-summary.md b/get-shit-done/workflows/milestone-summary.md index 7b1c0d1ea..9709a0d7f 100644 --- a/get-shit-done/workflows/milestone-summary.md +++ b/get-shit-done/workflows/milestone-summary.md @@ -53,7 +53,7 @@ Read all files that exist. Missing files are fine — the summary adapts to what Find all phase directories: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query init.progress ``` diff --git a/get-shit-done/workflows/mvp-phase.md b/get-shit-done/workflows/mvp-phase.md index a96155779..9f2e264b8 100644 --- a/get-shit-done/workflows/mvp-phase.md +++ b/get-shit-done/workflows/mvp-phase.md @@ -34,7 +34,7 @@ Normalize per `@~/.claude/get-shit-done/references/phase-argument-parsing.md` (z ## 2. Validate phase exists and check status ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi PHASE_INFO=$(gsd_run query roadmap.get-phase "${PHASE}") PHASE_FOUND=$(echo "$PHASE_INFO" | jq -r '.found') PHASE_NAME=$(echo "$PHASE_INFO" | jq -r '.phase_name') diff --git a/get-shit-done/workflows/new-milestone.md b/get-shit-done/workflows/new-milestone.md index d7e79299e..ba66cfe6c 100644 --- a/get-shit-done/workflows/new-milestone.md +++ b/get-shit-done/workflows/new-milestone.md @@ -181,7 +181,7 @@ blockers, todos) is preserved across the switch — symmetric with `milestone.complete`. ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query state.milestone-switch --milestone "v[X.Y]" --name "[Name]" ``` @@ -236,7 +236,7 @@ Extract from init JSON: `researcher_model`, `synthesizer_model`, `roadmapper_mod Subagent spawns (gsd-project-researcher, gsd-research-synthesizer, gsd-roadmapper) will fail with "agent type not found". Run the installer with --global to make agents available: - npx @opengsd/get-shit-done-redux@latest --global + npx @opengsd/gsd-core@latest --global Proceeding without research subagents — roadmap will be generated inline. ``` diff --git a/get-shit-done/workflows/new-project.md b/get-shit-done/workflows/new-project.md index f8b94a76e..1676dbea2 100644 --- a/get-shit-done/workflows/new-project.md +++ b/get-shit-done/workflows/new-project.md @@ -57,7 +57,7 @@ The document should describe what you want to build. **MANDATORY FIRST STEP — Execute these checks before ANY user interaction:** ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.new-project) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_RESEARCHER=$(gsd_run query agent-skills gsd-project-researcher) @@ -87,7 +87,7 @@ definitions to be installed for this runtime. Subagent spawns (gsd-project-researcher, gsd-research-synthesizer, gsd-roadmapper) will fail with "agent type not found" if `required_agents_installed` is false. Run the installer with --global to make agents available: - npx @opengsd/get-shit-done-redux@latest --global + npx @opengsd/gsd-core@latest --global Proceeding without research subagents — roadmap will be generated inline. ``` diff --git a/get-shit-done/workflows/new-workspace.md b/get-shit-done/workflows/new-workspace.md index 35c2d7700..452d33671 100644 --- a/get-shit-done/workflows/new-workspace.md +++ b/get-shit-done/workflows/new-workspace.md @@ -13,7 +13,7 @@ Read all files referenced by the invoking prompt's execution_context before star **MANDATORY FIRST STEP — Execute init command:** ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.new-workspace) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/next.md b/get-shit-done/workflows/next.md index 207a6bd42..0167e3018 100644 --- a/get-shit-done/workflows/next.md +++ b/get-shit-done/workflows/next.md @@ -13,7 +13,7 @@ Read all files referenced by the invoking prompt's execution_context before star Read project state to determine current position: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi # Get state snapshot gsd_run query state.json 2>/dev/null || echo "{}" ``` diff --git a/get-shit-done/workflows/pause-work.md b/get-shit-done/workflows/pause-work.md index cd62872cb..67310071c 100644 --- a/get-shit-done/workflows/pause-work.md +++ b/get-shit-done/workflows/pause-work.md @@ -66,7 +66,7 @@ Report any summaries with placeholder content as incomplete items. **Write structured handoff to `.planning/HANDOFF.json`:** ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi timestamp=$(gsd_run query current-timestamp full --raw) ``` diff --git a/get-shit-done/workflows/plan-milestone-gaps.md b/get-shit-done/workflows/plan-milestone-gaps.md index e18b37134..1d5434e54 100644 --- a/get-shit-done/workflows/plan-milestone-gaps.md +++ b/get-shit-done/workflows/plan-milestone-gaps.md @@ -64,7 +64,7 @@ Gap: Flow "View dashboard" broken at data fetch Find highest existing phase: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi # Get sorted phase list, extract last one HIGHEST=$(gsd_run query phases.list --pick directories[-1]) ``` diff --git a/get-shit-done/workflows/plan-phase.md b/get-shit-done/workflows/plan-phase.md index 9428e7dc5..557e94ef7 100644 --- a/get-shit-done/workflows/plan-phase.md +++ b/get-shit-done/workflows/plan-phase.md @@ -31,7 +31,7 @@ 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 -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.plan-phase "$PHASE") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_RESEARCHER=$(gsd_run query agent-skills gsd-phase-researcher) diff --git a/get-shit-done/workflows/plan-review-convergence.md b/get-shit-done/workflows/plan-review-convergence.md index 9e1653558..f3a925147 100644 --- a/get-shit-done/workflows/plan-review-convergence.md +++ b/get-shit-done/workflows/plan-review-convergence.md @@ -43,7 +43,7 @@ echo "$ARGUMENTS" | grep -qE '\-\-ws\s+\S+' && GSD_WS=$(echo "$ARGUMENTS" | grep ## 1.5. Config Gate (feature disabled by default) ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi CONVERGENCE_ENABLED=$(gsd_run query config-get workflow.plan_review_convergence 2>/dev/null || echo "false") ``` diff --git a/get-shit-done/workflows/plant-seed.md b/get-shit-done/workflows/plant-seed.md index 98a8b2e78..fa03c6236 100644 --- a/get-shit-done/workflows/plant-seed.md +++ b/get-shit-done/workflows/plant-seed.md @@ -135,7 +135,7 @@ Store relevant file paths as `$BREADCRUMBS`. ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query commit "docs: plant seed — {$IDEA}" --files .planning/seeds/SEED-{PADDED}-{slug}.md ``` diff --git a/get-shit-done/workflows/profile-user.md b/get-shit-done/workflows/profile-user.md index 4083f29ef..ded0d17f6 100644 --- a/get-shit-done/workflows/profile-user.md +++ b/get-shit-done/workflows/profile-user.md @@ -130,7 +130,7 @@ Display: "◆ Scanning sessions..." Run session scan: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi SCAN_RESULT=$(gsd_run query scan-sessions --json 2>/dev/null) ``` diff --git a/get-shit-done/workflows/progress.md b/get-shit-done/workflows/progress.md index 4c544f9bc..090b1ae9d 100644 --- a/get-shit-done/workflows/progress.md +++ b/get-shit-done/workflows/progress.md @@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star **Load progress context (paths only):** ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.progress) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/quick.md b/get-shit-done/workflows/quick.md index 714fae590..6c127e0ad 100644 --- a/get-shit-done/workflows/quick.md +++ b/get-shit-done/workflows/quick.md @@ -125,7 +125,7 @@ If `$VALIDATE_MODE` only: **Step 2: Initialize** ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.quick "$DESCRIPTION") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_PLANNER=$(gsd_run query agent-skills gsd-planner) diff --git a/get-shit-done/workflows/remove-phase.md b/get-shit-done/workflows/remove-phase.md index 42b54dbb9..8fb17be53 100644 --- a/get-shit-done/workflows/remove-phase.md +++ b/get-shit-done/workflows/remove-phase.md @@ -29,7 +29,7 @@ Exit. Load phase operation context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${target}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/remove-workspace.md b/get-shit-done/workflows/remove-workspace.md index 699ab8ce0..647ceb7d3 100644 --- a/get-shit-done/workflows/remove-workspace.md +++ b/get-shit-done/workflows/remove-workspace.md @@ -13,7 +13,7 @@ Read all files referenced by the invoking prompt's execution_context before star Extract workspace name from $ARGUMENTS. ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.remove-workspace "$WORKSPACE_NAME") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/resume-project.md b/get-shit-done/workflows/resume-project.md index 97a37b0ee..4979fec3c 100644 --- a/get-shit-done/workflows/resume-project.md +++ b/get-shit-done/workflows/resume-project.md @@ -20,7 +20,7 @@ Instantly restore full project context so "Where were we?" has an immediate, com Load all context in one call: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.resume) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/review.md b/get-shit-done/workflows/review.md index 200886f85..286835a9e 100644 --- a/get-shit-done/workflows/review.md +++ b/get-shit-done/workflows/review.md @@ -14,7 +14,7 @@ A plan that survives review from 2-3 independent AI systems is more robust. Check which AI CLIs are available on the system: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi # Check each CLI command -v gemini >/dev/null 2>&1 && echo "gemini:available" || echo "gemini:missing" command -v claude >/dev/null 2>&1 && echo "claude:available" || echo "claude:missing" diff --git a/get-shit-done/workflows/scan.md b/get-shit-done/workflows/scan.md index c2b0389a0..0b8228cbc 100644 --- a/get-shit-done/workflows/scan.md +++ b/get-shit-done/workflows/scan.md @@ -39,7 +39,7 @@ Exit. ## Step 2: Check for existing documents ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.map-codebase 2>/dev/null || echo "{}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/secure-phase.md b/get-shit-done/workflows/secure-phase.md index c97df70db..c5a9b1dfa 100644 --- a/get-shit-done/workflows/secure-phase.md +++ b/get-shit-done/workflows/secure-phase.md @@ -16,7 +16,7 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_AUDITOR=$(gsd_run query agent-skills gsd-security-auditor) diff --git a/get-shit-done/workflows/settings-advanced.md b/get-shit-done/workflows/settings-advanced.md index c07e0f317..c760b3469 100644 --- a/get-shit-done/workflows/settings-advanced.md +++ b/get-shit-done/workflows/settings-advanced.md @@ -20,7 +20,7 @@ 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 -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query config-ensure-section if [[ -z "${GSD_CONFIG_PATH:-}" ]]; then if [[ -f .planning/active-workstream ]]; then diff --git a/get-shit-done/workflows/settings-integrations.md b/get-shit-done/workflows/settings-integrations.md index 029071d69..f62d32000 100644 --- a/get-shit-done/workflows/settings-integrations.md +++ b/get-shit-done/workflows/settings-integrations.md @@ -42,7 +42,7 @@ 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 -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query config-ensure-section if [[ -z "${GSD_CONFIG_PATH:-}" ]]; then if [[ -f .planning/active-workstream ]]; then diff --git a/get-shit-done/workflows/settings.md b/get-shit-done/workflows/settings.md index 7f367b0fd..672683c1e 100644 --- a/get-shit-done/workflows/settings.md +++ b/get-shit-done/workflows/settings.md @@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star Ensure config exists and load current state: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query config-ensure-section INIT=$(gsd_run query state.load) if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi diff --git a/get-shit-done/workflows/ship.md b/get-shit-done/workflows/ship.md index 4b3cac130..7cd6c9317 100644 --- a/get-shit-done/workflows/ship.md +++ b/get-shit-done/workflows/ship.md @@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star Parse arguments and load project state: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/sketch-wrap-up.md b/get-shit-done/workflows/sketch-wrap-up.md index b3efdb0af..d6ec48577 100644 --- a/get-shit-done/workflows/sketch-wrap-up.md +++ b/get-shit-done/workflows/sketch-wrap-up.md @@ -37,7 +37,7 @@ Exit. Check `commit_docs` config: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi COMMIT_DOCS=$(gsd_run query config-get commit_docs 2>/dev/null || echo "true") ``` diff --git a/get-shit-done/workflows/sketch.md b/get-shit-done/workflows/sketch.md index 6a168857c..6c30d7b8c 100644 --- a/get-shit-done/workflows/sketch.md +++ b/get-shit-done/workflows/sketch.md @@ -99,7 +99,7 @@ ls -d .planning/sketches/[0-9][0-9][0-9]-* 2>/dev/null | sort | tail -1 Check `commit_docs` config: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi COMMIT_DOCS=$(gsd_run query config-get commit_docs 2>/dev/null || echo "true") ``` diff --git a/get-shit-done/workflows/spike-wrap-up.md b/get-shit-done/workflows/spike-wrap-up.md index df522e2c2..3b269b009 100644 --- a/get-shit-done/workflows/spike-wrap-up.md +++ b/get-shit-done/workflows/spike-wrap-up.md @@ -37,7 +37,7 @@ Exit. Check `commit_docs` config: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi COMMIT_DOCS=$(gsd_run query config-get commit_docs 2>/dev/null || echo "true") ``` diff --git a/get-shit-done/workflows/spike.md b/get-shit-done/workflows/spike.md index eba61036b..bf40b5c97 100644 --- a/get-shit-done/workflows/spike.md +++ b/get-shit-done/workflows/spike.md @@ -96,7 +96,7 @@ ls -d .planning/spikes/[0-9][0-9][0-9]-* 2>/dev/null | sort | tail -1 Check `commit_docs` config: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi COMMIT_DOCS=$(gsd_run query config-get commit_docs 2>/dev/null || echo "true") ``` diff --git a/get-shit-done/workflows/stats.md b/get-shit-done/workflows/stats.md index 8458ce8e9..31964b6b2 100644 --- a/get-shit-done/workflows/stats.md +++ b/get-shit-done/workflows/stats.md @@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star Gather project statistics: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi STATS=$(gsd_run query stats.json) if [[ "$STATS" == @file:* ]]; then STATS=$(cat "${STATS#@file:}"); fi ``` diff --git a/get-shit-done/workflows/thread.md b/get-shit-done/workflows/thread.md index aa2eca718..e54a8ceb3 100644 --- a/get-shit-done/workflows/thread.md +++ b/get-shit-done/workflows/thread.md @@ -28,7 +28,7 @@ ls .planning/threads/*.md 2>/dev/null For each thread file found: - Read frontmatter `status` field via: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi gsd_run query frontmatter.get .planning/threads/{file} status ``` - If frontmatter `status` field is missing, fall back to reading markdown heading `## Status: OPEN` (or IN PROGRESS / RESOLVED) from the file body diff --git a/get-shit-done/workflows/transition.md b/get-shit-done/workflows/transition.md index 9f95fe956..befa7e07b 100644 --- a/get-shit-done/workflows/transition.md +++ b/get-shit-done/workflows/transition.md @@ -163,7 +163,7 @@ If found, delete them — phase is complete, handoffs are stale. **Delegate ROADMAP.md and STATE.md updates to `gsd-tools.cjs query phase.complete`:** ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi TRANSITION=$(gsd_run query phase.complete "${current_phase}") ``` diff --git a/get-shit-done/workflows/ui-phase.md b/get-shit-done/workflows/ui-phase.md index c3f5adfce..92e2381b8 100644 --- a/get-shit-done/workflows/ui-phase.md +++ b/get-shit-done/workflows/ui-phase.md @@ -19,7 +19,7 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 1. Initialize ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.plan-phase "$PHASE") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_UI=$(gsd_run query agent-skills gsd-ui-researcher) diff --git a/get-shit-done/workflows/ui-review.md b/get-shit-done/workflows/ui-review.md index 7f043d1b5..a6c328ad8 100644 --- a/get-shit-done/workflows/ui-review.md +++ b/get-shit-done/workflows/ui-review.md @@ -16,7 +16,7 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_UI_REVIEWER=$(gsd_run query agent-skills gsd-ui-auditor) diff --git a/get-shit-done/workflows/ultraplan-phase.md b/get-shit-done/workflows/ultraplan-phase.md index 6ff84fd33..4f2b83985 100644 --- a/get-shit-done/workflows/ultraplan-phase.md +++ b/get-shit-done/workflows/ultraplan-phase.md @@ -66,7 +66,7 @@ unplanned phase from the roadmap (same logic as /gsd:plan-phase). Load GSD phase context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.plan-phase "$PHASE") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/update.md b/get-shit-done/workflows/update.md index 969308918..2c56704a9 100644 --- a/get-shit-done/workflows/update.md +++ b/get-shit-done/workflows/update.md @@ -114,7 +114,7 @@ fi ```text Couldn't check for updates (reason: {LATEST_REASON}, exit: {LATEST_STATUS}). -To update manually: `npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux --global` +To update manually: `npx -y --package=@opengsd/gsd-core@latest -- gsd-core --global` ``` Exit. @@ -165,8 +165,8 @@ Exit. ```bash CHANGELOG_TMP="/tmp/gsd-changelog-$$.md" -curl -fsSL "https://raw.githubusercontent.com/open-gsd/get-shit-done-redux/main/CHANGELOG.md" -o "$CHANGELOG_TMP" 2>/dev/null \ - || wget -qO "$CHANGELOG_TMP" "https://raw.githubusercontent.com/open-gsd/get-shit-done-redux/main/CHANGELOG.md" 2>/dev/null +curl -fsSL "https://raw.githubusercontent.com/open-gsd/gsd-core/main/CHANGELOG.md" -o "$CHANGELOG_TMP" 2>/dev/null \ + || wget -qO "$CHANGELOG_TMP" "https://raw.githubusercontent.com/open-gsd/gsd-core/main/CHANGELOG.md" 2>/dev/null EXTRACT_JSON=$(node "$GSD_DIR/get-shit-done/scripts/changeset/cli.cjs" extract \ --from "$INSTALLED_VERSION" \ @@ -326,17 +326,17 @@ RUNTIME_FLAG="--$TARGET_RUNTIME" **If LOCAL install:** ```bash -npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux "$RUNTIME_FLAG" --local +npx -y --package=@opengsd/gsd-core@latest -- gsd-core "$RUNTIME_FLAG" --local ``` **If GLOBAL install:** ```bash -npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux "$RUNTIME_FLAG" --global +npx -y --package=@opengsd/gsd-core@latest -- gsd-core "$RUNTIME_FLAG" --global ``` **If UNKNOWN install:** ```bash -npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux --claude --global +npx -y --package=@opengsd/gsd-core@latest -- gsd-core --claude --global ``` Capture output. If install fails, show error and exit. @@ -410,7 +410,7 @@ Format completion message (changelog was already shown in confirmation step): ⚠️ Restart your runtime to pick up the new commands. -[View full changelog](https://github.com/open-gsd/get-shit-done-redux/blob/main/CHANGELOG.md) +[View full changelog](https://github.com/open-gsd/gsd-core/blob/main/CHANGELOG.md) ``` diff --git a/get-shit-done/workflows/validate-phase.md b/get-shit-done/workflows/validate-phase.md index d2839d508..937d343e6 100644 --- a/get-shit-done/workflows/validate-phase.md +++ b/get-shit-done/workflows/validate-phase.md @@ -16,7 +16,7 @@ Valid GSD subagent types (use exact names — do not fall back to 'general-purpo ## 0. Initialize ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi AGENT_SKILLS_AUDITOR=$(gsd_run query agent-skills gsd-nyquist-auditor) diff --git a/get-shit-done/workflows/verify-phase.md b/get-shit-done/workflows/verify-phase.md index 815d92a0f..40dd1a0aa 100644 --- a/get-shit-done/workflows/verify-phase.md +++ b/get-shit-done/workflows/verify-phase.md @@ -29,7 +29,7 @@ Then verify each level against the actual codebase. Load phase operation context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi INIT=$(gsd_run query init.phase-op "${PHASE_ARG}") if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi ``` diff --git a/get-shit-done/workflows/verify-work.md b/get-shit-done/workflows/verify-work.md index 2bef9868c..950c65772 100644 --- a/get-shit-done/workflows/verify-work.md +++ b/get-shit-done/workflows/verify-work.md @@ -30,7 +30,7 @@ No Pass/Fail buttons. No severity questions. Just: "Here's what should happen. D If $ARGUMENTS contains a phase number, load context: ```bash -_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/get-shit-done-redux@latest --claude --local" >&2; exit 1; fi +_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi 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) diff --git a/package-lock.json b/package-lock.json index b7ab8faaf..a2f992863 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,11 +1,11 @@ { - "name": "@opengsd/get-shit-done-redux", + "name": "@opengsd/gsd-core", "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@opengsd/get-shit-done-redux", + "name": "@opengsd/gsd-core", "version": "1.0.0", "license": "MIT", "dependencies": { @@ -13,7 +13,7 @@ "ws": "8.20.1" }, "bin": { - "get-shit-done-redux": "bin/install.js", + "gsd-core": "bin/install.js", "gsd-tools": "get-shit-done/bin/gsd-tools.cjs" }, "devDependencies": { diff --git a/package.json b/package.json index 830f096f8..20979ca61 100644 --- a/package.json +++ b/package.json @@ -1,9 +1,9 @@ { - "name": "@opengsd/get-shit-done-redux", + "name": "@opengsd/gsd-core", "version": "1.0.0", "description": "A meta-prompting, context engineering and spec-driven development system for Claude Code, OpenCode, Gemini and Codex by TÂCHES.", "bin": { - "get-shit-done-redux": "bin/install.js", + "gsd-core": "bin/install.js", "gsd-tools": "get-shit-done/bin/gsd-tools.cjs" }, "files": [ @@ -30,11 +30,11 @@ "license": "MIT", "repository": { "type": "git", - "url": "git+https://github.com/open-gsd/get-shit-done-redux.git" + "url": "git+https://github.com/open-gsd/gsd-core.git" }, - "homepage": "https://github.com/open-gsd/get-shit-done-redux", + "homepage": "https://github.com/open-gsd/gsd-core", "bugs": { - "url": "https://github.com/open-gsd/get-shit-done-redux/issues" + "url": "https://github.com/open-gsd/gsd-core/issues" }, "publishConfig": { "access": "public" diff --git a/rollout-next-phase1.sh b/rollout-next-phase1.sh index 4527ac296..eae29b46e 100755 --- a/rollout-next-phase1.sh +++ b/rollout-next-phase1.sh @@ -31,7 +31,7 @@ # # Env overrides: # TARBALL=/path/to/next-branch-files.tar.gz (default: ./next-branch-files.tar.gz) -# REPO=open-gsd/get-shit-done-redux (default: that) +# REPO=open-gsd/gsd-core (default: that) # DRY_RUN=1 (skip push, issue, PR) set -euo pipefail @@ -39,7 +39,7 @@ set -euo pipefail # ─────────────────────────────────────────────────────────── # Config # ─────────────────────────────────────────────────────────── -REPO="${REPO:-open-gsd/get-shit-done-redux}" +REPO="${REPO:-open-gsd/gsd-core}" TARBALL="${TARBALL:-./next-branch-files.tar.gz}" BRANCH="chore/introduce-next-integration-branch" DRY_RUN="${DRY_RUN:-0}" @@ -236,7 +236,7 @@ git checkout next git pull --ff-only origin next git checkout -b fix/3187-config-corruption # ... commit, push -gh pr create --base next --repo open-gsd/get-shit-done-redux +gh pr create --base next --repo open-gsd/gsd-core ``` If you target the wrong branch by accident, the `PR Target Validator` diff --git a/rollout-next-phase2.sh b/rollout-next-phase2.sh index 54831bfdb..c5ed98b91 100755 --- a/rollout-next-phase2.sh +++ b/rollout-next-phase2.sh @@ -21,14 +21,14 @@ # bash /path/to/rollout-next-phase2.sh # # Env overrides: -# REPO=open-gsd/get-shit-done-redux (default) +# REPO=open-gsd/gsd-core (default) # SKIP_PROTECTION=1 (skip running setup-branch-protection.sh) # SKIP_DEFAULT_FLIP=1 (skip switching default branch) # DRY_RUN=1 (skip all pushes, PRs, and api writes) set -euo pipefail -REPO="${REPO:-open-gsd/get-shit-done-redux}" +REPO="${REPO:-open-gsd/gsd-core}" FLIP_BRANCH="chore/flip-next-rollout-flags" DRY_RUN="${DRY_RUN:-0}" diff --git a/scripts/release-tarball-smoke.cjs b/scripts/release-tarball-smoke.cjs index d5fb16aff..a706ed27e 100644 --- a/scripts/release-tarball-smoke.cjs +++ b/scripts/release-tarball-smoke.cjs @@ -28,7 +28,7 @@ * - Assert commands/gsd/.md exists in the installed package * - Parse the .md for a workflow @-import or inline reference * - Assert the referenced workflow .md exists in the installed package - * If 'init' is in lifecycleCommands, runs `get-shit-done-redux --local --claude` + * If 'init' is in lifecycleCommands, runs `gsd-core --local --claude` * in fixtureDir to verify the installer is callable (INIT_FAILED on crash). * Non-interactive: --local --claude flags skip all prompts. * @@ -118,7 +118,7 @@ function binInvocation(binPath, args = []) { // --------------------------------------------------------------------------- /** - * Locate the lib/node_modules/@opengsd/get-shit-done-redux package root inside + * Locate the lib/node_modules/@opengsd/gsd-core package root inside * an npm --prefix install directory. */ function pkgRoot(installPrefix) { @@ -167,10 +167,10 @@ function findGsdToolsBin(installPrefix) { } /** - * Locate the get-shit-done-redux installer binary (the symlink in /bin/). + * Locate the gsd-core installer binary (the symlink in /bin/). */ function findInstallerBin(installPrefix) { - for (const c of binCandidates(installPrefix, 'get-shit-done-redux')) { + for (const c of binCandidates(installPrefix, 'gsd-core')) { if (fs.existsSync(c)) return c; } return null; @@ -390,7 +390,7 @@ function runSmoke({ code: SMOKE.INIT_FAILED, details: { ...details, - reason: 'get-shit-done-redux binary not found in installPrefix', + reason: 'gsd-core binary not found in installPrefix', installPrefix, }, }; diff --git a/scripts/setup-branch-protection.sh b/scripts/setup-branch-protection.sh index 1e6ee6d5c..e186ae4ce 100755 --- a/scripts/setup-branch-protection.sh +++ b/scripts/setup-branch-protection.sh @@ -13,7 +13,7 @@ # DRY_RUN=1 bash scripts/setup-branch-protection.sh # show payloads, don't apply # # Requirements: -# - gh CLI authenticated against open-gsd/get-shit-done-redux with admin scope +# - gh CLI authenticated against open-gsd/gsd-core with admin scope # - jq installed # # What it sets: @@ -49,7 +49,7 @@ set -euo pipefail -REPO="${REPO:-open-gsd/get-shit-done-redux}" +REPO="${REPO:-open-gsd/gsd-core}" DRY_RUN="${DRY_RUN:-0}" # Required status checks. Adjust as your CI suite evolves. diff --git a/scripts/sync-rulesets.sh b/scripts/sync-rulesets.sh index b5f05e588..3f86e70f8 100755 --- a/scripts/sync-rulesets.sh +++ b/scripts/sync-rulesets.sh @@ -1,7 +1,7 @@ #!/usr/bin/env bash set -euo pipefail -REPO="${REPO:-open-gsd/get-shit-done-redux}" +REPO="${REPO:-open-gsd/gsd-core}" ENFORCEMENT="${ENFORCEMENT:-evaluate}" case "$ENFORCEMENT" in diff --git a/stryker.config.mjs b/stryker.config.mjs index 8d36139b9..15fe0e3c3 100644 --- a/stryker.config.mjs +++ b/stryker.config.mjs @@ -1,7 +1,7 @@ /** * stryker.config.mjs * - * Mutation testing configuration for get-shit-done-redux. + * Mutation testing configuration for gsd-core. * * Test runner: 'command' (built into @stryker-mutator/core) * Runs: node --test over the lib test files via the repo's run-tests invocation. diff --git a/tests/26-w005-w006-i001-cjs-drift-regression.test.cjs b/tests/26-w005-w006-i001-cjs-drift-regression.test.cjs index 1dc51f4c9..91529a324 100644 --- a/tests/26-w005-w006-i001-cjs-drift-regression.test.cjs +++ b/tests/26-w005-w006-i001-cjs-drift-regression.test.cjs @@ -1,7 +1,7 @@ 'use strict'; /** - * Regression tests for issue #26 (open-gsd/get-shit-done-redux). + * Regression tests for issue #26 (open-gsd/gsd-core). * Three generator-pattern drift items: W005 phaseDirNameRe, * W006-archived regex constants (PHASE_TOKEN_FROM_DIR_RE, MILESTONE_ARCHIVE_DIR_RE), * I001 canonicalPlanStem. @@ -11,7 +11,7 @@ * tests go RED. * * References: - * - Issue #26 (open-gsd/get-shit-done-redux) — three drift items + reproducer + * - Issue #26 (open-gsd/gsd-core) — three drift items + reproducer * - ADR-3524 (docs/adr/3524-cjs-sdk-hard-seam.md) * - PR #154 (issue #4) — generator pattern precedent * - PR #156 (issue #6) — validate.ts generator scaffolding (#26 extends this) diff --git a/tests/4-phase-complete-cjs-regression.test.cjs b/tests/4-phase-complete-cjs-regression.test.cjs index 209050c1c..5b8e6f4d8 100644 --- a/tests/4-phase-complete-cjs-regression.test.cjs +++ b/tests/4-phase-complete-cjs-regression.test.cjs @@ -1,7 +1,7 @@ 'use strict'; /** - * Regression test for issue #4 (open-gsd/get-shit-done-redux): + * Regression test for issue #4 (open-gsd/gsd-core): * bin/lib/phase.cjs cmdPhaseComplete — non-idempotent and unclamped. * * Root cause (pre-fix): @@ -21,7 +21,7 @@ * References: * - ADR-3524 (docs/adr/3524-cjs-sdk-hard-seam.md) — architectural foundation * - /tmp/adr-3524-review-findings.md — architectural justification - * - Issue #4 (open-gsd/get-shit-done-redux) + * - Issue #4 (open-gsd/gsd-core) */ const { describe, test, beforeEach, afterEach } = require('node:test'); diff --git a/tests/6-validate-cjs-drift-regression.test.cjs b/tests/6-validate-cjs-drift-regression.test.cjs index 6ef7d3e2b..822320e70 100644 --- a/tests/6-validate-cjs-drift-regression.test.cjs +++ b/tests/6-validate-cjs-drift-regression.test.cjs @@ -1,7 +1,7 @@ 'use strict'; /** - * Regression tests for issue #6 (open-gsd/get-shit-done-redux): + * Regression tests for issue #6 (open-gsd/gsd-core): * Three validation behaviors present in validate.ts are missing from verify.cjs, * producing silent false negatives on the CJS production path. * @@ -22,7 +22,7 @@ * * References: * - ADR-3524 (docs/adr/3524-cjs-sdk-hard-seam.md) - * - Issue #6 (open-gsd/get-shit-done-redux) + * - Issue #6 (open-gsd/gsd-core) * - PR #154 (issue #4) — precedent for the generator pattern */ diff --git a/tests/agent-required-reading-consistency.test.cjs b/tests/agent-required-reading-consistency.test.cjs index 75db3c29e..1d5ecd59a 100644 --- a/tests/agent-required-reading-consistency.test.cjs +++ b/tests/agent-required-reading-consistency.test.cjs @@ -8,7 +8,7 @@ * Validates that all agent .md files use the standardized * pattern and that no legacy blocks remain. * - * See: https://github.com/open-gsd/get-shit-done-redux/issues/2168 + * See: https://github.com/open-gsd/gsd-core/issues/2168 */ const { test, describe } = require('node:test'); diff --git a/tests/agent-size-budget.test.cjs b/tests/agent-size-budget.test.cjs index a4fcf37fd..6bcb17629 100644 --- a/tests/agent-size-budget.test.cjs +++ b/tests/agent-size-budget.test.cjs @@ -19,7 +19,7 @@ * rationale in the PR, and make sure the bloat is not duplicated content * that belongs in `get-shit-done/references/`. * - * See: https://github.com/open-gsd/get-shit-done-redux/issues/2361 + * See: https://github.com/open-gsd/gsd-core/issues/2361 */ const { test, describe } = require('node:test'); diff --git a/tests/bug-170-workflow-fallback-install-hint.test.cjs b/tests/bug-170-workflow-fallback-install-hint.test.cjs index d4b7d6267..b274aeed0 100644 --- a/tests/bug-170-workflow-fallback-install-hint.test.cjs +++ b/tests/bug-170-workflow-fallback-install-hint.test.cjs @@ -8,7 +8,7 @@ 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'; +const CURRENT_HINT = 'npx -y @opengsd/gsd-core@latest --claude --local'; function findMarkdownFiles(dir) { const out = []; diff --git a/tests/bug-2866-codex-strip-no-trailing-newline.test.cjs b/tests/bug-2866-codex-strip-no-trailing-newline.test.cjs index c0ac88bc8..0207a4f1d 100644 --- a/tests/bug-2866-codex-strip-no-trailing-newline.test.cjs +++ b/tests/bug-2866-codex-strip-no-trailing-newline.test.cjs @@ -31,7 +31,7 @@ const fs = require('node:fs'); const REPO_ROOT = path.join(__dirname, '..'); const pkg = JSON.parse(fs.readFileSync(path.join(REPO_ROOT, 'package.json'), 'utf-8')); -const installPath = path.resolve(REPO_ROOT, pkg.bin['get-shit-done-redux']); +const installPath = path.resolve(REPO_ROOT, pkg.bin['gsd-core']); const { stripStaleGsdHookBlocks } = require(installPath); /** diff --git a/tests/bug-2876-skill-frontmatter-quote.test.cjs b/tests/bug-2876-skill-frontmatter-quote.test.cjs index 3777a950f..9baaa9a29 100644 --- a/tests/bug-2876-skill-frontmatter-quote.test.cjs +++ b/tests/bug-2876-skill-frontmatter-quote.test.cjs @@ -27,7 +27,7 @@ const fs = require('node:fs'); const REPO_ROOT = path.join(__dirname, '..'); const pkg = JSON.parse(fs.readFileSync(path.join(REPO_ROOT, 'package.json'), 'utf-8')); -const installPath = path.resolve(REPO_ROOT, pkg.bin['get-shit-done-redux']); +const installPath = path.resolve(REPO_ROOT, pkg.bin['gsd-core']); const install = require(installPath); // Build a minimal Claude command source whose description starts with the diff --git a/tests/bug-2954-help-md-slash-command-stubs.test.cjs b/tests/bug-2954-help-md-slash-command-stubs.test.cjs index f00853328..be5599a3e 100644 --- a/tests/bug-2954-help-md-slash-command-stubs.test.cjs +++ b/tests/bug-2954-help-md-slash-command-stubs.test.cjs @@ -77,7 +77,9 @@ function listShippedSlashBaseNames() { function extractSlashReferences(contents) { const names = new Set(); - const tokenRe = /\/gsd[:-]([a-z][a-z0-9-]*)/g; + // Negative lookbehind: must not be preceded by a letter (avoids matching npm scope + // paths like @opengsd/gsd-core where `/gsd-` appears inside a package URL). + const tokenRe = /(? { - test('PACKAGE_NAME is the constant @opengsd/get-shit-done-redux (no callers can override)', () => { - assert.equal(PACKAGE_NAME, '@opengsd/get-shit-done-redux'); + test('PACKAGE_NAME is the constant @opengsd/gsd-core (no callers can override)', () => { + assert.equal(PACKAGE_NAME, '@opengsd/gsd-core'); }); test('CHECK_REASON enum exposes the documented codes', () => { diff --git a/tests/bug-3130-update-npx-robust-invocation.test.cjs b/tests/bug-3130-update-npx-robust-invocation.test.cjs index 90eaa8e42..5e7083835 100644 --- a/tests/bug-3130-update-npx-robust-invocation.test.cjs +++ b/tests/bug-3130-update-npx-robust-invocation.test.cjs @@ -4,14 +4,14 @@ // Regression guard for bug #3130. // // Two failure modes were observed with the pre-fix npx invocation form: -// 1. Cache-stale: bare `npx -y @opengsd/get-shit-done-redux@latest` hits npx's local +// 1. Cache-stale: bare `npx -y @opengsd/gsd-core@latest` hits npx's local // cache and may pull an older version instead of @latest. // 2. Token-routing: Bash-tool wrappers misroute the `@` token in -// `@opengsd/get-shit-done-redux@latest`, causing npm to error with -// "Unknown command: @opengsd/get-shit-done-redux@latest". +// `@opengsd/gsd-core@latest`, causing npm to error with +// "Unknown command: @opengsd/gsd-core@latest". // // The robust form is: -// npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux $ARGS +// npx -y --package=@opengsd/gsd-core@latest -- gsd-core $ARGS // // `--package=` forces a fresh registry fetch, bypassing the npx cache. // `--` clearly delineates npx flags from the run-command, preventing @@ -28,9 +28,9 @@ const UPDATE_WF = path.join(ROOT, 'get-shit-done', 'workflows', 'update.md'); const src = fs.readFileSync(UPDATE_WF, 'utf8'); test('bug #3130: update.md contains no bare npx invocations (cache-stale form)', () => { - // Any occurrence of `npx -y @opengsd/get-shit-done-redux@latest` without `--package=` + // Any occurrence of `npx -y @opengsd/gsd-core@latest` without `--package=` // is the stale form that triggers the two failure modes. - const stale = (src.match(/npx -y @opengsd\/get-shit-done-redux@latest[^\n]*/g) || []); + const stale = (src.match(/npx -y @opengsd\/gsd-core@latest[^\n]*/g) || []); assert.deepEqual( stale, [], @@ -40,7 +40,7 @@ test('bug #3130: update.md contains no bare npx invocations (cache-stale form)', test('bug #3130: update.md has >=3 robust npx invocations (--package= + -- separator)', () => { // Three sibling invocations: local, global, and unknown/fallback. - const robust = (src.match(/npx -y --package=@opengsd\/get-shit-done-redux@latest -- get-shit-done-redux/g) || []); + const robust = (src.match(/npx -y --package=@opengsd\/gsd-core@latest -- gsd-core/g) || []); assert.ok( robust.length >= 3, `Expected >=3 robust npx invocations in update.md, found ${robust.length}`, diff --git a/tests/bug-3290-intel-updater-layout-block.test.cjs b/tests/bug-3290-intel-updater-layout-block.test.cjs index a5bc3b87d..57088e359 100644 --- a/tests/bug-3290-intel-updater-layout-block.test.cjs +++ b/tests/bug-3290-intel-updater-layout-block.test.cjs @@ -17,7 +17,7 @@ * ignored by Steps 2-6 on non-GSD projects. The block was dead-but-noisy. * * Fix: gate the runtime bash detection on a positive "is-this-the-framework- - * repo" check (package.json name === "@opengsd/get-shit-done-redux") so it runs ONLY when + * repo" check (package.json name === "@opengsd/gsd-core") so it runs ONLY when * analysing the GSD framework's own repo, OR remove the block entirely if no * downstream consumers exist. * @@ -88,7 +88,7 @@ describe('bug #3290 — Group A: layout-detection block must be gated or absent' // A valid gate checks package.json name or an equivalent positive signal // that the current project IS the GSD framework's own repo. const hasFrameworkGate = - content.includes('@opengsd/get-shit-done-redux') || + content.includes('@opengsd/gsd-core') || content.includes('is-this-the-framework') || content.includes('framework repo') || content.includes('Only run') || @@ -102,7 +102,7 @@ describe('bug #3290 — Group A: layout-detection block must be gated or absent' 'bash block (`ls -d .kilo ... || echo unknown`) with no surrounding ' + 'framework-repo gate (#3290). ' + 'Either remove the block entirely, or wrap it in a check like:\n' + - ' if [[ "$(jq -r \'.name // ""\' package.json 2>/dev/null)" == "@opengsd/get-shit-done-redux" ]]; then\n' + + ' if [[ "$(jq -r \'.name // ""\' package.json 2>/dev/null)" == "@opengsd/gsd-core" ]]; then\n' + ' # ... detection block ...\n' + ' fi' ); diff --git a/tests/bug-3562-codex-install-skill-surface.test.cjs b/tests/bug-3562-codex-install-skill-surface.test.cjs index b4e373e1f..7134c3a95 100644 --- a/tests/bug-3562-codex-install-skill-surface.test.cjs +++ b/tests/bug-3562-codex-install-skill-surface.test.cjs @@ -11,7 +11,7 @@ process.env.GSD_TEST_MODE = '1'; * commands from skills//SKILL.md. Prior installer logic ("Codex now * discovers official skills from .agents/skills") was based on an assumption * that does not match the shipping Codex CLI behavior, leaving users with - * workflows on disk and no $gsd-* entrypoints after `npx @opengsd/get-shit-done-redux + * workflows on disk and no $gsd-* entrypoints after `npx @opengsd/gsd-core * --codex --global`. * * Fix: re-wire copyCommandsAsCodexSkills() back into the install dispatch path diff --git a/tests/bug-3610-installer-migration-bundled-hooks-classification.test.cjs b/tests/bug-3610-installer-migration-bundled-hooks-classification.test.cjs index 87b26300b..435b9a7e4 100644 --- a/tests/bug-3610-installer-migration-bundled-hooks-classification.test.cjs +++ b/tests/bug-3610-installer-migration-bundled-hooks-classification.test.cjs @@ -1,5 +1,5 @@ /** - * Regression test for #3610: fresh `npx @opengsd/get-shit-done-redux@latest --codex` + * Regression test for #3610: fresh `npx @opengsd/gsd-core@latest --codex` * hard-aborts when the target ~/.codex/hooks/ contains the bundled GSD * hook files (`gsd-check-update-worker.js`, `gsd-prompt-guard.js`, …) * left over from a previous version. The installer-migration report diff --git a/tests/bug-3670-cursor-local-install-migration-lock.test.cjs b/tests/bug-3670-cursor-local-install-migration-lock.test.cjs index a68a16564..c341bb90c 100644 --- a/tests/bug-3670-cursor-local-install-migration-lock.test.cjs +++ b/tests/bug-3670-cursor-local-install-migration-lock.test.cjs @@ -42,7 +42,7 @@ * truly un-reclaimable lock, must still throw with a useful message naming * the holder PID. (This guards against over-reclamation.) * - * @see https://github.com/open-gsd/get-shit-done-redux/issues/3670 + * @see https://github.com/open-gsd/gsd-core/issues/3670 */ 'use strict'; diff --git a/tests/bug-378-update-check-scoped-name.test.cjs b/tests/bug-378-update-check-scoped-name.test.cjs index c8ea82e9b..ead71f5e7 100644 --- a/tests/bug-378-update-check-scoped-name.test.cjs +++ b/tests/bug-378-update-check-scoped-name.test.cjs @@ -1,9 +1,9 @@ /** * Regression test for #378 / #498: the SessionStart update worker must end up - * querying the SCOPED package name (@opengsd/get-shit-done-redux) when it asks + * querying the SCOPED package name (@opengsd/gsd-core) when it asks * npm for the latest version. * - * Background (#378): the worker once hardcoded the unscoped 'get-shit-done-redux', + * Background (#378): the worker once hardcoded the unscoped 'gsd-core', * which 404s from the registry, leaving update_available permanently false. * * Original #378 fix derived the name from `require('../package.json').name`. @@ -26,7 +26,7 @@ * 3. Structural: worker delegates to check-latest-version's * `checkLatestVersion` rather than calling `npm view` itself. * 4. Single-source: check-latest-version's PACKAGE_NAME === the seam's - * packageName === the scoped '@opengsd/get-shit-done-redux'. + * packageName === the scoped '@opengsd/gsd-core'. * * Source-grep policy: this test reads hook source via readFileSync. The repo's * lint-no-source-grep rule targets bin/lib/get-shit-done — hooks/ is out of @@ -63,16 +63,16 @@ describe('bug #378 / #498: update worker queries the scoped name via the seam', assert.ok(fs.existsSync(WORKER_PATH), `worker not found at ${WORKER_PATH}`); }); - test('package.json name is the scoped @opengsd/get-shit-done-redux', () => { + test('package.json name is the scoped @opengsd/gsd-core', () => { const pkg = JSON.parse(fs.readFileSync(PKG_PATH, 'utf8')); - assert.equal(pkg.name, '@opengsd/get-shit-done-redux'); + assert.equal(pkg.name, '@opengsd/gsd-core'); }); - test('worker does NOT hardcode the unscoped get-shit-done-redux as a string literal', () => { + test('worker does NOT hardcode the unscoped gsd-core as a string literal', () => { assert.doesNotMatch( workerCodeOnly(), - /['"]get-shit-done-redux['"]/, - "Worker must not pass the unscoped 'get-shit-done-redux' to npm — it 404s.", + /['"]gsd-core['"]/, + "Worker must not pass the unscoped 'gsd-core' to npm — it 404s.", ); }); @@ -100,6 +100,6 @@ describe('bug #378 / #498: update worker queries the scoped name via the seam', test('check-latest-version PACKAGE_NAME is single-sourced from the seam', () => { assert.equal(PACKAGE_NAME, SEAM.packageName); - assert.equal(SEAM.packageName, '@opengsd/get-shit-done-redux'); + assert.equal(SEAM.packageName, '@opengsd/gsd-core'); }); }); diff --git a/tests/bug-416-archive-dir-null.test.cjs b/tests/bug-416-archive-dir-null.test.cjs index 6c67caf32..113391092 100644 --- a/tests/bug-416-archive-dir-null.test.cjs +++ b/tests/bug-416-archive-dir-null.test.cjs @@ -1,7 +1,7 @@ 'use strict'; /** - * Regression tests for issue #416 (open-gsd/get-shit-done-redux). + * Regression tests for issue #416 (open-gsd/gsd-core). * * Bug: getActiveMilestoneArchiveDir falls back to the newest archive directory * when STATE.md names a milestone that has no matching archive yet, producing diff --git a/tests/changeset-github-release-notes.test.cjs b/tests/changeset-github-release-notes.test.cjs index 25c766ef1..ac6d9efc2 100644 --- a/tests/changeset-github-release-notes.test.cjs +++ b/tests/changeset-github-release-notes.test.cjs @@ -109,7 +109,7 @@ describe('changeset github release notes: tag-range renderer (#3382)', () => { fromRef: 'v1.0.0', toRef: 'v1.0.1', repoSlug: 'example/project', - installCommand: 'npx @opengsd/get-shit-done-redux@latest', + installCommand: 'npx @opengsd/gsd-core@latest', }); assert.equal(fs.readFileSync(output, 'utf8'), generated.body); }); diff --git a/tests/changeset-serialize.test.cjs b/tests/changeset-serialize.test.cjs index d33e326f9..a3a64bab0 100644 --- a/tests/changeset-serialize.test.cjs +++ b/tests/changeset-serialize.test.cjs @@ -75,7 +75,7 @@ describe('changeset serialize: multi-line bullet parsing (#3496)', () => { test('a multi-line bullet with linked release header is parsed correctly', () => { const text = [ - '## [1.42.1](https://github.com/open-gsd/get-shit-done-redux/compare/v1.41.0...v1.42.1) - 2026-05-15', + '## [1.42.1](https://github.com/open-gsd/gsd-core/compare/v1.41.0...v1.42.1) - 2026-05-15', '', '### Fixed', '', diff --git a/tests/cline-install.test.cjs b/tests/cline-install.test.cjs index b3d792ddf..c5fef4af4 100644 --- a/tests/cline-install.test.cjs +++ b/tests/cline-install.test.cjs @@ -7,7 +7,7 @@ * Regression tests for bug #1991 * * Cline is listed in GSD documentation as a supported runtime but was - * completely absent from bin/install.js. Running `npx @opengsd/get-shit-done-redux` + * completely absent from bin/install.js. Running `npx @opengsd/gsd-core` * did not show Cline as an option in the interactive menu. * * Fixed: Cline is now a first-class runtime that: diff --git a/tests/forensics.test.cjs b/tests/forensics.test.cjs index b5219e461..9c08195fd 100644 --- a/tests/forensics.test.cjs +++ b/tests/forensics.test.cjs @@ -143,25 +143,25 @@ describe('forensics workflow', () => { ); }); - test('workflow submits issues to open-gsd/get-shit-done-redux, not the current repo', () => { + test('workflow submits issues to open-gsd/gsd-core, not the current repo', () => { const content = fs.readFileSync(workflowPath, 'utf-8'); // Scope check to the gh issue create invocation — a whole-file search would // pass even if gh issue create lacked --repo, because gh label list also // contains the repo string. assert.match( content, - /gh issue create[\s\S]{0,250}--repo\s+open-gsd\/get-shit-done-redux/, - 'gh issue create must use --repo open-gsd/get-shit-done-redux to avoid submitting to the user\'s current project repo' + /gh issue create[\s\S]{0,250}--repo\s+open-gsd\/gsd-core/, + 'gh issue create must use --repo open-gsd/gsd-core to avoid submitting to the user\'s current project repo' ); }); - test('workflow checks bug label in open-gsd/get-shit-done-redux, not the current repo', () => { + test('workflow checks bug label in open-gsd/gsd-core, not the current repo', () => { const content = fs.readFileSync(workflowPath, 'utf-8'); // Regex is more robust than a fixed-length slice to formatting changes assert.match( content, - /gh label list[\s\S]{0,250}--repo\s+open-gsd\/get-shit-done-redux/, - 'gh label list must target open-gsd/get-shit-done-redux' + /gh label list[\s\S]{0,250}--repo\s+open-gsd\/gsd-core/, + 'gh label list must target open-gsd/gsd-core' ); }); diff --git a/tests/issue-498-package-identity.test.cjs b/tests/issue-498-package-identity.test.cjs index ed093c2dd..9073fe7c8 100644 --- a/tests/issue-498-package-identity.test.cjs +++ b/tests/issue-498-package-identity.test.cjs @@ -53,9 +53,9 @@ describe('Issue #498: deriveIdentity (pure, package.json -> coordinates)', () => test('derives the real GSD coordinates from the repo package.json', () => { const real = require(path.join(ROOT, 'package.json')); const id = deriveIdentity(real); - assert.equal(id.packageName, '@opengsd/get-shit-done-redux'); - assert.equal(id.binName, 'get-shit-done-redux'); - assert.equal(id.repoSlug, 'open-gsd/get-shit-done-redux'); + assert.equal(id.packageName, '@opengsd/gsd-core'); + assert.equal(id.binName, 'gsd-core'); + assert.equal(id.repoSlug, 'open-gsd/gsd-core'); }); }); @@ -78,7 +78,7 @@ describe('Issue #498: formatManualInstall (the npx fallback command)', () => { const id = deriveIdentity(require(path.join(ROOT, 'package.json'))); assert.equal( formatManualInstall({ packageName: id.packageName, binName: id.binName, scope: 'global', runtime: 'claude' }), - 'npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux --claude --global', + 'npx -y --package=@opengsd/gsd-core@latest -- gsd-core --claude --global', ); }); }); @@ -98,16 +98,16 @@ describe('Issue #498: generated runtime module (baked, drift-checked)', () => { test('requiring the generated module exposes the real coordinates', () => { const id = require(GENERATED); - assert.equal(id.packageName, '@opengsd/get-shit-done-redux'); - assert.equal(id.binName, 'get-shit-done-redux'); - assert.equal(id.repoSlug, 'open-gsd/get-shit-done-redux'); + assert.equal(id.packageName, '@opengsd/gsd-core'); + assert.equal(id.binName, 'gsd-core'); + assert.equal(id.repoSlug, 'open-gsd/gsd-core'); }); test('generated manualInstallCommand closes over the baked coordinates', () => { const id = require(GENERATED); assert.equal( id.manualInstallCommand({ scope: 'global', runtime: 'claude' }), - 'npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux --claude --global', + 'npx -y --package=@opengsd/gsd-core@latest -- gsd-core --claude --global', ); }); }); diff --git a/tests/package-name-single-source.test.cjs b/tests/package-name-single-source.test.cjs index 34cc59d16..0bc6e5ba7 100644 --- a/tests/package-name-single-source.test.cjs +++ b/tests/package-name-single-source.test.cjs @@ -4,7 +4,7 @@ * Lint guard: the package name must be single-sourced from package-identity.cjs. * * Scans runtime files (bin/install.js, get-shit-done/bin/**, scripts/*.cjs) - * and FAILS if the literal `@opengsd/get-shit-done-redux` appears in a + * and FAILS if the literal `@opengsd/gsd-core` appears in a * non-comment, non-identity-module line. This enforces that a future rename * is a one-file change in package.json (#516). * @@ -24,7 +24,7 @@ const path = require('node:path'); const { execSync } = require('node:child_process'); const ROOT = path.join(__dirname, '..'); -const LITERAL = '@opengsd/get-shit-done-redux'; +const LITERAL = '@opengsd/gsd-core'; const IDENTITY_MODULE = path.join(ROOT, 'get-shit-done', 'bin', 'lib', 'package-identity.cjs'); // Files to scan: bin/install.js + everything under get-shit-done/bin/ + touched scripts @@ -75,7 +75,7 @@ function isCommentLine(trimmed) { ); } -test('no hardcoded package-name literals in runtime non-comment code lines (#516)', () => { +test('no hardcoded @opengsd/gsd-core literals in runtime non-comment code lines (#516)', () => { const files = getRuntimeFiles(); const violations = []; @@ -98,7 +98,7 @@ test('no hardcoded package-name literals in runtime non-comment code lines (#516 assert.deepEqual( violations, [], - `Found ${violations.length} hardcoded package-name literal(s) in non-comment code lines:\n` + + `Found ${violations.length} hardcoded @opengsd/gsd-core literal(s) in non-comment code lines:\n` + violations.map(v => ` ${v}`).join('\n') + '\n\nReplace each with the PACKAGE_NAME imported from get-shit-done/bin/lib/package-identity.cjs' ); diff --git a/tests/release-tarball-smoke.install.test.cjs b/tests/release-tarball-smoke.install.test.cjs index 619de67b1..fdbf8effa 100644 --- a/tests/release-tarball-smoke.install.test.cjs +++ b/tests/release-tarball-smoke.install.test.cjs @@ -97,7 +97,7 @@ describe('release-tarball-smoke', () => { // ── Test C — happy lifecycle ─────────────────────────────────────────────── // Verifies that the installed package has all expected command .md files and // that each command resolves a workflow .md file that also exists. - // Also verifies that `get-shit-done-redux --local --claude` (init) succeeds in + // Also verifies that `gsd-core --local --claude` (init) succeeds in // the fixtureDir and creates the expected .claude/ directories. test('C: happy lifecycle — command + workflow files resolve OK', () => { const result = runSmoke({ diff --git a/tests/windows-robustness.test.cjs b/tests/windows-robustness.test.cjs index f764b83dd..5ec6bf278 100644 --- a/tests/windows-robustness.test.cjs +++ b/tests/windows-robustness.test.cjs @@ -14,7 +14,7 @@ * 4. findProjectRoot detects .git at same level as .planning/ * 5. @file: handoff present in all workflows that call init * - * Regression tests for: https://github.com/open-gsd/get-shit-done-redux/issues/1343 + * Regression tests for: https://github.com/open-gsd/gsd-core/issues/1343 */ const { test, describe } = require('node:test'); diff --git a/tests/workflow-shell-pinning.test.cjs b/tests/workflow-shell-pinning.test.cjs index 15350f6cd..2626c2c27 100644 --- a/tests/workflow-shell-pinning.test.cjs +++ b/tests/workflow-shell-pinning.test.cjs @@ -7,7 +7,7 @@ process.env.GSD_TEST_MODE = '1'; * .github/workflows/*.yml file has an effective `shell:` directive that is * H1-policy-compliant (native shell per OS). * - * H1 policy (LOCKED — open-gsd/get-shit-done-redux): + * H1 policy (LOCKED — open-gsd/gsd-core): * ubuntu-* → bash (runner default, no pin needed) * macos-* → zsh (must be pinned explicitly) * windows-* → pwsh (runner default, no pin needed) diff --git a/tests/workflow-size-budget.test.cjs b/tests/workflow-size-budget.test.cjs index dd8f238a0..bea11a3d9 100644 --- a/tests/workflow-size-budget.test.cjs +++ b/tests/workflow-size-budget.test.cjs @@ -22,8 +22,8 @@ * pattern introduced by #2551). * * See: - * - https://github.com/open-gsd/get-shit-done-redux/issues/2551 (this test) - * - https://github.com/open-gsd/get-shit-done-redux/issues/2361 (agent budget) + * - https://github.com/open-gsd/gsd-core/issues/2551 (this test) + * - https://github.com/open-gsd/gsd-core/issues/2361 (agent budget) */ const { test, describe } = require('node:test');