chore(npm): rebrand packages to @opengsd scope (#127)
* chore(npm): rebrand packages to @opengsd scope Rename: - get-shit-done-redux → @opengsd/get-shit-done-redux - @gsd-redux/sdk → @opengsd/gsd-sdk Add publishConfig.access=public for first-time scoped publish. CLI binary names (get-shit-done-redux, gsd-sdk, gsd-tools) unchanged. Sweeps install commands, npx invocations, CI publish/version-check workflows, tests, docs, READMEs (all translations), and the PACKAGE_NAME constant in check-latest-version. Bumps qs 6.15.1 → 6.15.2 to clear a moderate advisory surfaced by the audit-clean test (GHSA-q8mj-m7cp-5q26). Closes #126 * chore: pin 2.0.0 release + remove canary workflow - Bump both packages 1.50.0-canary.0 → 2.0.0 for first @opengsd publish - Remove .github/workflows/canary.yml and canary dist-tag handling in release.yml / release-sdk.yml - Drop canary section from VERSIONING.md Refs #126 * chore: address review findings + harden tarball-smoke timeout - .changeset/opengsd-org-rename.md: match project's custom parse.cjs frontmatter (type: Changed / pr: 127); the scoped @changesets/cli keys were silently rejected. - CONTEXT.md: drop two canary-stream policy lines and a dangling DEFECT.CANARY-VERSION-LEAK.cross-ref now that canary.yml is gone. - tests/release-tarball-smoke.install.test.cjs: pass timeout: 600_000 for npm pack + global install; the 3-minute runNpm default was timing out on slower Docker hosts (cartographer). Refs #126 * fix(sdk): add missing type/runtime devDependencies for build prepublishOnly invokes tsc which couldn't resolve @types/node, @types/ws, or synckit. They had been hoisted from root but were not declared in sdk/'s own package.json — first publish from a clean SDK tree failed. Refs #126 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * fix(ci): use npm pack stdout instead of glob to find tarball `npm pack --silent` for a scoped package (@opengsd/get-shit-done-redux) produces `opengsd-get-shit-done-redux-*.tgz`, not `get-shit-done-redux-*.tgz`. Capture the filename from stdout instead of a hardcoded glob so the step works regardless of package name format. Fixes smoke (ubuntu-latest, 22, false) CI failure. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> * ci: treat workflow-file changes as test-skip eligible `.github/workflows/install-smoke.yml` (and other workflow files) were in neither `test.yml` paths nor `test-skip.yml` paths-ignore, so neither workflow ran on a workflow-only commit — leaving the required test-skip check perpetually missing. Refs #126 * chore: reset version to 1.0.0 for first @opengsd publish Nothing has been published yet under the @opengsd scope, so the inaugural release uses 1.0.0 rather than 2.0.0. The "major bump" in the changeset reflects the breaking install-command change for users migrating from the prior unscoped `get-shit-done-redux`, not a numeric continuation from a 1.x line under the new identity. Refs #126 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com> --------- Co-authored-by: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
5
.changeset/opengsd-org-rename.md
Normal file
5
.changeset/opengsd-org-rename.md
Normal file
@@ -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`.
|
||||
10
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
10
.github/ISSUE_TEMPLATE/bug_report.yml
vendored
@@ -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
|
||||
|
||||
157
.github/workflows/canary.yml
vendored
157
.github/workflows/canary.yml
vendored
@@ -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
|
||||
4
.github/workflows/install-smoke.yml
vendored
4
.github/workflows/install-smoke.yml
vendored
@@ -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"
|
||||
|
||||
|
||||
32
.github/workflows/release-sdk.yml
vendored
32
.github/workflows/release-sdk.yml
vendored
@@ -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-<version>.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-<version>.tgz in the cwd
|
||||
TARBALL="open-gsd-sdk-${VERSION}.tgz"
|
||||
# npm pack emits opengsd-gsd-sdk-<version>.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"
|
||||
|
||||
32
.github/workflows/release.yml
vendored
32
.github/workflows/release.yml
vendored
@@ -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
|
||||
|
||||
3
.github/workflows/test-skip.yml
vendored
3
.github/workflows/test-skip.yml
vendored
@@ -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 }}
|
||||
|
||||
3
.github/workflows/test.yml
vendored
3
.github/workflows/test.yml
vendored
@@ -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:
|
||||
|
||||
16
CONTEXT.md
16
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/<prev>...<this>`
|
||||
`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### <subgroup>\n- **<bold change>** — <explanation>. (#<PR>)\n\n---\n\nInstall/upgrade: \`npx get-shit-done-redux@latest\`\n\n**Full Changelog**: <compare-url>`
|
||||
`RELEASE-NOTES.TEMPLATE.rc=<one-paragraph intro>\n\n## Added\n### <subgroup>\n- **<change>** — <explanation>. (#<PR>)\n\n## Changed\n### Architecture\n- **<refactor>** — <user-visible benefit>. (#<PR>)\n\n## Fixed\n### <subgroup>\n- **<fix>** — <explanation>. (#<PR>)\n\n## Documentation\n- **<docs change>** — <reason>. (#<PR>)\n\n---\n\nThis is a release candidate. Install for testing:\n\`\`\`bash\nnpx get-shit-done-redux@next\n\`\`\`\n\n**Full Changelog**: <compare-url>`
|
||||
`RELEASE-NOTES.TEMPLATE.hotfix=## Fixed\n\n### <subgroup>\n- **<bold change>** — <explanation>. (#<PR>)\n\n---\n\nInstall/upgrade: \`npx @opengsd/get-shit-done-redux@latest\`\n\n**Full Changelog**: <compare-url>`
|
||||
`RELEASE-NOTES.TEMPLATE.rc=<one-paragraph intro>\n\n## Added\n### <subgroup>\n- **<change>** — <explanation>. (#<PR>)\n\n## Changed\n### Architecture\n- **<refactor>** — <user-visible benefit>. (#<PR>)\n\n## Fixed\n### <subgroup>\n- **<fix>** — <explanation>. (#<PR>)\n\n## Documentation\n- **<docs change>** — <reason>. (#<PR>)\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**: <compare-url>`
|
||||
|
||||
`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.<N> 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 <pkg> 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/<id>.output stays 0 bytes for >5 min after launch; ps shows the test still alive; ssh -o ConnectTimeout=5 <probed-host> true now times out`
|
||||
|
||||
@@ -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:<cmd>` (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
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
|
||||
**コンテキストロット(Claudeがコンテキストウィンドウを消費するにつれ品質が劣化する現象)を解決します。**
|
||||
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
|
||||
[](https://discord.gg/mYgfVNfA2r)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux)
|
||||
@@ -20,7 +20,7 @@
|
||||
<br>
|
||||
|
||||
```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>` で各外部レビュー 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
|
||||
```
|
||||
|
||||
<details>
|
||||
@@ -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` でネイティブサポートされています。
|
||||
|
||||
以下のコミュニティポートがマルチランタイムサポートの先駆けとなりました:
|
||||
|
||||
|
||||
@@ -10,8 +10,8 @@
|
||||
|
||||
**컨텍스트 rot를 해결합니다 — Claude의 컨텍스트 창이 채워질수록 품질이 저하되는 문제.**
|
||||
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
|
||||
[](https://discord.gg/mYgfVNfA2r)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux)
|
||||
@@ -20,7 +20,7 @@
|
||||
<br>
|
||||
|
||||
```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>`로 각 외부 리뷰 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
|
||||
```
|
||||
|
||||
<details>
|
||||
@@ -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`를 통해 기본 지원됩니다.
|
||||
|
||||
이 커뮤니티 포트들이 멀티 런타임 지원의 선구자였습니다:
|
||||
|
||||
|
||||
18
README.md
18
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.**
|
||||
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
|
||||
[](https://discord.gg/mYgfVNfA2r)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux)
|
||||
@@ -48,7 +48,7 @@
|
||||
<br>
|
||||
|
||||
```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)**.
|
||||
|
||||
104
README.pt-BR.md
104
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.**
|
||||
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
|
||||
[](https://discord.gg/mYgfVNfA2r)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux)
|
||||
@@ -20,7 +20,7 @@
|
||||
<br>
|
||||
|
||||
```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.<cli>` 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
|
||||
```
|
||||
|
||||
<details>
|
||||
@@ -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 |
|
||||
|---------|------------|-----------|
|
||||
|
||||
110
README.zh-CN.md
110
README.zh-CN.md
@@ -10,8 +10,8 @@
|
||||
|
||||
**它解决的是 context rot:随着 Claude 的上下文窗口被填满,输出质量逐步劣化的问题。**
|
||||
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux/actions/workflows/test.yml)
|
||||
[](https://discord.gg/mYgfVNfA2r)
|
||||
[](https://github.com/open-gsd/get-shit-done-redux)
|
||||
@@ -20,7 +20,7 @@
|
||||
<br>
|
||||
|
||||
```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>` 让每个外部评审 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
|
||||
```
|
||||
|
||||
<details>
|
||||
@@ -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` 获得原生支持。
|
||||
|
||||
这些社区移植版本曾率先探索多运行时支持:
|
||||
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
@@ -38,7 +38,7 @@
|
||||
<!-- Prompt line -->
|
||||
<text class="text prompt" font-size="15" y="0">~</text>
|
||||
<text class="text dim" font-size="15" x="16" y="0">$</text>
|
||||
<text class="text command" font-size="15" x="36" y="0">npx get-shit-done-redux</text>
|
||||
<text class="text command" font-size="15" x="36" y="0">npx @opengsd/get-shit-done-redux</text>
|
||||
|
||||
<!-- Banner -->
|
||||
<text class="text cyan" font-size="14" y="48" xml:space="preserve"> ██████╗ ███████╗██████╗</text>
|
||||
|
||||
|
Before Width: | Height: | Size: 3.5 KiB After Width: | Height: | Size: 3.5 KiB |
@@ -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';
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -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.<tier>`** — 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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
```
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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`.
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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**
|
||||
|
||||
|
||||
@@ -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 インストールを拡張します。
|
||||
|
||||
|
||||
@@ -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`)
|
||||
|
||||
@@ -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 설치를 확장합니다.
|
||||
|
||||
|
||||
@@ -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`)
|
||||
|
||||
@@ -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
|
||||
|
||||
|
||||
@@ -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:<module>` per the existing precedent.
|
||||
|
||||
### Risks
|
||||
|
||||
@@ -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`).
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -6,8 +6,8 @@
|
||||
|
||||
**解决上下文衰减 —— 即 Claude 填充上下文窗口时发生的质量退化问题。**
|
||||
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://www.npmjs.com/package/@opengsd/get-shit-done-redux)
|
||||
[](https://github.com/GSD-redux/get-shit-done-redux/actions/workflows/test.yml)
|
||||
[](https://discord.gg/mYgfVNfA2r)
|
||||
[](https://x.com/gsd_foundation)
|
||||
@@ -18,7 +18,7 @@
|
||||
<br>
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
<details>
|
||||
@@ -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` 原生支持。
|
||||
|
||||
这些社区移植开创了多运行时支持:
|
||||
|
||||
|
||||
@@ -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',
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -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 */ }
|
||||
|
||||
@@ -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
|
||||
```
|
||||
</reference>
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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.
|
||||
```
|
||||
|
||||
@@ -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.
|
||||
```
|
||||
|
||||
@@ -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")
|
||||
|
||||
@@ -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.
|
||||
|
||||
14
package-lock.json
generated
14
package-lock.json
generated
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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 };
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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: <prefix>/lib/node_modules/get-shit-done-redux
|
||||
// Windows: <prefix>/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: <prefix>/lib/node_modules/@opengsd/get-shit-done-redux
|
||||
// Windows: <prefix>/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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -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.
|
||||
|
||||
|
||||
@@ -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`.
|
||||
|
||||
8
sdk/package-lock.json
generated
8
sdk/package-lock.json
generated
@@ -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",
|
||||
|
||||
@@ -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"
|
||||
},
|
||||
|
||||
@@ -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');
|
||||
|
||||
@@ -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).
|
||||
|
||||
|
||||
@@ -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'],
|
||||
|
||||
@@ -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(' ');
|
||||
}
|
||||
|
||||
|
||||
@@ -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)'
|
||||
);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
* Regression guard for #2636 — `gsd-sdk query agent-skills <slug>` 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 <slug> 2>/dev/null)
|
||||
* resolved to empty string, and the `agent_skills.<slug>` config was never
|
||||
|
||||
@@ -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 `<pkg>/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 <noun>` call in workflow docs thus failed on
|
||||
* fresh installs of 1.38.3.
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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', () => {
|
||||
|
||||
@@ -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')));
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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(', ')}`);
|
||||
});
|
||||
});
|
||||
|
||||
@@ -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}`,
|
||||
|
||||
@@ -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):
|
||||
|
||||
@@ -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'),
|
||||
);
|
||||
|
||||
@@ -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'
|
||||
);
|
||||
|
||||
@@ -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(
|
||||
|
||||
@@ -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 <command>` 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');
|
||||
|
||||
@@ -11,7 +11,7 @@ process.env.GSD_TEST_MODE = '1';
|
||||
* commands from skills/<name>/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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 …`).
|
||||
//
|
||||
|
||||
@@ -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);
|
||||
});
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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(() => {
|
||||
|
||||
Reference in New Issue
Block a user