gsd-remix 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +939 -0
- package/README.zh-CN.md +876 -0
- package/agents/gsd-advisor-researcher.md +127 -0
- package/agents/gsd-ai-researcher.md +133 -0
- package/agents/gsd-assumptions-analyzer.md +105 -0
- package/agents/gsd-code-fixer.md +517 -0
- package/agents/gsd-code-reviewer.md +371 -0
- package/agents/gsd-codebase-mapper.md +781 -0
- package/agents/gsd-debug-session-manager.md +314 -0
- package/agents/gsd-debugger.md +1452 -0
- package/agents/gsd-doc-classifier.md +168 -0
- package/agents/gsd-doc-synthesizer.md +204 -0
- package/agents/gsd-doc-verifier.md +217 -0
- package/agents/gsd-doc-writer.md +615 -0
- package/agents/gsd-domain-researcher.md +153 -0
- package/agents/gsd-eval-auditor.md +191 -0
- package/agents/gsd-eval-planner.md +154 -0
- package/agents/gsd-executor.md +603 -0
- package/agents/gsd-framework-selector.md +160 -0
- package/agents/gsd-integration-checker.md +470 -0
- package/agents/gsd-intel-updater.md +334 -0
- package/agents/gsd-nyquist-auditor.md +203 -0
- package/agents/gsd-pattern-mapper.md +335 -0
- package/agents/gsd-phase-researcher.md +841 -0
- package/agents/gsd-plan-checker.md +978 -0
- package/agents/gsd-planner.md +1251 -0
- package/agents/gsd-project-researcher.md +677 -0
- package/agents/gsd-research-synthesizer.md +247 -0
- package/agents/gsd-roadmapper.md +688 -0
- package/agents/gsd-security-auditor.md +155 -0
- package/agents/gsd-ui-auditor.md +495 -0
- package/agents/gsd-ui-checker.md +309 -0
- package/agents/gsd-ui-researcher.md +380 -0
- package/agents/gsd-user-profiler.md +171 -0
- package/agents/gsd-verifier.md +830 -0
- package/bin/install.js +7062 -0
- package/commands/gsd/add-backlog.md +79 -0
- package/commands/gsd/add-phase.md +43 -0
- package/commands/gsd/add-tests.md +41 -0
- package/commands/gsd/add-todo.md +47 -0
- package/commands/gsd/ai-integration-phase.md +36 -0
- package/commands/gsd/analyze-dependencies.md +34 -0
- package/commands/gsd/audit-fix.md +33 -0
- package/commands/gsd/audit-milestone.md +36 -0
- package/commands/gsd/audit-uat.md +24 -0
- package/commands/gsd/autonomous.md +46 -0
- package/commands/gsd/check-todos.md +45 -0
- package/commands/gsd/cleanup.md +23 -0
- package/commands/gsd/code-review-fix.md +52 -0
- package/commands/gsd/code-review.md +55 -0
- package/commands/gsd/complete-milestone.md +136 -0
- package/commands/gsd/debug.md +263 -0
- package/commands/gsd/discuss-phase.md +69 -0
- package/commands/gsd/do.md +30 -0
- package/commands/gsd/docs-update.md +48 -0
- package/commands/gsd/eval-review.md +32 -0
- package/commands/gsd/execute-phase.md +63 -0
- package/commands/gsd/explore.md +27 -0
- package/commands/gsd/extract_learnings.md +22 -0
- package/commands/gsd/fast.md +30 -0
- package/commands/gsd/forensics.md +56 -0
- package/commands/gsd/from-gsd2.md +47 -0
- package/commands/gsd/graphify.md +201 -0
- package/commands/gsd/health.md +22 -0
- package/commands/gsd/help.md +24 -0
- package/commands/gsd/import.md +37 -0
- package/commands/gsd/inbox.md +38 -0
- package/commands/gsd/ingest-docs.md +42 -0
- package/commands/gsd/insert-phase.md +32 -0
- package/commands/gsd/intel.md +179 -0
- package/commands/gsd/join-discord.md +19 -0
- package/commands/gsd/list-phase-assumptions.md +46 -0
- package/commands/gsd/list-workspaces.md +19 -0
- package/commands/gsd/manager.md +40 -0
- package/commands/gsd/map-codebase.md +71 -0
- package/commands/gsd/milestone-summary.md +51 -0
- package/commands/gsd/new-milestone.md +44 -0
- package/commands/gsd/new-project.md +46 -0
- package/commands/gsd/new-workspace.md +44 -0
- package/commands/gsd/next.md +28 -0
- package/commands/gsd/note.md +34 -0
- package/commands/gsd/pause-work.md +38 -0
- package/commands/gsd/plan-milestone-gaps.md +34 -0
- package/commands/gsd/plan-phase.md +52 -0
- package/commands/gsd/plan-review-convergence.md +52 -0
- package/commands/gsd/plant-seed.md +28 -0
- package/commands/gsd/pr-branch.md +25 -0
- package/commands/gsd/profile-user.md +46 -0
- package/commands/gsd/progress.md +25 -0
- package/commands/gsd/quick.md +173 -0
- package/commands/gsd/reapply-patches.md +331 -0
- package/commands/gsd/remove-phase.md +31 -0
- package/commands/gsd/remove-workspace.md +26 -0
- package/commands/gsd/research-phase.md +195 -0
- package/commands/gsd/resume-work.md +40 -0
- package/commands/gsd/review-backlog.md +62 -0
- package/commands/gsd/review.md +40 -0
- package/commands/gsd/scan.md +26 -0
- package/commands/gsd/secure-phase.md +35 -0
- package/commands/gsd/session-report.md +19 -0
- package/commands/gsd/set-profile.md +12 -0
- package/commands/gsd/settings.md +36 -0
- package/commands/gsd/ship.md +23 -0
- package/commands/gsd/sketch-wrap-up.md +31 -0
- package/commands/gsd/sketch.md +49 -0
- package/commands/gsd/spec-phase.md +62 -0
- package/commands/gsd/spike-wrap-up.md +31 -0
- package/commands/gsd/spike.md +46 -0
- package/commands/gsd/stats.md +18 -0
- package/commands/gsd/sync-skills.md +19 -0
- package/commands/gsd/thread.md +227 -0
- package/commands/gsd/ui-phase.md +34 -0
- package/commands/gsd/ui-review.md +32 -0
- package/commands/gsd/ultraplan-phase.md +33 -0
- package/commands/gsd/undo.md +34 -0
- package/commands/gsd/update.md +37 -0
- package/commands/gsd/validate-phase.md +35 -0
- package/commands/gsd/verify-work.md +38 -0
- package/commands/gsd/workstreams.md +69 -0
- package/get-shit-done/bin/gsd-tools.cjs +1263 -0
- package/get-shit-done/bin/lib/artifacts.cjs +52 -0
- package/get-shit-done/bin/lib/audit.cjs +757 -0
- package/get-shit-done/bin/lib/commands.cjs +1023 -0
- package/get-shit-done/bin/lib/config-schema.cjs +79 -0
- package/get-shit-done/bin/lib/config.cjs +463 -0
- package/get-shit-done/bin/lib/core.cjs +1794 -0
- package/get-shit-done/bin/lib/docs.cjs +267 -0
- package/get-shit-done/bin/lib/frontmatter.cjs +379 -0
- package/get-shit-done/bin/lib/graphify.cjs +494 -0
- package/get-shit-done/bin/lib/gsd2-import.cjs +511 -0
- package/get-shit-done/bin/lib/init.cjs +1878 -0
- package/get-shit-done/bin/lib/intel.cjs +639 -0
- package/get-shit-done/bin/lib/learnings.cjs +378 -0
- package/get-shit-done/bin/lib/milestone.cjs +283 -0
- package/get-shit-done/bin/lib/model-profiles.cjs +71 -0
- package/get-shit-done/bin/lib/phase.cjs +1058 -0
- package/get-shit-done/bin/lib/profile-output.cjs +1080 -0
- package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
- package/get-shit-done/bin/lib/roadmap.cjs +523 -0
- package/get-shit-done/bin/lib/schema-detect.cjs +238 -0
- package/get-shit-done/bin/lib/security.cjs +504 -0
- package/get-shit-done/bin/lib/state.cjs +1649 -0
- package/get-shit-done/bin/lib/template.cjs +226 -0
- package/get-shit-done/bin/lib/uat.cjs +288 -0
- package/get-shit-done/bin/lib/verify.cjs +1184 -0
- package/get-shit-done/bin/lib/workstream.cjs +495 -0
- package/get-shit-done/bin/repair-sdk.cjs +177 -0
- package/get-shit-done/contexts/dev.md +21 -0
- package/get-shit-done/contexts/research.md +22 -0
- package/get-shit-done/contexts/review.md +22 -0
- package/get-shit-done/references/agent-contracts.md +79 -0
- package/get-shit-done/references/ai-evals.md +156 -0
- package/get-shit-done/references/ai-frameworks.md +186 -0
- package/get-shit-done/references/artifact-types.md +131 -0
- package/get-shit-done/references/autonomous-smart-discuss.md +277 -0
- package/get-shit-done/references/checkpoints.md +808 -0
- package/get-shit-done/references/common-bug-patterns.md +114 -0
- package/get-shit-done/references/context-budget.md +49 -0
- package/get-shit-done/references/continuation-format.md +253 -0
- package/get-shit-done/references/debugger-philosophy.md +76 -0
- package/get-shit-done/references/decimal-phase-calculation.md +64 -0
- package/get-shit-done/references/doc-conflict-engine.md +91 -0
- package/get-shit-done/references/domain-probes.md +125 -0
- package/get-shit-done/references/executor-examples.md +110 -0
- package/get-shit-done/references/few-shot-examples/plan-checker.md +73 -0
- package/get-shit-done/references/few-shot-examples/verifier.md +109 -0
- package/get-shit-done/references/gate-prompts.md +100 -0
- package/get-shit-done/references/gates.md +70 -0
- package/get-shit-done/references/git-integration.md +295 -0
- package/get-shit-done/references/git-planning-commit.md +40 -0
- package/get-shit-done/references/ios-scaffold.md +123 -0
- package/get-shit-done/references/mandatory-initial-read.md +2 -0
- package/get-shit-done/references/model-profile-resolution.md +38 -0
- package/get-shit-done/references/model-profiles.md +145 -0
- package/get-shit-done/references/phase-argument-parsing.md +61 -0
- package/get-shit-done/references/planner-antipatterns.md +89 -0
- package/get-shit-done/references/planner-gap-closure.md +62 -0
- package/get-shit-done/references/planner-reviews.md +39 -0
- package/get-shit-done/references/planner-revision.md +87 -0
- package/get-shit-done/references/planner-source-audit.md +73 -0
- package/get-shit-done/references/planning-config.md +460 -0
- package/get-shit-done/references/project-skills-discovery.md +19 -0
- package/get-shit-done/references/questioning.md +162 -0
- package/get-shit-done/references/revision-loop.md +97 -0
- package/get-shit-done/references/sketch-interactivity.md +41 -0
- package/get-shit-done/references/sketch-theme-system.md +94 -0
- package/get-shit-done/references/sketch-tooling.md +45 -0
- package/get-shit-done/references/sketch-variant-patterns.md +81 -0
- package/get-shit-done/references/tdd.md +330 -0
- package/get-shit-done/references/thinking-models-debug.md +44 -0
- package/get-shit-done/references/thinking-models-execution.md +50 -0
- package/get-shit-done/references/thinking-models-planning.md +62 -0
- package/get-shit-done/references/thinking-models-research.md +50 -0
- package/get-shit-done/references/thinking-models-verification.md +55 -0
- package/get-shit-done/references/thinking-partner.md +96 -0
- package/get-shit-done/references/ui-brand.md +160 -0
- package/get-shit-done/references/universal-anti-patterns.md +63 -0
- package/get-shit-done/references/user-profiling.md +681 -0
- package/get-shit-done/references/verification-overrides.md +227 -0
- package/get-shit-done/references/verification-patterns.md +612 -0
- package/get-shit-done/references/workstream-flag.md +111 -0
- package/get-shit-done/templates/AI-SPEC.md +246 -0
- package/get-shit-done/templates/DEBUG.md +169 -0
- package/get-shit-done/templates/README.md +76 -0
- package/get-shit-done/templates/SECURITY.md +61 -0
- package/get-shit-done/templates/UAT.md +265 -0
- package/get-shit-done/templates/UI-SPEC.md +100 -0
- package/get-shit-done/templates/VALIDATION.md +76 -0
- package/get-shit-done/templates/claude-md.md +145 -0
- package/get-shit-done/templates/codebase/architecture.md +255 -0
- package/get-shit-done/templates/codebase/concerns.md +310 -0
- package/get-shit-done/templates/codebase/conventions.md +307 -0
- package/get-shit-done/templates/codebase/integrations.md +280 -0
- package/get-shit-done/templates/codebase/stack.md +186 -0
- package/get-shit-done/templates/codebase/structure.md +285 -0
- package/get-shit-done/templates/codebase/testing.md +480 -0
- package/get-shit-done/templates/config.json +56 -0
- package/get-shit-done/templates/context.md +352 -0
- package/get-shit-done/templates/continue-here.md +78 -0
- package/get-shit-done/templates/copilot-instructions.md +7 -0
- package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
- package/get-shit-done/templates/dev-preferences.md +21 -0
- package/get-shit-done/templates/discovery.md +146 -0
- package/get-shit-done/templates/discussion-log.md +63 -0
- package/get-shit-done/templates/milestone-archive.md +123 -0
- package/get-shit-done/templates/milestone.md +115 -0
- package/get-shit-done/templates/phase-prompt.md +610 -0
- package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
- package/get-shit-done/templates/project.md +186 -0
- package/get-shit-done/templates/requirements.md +231 -0
- package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
- package/get-shit-done/templates/research-project/FEATURES.md +147 -0
- package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
- package/get-shit-done/templates/research-project/STACK.md +120 -0
- package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
- package/get-shit-done/templates/research.md +592 -0
- package/get-shit-done/templates/retrospective.md +54 -0
- package/get-shit-done/templates/roadmap.md +202 -0
- package/get-shit-done/templates/spec.md +307 -0
- package/get-shit-done/templates/state.md +184 -0
- package/get-shit-done/templates/summary-complex.md +59 -0
- package/get-shit-done/templates/summary-minimal.md +41 -0
- package/get-shit-done/templates/summary-standard.md +48 -0
- package/get-shit-done/templates/summary.md +248 -0
- package/get-shit-done/templates/user-profile.md +146 -0
- package/get-shit-done/templates/user-setup.md +311 -0
- package/get-shit-done/templates/verification-report.md +322 -0
- package/get-shit-done/workflows/add-phase.md +112 -0
- package/get-shit-done/workflows/add-tests.md +354 -0
- package/get-shit-done/workflows/add-todo.md +160 -0
- package/get-shit-done/workflows/ai-integration-phase.md +284 -0
- package/get-shit-done/workflows/analyze-dependencies.md +96 -0
- package/get-shit-done/workflows/audit-fix.md +175 -0
- package/get-shit-done/workflows/audit-milestone.md +340 -0
- package/get-shit-done/workflows/audit-uat.md +109 -0
- package/get-shit-done/workflows/autonomous.md +789 -0
- package/get-shit-done/workflows/check-todos.md +179 -0
- package/get-shit-done/workflows/cleanup.md +154 -0
- package/get-shit-done/workflows/code-review-fix.md +497 -0
- package/get-shit-done/workflows/code-review.md +515 -0
- package/get-shit-done/workflows/complete-milestone.md +847 -0
- package/get-shit-done/workflows/diagnose-issues.md +238 -0
- package/get-shit-done/workflows/discovery-phase.md +291 -0
- package/get-shit-done/workflows/discuss-phase-assumptions.md +670 -0
- package/get-shit-done/workflows/discuss-phase-power.md +308 -0
- package/get-shit-done/workflows/discuss-phase.md +1378 -0
- package/get-shit-done/workflows/do.md +110 -0
- package/get-shit-done/workflows/docs-update.md +1155 -0
- package/get-shit-done/workflows/eval-review.md +155 -0
- package/get-shit-done/workflows/execute-phase.md +1677 -0
- package/get-shit-done/workflows/execute-plan.md +533 -0
- package/get-shit-done/workflows/explore.md +141 -0
- package/get-shit-done/workflows/extract_learnings.md +242 -0
- package/get-shit-done/workflows/fast.md +105 -0
- package/get-shit-done/workflows/forensics.md +265 -0
- package/get-shit-done/workflows/graduation.md +195 -0
- package/get-shit-done/workflows/health.md +314 -0
- package/get-shit-done/workflows/help.md +667 -0
- package/get-shit-done/workflows/import.md +246 -0
- package/get-shit-done/workflows/inbox.md +387 -0
- package/get-shit-done/workflows/ingest-docs.md +328 -0
- package/get-shit-done/workflows/insert-phase.md +130 -0
- package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
- package/get-shit-done/workflows/list-workspaces.md +56 -0
- package/get-shit-done/workflows/manager.md +365 -0
- package/get-shit-done/workflows/map-codebase.md +393 -0
- package/get-shit-done/workflows/milestone-summary.md +223 -0
- package/get-shit-done/workflows/new-milestone.md +611 -0
- package/get-shit-done/workflows/new-project.md +1391 -0
- package/get-shit-done/workflows/new-workspace.md +239 -0
- package/get-shit-done/workflows/next.md +220 -0
- package/get-shit-done/workflows/node-repair.md +92 -0
- package/get-shit-done/workflows/note.md +158 -0
- package/get-shit-done/workflows/pause-work.md +243 -0
- package/get-shit-done/workflows/plan-milestone-gaps.md +273 -0
- package/get-shit-done/workflows/plan-phase.md +1349 -0
- package/get-shit-done/workflows/plan-review-convergence.md +254 -0
- package/get-shit-done/workflows/plant-seed.md +172 -0
- package/get-shit-done/workflows/pr-branch.md +157 -0
- package/get-shit-done/workflows/profile-user.md +452 -0
- package/get-shit-done/workflows/progress.md +619 -0
- package/get-shit-done/workflows/quick.md +970 -0
- package/get-shit-done/workflows/remove-phase.md +155 -0
- package/get-shit-done/workflows/remove-workspace.md +92 -0
- package/get-shit-done/workflows/research-phase.md +89 -0
- package/get-shit-done/workflows/resume-project.md +326 -0
- package/get-shit-done/workflows/review.md +344 -0
- package/get-shit-done/workflows/scan.md +102 -0
- package/get-shit-done/workflows/secure-phase.md +166 -0
- package/get-shit-done/workflows/session-report.md +146 -0
- package/get-shit-done/workflows/settings.md +319 -0
- package/get-shit-done/workflows/ship.md +302 -0
- package/get-shit-done/workflows/sketch-wrap-up.md +283 -0
- package/get-shit-done/workflows/sketch.md +286 -0
- package/get-shit-done/workflows/spec-phase.md +262 -0
- package/get-shit-done/workflows/spike-wrap-up.md +281 -0
- package/get-shit-done/workflows/spike.md +362 -0
- package/get-shit-done/workflows/stats.md +60 -0
- package/get-shit-done/workflows/sync-skills.md +182 -0
- package/get-shit-done/workflows/transition.md +693 -0
- package/get-shit-done/workflows/ui-phase.md +323 -0
- package/get-shit-done/workflows/ui-review.md +190 -0
- package/get-shit-done/workflows/ultraplan-phase.md +189 -0
- package/get-shit-done/workflows/undo.md +314 -0
- package/get-shit-done/workflows/update.md +587 -0
- package/get-shit-done/workflows/validate-phase.md +176 -0
- package/get-shit-done/workflows/verify-phase.md +465 -0
- package/get-shit-done/workflows/verify-work.md +740 -0
- package/hooks/dist/gsd-check-update-worker.js +108 -0
- package/hooks/dist/gsd-check-update.js +64 -0
- package/hooks/dist/gsd-context-monitor.js +192 -0
- package/hooks/dist/gsd-phase-boundary.sh +28 -0
- package/hooks/dist/gsd-prompt-guard.js +97 -0
- package/hooks/dist/gsd-read-guard.js +82 -0
- package/hooks/dist/gsd-read-injection-scanner.js +152 -0
- package/hooks/dist/gsd-session-state.sh +34 -0
- package/hooks/dist/gsd-statusline.js +293 -0
- package/hooks/dist/gsd-validate-commit.sh +48 -0
- package/hooks/dist/gsd-workflow-guard.js +94 -0
- package/hooks/gsd-check-update-worker.js +108 -0
- package/hooks/gsd-check-update.js +64 -0
- package/hooks/gsd-context-monitor.js +192 -0
- package/hooks/gsd-phase-boundary.sh +28 -0
- package/hooks/gsd-prompt-guard.js +97 -0
- package/hooks/gsd-read-guard.js +82 -0
- package/hooks/gsd-read-injection-scanner.js +152 -0
- package/hooks/gsd-session-state.sh +34 -0
- package/hooks/gsd-statusline.js +293 -0
- package/hooks/gsd-validate-commit.sh +48 -0
- package/hooks/gsd-workflow-guard.js +94 -0
- package/package.json +59 -0
- package/scripts/base64-scan.sh +262 -0
- package/scripts/build-hooks.js +95 -0
- package/scripts/gen-inventory-manifest.cjs +109 -0
- package/scripts/prompt-injection-scan.sh +201 -0
- package/scripts/run-tests.cjs +33 -0
- package/scripts/secret-scan.sh +227 -0
- package/sdk/package-lock.json +1998 -0
- package/sdk/package.json +52 -0
- package/sdk/prompts/agents/gsd-executor.md +110 -0
- package/sdk/prompts/agents/gsd-phase-researcher.md +158 -0
- package/sdk/prompts/agents/gsd-plan-checker.md +160 -0
- package/sdk/prompts/agents/gsd-planner.md +214 -0
- package/sdk/prompts/agents/gsd-project-researcher.md +323 -0
- package/sdk/prompts/agents/gsd-research-synthesizer.md +237 -0
- package/sdk/prompts/agents/gsd-roadmapper.md +670 -0
- package/sdk/prompts/agents/gsd-verifier.md +159 -0
- package/sdk/prompts/templates/project.md +186 -0
- package/sdk/prompts/templates/requirements.md +231 -0
- package/sdk/prompts/templates/research-project/ARCHITECTURE.md +204 -0
- package/sdk/prompts/templates/research-project/FEATURES.md +147 -0
- package/sdk/prompts/templates/research-project/PITFALLS.md +200 -0
- package/sdk/prompts/templates/research-project/STACK.md +120 -0
- package/sdk/prompts/templates/research-project/SUMMARY.md +170 -0
- package/sdk/prompts/templates/roadmap.md +202 -0
- package/sdk/prompts/templates/state.md +175 -0
- package/sdk/prompts/workflows/discuss-phase.md +126 -0
- package/sdk/prompts/workflows/execute-plan.md +106 -0
- package/sdk/prompts/workflows/plan-phase.md +84 -0
- package/sdk/prompts/workflows/research-phase.md +45 -0
- package/sdk/prompts/workflows/verify-phase.md +142 -0
- package/sdk/src/assembled-prompts.test.ts +349 -0
- package/sdk/src/cli-transport.test.ts +388 -0
- package/sdk/src/cli-transport.ts +130 -0
- package/sdk/src/cli.test.ts +383 -0
- package/sdk/src/cli.ts +670 -0
- package/sdk/src/config.test.ts +168 -0
- package/sdk/src/config.ts +177 -0
- package/sdk/src/context-engine.test.ts +295 -0
- package/sdk/src/context-engine.ts +170 -0
- package/sdk/src/context-truncation.test.ts +163 -0
- package/sdk/src/context-truncation.ts +233 -0
- package/sdk/src/e2e.integration.test.ts +178 -0
- package/sdk/src/errors.ts +72 -0
- package/sdk/src/event-stream.test.ts +661 -0
- package/sdk/src/event-stream.ts +441 -0
- package/sdk/src/failure-memory.test.ts +457 -0
- package/sdk/src/failure-memory.ts +1324 -0
- package/sdk/src/golden/capture.ts +95 -0
- package/sdk/src/golden/fixtures/generate-slug.golden.json +1 -0
- package/sdk/src/golden/fixtures/profile-sample-sessions/demo-project/sample.jsonl +3 -0
- package/sdk/src/golden/fixtures/summary-extract-sample.md +26 -0
- package/sdk/src/golden/fixtures/uat-render-checkpoint-sample.md +15 -0
- package/sdk/src/golden/golden-integration-covered.ts +30 -0
- package/sdk/src/golden/golden-mutation-covered.ts +7 -0
- package/sdk/src/golden/golden-policy.test.ts +8 -0
- package/sdk/src/golden/golden-policy.ts +112 -0
- package/sdk/src/golden/golden.integration.test.ts +373 -0
- package/sdk/src/golden/init-golden-normalize.ts +15 -0
- package/sdk/src/golden/read-only-golden-rows.ts +77 -0
- package/sdk/src/golden/read-only-parity.integration.test.ts +125 -0
- package/sdk/src/golden/registry-canonical-commands.ts +31 -0
- package/sdk/src/gsd-tools.test.ts +409 -0
- package/sdk/src/gsd-tools.ts +595 -0
- package/sdk/src/headless-prompts.test.ts +159 -0
- package/sdk/src/index.ts +333 -0
- package/sdk/src/init-e2e.integration.test.ts +136 -0
- package/sdk/src/init-runner.test.ts +783 -0
- package/sdk/src/init-runner.ts +735 -0
- package/sdk/src/lifecycle-e2e.integration.test.ts +258 -0
- package/sdk/src/logger.test.ts +149 -0
- package/sdk/src/logger.ts +113 -0
- package/sdk/src/milestone-runner.test.ts +421 -0
- package/sdk/src/phase-prompt.test.ts +538 -0
- package/sdk/src/phase-prompt.ts +264 -0
- package/sdk/src/phase-runner-types.test.ts +421 -0
- package/sdk/src/phase-runner.integration.test.ts +377 -0
- package/sdk/src/phase-runner.test.ts +2333 -0
- package/sdk/src/phase-runner.ts +1203 -0
- package/sdk/src/plan-parser.test.ts +528 -0
- package/sdk/src/plan-parser.ts +427 -0
- package/sdk/src/prompt-builder.test.ts +306 -0
- package/sdk/src/prompt-builder.ts +193 -0
- package/sdk/src/prompt-sanitizer.test.ts +260 -0
- package/sdk/src/prompt-sanitizer.ts +71 -0
- package/sdk/src/query/QUERY-HANDLERS.md +317 -0
- package/sdk/src/query/audit-open.ts +722 -0
- package/sdk/src/query/check-auto-mode.test.ts +77 -0
- package/sdk/src/query/check-auto-mode.ts +50 -0
- package/sdk/src/query/check-completion.test.ts +113 -0
- package/sdk/src/query/check-completion.ts +182 -0
- package/sdk/src/query/check-gates.test.ts +103 -0
- package/sdk/src/query/check-gates.ts +112 -0
- package/sdk/src/query/check-ship-ready.test.ts +77 -0
- package/sdk/src/query/check-ship-ready.ts +103 -0
- package/sdk/src/query/check-verification-status.test.ts +143 -0
- package/sdk/src/query/check-verification-status.ts +160 -0
- package/sdk/src/query/commit.test.ts +202 -0
- package/sdk/src/query/commit.ts +301 -0
- package/sdk/src/query/config-gates.test.ts +89 -0
- package/sdk/src/query/config-gates.ts +69 -0
- package/sdk/src/query/config-mutation.test.ts +365 -0
- package/sdk/src/query/config-mutation.ts +497 -0
- package/sdk/src/query/config-query.test.ts +161 -0
- package/sdk/src/query/config-query.ts +190 -0
- package/sdk/src/query/context-history.test.ts +165 -0
- package/sdk/src/query/context-history.ts +467 -0
- package/sdk/src/query/decomposed-handlers.test.ts +365 -0
- package/sdk/src/query/detect-custom-files.ts +97 -0
- package/sdk/src/query/detect-phase-type.test.ts +105 -0
- package/sdk/src/query/detect-phase-type.ts +141 -0
- package/sdk/src/query/docs-init.ts +257 -0
- package/sdk/src/query/failure-capture.ts +58 -0
- package/sdk/src/query/frontmatter-array.test.ts +14 -0
- package/sdk/src/query/frontmatter-mutation.test.ts +259 -0
- package/sdk/src/query/frontmatter-mutation.ts +343 -0
- package/sdk/src/query/frontmatter.test.ts +281 -0
- package/sdk/src/query/frontmatter.ts +397 -0
- package/sdk/src/query/helpers.test.ts +426 -0
- package/sdk/src/query/helpers.ts +482 -0
- package/sdk/src/query/index.ts +586 -0
- package/sdk/src/query/init-complex.test.ts +232 -0
- package/sdk/src/query/init-complex.ts +578 -0
- package/sdk/src/query/init.test.ts +522 -0
- package/sdk/src/query/init.ts +1046 -0
- package/sdk/src/query/intel.test.ts +90 -0
- package/sdk/src/query/intel.ts +404 -0
- package/sdk/src/query/normalize-query-command.test.ts +50 -0
- package/sdk/src/query/normalize-query-command.ts +56 -0
- package/sdk/src/query/phase-lifecycle.test.ts +1126 -0
- package/sdk/src/query/phase-lifecycle.ts +1799 -0
- package/sdk/src/query/phase-list-queries.test.ts +88 -0
- package/sdk/src/query/phase-list-queries.ts +152 -0
- package/sdk/src/query/phase-ready.test.ts +65 -0
- package/sdk/src/query/phase-ready.ts +158 -0
- package/sdk/src/query/phase.test.ts +307 -0
- package/sdk/src/query/phase.ts +340 -0
- package/sdk/src/query/pipeline.test.ts +169 -0
- package/sdk/src/query/pipeline.ts +243 -0
- package/sdk/src/query/plan-execution-route.test.ts +166 -0
- package/sdk/src/query/plan-execution-route.ts +209 -0
- package/sdk/src/query/plan-task-structure.test.ts +65 -0
- package/sdk/src/query/plan-task-structure.ts +63 -0
- package/sdk/src/query/profile-extract-messages.ts +247 -0
- package/sdk/src/query/profile-output.ts +908 -0
- package/sdk/src/query/profile-questionnaire-data.ts +181 -0
- package/sdk/src/query/profile-sample.ts +184 -0
- package/sdk/src/query/profile-scan-sessions.ts +174 -0
- package/sdk/src/query/profile.test.ts +74 -0
- package/sdk/src/query/profile.ts +337 -0
- package/sdk/src/query/progress.test.ts +156 -0
- package/sdk/src/query/progress.ts +566 -0
- package/sdk/src/query/registry.test.ts +216 -0
- package/sdk/src/query/registry.ts +174 -0
- package/sdk/src/query/requirements-extract-from-plans.test.ts +58 -0
- package/sdk/src/query/requirements-extract-from-plans.ts +86 -0
- package/sdk/src/query/roadmap-update-plan-progress.ts +132 -0
- package/sdk/src/query/roadmap.test.ts +359 -0
- package/sdk/src/query/roadmap.ts +591 -0
- package/sdk/src/query/route-next-action.test.ts +61 -0
- package/sdk/src/query/route-next-action.ts +345 -0
- package/sdk/src/query/runtime-health.ts +7 -0
- package/sdk/src/query/schema-detect.ts +189 -0
- package/sdk/src/query/skill-manifest.ts +214 -0
- package/sdk/src/query/skills.test.ts +80 -0
- package/sdk/src/query/skills.ts +62 -0
- package/sdk/src/query/state-mutation.test.ts +450 -0
- package/sdk/src/query/state-mutation.ts +1444 -0
- package/sdk/src/query/state-project-load.ts +109 -0
- package/sdk/src/query/state.test.ts +347 -0
- package/sdk/src/query/state.ts +397 -0
- package/sdk/src/query/summary.test.ts +95 -0
- package/sdk/src/query/summary.ts +296 -0
- package/sdk/src/query/template.test.ts +180 -0
- package/sdk/src/query/template.ts +242 -0
- package/sdk/src/query/uat.test.ts +77 -0
- package/sdk/src/query/uat.ts +314 -0
- package/sdk/src/query/utils.test.ts +82 -0
- package/sdk/src/query/utils.ts +92 -0
- package/sdk/src/query/validate.test.ts +656 -0
- package/sdk/src/query/validate.ts +807 -0
- package/sdk/src/query/verify.test.ts +414 -0
- package/sdk/src/query/verify.ts +645 -0
- package/sdk/src/query/websearch.test.ts +31 -0
- package/sdk/src/query/websearch.ts +82 -0
- package/sdk/src/query/workspace.test.ts +119 -0
- package/sdk/src/query/workspace.ts +131 -0
- package/sdk/src/query/workstream.test.ts +51 -0
- package/sdk/src/query/workstream.ts +434 -0
- package/sdk/src/research-gate.test.ts +190 -0
- package/sdk/src/research-gate.ts +94 -0
- package/sdk/src/runtime-health.test.ts +176 -0
- package/sdk/src/runtime-health.ts +387 -0
- package/sdk/src/session-runner.test.ts +98 -0
- package/sdk/src/session-runner.ts +299 -0
- package/sdk/src/tool-scoping.test.ts +160 -0
- package/sdk/src/tool-scoping.ts +61 -0
- package/sdk/src/types.ts +917 -0
- package/sdk/src/workstream-utils.ts +33 -0
- package/sdk/src/ws-flag.test.ts +285 -0
- package/sdk/src/ws-transport.test.ts +161 -0
- package/sdk/src/ws-transport.ts +93 -0
- package/sdk/tsconfig.json +20 -0
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
# graduation.md — LEARNINGS.md Cross-Phase Graduation Helper
|
|
2
|
+
|
|
3
|
+
**Invoked by:** `transition.md` step `graduation_scan`. Never invoked directly by users.
|
|
4
|
+
|
|
5
|
+
This workflow clusters recurring items across the last N phases' LEARNINGS.md files and surfaces promotion candidates to the developer via HITL. No item is promoted without explicit developer approval.
|
|
6
|
+
|
|
7
|
+
---
|
|
8
|
+
|
|
9
|
+
## Configuration
|
|
10
|
+
|
|
11
|
+
Read from project config (`config.json`):
|
|
12
|
+
|
|
13
|
+
| Key | Default | Description |
|
|
14
|
+
|-----|---------|-------------|
|
|
15
|
+
| `features.graduation` | `true` | Master on/off switch. `false` skips silently. |
|
|
16
|
+
| `features.graduation_window` | `5` | How many prior phases to scan |
|
|
17
|
+
| `features.graduation_threshold` | `3` | Minimum cluster size to surface |
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
## Step 1: Guard Checks
|
|
22
|
+
|
|
23
|
+
```bash
|
|
24
|
+
GRADUATION_ENABLED=$(gsd-remix-sdk query config-get features.graduation 2>/dev/null || echo "true")
|
|
25
|
+
GRADUATION_WINDOW=$(gsd-remix-sdk query config-get features.graduation_window 2>/dev/null || echo "5")
|
|
26
|
+
GRADUATION_THRESHOLD=$(gsd-remix-sdk query config-get features.graduation_threshold 2>/dev/null || echo "3")
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
**Skip silently (print nothing) if:**
|
|
30
|
+
- `features.graduation` is `false`
|
|
31
|
+
- Fewer than `graduation_threshold` completed prior phases exist (not enough data)
|
|
32
|
+
|
|
33
|
+
**Skip silently (print nothing) if total items across all LEARNINGS.md files in the window is fewer than 5.**
|
|
34
|
+
|
|
35
|
+
---
|
|
36
|
+
|
|
37
|
+
## Step 2: Collect LEARNINGS.md Files
|
|
38
|
+
|
|
39
|
+
Find LEARNINGS.md files from the last N completed phases (excluding the phase currently completing):
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
find .planning/phases -name "*-LEARNINGS.md" | sort | tail -n "$GRADUATION_WINDOW"
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
For each file found:
|
|
46
|
+
1. Parse the four category sections: `## Decisions`, `## Lessons`, `## Patterns`, `## Surprises`
|
|
47
|
+
2. Extract each `### Item Title` + body as a single item record: `{ category, title, body, source_phase, source_file }`
|
|
48
|
+
3. **Skip items that already contain `**Graduated:**`** — they have been promoted and must not re-surface
|
|
49
|
+
|
|
50
|
+
---
|
|
51
|
+
|
|
52
|
+
## Step 3: Cluster by Lexical Similarity
|
|
53
|
+
|
|
54
|
+
For each category independently, cluster items using Jaccard similarity on tokenized title+body:
|
|
55
|
+
|
|
56
|
+
**Tokenization:** lowercase, strip punctuation, split on whitespace, remove stop words (a, an, the, is, was, in, on, at, to, for, of, and, or, but, with, from, that, this, by, as).
|
|
57
|
+
|
|
58
|
+
**Jaccard similarity:** `|A ∩ B| / |A ∪ B|` where A and B are token sets. Two items are in the same cluster if similarity ≥ 0.25.
|
|
59
|
+
|
|
60
|
+
**Clustering algorithm:** single-pass greedy — process items in phase order; add to the first cluster whose centroid (union of all cluster tokens) has similarity ≥ 0.25 with the new item; otherwise start a new cluster.
|
|
61
|
+
|
|
62
|
+
**Cluster size filter:** only surface clusters with distinct source phases ≥ `graduation_threshold` (not just total items — same item repeated in one phase still counts as 1 distinct phase).
|
|
63
|
+
|
|
64
|
+
---
|
|
65
|
+
|
|
66
|
+
## Step 4: Check graduation_backlog in STATE.md
|
|
67
|
+
|
|
68
|
+
Read `.planning/STATE.md` `graduation_backlog` section (if present). Format:
|
|
69
|
+
|
|
70
|
+
```yaml
|
|
71
|
+
graduation_backlog:
|
|
72
|
+
- cluster_id: "{sha256-of-cluster-title}"
|
|
73
|
+
status: "dismissed" # or "deferred"
|
|
74
|
+
deferred_until: "phase-N" # only for deferred entries
|
|
75
|
+
cluster_title: "{representative title}"
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Skip any cluster whose `cluster_id` matches a `dismissed` entry.**
|
|
79
|
+
|
|
80
|
+
**Skip any cluster whose `cluster_id` matches a `deferred` entry where `deferred_until` phase has not yet completed.**
|
|
81
|
+
|
|
82
|
+
---
|
|
83
|
+
|
|
84
|
+
## Step 5: Surface Promotion Candidates
|
|
85
|
+
|
|
86
|
+
For each qualifying cluster, determine the suggested target file:
|
|
87
|
+
|
|
88
|
+
| Category | Suggested Target |
|
|
89
|
+
|----------|-----------------|
|
|
90
|
+
| `decisions` | `PROJECT.md` — append under `## Validated Decisions` (create section if absent) |
|
|
91
|
+
| `patterns` | `PATTERNS.md` — append under the appropriate category section (create file if absent) |
|
|
92
|
+
| `lessons` | `PROJECT.md` — append under `## Invariants` (create section if absent) |
|
|
93
|
+
| `surprises` | Flag for human review — if genuinely surprising 3+ times, something structural is wrong |
|
|
94
|
+
|
|
95
|
+
Print the graduation report:
|
|
96
|
+
|
|
97
|
+
```text
|
|
98
|
+
📚 Graduation scan across phases {M}–{N}:
|
|
99
|
+
|
|
100
|
+
HIGH RECURRENCE ({K}/{WINDOW} phases)
|
|
101
|
+
├─ Cluster: "{representative title}"
|
|
102
|
+
├─ Category: {category}
|
|
103
|
+
├─ Sources: {list of NN-LEARNINGS filenames}
|
|
104
|
+
└─ Suggested target: {target file} § {section}
|
|
105
|
+
|
|
106
|
+
[repeat for each qualifying cluster, ordered HIGH→LOW recurrence]
|
|
107
|
+
|
|
108
|
+
For each cluster above, choose an action:
|
|
109
|
+
P = Promote now D = Defer (re-surface next transition) X = Dismiss (never re-surface) A = Defer all remaining
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Step 6: HITL — Process Each Cluster
|
|
115
|
+
|
|
116
|
+
For each cluster (in order from Step 5), ask the developer:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
Cluster: "{title}" [{category}, {K} phases] → {target}
|
|
120
|
+
Action [P/D/X/A]:
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
Use `AskUserQuestion` (or equivalent HITL primitive for the current runtime). If `TEXT_MODE` is true, display the cluster question as plain text and accept typed input. Accept single-character input: `P`, `D`, `X`, `A` (case-insensitive).
|
|
124
|
+
|
|
125
|
+
**On `P` (Promote now):**
|
|
126
|
+
|
|
127
|
+
1. Read the target file (or create it with a standard header if absent)
|
|
128
|
+
2. Append the cluster entry under the suggested section:
|
|
129
|
+
```markdown
|
|
130
|
+
### {Cluster representative title}
|
|
131
|
+
{Merged body — combine unique sentences across cluster items}
|
|
132
|
+
|
|
133
|
+
**Sources:** Phase {A}, Phase {B}, Phase {C}
|
|
134
|
+
**Promoted:** {ISO_DATE}
|
|
135
|
+
```
|
|
136
|
+
3. For each source LEARNINGS.md item in the cluster, append `**Graduated:** {target-file}:{ISO_DATE}` after its last existing field
|
|
137
|
+
4. Commit both the target file and all annotated LEARNINGS.md files in a single atomic commit:
|
|
138
|
+
`docs(learnings): graduate "{cluster title}" to {target-file}`
|
|
139
|
+
|
|
140
|
+
**On `D` (Defer):**
|
|
141
|
+
|
|
142
|
+
Write to `.planning/STATE.md` under `graduation_backlog`:
|
|
143
|
+
```yaml
|
|
144
|
+
- cluster_id: "{sha256}"
|
|
145
|
+
status: "deferred"
|
|
146
|
+
deferred_until: "phase-{NEXT_PHASE_NUMBER}"
|
|
147
|
+
cluster_title: "{title}"
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
**On `X` (Dismiss):**
|
|
151
|
+
|
|
152
|
+
Write to `.planning/STATE.md` under `graduation_backlog`:
|
|
153
|
+
```yaml
|
|
154
|
+
- cluster_id: "{sha256}"
|
|
155
|
+
status: "dismissed"
|
|
156
|
+
cluster_title: "{title}"
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**On `A` (Defer all):**
|
|
160
|
+
|
|
161
|
+
Defer the current cluster (same as `D`) and skip all remaining clusters for this run, deferring each to the next transition. Print:
|
|
162
|
+
```text
|
|
163
|
+
[graduation: deferred all remaining clusters to next transition]
|
|
164
|
+
```
|
|
165
|
+
Then proceed directly to Step 7.
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Step 7: Completion Report
|
|
170
|
+
|
|
171
|
+
After processing all clusters, print:
|
|
172
|
+
|
|
173
|
+
```text
|
|
174
|
+
Graduation complete: {promoted} promoted, {deferred} deferred, {dismissed} dismissed.
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
If no clusters qualified (all filtered by backlog or threshold), print:
|
|
178
|
+
```text
|
|
179
|
+
[graduation: no qualifying clusters in phases {M}–{N}]
|
|
180
|
+
```
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## First-Run Behaviour
|
|
185
|
+
|
|
186
|
+
On the first transition after upgrading to a version that includes this workflow, all extant LEARNINGS.md files may produce a large batch of candidates at once. A `[Defer all]` shorthand is available: if the developer enters `A` at any cluster prompt, all remaining clusters for this run are deferred to the next transition.
|
|
187
|
+
|
|
188
|
+
---
|
|
189
|
+
|
|
190
|
+
## No-Op Conditions (silent skip)
|
|
191
|
+
|
|
192
|
+
- `features.graduation = false`
|
|
193
|
+
- Fewer than `graduation_threshold` prior phases with LEARNINGS.md
|
|
194
|
+
- Total items < 5 across the window
|
|
195
|
+
- All qualifying clusters are in `graduation_backlog` as dismissed
|
|
@@ -0,0 +1,314 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Validate `.planning/` directory integrity or runtime install health and report actionable issues. Checks for missing files, invalid configurations, inconsistent state, orphaned plans, unsupported runtime versions, and SDK availability. Optionally repairs auto-fixable planning issues or rebuilds the bundled SDK.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="parse_args">
|
|
12
|
+
**Parse arguments:**
|
|
13
|
+
|
|
14
|
+
Check if `--runtime`, `--repair`, or `--backfill` flags are present in the command arguments.
|
|
15
|
+
|
|
16
|
+
```
|
|
17
|
+
RUNTIME_FLAG=""
|
|
18
|
+
REPAIR_FLAG=""
|
|
19
|
+
BACKFILL_FLAG=""
|
|
20
|
+
if arguments contain "--runtime"; then
|
|
21
|
+
RUNTIME_FLAG="--runtime"
|
|
22
|
+
fi
|
|
23
|
+
if arguments contain "--repair"; then
|
|
24
|
+
REPAIR_FLAG="--repair"
|
|
25
|
+
fi
|
|
26
|
+
if arguments contain "--backfill"; then
|
|
27
|
+
BACKFILL_FLAG="--backfill"
|
|
28
|
+
fi
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**Runtime SDK repair script path:**
|
|
32
|
+
|
|
33
|
+
The installer rewrites this path for non-Claude runtimes and local installs.
|
|
34
|
+
|
|
35
|
+
```bash
|
|
36
|
+
RUNTIME_REPAIR_SCRIPT="$HOME/.claude/get-shit-done/bin/repair-sdk.cjs"
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
**If runtime repair is requested, repair before any SDK query:**
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
if [[ -n "$RUNTIME_FLAG" && -n "$REPAIR_FLAG" ]]; then
|
|
43
|
+
if [[ ! -f "$RUNTIME_REPAIR_SCRIPT" ]]; then
|
|
44
|
+
echo "✗ Runtime repair script not found:"
|
|
45
|
+
echo " $RUNTIME_REPAIR_SCRIPT"
|
|
46
|
+
echo ""
|
|
47
|
+
echo "Re-run the gsd-remix installer to refresh runtime assets:"
|
|
48
|
+
echo " npx gsd-remix@latest"
|
|
49
|
+
exit 1
|
|
50
|
+
fi
|
|
51
|
+
|
|
52
|
+
echo "Running GSD Remix SDK repair..."
|
|
53
|
+
node "$RUNTIME_REPAIR_SCRIPT"
|
|
54
|
+
REPAIR_STATUS=$?
|
|
55
|
+
if [[ "$REPAIR_STATUS" -ne 0 ]]; then
|
|
56
|
+
echo ""
|
|
57
|
+
echo "✗ GSD Remix SDK repair failed with exit $REPAIR_STATUS."
|
|
58
|
+
exit "$REPAIR_STATUS"
|
|
59
|
+
fi
|
|
60
|
+
fi
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**Guard `gsd-remix-sdk` before any query:**
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
if ! command -v gsd-remix-sdk &>/dev/null; then
|
|
67
|
+
echo "⚠ gsd-remix-sdk not found in PATH — /gsd-health requires it."
|
|
68
|
+
echo ""
|
|
69
|
+
echo "Repair the bundled SDK without reinstalling all runtime assets:"
|
|
70
|
+
echo " /gsd-health --runtime --repair"
|
|
71
|
+
exit 1
|
|
72
|
+
fi
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
**Runtime mode constraints:**
|
|
76
|
+
|
|
77
|
+
If `RUNTIME_FLAG` is set, ignore `BACKFILL_FLAG` for this run. Runtime checks are read-only unless `REPAIR_FLAG` is also set. Runtime repair only rebuilds and reinstalls the bundled SDK from `get-shit-done/sdk/`; it does not reinstall commands, agents, hooks, or project artifacts.
|
|
78
|
+
</step>
|
|
79
|
+
|
|
80
|
+
<step name="run_health_check">
|
|
81
|
+
**Run health validation:**
|
|
82
|
+
|
|
83
|
+
**If `RUNTIME_FLAG` is set:**
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
HEALTH=$(gsd-remix-sdk query runtime.health 2>/dev/null || echo '{"passed":false,"blockers":[{"code":"runtime_health_unavailable","message":"Installed gsd-remix-sdk does not expose runtime.health.","fix":"Run /gsd-health --runtime --repair to rebuild the bundled SDK."}],"warnings":[],"checks":[]}')
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
Parse JSON output:
|
|
90
|
+
- `passed`: boolean
|
|
91
|
+
- `node_version`: Current Node version
|
|
92
|
+
- `required_node_range`: Required Node range from package metadata
|
|
93
|
+
- `runtime_identity`: Installed runtime identity marker (`distribution`, `package_name`, `version`, `runtime`, `install_scope`, `identity_path`) or null
|
|
94
|
+
- `runtime_identity_path`: Expected identity marker path
|
|
95
|
+
- `gsd_tools_source`: `bundled` | `project` | `user` | `custom` | `missing`
|
|
96
|
+
- `gsd_tools_path`: Resolved `gsd-tools.cjs` path if found
|
|
97
|
+
- `legacy_bridge_available`: boolean
|
|
98
|
+
- `blockers[]`: Critical runtime issues
|
|
99
|
+
- `warnings[]`: Non-blocking runtime issues
|
|
100
|
+
- `checks[]`: Full deterministic runtime check results
|
|
101
|
+
|
|
102
|
+
**If `RUNTIME_FLAG` is NOT set:** Run planning health validation:
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
HEALTH=$(gsd-remix-sdk query validate.health $REPAIR_FLAG $BACKFILL_FLAG)
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
Parse JSON output:
|
|
109
|
+
- `status`: "healthy" | "degraded" | "broken"
|
|
110
|
+
- `errors[]`: Critical issues (code, message, fix, repairable)
|
|
111
|
+
- `warnings[]`: Non-critical issues
|
|
112
|
+
- `info[]`: Informational notes
|
|
113
|
+
- `repairable_count`: Number of auto-fixable issues
|
|
114
|
+
- `repairs_performed[]`: Actions taken if --repair was used
|
|
115
|
+
</step>
|
|
116
|
+
|
|
117
|
+
<step name="format_output">
|
|
118
|
+
**Format and display results:**
|
|
119
|
+
|
|
120
|
+
**If `RUNTIME_FLAG` is set:**
|
|
121
|
+
|
|
122
|
+
Determine status:
|
|
123
|
+
- `BROKEN` when `blockers[]` is non-empty
|
|
124
|
+
- `DEGRADED` when `blockers[]` is empty and `warnings[]` is non-empty
|
|
125
|
+
- `HEALTHY` otherwise
|
|
126
|
+
|
|
127
|
+
```
|
|
128
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
129
|
+
GSD Runtime Health Check
|
|
130
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
131
|
+
|
|
132
|
+
Status: HEALTHY | DEGRADED | BROKEN
|
|
133
|
+
Distribution: {runtime_identity.display_name or runtime_identity.distribution or "unknown"} {runtime_identity.version or ""}
|
|
134
|
+
Package: {runtime_identity.package_name or "unknown"} ({runtime_identity.runtime or "unknown"} / {runtime_identity.install_scope or "unknown"})
|
|
135
|
+
Node: {node_version} (required: {required_node_range or "unknown"})
|
|
136
|
+
Legacy bridge: READY | DEGRADED | MISSING
|
|
137
|
+
Source: {gsd_tools_source}
|
|
138
|
+
Path: {gsd_tools_path or "not found"}
|
|
139
|
+
Identity: {runtime_identity.identity_path or runtime_identity_path or "not found"}
|
|
140
|
+
Warnings: N
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**If blockers exist:**
|
|
144
|
+
```
|
|
145
|
+
## Blockers
|
|
146
|
+
|
|
147
|
+
- [node_version_unsupported] Current Node v20.11.1 does not satisfy >=22.0.0
|
|
148
|
+
Fix: Use Node >=22.0.0 or newer, then rerun the workflow.
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
**If warnings exist:**
|
|
152
|
+
```
|
|
153
|
+
## Warnings
|
|
154
|
+
|
|
155
|
+
- [legacy_bridge_missing] No gsd-tools.cjs bridge could be found for CJS fallback commands.
|
|
156
|
+
Fix: Run /gsd-update to restore the bundled bridge. Use /gsd-health --runtime --repair only for SDK CLI repair.
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
**Footer:**
|
|
160
|
+
```
|
|
161
|
+
---
|
|
162
|
+
Runtime mode is read-only unless --repair is set. Use /gsd-health --runtime --repair to rebuild the bundled SDK, or /gsd-update to refresh all runtime assets.
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
Then STOP. Do not proceed to repair prompts.
|
|
166
|
+
|
|
167
|
+
**If `RUNTIME_FLAG` is NOT set:** Use the existing planning health output:
|
|
168
|
+
|
|
169
|
+
```
|
|
170
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
171
|
+
GSD Health Check
|
|
172
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
173
|
+
|
|
174
|
+
Status: HEALTHY | DEGRADED | BROKEN
|
|
175
|
+
Errors: N | Warnings: N | Info: N
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
**If repairs were performed:**
|
|
179
|
+
```
|
|
180
|
+
## Repairs Performed
|
|
181
|
+
|
|
182
|
+
- ✓ config.json: Created with defaults
|
|
183
|
+
- ✓ STATE.md: Regenerated from roadmap
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
**If errors exist:**
|
|
187
|
+
```
|
|
188
|
+
## Errors
|
|
189
|
+
|
|
190
|
+
- [E001] config.json: JSON parse error at line 5
|
|
191
|
+
Fix: Run /gsd-health --repair to reset to defaults
|
|
192
|
+
|
|
193
|
+
- [E002] PROJECT.md not found
|
|
194
|
+
Fix: Run /gsd-new-project to create
|
|
195
|
+
```
|
|
196
|
+
|
|
197
|
+
**If warnings exist:**
|
|
198
|
+
```
|
|
199
|
+
## Warnings
|
|
200
|
+
|
|
201
|
+
- [W002] STATE.md references phase 5, but only phases 1-3 exist
|
|
202
|
+
Fix: Review STATE.md manually before changing it; repair will not overwrite an existing STATE.md
|
|
203
|
+
|
|
204
|
+
- [W005] Phase directory "1-setup" doesn't follow NN-name format
|
|
205
|
+
Fix: Rename to match pattern (e.g., 01-setup)
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
**If info exists:**
|
|
209
|
+
```
|
|
210
|
+
## Info
|
|
211
|
+
|
|
212
|
+
- [I001] 02-implementation/02-01-PLAN.md has no SUMMARY.md
|
|
213
|
+
Note: May be in progress
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
**Footer (if repairable issues exist and --repair was NOT used):**
|
|
217
|
+
```
|
|
218
|
+
---
|
|
219
|
+
N issues can be auto-repaired. Run: /gsd-health --repair
|
|
220
|
+
```
|
|
221
|
+
</step>
|
|
222
|
+
|
|
223
|
+
<step name="offer_repair">
|
|
224
|
+
**Skip if:** `RUNTIME_FLAG` is set.
|
|
225
|
+
|
|
226
|
+
**If repairable issues exist and --repair was NOT used:**
|
|
227
|
+
|
|
228
|
+
Ask user if they want to run repairs:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
Would you like to run /gsd-health --repair to fix N issues automatically?
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
If yes, re-run with --repair flag and display results.
|
|
235
|
+
</step>
|
|
236
|
+
|
|
237
|
+
<step name="verify_repairs">
|
|
238
|
+
**Skip if:** `RUNTIME_FLAG` is set.
|
|
239
|
+
|
|
240
|
+
**If repairs were performed:**
|
|
241
|
+
|
|
242
|
+
Re-run health check without --repair to confirm issues are resolved:
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
gsd-remix-sdk query validate.health
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
Report final status.
|
|
249
|
+
</step>
|
|
250
|
+
|
|
251
|
+
</process>
|
|
252
|
+
|
|
253
|
+
<error_codes>
|
|
254
|
+
|
|
255
|
+
| Code | Severity | Description | Repairable |
|
|
256
|
+
|------|----------|-------------|------------|
|
|
257
|
+
| E001 | error | .planning/ directory not found | No |
|
|
258
|
+
| E002 | error | PROJECT.md not found | No |
|
|
259
|
+
| E003 | error | ROADMAP.md not found | No |
|
|
260
|
+
| E004 | error | STATE.md not found | Yes |
|
|
261
|
+
| E005 | error | config.json parse error | Yes |
|
|
262
|
+
| W001 | warning | PROJECT.md missing required section | No |
|
|
263
|
+
| W002 | warning | STATE.md references invalid phase | No |
|
|
264
|
+
| W003 | warning | config.json not found | Yes |
|
|
265
|
+
| W004 | warning | config.json invalid field value | No |
|
|
266
|
+
| W005 | warning | Phase directory naming mismatch | No |
|
|
267
|
+
| W006 | warning | Phase in ROADMAP but no directory | No |
|
|
268
|
+
| W007 | warning | Phase on disk but not in ROADMAP | No |
|
|
269
|
+
| W008 | warning | config.json: workflow.nyquist_validation absent (defaults to enabled but agents may skip) | Yes |
|
|
270
|
+
| W009 | warning | Phase has Validation Architecture in RESEARCH.md but no VALIDATION.md | No |
|
|
271
|
+
| W018 | warning | MILESTONES.md missing entry for archived milestone snapshot | Yes (`--backfill`) |
|
|
272
|
+
| W019 | warning | Unrecognized .planning/ root file — not a canonical GSD artifact | No |
|
|
273
|
+
| I001 | info | Plan without SUMMARY (may be in progress) | No |
|
|
274
|
+
|
|
275
|
+
</error_codes>
|
|
276
|
+
|
|
277
|
+
<repair_actions>
|
|
278
|
+
|
|
279
|
+
| Action | Effect | Risk |
|
|
280
|
+
|--------|--------|------|
|
|
281
|
+
| createConfig | Create config.json with defaults | None |
|
|
282
|
+
| resetConfig | Delete + recreate config.json | Loses custom settings |
|
|
283
|
+
| regenerateState | Create STATE.md from ROADMAP structure when it is missing | Loses session history |
|
|
284
|
+
| addNyquistKey | Add workflow.nyquist_validation: true to config.json | None — matches existing default |
|
|
285
|
+
| backfillMilestones | Synthesize missing MILESTONES.md entries from `.planning/milestones/vX.Y-ROADMAP.md` snapshots | None — additive only; triggered by `--backfill` flag |
|
|
286
|
+
|
|
287
|
+
**Not repairable (too risky):**
|
|
288
|
+
- PROJECT.md, ROADMAP.md content
|
|
289
|
+
- Phase directory renaming
|
|
290
|
+
- Orphaned plan cleanup
|
|
291
|
+
|
|
292
|
+
</repair_actions>
|
|
293
|
+
|
|
294
|
+
<stale_task_cleanup>
|
|
295
|
+
**Windows-specific:** Check for stale Claude Code task directories that accumulate on crash/freeze.
|
|
296
|
+
These are left behind when subagents are force-killed and consume disk space.
|
|
297
|
+
|
|
298
|
+
When `--repair` is active, detect and clean up:
|
|
299
|
+
|
|
300
|
+
```bash
|
|
301
|
+
# Check for stale task directories (older than 24 hours)
|
|
302
|
+
TASKS_DIR="$HOME/.claude/tasks"
|
|
303
|
+
if [ -d "$TASKS_DIR" ]; then
|
|
304
|
+
STALE_COUNT=$( (find "$TASKS_DIR" -maxdepth 1 -type d -mtime +1 2>/dev/null || true) | wc -l )
|
|
305
|
+
if [ "$STALE_COUNT" -gt 0 ]; then
|
|
306
|
+
echo "⚠️ Found $STALE_COUNT stale task directories in ~/.claude/tasks/"
|
|
307
|
+
echo " These are leftover from crashed subagent sessions."
|
|
308
|
+
echo " Run: rm -rf ~/.claude/tasks/* (safe — only affects dead sessions)"
|
|
309
|
+
fi
|
|
310
|
+
fi
|
|
311
|
+
```
|
|
312
|
+
|
|
313
|
+
Report as info diagnostic: `I002 | info | Stale subagent task directories found | Yes (--repair removes them)`
|
|
314
|
+
</stale_task_cleanup>
|