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,254 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Cross-AI plan convergence loop — automates the manual chain:
|
|
3
|
+
gsd-plan-phase N → gsd-review N --codex → gsd-plan-phase N --reviews → gsd-review N --codex → ...
|
|
4
|
+
Each step runs inside an isolated Agent that calls the corresponding Skill.
|
|
5
|
+
Orchestrator only does: init, loop control, HIGH count check, stall detection, escalation.
|
|
6
|
+
</purpose>
|
|
7
|
+
|
|
8
|
+
<required_reading>
|
|
9
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
10
|
+
|
|
11
|
+
@$HOME/.claude/get-shit-done/references/revision-loop.md
|
|
12
|
+
@$HOME/.claude/get-shit-done/references/gates.md
|
|
13
|
+
@$HOME/.claude/get-shit-done/references/agent-contracts.md
|
|
14
|
+
</required_reading>
|
|
15
|
+
|
|
16
|
+
<process>
|
|
17
|
+
|
|
18
|
+
## 1. Parse and Normalize Arguments
|
|
19
|
+
|
|
20
|
+
Extract from $ARGUMENTS: phase number, reviewer flags (`--codex`, `--gemini`, `--claude`, `--opencode`, `--all`), `--max-cycles N`, `--text`, `--ws`.
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
PHASE=$(echo "$ARGUMENTS" | grep -oE '[0-9]+\.?[0-9]*' | head -1)
|
|
24
|
+
|
|
25
|
+
REVIEWER_FLAGS=""
|
|
26
|
+
echo "$ARGUMENTS" | grep -q '\-\-codex' && REVIEWER_FLAGS="$REVIEWER_FLAGS --codex"
|
|
27
|
+
echo "$ARGUMENTS" | grep -q '\-\-gemini' && REVIEWER_FLAGS="$REVIEWER_FLAGS --gemini"
|
|
28
|
+
echo "$ARGUMENTS" | grep -q '\-\-claude' && REVIEWER_FLAGS="$REVIEWER_FLAGS --claude"
|
|
29
|
+
echo "$ARGUMENTS" | grep -q '\-\-opencode' && REVIEWER_FLAGS="$REVIEWER_FLAGS --opencode"
|
|
30
|
+
echo "$ARGUMENTS" | grep -q '\-\-all' && REVIEWER_FLAGS="$REVIEWER_FLAGS --all"
|
|
31
|
+
if [ -z "$REVIEWER_FLAGS" ]; then REVIEWER_FLAGS="--codex"; fi
|
|
32
|
+
|
|
33
|
+
MAX_CYCLES=$(echo "$ARGUMENTS" | grep -oE '\-\-max-cycles\s+[0-9]+' | awk '{print $2}')
|
|
34
|
+
if [ -z "$MAX_CYCLES" ]; then MAX_CYCLES=3; fi
|
|
35
|
+
|
|
36
|
+
GSD_WS=""
|
|
37
|
+
echo "$ARGUMENTS" | grep -qE '\-\-ws\s+\S+' && GSD_WS=$(echo "$ARGUMENTS" | grep -oE '\-\-ws\s+\S+')
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 2. Initialize
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
INIT=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" init plan-phase "$PHASE")
|
|
44
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
Parse JSON for: `phase_dir`, `phase_number`, `padded_phase`, `phase_name`, `has_plans`, `plan_count`, `commit_docs`, `text_mode`, `response_language`.
|
|
48
|
+
|
|
49
|
+
**If `response_language` is set:** All user-facing output should be in `{response_language}`.
|
|
50
|
+
|
|
51
|
+
Set `TEXT_MODE=true` if `--text` is present in $ARGUMENTS OR `text_mode` from init JSON is `true`. When `TEXT_MODE` is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number.
|
|
52
|
+
|
|
53
|
+
## 3. Validate Phase + Pre-flight Gate
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
PHASE_INFO=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" roadmap get-phase "${PHASE}")
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**If `found` is false:** Error with available phases. Exit.
|
|
60
|
+
|
|
61
|
+
Display startup banner:
|
|
62
|
+
|
|
63
|
+
```text
|
|
64
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
65
|
+
GSD ► PLAN CONVERGENCE — Phase {phase_number}
|
|
66
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
67
|
+
|
|
68
|
+
Reviewers: {REVIEWER_FLAGS}
|
|
69
|
+
Max cycles: {MAX_CYCLES}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 4. Initial Planning (if no plans exist)
|
|
73
|
+
|
|
74
|
+
**If `has_plans` is true:** Skip to step 5. Display: `Plans found: {plan_count} PLAN.md files — skipping initial planning.`
|
|
75
|
+
|
|
76
|
+
**If `has_plans` is false:**
|
|
77
|
+
|
|
78
|
+
Display: `◆ No plans found — spawning initial planning agent...`
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
Agent(
|
|
82
|
+
description="Initial planning Phase {PHASE}",
|
|
83
|
+
prompt="Run /gsd-plan-phase for Phase {PHASE}.
|
|
84
|
+
|
|
85
|
+
Execute: Skill(skill='gsd-plan-phase', args='{PHASE} {GSD_WS}')
|
|
86
|
+
|
|
87
|
+
Complete the full planning workflow. Do NOT return until planning is complete and PLAN.md files are committed.",
|
|
88
|
+
mode="auto"
|
|
89
|
+
)
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
After agent returns, verify plans were created:
|
|
93
|
+
```bash
|
|
94
|
+
PLAN_COUNT=$(ls ${phase_dir}/${padded_phase}-*-PLAN.md 2>/dev/null | wc -l)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
If PLAN_COUNT == 0: Error — initial planning failed. Exit.
|
|
98
|
+
|
|
99
|
+
Display: `Initial planning complete: ${PLAN_COUNT} PLAN.md files created.`
|
|
100
|
+
|
|
101
|
+
## 5. Convergence Loop
|
|
102
|
+
|
|
103
|
+
Initialize loop variables:
|
|
104
|
+
|
|
105
|
+
```text
|
|
106
|
+
cycle = 0
|
|
107
|
+
prev_high_count = Infinity
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
### 5a. Review (Spawn Agent)
|
|
111
|
+
|
|
112
|
+
Increment `cycle`.
|
|
113
|
+
|
|
114
|
+
Display: `◆ Cycle {cycle}/{MAX_CYCLES} — spawning review agent...`
|
|
115
|
+
|
|
116
|
+
```text
|
|
117
|
+
Agent(
|
|
118
|
+
description="Cross-AI review Phase {PHASE} cycle {cycle}",
|
|
119
|
+
prompt="Run /gsd-review for Phase {PHASE}.
|
|
120
|
+
|
|
121
|
+
Execute: Skill(skill='gsd-review', args='--phase {PHASE} {REVIEWER_FLAGS} {GSD_WS}')
|
|
122
|
+
|
|
123
|
+
Complete the full review workflow. Do NOT return until REVIEWS.md is committed.",
|
|
124
|
+
mode="auto"
|
|
125
|
+
)
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
After agent returns, verify REVIEWS.md exists:
|
|
129
|
+
```bash
|
|
130
|
+
REVIEWS_FILE=$(ls ${phase_dir}/${padded_phase}-REVIEWS.md 2>/dev/null)
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
If REVIEWS_FILE is empty: Error — review agent did not produce REVIEWS.md. Exit.
|
|
134
|
+
|
|
135
|
+
### 5b. Check for HIGH Concerns
|
|
136
|
+
|
|
137
|
+
```bash
|
|
138
|
+
HIGH_COUNT=$(grep -c '\*\*HIGH' "${REVIEWS_FILE}" 2>/dev/null || true)
|
|
139
|
+
HIGH_COUNT=${HIGH_COUNT:-0}
|
|
140
|
+
HIGH_LINES=$(grep -B0 -A1 '\*\*HIGH' "${REVIEWS_FILE}" 2>/dev/null)
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**If HIGH_COUNT == 0 (converged):**
|
|
144
|
+
|
|
145
|
+
```bash
|
|
146
|
+
node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" state planned-phase --phase "${PHASE}" --name "${phase_name}" --plans "${PLAN_COUNT}"
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
Display:
|
|
150
|
+
```text
|
|
151
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
152
|
+
GSD ► CONVERGENCE COMPLETE ✓
|
|
153
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
154
|
+
|
|
155
|
+
Phase {phase_number} converged in {cycle} cycle(s).
|
|
156
|
+
No HIGH concerns remaining.
|
|
157
|
+
|
|
158
|
+
REVIEWS.md: {REVIEWS_FILE}
|
|
159
|
+
Next: /gsd-execute-phase {PHASE}
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
Exit — convergence achieved.
|
|
163
|
+
|
|
164
|
+
**If HIGH_COUNT > 0:** Continue to 5c.
|
|
165
|
+
|
|
166
|
+
### 5c. Stall Detection + Escalation Check
|
|
167
|
+
|
|
168
|
+
Display: `◆ Cycle {cycle}/{MAX_CYCLES} — {HIGH_COUNT} HIGH concerns found`
|
|
169
|
+
|
|
170
|
+
**Stall detection:** If `HIGH_COUNT >= prev_high_count`:
|
|
171
|
+
```text
|
|
172
|
+
⚠ Convergence stalled — HIGH concern count not decreasing
|
|
173
|
+
({HIGH_COUNT} HIGH concerns, previous cycle had {prev_high_count})
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**Max cycles check:** If `cycle >= MAX_CYCLES`:
|
|
177
|
+
|
|
178
|
+
If `TEXT_MODE` is true, present as plain-text numbered list:
|
|
179
|
+
```text
|
|
180
|
+
Plan convergence did not complete after {MAX_CYCLES} cycles.
|
|
181
|
+
{HIGH_COUNT} HIGH concerns remain:
|
|
182
|
+
|
|
183
|
+
{HIGH_LINES}
|
|
184
|
+
|
|
185
|
+
How would you like to proceed?
|
|
186
|
+
|
|
187
|
+
1. Proceed anyway — Accept plans with remaining HIGH concerns and move to execution
|
|
188
|
+
2. Manual review — Stop here, review REVIEWS.md and address concerns manually
|
|
189
|
+
|
|
190
|
+
Enter number:
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
Otherwise use AskUserQuestion:
|
|
194
|
+
```js
|
|
195
|
+
AskUserQuestion([
|
|
196
|
+
{
|
|
197
|
+
question: "Plan convergence did not complete after {MAX_CYCLES} cycles. {HIGH_COUNT} HIGH concerns remain:\n\n{HIGH_LINES}\n\nHow would you like to proceed?",
|
|
198
|
+
header: "Convergence",
|
|
199
|
+
multiSelect: false,
|
|
200
|
+
options: [
|
|
201
|
+
{ label: "Proceed anyway", description: "Accept plans with remaining HIGH concerns and move to execution" },
|
|
202
|
+
{ label: "Manual review", description: "Stop here — review REVIEWS.md and address concerns manually" }
|
|
203
|
+
]
|
|
204
|
+
}
|
|
205
|
+
])
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
If "Proceed anyway": Display final status and exit.
|
|
209
|
+
If "Manual review":
|
|
210
|
+
```text
|
|
211
|
+
Review the concerns in: {REVIEWS_FILE}
|
|
212
|
+
|
|
213
|
+
To replan manually: /gsd-plan-phase {PHASE} --reviews
|
|
214
|
+
To restart loop: /gsd-plan-review-convergence {PHASE} {REVIEWER_FLAGS}
|
|
215
|
+
```
|
|
216
|
+
Exit workflow.
|
|
217
|
+
|
|
218
|
+
### 5d. Replan (Spawn Agent)
|
|
219
|
+
|
|
220
|
+
**If under max cycles:**
|
|
221
|
+
|
|
222
|
+
Update `prev_high_count = HIGH_COUNT`.
|
|
223
|
+
|
|
224
|
+
Display: `◆ Spawning replan agent with review feedback...`
|
|
225
|
+
|
|
226
|
+
```text
|
|
227
|
+
Agent(
|
|
228
|
+
description="Replan Phase {PHASE} with review feedback cycle {cycle}",
|
|
229
|
+
prompt="Run /gsd-plan-phase with --reviews for Phase {PHASE}.
|
|
230
|
+
|
|
231
|
+
Execute: Skill(skill='gsd-plan-phase', args='{PHASE} --reviews --skip-research {GSD_WS}')
|
|
232
|
+
|
|
233
|
+
This will replan incorporating cross-AI review feedback from REVIEWS.md.
|
|
234
|
+
Do NOT return until replanning is complete and updated PLAN.md files are committed.
|
|
235
|
+
|
|
236
|
+
IMPORTANT: When gsd-plan-phase outputs '## PLANNING COMPLETE', that means replanning is done. Return at that point.",
|
|
237
|
+
mode="auto"
|
|
238
|
+
)
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
After agent returns → go back to **step 5a** (review again).
|
|
242
|
+
|
|
243
|
+
</process>
|
|
244
|
+
|
|
245
|
+
<success_criteria>
|
|
246
|
+
- [ ] Initial planning via Agent → Skill("gsd-plan-phase") if no plans exist
|
|
247
|
+
- [ ] Review via Agent → Skill("gsd-review") — isolated, not inline
|
|
248
|
+
- [ ] Replan via Agent → Skill("gsd-plan-phase --reviews") — isolated, not inline
|
|
249
|
+
- [ ] Orchestrator only does: init, loop control, grep HIGHs, stall detection, escalation
|
|
250
|
+
- [ ] Each Agent fully completes its Skill before returning
|
|
251
|
+
- [ ] Loop exits on: no HIGH concerns (converged) OR max cycles (escalation)
|
|
252
|
+
- [ ] Stall detection reported when HIGH count not decreasing
|
|
253
|
+
- [ ] STATE.md updated on convergence completion
|
|
254
|
+
</success_criteria>
|
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Capture a forward-looking idea as a structured seed file with trigger conditions.
|
|
3
|
+
Seeds auto-surface during /gsd-new-milestone when trigger conditions match the
|
|
4
|
+
new milestone's scope.
|
|
5
|
+
|
|
6
|
+
Seeds beat deferred items because they:
|
|
7
|
+
- Preserve WHY the idea matters (not just WHAT)
|
|
8
|
+
- Define WHEN to surface (trigger conditions, not manual scanning)
|
|
9
|
+
- Track breadcrumbs (code references, related decisions)
|
|
10
|
+
- Auto-present at the right time via new-milestone scan
|
|
11
|
+
</purpose>
|
|
12
|
+
|
|
13
|
+
<process>
|
|
14
|
+
|
|
15
|
+
<step name="parse_idea">
|
|
16
|
+
Parse `$ARGUMENTS` for the idea summary.
|
|
17
|
+
|
|
18
|
+
If empty, ask:
|
|
19
|
+
```
|
|
20
|
+
What's the idea? (one sentence)
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
Store as `$IDEA`.
|
|
24
|
+
</step>
|
|
25
|
+
|
|
26
|
+
<step name="create_seed_dir">
|
|
27
|
+
```bash
|
|
28
|
+
mkdir -p .planning/seeds
|
|
29
|
+
```
|
|
30
|
+
</step>
|
|
31
|
+
|
|
32
|
+
<step name="gather_context">
|
|
33
|
+
Ask focused questions to build a complete seed:
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
**Text mode (`workflow.text_mode: true` in config or `--text` flag):** Set `TEXT_MODE=true` if `--text` is present in `$ARGUMENTS` OR `text_mode` from init JSON is `true`. When TEXT_MODE is active, replace every `AskUserQuestion` call with a plain-text numbered list and ask the user to type their choice number. This is required for non-Claude runtimes (OpenAI Codex, Gemini CLI, etc.) where `AskUserQuestion` is not available.
|
|
37
|
+
|
|
38
|
+
```
|
|
39
|
+
AskUserQuestion(
|
|
40
|
+
header: "Trigger",
|
|
41
|
+
question: "When should this idea surface? (e.g., 'when we add user accounts', 'next major version', 'when performance becomes a priority')",
|
|
42
|
+
options: [] // freeform
|
|
43
|
+
)
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Store as `$TRIGGER`.
|
|
47
|
+
|
|
48
|
+
```
|
|
49
|
+
AskUserQuestion(
|
|
50
|
+
header: "Why",
|
|
51
|
+
question: "Why does this matter? What problem does it solve or what opportunity does it create?",
|
|
52
|
+
options: []
|
|
53
|
+
)
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
Store as `$WHY`.
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
AskUserQuestion(
|
|
60
|
+
header: "Scope",
|
|
61
|
+
question: "How big is this? (rough estimate)",
|
|
62
|
+
options: [
|
|
63
|
+
{ label: "Small", description: "A few hours — could be a quick task" },
|
|
64
|
+
{ label: "Medium", description: "A phase or two — needs planning" },
|
|
65
|
+
{ label: "Large", description: "A full milestone — significant effort" }
|
|
66
|
+
]
|
|
67
|
+
)
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Store as `$SCOPE`.
|
|
71
|
+
</step>
|
|
72
|
+
|
|
73
|
+
<step name="collect_breadcrumbs">
|
|
74
|
+
Search the codebase for relevant references:
|
|
75
|
+
|
|
76
|
+
```bash
|
|
77
|
+
# Find files related to the idea keywords
|
|
78
|
+
grep -rl "$KEYWORD" --include="*.ts" --include="*.js" --include="*.md" . 2>/dev/null | head -10
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Also check:
|
|
82
|
+
- Current STATE.md for related decisions
|
|
83
|
+
- ROADMAP.md for related phases
|
|
84
|
+
- todos/ for related captured ideas
|
|
85
|
+
|
|
86
|
+
Store relevant file paths as `$BREADCRUMBS`.
|
|
87
|
+
</step>
|
|
88
|
+
|
|
89
|
+
<step name="generate_seed_id">
|
|
90
|
+
```bash
|
|
91
|
+
# Find next seed number
|
|
92
|
+
EXISTING=$( (ls .planning/seeds/SEED-*.md 2>/dev/null || true) | wc -l )
|
|
93
|
+
NEXT=$((EXISTING + 1))
|
|
94
|
+
PADDED=$(printf "%03d" $NEXT)
|
|
95
|
+
```
|
|
96
|
+
|
|
97
|
+
Generate slug from idea summary.
|
|
98
|
+
</step>
|
|
99
|
+
|
|
100
|
+
<step name="write_seed">
|
|
101
|
+
Write `.planning/seeds/SEED-{PADDED}-{slug}.md`:
|
|
102
|
+
|
|
103
|
+
```markdown
|
|
104
|
+
---
|
|
105
|
+
id: SEED-{PADDED}
|
|
106
|
+
status: dormant
|
|
107
|
+
planted: {ISO date}
|
|
108
|
+
planted_during: {current milestone/phase from STATE.md}
|
|
109
|
+
trigger_when: {$TRIGGER}
|
|
110
|
+
scope: {$SCOPE}
|
|
111
|
+
---
|
|
112
|
+
|
|
113
|
+
# SEED-{PADDED}: {$IDEA}
|
|
114
|
+
|
|
115
|
+
## Why This Matters
|
|
116
|
+
|
|
117
|
+
{$WHY}
|
|
118
|
+
|
|
119
|
+
## When to Surface
|
|
120
|
+
|
|
121
|
+
**Trigger:** {$TRIGGER}
|
|
122
|
+
|
|
123
|
+
This seed should be presented during `/gsd-new-milestone` when the milestone
|
|
124
|
+
scope matches any of these conditions:
|
|
125
|
+
- {trigger condition 1}
|
|
126
|
+
- {trigger condition 2}
|
|
127
|
+
|
|
128
|
+
## Scope Estimate
|
|
129
|
+
|
|
130
|
+
**{$SCOPE}** — {elaboration based on scope choice}
|
|
131
|
+
|
|
132
|
+
## Breadcrumbs
|
|
133
|
+
|
|
134
|
+
Related code and decisions found in the current codebase:
|
|
135
|
+
|
|
136
|
+
{list of $BREADCRUMBS with file paths}
|
|
137
|
+
|
|
138
|
+
## Notes
|
|
139
|
+
|
|
140
|
+
{any additional context from the current session}
|
|
141
|
+
```
|
|
142
|
+
</step>
|
|
143
|
+
|
|
144
|
+
<step name="commit_seed">
|
|
145
|
+
```bash
|
|
146
|
+
gsd-remix-sdk query commit "docs: plant seed — {$IDEA}" .planning/seeds/SEED-{PADDED}-{slug}.md
|
|
147
|
+
```
|
|
148
|
+
</step>
|
|
149
|
+
|
|
150
|
+
<step name="confirm">
|
|
151
|
+
```
|
|
152
|
+
✅ Seed planted: SEED-{PADDED}
|
|
153
|
+
|
|
154
|
+
"{$IDEA}"
|
|
155
|
+
Trigger: {$TRIGGER}
|
|
156
|
+
Scope: {$SCOPE}
|
|
157
|
+
File: .planning/seeds/SEED-{PADDED}-{slug}.md
|
|
158
|
+
|
|
159
|
+
This seed will surface automatically when you run /gsd-new-milestone
|
|
160
|
+
and the milestone scope matches the trigger condition.
|
|
161
|
+
```
|
|
162
|
+
</step>
|
|
163
|
+
|
|
164
|
+
</process>
|
|
165
|
+
|
|
166
|
+
<success_criteria>
|
|
167
|
+
- [ ] Seed file created in .planning/seeds/
|
|
168
|
+
- [ ] Frontmatter includes status, trigger, scope
|
|
169
|
+
- [ ] Breadcrumbs collected from codebase
|
|
170
|
+
- [ ] Committed to git
|
|
171
|
+
- [ ] User shown confirmation with trigger info
|
|
172
|
+
</success_criteria>
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Create a clean branch for pull requests by filtering out transient .planning/ commits.
|
|
3
|
+
The PR branch contains only code changes and structural planning state — reviewers
|
|
4
|
+
don't see GSD transient artifacts (PLAN.md, SUMMARY.md, CONTEXT.md, RESEARCH.md, etc.)
|
|
5
|
+
but milestone archives, STATE.md, ROADMAP.md, and PROJECT.md changes are preserved.
|
|
6
|
+
|
|
7
|
+
Uses git cherry-pick with path filtering to rebuild a clean history.
|
|
8
|
+
</purpose>
|
|
9
|
+
|
|
10
|
+
<process>
|
|
11
|
+
|
|
12
|
+
<step name="detect_state">
|
|
13
|
+
Parse `$ARGUMENTS` for target branch (default: `main`).
|
|
14
|
+
|
|
15
|
+
```bash
|
|
16
|
+
CURRENT_BRANCH=$(git branch --show-current)
|
|
17
|
+
TARGET=${1:-main}
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Check preconditions:
|
|
21
|
+
- Must be on a feature branch (not main/master)
|
|
22
|
+
- Must have commits ahead of target
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
AHEAD=$(git rev-list --count "$TARGET".."$CURRENT_BRANCH" 2>/dev/null)
|
|
26
|
+
if [ "$AHEAD" = "0" ]; then
|
|
27
|
+
echo "No commits ahead of $TARGET — nothing to filter."
|
|
28
|
+
exit 0
|
|
29
|
+
fi
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Display:
|
|
33
|
+
```
|
|
34
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
35
|
+
GSD ► PR BRANCH
|
|
36
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
37
|
+
|
|
38
|
+
Branch: {CURRENT_BRANCH}
|
|
39
|
+
Target: {TARGET}
|
|
40
|
+
Commits: {AHEAD} ahead
|
|
41
|
+
```
|
|
42
|
+
</step>
|
|
43
|
+
|
|
44
|
+
<step name="analyze_commits">
|
|
45
|
+
Classify commits:
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# Get all commits ahead of target
|
|
49
|
+
git log --oneline "$TARGET".."$CURRENT_BRANCH" --no-merges
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
**Structural planning files** — always preserved (repository planning state):
|
|
53
|
+
- `.planning/STATE.md`
|
|
54
|
+
- `.planning/ROADMAP.md`
|
|
55
|
+
- `.planning/MILESTONES.md`
|
|
56
|
+
- `.planning/PROJECT.md`
|
|
57
|
+
- `.planning/REQUIREMENTS.md`
|
|
58
|
+
- `.planning/milestones/**`
|
|
59
|
+
|
|
60
|
+
**Transient planning files** — excluded from PR branch (reviewer noise):
|
|
61
|
+
- `.planning/phases/**` (PLAN.md, SUMMARY.md, CONTEXT.md, RESEARCH.md, etc.)
|
|
62
|
+
- `.planning/quick/**`
|
|
63
|
+
- `.planning/research/**`
|
|
64
|
+
- `.planning/threads/**`
|
|
65
|
+
- `.planning/todos/**`
|
|
66
|
+
- `.planning/debug/**`
|
|
67
|
+
- `.planning/seeds/**`
|
|
68
|
+
- `.planning/codebase/**`
|
|
69
|
+
- `.planning/ui-reviews/**`
|
|
70
|
+
|
|
71
|
+
For each commit, check what it touches:
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# For each commit hash
|
|
75
|
+
FILES=$(git diff-tree --no-commit-id --name-only -r $HASH)
|
|
76
|
+
NON_PLANNING=$(echo "$FILES" | grep -v "^\.planning/" | wc -l)
|
|
77
|
+
STRUCTURAL=$(echo "$FILES" | grep -E "^\.planning/(STATE|ROADMAP|MILESTONES|PROJECT|REQUIREMENTS)\.md|^\.planning/milestones/" | wc -l)
|
|
78
|
+
TRANSIENT_ONLY=$(echo "$FILES" | grep "^\.planning/" | grep -vE "^\.planning/(STATE|ROADMAP|MILESTONES|PROJECT|REQUIREMENTS)\.md|^\.planning/milestones/" | wc -l)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Classify:
|
|
82
|
+
- **Code commits**: Touch at least one non-.planning/ file → INCLUDE
|
|
83
|
+
- **Structural planning commits**: Touch only structural .planning/ files (STATE.md, ROADMAP.md, MILESTONES.md, PROJECT.md, REQUIREMENTS.md, milestones/**) → INCLUDE
|
|
84
|
+
- **Transient planning commits**: Touch only transient .planning/ files (phases/, quick/, research/, etc.) → EXCLUDE
|
|
85
|
+
- **Mixed commits**: Touch code + any planning files → INCLUDE (transient planning changes come along; acceptable in mixed context)
|
|
86
|
+
|
|
87
|
+
Display analysis:
|
|
88
|
+
```
|
|
89
|
+
Commits to include: {N} (code changes + structural planning)
|
|
90
|
+
Commits to exclude: {N} (transient planning-only)
|
|
91
|
+
Mixed commits: {N} (code + planning — included)
|
|
92
|
+
Structural planning commits: {N} (STATE/ROADMAP/milestone updates — included)
|
|
93
|
+
```
|
|
94
|
+
</step>
|
|
95
|
+
|
|
96
|
+
<step name="create_pr_branch">
|
|
97
|
+
```bash
|
|
98
|
+
PR_BRANCH="${CURRENT_BRANCH}-pr"
|
|
99
|
+
|
|
100
|
+
# Create PR branch from target
|
|
101
|
+
git checkout -b "$PR_BRANCH" "$TARGET"
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Cherry-pick code commits and structural planning commits (in order):
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
for HASH in $CODE_AND_STRUCTURAL_COMMITS; do
|
|
108
|
+
git cherry-pick "$HASH" --no-commit
|
|
109
|
+
# Remove only transient .planning/ subdirectories that came along in mixed commits.
|
|
110
|
+
# DO NOT remove structural files (STATE.md, ROADMAP.md, MILESTONES.md, PROJECT.md,
|
|
111
|
+
# REQUIREMENTS.md, milestones/) — these must survive into the PR branch.
|
|
112
|
+
for dir in phases quick research threads todos debug seeds codebase ui-reviews; do
|
|
113
|
+
git rm -r --cached ".planning/$dir/" 2>/dev/null || true
|
|
114
|
+
done
|
|
115
|
+
git commit -C "$HASH"
|
|
116
|
+
done
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Return to original branch:
|
|
120
|
+
```bash
|
|
121
|
+
git checkout "$CURRENT_BRANCH"
|
|
122
|
+
```
|
|
123
|
+
</step>
|
|
124
|
+
|
|
125
|
+
<step name="verify">
|
|
126
|
+
```bash
|
|
127
|
+
# Verify no .planning/ files in PR branch
|
|
128
|
+
PLANNING_FILES=$(git diff --name-only "$TARGET".."$PR_BRANCH" | grep "^\.planning/" | wc -l)
|
|
129
|
+
TOTAL_FILES=$(git diff --name-only "$TARGET".."$PR_BRANCH" | wc -l)
|
|
130
|
+
PR_COMMITS=$(git rev-list --count "$TARGET".."$PR_BRANCH")
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
Display results:
|
|
134
|
+
```
|
|
135
|
+
✅ PR branch created: {PR_BRANCH}
|
|
136
|
+
|
|
137
|
+
Original: {AHEAD} commits, {ORIGINAL_FILES} files
|
|
138
|
+
PR branch: {PR_COMMITS} commits, {TOTAL_FILES} files
|
|
139
|
+
Planning files: {PLANNING_FILES} (should be 0)
|
|
140
|
+
|
|
141
|
+
Next steps:
|
|
142
|
+
git push origin {PR_BRANCH}
|
|
143
|
+
gh pr create --base {TARGET} --head {PR_BRANCH}
|
|
144
|
+
|
|
145
|
+
Or use /gsd-ship to create the PR automatically.
|
|
146
|
+
```
|
|
147
|
+
</step>
|
|
148
|
+
|
|
149
|
+
</process>
|
|
150
|
+
|
|
151
|
+
<success_criteria>
|
|
152
|
+
- [ ] PR branch created from target
|
|
153
|
+
- [ ] Planning-only commits excluded
|
|
154
|
+
- [ ] No .planning/ files in PR branch diff
|
|
155
|
+
- [ ] Commit messages preserved from original
|
|
156
|
+
- [ ] User shown next steps
|
|
157
|
+
</success_criteria>
|