diff --git a/.changeset/opengsd-org-rename.md b/.changeset/opengsd-org-rename.md new file mode 100644 index 000000000..7c03eef33 --- /dev/null +++ b/.changeset/opengsd-org-rename.md @@ -0,0 +1,5 @@ +--- +type: Changed +pr: 127 +--- +**Rebrand: rename npm packages to the new @opengsd scope** — `get-shit-done-redux` is now `@opengsd/get-shit-done-redux` and `@gsd-redux/sdk` is now `@opengsd/gsd-sdk`; both packages publish at version **1.0.0** (major bump). CLI binary names (`get-shit-done-redux`, `gsd-sdk`, `gsd-tools`) are unchanged. Update install commands from `npm install -g get-shit-done-redux` to `npm install -g @opengsd/get-shit-done-redux`. diff --git a/.github/ISSUE_TEMPLATE/bug_report.yml b/.github/ISSUE_TEMPLATE/bug_report.yml index 01bc44b14..d00a8a77d 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 get-shit-done-redux` or check `npx get-shit-done-redux --version`" + description: "Run: `npm list -g @opengsd/get-shit-done-redux` or check `npx @opengsd/get-shit-done-redux --version`" placeholder: "e.g., 1.18.0" validations: required: true @@ -78,8 +78,8 @@ body: attributes: label: Installation Method options: - - npx get-shit-done-redux@latest (fresh run) - - npm install -g get-shit-done-redux + - npx @opengsd/get-shit-done-redux@latest (fresh run) + - npm install -g @opengsd/get-shit-done-redux - 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 get-shit-done-redux@latest` + 1. Install GSD with `npx @opengsd/get-shit-done-redux@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 get-shit-done-redux` — confirms installed version + - `npm list -g @opengsd/get-shit-done-redux` — 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/workflows/canary.yml b/.github/workflows/canary.yml deleted file mode 100644 index cbcecf526..000000000 --- a/.github/workflows/canary.yml +++ /dev/null @@ -1,157 +0,0 @@ -# Release stream policy: -# dev → @canary (this workflow — preview builds for the long-lived integration branch) -# main → @next (RC train, see release.yml) -# main → @latest (stable cuts, see release.yml) -# -# Streams do not mix. The publish/tag steps below gate on `refs/heads/dev` so a -# workflow_dispatch run on any other branch (including main) completes the -# build/test/dry-run validation but does not publish or tag. - -name: Canary - -on: - workflow_dispatch: - inputs: - dry_run: - description: 'Dry run (skip npm publish, tagging, and push)' - required: false - type: boolean - default: false - -concurrency: - group: canary - cancel-in-progress: false - -env: - NODE_VERSION: 24 - -jobs: - canary: - runs-on: ubuntu-latest - timeout-minutes: 10 - permissions: - contents: write - id-token: write - environment: npm-publish - steps: - - uses: actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd # v6.0.2 - with: - fetch-depth: 0 - - - uses: actions/setup-node@53b83947a5a98c8d113130e565377fae1a50d02f # v6.3.0 - with: - node-version: ${{ env.NODE_VERSION }} - registry-url: 'https://registry.npmjs.org' - cache: 'npm' - - - name: Determine canary version - id: canary - run: | - # Strip any pre-release suffix from package.json version to get base (e.g. 1.39.0-rc.4 → 1.39.0) - RAW=$(node -p "require('./package.json').version") - BASE=$(echo "$RAW" | sed 's/-.*//') - # Find next sequential canary number from existing tags - N=1 - while git tag -l "v${BASE}-canary.${N}" | grep -q .; do - N=$((N + 1)) - done - CANARY_VERSION="${BASE}-canary.${N}" - echo "canary_version=$CANARY_VERSION" >> "$GITHUB_OUTPUT" - - - name: Configure git identity - run: | - git config user.name "github-actions[bot]" - git config user.email "41898282+github-actions[bot]@users.noreply.github.com" - - - name: Bump to canary version - env: - CANARY_VERSION: ${{ steps.canary.outputs.canary_version }} - run: | - npm version "$CANARY_VERSION" --no-git-tag-version - cd sdk && npm version "$CANARY_VERSION" --no-git-tag-version && cd .. - - - name: Install and test - run: | - npm ci - npm test - - - name: Build SDK dist for tarball - run: npm run build:sdk - - - name: Verify tarball ships sdk/dist/cli.js (bug #2647) - run: bash scripts/verify-tarball-sdk-dist.sh - - - name: Dry-run publish validation - run: | - npm publish --dry-run --tag canary - cd sdk && npm publish --dry-run --tag canary - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - - name: Tag and push - if: ${{ github.ref == 'refs/heads/dev' && !inputs.dry_run }} - env: - CANARY_VERSION: ${{ steps.canary.outputs.canary_version }} - run: | - git tag "v${CANARY_VERSION}" - git push origin "v${CANARY_VERSION}" - - - name: Publish to npm (canary) - if: ${{ github.ref == 'refs/heads/dev' && !inputs.dry_run }} - run: npm publish --provenance --access public --tag canary - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - - name: Publish SDK to npm (canary) - if: ${{ github.ref == 'refs/heads/dev' && !inputs.dry_run }} - run: cd sdk && npm publish --provenance --access public --tag canary - env: - NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} - - - name: Verify publish - if: ${{ github.ref == 'refs/heads/dev' && !inputs.dry_run }} - env: - CANARY_VERSION: ${{ steps.canary.outputs.canary_version }} - run: | - PUBLISHED="NOT_FOUND" - SDK_PUBLISHED="NOT_FOUND" - for delay in 5 10 20 30 45; do - PUBLISHED=$(npm view get-shit-done-redux@"$CANARY_VERSION" version 2>/dev/null || echo "NOT_FOUND") - SDK_PUBLISHED=$(npm view @gsd-redux/sdk@"$CANARY_VERSION" version 2>/dev/null || echo "NOT_FOUND") - if [ "$PUBLISHED" = "$CANARY_VERSION" ] && [ "$SDK_PUBLISHED" = "$CANARY_VERSION" ]; then - break - fi - echo "Not yet live (sleeping ${delay}s)..." - sleep "$delay" - done - if [ "$PUBLISHED" != "$CANARY_VERSION" ]; then - echo "::error::Published version verification failed. Expected $CANARY_VERSION, got $PUBLISHED" - exit 1 - fi - echo "Verified: get-shit-done-redux@$CANARY_VERSION is live on npm" - if [ "$SDK_PUBLISHED" != "$CANARY_VERSION" ]; then - echo "::error::SDK version verification failed. Expected $CANARY_VERSION, got $SDK_PUBLISHED" - exit 1 - fi - echo "Verified: @gsd-redux/sdk@$CANARY_VERSION is live on npm" - CANARY_TAG=$(npm dist-tag ls get-shit-done-redux 2>/dev/null | grep "canary:" | awk '{print $2}') - echo "canary dist-tag points to: $CANARY_TAG" - - - name: Summary - env: - CANARY_VERSION: ${{ steps.canary.outputs.canary_version }} - DRY_RUN: ${{ inputs.dry_run }} - PUBLISH_ELIGIBLE: ${{ github.ref == 'refs/heads/dev' && !inputs.dry_run }} - BRANCH_REF: ${{ github.ref }} - run: | - echo "## Canary v${CANARY_VERSION}" >> "$GITHUB_STEP_SUMMARY" - if [ "$DRY_RUN" = "true" ]; then - echo "**DRY RUN** — npm publish, tagging, and push skipped" >> "$GITHUB_STEP_SUMMARY" - elif [ "$PUBLISH_ELIGIBLE" != "true" ]; then - echo "**VALIDATION ONLY** — publish/tag skipped for \`${BRANCH_REF}\`; canary publish is gated to \`refs/heads/dev\`." >> "$GITHUB_STEP_SUMMARY" - else - echo "- Published to npm as \`canary\`" >> "$GITHUB_STEP_SUMMARY" - echo "- SDK also published: \`@gsd-redux/sdk@${CANARY_VERSION}\` on \`canary\`" >> "$GITHUB_STEP_SUMMARY" - echo "- Tagged \`v${CANARY_VERSION}\`" >> "$GITHUB_STEP_SUMMARY" - echo "- Install: \`npx get-shit-done-redux@canary\`" >> "$GITHUB_STEP_SUMMARY" - fi diff --git a/.github/workflows/install-smoke.yml b/.github/workflows/install-smoke.yml index 97c83e842..7931524bb 100644 --- a/.github/workflows/install-smoke.yml +++ b/.github/workflows/install-smoke.yml @@ -147,8 +147,8 @@ jobs: shell: bash run: | set -euo pipefail - npm pack --silent - TARBALL=$(ls get-shit-done-redux-*.tgz | head -1) + TARBALL=$(npm pack --silent) + # npm pack --silent prints the filename on stdout; no glob needed. echo "tarball=$TARBALL" >> "$GITHUB_OUTPUT" echo "Packed: $TARBALL" diff --git a/.github/workflows/release-sdk.yml b/.github/workflows/release-sdk.yml index ff56c52ef..2dab33662 100644 --- a/.github/workflows/release-sdk.yml +++ b/.github/workflows/release-sdk.yml @@ -1,23 +1,17 @@ # Release SDK Bundle # -# Stopgap workflow_dispatch publish path: builds get-shit-done-redux with the +# workflow_dispatch publish path: builds get-shit-done-redux with the # compiled SDK and the SDK .tgz bundled inside the CC tarball, then # publishes the CC package to ONE chosen dist-tag (dev | next | latest) # per run. # -# Why this exists: @gsd-redux/sdk publishes from canary.yml and release.yml -# fail because the @open-gsd npm token is currently unavailable. CC users -# do not consume @gsd-redux/sdk directly — bin/gsd-sdk.js resolves +# CC users do not consume @opengsd/gsd-sdk directly — bin/gsd-sdk.js resolves # sdk/dist/cli.js from inside the installed CC package, so the bundled # copy is sufficient for full functionality. This workflow ships CC alone -# (no separate @gsd-redux/sdk publish attempt) and additionally bakes a +# (no separate @opengsd/gsd-sdk publish attempt) and additionally bakes a # bundled gsd-sdk-.tgz at sdk-bundle/gsd-sdk.tgz inside the CC # tarball as a recoverable npm-installable artifact. # -# Existing canary.yml and release.yml are intentionally untouched. They -# remain the canonical two-package publish path; restore them to primary -# use once @gsd-redux/sdk ownership is recovered. -# # Tracking issues: #2925 (initial workflow), #2929 (CI-gate parity with release.yml) name: Release SDK Bundle @@ -519,9 +513,9 @@ jobs: env: VERSION: ${{ steps.ver.outputs.version }} run: | - EXISTING=$(npm view get-shit-done-redux@"$VERSION" version 2>/dev/null || true) + EXISTING=$(npm view @opengsd/get-shit-done-redux@"$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/get-shit-done-redux@${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" @@ -579,8 +573,8 @@ jobs: set -e cd sdk npm pack - # npm pack emits open-gsd-sdk-.tgz in the cwd - TARBALL="open-gsd-sdk-${VERSION}.tgz" + # npm pack emits opengsd-gsd-sdk-.tgz in the cwd + TARBALL="opengsd-gsd-sdk-${VERSION}.tgz" if [ ! -f "$TARBALL" ]; then echo "::error::Expected $TARBALL but npm pack did not produce it. Listing sdk/:" ls -la @@ -670,7 +664,7 @@ jobs: VERSION: ${{ steps.ver.outputs.version }} NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} run: | - npm dist-tag add "get-shit-done-redux@${VERSION}" next + npm dist-tag add "@opengsd/get-shit-done-redux@${VERSION}" next echo "✅ next dist-tag re-pointed to v${VERSION} (matches latest)" - name: Create GitHub Release (idempotent) @@ -728,7 +722,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/get-shit-done-redux@"$VERSION" version 2>/dev/null || echo "NOT_FOUND") if [ "$PUBLISHED" = "$VERSION" ]; then break fi @@ -739,12 +733,12 @@ jobs: echo "::error::Version $VERSION did not appear on the registry within timeout" exit 1 fi - TAG_VERSION=$(npm view get-shit-done-redux dist-tags."$TAG" 2>/dev/null || echo "NOT_FOUND") + TAG_VERSION=$(npm view @opengsd/get-shit-done-redux dist-tags."$TAG" 2>/dev/null || echo "NOT_FOUND") if [ "$TAG_VERSION" != "$VERSION" ]; then echo "::error::dist-tag '$TAG' resolves to '$TAG_VERSION', expected '$VERSION'" exit 1 fi - echo "✅ get-shit-done-redux@${VERSION} live on dist-tag '${TAG}'" + echo "✅ @opengsd/get-shit-done-redux@${VERSION} live on dist-tag '${TAG}'" - name: Summary env: @@ -768,7 +762,7 @@ jobs: if [ "$DRY_RUN" = "true" ]; then echo "**DRY RUN** — npm publish, git tag, push, and GitHub Release were skipped." else - echo "- Published \`get-shit-done-redux@${VERSION}\` to dist-tag \`${TAG}\`" + echo "- Published \`@opengsd/get-shit-done-redux@${VERSION}\` to dist-tag \`${TAG}\`" echo "- SDK bundled inside the CC tarball at:" echo " - \`sdk/dist/cli.js\` (loose tree, consumed by \`bin/gsd-sdk.js\` shim)" echo " - \`sdk-bundle/gsd-sdk.tgz\` (npm-installable artifact)" @@ -785,6 +779,6 @@ jobs: # that was never opened. echo "- No merge-back PR (auto-picked commits are already on main)" fi - echo "- Install: \`npm install -g get-shit-done-redux@${TAG}\`" + echo "- Install: \`npm install -g @opengsd/get-shit-done-redux@${TAG}\`" fi } >> "$GITHUB_STEP_SUMMARY" diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index ac46ab8d6..d2309d200 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -250,20 +250,20 @@ jobs: PRE_VERSION: ${{ steps.prerelease.outputs.pre_version }} run: | sleep 10 - PUBLISHED=$(npm view get-shit-done-redux@"$PRE_VERSION" version 2>/dev/null || echo "NOT_FOUND") + PUBLISHED=$(npm view @opengsd/get-shit-done-redux@"$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: get-shit-done-redux@$PRE_VERSION is live on npm" - SDK_PUBLISHED=$(npm view @gsd-redux/sdk@"$PRE_VERSION" version 2>/dev/null || echo "NOT_FOUND") + echo "✓ Verified: @opengsd/get-shit-done-redux@$PRE_VERSION is live on npm" + SDK_PUBLISHED=$(npm view @opengsd/gsd-sdk@"$PRE_VERSION" version 2>/dev/null || echo "NOT_FOUND") if [ "$SDK_PUBLISHED" != "$PRE_VERSION" ]; then echo "::error::SDK version verification failed. Expected $PRE_VERSION, got $SDK_PUBLISHED" exit 1 fi - echo "✓ Verified: @gsd-redux/sdk@$PRE_VERSION is live on npm" + echo "✓ Verified: @opengsd/gsd-sdk@$PRE_VERSION is live on npm" # Also verify dist-tag - NEXT_TAG=$(npm dist-tag ls get-shit-done-redux 2>/dev/null | grep "next:" | awk '{print $2}') + NEXT_TAG=$(npm dist-tag ls @opengsd/get-shit-done-redux 2>/dev/null | grep "next:" | awk '{print $2}') echo "✓ next tag points to: $NEXT_TAG" - name: Summary @@ -276,8 +276,8 @@ jobs: echo "**DRY RUN** — npm publish, tagging, and push skipped" >> "$GITHUB_STEP_SUMMARY" else echo "- Published to npm as \`next\`" >> "$GITHUB_STEP_SUMMARY" - echo "- SDK also published: \`@gsd-redux/sdk@${PRE_VERSION}\` on \`next\`" >> "$GITHUB_STEP_SUMMARY" - echo "- Install: \`npx get-shit-done-redux@next\`" >> "$GITHUB_STEP_SUMMARY" + echo "- SDK also published: \`@opengsd/gsd-sdk@${PRE_VERSION}\` on \`next\`" >> "$GITHUB_STEP_SUMMARY" + echo "- Install: \`npx @opengsd/get-shit-done-redux@next\`" >> "$GITHUB_STEP_SUMMARY" fi echo "" >> "$GITHUB_STEP_SUMMARY" echo "To publish another pre-release: run \`rc\` again" >> "$GITHUB_STEP_SUMMARY" @@ -426,8 +426,8 @@ 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 "get-shit-done-redux@${VERSION}" next 2>/dev/null || true - npm dist-tag add "@gsd-redux/sdk@${VERSION}" next 2>/dev/null || true + npm dist-tag add "@opengsd/get-shit-done-redux@${VERSION}" next 2>/dev/null || true + npm dist-tag add "@opengsd/gsd-sdk@${VERSION}" next 2>/dev/null || true echo "✓ next dist-tag updated to v${VERSION}" - name: Verify publish @@ -436,20 +436,20 @@ jobs: VERSION: ${{ inputs.version }} run: | sleep 10 - PUBLISHED=$(npm view get-shit-done-redux@"$VERSION" version 2>/dev/null || echo "NOT_FOUND") + PUBLISHED=$(npm view @opengsd/get-shit-done-redux@"$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: get-shit-done-redux@$VERSION is live on npm" - SDK_PUBLISHED=$(npm view @gsd-redux/sdk@"$VERSION" version 2>/dev/null || echo "NOT_FOUND") + echo "✓ Verified: @opengsd/get-shit-done-redux@$VERSION is live on npm" + SDK_PUBLISHED=$(npm view @opengsd/gsd-sdk@"$VERSION" version 2>/dev/null || echo "NOT_FOUND") if [ "$SDK_PUBLISHED" != "$VERSION" ]; then echo "::error::SDK version verification failed. Expected $VERSION, got $SDK_PUBLISHED" exit 1 fi - echo "✓ Verified: @gsd-redux/sdk@$VERSION is live on npm" + echo "✓ Verified: @opengsd/gsd-sdk@$VERSION is live on npm" # Verify latest tag - LATEST_TAG=$(npm dist-tag ls get-shit-done-redux 2>/dev/null | grep "latest:" | awk '{print $2}') + LATEST_TAG=$(npm dist-tag ls @opengsd/get-shit-done-redux 2>/dev/null | grep "latest:" | awk '{print $2}') echo "✓ latest tag points to: $LATEST_TAG" - name: Summary @@ -462,8 +462,8 @@ jobs: echo "**DRY RUN** — npm publish, tagging, and push skipped" >> "$GITHUB_STEP_SUMMARY" else echo "- Published to npm as \`latest\`" >> "$GITHUB_STEP_SUMMARY" - echo "- SDK also published: \`@gsd-redux/sdk@${VERSION}\` as \`latest\`" >> "$GITHUB_STEP_SUMMARY" + echo "- SDK also published: \`@opengsd/gsd-sdk@${VERSION}\` 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 get-shit-done-redux@latest\`" >> "$GITHUB_STEP_SUMMARY" + echo "- Install: \`npx @opengsd/get-shit-done-redux@latest\`" >> "$GITHUB_STEP_SUMMARY" fi diff --git a/.github/workflows/test-skip.yml b/.github/workflows/test-skip.yml index 0ed0f7230..b0f5aab3b 100644 --- a/.github/workflows/test-skip.yml +++ b/.github/workflows/test-skip.yml @@ -23,8 +23,7 @@ on: - 'package.json' - 'package-lock.json' - 'tsconfig*.json' - - '.github/workflows/test.yml' - - '.github/workflows/test-skip.yml' + - '.github/workflows/**' concurrency: group: ${{ github.workflow }}-${{ github.head_ref || github.run_id }} diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 418bdd4fe..6f39abca8 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -21,8 +21,7 @@ on: - 'package.json' - 'package-lock.json' - 'tsconfig*.json' - - '.github/workflows/test.yml' - - '.github/workflows/test-skip.yml' + - '.github/workflows/**' workflow_dispatch: concurrency: diff --git a/CONTEXT.md b/CONTEXT.md index 49da3dd89..f85d6e561 100644 --- a/CONTEXT.md +++ b/CONTEXT.md @@ -253,9 +253,8 @@ Five-axis story decomposition discipline (**S**pike, **P**aths, **I**nterfaces, `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 get-shit-done-redux@latest\`` -`RELEASE-NOTES.STANDARD.footer.rc=Install for testing: \`npx get-shit-done-redux@next\` (per branch->dist-tag policy)` -`RELEASE-NOTES.STANDARD.footer.canary=Install: \`npx get-shit-done-redux@canary\`` +`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.intro=optional one-paragraph framing for RC/feature releases; omit for pure-fix hotfixes` @@ -277,12 +276,11 @@ Five-axis story decomposition discipline (**S**pike, **P**aths, **I**nterfaces, `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.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 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 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/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.RELEASE-STREAM.dev-branch=canary dist-tag (only); install via @canary` `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 @canary install in RC notes or @next in canary notes` +`RELEASE-NOTES.RELEASE-STREAM.rule=streams do not mix; do not document @next in hotfix/stable notes` --- @@ -553,11 +551,9 @@ Migration plan: Phase 1 (#3465) seam additions complete; Phase 2 (#3466) targets `DEFECT.STACKED-PR-CANNOT-STAND-ALONE.anti-pattern=blindly running git rebase --onto origin/main on the patch branch — produces "conflicts" that are really "the scaffolding doesn't exist yet"; resolving them means reinventing the upstream PR's contribution, which duplicates work and creates merge hazards. Recognize the shape early via cat-file probe before rebasing` `DEFECT.CANARY-VERSION-LEAK.symptom=package.json version on main carries a -canary. suffix that per release policy belongs to the dev branch only; nothing publishable depends on the version string at runtime, but every consumer of the version metadata (release flow, install banners, statusline) sees the dev-channel label` -`DEFECT.CANARY-VERSION-LEAK.examples=2026-05-16 audit found origin/main + origin/feat/3575-enforcement-hardening both at "version": "1.50.0-canary.0" in sdk/package.json AND root package.json; npm view @gsd-redux/sdk versions returned ["0.1.0"] only, dist-tag latest=0.1.0, @1.50.0-canary.0 404 — confirms the string is metadata-only, never published. git log -S '"version": "1.50.0-canary.0"' origin/main blamed commit 2d32ad82 fix(plan-phase)... (#3206), a fix PR that accidentally carried the version bump from a dev-branch base` +`DEFECT.CANARY-VERSION-LEAK.examples=2026-05-16 audit found origin/main + origin/feat/3575-enforcement-hardening both at "version": "1.50.0-canary.0" in sdk/package.json AND root package.json; npm view @opengsd/gsd-sdk versions returned ["0.1.0"] only, dist-tag latest=0.1.0, @1.50.0-canary.0 404 — confirms the string is metadata-only, never published. git log -S '"version": "1.50.0-canary.0"' origin/main blamed commit 2d32ad82 fix(plan-phase)... (#3206), a fix PR that accidentally carried the version bump from a dev-branch base` `DEFECT.CANARY-VERSION-LEAK.detect=jq -r .version package.json sdk/package.json on origin/main shows a -canary suffix; OR npm view dist-tags shows latest != main's version` `DEFECT.CANARY-VERSION-LEAK.fix-forward=open a chore/* PR against main that resets the version strings to the canonical pre-canary stable; rebase open PRs to pick it up; gate at PR open with a CI check that rejects -canary versions on PRs targeting main` -`DEFECT.CANARY-VERSION-LEAK.cross-ref=RELEASE-NOTES.RELEASE-STREAM.dev-branch=canary dist-tag (only); this defect is the live counter-example to that rule` - `DEFECT.GSD-TEST-HOST-MID-RUN-DEATH.symptom=pick_host succeeds at probe time (ssh -o ConnectTimeout=3 -o BatchMode=yes "$h" true); subsequent ssh "$h" 'docker run ...' hangs indefinitely because the chosen host went unreachable between probe and exec; gsd-test-summary buffers stderr until the wrapper exits, so the operator sees no progress at all` `DEFECT.GSD-TEST-HOST-MID-RUN-DEATH.examples=2026-05-16 redshirt probed up at 12:48 UTC, gsd-test-summary picked it, docker container spawned, then redshirt's ssh daemon stopped responding — banner-exchange timeout. Test stalled 20+ minutes with the wrapper's output file at 0 bytes` `DEFECT.GSD-TEST-HOST-MID-RUN-DEATH.detect=gsd-test-summary's task output file at /private/tmp/claude-*/tasks/.output stays 0 bytes for >5 min after launch; ps shows the test still alive; ssh -o ConnectTimeout=5 true now times out` diff --git a/QUICK-WINS-CONFIRMED-BUGS.md b/QUICK-WINS-CONFIRMED-BUGS.md index 9c0aa3c8c..c503571a1 100644 --- a/QUICK-WINS-CONFIRMED-BUGS.md +++ b/QUICK-WINS-CONFIRMED-BUGS.md @@ -20,7 +20,7 @@ All six issues carry the `confirmed-bug` label, meaning the bug has been verifie | 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 `@gsd-redux/sdk@0.1.0` | Release / SDK publishing | Plan + coordination | Medium (release-focused) | Not started | Oldest. Mostly a publishing/versioning task. | +| 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. | ## Execution Rules for This Batch diff --git a/README.ja-JP.md b/README.ja-JP.md index 4bda16e0a..ff2ab2647 100644 --- a/README.ja-JP.md +++ b/README.ja-JP.md @@ -10,8 +10,8 @@ **コンテキストロット(Claudeがコンテキストウィンドウを消費するにつれ品質が劣化する現象)を解決します。** -[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) +[![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) [![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) @@ -20,7 +20,7 @@
```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **Mac、Windows、Linuxで動作します。** @@ -84,7 +84,7 @@ GSDはそれを解決します。Claude Codeを信頼性の高いものにする - **マージ後ビルド & テストゲート** — `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 に手動公開(`get-shit-done-redux` と `@gsd-redux/sdk`)。 +- **手動カナリアリリースワークフロー** — `.github/workflows/canary.yml` が `workflow_dispatch` 経由で `dev` ブランチから `{base}-canary.{N}` ビルドを `@canary` dist-tag に手動公開(`@opengsd/get-shit-done-redux` と `@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 get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` インストーラーが以下の選択を求めます: @@ -116,7 +116,7 @@ npx get-shit-done-redux@latest GSDは急速に進化しています。定期的にアップデートしてください: ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ```
@@ -124,49 +124,49 @@ npx get-shit-done-redux@latest ```bash # Claude Code -npx get-shit-done-redux --claude --global # ~/.claude/ にインストール -npx get-shit-done-redux --claude --local # ./.claude/ にインストール +npx @opengsd/get-shit-done-redux --claude --global # ~/.claude/ にインストール +npx @opengsd/get-shit-done-redux --claude --local # ./.claude/ にインストール # OpenCode -npx get-shit-done-redux --opencode --global # ~/.config/opencode/ にインストール +npx @opengsd/get-shit-done-redux --opencode --global # ~/.config/opencode/ にインストール # Gemini CLI -npx get-shit-done-redux --gemini --global # ~/.gemini/ にインストール +npx @opengsd/get-shit-done-redux --gemini --global # ~/.gemini/ にインストール # Kilo -npx get-shit-done-redux --kilo --global # ~/.config/kilo/ にインストール -npx get-shit-done-redux --kilo --local # ./.kilo/ にインストール +npx @opengsd/get-shit-done-redux --kilo --global # ~/.config/kilo/ にインストール +npx @opengsd/get-shit-done-redux --kilo --local # ./.kilo/ にインストール # Codex -npx get-shit-done-redux --codex --global # ~/.codex/ にインストール -npx get-shit-done-redux --codex --local # ./.codex/ にインストール +npx @opengsd/get-shit-done-redux --codex --global # ~/.codex/ にインストール +npx @opengsd/get-shit-done-redux --codex --local # ./.codex/ にインストール # Copilot -npx get-shit-done-redux --copilot --global # ~/.github/ にインストール -npx get-shit-done-redux --copilot --local # ./.github/ にインストール +npx @opengsd/get-shit-done-redux --copilot --global # ~/.github/ にインストール +npx @opengsd/get-shit-done-redux --copilot --local # ./.github/ にインストール # Cursor CLI -npx get-shit-done-redux --cursor --global # ~/.cursor/ にインストール -npx get-shit-done-redux --cursor --local # ./.cursor/ にインストール +npx @opengsd/get-shit-done-redux --cursor --global # ~/.cursor/ にインストール +npx @opengsd/get-shit-done-redux --cursor --local # ./.cursor/ にインストール # Antigravity -npx get-shit-done-redux --antigravity --global # ~/.gemini/antigravity/ にインストール -npx get-shit-done-redux --antigravity --local # ./.agent/ にインストール +npx @opengsd/get-shit-done-redux --antigravity --global # ~/.gemini/antigravity/ にインストール +npx @opengsd/get-shit-done-redux --antigravity --local # ./.agent/ にインストール # Augment -npx get-shit-done-redux --augment --global # ~/.augment/ にインストール -npx get-shit-done-redux --augment --local # ./.augment/ にインストール +npx @opengsd/get-shit-done-redux --augment --global # ~/.augment/ にインストール +npx @opengsd/get-shit-done-redux --augment --local # ./.augment/ にインストール # Trae -npx get-shit-done-redux --trae --global # ~/.trae/ にインストール -npx get-shit-done-redux --trae --local # ./.trae/ にインストール +npx @opengsd/get-shit-done-redux --trae --global # ~/.trae/ にインストール +npx @opengsd/get-shit-done-redux --trae --local # ./.trae/ にインストール # Cline -npx get-shit-done-redux --cline --global # ~/.cline/ にインストール -npx get-shit-done-redux --cline --local # ./.clinerules にインストール +npx @opengsd/get-shit-done-redux --cline --global # ~/.cline/ にインストール +npx @opengsd/get-shit-done-redux --cline --local # ./.clinerules にインストール # 全ランタイム -npx get-shit-done-redux --all --global # すべてのディレクトリにインストール +npx @opengsd/get-shit-done-redux --all --global # すべてのディレクトリにインストール ``` `--global`(`-g`)または `--local`(`-l`)でインストール先の質問をスキップできます。 @@ -785,18 +785,18 @@ GSDのコードベースマッピングおよび分析コマンドは、プロ **コマンドが期待通りに動作しない?** - `/gsd-help` を実行してインストールを確認してください -- `npx get-shit-done-redux` を再実行して再インストールしてください +- `npx @opengsd/get-shit-done-redux` を再実行して再インストールしてください **最新バージョンへのアップデート?** ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **Dockerまたはコンテナ化環境を使用している?** チルダパス(`~/.claude/...`)でファイル読み取りが失敗する場合、インストール前に `CLAUDE_CONFIG_DIR` を設定してください: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global ``` これにより、コンテナ内で正しく展開されない可能性がある `~` の代わりに絶対パスが使用されます。 @@ -806,26 +806,26 @@ GSDを完全に削除するには: ```bash # グローバルインストール -npx get-shit-done-redux --claude --global --uninstall -npx get-shit-done-redux --opencode --global --uninstall -npx get-shit-done-redux --gemini --global --uninstall -npx get-shit-done-redux --kilo --global --uninstall -npx get-shit-done-redux --codex --global --uninstall -npx get-shit-done-redux --copilot --global --uninstall -npx get-shit-done-redux --cursor --global --uninstall -npx get-shit-done-redux --antigravity --global --uninstall -npx get-shit-done-redux --trae --global --uninstall +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 get-shit-done-redux --claude --local --uninstall -npx get-shit-done-redux --opencode --local --uninstall -npx get-shit-done-redux --gemini --local --uninstall -npx get-shit-done-redux --kilo --local --uninstall -npx get-shit-done-redux --codex --local --uninstall -npx get-shit-done-redux --copilot --local --uninstall -npx get-shit-done-redux --cursor --local --uninstall -npx get-shit-done-redux --antigravity --local --uninstall -npx get-shit-done-redux --trae --local --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 ``` これにより、他の設定を保持しながら、すべてのGSDコマンド、エージェント、フック、設定が削除されます。 @@ -834,7 +834,7 @@ npx get-shit-done-redux --trae --local --uninstall ## コミュニティポート -OpenCode、Gemini CLI、Kilo、Codexは `npx get-shit-done-redux` でネイティブサポートされています。 +OpenCode、Gemini CLI、Kilo、Codexは `npx @opengsd/get-shit-done-redux` でネイティブサポートされています。 以下のコミュニティポートがマルチランタイムサポートの先駆けとなりました: diff --git a/README.ko-KR.md b/README.ko-KR.md index e62eab054..38e0aa274 100644 --- a/README.ko-KR.md +++ b/README.ko-KR.md @@ -10,8 +10,8 @@ **컨텍스트 rot를 해결합니다 — Claude의 컨텍스트 창이 채워질수록 품질이 저하되는 문제.** -[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) +[![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) [![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) @@ -20,7 +20,7 @@
```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **Mac, Windows, Linux 모두 지원.** @@ -84,7 +84,7 @@ GSD가 그걸 고칩니다. Claude Code를 신뢰할 수 있게 만드는 컨텍 - **머지 후 빌드 & 테스트 게이트** — `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로 수동 게시(`get-shit-done-redux`와 `@gsd-redux/sdk`). +- **수동 카나리 릴리스 워크플로** — `.github/workflows/canary.yml`이 `workflow_dispatch`로 `dev` 브랜치에서 `{base}-canary.{N}` 빌드를 `@canary` dist-tag로 수동 게시(`@opengsd/get-shit-done-redux`와 `@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 get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` 설치 중에 다음을 선택합니다: @@ -116,7 +116,7 @@ npx get-shit-done-redux@latest GSD는 빠르게 발전합니다. 주기적으로 업데이트하세요: ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ```
@@ -124,49 +124,49 @@ npx get-shit-done-redux@latest ```bash # Claude Code -npx get-shit-done-redux --claude --global # ~/.claude/에 설치 -npx get-shit-done-redux --claude --local # ./.claude/에 설치 +npx @opengsd/get-shit-done-redux --claude --global # ~/.claude/에 설치 +npx @opengsd/get-shit-done-redux --claude --local # ./.claude/에 설치 # OpenCode -npx get-shit-done-redux --opencode --global # ~/.config/opencode/에 설치 +npx @opengsd/get-shit-done-redux --opencode --global # ~/.config/opencode/에 설치 # Gemini CLI -npx get-shit-done-redux --gemini --global # ~/.gemini/에 설치 +npx @opengsd/get-shit-done-redux --gemini --global # ~/.gemini/에 설치 # Kilo -npx get-shit-done-redux --kilo --global # ~/.config/kilo/에 설치 -npx get-shit-done-redux --kilo --local # ./.kilo/에 설치 +npx @opengsd/get-shit-done-redux --kilo --global # ~/.config/kilo/에 설치 +npx @opengsd/get-shit-done-redux --kilo --local # ./.kilo/에 설치 # Codex -npx get-shit-done-redux --codex --global # ~/.codex/에 설치 -npx get-shit-done-redux --codex --local # ./.codex/에 설치 +npx @opengsd/get-shit-done-redux --codex --global # ~/.codex/에 설치 +npx @opengsd/get-shit-done-redux --codex --local # ./.codex/에 설치 # Copilot -npx get-shit-done-redux --copilot --global # ~/.github/에 설치 -npx get-shit-done-redux --copilot --local # ./.github/에 설치 +npx @opengsd/get-shit-done-redux --copilot --global # ~/.github/에 설치 +npx @opengsd/get-shit-done-redux --copilot --local # ./.github/에 설치 # Cursor CLI -npx get-shit-done-redux --cursor --global # ~/.cursor/에 설치 -npx get-shit-done-redux --cursor --local # ./.cursor/에 설치 +npx @opengsd/get-shit-done-redux --cursor --global # ~/.cursor/에 설치 +npx @opengsd/get-shit-done-redux --cursor --local # ./.cursor/에 설치 # Antigravity -npx get-shit-done-redux --antigravity --global # ~/.gemini/antigravity/에 설치 -npx get-shit-done-redux --antigravity --local # ./.agent/에 설치 +npx @opengsd/get-shit-done-redux --antigravity --global # ~/.gemini/antigravity/에 설치 +npx @opengsd/get-shit-done-redux --antigravity --local # ./.agent/에 설치 # Augment -npx get-shit-done-redux --augment --global # ~/.augment/에 설치 -npx get-shit-done-redux --augment --local # ./.augment/에 설치 +npx @opengsd/get-shit-done-redux --augment --global # ~/.augment/에 설치 +npx @opengsd/get-shit-done-redux --augment --local # ./.augment/에 설치 # Trae -npx get-shit-done-redux --trae --global # ~/.trae/에 설치 -npx get-shit-done-redux --trae --local # ./.trae/에 설치 +npx @opengsd/get-shit-done-redux --trae --global # ~/.trae/에 설치 +npx @opengsd/get-shit-done-redux --trae --local # ./.trae/에 설치 # Cline -npx get-shit-done-redux --cline --global # ~/.cline/에 설치 -npx get-shit-done-redux --cline --local # ./.clinerules에 설치 +npx @opengsd/get-shit-done-redux --cline --global # ~/.cline/에 설치 +npx @opengsd/get-shit-done-redux --cline --local # ./.clinerules에 설치 # 전체 런타임 -npx get-shit-done-redux --all --global # 모든 디렉터리에 설치 +npx @opengsd/get-shit-done-redux --all --global # 모든 디렉터리에 설치 ``` 위치 프롬프트 건너뛰기: `--global` (`-g`) 또는 `--local` (`-l`). @@ -776,18 +776,18 @@ GSD의 코드베이스 매핑 및 분석 명령어는 프로젝트를 이해하 **명령어가 예상대로 작동하지 않나요?** - `/gsd-help`를 실행해 설치 확인 -- `npx get-shit-done-redux`를 다시 실행해 재설치 +- `npx @opengsd/get-shit-done-redux`를 다시 실행해 재설치 **최신 버전으로 업데이트하나요?** ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **Docker 또는 컨테이너 환경을 사용하나요?** 파일 읽기가 틸드 경로(`~/.claude/...`)로 실패하면 설치 전에 `CLAUDE_CONFIG_DIR`를 설정하세요: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global ``` 컨테이너에서 올바르게 확장되지 않을 수 있는 `~` 대신 절대 경로가 사용됩니다. @@ -797,26 +797,26 @@ GSD를 완전히 제거하려면: ```bash # 전역 설치 -npx get-shit-done-redux --claude --global --uninstall -npx get-shit-done-redux --opencode --global --uninstall -npx get-shit-done-redux --gemini --global --uninstall -npx get-shit-done-redux --kilo --global --uninstall -npx get-shit-done-redux --codex --global --uninstall -npx get-shit-done-redux --copilot --global --uninstall -npx get-shit-done-redux --cursor --global --uninstall -npx get-shit-done-redux --antigravity --global --uninstall -npx get-shit-done-redux --trae --global --uninstall +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 get-shit-done-redux --claude --local --uninstall -npx get-shit-done-redux --opencode --local --uninstall -npx get-shit-done-redux --gemini --local --uninstall -npx get-shit-done-redux --kilo --local --uninstall -npx get-shit-done-redux --codex --local --uninstall -npx get-shit-done-redux --copilot --local --uninstall -npx get-shit-done-redux --cursor --local --uninstall -npx get-shit-done-redux --antigravity --local --uninstall -npx get-shit-done-redux --trae --local --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 ``` 다른 설정은 그대로 유지하면서 GSD의 모든 명령어, 에이전트, 훅, 설정을 제거합니다. @@ -825,7 +825,7 @@ npx get-shit-done-redux --trae --local --uninstall ## 커뮤니티 포트 -OpenCode, Gemini CLI, Kilo, Codex는 이제 `npx get-shit-done-redux`를 통해 기본 지원됩니다. +OpenCode, Gemini CLI, Kilo, Codex는 이제 `npx @opengsd/get-shit-done-redux`를 통해 기본 지원됩니다. 이 커뮤니티 포트들이 멀티 런타임 지원의 선구자였습니다: diff --git a/README.md b/README.md index 81d7820df..ef8e9e614 100644 --- a/README.md +++ b/README.md @@ -17,9 +17,9 @@ > > | | Before | After | > |---|---|---| -> | GitHub | `gsd-build/get-shit-done` | `GSD-redux/get-shit-done-redux` | -> | npm (main) | `get-shit-done-cc` | `get-shit-done-redux` | -> | npm (sdk) | `@gsd-build/sdk` | `@gsd-redux/sdk` | +> | GitHub | `gsd-build/get-shit-done` | `open-gsd/get-shit-done-redux` | +> | npm (main) | `get-shit-done-cc` → `get-shit-done-redux` | `@opengsd/get-shit-done-redux` | +> | npm (sdk) | `@gsd-build/sdk` → `@gsd-redux/sdk` | `@opengsd/gsd-sdk` | > | Issue numbers | per source | renumbered; original is in body as `[from gsd-build/get-shit-done#N]` | > > If you can reach the original maintainer, please open an issue here and CC them. If you have technical evidence that materially changes the picture above, please share it in an issue. @@ -38,8 +38,8 @@ **Solves context rot — the quality degradation that happens as your AI fills its context window.** -[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) +[![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) [![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) @@ -48,7 +48,7 @@
```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **Works on Mac, Windows, and Linux.** @@ -159,7 +159,7 @@ Loop discuss → plan → execute → verify → ship until the milestone is don ## Getting Started ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@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. @@ -254,12 +254,12 @@ For the full configuration reference — all settings, git branching strategies, **Something broken?** Re-run the installer — it's idempotent: ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **Containers or Docker?** Set `CLAUDE_CONFIG_DIR` before installing to avoid tilde-expansion issues: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global ``` Full troubleshooting and uninstall instructions in **[docs/USER-GUIDE.md](docs/USER-GUIDE.md#troubleshooting)**. diff --git a/README.pt-BR.md b/README.pt-BR.md index f79ac8cc4..636ca1d7b 100644 --- a/README.pt-BR.md +++ b/README.pt-BR.md @@ -10,8 +10,8 @@ **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/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) +[![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) [![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) @@ -20,7 +20,7 @@
```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **Funciona em Mac, Windows e Linux.** @@ -82,7 +82,7 @@ Lista completa nas [notas de release v1.39.0](https://github.com/open-gsd/get-sh - **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 `get-shit-done-redux` e `@gsd-redux/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/get-shit-done-redux` 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 get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` O instalador pede: @@ -112,7 +112,7 @@ Verifique com: ### Mantendo atualizado ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ```
@@ -120,49 +120,49 @@ npx get-shit-done-redux@latest ```bash # Claude Code -npx get-shit-done-redux --claude --global -npx get-shit-done-redux --claude --local +npx @opengsd/get-shit-done-redux --claude --global +npx @opengsd/get-shit-done-redux --claude --local # OpenCode -npx get-shit-done-redux --opencode --global +npx @opengsd/get-shit-done-redux --opencode --global # Gemini CLI -npx get-shit-done-redux --gemini --global +npx @opengsd/get-shit-done-redux --gemini --global # Kilo -npx get-shit-done-redux --kilo --global -npx get-shit-done-redux --kilo --local +npx @opengsd/get-shit-done-redux --kilo --global +npx @opengsd/get-shit-done-redux --kilo --local # Codex -npx get-shit-done-redux --codex --global -npx get-shit-done-redux --codex --local +npx @opengsd/get-shit-done-redux --codex --global +npx @opengsd/get-shit-done-redux --codex --local # Copilot -npx get-shit-done-redux --copilot --global -npx get-shit-done-redux --copilot --local +npx @opengsd/get-shit-done-redux --copilot --global +npx @opengsd/get-shit-done-redux --copilot --local # Cursor -npx get-shit-done-redux --cursor --global -npx get-shit-done-redux --cursor --local +npx @opengsd/get-shit-done-redux --cursor --global +npx @opengsd/get-shit-done-redux --cursor --local # Antigravity -npx get-shit-done-redux --antigravity --global -npx get-shit-done-redux --antigravity --local +npx @opengsd/get-shit-done-redux --antigravity --global +npx @opengsd/get-shit-done-redux --antigravity --local # Augment -npx get-shit-done-redux --augment --global # Install to ~/.augment/ -npx get-shit-done-redux --augment --local # Install to ./.augment/ +npx @opengsd/get-shit-done-redux --augment --global # Install to ~/.augment/ +npx @opengsd/get-shit-done-redux --augment --local # Install to ./.augment/ # Trae -npx get-shit-done-redux --trae --global # Install to ~/.trae/ -npx get-shit-done-redux --trae --local # Install to ./.trae/ +npx @opengsd/get-shit-done-redux --trae --global # Install to ~/.trae/ +npx @opengsd/get-shit-done-redux --trae --local # Install to ./.trae/ # Cline -npx get-shit-done-redux --cline --global # Install to ~/.cline/ -npx get-shit-done-redux --cline --local # Install to ./.clinerules +npx @opengsd/get-shit-done-redux --cline --global # Install to ~/.cline/ +npx @opengsd/get-shit-done-redux --cline --local # Install to ./.clinerules # Todos -npx get-shit-done-redux --all --global +npx @opengsd/get-shit-done-redux --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 get-shit-done-redux@latest` +- Reinstale com `npx @opengsd/get-shit-done-redux@latest` **Em Docker/container?** - Defina `CLAUDE_CONFIG_DIR` antes da instalação: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global ``` ### Desinstalar ```bash # Instalações globais -npx get-shit-done-redux --claude --global --uninstall -npx get-shit-done-redux --opencode --global --uninstall -npx get-shit-done-redux --gemini --global --uninstall -npx get-shit-done-redux --kilo --global --uninstall -npx get-shit-done-redux --codex --global --uninstall -npx get-shit-done-redux --copilot --global --uninstall -npx get-shit-done-redux --cursor --global --uninstall -npx get-shit-done-redux --antigravity --global --uninstall -npx get-shit-done-redux --augment --global --uninstall -npx get-shit-done-redux --trae --global --uninstall -npx get-shit-done-redux --cline --global --uninstall +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 # Instalações locais (projeto atual) -npx get-shit-done-redux --claude --local --uninstall -npx get-shit-done-redux --opencode --local --uninstall -npx get-shit-done-redux --gemini --local --uninstall -npx get-shit-done-redux --kilo --local --uninstall -npx get-shit-done-redux --codex --local --uninstall -npx get-shit-done-redux --copilot --local --uninstall -npx get-shit-done-redux --cursor --local --uninstall -npx get-shit-done-redux --antigravity --local --uninstall -npx get-shit-done-redux --augment --local --uninstall -npx get-shit-done-redux --trae --local --uninstall -npx get-shit-done-redux --cline --local --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 ``` --- ## Community Ports -OpenCode, Gemini CLI, Kilo e Codex agora são suportados nativamente via `npx get-shit-done-redux`. +OpenCode, Gemini CLI, Kilo e Codex agora são suportados nativamente via `npx @opengsd/get-shit-done-redux`. | Projeto | Plataforma | Descrição | |---------|------------|-----------| diff --git a/README.zh-CN.md b/README.zh-CN.md index 30219c8f9..b3345f191 100644 --- a/README.zh-CN.md +++ b/README.zh-CN.md @@ -10,8 +10,8 @@ **它解决的是 context rot:随着 Claude 的上下文窗口被填满,输出质量逐步劣化的问题。** -[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) +[![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) [![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) @@ -20,7 +20,7 @@
```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **支持 Mac、Windows 和 Linux。** @@ -82,7 +82,7 @@ GSD 解决的就是这个问题。它是让 Claude Code 变得可靠的上下文 - **合并后构建与测试门** — `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}` 构建(`get-shit-done-redux` 与 `@gsd-redux/sdk`)发布到 `@canary` dist-tag。 +- **手动 canary 发布工作流** — `.github/workflows/canary.yml` 通过 `workflow_dispatch` 从 `dev` 分支按需将 `{base}-canary.{N}` 构建(`@opengsd/get-shit-done-redux` 与 `@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 get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` 安装器会提示你选择: @@ -114,7 +114,7 @@ npx get-shit-done-redux@latest GSD 迭代很快,建议定期更新: ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ```
@@ -122,53 +122,53 @@ npx get-shit-done-redux@latest ```bash # Claude Code -npx get-shit-done-redux --claude --global # 安装到 ~/.claude/ -npx get-shit-done-redux --claude --local # 安装到 ./.claude/ +npx @opengsd/get-shit-done-redux --claude --global # 安装到 ~/.claude/ +npx @opengsd/get-shit-done-redux --claude --local # 安装到 ./.claude/ # OpenCode -npx get-shit-done-redux --opencode --global # 安装到 ~/.config/opencode/ +npx @opengsd/get-shit-done-redux --opencode --global # 安装到 ~/.config/opencode/ # Gemini CLI -npx get-shit-done-redux --gemini --global # 安装到 ~/.gemini/ +npx @opengsd/get-shit-done-redux --gemini --global # 安装到 ~/.gemini/ # Kilo -npx get-shit-done-redux --kilo --global # 安装到 ~/.config/kilo/ -npx get-shit-done-redux --kilo --local # 安装到 ./.kilo/ +npx @opengsd/get-shit-done-redux --kilo --global # 安装到 ~/.config/kilo/ +npx @opengsd/get-shit-done-redux --kilo --local # 安装到 ./.kilo/ # Codex -npx get-shit-done-redux --codex --global # 安装到 ~/.codex/ -npx get-shit-done-redux --codex --local # 安装到 ./.codex/ +npx @opengsd/get-shit-done-redux --codex --global # 安装到 ~/.codex/ +npx @opengsd/get-shit-done-redux --codex --local # 安装到 ./.codex/ # Copilot -npx get-shit-done-redux --copilot --global # 安装到 ~/.github/ -npx get-shit-done-redux --copilot --local # 安装到 ./.github/ +npx @opengsd/get-shit-done-redux --copilot --global # 安装到 ~/.github/ +npx @opengsd/get-shit-done-redux --copilot --local # 安装到 ./.github/ # Cursor CLI -npx get-shit-done-redux --cursor --global # 安装到 ~/.cursor/ -npx get-shit-done-redux --cursor --local # 安装到 ./.cursor/ +npx @opengsd/get-shit-done-redux --cursor --global # 安装到 ~/.cursor/ +npx @opengsd/get-shit-done-redux --cursor --local # 安装到 ./.cursor/ # Antigravity -npx get-shit-done-redux --antigravity --global # 安装到 ~/.gemini/antigravity/ -npx get-shit-done-redux --antigravity --local # 安装到 ./.agent/ +npx @opengsd/get-shit-done-redux --antigravity --global # 安装到 ~/.gemini/antigravity/ +npx @opengsd/get-shit-done-redux --antigravity --local # 安装到 ./.agent/ # Augment -npx get-shit-done-redux --augment --global # 安装到 ~/.augment/ -npx get-shit-done-redux --augment --local # 安装到 ./.augment/ +npx @opengsd/get-shit-done-redux --augment --global # 安装到 ~/.augment/ +npx @opengsd/get-shit-done-redux --augment --local # 安装到 ./.augment/ # Trae -npx get-shit-done-redux --trae --global # 安装到 ~/.trae/ -npx get-shit-done-redux --trae --local # 安装到 ./.trae/ +npx @opengsd/get-shit-done-redux --trae --global # 安装到 ~/.trae/ +npx @opengsd/get-shit-done-redux --trae --local # 安装到 ./.trae/ # CodeBuddy -npx get-shit-done-redux --codebuddy --global # 安装到 ~/.codebuddy/ -npx get-shit-done-redux --codebuddy --local # 安装到 ./.codebuddy/ +npx @opengsd/get-shit-done-redux --codebuddy --global # 安装到 ~/.codebuddy/ +npx @opengsd/get-shit-done-redux --codebuddy --local # 安装到 ./.codebuddy/ # Cline -npx get-shit-done-redux --cline --global # 安装到 ~/.cline/ -npx get-shit-done-redux --cline --local # 安装到 ./.clinerules +npx @opengsd/get-shit-done-redux --cline --global # 安装到 ~/.cline/ +npx @opengsd/get-shit-done-redux --cline --local # 安装到 ./.clinerules # 所有运行时 -npx get-shit-done-redux --all --global # 安装到所有目录 +npx @opengsd/get-shit-done-redux --all --global # 安装到所有目录 ``` 使用 `--global`(`-g`)或 `--local`(`-l`)可以跳过安装位置提示。 @@ -753,18 +753,18 @@ GSD 的代码库映射和分析命令会读取文件来理解你的项目。** **命令行为不符合预期?** - 运行 `/gsd-help` 确认安装成功 -- 重新执行 `npx get-shit-done-redux` 进行重装 +- 重新执行 `npx @opengsd/get-shit-done-redux` 进行重装 **想更新到最新版本?** ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **在 Docker 或容器环境中使用?** 如果使用波浪线路径(`~/.claude/...`)时读取失败,请在安装前设置 `CLAUDE_CONFIG_DIR`: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global ``` 这样可以确保使用绝对路径,而不是在容器里可能无法正确展开的 `~`。 @@ -774,30 +774,30 @@ CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-redux --global ```bash # 全局安装 -npx get-shit-done-redux --claude --global --uninstall -npx get-shit-done-redux --opencode --global --uninstall -npx get-shit-done-redux --gemini --global --uninstall -npx get-shit-done-redux --kilo --global --uninstall -npx get-shit-done-redux --codex --global --uninstall -npx get-shit-done-redux --copilot --global --uninstall -npx get-shit-done-redux --cursor --global --uninstall -npx get-shit-done-redux --antigravity --global --uninstall -npx get-shit-done-redux --augment --global --uninstall -npx get-shit-done-redux --trae --global --uninstall -npx get-shit-done-redux --cline --global --uninstall +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 get-shit-done-redux --claude --local --uninstall -npx get-shit-done-redux --opencode --local --uninstall -npx get-shit-done-redux --gemini --local --uninstall -npx get-shit-done-redux --kilo --local --uninstall -npx get-shit-done-redux --codex --local --uninstall -npx get-shit-done-redux --copilot --local --uninstall -npx get-shit-done-redux --cursor --local --uninstall -npx get-shit-done-redux --antigravity --local --uninstall -npx get-shit-done-redux --augment --local --uninstall -npx get-shit-done-redux --trae --local --uninstall -npx get-shit-done-redux --cline --local --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 ``` 这会移除所有 GSD 命令、代理、hooks 和设置,但会保留你其他配置。 @@ -806,7 +806,7 @@ npx get-shit-done-redux --cline --local --uninstall ## 社区移植版本 -OpenCode、Gemini CLI、Kilo 和 Codex 现在都已经通过 `npx get-shit-done-redux` 获得原生支持。 +OpenCode、Gemini CLI、Kilo 和 Codex 现在都已经通过 `npx @opengsd/get-shit-done-redux` 获得原生支持。 这些社区移植版本曾率先探索多运行时支持: diff --git a/VERSIONING.md b/VERSIONING.md index 1e6f6326b..73ee45525 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 get-shit-done-redux@latest` | -| **Minor** | Fixes + enhancements | `1.28.0` | `latest` (after RC) | `release/1.28.0` | `npx get-shit-done-redux@next` (RC) | -| **Major** | Fixes + enhancements + features | `2.0.0` | `latest` (after beta) | `release/2.0.0` | `npx get-shit-done-redux@next` (beta) | +| **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) | ## 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 get-shit-done-redux` (default) | -| `next` | Pre-release (RC or beta) | `npm install get-shit-done-redux@next` (opt-in) | +| `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) | The version string (`-rc.1` vs `-beta.1`) communicates stability level. Users never get pre-releases unless they explicitly opt in. @@ -91,7 +91,7 @@ A hotfix `vX.YY.Z` cumulatively includes everything in `vX.YY.{Z-1}` plus every **Path B — `release-sdk.yml` (stopgap, one-shot):** -Active while the `@gsd-redux/sdk` npm token is unavailable; bundles the SDK inside the CC tarball. +Active while the `@opengsd/gsd-sdk` npm token is unavailable; bundles the SDK inside the CC tarball. 1. Trigger `release-sdk.yml` with `action=hotfix`, `version=1.27.1`, `auto_cherry_pick=true`. - The `prepare` job creates the branch and cherry-picks (same logic as Path A). @@ -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 get-shit-done-redux@next` +4. Test the RC: `npx @opengsd/get-shit-done-redux@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 get-shit-done-redux +npm dist-tag ls @opengsd/get-shit-done-redux ``` diff --git a/assets/terminal.svg b/assets/terminal.svg index b39e4546c..82f7ba4c0 100644 --- a/assets/terminal.svg +++ b/assets/terminal.svg @@ -38,7 +38,7 @@ ~ $ - npx get-shit-done-redux + npx @opengsd/get-shit-done-redux ██████╗ ███████╗██████╗ diff --git a/bin/gsd-sdk.js b/bin/gsd-sdk.js index dbcd40d05..49e29d8a3 100755 --- a/bin/gsd-sdk.js +++ b/bin/gsd-sdk.js @@ -2,12 +2,12 @@ /** * bin/gsd-sdk.js — back-compat shim for external callers of `gsd-sdk`. * - * When the parent package is installed globally (`npm install -g get-shit-done-redux`) + * When the parent package is installed globally (`npm install -g @opengsd/get-shit-done-redux`) * npm creates a `gsd-sdk` symlink in the global bin directory pointing at this * file. npm correctly chmods bin entries from a tarball, so the execute-bit * problem that afflicted the sub-install approach (issue #2453) cannot occur here. * - * NOTE (#2775): `npx get-shit-done-redux` does NOT link this shim — npx only + * NOTE (#2775): `npx @opengsd/get-shit-done-redux` does NOT link this shim — npx only * exposes the package's primary bin (`get-shit-done-redux`). For npx-based usage, * the installer (`bin/install.js#installSdkIfNeeded`) self-symlinks `gsd-sdk` * into `~/.local/bin` when needed and verifies PATH callability before @@ -19,7 +19,7 @@ * * Call sites (slash commands, agent prompts, hook scripts) continue to work without * changes because `gsd-sdk` still resolves on PATH — it just comes from this shim - * in the parent package rather than from a separately installed @gsd-redux/sdk. + * in the parent package rather than from a separately installed @opengsd/gsd-sdk. */ 'use strict'; diff --git a/bin/install.js b/bin/install.js index f129aee8d..fa442e12d 100755 --- a/bin/install.js +++ b/bin/install.js @@ -277,7 +277,7 @@ Please install a Linux-native Node.js inside WSL: curl -fsSL https://fnm.vercel.app/install | bash fnm install --lts -Then re-run: npx get-shit-done-redux@latest +Then re-run: npx @opengsd/get-shit-done-redux@latest `); process.exit(1); } @@ -600,7 +600,7 @@ if (hasUninstall) { // Show help if requested if (hasHelp) { - console.log(` ${yellow}Usage:${reset} npx get-shit-done-redux [options]\n\n ${yellow}Options:${reset}\n ${cyan}-g, --global${reset} Install globally (to config directory)\n ${cyan}-l, --local${reset} Install locally (to current directory)\n ${cyan}--claude${reset} Install for Claude Code only\n ${cyan}--opencode${reset} Install for OpenCode only\n ${cyan}--gemini${reset} Install for Gemini only\n ${cyan}--kilo${reset} Install for Kilo only\n ${cyan}--codex${reset} Install for Codex only\n ${cyan}--copilot${reset} Install for Copilot only\n ${cyan}--antigravity${reset} Install for Antigravity only\n ${cyan}--cursor${reset} Install for Cursor only\n ${cyan}--windsurf${reset} Install for Windsurf only\n ${cyan}--augment${reset} Install for Augment only\n ${cyan}--trae${reset} Install for Trae only\n ${cyan}--qwen${reset} Install for Qwen Code only\n ${cyan}--hermes${reset} Install for Hermes Agent only\n ${cyan}--cline${reset} Install for Cline only\n ${cyan}--codebuddy${reset} Install for CodeBuddy only\n ${cyan}--all${reset} Install for all runtimes\n ${cyan}-u, --uninstall${reset} Uninstall GSD (remove all GSD files)\n ${cyan}-c, --config-dir ${reset} Specify custom config directory\n ${cyan}-h, --help${reset} Show this help message\n ${cyan}--force-statusline${reset} Replace existing statusline config\n ${cyan}--portable-hooks${reset} Emit \$HOME-relative hook paths in settings.json\n (for WSL/Docker bind-mount setups; also GSD_PORTABLE_HOOKS=1)\n ${cyan}--profile=${reset} Install a named skill profile. Profiles:\n core — 7 main-loop skills incl. phase (~130 desc tokens)\n standard — ~13 skills incl. phase, review, config (~700)\n full — all 66 skills (default)\n Composable: --profile=core,audit installs union of closures.\n Profile is persisted and respected by \`gsd update\`.\n ${cyan}--minimal${reset} Alias for --profile=core (back-compat).\n Cuts cold-start overhead from ~12k tokens to ~700.\n Alias: --core-only.\n\n ${yellow}Examples:${reset}\n ${dim}# Interactive install (prompts for runtime and location)${reset}\n npx get-shit-done-redux\n\n ${dim}# Install for Claude Code globally${reset}\n npx get-shit-done-redux --claude --global\n\n ${dim}# Install for Gemini globally${reset}\n npx get-shit-done-redux --gemini --global\n\n ${dim}# Install for Kilo globally${reset}\n npx get-shit-done-redux --kilo --global\n\n ${dim}# Install for Codex globally${reset}\n npx get-shit-done-redux --codex --global\n\n ${dim}# Install for Copilot globally${reset}\n npx get-shit-done-redux --copilot --global\n\n ${dim}# Install for Copilot locally${reset}\n npx get-shit-done-redux --copilot --local\n\n ${dim}# Install for Antigravity globally${reset}\n npx get-shit-done-redux --antigravity --global\n\n ${dim}# Install for Antigravity locally${reset}\n npx get-shit-done-redux --antigravity --local\n\n ${dim}# Install for Cursor globally${reset}\n npx get-shit-done-redux --cursor --global\n\n ${dim}# Install for Cursor locally${reset}\n npx get-shit-done-redux --cursor --local\n\n ${dim}# Install for Windsurf globally${reset}\n npx get-shit-done-redux --windsurf --global\n\n ${dim}# Install for Windsurf locally${reset}\n npx get-shit-done-redux --windsurf --local\n\n ${dim}# Install for Augment globally${reset}\n npx get-shit-done-redux --augment --global\n\n ${dim}# Install for Augment locally${reset}\n npx get-shit-done-redux --augment --local\n\n ${dim}# Install for Trae globally${reset}\n npx get-shit-done-redux --trae --global\n\n ${dim}# Install for Trae locally${reset}\n npx get-shit-done-redux --trae --local\n\n ${dim}# Install for Hermes Agent globally${reset}\n npx get-shit-done-redux --hermes --global\n\n ${dim}# Install for Hermes Agent locally${reset}\n npx get-shit-done-redux --hermes --local\n\n ${dim}# Install for Cline locally${reset}\n npx get-shit-done-redux --cline --local\n\n ${dim}# Install for CodeBuddy globally${reset}\n npx get-shit-done-redux --codebuddy --global\n\n ${dim}# Install for CodeBuddy locally${reset}\n npx get-shit-done-redux --codebuddy --local\n\n ${dim}# Install for all runtimes globally${reset}\n npx get-shit-done-redux --all --global\n\n ${dim}# Install to custom config directory${reset}\n npx get-shit-done-redux --kilo --global --config-dir ~/.kilo-work\n\n ${dim}# Install to current project only${reset}\n npx get-shit-done-redux --claude --local\n\n ${dim}# Uninstall GSD from Cursor globally${reset}\n npx get-shit-done-redux --cursor --global --uninstall\n\n ${yellow}Notes:${reset}\n The --config-dir option is useful when you have multiple configurations.\n It takes priority over CLAUDE_CONFIG_DIR / OPENCODE_CONFIG_DIR / GEMINI_CONFIG_DIR / KILO_CONFIG_DIR / CODEX_HOME / COPILOT_CONFIG_DIR / ANTIGRAVITY_CONFIG_DIR / CURSOR_CONFIG_DIR / WINDSURF_CONFIG_DIR / AUGMENT_CONFIG_DIR / TRAE_CONFIG_DIR / QWEN_CONFIG_DIR / HERMES_HOME / CLINE_CONFIG_DIR / CODEBUDDY_CONFIG_DIR environment variables.\n`); + console.log(` ${yellow}Usage:${reset} npx @opengsd/get-shit-done-redux [options]\n\n ${yellow}Options:${reset}\n ${cyan}-g, --global${reset} Install globally (to config directory)\n ${cyan}-l, --local${reset} Install locally (to current directory)\n ${cyan}--claude${reset} Install for Claude Code only\n ${cyan}--opencode${reset} Install for OpenCode only\n ${cyan}--gemini${reset} Install for Gemini only\n ${cyan}--kilo${reset} Install for Kilo only\n ${cyan}--codex${reset} Install for Codex only\n ${cyan}--copilot${reset} Install for Copilot only\n ${cyan}--antigravity${reset} Install for Antigravity only\n ${cyan}--cursor${reset} Install for Cursor only\n ${cyan}--windsurf${reset} Install for Windsurf only\n ${cyan}--augment${reset} Install for Augment only\n ${cyan}--trae${reset} Install for Trae only\n ${cyan}--qwen${reset} Install for Qwen Code only\n ${cyan}--hermes${reset} Install for Hermes Agent only\n ${cyan}--cline${reset} Install for Cline only\n ${cyan}--codebuddy${reset} Install for CodeBuddy only\n ${cyan}--all${reset} Install for all runtimes\n ${cyan}-u, --uninstall${reset} Uninstall GSD (remove all GSD files)\n ${cyan}-c, --config-dir ${reset} Specify custom config directory\n ${cyan}-h, --help${reset} Show this help message\n ${cyan}--force-statusline${reset} Replace existing statusline config\n ${cyan}--portable-hooks${reset} Emit \$HOME-relative hook paths in settings.json\n (for WSL/Docker bind-mount setups; also GSD_PORTABLE_HOOKS=1)\n ${cyan}--profile=${reset} Install a named skill profile. Profiles:\n core — 7 main-loop skills incl. phase (~130 desc tokens)\n standard — ~13 skills incl. phase, review, config (~700)\n full — all 66 skills (default)\n Composable: --profile=core,audit installs union of closures.\n Profile is persisted and respected by \`gsd update\`.\n ${cyan}--minimal${reset} Alias for --profile=core (back-compat).\n Cuts cold-start overhead from ~12k tokens to ~700.\n Alias: --core-only.\n\n ${yellow}Examples:${reset}\n ${dim}# Interactive install (prompts for runtime and location)${reset}\n npx @opengsd/get-shit-done-redux\n\n ${dim}# Install for Claude Code globally${reset}\n npx @opengsd/get-shit-done-redux --claude --global\n\n ${dim}# Install for Gemini globally${reset}\n npx @opengsd/get-shit-done-redux --gemini --global\n\n ${dim}# Install for Kilo globally${reset}\n npx @opengsd/get-shit-done-redux --kilo --global\n\n ${dim}# Install for Codex globally${reset}\n npx @opengsd/get-shit-done-redux --codex --global\n\n ${dim}# Install for Copilot globally${reset}\n npx @opengsd/get-shit-done-redux --copilot --global\n\n ${dim}# Install for Copilot locally${reset}\n npx @opengsd/get-shit-done-redux --copilot --local\n\n ${dim}# Install for Antigravity globally${reset}\n npx @opengsd/get-shit-done-redux --antigravity --global\n\n ${dim}# Install for Antigravity locally${reset}\n npx @opengsd/get-shit-done-redux --antigravity --local\n\n ${dim}# Install for Cursor globally${reset}\n npx @opengsd/get-shit-done-redux --cursor --global\n\n ${dim}# Install for Cursor locally${reset}\n npx @opengsd/get-shit-done-redux --cursor --local\n\n ${dim}# Install for Windsurf globally${reset}\n npx @opengsd/get-shit-done-redux --windsurf --global\n\n ${dim}# Install for Windsurf locally${reset}\n npx @opengsd/get-shit-done-redux --windsurf --local\n\n ${dim}# Install for Augment globally${reset}\n npx @opengsd/get-shit-done-redux --augment --global\n\n ${dim}# Install for Augment locally${reset}\n npx @opengsd/get-shit-done-redux --augment --local\n\n ${dim}# Install for Trae globally${reset}\n npx @opengsd/get-shit-done-redux --trae --global\n\n ${dim}# Install for Trae locally${reset}\n npx @opengsd/get-shit-done-redux --trae --local\n\n ${dim}# Install for Hermes Agent globally${reset}\n npx @opengsd/get-shit-done-redux --hermes --global\n\n ${dim}# Install for Hermes Agent locally${reset}\n npx @opengsd/get-shit-done-redux --hermes --local\n\n ${dim}# Install for Cline locally${reset}\n npx @opengsd/get-shit-done-redux --cline --local\n\n ${dim}# Install for CodeBuddy globally${reset}\n npx @opengsd/get-shit-done-redux --codebuddy --global\n\n ${dim}# Install for CodeBuddy locally${reset}\n npx @opengsd/get-shit-done-redux --codebuddy --local\n\n ${dim}# Install for all runtimes globally${reset}\n npx @opengsd/get-shit-done-redux --all --global\n\n ${dim}# Install to custom config directory${reset}\n npx @opengsd/get-shit-done-redux --kilo --global --config-dir ~/.kilo-work\n\n ${dim}# Install to current project only${reset}\n npx @opengsd/get-shit-done-redux --claude --local\n\n ${dim}# Uninstall GSD from Cursor globally${reset}\n npx @opengsd/get-shit-done-redux --cursor --global --uninstall\n\n ${yellow}Notes:${reset}\n The --config-dir option is useful when you have multiple configurations.\n It takes priority over CLAUDE_CONFIG_DIR / OPENCODE_CONFIG_DIR / GEMINI_CONFIG_DIR / KILO_CONFIG_DIR / CODEX_HOME / COPILOT_CONFIG_DIR / ANTIGRAVITY_CONFIG_DIR / CURSOR_CONFIG_DIR / WINDSURF_CONFIG_DIR / AUGMENT_CONFIG_DIR / TRAE_CONFIG_DIR / QWEN_CONFIG_DIR / HERMES_HOME / CLINE_CONFIG_DIR / CODEBUDDY_CONFIG_DIR environment variables.\n`); process.exit(0); } @@ -7962,7 +7962,7 @@ function install(isGlobal, runtime = 'claude', options = {}) { ? targetDir.replace(os.homedir(), '~') : targetDir.replace(process.cwd(), '.'); - // #3406: warn if a stale standalone `@gsd-redux/sdk` is globally installed + // #3406: warn if a stale standalone `@opengsd/gsd-sdk` is globally installed // and shadows the `gsd-sdk` shim this installer wires up. Only meaningful // for global installs (the shim collision lives in the global node_modules // bin dir). Guarded by GSD_SKIP_STALE_SDK_CHECK so CI/tests can silence it. @@ -7979,7 +7979,7 @@ function install(isGlobal, runtime = 'claude', options = {}) { try { return execFileSync( npmCmd, - ['ls', '-g', '@gsd-redux/sdk', '--json', '--depth=0'], + ['ls', '-g', '@opengsd/gsd-sdk', '--json', '--depth=0'], { encoding: 'utf-8', stdio: ['ignore', 'pipe', 'ignore'], timeout: 10_000 } ); } catch (e) { @@ -8311,7 +8311,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 get-shit-done-redux@latest --codex` hard-abort with + // `!isTTY` made `npx @opengsd/get-shit-done-redux@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; @@ -10287,7 +10287,7 @@ function maybeSuggestPathExport(globalBin, homeDir) { * Verify the prebuilt SDK dist is present and the gsd-sdk shim is wired up. * * As of fix/2441-sdk-decouple, sdk/dist/ is shipped prebuilt inside the - * get-shit-done-redux npm tarball. The parent package declares a bin entry + * @opengsd/get-shit-done-redux npm tarball. The parent package declares a bin entry * "gsd-sdk": "bin/gsd-sdk.js" so npm chmods the shim correctly when * installing from a packed tarball — eliminating the mode-644 failure * (issue #2453) and the build-from-source failure modes (#2439, #2441). @@ -10306,15 +10306,15 @@ function maybeSuggestPathExport(globalBin, homeDir) { * `sdk/dist/` is missing: * * - `tarball` + `npxCache: true` - * User ran `npx get-shit-done-redux@latest`. sdk/ lives under - * `/_npx//node_modules/get-shit-done-redux/sdk` which + * User ran `npx @opengsd/get-shit-done-redux@latest`. sdk/ lives under + * `/_npx//node_modules/@opengsd/get-shit-done-redux/sdk` which * is treated as read-only by npm/npx on Windows (#2649). We MUST * NOT attempt a nested `npm install` there — it will fail with * EACCES/EPERM and produce the misleading "Failed to npm install * in sdk/" error the user reported. Point at the global upgrade. * * - `tarball` + `npxCache: false` - * User ran a global install (`npm i -g get-shit-done-redux`). sdk/dist + * User ran a global install (`npm i -g @opengsd/get-shit-done-redux`). sdk/dist * ships in the published tarball; if it's missing, the published * artifact itself is broken (see #2647). Same user-facing fix: * upgrade to latest. @@ -10377,7 +10377,7 @@ function classifySdkInstall(sdkDir) { * context: 'npx-cache' | 'tarball' | 'dev-clone', * missing_path: '/sdk/dist/cli.js', * missing_artifact: 'sdk/dist', - * fix_command: 'npm install -g get-shit-done-redux@latest' | 'cd sdk && npm install && npm run build', + * fix_command: 'npm install -g @opengsd/get-shit-done-redux@latest' | 'cd sdk && npm install && npm run build', * attempted_nested_install: false, // contract: never true * } */ @@ -10386,7 +10386,7 @@ function buildSdkFailFastReport(sdkDir, sdkCliPath) { let context, fix_command; if (ctx.mode === 'tarball') { context = ctx.npxCache ? 'npx-cache' : 'tarball'; - fix_command = 'npm install -g get-shit-done-redux@latest'; + fix_command = 'npm install -g @opengsd/get-shit-done-redux@latest'; } else { context = 'dev-clone'; fix_command = 'cd sdk && npm install && npm run build'; @@ -10423,7 +10423,7 @@ function renderSdkFailFastReport(ir) { console.error(` Fix: install a version that ships sdk/dist/ globally:`); console.error(` ${cyan}${ir.fix_command}${reset}`); console.error(` Or, if you prefer a one-shot run, clear the npx cache first:`); - console.error(` ${cyan}npx --yes get-shit-done-redux@latest${reset}`); + console.error(` ${cyan}npx --yes @opengsd/get-shit-done-redux@latest${reset}`); console.error(` Or build from source (git clone):`); console.error(` ${cyan}git clone https://github.com/open-gsd/get-shit-done-redux && cd get-shit-done/sdk && npm install && npm run build${reset}`); } else if (ir.context === 'tarball') { @@ -10498,7 +10498,7 @@ function installSdkIfNeeded(opts) { } // #2775: do not assert "GSD SDK ready" until `gsd-sdk` actually resolves on - // PATH. `npx get-shit-done-redux` only links the package's primary bin; the + // PATH. `npx @opengsd/get-shit-done-redux` only links the package's primary bin; the // secondary `gsd-sdk` shim is left dangling under the npx cache and is NOT // callable as a bare command. The previous file-presence-only check was a // strictly weaker invariant than the one workflows depend on @@ -10619,25 +10619,25 @@ function installSdkIfNeeded(opts) { } /** - * #3406 helper: detect a stale globally-installed `@gsd-redux/sdk` package - * shadowing the `gsd-sdk` shim that `get-shit-done-redux` installs. + * #3406 helper: detect a stale globally-installed `@opengsd/gsd-sdk` package + * shadowing the `gsd-sdk` shim that `@opengsd/get-shit-done-redux` installs. * - * Background: `@gsd-redux/sdk@0.1.0` was published once and never updated - * (the SDK now ships embedded in `get-shit-done-redux`). When a user has the + * 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 * 0.1.0 standalone package installed globally, its `gsd-sdk` bin shadows - * the one `get-shit-done-redux` provides — and the 0.1.0 binary only knows + * the one `@opengsd/get-shit-done-redux` 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 @gsd-redux/sdk`. + * `npm uninstall -g @opengsd/gsd-sdk`. * * Pure function: takes an injected `runNpmLs` executor that returns - * `npm ls -g @gsd-redux/sdk --json --depth=0` stdout. Returns: + * `npm ls -g @opengsd/gsd-sdk --json --depth=0` stdout. Returns: * `{ stale: true, version }` when the package is present. * `{ stale: false }` for every other input — including: * - executor throws (npm missing / EACCES / network), * - executor returns null/undefined/non-string, * - stdout is not parseable JSON, - * - the JSON has no `.dependencies['@gsd-redux/sdk']` field. + * - the JSON has no `.dependencies['@opengsd/gsd-sdk']` field. * * Fail-closed conservative: we'd rather miss a detection than fire a * false-positive warning that confuses users who have a fine install. @@ -10659,11 +10659,11 @@ function detectStaleStandaloneSdk(runNpmLs) { } const deps = parsed && typeof parsed === 'object' ? parsed.dependencies : null; if (!deps || typeof deps !== 'object') return { stale: false }; - const entry = deps['@gsd-redux/sdk']; + const entry = deps['@opengsd/gsd-sdk']; if (!entry || typeof entry !== 'object') return { stale: false }; const version = typeof entry.version === 'string' ? entry.version : '(unknown)'; // #3406 CR: scope stale detection to the known-bad version (0.1.0). Any - // newer @gsd-redux/sdk version is an intentional install (or a future + // newer @opengsd/gsd-sdk version is an intentional install (or a future // republish) and should not be flagged as a shim shadow. Without this // narrowing, a maintainer's local-link or a legitimate future publish // would trigger a misleading "stale shadow" warning on every install. @@ -10679,14 +10679,14 @@ function detectStaleStandaloneSdk(runNpmLs) { function formatStaleStandaloneSdkWarning(info) { const version = info && info.version ? info.version : '(unknown)'; return [ - '⚠ A stale globally-installed @gsd-redux/sdk@' + version + ' is shadowing the', - ' `gsd-sdk` shim that get-shit-done-redux provides. The standalone package', + '⚠ A stale globally-installed @opengsd/gsd-sdk@' + version + ' is shadowing the', + ' `gsd-sdk` shim that @opengsd/get-shit-done-redux provides. The standalone package', ' only knows `run | auto | init` — every `gsd-sdk query ` call from', ' skills and hooks will fail until you remove it.', '', ' Remediation:', - ' npm uninstall -g @gsd-redux/sdk', - ' npx -y get-shit-done-redux@latest -- --global', + ' npm uninstall -g @opengsd/gsd-sdk', + ' npx -y @opengsd/get-shit-done-redux@latest -- --global', '', ' Tracking: #3406 — https://github.com/open-gsd/get-shit-done-redux/issues/3406', ].join('\n'); @@ -10849,8 +10849,8 @@ function buildGsdSdkVersionMismatchReport(sdkPath, expectedVersion, opts) { // installer (e.g. `npx get-shit-done-cc@latest --claude --local`). const isLocal = opts && opts.isLocal; const fix_command = isLocal - ? 'npx get-shit-done-redux@latest --claude --local' - : 'npm install -g get-shit-done-redux@latest'; + ? 'npx @opengsd/get-shit-done-redux@latest --claude --local' + : 'npm install -g @opengsd/get-shit-done-redux@latest'; return { ok: false, reason: 'gsd_sdk_version_mismatch', diff --git a/docs/CANARY.md b/docs/CANARY.md index 1b7d54c85..6f8fad451 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 get-shit-done-redux@canary +npx @opengsd/get-shit-done-redux@canary # Pin to the canary dist-tag globally -npm install -g get-shit-done-redux@canary +npm install -g @opengsd/get-shit-done-redux@canary # Pin to an exact canary version -npm install -g get-shit-done-redux@1.50.0-canary.1 +npm install -g @opengsd/get-shit-done-redux@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,10 +47,10 @@ The CC installer's defensive purge rewrites stale config blocks left by older GS ```bash # Back to the current stable -npm install -g get-shit-done-redux@latest +npm install -g @opengsd/get-shit-done-redux@latest # Or to the next/RC train -npm install -g get-shit-done-redux@next +npm install -g @opengsd/get-shit-done-redux@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. diff --git a/docs/CLI-TOOLS.md b/docs/CLI-TOOLS.md index 4a76ddc4a..3ac17f1dc 100644 --- a/docs/CLI-TOOLS.md +++ b/docs/CLI-TOOLS.md @@ -1,6 +1,6 @@ # GSD CLI Tools Reference -> Surface-area reference for `get-shit-done/bin/gsd-tools.cjs` (legacy Node CLI). Workflows and agents should prefer `gsd-sdk query` or `@gsd-redux/sdk` where a handler exists — see [SDK and programmatic access](#sdk-and-programmatic-access). For slash commands and user flows, see [Command Reference](COMMANDS.md). +> Surface-area reference for `get-shit-done/bin/gsd-tools.cjs` (legacy Node CLI). Workflows and agents should prefer `gsd-sdk query` or `@opengsd/gsd-sdk` where a handler exists — see [SDK and programmatic access](#sdk-and-programmatic-access). For slash commands and user flows, see [Command Reference](COMMANDS.md). --- @@ -43,7 +43,7 @@ Use this when authoring workflows, not when you only need the command list below - Resolves argv with the same **longest-prefix** rules as the typed registry (`resolveQueryArgv` in `sdk/src/query/registry.ts`). Unregistered commands **fail fast** — use `node …/gsd-tools.cjs` only for handlers not in the registry. - Full matrix (CJS command → registry key, CLI-only tools, aliases, golden tiers): [sdk/src/query/QUERY-HANDLERS.md](../sdk/src/query/QUERY-HANDLERS.md). -**2. TypeScript — `@gsd-redux/sdk` (`GSDTools`, `createRegistry`)** +**2. TypeScript — `@opengsd/gsd-sdk` (`GSDTools`, `createRegistry`)** - `GSDTools` now routes through the **SDK Runtime Bridge Module** (`sdk/src/query-runtime-bridge.ts`). Native registry dispatch is preferred; subprocess fallback is explicit policy (`allowFallbackToSubprocess`) and can be disabled for strict SDK-only execution. - `strictSdk` mode fails fast when a command has no native adapter, making SDK publish/readiness checks deterministic. diff --git a/docs/FEATURES.md b/docs/FEATURES.md index 490594f33..46360b9ce 100644 --- a/docs/FEATURES.md +++ b/docs/FEATURES.md @@ -1054,7 +1054,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 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/get-shit-done-redux --uninstall` or by deleting the SessionStart entry that references `gsd-update-banner.js`. ### 38. Developer Profiling @@ -1436,7 +1436,7 @@ Test suite that scans all agent, workflow, and command files for embedded inject ### 55. Multi-Runtime Installer Selection -**Part of:** `npx get-shit-done-redux` +**Part of:** `npx @opengsd/get-shit-done-redux` **Purpose:** Select multiple runtimes in a single interactive install session. @@ -1455,7 +1455,7 @@ Test suite that scans all agent, workflow, and command files for embedded inject ### 56. Windsurf Runtime Support -**Part of:** `npx get-shit-done-redux` +**Part of:** `npx @opengsd/get-shit-done-redux` **Purpose:** Add Windsurf as a supported AI CLI runtime for GSD installation and execution. @@ -1695,7 +1695,7 @@ Test suite that scans all agent, workflow, and command files for embedded inject ### 68. Claude Code Skills Migration -**Part of:** `npx get-shit-done-redux` +**Part of:** `npx @opengsd/get-shit-done-redux` **Purpose:** Migrate GSD commands to Claude Code 2.1.88+ skills format with backward compatibility. @@ -1959,7 +1959,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 get-shit-done-redux` +**Part of:** `npx @opengsd/get-shit-done-redux` **Purpose:** Extend GSD installation to Trae IDE, Cline, and Augment Code runtimes. @@ -2301,7 +2301,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 get-shit-done-redux` +**Part of:** `npx @opengsd/get-shit-done-redux` **Purpose:** Extend GSD installation to Cline, CodeBuddy, and Qwen Code runtimes. @@ -2778,7 +2778,7 @@ 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 get-shit-done-redux --uninstall`. +- Cleanly removed by `npx @opengsd/get-shit-done-redux --uninstall`. **Requirements:** - REQ-BANNER-01: Banner does not install without explicit opt-in. diff --git a/docs/RELEASE-v1.39.0-rc.4.md b/docs/RELEASE-v1.39.0-rc.4.md index 058ebf934..9c1682ffc 100644 --- a/docs/RELEASE-v1.39.0-rc.4.md +++ b/docs/RELEASE-v1.39.0-rc.4.md @@ -3,7 +3,7 @@ Pre-release candidate. Published to npm under the `next` tag. ``` -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` --- @@ -62,16 +62,16 @@ The installer now: ```bash # npm -npm install -g get-shit-done-redux@next +npm install -g @opengsd/get-shit-done-redux@next # npx (one-shot) -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` To pin to this exact RC: ```bash -npm install -g get-shit-done-redux@1.39.0-rc.4 +npm install -g @opengsd/get-shit-done-redux@1.39.0-rc.4 ``` --- diff --git a/docs/RELEASE-v1.39.0-rc.5.md b/docs/RELEASE-v1.39.0-rc.5.md index 9a6c392ea..8b5a18638 100644 --- a/docs/RELEASE-v1.39.0-rc.5.md +++ b/docs/RELEASE-v1.39.0-rc.5.md @@ -3,7 +3,7 @@ Pre-release candidate. Published to npm under the `next` tag. ```bash -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` --- @@ -77,16 +77,16 @@ The installer now: ```bash # npm -npm install -g get-shit-done-redux@next +npm install -g @opengsd/get-shit-done-redux@next # npx (one-shot) -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` To pin to this exact RC: ```bash -npm install -g get-shit-done-redux@1.39.0-rc.5 +npm install -g @opengsd/get-shit-done-redux@1.39.0-rc.5 ``` --- diff --git a/docs/RELEASE-v1.39.0-rc.6.md b/docs/RELEASE-v1.39.0-rc.6.md index 6fa5ba982..406c48589 100644 --- a/docs/RELEASE-v1.39.0-rc.6.md +++ b/docs/RELEASE-v1.39.0-rc.6.md @@ -3,7 +3,7 @@ Pre-release candidate. Published to npm under the `next` tag. ```bash -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` --- @@ -93,16 +93,16 @@ The installer now: ```bash # npm -npm install -g get-shit-done-redux@next +npm install -g @opengsd/get-shit-done-redux@next # npx (one-shot) -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` To pin to this exact RC: ```bash -npm install -g get-shit-done-redux@1.39.0-rc.6 +npm install -g @opengsd/get-shit-done-redux@1.39.0-rc.6 ``` --- diff --git a/docs/RELEASE-v1.39.0-rc.7.md b/docs/RELEASE-v1.39.0-rc.7.md index f3fdc1b8f..67002e94e 100644 --- a/docs/RELEASE-v1.39.0-rc.7.md +++ b/docs/RELEASE-v1.39.0-rc.7.md @@ -3,7 +3,7 @@ Pre-release candidate. Published to npm under the `next` tag. ```bash -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` --- @@ -19,7 +19,7 @@ reaches the registry. ### Added - **Manual canary release workflow** — `.github/workflows/canary.yml` publishes - `{base}-canary.{N}` builds of `get-shit-done-redux` under the `canary` dist-tag on + `{base}-canary.{N}` builds of `@opengsd/get-shit-done-redux` under the `canary` dist-tag on demand via `workflow_dispatch` (manual trigger only). Optional `dry_run` boolean. ([#2828](https://github.com/GSD-redux/get-shit-done-redux/issues/2828)) @@ -39,7 +39,7 @@ reaches the registry. `argument-hint:`, `Triggers:` keyword-stuffing lists, and numbered enumeration. New CI lint gate `npm run lint:descriptions` fails if any description exceeds 100 chars. ([#2789](https://github.com/GSD-redux/get-shit-done-redux/issues/2789)) -- **`gsd-sdk` binary collision with `@gsd-redux/sdk` resolved** — workstream-aware +- **`gsd-sdk` binary collision with `@opengsd/gsd-sdk` resolved** — workstream-aware query registry now respects the `GSD_WORKSTREAM` env var; `gsd-tools` bin alias added. ([#2791](https://github.com/GSD-redux/get-shit-done-redux/issues/2791)) - **`OpenCode` agents embed `model_profile_overrides.opencode.`** — per-tier @@ -165,16 +165,16 @@ with a strict TOML parser. ```bash # npm -npm install -g get-shit-done-redux@next +npm install -g @opengsd/get-shit-done-redux@next # npx (one-shot) -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` To pin to this exact RC: ```bash -npm install -g get-shit-done-redux@1.39.0-rc.7 +npm install -g @opengsd/get-shit-done-redux@1.39.0-rc.7 ``` --- diff --git a/docs/RELEASE-v1.40.0-rc.1.md b/docs/RELEASE-v1.40.0-rc.1.md index f8ccb66e6..7d485922d 100644 --- a/docs/RELEASE-v1.40.0-rc.1.md +++ b/docs/RELEASE-v1.40.0-rc.1.md @@ -3,7 +3,7 @@ Pre-release candidate. Published to npm under the `next` tag. ```bash -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` --- @@ -112,16 +112,16 @@ and nine additional correctness fixes across OpenCode, Codex, and Gemini runtime ```bash # npm -npm install -g get-shit-done-redux@next +npm install -g @opengsd/get-shit-done-redux@next # npx (one-shot) -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next ``` To pin to this exact RC: ```bash -npm install -g get-shit-done-redux@1.40.0-rc.1 +npm install -g @opengsd/get-shit-done-redux@1.40.0-rc.1 ``` --- diff --git a/docs/RELEASE-v1.41.0.md b/docs/RELEASE-v1.41.0.md index 1cecc6982..f345015f9 100644 --- a/docs/RELEASE-v1.41.0.md +++ b/docs/RELEASE-v1.41.0.md @@ -3,7 +3,7 @@ Stable release. Published to npm under the `latest` tag. ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` --- @@ -186,13 +186,13 @@ colon-form slash-command conversion. ```bash # npm (global) -npm install -g get-shit-done-redux@latest +npm install -g @opengsd/get-shit-done-redux@latest # npx (one-shot) -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest # Pin to this exact version -npm install -g get-shit-done-redux@1.41.0 +npm install -g @opengsd/get-shit-done-redux@1.41.0 ``` The installer is idempotent — re-running on an existing install updates in-place, diff --git a/docs/RELEASE-v1.42.0-rc.1.md b/docs/RELEASE-v1.42.0-rc.1.md index c1b58a6d0..7b8037120 100644 --- a/docs/RELEASE-v1.42.0-rc.1.md +++ b/docs/RELEASE-v1.42.0-rc.1.md @@ -3,9 +3,9 @@ First release candidate for the **1.42.0** train. Published to npm under the `next` dist-tag. ```bash -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next # or pin exact: -npm install -g get-shit-done-redux@1.42.0-rc1 +npm install -g @opengsd/get-shit-done-redux@1.42.0-rc1 ``` > **Release-candidate stream caveat.** RCs come from `main` and are the staging stream for the next stable `latest`. They are stable enough for everyday use but may carry bake items resolved before the matching `vX.Y.0` is published. See [CANARY.md](CANARY.md) for the stream policy. @@ -82,13 +82,13 @@ Closes [#3270](https://github.com/GSD-redux/get-shit-done-redux/issues/3270). ```bash # npm (global, RC channel) -npm install -g get-shit-done-redux@next +npm install -g @opengsd/get-shit-done-redux@next # npx (one-shot) -npx get-shit-done-redux@next +npx @opengsd/get-shit-done-redux@next # Pin to this exact RC -npm install -g get-shit-done-redux@1.42.0-rc1 +npm install -g @opengsd/get-shit-done-redux@1.42.0-rc1 ``` The installer is idempotent — re-running on an existing install updates in-place, preserving your `.planning/` directory and local patches. @@ -96,5 +96,5 @@ The installer is idempotent — re-running on an existing install updates in-pla To roll back to the latest stable, install with `@latest`: ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` diff --git a/docs/RELEASE-v1.42.1.md b/docs/RELEASE-v1.42.1.md index 41a610932..51312c348 100644 --- a/docs/RELEASE-v1.42.1.md +++ b/docs/RELEASE-v1.42.1.md @@ -3,7 +3,7 @@ Stable release. Published to npm under the `latest` tag. ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` --- @@ -165,13 +165,13 @@ secure-phase audits, cross-runtime installs, and statusline parsing. ```bash # npm (global) -npm install -g get-shit-done-redux@latest +npm install -g @opengsd/get-shit-done-redux@latest # npx (one-shot) -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest # Pin to this exact version -npm install -g get-shit-done-redux@1.42.1 +npm install -g @opengsd/get-shit-done-redux@1.42.1 ``` The installer is idempotent — re-running on an existing install updates in-place, diff --git a/docs/RELEASE-v1.42.3.md b/docs/RELEASE-v1.42.3.md index 353af109f..e1f7b1998 100644 --- a/docs/RELEASE-v1.42.3.md +++ b/docs/RELEASE-v1.42.3.md @@ -3,7 +3,7 @@ Hotfix release. Published to npm under the `latest` tag. ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` --- @@ -11,7 +11,7 @@ npx get-shit-done-redux@latest ## What's in this release 1.42.3 is a stability hotfix on top of 1.42.2. The headline is **Codex -CLI 0.130.0 install routability** — after `npx get-shit-done-redux@latest +CLI 0.130.0 install routability** — after `npx @opengsd/get-shit-done-redux@latest --codex`, `$gsd-*` skills now resolve correctly under Codex 0.130.0 and later, where the previous build left users with zero routable entrypoints. The release also ships **runtime-aware slash formatting** @@ -136,13 +136,13 @@ SDK install readiness, and decimal-phase dependencies. ```bash # npm (global) -npm install -g get-shit-done-redux@latest +npm install -g @opengsd/get-shit-done-redux@latest # npx (one-shot) -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest # Pin to this exact version -npm install -g get-shit-done-redux@1.42.3 +npm install -g @opengsd/get-shit-done-redux@1.42.3 ``` The installer is idempotent — re-running on an existing install diff --git a/docs/RELEASE-v1.50.0-canary.1.md b/docs/RELEASE-v1.50.0-canary.1.md index 66fc619b6..8c65259fa 100644 --- a/docs/RELEASE-v1.50.0-canary.1.md +++ b/docs/RELEASE-v1.50.0-canary.1.md @@ -3,9 +3,9 @@ First canary cut for the **1.50.0** train. Published to npm under the `canary` dist-tag. ```bash -npx get-shit-done-redux@canary +npx @opengsd/get-shit-done-redux@canary # or pin exact: -npm install -g get-shit-done-redux@1.50.0-canary.1 +npm install -g @opengsd/get-shit-done-redux@1.50.0-canary.1 ``` > **Canary stream caveat.** Canary builds come from the long-lived `dev` integration branch and may carry rough edges that the `next` (RC) and `latest` (stable) channels never see. Use canary when you want to exercise in-flight features early and report findings; do NOT pin production projects to it. See [CANARY.md](CANARY.md) for the stream policy and rollback path. @@ -72,10 +72,10 @@ The MVP slice closes out with read-side surfaces: ```bash # Try the canary -npx get-shit-done-redux@canary +npx @opengsd/get-shit-done-redux@canary # Or pin exact -npm install -g get-shit-done-redux@1.50.0-canary.1 +npm install -g @opengsd/get-shit-done-redux@1.50.0-canary.1 ``` The installer's defensive purge will rewrite stale config blocks left by older GSD versions on first run. No manual cleanup needed. diff --git a/docs/USER-GUIDE.md b/docs/USER-GUIDE.md index ca90c3181..7731d8d93 100644 --- a/docs/USER-GUIDE.md +++ b/docs/USER-GUIDE.md @@ -1263,10 +1263,10 @@ Cline uses a rules-based integration — GSD installs as `.clinerules` rather th ```bash # Global install (applies to all projects) -npx get-shit-done-redux --cline --global +npx @opengsd/get-shit-done-redux --cline --global # Local install (this project only) -npx get-shit-done-redux --cline --local +npx @opengsd/get-shit-done-redux --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. @@ -1276,7 +1276,7 @@ Global installs write to `~/.cline/`. Local installs write to `./.cline/`. No cu CodeBuddy uses a skills-based integration. ```bash -npx get-shit-done-redux --codebuddy --global +npx @opengsd/get-shit-done-redux --codebuddy --global ``` Skills are installed to `~/.codebuddy/skills/gsd-*/SKILL.md`. @@ -1286,7 +1286,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 get-shit-done-redux --qwen --global +npx @opengsd/get-shit-done-redux --qwen --global ``` Skills are installed to `~/.qwen/skills/gsd-*/SKILL.md`. Use the `QWEN_CONFIG_DIR` environment variable to override the default install path. @@ -1300,7 +1300,7 @@ GSD does not enumerate prerelease editions as separate named runtimes. They are **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 get-shit-done-redux@latest --windsurf --global +WINDSURF_CONFIG_DIR=~/.codeium/windsurf-next npx @opengsd/get-shit-done-redux@latest --windsurf --global ``` Select the corresponding stable runtime in the installer prompt. Skills land in the prerelease directory; commands appear in the prerelease editor. @@ -1340,7 +1340,7 @@ Since v1.17, the installer backs up locally modified files to `gsd-local-patches ### Cannot Update via npm -If `npx 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/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. ### Surface GSD Update Notifications Without GSD's Statusline @@ -1362,7 +1362,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 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/get-shit-done-redux --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/adr/0003-model-catalog-module.md b/docs/adr/0003-model-catalog-module.md index 434b2c8d3..c56f9720e 100644 --- a/docs/adr/0003-model-catalog-module.md +++ b/docs/adr/0003-model-catalog-module.md @@ -30,8 +30,8 @@ The catalog owns: - agent → dynamic-routing default tier mapping The canonical file lives in a location both packages ship: -- repo root package (`get-shit-done-redux`) includes it -- standalone SDK package (`@gsd-redux/sdk`) includes it +- repo root package (`@opengsd/get-shit-done-redux`) includes it +- standalone SDK package (`@opengsd/gsd-sdk`) includes it Both CJS and SDK load this exact file. Neither package keeps its own independent list. diff --git a/docs/adr/0007-sdk-package-seam-module.md b/docs/adr/0007-sdk-package-seam-module.md index 77d45fa8f..cbfda96b7 100644 --- a/docs/adr/0007-sdk-package-seam-module.md +++ b/docs/adr/0007-sdk-package-seam-module.md @@ -3,6 +3,6 @@ - **Status:** Accepted - **Date:** 2026-05-07 -We decided to define one explicit SDK Package Seam Module for the `@gsd-redux/sdk` → `get-shit-done-redux` transition. During this transition, install-layout probing, legacy `gsd-tools.cjs` discovery, legacy `core.cjs` discovery, and compatibility-only missing-asset diagnostics must live behind one seam instead of leaking across SDK Modules. This keeps callers thin, raises leverage for standalone-SDK testing, and improves locality by making package-readiness bugs land in one place. First tracer-bullet slice: add one compatibility Adapter Module at this seam and migrate current legacy asset callers onto it before broader native replacement work. +We decided to define one explicit SDK Package Seam Module for the `@opengsd/gsd-sdk` → `@opengsd/get-shit-done-redux` transition. During this transition, install-layout probing, legacy `gsd-tools.cjs` discovery, legacy `core.cjs` discovery, and compatibility-only missing-asset diagnostics must live behind one seam instead of leaking across SDK Modules. This keeps callers thin, raises leverage for standalone-SDK testing, and improves locality by making package-readiness bugs land in one place. First tracer-bullet slice: add one compatibility Adapter Module at this seam and migrate current legacy asset callers onto it before broader native replacement work. Runtime-global skills directory resolution is explicitly out of scope for this seam. That policy varies by runtime (`claude`, `codex`, `cline`, etc.) rather than by legacy package/install layout, so it now lives in a separate Runtime-Global Skills Policy Module consumed by `agent-skills` and `skill-manifest`. diff --git a/docs/context-monitor.md b/docs/context-monitor.md index 52e48daa1..0375cceb1 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 get-shit-done-redux` installation: +Both hooks are automatically registered during `npx @opengsd/get-shit-done-redux` 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/gsd-sdk-query-migration-blurb.md b/docs/gsd-sdk-query-migration-blurb.md index 0e6c96e59..9eac9bde6 100644 --- a/docs/gsd-sdk-query-migration-blurb.md +++ b/docs/gsd-sdk-query-migration-blurb.md @@ -4,7 +4,7 @@ Copy-paste friendly for Discord and GitHub comments. --- -**@gsd-redux/sdk** replaces the untyped, monolithic `gsd-tools.cjs` subprocess with a typed, tested, registry-based query system and **`gsd-sdk query`**, giving GSD structured results, classified errors (`GSDError` with `ErrorClassification`), and golden-verified parity with the old CLI. That gives the framework one stable contract instead of a fragile, very large CLI that every workflow had to spawn and parse by hand. +**@opengsd/gsd-sdk** replaces the untyped, monolithic `gsd-tools.cjs` subprocess with a typed, tested, registry-based query system and **`gsd-sdk query`**, giving GSD structured results, classified errors (`GSDError` with `ErrorClassification`), and golden-verified parity with the old CLI. That gives the framework one stable contract instead of a fragile, very large CLI that every workflow had to spawn and parse by hand. **What users can expect** diff --git a/docs/ja-JP/FEATURES.md b/docs/ja-JP/FEATURES.md index 9400f44dc..f5c7f00b7 100644 --- a/docs/ja-JP/FEATURES.md +++ b/docs/ja-JP/FEATURES.md @@ -1308,7 +1308,7 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を ### 55. マルチランタイムインストーラー選択 -**対象:** `npx get-shit-done-redux` +**対象:** `npx @opengsd/get-shit-done-redux` **目的:** 1回のインタラクティブなインストールセッションで複数のランタイムを選択します。 @@ -1327,7 +1327,7 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を ### 56. Windsurf ランタイムサポート -**対象:** `npx get-shit-done-redux` +**対象:** `npx @opengsd/get-shit-done-redux` **目的:** Windsurf AI IDE のサポートを追加します。 @@ -1568,7 +1568,7 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を ### 68. Claude Code スキルマイグレーション -**対象:** `npx get-shit-done-redux` +**対象:** `npx @opengsd/get-shit-done-redux` **目的:** GSD コマンドを Claude Code 2.1.88+ のスキル形式に後方互換性を維持してマイグレーションします。 @@ -1831,7 +1831,7 @@ Claude が GSD ワークフローコンテキスト外でファイル編集を ### 85. 新規ランタイムサポート (Trae, Cline, Augment Code) -**対象:** `npx get-shit-done-redux` +**対象:** `npx @opengsd/get-shit-done-redux` **目的:** Trae IDE、Cline、Augment Code ランタイムへの GSD インストールを拡張します。 diff --git a/docs/ja-JP/context-monitor.md b/docs/ja-JP/context-monitor.md index 7fd13da02..459431fbc 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 get-shit-done-redux` のインストール時に自動的に登録されます: +両フックは `npx @opengsd/get-shit-done-redux` のインストール時に自動的に登録されます: - **ステータスライン**(ブリッジファイルの書き込み): settings.json の `statusLine` として登録 - **コンテキストモニター**(ブリッジファイルの読み取り): settings.json の `PostToolUse` フックとして登録(Gemini では `AfterTool`) diff --git a/docs/ko-KR/FEATURES.md b/docs/ko-KR/FEATURES.md index 93d11070c..03348f32c 100644 --- a/docs/ko-KR/FEATURES.md +++ b/docs/ko-KR/FEATURES.md @@ -1308,7 +1308,7 @@ Claude가 GSD 워크플로우 컨텍스트 밖에서 파일 편집을 시도하 ### 55. Multi-Runtime Installer Selection -**일부:** `npx get-shit-done-redux` +**일부:** `npx @opengsd/get-shit-done-redux` **목적:** 단일 대화형 설치 세션에서 여러 런타임을 선택합니다. @@ -1327,7 +1327,7 @@ Claude가 GSD 워크플로우 컨텍스트 밖에서 파일 편집을 시도하 ### 56. Windsurf 런타임 지원 -**대상:** `npx get-shit-done-redux` +**대상:** `npx @opengsd/get-shit-done-redux` **목적:** Windsurf AI IDE 지원을 추가합니다. @@ -1568,7 +1568,7 @@ Claude가 GSD 워크플로우 컨텍스트 밖에서 파일 편집을 시도하 ### 68. Claude Code 스킬 마이그레이션 -**대상:** `npx get-shit-done-redux` +**대상:** `npx @opengsd/get-shit-done-redux` **목적:** GSD 명령어를 하위 호환성을 유지하면서 Claude Code 2.1.88+ 스킬 형식으로 마이그레이션합니다. @@ -1831,7 +1831,7 @@ Claude가 GSD 워크플로우 컨텍스트 밖에서 파일 편집을 시도하 ### 85. 신규 런타임 지원 (Trae, Cline, Augment Code) -**대상:** `npx get-shit-done-redux` +**대상:** `npx @opengsd/get-shit-done-redux` **목적:** Trae IDE, Cline, Augment Code 런타임으로 GSD 설치를 확장합니다. diff --git a/docs/ko-KR/context-monitor.md b/docs/ko-KR/context-monitor.md index 0dc5dbdc9..9721ac721 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 get-shit-done-redux` 설치 중에 자동으로 등록됩니다. +두 훅 모두 `npx @opengsd/get-shit-done-redux` 설치 중에 자동으로 등록됩니다. - **Statusline** (브리지 파일 기록): settings.json에 `statusLine`으로 등록 - **Context Monitor** (브리지 파일 읽기): settings.json에 `PostToolUse` 훅으로 등록 (Gemini의 경우 `AfterTool`) diff --git a/docs/manual-update.md b/docs/manual-update.md index b508e223e..ad3c23c40 100644 --- a/docs/manual-update.md +++ b/docs/manual-update.md @@ -1,6 +1,6 @@ # Manual Update (Non-npm Install) -Use this procedure when `npx 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/get-shit-done-redux@latest` is unavailable — e.g. during a publish outage or if you are working directly from the source repo. ## Prerequisites diff --git a/docs/prd/3524-cjs-sdk-hard-seam.md b/docs/prd/3524-cjs-sdk-hard-seam.md index ebba60143..2dfd465c2 100644 --- a/docs/prd/3524-cjs-sdk-hard-seam.md +++ b/docs/prd/3524-cjs-sdk-hard-seam.md @@ -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 `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/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. - `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/pt-BR/CLI-TOOLS.md b/docs/pt-BR/CLI-TOOLS.md index 2ef93fe43..c8fea22d1 100644 --- a/docs/pt-BR/CLI-TOOLS.md +++ b/docs/pt-BR/CLI-TOOLS.md @@ -1,7 +1,7 @@ # Referência de Ferramentas CLI Resumo em Português das ferramentas CLI do GSD. -Para API completa (assinaturas, argumentos e comportamento detalhado), consulte [CLI-TOOLS.md em inglês](../CLI-TOOLS.md) — inclui a secção **SDK and programmatic access** (`gsd-sdk query`, `@gsd-redux/sdk`). +Para API completa (assinaturas, argumentos e comportamento detalhado), consulte [CLI-TOOLS.md em inglês](../CLI-TOOLS.md) — inclui a secção **SDK and programmatic access** (`gsd-sdk query`, `@opengsd/gsd-sdk`). --- diff --git a/docs/zh-CN/README.md b/docs/zh-CN/README.md index 8aac0b3cd..a2f153c8c 100644 --- a/docs/zh-CN/README.md +++ b/docs/zh-CN/README.md @@ -6,8 +6,8 @@ **解决上下文衰减 —— 即 Claude 填充上下文窗口时发生的质量退化问题。** -[![npm version](https://img.shields.io/npm/v/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) -[![npm downloads](https://img.shields.io/npm/dm/get-shit-done-redux?style=for-the-badge&logo=npm&logoColor=white&color=CB3837)](https://www.npmjs.com/package/get-shit-done-redux) +[![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) [![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) @@ -18,7 +18,7 @@
```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **支持 Mac、Windows 和 Linux。** @@ -78,7 +78,7 @@ GSD 解决了这个问题。它是让 Claude Code 变得可靠的上下文工程 ## 快速开始 ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` 安装程序会提示你选择: @@ -99,7 +99,7 @@ npx get-shit-done-redux@latest GSD 快速迭代。定期更新: ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ```
@@ -107,25 +107,25 @@ npx get-shit-done-redux@latest ```bash # Claude Code -npx get-shit-done-redux --claude --global # 安装到 ~/.claude/ -npx get-shit-done-redux --claude --local # 安装到 ./.claude/ +npx @opengsd/get-shit-done-redux --claude --global # 安装到 ~/.claude/ +npx @opengsd/get-shit-done-redux --claude --local # 安装到 ./.claude/ # OpenCode -npx get-shit-done-redux --opencode --global # 安装到 ~/.config/opencode/ +npx @opengsd/get-shit-done-redux --opencode --global # 安装到 ~/.config/opencode/ # Gemini CLI -npx get-shit-done-redux --gemini --global # 安装到 ~/.gemini/ +npx @opengsd/get-shit-done-redux --gemini --global # 安装到 ~/.gemini/ # Kilo -npx get-shit-done-redux --kilo --global # 安装到 ~/.config/kilo/ -npx get-shit-done-redux --kilo --local # 安装到 ./.kilo/ +npx @opengsd/get-shit-done-redux --kilo --global # 安装到 ~/.config/kilo/ +npx @opengsd/get-shit-done-redux --kilo --local # 安装到 ./.kilo/ # Codex -npx get-shit-done-redux --codex --global # 安装到 ~/.codex/ -npx get-shit-done-redux --codex --local # 安装到 ./.codex/ +npx @opengsd/get-shit-done-redux --codex --global # 安装到 ~/.codex/ +npx @opengsd/get-shit-done-redux --codex --local # 安装到 ./.codex/ # 所有运行时 -npx get-shit-done-redux --all --global # 安装到所有目录 +npx @opengsd/get-shit-done-redux --all --global # 安装到所有目录 ``` 使用 `--global`(`-g`)或 `--local`(`-l`)跳过位置提示。 @@ -652,18 +652,18 @@ GSD 的代码库映射和分析命令读取文件以了解你的项目。**保 **命令没有按预期工作?** - 运行 `/gsd-help` 验证安装 -- 重新运行 `npx get-shit-done-redux` 重新安装 +- 重新运行 `npx @opengsd/get-shit-done-redux` 重新安装 **更新到最新版本?** ```bash -npx get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` **使用 Docker 或容器化环境?** 如果用波浪号路径(`~/.claude/...`)读取文件失败,在安装前设置 `CLAUDE_CONFIG_DIR`: ```bash -CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-redux --global +CLAUDE_CONFIG_DIR=/home/youruser/.claude npx @opengsd/get-shit-done-redux --global ``` 这确保使用绝对路径而不是 `~`,后者在容器中可能无法正确展开。 @@ -673,16 +673,16 @@ CLAUDE_CONFIG_DIR=/home/youruser/.claude npx get-shit-done-redux --global ```bash # 全局安装 -npx get-shit-done-redux --claude --global --uninstall -npx get-shit-done-redux --opencode --global --uninstall -npx get-shit-done-redux --kilo --global --uninstall -npx get-shit-done-redux --codex --global --uninstall +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 get-shit-done-redux --claude --local --uninstall -npx get-shit-done-redux --opencode --local --uninstall -npx get-shit-done-redux --kilo --local --uninstall -npx get-shit-done-redux --codex --local --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 ``` 这删除所有 GSD 命令、代理、钩子和设置,同时保留你的其他配置。 @@ -691,7 +691,7 @@ npx get-shit-done-redux --codex --local --uninstall ## 社区移植 -OpenCode、Gemini CLI、Kilo 和 Codex 现在通过 `npx get-shit-done-redux` 原生支持。 +OpenCode、Gemini CLI、Kilo 和 Codex 现在通过 `npx @opengsd/get-shit-done-redux` 原生支持。 这些社区移植开创了多运行时支持: diff --git a/get-shit-done/bin/check-latest-version.cjs b/get-shit-done/bin/check-latest-version.cjs index 8d36bdb6e..aff7b03a4 100755 --- a/get-shit-done/bin/check-latest-version.cjs +++ b/get-shit-done/bin/check-latest-version.cjs @@ -24,7 +24,7 @@ const { execNpm } = require('./lib/shell-command-projection.cjs'); // Hardcoded. Do not parameterise — the whole point of this script is that // the package name is not a runtime choice for the caller. -const PACKAGE_NAME = 'get-shit-done-redux'; +const PACKAGE_NAME = '@opengsd/get-shit-done-redux'; const CHECK_REASON = Object.freeze({ OK: 'ok', diff --git a/get-shit-done/bin/gsd-tools.cjs b/get-shit-done/bin/gsd-tools.cjs index ba594405b..785e07ca3 100755 --- a/get-shit-done/bin/gsd-tools.cjs +++ b/get-shit-done/bin/gsd-tools.cjs @@ -2,7 +2,7 @@ /** * @deprecated The supported programmatic surface is `gsd-sdk query` (SDK query registry) - * and the `@gsd-redux/sdk` package. This Node CLI remains the compatibility implementation + * and the `@opengsd/gsd-sdk` package. This Node CLI remains the compatibility implementation * for shell scripts and older workflows; prefer calling the SDK from agents and automation. * * GSD Tools — CLI utility for GSD workflow operations diff --git a/get-shit-done/bin/lib/cjs-sdk-bridge.cjs b/get-shit-done/bin/lib/cjs-sdk-bridge.cjs index 6a9d49c4c..6f5c3ea52 100644 --- a/get-shit-done/bin/lib/cjs-sdk-bridge.cjs +++ b/get-shit-done/bin/lib/cjs-sdk-bridge.cjs @@ -11,7 +11,7 @@ * stop, applied to the SDK-load logic itself). * * Load path policy: the bridge resolves the bundled SDK by package-relative - * filesystem path, NOT by the `@gsd-redux/sdk` package name. The package name + * filesystem path, NOT by the `@opengsd/gsd-sdk` package name. The package name * is not installed in the root `node_modules` (it lives as a sibling workspace * package, not a dependency), and the SDK's public entry doesn't re-export * `executeForCjs` or `formatStateLoadRawStdout` anyway. Using the relative @@ -21,7 +21,7 @@ * `package.json` keeps `sdk/dist` at the same path inside the published * tarball. * - * The previous implementation used `require('@gsd-redux/sdk')`, which always + * The previous implementation used `require('@opengsd/gsd-sdk')`, which always * failed because the package was unresolvable from the consumer location. * That cached `_loadFailed = true` for the lifetime of the process and made * every router silently fall through to CJS — defeating Phase 5/6's entire diff --git a/get-shit-done/bin/lib/shell-command-projection.cjs b/get-shit-done/bin/lib/shell-command-projection.cjs index f9eda204c..793d985c5 100644 --- a/get-shit-done/bin/lib/shell-command-projection.cjs +++ b/get-shit-done/bin/lib/shell-command-projection.cjs @@ -350,12 +350,12 @@ function formatSdkPathDiagnostic({ shimDir, platform, runDir }) { } else { actionLines.push('Could not locate a writable PATH directory to install the shim.'); actionLines.push('Install globally to materialize the bin symlink:'); - actionLines.push('npm install -g get-shit-done-redux'); + actionLines.push('npm install -g @opengsd/get-shit-done-redux'); } const npxNoteLines = isNpx ? [ "Note: you're running via npx. For a persistent shim,", - 'install globally instead: npm install -g get-shit-done-redux', + 'install globally instead: npm install -g @opengsd/get-shit-done-redux', ] : []; return { shimLocationLine, actionLines, shellActions, npxNoteLines, isNpx, isWin32 }; diff --git a/get-shit-done/bin/lib/verify.cjs b/get-shit-done/bin/lib/verify.cjs index 9c8ae78f2..e83c1b9ac 100644 --- a/get-shit-done/bin/lib/verify.cjs +++ b/get-shit-done/bin/lib/verify.cjs @@ -837,11 +837,11 @@ function cmdValidateHealth(cwd, options, raw) { if (agentStatus.installed_agents.length === 0) { addIssue('warning', 'W010', `No GSD agents found in ${agentStatus.agents_dir} — Task(subagent_type="gsd-*") will fall back to general-purpose`, - 'Run the GSD installer: npx get-shit-done-redux@latest'); + 'Run the GSD installer: npx @opengsd/get-shit-done-redux@latest'); } else { addIssue('warning', 'W010', `Missing ${agentStatus.missing_agents.length} GSD agents: ${agentStatus.missing_agents.join(', ')} — affected workflows will fall back to general-purpose`, - 'Run the GSD installer: npx get-shit-done-redux@latest'); + 'Run the GSD installer: npx @opengsd/get-shit-done-redux@latest'); } } } catch { /* intentionally empty — agent check is non-blocking */ } diff --git a/get-shit-done/workflows/help/modes/default.md b/get-shit-done/workflows/help/modes/default.md index e8ecaeb79..a70e94459 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 get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` diff --git a/get-shit-done/workflows/help/modes/full.md b/get-shit-done/workflows/help/modes/full.md index bd3794458..b0ac08a29 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 get-shit-done-redux@latest +npx @opengsd/get-shit-done-redux@latest ``` ## Core Workflow diff --git a/get-shit-done/workflows/new-milestone.md b/get-shit-done/workflows/new-milestone.md index 2d6d8a599..15dccaf0a 100644 --- a/get-shit-done/workflows/new-milestone.md +++ b/get-shit-done/workflows/new-milestone.md @@ -246,7 +246,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 get-shit-done-redux@latest --global + npx @opengsd/get-shit-done-redux@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 f9af8a431..06c51a0e4 100644 --- a/get-shit-done/workflows/new-project.md +++ b/get-shit-done/workflows/new-project.md @@ -97,7 +97,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 get-shit-done-redux@latest --global + npx @opengsd/get-shit-done-redux@latest --global Proceeding without research subagents — roadmap will be generated inline. ``` diff --git a/get-shit-done/workflows/quick.md b/get-shit-done/workflows/quick.md index 69a37cd7a..8ba14522d 100644 --- a/get-shit-done/workflows/quick.md +++ b/get-shit-done/workflows/quick.md @@ -133,7 +133,7 @@ elif command -v gsd-sdk >/dev/null 2>&1; then GSD_SDK="gsd-sdk" else echo "ERROR: gsd-sdk not found on PATH and $GSD_TOOLS does not exist." >&2 - echo "Run: npx get-shit-done-redux@latest --claude --local" >&2 + echo "Run: npx @opengsd/get-shit-done-redux@latest --claude --local" >&2 exit 1 fi INIT=$($GSD_SDK query init.quick "$DESCRIPTION") diff --git a/get-shit-done/workflows/update.md b/get-shit-done/workflows/update.md index fe92c09bb..7e150935a 100644 --- a/get-shit-done/workflows/update.md +++ b/get-shit-done/workflows/update.md @@ -326,7 +326,7 @@ fi ```text Couldn't check for updates (reason: {LATEST_REASON}, exit: {LATEST_STATUS}). -To update manually: `npx -y --package=get-shit-done-redux@latest -- get-shit-done-redux --global` +To update manually: `npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux --global` ``` Exit. @@ -547,17 +547,17 @@ RUNTIME_FLAG="--$TARGET_RUNTIME" **If LOCAL install:** ```bash -npx -y --package=get-shit-done-redux@latest -- get-shit-done-redux "$RUNTIME_FLAG" --local +npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux "$RUNTIME_FLAG" --local ``` **If GLOBAL install:** ```bash -npx -y --package=get-shit-done-redux@latest -- get-shit-done-redux "$RUNTIME_FLAG" --global +npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux "$RUNTIME_FLAG" --global ``` **If UNKNOWN install:** ```bash -npx -y --package=get-shit-done-redux@latest -- get-shit-done-redux --claude --global +npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux --claude --global ``` Capture output. If install fails, show error and exit. diff --git a/package-lock.json b/package-lock.json index 5cd2d1b44..7bf7b013c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,12 +1,12 @@ { - "name": "get-shit-done-redux", - "version": "1.50.0-canary.0", + "name": "@opengsd/get-shit-done-redux", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "get-shit-done-redux", - "version": "1.50.0-canary.0", + "name": "@opengsd/get-shit-done-redux", + "version": "1.0.0", "license": "MIT", "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.2.84", @@ -1627,9 +1627,9 @@ } }, "node_modules/qs": { - "version": "6.15.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.1.tgz", - "integrity": "sha512-6YHEFRL9mfgcAvql/XhwTvf5jKcOiiupt2FiJxHkiX1z4j7WL8J/jRHYLluORvc1XxB5rV20KoeK00gVJamspg==", + "version": "6.15.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", + "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" diff --git a/package.json b/package.json index 56274cc3f..ef07d8950 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { - "name": "get-shit-done-redux", - "version": "1.50.0-canary.0", + "name": "@opengsd/get-shit-done-redux", + "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", @@ -44,6 +44,9 @@ "bugs": { "url": "https://github.com/open-gsd/get-shit-done-redux/issues" }, + "publishConfig": { + "access": "public" + }, "engines": { "node": ">=22.0.0" }, diff --git a/scripts/changeset/cli.cjs b/scripts/changeset/cli.cjs index 25fee6961..8d67d8f47 100755 --- a/scripts/changeset/cli.cjs +++ b/scripts/changeset/cli.cjs @@ -33,7 +33,7 @@ function parseArgs(argv) { changelog: null, output: null, repoSlug: 'open-gsd/get-shit-done-redux', - installCommand: 'npx get-shit-done-redux@latest', + installCommand: 'npx @opengsd/get-shit-done-redux@latest', json: false, }; if (argv.length === 0) return { ok: true, opts }; diff --git a/scripts/changeset/github-release-notes.cjs b/scripts/changeset/github-release-notes.cjs index 306b3c169..53988bd90 100644 --- a/scripts/changeset/github-release-notes.cjs +++ b/scripts/changeset/github-release-notes.cjs @@ -146,7 +146,7 @@ function serializeGithubReleaseNotes({ fromRef, toRef, repoSlug = 'open-gsd/get-shit-done-redux', - installCommand = 'npx get-shit-done-redux@latest', + installCommand = 'npx @opengsd/get-shit-done-redux@latest', }) { if (installCommand.includes('`')) { throw new Error('installCommand cannot contain backtick characters'); diff --git a/scripts/release-tarball-smoke.cjs b/scripts/release-tarball-smoke.cjs index 8488a534d..47cc26309 100644 --- a/scripts/release-tarball-smoke.cjs +++ b/scripts/release-tarball-smoke.cjs @@ -78,14 +78,14 @@ const SMOKE = Object.freeze({ // --------------------------------------------------------------------------- /** - * Locate the lib/node_modules/get-shit-done-redux package root inside an - * npm --prefix install directory. + * Locate the lib/node_modules/@opengsd/get-shit-done-redux package root inside + * an npm --prefix install directory. */ function pkgRoot(installPrefix) { - // POSIX: /lib/node_modules/get-shit-done-redux - // Windows: /node_modules/get-shit-done-redux - const posix = path.join(installPrefix, 'lib', 'node_modules', 'get-shit-done-redux'); - const win = path.join(installPrefix, 'node_modules', 'get-shit-done-redux'); + // POSIX: /lib/node_modules/@opengsd/get-shit-done-redux + // Windows: /node_modules/@opengsd/get-shit-done-redux + const posix = path.join(installPrefix, 'lib', 'node_modules', '@opengsd', 'get-shit-done-redux'); + const win = path.join(installPrefix, 'node_modules', '@opengsd', 'get-shit-done-redux'); return fs.existsSync(posix) ? posix : win; } diff --git a/sdk/HANDOVER-GOLDEN-PARITY.md b/sdk/HANDOVER-GOLDEN-PARITY.md index 5b81bcb75..c022ff809 100644 --- a/sdk/HANDOVER-GOLDEN-PARITY.md +++ b/sdk/HANDOVER-GOLDEN-PARITY.md @@ -30,7 +30,7 @@ Use this document at the start of a new session so work continues in context wit - `QUERY-HANDLERS.md` is maintained and current. 3. **Track D — CJS deprecation headers** (done) - - `gsd-tools.cjs` already has `@deprecated` JSDoc header (lines 3-6) pointing to `gsd-sdk query` and `@gsd-redux/sdk`. + - `gsd-tools.cjs` already has `@deprecated` JSDoc header (lines 3-6) pointing to `gsd-sdk query` and `@opengsd/gsd-sdk`. - No additional CJS file deletion in scope per #2302. 4. **CI verification** (should run before any PR) diff --git a/sdk/HANDOVER-QUERY-LAYER.md b/sdk/HANDOVER-QUERY-LAYER.md index 8563d8032..fc239cdb5 100644 --- a/sdk/HANDOVER-QUERY-LAYER.md +++ b/sdk/HANDOVER-QUERY-LAYER.md @@ -47,7 +47,7 @@ Previously `state.json` and `state.load` were easy to confuse: CJS has two diffe - `stateJson` — `sdk/src/query/state.ts`; registry key `state.json`. - `stateProjectLoad` — `sdk/src/query/state-project-load.ts`; registry key `state.load`. Uses `createRequire` to call `core.cjs` `loadConfig(projectDir)` from the same resolution paths as a normal install (bundled monorepo path, `projectDir/.claude/get-shit-done/...`, `~/.claude/get-shit-done/...`). `GSDTools.stateLoad()` and `formatRegistryRawStdout` for `--raw` no longer force a subprocess solely for this command. -- **Risk:** If `core.cjs` is absent (e.g. some `@gsd-redux/sdk`-only layouts), `state.load` throws `GSDError` — document; future option is a TS `loadConfig` port or bundling. +- **Risk:** If `core.cjs` is absent (e.g. some `@opengsd/gsd-sdk`-only layouts), `state.load` throws `GSDError` — document; future option is a TS `loadConfig` port or bundling. - **Goldens:** `read-only-parity.integration.test.ts` — one block compares `state.json` to `state json` (strip `last_updated`); another compares `state.load` to `state load` (full `toEqual`). `read-only-golden-rows.ts` `readOnlyGoldenCanonicals()` includes both `state.json` and `state.load`. --- @@ -140,7 +140,7 @@ Source: `.planning/research/decision-routing-audit.md` §3. **Tier** = priority (Strategic ordering of **parity vs decision offloading** is in **Roadmap** above.) 1. ~~**Golden test for `phase.add-batch`**~~ — Done: `sdk/src/golden/mutation-subprocess.integration.test.ts` (`phase.add-batch` JSON parity vs CJS). -2. ~~**Re-export `normalizeQueryCommand`**~~ — Done: exported from `sdk/src/query/index.ts` and `sdk/src/index.ts` (`@gsd-redux/sdk`). +2. ~~**Re-export `normalizeQueryCommand`**~~ — Done: exported from `sdk/src/query/index.ts` and `sdk/src/index.ts` (`@opengsd/gsd-sdk`). 3. **Issue #2302 follow-ups** — Runner alignment (`GSDTools` → registry where appropriate). **`configGet`** now uses `dispatchNativeJson` with canonical `config-get` (fixes subprocess argv vs real `gsd-tools.cjs`, which has no `config` + `get` top-level). Keep `graphify` / `from-gsd2` out of scope unless product reopens. 4. **Drift check** — When adding CJS commands, update `QUERY-HANDLERS.md` matrix and golden docs in the same PR. diff --git a/sdk/README.md b/sdk/README.md index 48bb72c76..f768d4b8b 100644 --- a/sdk/README.md +++ b/sdk/README.md @@ -1,17 +1,17 @@ -# @gsd-redux/sdk +# @opengsd/gsd-sdk TypeScript SDK for **Get Shit Done**: deterministic query/mutation handlers, plan execution, and event-stream telemetry so agents focus on judgment, not shell plumbing. ## Install ```bash -npm install @gsd-redux/sdk +npm install @opengsd/gsd-sdk ``` ## Quickstart — programmatic ```typescript -import { GSD, createRegistry } from '@gsd-redux/sdk'; +import { GSD, createRegistry } from '@opengsd/gsd-sdk'; const gsd = new GSD({ projectDir: process.cwd(), sessionId: 'my-run' }); const tools = gsd.createTools(); @@ -25,8 +25,8 @@ const { data } = await registry.dispatch('state.json', [], process.cwd()); From a project that depends on this package, **invoke the CLI with Node** (recommended in CI and local dev): ```bash -node ./node_modules/@gsd-redux/sdk/dist/cli.js query state.json -node ./node_modules/@gsd-redux/sdk/dist/cli.js query roadmap.analyze +node ./node_modules/@opengsd/gsd-sdk/dist/cli.js query state.json +node ./node_modules/@opengsd/gsd-sdk/dist/cli.js query roadmap.analyze ``` If no native handler is registered for a command, the CLI can transparently shell out to `get-shit-done/bin/gsd-tools.cjs` (see stderr warning), unless `GSD_QUERY_FALLBACK=off`. diff --git a/sdk/package-lock.json b/sdk/package-lock.json index 40d50066b..eb06cc245 100644 --- a/sdk/package-lock.json +++ b/sdk/package-lock.json @@ -1,12 +1,12 @@ { - "name": "@gsd-redux/sdk", - "version": "1.50.0-canary.0", + "name": "@opengsd/gsd-sdk", + "version": "1.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "@gsd-redux/sdk", - "version": "1.50.0-canary.0", + "name": "@opengsd/gsd-sdk", + "version": "1.0.0", "license": "MIT", "dependencies": { "@anthropic-ai/claude-agent-sdk": "^0.2.84", diff --git a/sdk/package.json b/sdk/package.json index efc900c07..084c51908 100644 --- a/sdk/package.json +++ b/sdk/package.json @@ -1,6 +1,6 @@ { - "name": "@gsd-redux/sdk", - "version": "1.50.0-canary.0", + "name": "@opengsd/gsd-sdk", + "version": "1.0.0", "description": "GSD SDK — programmatic interface for running GSD plans via the Agent SDK", "type": "module", "main": "dist/index.js", @@ -30,6 +30,9 @@ }, "author": "TÂCHES", "license": "MIT", + "publishConfig": { + "access": "public" + }, "engines": { "node": ">=22.0.0" }, diff --git a/sdk/src/index.ts b/sdk/src/index.ts index 16b4bb17e..adb6d3734 100644 --- a/sdk/src/index.ts +++ b/sdk/src/index.ts @@ -6,7 +6,7 @@ * * @example * ```typescript - * import { GSD } from '@gsd-redux/sdk'; + * import { GSD } from '@opengsd/gsd-sdk'; * * const gsd = new GSD({ projectDir: '/path/to/project' }); * const result = await gsd.executePlan('.planning/phases/01-auth/01-auth-01-PLAN.md'); diff --git a/sdk/src/query/QUERY-HANDLERS.md b/sdk/src/query/QUERY-HANDLERS.md index 5c5d3c0ce..726031bcb 100644 --- a/sdk/src/query/QUERY-HANDLERS.md +++ b/sdk/src/query/QUERY-HANDLERS.md @@ -35,7 +35,7 @@ CJS routing seams mirror these families with thin adapters (`state/verify/init/p ## `gsd-sdk query` routing -1. **`normalizeQueryCommand()`** (`query-command-resolution-strategy.ts`) — maps the first argv tokens to the same **command + subcommand** patterns as `gsd-tools` `runCommand()` where needed (e.g. `state json` → `state.json`, `init execute-phase 9` → `init.execute-phase` with args `['9']`, `scaffold …` → `phase.scaffold`). Re-exported from **`@gsd-redux/sdk`** and **`createRegistry`’s module** (`sdk/src/query/index.ts`) so programmatic callers can mirror CLI tokenization without importing a deep path. +1. **`normalizeQueryCommand()`** (`query-command-resolution-strategy.ts`) — maps the first argv tokens to the same **command + subcommand** patterns as `gsd-tools` `runCommand()` where needed (e.g. `state json` → `state.json`, `init execute-phase 9` → `init.execute-phase` with args `['9']`, `scaffold …` → `phase.scaffold`). Re-exported from **`@opengsd/gsd-sdk`** and **`createRegistry`’s module** (`sdk/src/query/index.ts`) so programmatic callers can mirror CLI tokenization without importing a deep path. 2. **`resolveQueryArgv()`** (`registry.ts`) — **longest-prefix match** on the normalized argv: tries joined keys `a.b.c` then `a b c` for each prefix length, longest first. Example: `state update status X` → handler `state.update` with args `[status, X]`. 3. **Dotted single token**: one token like `init.new-project` matches the registry; if the first pass finds no handler, a single dotted token is split and matching runs again. 4. **CJS fallback (CLI)**: if nothing matches a registered handler and `GSD_QUERY_FALLBACK` is not `off`/`never`/`false`/`0`, the CLI shells out to `gsd-tools.cjs` with argv derived from the normalized tokens (dotted commands are split into CJS-style segments). stderr receives a short bridge warning. Set `GSD_QUERY_FALLBACK=off` for strict mode (parity tests). CLI-only commands such as `graphify` rely on this path until native handlers exist. @@ -107,7 +107,7 @@ Handlers for `**state.signal-waiting`**, `**state.signal-resume**`, `**state.val **`state.json` vs `state.load` (different CJS commands):** - **`state.json`** / `state json` — port of **`cmdStateJson`** (`state.ts` `stateJson`): rebuilt STATE.md frontmatter JSON. Read-only golden: `read-only-parity.integration.test.ts` compares to CJS `state json` with **`last_updated`** stripped. -- **`state.load`** / `state load` — port of **`cmdStateLoad`** (`state-project-load.ts` `stateProjectLoad`): `{ config, state_raw, state_exists, roadmap_exists, config_exists }`; **`config`** comes from **`get-shit-done/bin/lib/core.cjs`** `loadConfig`, but discovery now routes through the **SDK Package Seam Module** (`sdk-package-compatibility.ts`) so install-layout probing stays behind one compatibility Adapter. Read-only golden: full `toEqual` vs `state load`. If `core.cjs` cannot be resolved, dispatch throws **`GSDError`** with the checked probe list (document for minimal `@gsd-redux/sdk`-only installs). +- **`state.load`** / `state load` — port of **`cmdStateLoad`** (`state-project-load.ts` `stateProjectLoad`): `{ config, state_raw, state_exists, roadmap_exists, config_exists }`; **`config`** comes from **`get-shit-done/bin/lib/core.cjs`** `loadConfig`, but discovery now routes through the **SDK Package Seam Module** (`sdk-package-compatibility.ts`) so install-layout probing stays behind one compatibility Adapter. Read-only golden: full `toEqual` vs `state load`. If `core.cjs` cannot be resolved, dispatch throws **`GSDError`** with the checked probe list (document for minimal `@opengsd/gsd-sdk`-only installs). `stateExtractField` in `state-document.ts` (re-exported by `helpers.ts`) uses **horizontal whitespace only** after `Field:` so YAML keys such as lowercase `progress:` in frontmatter are not mistaken for the body `Progress:` line (see `get-shit-done/bin/lib/state-document.cjs` — same rule). diff --git a/sdk/src/runtime-bridge-sync/index.ts b/sdk/src/runtime-bridge-sync/index.ts index a1ccd0454..774b512d4 100644 --- a/sdk/src/runtime-bridge-sync/index.ts +++ b/sdk/src/runtime-bridge-sync/index.ts @@ -35,7 +35,7 @@ * ## CJS consumption * * ```js - * const { executeForCjs } = require('@gsd-redux/sdk/dist/runtime-bridge-sync/index.js'); + * const { executeForCjs } = require('@opengsd/gsd-sdk/dist/runtime-bridge-sync/index.js'); * const result = executeForCjs({ registryCommand: 'generate-slug', registryArgs: ['My Phase'], ... }); * if (result.ok) console.log(result.data); // { slug: 'my-phase' } * ``` @@ -135,7 +135,7 @@ function getSyncFn(): (input: RuntimeBridgeExecuteInput) => RuntimeBridgeSyncRes * * @example * ```js - * const { executeForCjs } = require('@gsd-redux/sdk/dist/runtime-bridge-sync/index.js'); + * const { executeForCjs } = require('@opengsd/gsd-sdk/dist/runtime-bridge-sync/index.js'); * const result = executeForCjs({ * registryCommand: 'generate-slug', * registryArgs: ['My Phase'], diff --git a/sdk/src/sdk-package-compatibility.ts b/sdk/src/sdk-package-compatibility.ts index 30a19ff92..e31c41992 100644 --- a/sdk/src/sdk-package-compatibility.ts +++ b/sdk/src/sdk-package-compatibility.ts @@ -113,7 +113,7 @@ function missingLegacyCoreMessage(resolution: LegacySdkAssetResolution): string return [ 'state load: get-shit-done/bin/lib/core.cjs not found.', `Checked: ${resolution.probes.join(', ')}`, - 'Install GSD (e.g. npm i -g get-shit-done-redux) or clone with get-shit-done next to the SDK.', + 'Install GSD (e.g. npm i -g @opengsd/get-shit-done-redux) or clone with get-shit-done next to the SDK.', ].join(' '); } diff --git a/tests/bug-2334-quick-gsd-sdk-preflight.test.cjs b/tests/bug-2334-quick-gsd-sdk-preflight.test.cjs index b7d9134b9..ac873df57 100644 --- a/tests/bug-2334-quick-gsd-sdk-preflight.test.cjs +++ b/tests/bug-2334-quick-gsd-sdk-preflight.test.cjs @@ -66,10 +66,10 @@ describe('bug #2334: quick workflow gsd-sdk pre-flight check', () => { } const step2Section = content.slice(step2Start, firstSdkCall); - const hasInstallHint = step2Section.includes('get-shit-done-redux') || step2Section.includes('gsd-update') || step2Section.includes('/gsd-update'); + const hasInstallHint = step2Section.includes('@opengsd/get-shit-done-redux') || step2Section.includes('gsd-update') || step2Section.includes('/gsd-update'); assert.ok( hasInstallHint, - 'Pre-flight error must include a hint on how to install query-capable gsd-sdk (npm install -g get-shit-done-redux or /gsd-update)' + 'Pre-flight error must include a hint on how to install query-capable gsd-sdk (npm install -g @opengsd/get-shit-done-redux or /gsd-update)' ); }); }); diff --git a/tests/bug-2519-sdk-tarball-dist.test.cjs b/tests/bug-2519-sdk-tarball-dist.test.cjs index 279fbe0cc..09139010b 100644 --- a/tests/bug-2519-sdk-tarball-dist.test.cjs +++ b/tests/bug-2519-sdk-tarball-dist.test.cjs @@ -1,5 +1,5 @@ /** - * Regression test for #2519: @gsd-redux/sdk tarball shipped without dist/ + * Regression test for #2519: @opengsd/gsd-sdk tarball shipped without dist/ * * The published 0.1.0 tarball lacked a `files` whitelist including `dist/` and * a `prepublishOnly` hook to build `dist/` before publish. As a result the diff --git a/tests/bug-2636-gsd-sdk-query-silent-swallow.test.cjs b/tests/bug-2636-gsd-sdk-query-silent-swallow.test.cjs index 711635b19..716cecec9 100644 --- a/tests/bug-2636-gsd-sdk-query-silent-swallow.test.cjs +++ b/tests/bug-2636-gsd-sdk-query-silent-swallow.test.cjs @@ -2,7 +2,7 @@ * Regression guard for #2636 — `gsd-sdk query agent-skills ` calls in * workflows must NOT silently swallow failures via a bare `2>/dev/null`. * - * Root cause of #2636: when the installed npm `@gsd-redux/sdk` was stale and + * Root cause of #2636: when the installed npm `@opengsd/gsd-sdk` was stale and * the `agent-skills` handler was missing, every workflow line of the form * AGENT_SKILLS_X=$(gsd-sdk query agent-skills 2>/dev/null) * resolved to empty string, and the `agent_skills.` config was never diff --git a/tests/bug-2647-outer-tarball-sdk-dist.test.cjs b/tests/bug-2647-outer-tarball-sdk-dist.test.cjs index 1425651e4..cd1522077 100644 --- a/tests/bug-2647-outer-tarball-sdk-dist.test.cjs +++ b/tests/bug-2647-outer-tarball-sdk-dist.test.cjs @@ -8,7 +8,7 @@ * Result: the published tarball had no `sdk/dist/cli.js`. The `gsd-sdk` * bin shim in `bin/gsd-sdk.js` resolves `/sdk/dist/cli.js`, which * didn't exist, so PATH fell through to the separately installed - * `@gsd-redux/sdk@0.1.0` (predates the `query` subcommand). + * `@opengsd/gsd-sdk@0.1.0` (predates the `query` subcommand). * * Every `gsd-sdk query ` call in workflow docs thus failed on * fresh installs of 1.38.3. diff --git a/tests/bug-2649-sdk-fail-fast.test.cjs b/tests/bug-2649-sdk-fail-fast.test.cjs index e1c61f505..acc1be140 100644 --- a/tests/bug-2649-sdk-fail-fast.test.cjs +++ b/tests/bug-2649-sdk-fail-fast.test.cjs @@ -155,7 +155,7 @@ describe('installer SDK dist-missing fail-fast (#2649)', () => { assert.strictEqual(ir.reason, 'sdk_fail_fast'); assert.strictEqual(ir.context, 'npx-cache'); assert.strictEqual(ir.missing_artifact, 'sdk/dist'); - assert.strictEqual(ir.fix_command, 'npm install -g get-shit-done-redux@latest'); + assert.strictEqual(ir.fix_command, 'npm install -g @opengsd/get-shit-done-redux@latest'); assert.strictEqual(ir.attempted_nested_install, false, 'IR contract: nested-install must always be false (this is a hard invariant)'); } finally { diff --git a/tests/bug-2775-sdk-shim-path-verify.test.cjs b/tests/bug-2775-sdk-shim-path-verify.test.cjs index 55bd7c97e..f48fefeb8 100644 --- a/tests/bug-2775-sdk-shim-path-verify.test.cjs +++ b/tests/bug-2775-sdk-shim-path-verify.test.cjs @@ -6,7 +6,7 @@ /** * Regression test for bug #2775 * - * `npx get-shit-done-redux@latest --global` runs the installer, which prints + * `npx @opengsd/get-shit-done-redux@latest --global` runs the installer, which prints * `✓ GSD SDK ready` even though the secondary `gsd-sdk` bin is not on the * user's PATH. Root cause: `npx` only links the package's primary bin into * the ephemeral cache; secondary bins are not symlinked. The installer's diff --git a/tests/bug-2829-local-install-sdk-path.test.cjs b/tests/bug-2829-local-install-sdk-path.test.cjs index 63bf0da52..1cef36a25 100644 --- a/tests/bug-2829-local-install-sdk-path.test.cjs +++ b/tests/bug-2829-local-install-sdk-path.test.cjs @@ -1,7 +1,7 @@ /** * Regression test for #2829: `command not found: gsd-sdk` with local-mode install. * - * Repro: a fresh `npx get-shit-done-redux@latest` install with the runtime set + * Repro: a fresh `npx @opengsd/get-shit-done-redux@latest` install with the runtime set * to local mode left every `gsd-sdk query …` call site unable to resolve the * binary because the installer's previous behavior was to skip SDK linking * entirely for local installs (#2678 over-corrected). The published tarball diff --git a/tests/bug-2992-check-latest-version.test.cjs b/tests/bug-2992-check-latest-version.test.cjs index cbfcbb0e8..b63323cd1 100644 --- a/tests/bug-2992-check-latest-version.test.cjs +++ b/tests/bug-2992-check-latest-version.test.cjs @@ -17,8 +17,8 @@ const { checkLatestVersion, CHECK_REASON, PACKAGE_NAME } = require( // Tests use a pluggable spawn so no real npm process is invoked. describe('Bug #2992: deterministic latest-version check', () => { - test('PACKAGE_NAME is the constant get-shit-done-redux (no callers can override)', () => { - assert.equal(PACKAGE_NAME, 'get-shit-done-redux'); + 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('CHECK_REASON enum exposes the documented codes', () => { diff --git a/tests/bug-3011-sdk-path-diagnostic.test.cjs b/tests/bug-3011-sdk-path-diagnostic.test.cjs index c4b55aa25..f6c15f8a3 100644 --- a/tests/bug-3011-sdk-path-diagnostic.test.cjs +++ b/tests/bug-3011-sdk-path-diagnostic.test.cjs @@ -5,7 +5,7 @@ process.env.GSD_TEST_MODE = '1'; /** * Regression test for #3011: SDK not found. * - * Reporter (Windows / PowerShell 7) ran `npx get-shit-done-redux@latest`, + * Reporter (Windows / PowerShell 7) ran `npx @opengsd/get-shit-done-redux@latest`, * upgrade reported success, but `gsd-sdk` could not be resolved by Claude * Code, Git Bash, PowerShell, or WSL. The previous diagnostic was a * generic "not on your PATH" with no actionable info; the user couldn't @@ -137,7 +137,7 @@ describe('Bug #3011: formatSdkPathDiagnostic — fallback when shimDir is null', platform: 'win32', runDir: 'C:\\some\\path', }); - assert.ok(ir.actionLines.some(l => l.includes('npm install -g get-shit-done-redux'))); + assert.ok(ir.actionLines.some(l => l.includes('npm install -g @opengsd/get-shit-done-redux'))); }); }); diff --git a/tests/bug-3033-sdk-flag-wired.test.cjs b/tests/bug-3033-sdk-flag-wired.test.cjs index 83a923911..2ae47adcf 100644 --- a/tests/bug-3033-sdk-flag-wired.test.cjs +++ b/tests/bug-3033-sdk-flag-wired.test.cjs @@ -2,7 +2,7 @@ * Regression test for #3033: --sdk flag parsed but never used. * * `hasSdk` was set in bin/install.js but never passed to `installSdkIfNeeded`, - * so `npx get-shit-done-redux@latest --sdk` produced a misleading "✓ GSD SDK ready" + * so `npx @opengsd/get-shit-done-redux@latest --sdk` produced a misleading "✓ GSD SDK ready" * message while still silently skipping SDK deployment for local installs. * * Fix: `installSdkIfNeeded` now accepts `opts.forceSdk`. When true, the diff --git a/tests/bug-3091-sdk-package-guidance-and-fallbacks.test.cjs b/tests/bug-3091-sdk-package-guidance-and-fallbacks.test.cjs index d13ae9225..a767560b5 100644 --- a/tests/bug-3091-sdk-package-guidance-and-fallbacks.test.cjs +++ b/tests/bug-3091-sdk-package-guidance-and-fallbacks.test.cjs @@ -12,18 +12,20 @@ function read(rel) { } describe('bug #3091: sdk install guidance and agent fallbacks use query-capable CLI', () => { - test('quick workflow install hint references get-shit-done-redux (not @gsd-redux/sdk)', () => { + test('quick workflow install hint references @opengsd/get-shit-done-redux (not @opengsd/gsd-sdk)', () => { const content = read('get-shit-done/workflows/quick.md'); - // After #3668: quick.md uses local-first preflight which may reference - // get-shit-done-redux via npx or npm install -g. Either form is acceptable. - const referencesGsdRedux = content.includes('npm install -g get-shit-done-redux') || - content.includes('npx get-shit-done-redux'); - assert.ok(referencesGsdRedux, 'quick.md install hint must reference get-shit-done-redux'); - assert.ok(!content.includes('npm install -g @gsd-redux/sdk')); - assert.ok(!content.includes('npm install -g @gsd-build/sdk')); + // After #3668: quick.md uses local-first preflight which references + // @opengsd/get-shit-done-redux via npx for the --local fallback. + const referencesGsdRedux = content.includes('npm install -g @opengsd/get-shit-done-redux') || + content.includes('npx @opengsd/get-shit-done-redux'); + assert.ok(referencesGsdRedux, 'quick.md install hint must reference @opengsd/get-shit-done-redux'); + assert.ok(!content.includes('@gsd-redux/sdk')); + assert.ok(!content.includes('@gsd-build/sdk')); + assert.ok(!content.includes('npm install -g get-shit-done-redux')); + assert.ok(!content.includes('npx get-shit-done-redux@')); }); - test('agent docs no longer reference node_modules/@gsd-redux/sdk/dist/cli.js query fallback', () => { + test('agent docs no longer reference node_modules/@opengsd/gsd-sdk/dist/cli.js query fallback', () => { const files = [ 'agents/gsd-planner.md', 'agents/gsd-executor.md', @@ -31,7 +33,7 @@ describe('bug #3091: sdk install guidance and agent fallbacks use query-capable 'agents/gsd-roadmapper.md', ]; - const offenders = files.filter((f) => read(f).includes('@gsd-redux/sdk/dist/cli.js query')); - assert.deepStrictEqual(offenders, [], `stale @gsd-redux/sdk query fallback references: ${offenders.join(', ')}`); + const offenders = files.filter((f) => read(f).includes('@opengsd/gsd-sdk/dist/cli.js query')); + assert.deepStrictEqual(offenders, [], `stale @opengsd/gsd-sdk query fallback references: ${offenders.join(', ')}`); }); }); diff --git a/tests/bug-3130-update-npx-robust-invocation.test.cjs b/tests/bug-3130-update-npx-robust-invocation.test.cjs index fb3dcf5c1..90eaa8e42 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 get-shit-done-redux@latest` hits npx's local +// 1. Cache-stale: bare `npx -y @opengsd/get-shit-done-redux@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 -// `get-shit-done-redux@latest`, causing npm to error with -// "Unknown command: get-shit-done-redux@latest". +// `@opengsd/get-shit-done-redux@latest`, causing npm to error with +// "Unknown command: @opengsd/get-shit-done-redux@latest". // // The robust form is: -// npx -y --package=get-shit-done-redux@latest -- get-shit-done-redux $ARGS +// npx -y --package=@opengsd/get-shit-done-redux@latest -- get-shit-done-redux $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 get-shit-done-redux@latest` without `--package=` + // Any occurrence of `npx -y @opengsd/get-shit-done-redux@latest` without `--package=` // is the stale form that triggers the two failure modes. - const stale = (src.match(/npx -y get-shit-done-redux@latest[^\n]*/g) || []); + const stale = (src.match(/npx -y @opengsd\/get-shit-done-redux@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=get-shit-done-redux@latest -- get-shit-done-redux/g) || []); + const robust = (src.match(/npx -y --package=@opengsd\/get-shit-done-redux@latest -- get-shit-done-redux/g) || []); assert.ok( robust.length >= 3, `Expected >=3 robust npx invocations in update.md, found ${robust.length}`, diff --git a/tests/bug-3211-windows-sdk-not-found.test.cjs b/tests/bug-3211-windows-sdk-not-found.test.cjs index a91e8bf8a..27844fbc5 100644 --- a/tests/bug-3211-windows-sdk-not-found.test.cjs +++ b/tests/bug-3211-windows-sdk-not-found.test.cjs @@ -6,7 +6,7 @@ process.env.GSD_TEST_MODE = '1'; * Regression tests for bug #3211. * * Windows 11 + PowerShell 7 + Node v22.22.1, fresh - * `npx get-shit-done-redux@latest --global --claude`: + * `npx @opengsd/get-shit-done-redux@latest --global --claude`: * gsd-sdk: The term 'gsd-sdk' is not recognized * * Root causes (Windows sibling of #3231): diff --git a/tests/bug-3231-false-gsd-sdk-ready-linux.test.cjs b/tests/bug-3231-false-gsd-sdk-ready-linux.test.cjs index 9e2dda155..0bce2078b 100644 --- a/tests/bug-3231-false-gsd-sdk-ready-linux.test.cjs +++ b/tests/bug-3231-false-gsd-sdk-ready-linux.test.cjs @@ -1,7 +1,7 @@ /** * Regression tests for bug #3231. * - * `npx get-shit-done-redux@latest` prints `✓ GSD SDK ready (sdk/dist/cli.js)` on + * `npx @opengsd/get-shit-done-redux@latest` prints `✓ GSD SDK ready (sdk/dist/cli.js)` on * Linux but no persistent `gsd-sdk` shim is created. Two sub-bugs: * * 1. Transient npx PATH + null login-shell PATH → false success @@ -244,7 +244,7 @@ describe('bug #3231: stale legacy symlink to deprecated gsd-tools.cjs', modernFile, [ '#!/usr/bin/env node', - "require('/usr/local/lib/node_modules/get-shit-done-redux/bin/gsd-sdk.js');", + "require('/usr/local/lib/node_modules/@opengsd/get-shit-done-redux/bin/gsd-sdk.js');", '', ].join('\n'), ); diff --git a/tests/bug-3290-intel-updater-layout-block.test.cjs b/tests/bug-3290-intel-updater-layout-block.test.cjs index 6d003c7c6..a5bc3b87d 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 === "get-shit-done-redux") so it runs ONLY when + * repo" check (package.json name === "@opengsd/get-shit-done-redux") 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('get-shit-done-redux') || + content.includes('@opengsd/get-shit-done-redux') || 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)" == "get-shit-done-redux" ]]; then\n' + + ' if [[ "$(jq -r \'.name // ""\' package.json 2>/dev/null)" == "@opengsd/get-shit-done-redux" ]]; then\n' + ' # ... detection block ...\n' + ' fi' ); diff --git a/tests/bug-3359-stale-gsd-sdk-path-version.test.cjs b/tests/bug-3359-stale-gsd-sdk-path-version.test.cjs index d3f2492e7..5144ba897 100644 --- a/tests/bug-3359-stale-gsd-sdk-path-version.test.cjs +++ b/tests/bug-3359-stale-gsd-sdk-path-version.test.cjs @@ -1,7 +1,7 @@ /** * Regression test for bug #3359. * - * `npx get-shit-done-redux@latest` can refresh runtime files while an older + * `npx @opengsd/get-shit-done-redux@latest` can refresh runtime files while an older * global `gsd-sdk` earlier on PATH remains the executable workflows call. * The installer must not report SDK readiness when the resolved `gsd-sdk` * version differs from the package/runtime version being installed. @@ -91,7 +91,7 @@ describe('bug #3359: installer detects stale gsd-sdk earlier on PATH', `warning must include detected and installer versions. Output:\n${combined}`, ); assert.ok( - /npm install -g get-shit-done-redux@latest/.test(combined), + /npm install -g @opengsd\/get-shit-done-redux@latest/.test(combined), `warning must include global update remediation. Output:\n${combined}`, ); assert.ok( diff --git a/tests/bug-3406-stale-sdk-shadow-detect.test.cjs b/tests/bug-3406-stale-sdk-shadow-detect.test.cjs index 3dfb7b8f8..01032c00a 100644 --- a/tests/bug-3406-stale-sdk-shadow-detect.test.cjs +++ b/tests/bug-3406-stale-sdk-shadow-detect.test.cjs @@ -1,11 +1,11 @@ 'use strict'; /** - * Regression tests for #3406 — stale globally-installed `@gsd-redux/sdk@0.1.0` + * Regression tests for #3406 — stale globally-installed `@opengsd/gsd-sdk@0.1.0` * shadows the `gsd-sdk` shim that `get-shit-done-redux` installs. The standalone * 0.1.0 binary only knows `run | auto | init` (no `query` subcommand), so * every workflow that calls `gsd-sdk query ` fails until the user - * runs `npm uninstall -g @gsd-redux/sdk`. + * runs `npm uninstall -g @opengsd/gsd-sdk`. * * Maintainer decision (per triage): option 2 — detect-and-warn during * install. This test pins the pure detection helper so the install-time @@ -13,7 +13,7 @@ * * Test surface is the exported helper `detectStaleStandaloneSdk(runNpmLs)`. * `runNpmLs` is an injected executor: in production it spawns - * `npm ls -g @gsd-redux/sdk --json --depth=0`; in tests we hand it a stub + * `npm ls -g @opengsd/gsd-sdk --json --depth=0`; in tests we hand it a stub * that returns canned stdout / throws, so the test never touches the host * npm state. */ @@ -35,7 +35,7 @@ describe('#3406: detectStaleStandaloneSdk', () => { }); test('returns { stale: false } when npm ls reports the package is not installed', () => { - // `npm ls -g @gsd-redux/sdk --json --depth=0` exit code 1 with this + // `npm ls -g @opengsd/gsd-sdk --json --depth=0` exit code 1 with this // JSON shape is the standard "not present" signal. const stub = () => JSON.stringify({ name: 'lib', @@ -45,13 +45,13 @@ describe('#3406: detectStaleStandaloneSdk', () => { assert.deepStrictEqual(result, { stale: false }); }); - test('returns { stale: true, version, path? } when @gsd-redux/sdk is present', () => { + test('returns { stale: true, version, path? } when @opengsd/gsd-sdk is present', () => { const stub = () => JSON.stringify({ name: 'lib', dependencies: { - '@gsd-redux/sdk': { + '@opengsd/gsd-sdk': { version: '0.1.0', - resolved: 'file:/Users/REDACTED/.nvm/versions/node/v24.15.0/lib/node_modules/@gsd-redux/sdk', + resolved: 'file:/Users/REDACTED/.nvm/versions/node/v24.15.0/lib/node_modules/@opengsd/gsd-sdk', }, }, }); @@ -90,8 +90,8 @@ describe('#3406: detectStaleStandaloneSdk', () => { // version is an intentional install (or a future republish) and must // NOT be flagged. Without this gate, every maintainer with a local-link // or any future publish would trigger a misleading warning on install. - const stubNewer = () => JSON.stringify({ dependencies: { '@gsd-redux/sdk': { version: '1.50.0-canary.0' } } }); - const stubFuture = () => JSON.stringify({ dependencies: { '@gsd-redux/sdk': { version: '2.0.0' } } }); + const stubNewer = () => JSON.stringify({ dependencies: { '@opengsd/gsd-sdk': { version: '1.50.0-canary.0' } } }); + const stubFuture = () => JSON.stringify({ dependencies: { '@opengsd/gsd-sdk': { version: '2.0.0' } } }); assert.deepStrictEqual(detectStaleStandaloneSdk(stubNewer), { stale: false }); assert.deepStrictEqual(detectStaleStandaloneSdk(stubFuture), { stale: false }); }); @@ -100,7 +100,7 @@ describe('#3406: detectStaleStandaloneSdk', () => { describe('#3406: install-time wiring stays silent when no stale package is found', () => { // We can't easily stub npm inside a spawned install subprocess without // shelling around it, so the install-side coverage here verifies the - // negative case: when @gsd-redux/sdk is NOT installed globally (the npm + // negative case: when @opengsd/gsd-sdk is NOT installed globally (the npm // dependency tree on CI is irrelevant — we use a doctored PATH that points // npm at an empty prefix), the install run prints NO #3406 warning. The // positive case is exhaustively covered by detectStaleStandaloneSdk above. @@ -131,8 +131,8 @@ describe('#3406: install-time wiring stays silent when no stale package is found } ); assert.ok( - !stdout.includes('@gsd-redux/sdk'), - 'install output must not mention @gsd-redux/sdk when the package is absent' + !stdout.includes('@opengsd/gsd-sdk'), + 'install output must not mention @opengsd/gsd-sdk when the package is absent' ); assert.ok( !stdout.includes('#3406'), @@ -158,10 +158,10 @@ describe('#3406: formatStaleStandaloneSdkWarning', () => { test('message names the stale package, the version, and the uninstall command', () => { const out = formatStaleStandaloneSdkWarning({ stale: true, version: '0.1.0' }); - assert.ok(out.includes('@gsd-redux/sdk'), 'must name the shadowing package'); + assert.ok(out.includes('@opengsd/gsd-sdk'), 'must name the shadowing package'); assert.ok(out.includes('0.1.0'), 'must show the stale version'); assert.ok( - out.includes('npm uninstall -g @gsd-redux/sdk'), + out.includes('npm uninstall -g @opengsd/gsd-sdk'), 'must include the remediation command verbatim' ); assert.ok(out.includes('#3406'), 'must reference the issue for traceability'); diff --git a/tests/bug-3562-codex-install-skill-surface.test.cjs b/tests/bug-3562-codex-install-skill-surface.test.cjs index ba9e19ee5..b4e373e1f 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 get-shit-done-redux + * workflows on disk and no $gsd-* entrypoints after `npx @opengsd/get-shit-done-redux * --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 b33aebe6d..87b26300b 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 get-shit-done-redux@latest --codex` + * Regression test for #3610: fresh `npx @opengsd/get-shit-done-redux@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/bugs-1656-1657.test.cjs b/tests/bugs-1656-1657.test.cjs index 8297f76b5..f3da5b3ac 100644 --- a/tests/bugs-1656-1657.test.cjs +++ b/tests/bugs-1656-1657.test.cjs @@ -50,7 +50,7 @@ describe('#1656: community .sh hooks must be present in hooks/dist', () => { // ─── #1657 ─────────────────────────────────────────────────────────────────── // // Historical context: #1657 originally guarded against a broken `promptSdk()` -// flow that shipped when `@gsd-redux/sdk` did not yet exist on npm. The +// flow that shipped when `@opengsd/gsd-sdk` did not yet exist on npm. The // package was published at v0.1.0 and is now a hard runtime requirement for // every /gsd-* command (they all shell out to `gsd-sdk query …`). // diff --git a/tests/changeset-github-release-notes.test.cjs b/tests/changeset-github-release-notes.test.cjs index c8ff338b7..25c766ef1 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 get-shit-done-redux@latest', + installCommand: 'npx @opengsd/get-shit-done-redux@latest', }); assert.equal(fs.readFileSync(output, 'utf8'), generated.body); }); diff --git a/tests/cjs-sdk-bridge-integration.test.cjs b/tests/cjs-sdk-bridge-integration.test.cjs index 8fbeb39af..ad282edb5 100644 --- a/tests/cjs-sdk-bridge-integration.test.cjs +++ b/tests/cjs-sdk-bridge-integration.test.cjs @@ -4,7 +4,7 @@ * Integration test for `get-shit-done/bin/lib/cjs-sdk-bridge.cjs` — locks the * load-success invariant that Phase 5/6 silently violated before this PR. * - * Original bug: the bridge used `require('@gsd-redux/sdk')` to load the + * Original bug: the bridge used `require('@opengsd/gsd-sdk')` to load the * runtime-bridge module. That package name is not resolvable from the root * `node_modules` (the SDK lives at `./sdk/` as a sibling, not a dependency), * and even if it were, the public entry didn't expose `executeForCjs` or diff --git a/tests/cline-install.test.cjs b/tests/cline-install.test.cjs index 8c64adfc0..472b77d47 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 get-shit-done-redux` + * completely absent from bin/install.js. Running `npx @opengsd/get-shit-done-redux` * did not show Cline as an option in the interactive menu. * * Fixed: Cline is now a first-class runtime that: diff --git a/tests/docs-parity-live-registry.test.cjs b/tests/docs-parity-live-registry.test.cjs index 5b97ae8af..6dad3a829 100644 --- a/tests/docs-parity-live-registry.test.cjs +++ b/tests/docs-parity-live-registry.test.cjs @@ -128,6 +128,12 @@ const INTERNAL_COMPONENT_SLUGS = new Set([ // the URL path. Not a user-typable slash command in this product. 'opencode', + // gsd-sdk — the @opengsd/gsd-sdk npm package and `gsd-sdk query` CLI binary. + // Docs reference it as a package name (e.g. `@opengsd/gsd-sdk`) and CLI tool + // (e.g. `gsd-sdk query init phase-op 12`). The regex captures "/gsd-sdk" from + // the npm scope path separator in `@opengsd/gsd-sdk`. Not a user-typable slash command. + 'sdk', + // Smoke-test directory path — locale docs reference "/tmp/gsd-smoke-$(date +%s)" // as a temporary directory path in bash code-block examples. The regex captures // "/gsd-smoke-" from the filesystem path. Not a slash command. diff --git a/tests/release-tarball-smoke.install.test.cjs b/tests/release-tarball-smoke.install.test.cjs index b3d309101..baee6124f 100644 --- a/tests/release-tarball-smoke.install.test.cjs +++ b/tests/release-tarball-smoke.install.test.cjs @@ -32,9 +32,16 @@ describe('release-tarball-smoke', () => { installPrefix = createTempDir('gsd-smoke-prefix-'); fixtureDir = createTempDir('gsd-smoke-fixture-'); + // npm pack + npm install -g on a large tarball (1499 files, ~10 MB) can take + // 3–6 minutes on slow Docker hosts (cold disk, constrained CPU). The runNpm + // default timeout of 180 s is sufficient on fast machines but insufficient on + // cartographer-class hosts. 600 s (10 min) gives a safe ceiling without + // masking genuine hangs. + const SLOW_HOST_TIMEOUT = 600_000; + const packOutput = runNpm( ['pack', '--pack-destination', packDir], - { cwd: path.join(__dirname, '..') }, + { cwd: path.join(__dirname, '..'), timeout: SLOW_HOST_TIMEOUT }, ); // npm pack prints the filename as the last line of stdout. @@ -48,7 +55,7 @@ describe('release-tarball-smoke', () => { } // Install once into installPrefix. All tests share this install. - runNpm(['install', '-g', '--prefix', installPrefix, tarballPath]); + runNpm(['install', '-g', '--prefix', installPrefix, tarballPath], { timeout: SLOW_HOST_TIMEOUT }); }); after(() => {