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,344 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Cross-AI peer review — invoke external AI CLIs to independently review phase plans.
|
|
3
|
+
Each CLI gets the same prompt (PROJECT.md context, phase plans, requirements) and
|
|
4
|
+
produces structured feedback. Results are combined into REVIEWS.md for the planner
|
|
5
|
+
to incorporate via --reviews flag.
|
|
6
|
+
|
|
7
|
+
This implements adversarial review: different AI models catch different blind spots.
|
|
8
|
+
A plan that survives review from 2-3 independent AI systems is more robust.
|
|
9
|
+
</purpose>
|
|
10
|
+
|
|
11
|
+
<process>
|
|
12
|
+
|
|
13
|
+
<step name="detect_clis">
|
|
14
|
+
Check which AI CLIs are available on the system:
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# Check each CLI
|
|
18
|
+
command -v gemini >/dev/null 2>&1 && echo "gemini:available" || echo "gemini:missing"
|
|
19
|
+
command -v claude >/dev/null 2>&1 && echo "claude:available" || echo "claude:missing"
|
|
20
|
+
command -v codex >/dev/null 2>&1 && echo "codex:available" || echo "codex:missing"
|
|
21
|
+
command -v coderabbit >/dev/null 2>&1 && echo "coderabbit:available" || echo "coderabbit:missing"
|
|
22
|
+
command -v opencode >/dev/null 2>&1 && echo "opencode:available" || echo "opencode:missing"
|
|
23
|
+
command -v qwen >/dev/null 2>&1 && echo "qwen:available" || echo "qwen:missing"
|
|
24
|
+
command -v cursor >/dev/null 2>&1 && echo "cursor:available" || echo "cursor:missing"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Parse flags from `$ARGUMENTS`:
|
|
28
|
+
- `--gemini` → include Gemini
|
|
29
|
+
- `--claude` → include Claude
|
|
30
|
+
- `--codex` → include Codex
|
|
31
|
+
- `--coderabbit` → include CodeRabbit
|
|
32
|
+
- `--opencode` → include OpenCode
|
|
33
|
+
- `--qwen` → include Qwen Code
|
|
34
|
+
- `--cursor` → include Cursor
|
|
35
|
+
- `--all` → include all available
|
|
36
|
+
- No flags → include all available
|
|
37
|
+
|
|
38
|
+
If no CLIs are available:
|
|
39
|
+
```
|
|
40
|
+
No external AI CLIs found. Install at least one:
|
|
41
|
+
- gemini: https://github.com/google-gemini/gemini-cli
|
|
42
|
+
- codex: https://github.com/openai/codex
|
|
43
|
+
- claude: https://github.com/anthropics/claude-code
|
|
44
|
+
- opencode: https://opencode.ai (leverages GitHub Copilot subscription models)
|
|
45
|
+
- qwen: https://github.com/nicepkg/qwen-code (Alibaba Qwen models)
|
|
46
|
+
- cursor: https://cursor.com (Cursor IDE agent mode)
|
|
47
|
+
|
|
48
|
+
Then run /gsd-review again.
|
|
49
|
+
```
|
|
50
|
+
Exit.
|
|
51
|
+
|
|
52
|
+
Determine which CLI to skip based on the current runtime environment:
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Environment-based runtime detection (priority order)
|
|
56
|
+
if [ "$ANTIGRAVITY_AGENT" = "1" ]; then
|
|
57
|
+
# Antigravity is a separate client — all CLIs are external, skip none
|
|
58
|
+
SELF_CLI="none"
|
|
59
|
+
elif [ -n "$CURSOR_SESSION_ID" ]; then
|
|
60
|
+
# Running inside Cursor agent — skip cursor for independence
|
|
61
|
+
SELF_CLI="cursor"
|
|
62
|
+
elif [ -n "$CLAUDE_CODE_ENTRYPOINT" ]; then
|
|
63
|
+
# Running inside Claude Code CLI — skip claude for independence
|
|
64
|
+
SELF_CLI="claude"
|
|
65
|
+
else
|
|
66
|
+
# Other environments (Gemini CLI, Codex CLI, etc.)
|
|
67
|
+
# Fall back to AI self-identification to decide which CLI to skip
|
|
68
|
+
SELF_CLI="auto"
|
|
69
|
+
fi
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Rules:
|
|
73
|
+
- If `SELF_CLI="none"` → invoke ALL available CLIs (no skip)
|
|
74
|
+
- If `SELF_CLI="claude"` → skip claude, use gemini/codex
|
|
75
|
+
- If `SELF_CLI="auto"` → the executing AI identifies itself and skips its own CLI
|
|
76
|
+
- At least one DIFFERENT CLI must be available for the review to proceed.
|
|
77
|
+
</step>
|
|
78
|
+
|
|
79
|
+
<step name="gather_context">
|
|
80
|
+
Collect phase artifacts for the review prompt:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
INIT=$(gsd-remix-sdk query init.phase-op "${PHASE_ARG}")
|
|
84
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Read from init: `phase_dir`, `phase_number`, `padded_phase`.
|
|
88
|
+
|
|
89
|
+
Then read:
|
|
90
|
+
1. `.planning/PROJECT.md` (first 80 lines — project context)
|
|
91
|
+
2. Phase section from `.planning/ROADMAP.md`
|
|
92
|
+
3. All `*-PLAN.md` files in the phase directory
|
|
93
|
+
4. `*-CONTEXT.md` if present (user decisions)
|
|
94
|
+
5. `*-RESEARCH.md` if present (domain research)
|
|
95
|
+
6. `.planning/REQUIREMENTS.md` (requirements this phase addresses)
|
|
96
|
+
</step>
|
|
97
|
+
|
|
98
|
+
<step name="build_prompt">
|
|
99
|
+
Build a structured review prompt:
|
|
100
|
+
|
|
101
|
+
```markdown
|
|
102
|
+
# Cross-AI Plan Review Request
|
|
103
|
+
|
|
104
|
+
You are reviewing implementation plans for a software project phase.
|
|
105
|
+
Provide structured feedback on plan quality, completeness, and risks.
|
|
106
|
+
|
|
107
|
+
## Project Context
|
|
108
|
+
{first 80 lines of PROJECT.md}
|
|
109
|
+
|
|
110
|
+
## Phase {N}: {phase name}
|
|
111
|
+
### Roadmap Section
|
|
112
|
+
{roadmap phase section}
|
|
113
|
+
|
|
114
|
+
### Requirements Addressed
|
|
115
|
+
{requirements for this phase}
|
|
116
|
+
|
|
117
|
+
### User Decisions (CONTEXT.md)
|
|
118
|
+
{context if present}
|
|
119
|
+
|
|
120
|
+
### Research Findings
|
|
121
|
+
{research if present}
|
|
122
|
+
|
|
123
|
+
### Plans to Review
|
|
124
|
+
{all PLAN.md contents}
|
|
125
|
+
|
|
126
|
+
## Review Instructions
|
|
127
|
+
|
|
128
|
+
Analyze each plan and provide:
|
|
129
|
+
|
|
130
|
+
1. **Summary** — One-paragraph assessment
|
|
131
|
+
2. **Strengths** — What's well-designed (bullet points)
|
|
132
|
+
3. **Concerns** — Potential issues, gaps, risks (bullet points with severity: HIGH/MEDIUM/LOW)
|
|
133
|
+
4. **Suggestions** — Specific improvements (bullet points)
|
|
134
|
+
5. **Risk Assessment** — Overall risk level (LOW/MEDIUM/HIGH) with justification
|
|
135
|
+
|
|
136
|
+
Focus on:
|
|
137
|
+
- Missing edge cases or error handling
|
|
138
|
+
- Dependency ordering issues
|
|
139
|
+
- Scope creep or over-engineering
|
|
140
|
+
- Security considerations
|
|
141
|
+
- Performance implications
|
|
142
|
+
- Whether the plans actually achieve the phase goals
|
|
143
|
+
|
|
144
|
+
Output your review in markdown format.
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
Write to a temp file: `/tmp/gsd-review-prompt-{phase}.md`
|
|
148
|
+
</step>
|
|
149
|
+
|
|
150
|
+
<step name="invoke_reviewers">
|
|
151
|
+
Read model preferences from planning config. Null/missing values fall back to CLI defaults.
|
|
152
|
+
|
|
153
|
+
```bash
|
|
154
|
+
# JSON scalars from gsd-remix-sdk query; use jq -r to strip JSON string quotes (install jq if missing)
|
|
155
|
+
GEMINI_MODEL=$(gsd-remix-sdk query config-get review.models.gemini 2>/dev/null | jq -r '.' 2>/dev/null || true)
|
|
156
|
+
CLAUDE_MODEL=$(gsd-remix-sdk query config-get review.models.claude 2>/dev/null | jq -r '.' 2>/dev/null || true)
|
|
157
|
+
CODEX_MODEL=$(gsd-remix-sdk query config-get review.models.codex 2>/dev/null | jq -r '.' 2>/dev/null || true)
|
|
158
|
+
OPENCODE_MODEL=$(gsd-remix-sdk query config-get review.models.opencode 2>/dev/null | jq -r '.' 2>/dev/null || true)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
For each selected CLI, invoke in sequence (not parallel — avoid rate limits):
|
|
162
|
+
|
|
163
|
+
**Gemini:**
|
|
164
|
+
```bash
|
|
165
|
+
if [ -n "$GEMINI_MODEL" ] && [ "$GEMINI_MODEL" != "null" ]; then
|
|
166
|
+
cat /tmp/gsd-review-prompt-{phase}.md | gemini -m "$GEMINI_MODEL" -p - 2>/dev/null > /tmp/gsd-review-gemini-{phase}.md
|
|
167
|
+
else
|
|
168
|
+
cat /tmp/gsd-review-prompt-{phase}.md | gemini -p - 2>/dev/null > /tmp/gsd-review-gemini-{phase}.md
|
|
169
|
+
fi
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
**Claude (separate session):**
|
|
173
|
+
```bash
|
|
174
|
+
if [ -n "$CLAUDE_MODEL" ] && [ "$CLAUDE_MODEL" != "null" ]; then
|
|
175
|
+
cat /tmp/gsd-review-prompt-{phase}.md | claude --model "$CLAUDE_MODEL" -p - 2>/dev/null > /tmp/gsd-review-claude-{phase}.md
|
|
176
|
+
else
|
|
177
|
+
cat /tmp/gsd-review-prompt-{phase}.md | claude -p - 2>/dev/null > /tmp/gsd-review-claude-{phase}.md
|
|
178
|
+
fi
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
**Codex:**
|
|
182
|
+
```bash
|
|
183
|
+
if [ -n "$CODEX_MODEL" ] && [ "$CODEX_MODEL" != "null" ]; then
|
|
184
|
+
cat /tmp/gsd-review-prompt-{phase}.md | codex exec --model "$CODEX_MODEL" --skip-git-repo-check - 2>/dev/null > /tmp/gsd-review-codex-{phase}.md
|
|
185
|
+
else
|
|
186
|
+
cat /tmp/gsd-review-prompt-{phase}.md | codex exec --skip-git-repo-check - 2>/dev/null > /tmp/gsd-review-codex-{phase}.md
|
|
187
|
+
fi
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
**CodeRabbit:**
|
|
191
|
+
|
|
192
|
+
Note: CodeRabbit reviews the current git diff/working tree — it does not accept a prompt or model flag. It may take up to 5 minutes. Use `timeout: 360000` on the Bash tool call.
|
|
193
|
+
|
|
194
|
+
```bash
|
|
195
|
+
coderabbit review --prompt-only 2>/dev/null > /tmp/gsd-review-coderabbit-{phase}.md
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
**OpenCode (via GitHub Copilot):**
|
|
199
|
+
```bash
|
|
200
|
+
if [ -n "$OPENCODE_MODEL" ] && [ "$OPENCODE_MODEL" != "null" ]; then
|
|
201
|
+
cat /tmp/gsd-review-prompt-{phase}.md | opencode run --model "$OPENCODE_MODEL" - 2>/dev/null > /tmp/gsd-review-opencode-{phase}.md
|
|
202
|
+
else
|
|
203
|
+
cat /tmp/gsd-review-prompt-{phase}.md | opencode run - 2>/dev/null > /tmp/gsd-review-opencode-{phase}.md
|
|
204
|
+
fi
|
|
205
|
+
if [ ! -s /tmp/gsd-review-opencode-{phase}.md ]; then
|
|
206
|
+
echo "OpenCode review failed or returned empty output." > /tmp/gsd-review-opencode-{phase}.md
|
|
207
|
+
fi
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
**Qwen Code:**
|
|
211
|
+
```bash
|
|
212
|
+
cat /tmp/gsd-review-prompt-{phase}.md | qwen - 2>/dev/null > /tmp/gsd-review-qwen-{phase}.md
|
|
213
|
+
if [ ! -s /tmp/gsd-review-qwen-{phase}.md ]; then
|
|
214
|
+
echo "Qwen review failed or returned empty output." > /tmp/gsd-review-qwen-{phase}.md
|
|
215
|
+
fi
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
**Cursor:**
|
|
219
|
+
```bash
|
|
220
|
+
cat /tmp/gsd-review-prompt-{phase}.md | cursor agent -p --mode ask --trust 2>/dev/null > /tmp/gsd-review-cursor-{phase}.md
|
|
221
|
+
if [ ! -s /tmp/gsd-review-cursor-{phase}.md ]; then
|
|
222
|
+
echo "Cursor review failed or returned empty output." > /tmp/gsd-review-cursor-{phase}.md
|
|
223
|
+
fi
|
|
224
|
+
```
|
|
225
|
+
|
|
226
|
+
If a CLI fails, log the error and continue with remaining CLIs.
|
|
227
|
+
|
|
228
|
+
Display progress:
|
|
229
|
+
```
|
|
230
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
231
|
+
GSD ► CROSS-AI REVIEW — Phase {N}
|
|
232
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
233
|
+
|
|
234
|
+
◆ Reviewing with {CLI}... done ✓
|
|
235
|
+
◆ Reviewing with {CLI}... done ✓
|
|
236
|
+
```
|
|
237
|
+
</step>
|
|
238
|
+
|
|
239
|
+
<step name="write_reviews">
|
|
240
|
+
Combine all review responses into `{phase_dir}/{padded_phase}-REVIEWS.md`:
|
|
241
|
+
|
|
242
|
+
```markdown
|
|
243
|
+
---
|
|
244
|
+
phase: {N}
|
|
245
|
+
reviewers: [gemini, claude, codex, coderabbit, opencode, qwen, cursor]
|
|
246
|
+
reviewed_at: {ISO timestamp}
|
|
247
|
+
plans_reviewed: [{list of PLAN.md files}]
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
# Cross-AI Plan Review — Phase {N}
|
|
251
|
+
|
|
252
|
+
## Gemini Review
|
|
253
|
+
|
|
254
|
+
{gemini review content}
|
|
255
|
+
|
|
256
|
+
---
|
|
257
|
+
|
|
258
|
+
## Claude Review
|
|
259
|
+
|
|
260
|
+
{claude review content}
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## Codex Review
|
|
265
|
+
|
|
266
|
+
{codex review content}
|
|
267
|
+
|
|
268
|
+
---
|
|
269
|
+
|
|
270
|
+
## CodeRabbit Review
|
|
271
|
+
|
|
272
|
+
{coderabbit review content}
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
## OpenCode Review
|
|
277
|
+
|
|
278
|
+
{opencode review content}
|
|
279
|
+
|
|
280
|
+
---
|
|
281
|
+
|
|
282
|
+
## Qwen Review
|
|
283
|
+
|
|
284
|
+
{qwen review content}
|
|
285
|
+
|
|
286
|
+
---
|
|
287
|
+
|
|
288
|
+
## Cursor Review
|
|
289
|
+
|
|
290
|
+
{cursor review content}
|
|
291
|
+
|
|
292
|
+
---
|
|
293
|
+
|
|
294
|
+
## Consensus Summary
|
|
295
|
+
|
|
296
|
+
{synthesize common concerns across all reviewers}
|
|
297
|
+
|
|
298
|
+
### Agreed Strengths
|
|
299
|
+
{strengths mentioned by 2+ reviewers}
|
|
300
|
+
|
|
301
|
+
### Agreed Concerns
|
|
302
|
+
{concerns raised by 2+ reviewers — highest priority}
|
|
303
|
+
|
|
304
|
+
### Divergent Views
|
|
305
|
+
{where reviewers disagreed — worth investigating}
|
|
306
|
+
```
|
|
307
|
+
|
|
308
|
+
Commit:
|
|
309
|
+
```bash
|
|
310
|
+
gsd-remix-sdk query commit "docs: cross-AI review for phase {N}" {phase_dir}/{padded_phase}-REVIEWS.md
|
|
311
|
+
```
|
|
312
|
+
</step>
|
|
313
|
+
|
|
314
|
+
<step name="present_results">
|
|
315
|
+
Display summary:
|
|
316
|
+
|
|
317
|
+
```
|
|
318
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
319
|
+
GSD ► REVIEW COMPLETE
|
|
320
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
321
|
+
|
|
322
|
+
Phase {N} reviewed by {count} AI systems.
|
|
323
|
+
|
|
324
|
+
Consensus concerns:
|
|
325
|
+
{top 3 shared concerns}
|
|
326
|
+
|
|
327
|
+
Full review: {padded_phase}-REVIEWS.md
|
|
328
|
+
|
|
329
|
+
To incorporate feedback into planning:
|
|
330
|
+
/gsd-plan-phase {N} --reviews
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
Clean up temp files.
|
|
334
|
+
</step>
|
|
335
|
+
|
|
336
|
+
</process>
|
|
337
|
+
|
|
338
|
+
<success_criteria>
|
|
339
|
+
- [ ] At least one external CLI invoked successfully
|
|
340
|
+
- [ ] REVIEWS.md written with structured feedback
|
|
341
|
+
- [ ] Consensus summary synthesized from multiple reviewers
|
|
342
|
+
- [ ] Temp files cleaned up
|
|
343
|
+
- [ ] User knows how to use feedback (/gsd-plan-phase --reviews)
|
|
344
|
+
</success_criteria>
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Lightweight codebase assessment. Spawns a single gsd-codebase-mapper agent for one focus area,
|
|
3
|
+
producing targeted documents in `.planning/codebase/`.
|
|
4
|
+
</purpose>
|
|
5
|
+
|
|
6
|
+
<required_reading>
|
|
7
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
8
|
+
</required_reading>
|
|
9
|
+
|
|
10
|
+
<available_agent_types>
|
|
11
|
+
Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'):
|
|
12
|
+
- gsd-codebase-mapper — Maps project structure and dependencies
|
|
13
|
+
</available_agent_types>
|
|
14
|
+
|
|
15
|
+
<process>
|
|
16
|
+
|
|
17
|
+
## Focus-to-Document Mapping
|
|
18
|
+
|
|
19
|
+
| Focus | Documents Produced |
|
|
20
|
+
|-------|-------------------|
|
|
21
|
+
| `tech` | STACK.md, INTEGRATIONS.md |
|
|
22
|
+
| `arch` | ARCHITECTURE.md, STRUCTURE.md |
|
|
23
|
+
| `quality` | CONVENTIONS.md, TESTING.md |
|
|
24
|
+
| `concerns` | CONCERNS.md |
|
|
25
|
+
| `tech+arch` | STACK.md, INTEGRATIONS.md, ARCHITECTURE.md, STRUCTURE.md |
|
|
26
|
+
|
|
27
|
+
## Step 1: Parse arguments and resolve focus
|
|
28
|
+
|
|
29
|
+
Parse the user's input for `--focus <area>`. Default to `tech+arch` if not specified.
|
|
30
|
+
|
|
31
|
+
Validate that the focus is one of: `tech`, `arch`, `quality`, `concerns`, `tech+arch`.
|
|
32
|
+
|
|
33
|
+
If invalid:
|
|
34
|
+
```
|
|
35
|
+
Unknown focus area: "{input}". Valid options: tech, arch, quality, concerns, tech+arch
|
|
36
|
+
```
|
|
37
|
+
Exit.
|
|
38
|
+
|
|
39
|
+
## Step 2: Check for existing documents
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
INIT=$(gsd-remix-sdk query init.map-codebase 2>/dev/null || echo "{}")
|
|
43
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Look up which documents would be produced for the selected focus (from the mapping table above).
|
|
47
|
+
|
|
48
|
+
For each target document, check if it already exists in `.planning/codebase/`:
|
|
49
|
+
```bash
|
|
50
|
+
ls -la .planning/codebase/{DOCUMENT}.md 2>/dev/null
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
If any exist, show their modification dates and ask:
|
|
54
|
+
```
|
|
55
|
+
Existing documents found:
|
|
56
|
+
- STACK.md (modified 2026-04-03)
|
|
57
|
+
- INTEGRATIONS.md (modified 2026-04-01)
|
|
58
|
+
|
|
59
|
+
Overwrite with fresh scan? [y/N]
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
If user says no, exit.
|
|
63
|
+
|
|
64
|
+
## Step 3: Create output directory
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
mkdir -p .planning/codebase
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Step 4: Spawn mapper agent
|
|
71
|
+
|
|
72
|
+
Spawn a single `gsd-codebase-mapper` agent with the selected focus area:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Task(
|
|
76
|
+
prompt="Scan this codebase with focus: {focus}. Write results to .planning/codebase/. Produce only: {document_list}",
|
|
77
|
+
subagent_type="gsd-codebase-mapper",
|
|
78
|
+
model="{resolved_model}"
|
|
79
|
+
)
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
## Step 5: Report
|
|
83
|
+
|
|
84
|
+
```
|
|
85
|
+
## Scan Complete
|
|
86
|
+
|
|
87
|
+
**Focus:** {focus}
|
|
88
|
+
**Documents produced:**
|
|
89
|
+
{list of documents written with line counts}
|
|
90
|
+
|
|
91
|
+
Use `/gsd-map-codebase` for a comprehensive 4-area parallel scan.
|
|
92
|
+
```
|
|
93
|
+
|
|
94
|
+
</process>
|
|
95
|
+
|
|
96
|
+
<success_criteria>
|
|
97
|
+
- [ ] Focus area correctly parsed (default: tech+arch)
|
|
98
|
+
- [ ] Existing documents detected with modification dates shown
|
|
99
|
+
- [ ] User prompted before overwriting
|
|
100
|
+
- [ ] Single mapper agent spawned with correct focus
|
|
101
|
+
- [ ] Output documents written to .planning/codebase/
|
|
102
|
+
</success_criteria>
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Verify threat mitigations for a completed phase. Confirm PLAN.md threat register dispositions are resolved. Update SECURITY.md.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
@~/.claude/get-shit-done/references/ui-brand.md
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<available_agent_types>
|
|
10
|
+
Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'):
|
|
11
|
+
- gsd-security-auditor — Verifies threat mitigation coverage
|
|
12
|
+
</available_agent_types>
|
|
13
|
+
|
|
14
|
+
<process>
|
|
15
|
+
|
|
16
|
+
## 0. Initialize
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
INIT=$(gsd-remix-sdk query init.phase-op "${PHASE_ARG}")
|
|
20
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
21
|
+
AGENT_SKILLS_AUDITOR=$(gsd-remix-sdk query agent-skills gsd-security-auditor 2>/dev/null)
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Parse: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`.
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
AUDITOR_MODEL=$(gsd-remix-sdk query resolve-model gsd-security-auditor --raw)
|
|
28
|
+
SECURITY_CFG=$(gsd-remix-sdk query config-get workflow.security_enforcement --raw 2>/dev/null || echo "true")
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
If `SECURITY_CFG` is `false`: exit with "Security enforcement disabled. Enable via /gsd-settings."
|
|
32
|
+
|
|
33
|
+
Display banner: `GSD > SECURE PHASE {N}: {name}`
|
|
34
|
+
|
|
35
|
+
## 1. Detect Input State
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
SECURITY_FILE=$(ls "${PHASE_DIR}"/*-SECURITY.md 2>/dev/null | head -1)
|
|
39
|
+
PLAN_FILES=$(ls "${PHASE_DIR}"/*-PLAN.md 2>/dev/null)
|
|
40
|
+
SUMMARY_FILES=$(ls "${PHASE_DIR}"/*-SUMMARY.md 2>/dev/null)
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
- **State A** (`SECURITY_FILE` non-empty): Audit existing
|
|
44
|
+
- **State B** (`SECURITY_FILE` empty, `PLAN_FILES` and `SUMMARY_FILES` non-empty): Run from artifacts
|
|
45
|
+
- **State C** (`SUMMARY_FILES` empty): Exit — "Phase {N} not executed. Run /gsd-execute-phase {N} first."
|
|
46
|
+
|
|
47
|
+
## 2. Discovery
|
|
48
|
+
|
|
49
|
+
### 2a. Read Phase Artifacts
|
|
50
|
+
|
|
51
|
+
Read PLAN.md — extract `<threat_model>` block: trust boundaries, STRIDE register (`threat_id`, `category`, `component`, `disposition`, `mitigation_plan`).
|
|
52
|
+
|
|
53
|
+
### 2b. Read Summary Threat Flags
|
|
54
|
+
|
|
55
|
+
Read SUMMARY.md — extract `## Threat Flags` entries.
|
|
56
|
+
|
|
57
|
+
### 2c. Build Threat Register
|
|
58
|
+
|
|
59
|
+
Per threat: `{ threat_id, category, component, disposition, mitigation_pattern, files_to_check }`
|
|
60
|
+
|
|
61
|
+
## 3. Threat Classification
|
|
62
|
+
|
|
63
|
+
Classify each threat:
|
|
64
|
+
|
|
65
|
+
| Status | Criteria |
|
|
66
|
+
|--------|----------|
|
|
67
|
+
| CLOSED | mitigation found OR accepted risk documented in SECURITY.md OR transfer documented |
|
|
68
|
+
| OPEN | none of the above |
|
|
69
|
+
|
|
70
|
+
Build: `{ threat_id, category, component, disposition, status, evidence }`
|
|
71
|
+
|
|
72
|
+
If `threats_open: 0` → skip to Step 6 directly.
|
|
73
|
+
|
|
74
|
+
## 4. Present Threat Plan
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
**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.
|
|
78
|
+
Call AskUserQuestion with threat table and options:
|
|
79
|
+
1. "Verify all open threats" → Step 5
|
|
80
|
+
2. "Accept all open — document in accepted risks log" → add to SECURITY.md accepted risks, set all CLOSED, Step 6
|
|
81
|
+
3. "Cancel" → exit
|
|
82
|
+
|
|
83
|
+
## 5. Spawn gsd-security-auditor
|
|
84
|
+
|
|
85
|
+
```
|
|
86
|
+
Task(
|
|
87
|
+
prompt="Read ~/.claude/agents/gsd-security-auditor.md for instructions.\n\n" +
|
|
88
|
+
"<files_to_read>{PLAN, SUMMARY, impl files, SECURITY.md}</files_to_read>" +
|
|
89
|
+
"<threat_register>{threat register}</threat_register>" +
|
|
90
|
+
"<config>asvs_level: {SECURITY_ASVS}, block_on: {SECURITY_BLOCK_ON}</config>" +
|
|
91
|
+
"<constraints>Never modify implementation files. Verify mitigations exist — do not scan for new threats. Escalate implementation gaps.</constraints>" +
|
|
92
|
+
"${AGENT_SKILLS_AUDITOR}",
|
|
93
|
+
subagent_type="gsd-security-auditor",
|
|
94
|
+
model="{AUDITOR_MODEL}",
|
|
95
|
+
description="Verify threat mitigations for Phase {N}"
|
|
96
|
+
)
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Handle return:
|
|
100
|
+
- `## SECURED` → record closures → Step 6
|
|
101
|
+
- `## OPEN_THREATS` → record closed + open, present user with accept/block choice → Step 6
|
|
102
|
+
- `## ESCALATE` → present to user → Step 6
|
|
103
|
+
|
|
104
|
+
## 6. Write/Update SECURITY.md
|
|
105
|
+
|
|
106
|
+
**State B (create):**
|
|
107
|
+
1. Read template from `~/.claude/get-shit-done/templates/SECURITY.md`
|
|
108
|
+
2. Fill: frontmatter, threat register, accepted risks, audit trail
|
|
109
|
+
3. Write to `${PHASE_DIR}/${PADDED_PHASE}-SECURITY.md`
|
|
110
|
+
|
|
111
|
+
**State A (update):**
|
|
112
|
+
1. Update threat register statuses, append to audit trail:
|
|
113
|
+
|
|
114
|
+
```markdown
|
|
115
|
+
## Security Audit {date}
|
|
116
|
+
| Metric | Count |
|
|
117
|
+
|--------|-------|
|
|
118
|
+
| Threats found | {N} |
|
|
119
|
+
| Closed | {M} |
|
|
120
|
+
| Open | {K} |
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
**ENFORCING GATE:** If `threats_open > 0` after all options exhausted (user did not accept, not all verified closed):
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
GSD > PHASE {N} SECURITY BLOCKED
|
|
127
|
+
{K} threats open — phase advancement blocked until threats_open: 0
|
|
128
|
+
▶ Fix mitigations then re-run: /gsd-secure-phase {N}
|
|
129
|
+
▶ Or document accepted risks in SECURITY.md and re-run.
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
Do NOT emit next-phase routing. Stop here.
|
|
133
|
+
|
|
134
|
+
## 7. Commit
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
gsd-remix-sdk query commit "docs(phase-${PHASE}): add/update security threat verification"
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
## 8. Results + Routing
|
|
141
|
+
|
|
142
|
+
**Secured (threats_open: 0):**
|
|
143
|
+
```
|
|
144
|
+
GSD > PHASE {N} THREAT-SECURE
|
|
145
|
+
threats_open: 0 — all threats have dispositions.
|
|
146
|
+
▶ /gsd-validate-phase {N} validate test coverage
|
|
147
|
+
▶ /gsd-verify-work {N} run UAT
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Display `/clear` reminder.
|
|
151
|
+
|
|
152
|
+
</process>
|
|
153
|
+
|
|
154
|
+
<success_criteria>
|
|
155
|
+
- [ ] Security enforcement checked — exit if false
|
|
156
|
+
- [ ] Input state detected (A/B/C) — state C exits cleanly
|
|
157
|
+
- [ ] PLAN.md threat model parsed, register built
|
|
158
|
+
- [ ] SUMMARY.md threat flags incorporated
|
|
159
|
+
- [ ] threats_open: 0 → skip directly to Step 6
|
|
160
|
+
- [ ] User gate with threat table presented
|
|
161
|
+
- [ ] Auditor spawned with complete context
|
|
162
|
+
- [ ] All three return formats (SECURED/OPEN_THREATS/ESCALATE) handled
|
|
163
|
+
- [ ] SECURITY.md created or updated
|
|
164
|
+
- [ ] threats_open > 0 BLOCKS advancement (no next-phase routing emitted)
|
|
165
|
+
- [ ] Results with routing presented on success
|
|
166
|
+
</success_criteria>
|