@therocketcode/gsd-core 1.4.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/.claude-plugin/plugin.json +23 -0
- package/GEMINI.md +53 -0
- package/LICENSE +21 -0
- package/README.ja-JP.md +125 -0
- package/README.ko-KR.md +125 -0
- package/README.md +144 -0
- package/README.pt-BR.md +125 -0
- package/README.zh-CN.md +125 -0
- package/agents/gsd-advisor-researcher.md +108 -0
- package/agents/gsd-ai-researcher.md +114 -0
- package/agents/gsd-assumptions-analyzer.md +105 -0
- package/agents/gsd-code-fixer.md +668 -0
- package/agents/gsd-code-reviewer.md +387 -0
- package/agents/gsd-codebase-mapper.md +853 -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 +616 -0
- package/agents/gsd-domain-researcher.md +147 -0
- package/agents/gsd-eval-auditor.md +191 -0
- package/agents/gsd-eval-planner.md +154 -0
- package/agents/gsd-executor.md +785 -0
- package/agents/gsd-framework-selector.md +160 -0
- package/agents/gsd-integration-checker.md +470 -0
- package/agents/gsd-intel-updater.md +342 -0
- package/agents/gsd-nyquist-auditor.md +203 -0
- package/agents/gsd-pattern-mapper.md +335 -0
- package/agents/gsd-phase-researcher.md +867 -0
- package/agents/gsd-plan-checker.md +978 -0
- package/agents/gsd-planner.md +1204 -0
- package/agents/gsd-project-researcher.md +611 -0
- package/agents/gsd-research-synthesizer.md +259 -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 +374 -0
- package/agents/gsd-user-profiler.md +171 -0
- package/agents/gsd-verifier.md +923 -0
- package/assets/gsd-logo-2000-transparent.png +0 -0
- package/assets/gsd-logo-2000-transparent.svg +17 -0
- package/assets/gsd-logo-2000.png +0 -0
- package/assets/gsd-logo-2000.svg +21 -0
- package/assets/terminal.svg +68 -0
- package/bin/install.js +12726 -0
- package/bin/lib/ui-safety-gate.cjs +107 -0
- package/commands/gsd/add-tests.md +42 -0
- package/commands/gsd/ai-integration-phase.md +37 -0
- package/commands/gsd/audit-fix.md +34 -0
- package/commands/gsd/audit-milestone.md +37 -0
- package/commands/gsd/audit-uat.md +24 -0
- package/commands/gsd/autonomous.md +48 -0
- package/commands/gsd/capture.md +62 -0
- package/commands/gsd/cleanup.md +24 -0
- package/commands/gsd/code-review.md +59 -0
- package/commands/gsd/complete-milestone.md +143 -0
- package/commands/gsd/config.md +56 -0
- package/commands/gsd/debug.md +52 -0
- package/commands/gsd/discover-product.md +65 -0
- package/commands/gsd/discuss-phase.md +77 -0
- package/commands/gsd/docs-update.md +49 -0
- package/commands/gsd/eval-review.md +33 -0
- package/commands/gsd/execute-phase.md +66 -0
- package/commands/gsd/explore.md +27 -0
- package/commands/gsd/extract-learnings.md +23 -0
- package/commands/gsd/fast.md +31 -0
- package/commands/gsd/forensics.md +57 -0
- package/commands/gsd/graphify.md +204 -0
- package/commands/gsd/health.md +31 -0
- package/commands/gsd/help.md +28 -0
- package/commands/gsd/import.md +45 -0
- package/commands/gsd/inbox.md +39 -0
- package/commands/gsd/ingest-docs.md +42 -0
- package/commands/gsd/manager.md +45 -0
- package/commands/gsd/map-codebase.md +83 -0
- package/commands/gsd/milestone-summary.md +51 -0
- package/commands/gsd/model-domain.md +65 -0
- package/commands/gsd/mvp-phase.md +45 -0
- package/commands/gsd/new-milestone.md +45 -0
- package/commands/gsd/new-project.md +47 -0
- package/commands/gsd/ns-context.md +23 -0
- package/commands/gsd/ns-ideate.md +24 -0
- package/commands/gsd/ns-manage.md +29 -0
- package/commands/gsd/ns-project.md +22 -0
- package/commands/gsd/ns-review.md +26 -0
- package/commands/gsd/ns-workflow.md +28 -0
- package/commands/gsd/pause-work.md +43 -0
- package/commands/gsd/phase.md +56 -0
- package/commands/gsd/plan-phase.md +64 -0
- package/commands/gsd/plan-review-convergence.md +59 -0
- package/commands/gsd/pr-branch.md +26 -0
- package/commands/gsd/profile-user.md +46 -0
- package/commands/gsd/progress.md +48 -0
- package/commands/gsd/quick.md +174 -0
- package/commands/gsd/recommend-architecture.md +64 -0
- package/commands/gsd/resume-work.md +30 -0
- package/commands/gsd/review-backlog.md +63 -0
- package/commands/gsd/review.md +42 -0
- package/commands/gsd/secure-phase.md +36 -0
- package/commands/gsd/settings.md +29 -0
- package/commands/gsd/ship.md +24 -0
- package/commands/gsd/sketch.md +60 -0
- package/commands/gsd/spec-phase.md +63 -0
- package/commands/gsd/spike.md +57 -0
- package/commands/gsd/stats.md +20 -0
- package/commands/gsd/surface.md +155 -0
- package/commands/gsd/testing-strategy.md +65 -0
- package/commands/gsd/thread.md +24 -0
- package/commands/gsd/ui-phase.md +35 -0
- package/commands/gsd/ui-review.md +33 -0
- package/commands/gsd/ultraplan-phase.md +34 -0
- package/commands/gsd/undo.md +35 -0
- package/commands/gsd/update.md +49 -0
- package/commands/gsd/validate-phase.md +36 -0
- package/commands/gsd/verify-work.md +39 -0
- package/commands/gsd/workspace.md +52 -0
- package/commands/gsd/workstreams.md +70 -0
- package/gemini-extension.json +6 -0
- package/gsd-core/bin/check-latest-version.cjs +161 -0
- package/gsd-core/bin/gsd-tools.cjs +1928 -0
- package/gsd-core/bin/lib/active-workstream-store.cjs +291 -0
- package/gsd-core/bin/lib/adr-parser.cjs +399 -0
- package/gsd-core/bin/lib/agent-command-router.cjs +68 -0
- package/gsd-core/bin/lib/artifacts.cjs +51 -0
- package/gsd-core/bin/lib/audit.cjs +743 -0
- package/gsd-core/bin/lib/check-command-router.cjs +343 -0
- package/gsd-core/bin/lib/cjs-command-router-adapter.cjs +81 -0
- package/gsd-core/bin/lib/cli-exit.cjs +42 -0
- package/gsd-core/bin/lib/clock.cjs +95 -0
- package/gsd-core/bin/lib/clusters.cjs +132 -0
- package/gsd-core/bin/lib/code-review-flags.cjs +59 -0
- package/gsd-core/bin/lib/command-aliases.cjs +809 -0
- package/gsd-core/bin/lib/command-arg-projection.cjs +55 -0
- package/gsd-core/bin/lib/command-routing-hub.cjs +300 -0
- package/gsd-core/bin/lib/commands.cjs +1203 -0
- package/gsd-core/bin/lib/config-schema.cjs +29 -0
- package/gsd-core/bin/lib/config-types.cjs +19 -0
- package/gsd-core/bin/lib/config.cjs +738 -0
- package/gsd-core/bin/lib/configuration.cjs +239 -0
- package/gsd-core/bin/lib/context-utilization.cjs +48 -0
- package/gsd-core/bin/lib/core.cjs +2051 -0
- package/gsd-core/bin/lib/decisions.cjs +118 -0
- package/gsd-core/bin/lib/docs.cjs +252 -0
- package/gsd-core/bin/lib/drift.cjs +364 -0
- package/gsd-core/bin/lib/fallow-runner.cjs +115 -0
- package/gsd-core/bin/lib/frontmatter.cjs +442 -0
- package/gsd-core/bin/lib/gap-checker.cjs +257 -0
- package/gsd-core/bin/lib/graphify.cjs +496 -0
- package/gsd-core/bin/lib/gsd2-import.cjs +456 -0
- package/gsd-core/bin/lib/init-command-router.cjs +62 -0
- package/gsd-core/bin/lib/init.cjs +1815 -0
- package/gsd-core/bin/lib/install-profiles.cjs +584 -0
- package/gsd-core/bin/lib/installer-migration-authoring.cjs +122 -0
- package/gsd-core/bin/lib/installer-migration-report.cjs +350 -0
- package/gsd-core/bin/lib/installer-migrations/000-first-time-baseline.cjs +218 -0
- package/gsd-core/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +48 -0
- package/gsd-core/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +94 -0
- package/gsd-core/bin/lib/installer-migrations/003-rename-get-shit-done-to-gsd-core.cjs +108 -0
- package/gsd-core/bin/lib/installer-migrations.cjs +823 -0
- package/gsd-core/bin/lib/intel.cjs +590 -0
- package/gsd-core/bin/lib/learnings.cjs +270 -0
- package/gsd-core/bin/lib/legacy-cleanup.cjs +253 -0
- package/gsd-core/bin/lib/milestone.cjs +373 -0
- package/gsd-core/bin/lib/model-catalog.cjs +154 -0
- package/gsd-core/bin/lib/model-profiles.cjs +24 -0
- package/gsd-core/bin/lib/observability/event.cjs +51 -0
- package/gsd-core/bin/lib/observability/logger.cjs +146 -0
- package/gsd-core/bin/lib/observability/redaction.cjs +48 -0
- package/gsd-core/bin/lib/package-identity.cjs +35 -0
- package/gsd-core/bin/lib/package-legitimacy.cjs +368 -0
- package/gsd-core/bin/lib/phase-command-router.cjs +189 -0
- package/gsd-core/bin/lib/phase-lifecycle.cjs +74 -0
- package/gsd-core/bin/lib/phase.cjs +1307 -0
- package/gsd-core/bin/lib/phases-command-router.cjs +43 -0
- package/gsd-core/bin/lib/plan-scan.cjs +91 -0
- package/gsd-core/bin/lib/planning-workspace.cjs +245 -0
- package/gsd-core/bin/lib/profile-output.cjs +1120 -0
- package/gsd-core/bin/lib/profile-pipeline.cjs +517 -0
- package/gsd-core/bin/lib/project-root.cjs +119 -0
- package/gsd-core/bin/lib/prompt-budget.cjs +305 -0
- package/gsd-core/bin/lib/research-provider.cjs +137 -0
- package/gsd-core/bin/lib/research-store.cjs +167 -0
- package/gsd-core/bin/lib/review-reviewer-selection.cjs +121 -0
- package/gsd-core/bin/lib/roadmap-command-router.cjs +166 -0
- package/gsd-core/bin/lib/roadmap-upgrade.cjs +476 -0
- package/gsd-core/bin/lib/roadmap.cjs +600 -0
- package/gsd-core/bin/lib/runtime-artifact-layout.cjs +312 -0
- package/gsd-core/bin/lib/runtime-config-adapter-registry.cjs +56 -0
- package/gsd-core/bin/lib/runtime-homes.cjs +190 -0
- package/gsd-core/bin/lib/runtime-name-policy.cjs +96 -0
- package/gsd-core/bin/lib/runtime-slash.cjs +119 -0
- package/gsd-core/bin/lib/schema-detect.cjs +159 -0
- package/gsd-core/bin/lib/secrets.cjs +34 -0
- package/gsd-core/bin/lib/security.cjs +480 -0
- package/gsd-core/bin/lib/semver-compare.cjs +42 -0
- package/gsd-core/bin/lib/shell-command-projection.cjs +533 -0
- package/gsd-core/bin/lib/state-command-router.cjs +160 -0
- package/gsd-core/bin/lib/state-document.cjs +259 -0
- package/gsd-core/bin/lib/state.cjs +2010 -0
- package/gsd-core/bin/lib/surface.cjs +449 -0
- package/gsd-core/bin/lib/task-command-router.cjs +85 -0
- package/gsd-core/bin/lib/template.cjs +237 -0
- package/gsd-core/bin/lib/uat.cjs +297 -0
- package/gsd-core/bin/lib/ui-safety-gate.cjs +98 -0
- package/gsd-core/bin/lib/update-context.cjs +218 -0
- package/gsd-core/bin/lib/validate-command-router.cjs +91 -0
- package/gsd-core/bin/lib/validate.cjs +112 -0
- package/gsd-core/bin/lib/verification-command-router.cjs +31 -0
- package/gsd-core/bin/lib/verification.cjs +193 -0
- package/gsd-core/bin/lib/verify-command-router.cjs +44 -0
- package/gsd-core/bin/lib/verify.cjs +1451 -0
- package/gsd-core/bin/lib/workstream-inventory-builder.cjs +81 -0
- package/gsd-core/bin/lib/workstream-inventory.cjs +147 -0
- package/gsd-core/bin/lib/workstream-name-policy.cjs +91 -0
- package/gsd-core/bin/lib/workstream.cjs +380 -0
- package/gsd-core/bin/lib/worktree-base-ref.cjs +325 -0
- package/gsd-core/bin/lib/worktree-safety.cjs +943 -0
- package/gsd-core/bin/shared/config-defaults.manifest.json +98 -0
- package/gsd-core/bin/shared/config-schema.manifest.json +192 -0
- package/gsd-core/bin/shared/model-catalog.json +149 -0
- package/gsd-core/bin/shared/runtime-aliases.manifest.json +75 -0
- package/gsd-core/bin/verify-reapply-patches.cjs +349 -0
- package/gsd-core/contexts/dev.md +21 -0
- package/gsd-core/contexts/research.md +22 -0
- package/gsd-core/contexts/review.md +23 -0
- package/gsd-core/references/agent-contracts.md +79 -0
- package/gsd-core/references/ai-evals.md +156 -0
- package/gsd-core/references/ai-frameworks.md +186 -0
- package/gsd-core/references/architecture-decision.md +74 -0
- package/gsd-core/references/artifact-types.md +131 -0
- package/gsd-core/references/auth-in-tests.md +91 -0
- package/gsd-core/references/autonomous-smart-discuss.md +277 -0
- package/gsd-core/references/checkpoints.md +814 -0
- package/gsd-core/references/common-bug-patterns.md +114 -0
- package/gsd-core/references/context-budget.md +85 -0
- package/gsd-core/references/continuation-format.md +253 -0
- package/gsd-core/references/db-test-isolation.md +54 -0
- package/gsd-core/references/debugger-philosophy.md +76 -0
- package/gsd-core/references/decimal-phase-calculation.md +64 -0
- package/gsd-core/references/doc-conflict-engine.md +91 -0
- package/gsd-core/references/domain-modeling.md +80 -0
- package/gsd-core/references/domain-probes.md +125 -0
- package/gsd-core/references/e2e-tiering.md +35 -0
- package/gsd-core/references/execute-mvp-tdd.md +81 -0
- package/gsd-core/references/executor-examples.md +110 -0
- package/gsd-core/references/few-shot-examples/plan-checker.md +73 -0
- package/gsd-core/references/few-shot-examples/verifier.md +109 -0
- package/gsd-core/references/flaky-test-checklist.md +22 -0
- package/gsd-core/references/gate-prompts.md +100 -0
- package/gsd-core/references/gates.md +70 -0
- package/gsd-core/references/git-integration.md +298 -0
- package/gsd-core/references/git-planning-commit.md +40 -0
- package/gsd-core/references/ios-scaffold.md +123 -0
- package/gsd-core/references/mandatory-initial-read.md +2 -0
- package/gsd-core/references/model-profile-resolution.md +38 -0
- package/gsd-core/references/model-profiles.md +245 -0
- package/gsd-core/references/mvp-concepts.md +49 -0
- package/gsd-core/references/phase-argument-parsing.md +61 -0
- package/gsd-core/references/planner-antipatterns.md +89 -0
- package/gsd-core/references/planner-chunked.md +49 -0
- package/gsd-core/references/planner-gap-closure.md +62 -0
- package/gsd-core/references/planner-graphify-auto-update.md +67 -0
- package/gsd-core/references/planner-human-verify-mode.md +57 -0
- package/gsd-core/references/planner-interface-context.md +62 -0
- package/gsd-core/references/planner-load-graph-context.md +36 -0
- package/gsd-core/references/planner-mvp-mode.md +53 -0
- package/gsd-core/references/planner-reviews.md +39 -0
- package/gsd-core/references/planner-revision.md +87 -0
- package/gsd-core/references/planner-source-audit.md +73 -0
- package/gsd-core/references/planning-config.md +473 -0
- package/gsd-core/references/product-discovery.md +49 -0
- package/gsd-core/references/project-skills-discovery.md +19 -0
- package/gsd-core/references/questioning.md +162 -0
- package/gsd-core/references/realistic-test-data.md +44 -0
- package/gsd-core/references/research-documentation-lookup.md +29 -0
- package/gsd-core/references/research-philosophy.md +29 -0
- package/gsd-core/references/research-verification-protocol.md +27 -0
- package/gsd-core/references/revision-loop.md +97 -0
- package/gsd-core/references/scout-codebase.md +51 -0
- package/gsd-core/references/skeleton-template.md +48 -0
- package/gsd-core/references/sketch-interactivity.md +41 -0
- package/gsd-core/references/sketch-theme-system.md +94 -0
- package/gsd-core/references/sketch-tooling.md +45 -0
- package/gsd-core/references/sketch-variant-patterns.md +81 -0
- package/gsd-core/references/spidr-splitting.md +69 -0
- package/gsd-core/references/tdd.md +330 -0
- package/gsd-core/references/test-containers.md +55 -0
- package/gsd-core/references/test-strategy.md +75 -0
- package/gsd-core/references/thinking-models-debug.md +44 -0
- package/gsd-core/references/thinking-models-execution.md +50 -0
- package/gsd-core/references/thinking-models-planning.md +62 -0
- package/gsd-core/references/thinking-models-research.md +50 -0
- package/gsd-core/references/thinking-models-verification.md +55 -0
- package/gsd-core/references/thinking-partner.md +96 -0
- package/gsd-core/references/ui-brand.md +162 -0
- package/gsd-core/references/universal-anti-patterns.md +63 -0
- package/gsd-core/references/user-profiling.md +681 -0
- package/gsd-core/references/user-story-template.md +58 -0
- package/gsd-core/references/verification-overrides.md +227 -0
- package/gsd-core/references/verification-patterns.md +612 -0
- package/gsd-core/references/verify-mvp-mode.md +85 -0
- package/gsd-core/references/workstream-flag.md +111 -0
- package/gsd-core/references/worktree-branch-check.md +38 -0
- package/gsd-core/references/worktree-path-safety.md +67 -0
- package/gsd-core/templates/AI-SPEC.md +246 -0
- package/gsd-core/templates/DEBUG.md +169 -0
- package/gsd-core/templates/README.md +77 -0
- package/gsd-core/templates/SECURITY.md +61 -0
- package/gsd-core/templates/UAT.md +265 -0
- package/gsd-core/templates/UI-SPEC.md +100 -0
- package/gsd-core/templates/VALIDATION.md +76 -0
- package/gsd-core/templates/adr.md +58 -0
- package/gsd-core/templates/claude-md.md +145 -0
- package/gsd-core/templates/codebase/architecture.md +255 -0
- package/gsd-core/templates/codebase/concerns.md +310 -0
- package/gsd-core/templates/codebase/conventions.md +307 -0
- package/gsd-core/templates/codebase/integrations.md +280 -0
- package/gsd-core/templates/codebase/stack.md +186 -0
- package/gsd-core/templates/codebase/structure.md +285 -0
- package/gsd-core/templates/codebase/testing.md +480 -0
- package/gsd-core/templates/config.json +62 -0
- package/gsd-core/templates/context.md +352 -0
- package/gsd-core/templates/continue-here.md +78 -0
- package/gsd-core/templates/copilot-instructions.md +7 -0
- package/gsd-core/templates/debug-subagent-prompt.md +91 -0
- package/gsd-core/templates/dev-preferences.md +21 -0
- package/gsd-core/templates/discovery.md +146 -0
- package/gsd-core/templates/discussion-log.md +63 -0
- package/gsd-core/templates/domain-model.md +54 -0
- package/gsd-core/templates/milestone-archive.md +123 -0
- package/gsd-core/templates/milestone.md +115 -0
- package/gsd-core/templates/phase-prompt.md +610 -0
- package/gsd-core/templates/planner-subagent-prompt.md +117 -0
- package/gsd-core/templates/product-brief.md +55 -0
- package/gsd-core/templates/project.md +186 -0
- package/gsd-core/templates/requirements.md +231 -0
- package/gsd-core/templates/research-project/ARCHITECTURE.md +204 -0
- package/gsd-core/templates/research-project/FEATURES.md +147 -0
- package/gsd-core/templates/research-project/PITFALLS.md +200 -0
- package/gsd-core/templates/research-project/STACK.md +120 -0
- package/gsd-core/templates/research-project/SUMMARY.md +170 -0
- package/gsd-core/templates/research.md +592 -0
- package/gsd-core/templates/retrospective.md +54 -0
- package/gsd-core/templates/roadmap.md +202 -0
- package/gsd-core/templates/spec.md +307 -0
- package/gsd-core/templates/state.md +195 -0
- package/gsd-core/templates/summary-complex.md +59 -0
- package/gsd-core/templates/summary-minimal.md +41 -0
- package/gsd-core/templates/summary-standard.md +48 -0
- package/gsd-core/templates/summary.md +248 -0
- package/gsd-core/templates/test-strategy.md +50 -0
- package/gsd-core/templates/user-profile.md +146 -0
- package/gsd-core/templates/user-setup.md +311 -0
- package/gsd-core/templates/verification-report.md +322 -0
- package/gsd-core/workflows/_runtime-launcher.snippet.sh +1 -0
- package/gsd-core/workflows/add-backlog.md +91 -0
- package/gsd-core/workflows/add-phase.md +113 -0
- package/gsd-core/workflows/add-tests.md +355 -0
- package/gsd-core/workflows/add-todo.md +161 -0
- package/gsd-core/workflows/ai-integration-phase.md +295 -0
- package/gsd-core/workflows/analyze-dependencies.md +96 -0
- package/gsd-core/workflows/audit-fix.md +178 -0
- package/gsd-core/workflows/audit-milestone.md +360 -0
- package/gsd-core/workflows/audit-uat.md +110 -0
- package/gsd-core/workflows/autonomous.md +797 -0
- package/gsd-core/workflows/check-todos.md +180 -0
- package/gsd-core/workflows/cleanup.md +195 -0
- package/gsd-core/workflows/code-review-fix.md +502 -0
- package/gsd-core/workflows/code-review.md +658 -0
- package/gsd-core/workflows/complete-milestone.md +855 -0
- package/gsd-core/workflows/debug.md +237 -0
- package/gsd-core/workflows/diagnose-issues.md +245 -0
- package/gsd-core/workflows/discover-product.md +112 -0
- package/gsd-core/workflows/discovery-phase.md +291 -0
- package/gsd-core/workflows/discuss-phase/modes/advisor.md +176 -0
- package/gsd-core/workflows/discuss-phase/modes/all.md +28 -0
- package/gsd-core/workflows/discuss-phase/modes/analyze.md +44 -0
- package/gsd-core/workflows/discuss-phase/modes/auto.md +57 -0
- package/gsd-core/workflows/discuss-phase/modes/batch.md +52 -0
- package/gsd-core/workflows/discuss-phase/modes/chain.md +98 -0
- package/gsd-core/workflows/discuss-phase/modes/default.md +141 -0
- package/gsd-core/workflows/discuss-phase/modes/power.md +44 -0
- package/gsd-core/workflows/discuss-phase/modes/text.md +55 -0
- package/gsd-core/workflows/discuss-phase/templates/checkpoint.json +18 -0
- package/gsd-core/workflows/discuss-phase/templates/context.md +136 -0
- package/gsd-core/workflows/discuss-phase/templates/discussion-log.md +50 -0
- package/gsd-core/workflows/discuss-phase-assumptions.md +675 -0
- package/gsd-core/workflows/discuss-phase-power.md +291 -0
- package/gsd-core/workflows/discuss-phase.md +499 -0
- package/gsd-core/workflows/do.md +111 -0
- package/gsd-core/workflows/docs-update.md +1176 -0
- package/gsd-core/workflows/edit-phase.md +295 -0
- package/gsd-core/workflows/eval-review.md +156 -0
- package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +95 -0
- package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +94 -0
- package/gsd-core/workflows/execute-phase/steps/post-merge-gate.md +117 -0
- package/gsd-core/workflows/execute-phase.md +1752 -0
- package/gsd-core/workflows/execute-plan.md +526 -0
- package/gsd-core/workflows/explore.md +146 -0
- package/gsd-core/workflows/extract-learnings.md +243 -0
- package/gsd-core/workflows/fast.md +124 -0
- package/gsd-core/workflows/forensics.md +279 -0
- package/gsd-core/workflows/graduation.md +196 -0
- package/gsd-core/workflows/health.md +224 -0
- package/gsd-core/workflows/help/modes/brief.md +22 -0
- package/gsd-core/workflows/help/modes/default.md +50 -0
- package/gsd-core/workflows/help/modes/full.md +789 -0
- package/gsd-core/workflows/help/modes/topic.md +74 -0
- package/gsd-core/workflows/help.md +24 -0
- package/gsd-core/workflows/import.md +256 -0
- package/gsd-core/workflows/inbox.md +387 -0
- package/gsd-core/workflows/ingest-docs.md +340 -0
- package/gsd-core/workflows/insert-phase.md +152 -0
- package/gsd-core/workflows/list-phase-assumptions.md +178 -0
- package/gsd-core/workflows/list-workspaces.md +57 -0
- package/gsd-core/workflows/manager.md +393 -0
- package/gsd-core/workflows/map-codebase.md +446 -0
- package/gsd-core/workflows/milestone-summary.md +224 -0
- package/gsd-core/workflows/model-domain.md +162 -0
- package/gsd-core/workflows/mvp-phase.md +222 -0
- package/gsd-core/workflows/new-milestone.md +635 -0
- package/gsd-core/workflows/new-project.md +1555 -0
- package/gsd-core/workflows/new-workspace.md +240 -0
- package/gsd-core/workflows/next.md +299 -0
- package/gsd-core/workflows/node-repair.md +92 -0
- package/gsd-core/workflows/note.md +158 -0
- package/gsd-core/workflows/pause-work.md +244 -0
- package/gsd-core/workflows/plan-milestone-gaps.md +281 -0
- package/gsd-core/workflows/plan-phase.md +1814 -0
- package/gsd-core/workflows/plan-review-convergence.md +346 -0
- package/gsd-core/workflows/plant-seed.md +230 -0
- package/gsd-core/workflows/pr-branch.md +157 -0
- package/gsd-core/workflows/profile-user.md +453 -0
- package/gsd-core/workflows/progress.md +699 -0
- package/gsd-core/workflows/quick.md +1017 -0
- package/gsd-core/workflows/reapply-patches.md +426 -0
- package/gsd-core/workflows/recommend-architecture.md +135 -0
- package/gsd-core/workflows/remove-phase.md +156 -0
- package/gsd-core/workflows/remove-workspace.md +108 -0
- package/gsd-core/workflows/resume-project.md +332 -0
- package/gsd-core/workflows/review.md +748 -0
- package/gsd-core/workflows/scan.md +107 -0
- package/gsd-core/workflows/secure-phase.md +182 -0
- package/gsd-core/workflows/session-report.md +146 -0
- package/gsd-core/workflows/settings-advanced.md +810 -0
- package/gsd-core/workflows/settings-integrations.md +312 -0
- package/gsd-core/workflows/settings.md +566 -0
- package/gsd-core/workflows/ship.md +405 -0
- package/gsd-core/workflows/sketch-wrap-up.md +286 -0
- package/gsd-core/workflows/sketch.md +361 -0
- package/gsd-core/workflows/spec-phase.md +263 -0
- package/gsd-core/workflows/spike-wrap-up.md +307 -0
- package/gsd-core/workflows/spike.md +453 -0
- package/gsd-core/workflows/stats.md +80 -0
- package/gsd-core/workflows/sync-skills.md +182 -0
- package/gsd-core/workflows/testing-strategy.md +122 -0
- package/gsd-core/workflows/thread.md +222 -0
- package/gsd-core/workflows/transition.md +694 -0
- package/gsd-core/workflows/ui-phase.md +328 -0
- package/gsd-core/workflows/ui-review.md +193 -0
- package/gsd-core/workflows/ultraplan-phase.md +199 -0
- package/gsd-core/workflows/undo.md +314 -0
- package/gsd-core/workflows/update.md +496 -0
- package/gsd-core/workflows/validate-phase.md +181 -0
- package/gsd-core/workflows/verify-phase.md +544 -0
- package/gsd-core/workflows/verify-work.md +781 -0
- package/hooks/dist/gsd-check-update-worker.js +108 -0
- package/hooks/dist/gsd-check-update.js +66 -0
- package/hooks/dist/gsd-config-reload.js +133 -0
- package/hooks/dist/gsd-context-monitor.js +195 -0
- package/hooks/dist/gsd-cursor-post-tool.js +75 -0
- package/hooks/dist/gsd-cursor-session-start.js +52 -0
- package/hooks/dist/gsd-graphify-update.sh +158 -0
- package/hooks/dist/gsd-phase-boundary.sh +47 -0
- package/hooks/dist/gsd-prompt-guard.js +97 -0
- package/hooks/dist/gsd-read-guard.js +101 -0
- package/hooks/dist/gsd-read-injection-scanner.js +203 -0
- package/hooks/dist/gsd-session-state.sh +59 -0
- package/hooks/dist/gsd-statusline.js +566 -0
- package/hooks/dist/gsd-update-banner.js +138 -0
- package/hooks/dist/gsd-validate-commit.sh +57 -0
- package/hooks/dist/gsd-workflow-guard.js +167 -0
- package/hooks/dist/gsd-worktree-path-guard.js +169 -0
- package/hooks/dist/lib/git-cmd.js +150 -0
- package/hooks/dist/lib/gsd-graphify-rebuild.sh +65 -0
- package/hooks/dist/managed-hooks-registry.cjs +38 -0
- package/hooks/gsd-check-update-worker.js +108 -0
- package/hooks/gsd-check-update.js +66 -0
- package/hooks/gsd-config-reload.js +133 -0
- package/hooks/gsd-context-monitor.js +195 -0
- package/hooks/gsd-cursor-post-tool.js +75 -0
- package/hooks/gsd-cursor-session-start.js +52 -0
- package/hooks/gsd-graphify-update.sh +158 -0
- package/hooks/gsd-phase-boundary.sh +47 -0
- package/hooks/gsd-prompt-guard.js +97 -0
- package/hooks/gsd-read-guard.js +101 -0
- package/hooks/gsd-read-injection-scanner.js +203 -0
- package/hooks/gsd-session-state.sh +59 -0
- package/hooks/gsd-statusline.js +566 -0
- package/hooks/gsd-update-banner.js +138 -0
- package/hooks/gsd-validate-commit.sh +57 -0
- package/hooks/gsd-workflow-guard.js +167 -0
- package/hooks/gsd-worktree-path-guard.js +169 -0
- package/hooks/hooks.json +69 -0
- package/hooks/lib/git-cmd.js +150 -0
- package/hooks/lib/gsd-graphify-rebuild.sh +65 -0
- package/hooks/managed-hooks-registry.cjs +38 -0
- package/package.json +115 -0
- package/scripts/affected-tests-lib.cjs +542 -0
- package/scripts/audit-workflow-script-paths.cjs +73 -0
- package/scripts/base64-scan.sh +351 -0
- package/scripts/build-hooks.js +247 -0
- package/scripts/changeset/README.md +129 -0
- package/scripts/changeset/cli.cjs +590 -0
- package/scripts/changeset/github-release-notes.cjs +199 -0
- package/scripts/changeset/lint.cjs +111 -0
- package/scripts/changeset/new.cjs +137 -0
- package/scripts/changeset/parse.cjs +114 -0
- package/scripts/changeset/render.cjs +34 -0
- package/scripts/changeset/serialize.cjs +130 -0
- package/scripts/check-alias-drift.cjs +114 -0
- package/scripts/check-env.cjs +312 -0
- package/scripts/check-npm-integrity.cjs +215 -0
- package/scripts/ci-guard-runner.cjs +22 -0
- package/scripts/ci-prepare-test-scope.cjs +51 -0
- package/scripts/ci-rebase-check.cjs +86 -0
- package/scripts/ci-test-scope.cjs +431 -0
- package/scripts/command-contract-helpers.cjs +64 -0
- package/scripts/diff-touches-shipped-paths.cjs +155 -0
- package/scripts/fix-slash-commands.cjs +147 -0
- package/scripts/gen-inventory-manifest.cjs +115 -0
- package/scripts/gen-research-agents.cjs +276 -0
- package/scripts/generate-package-identity.cjs +125 -0
- package/scripts/issue-dedupe.cjs +278 -0
- package/scripts/lib/allowlist-ratchet.cjs +136 -0
- package/scripts/lib/cli-exit.cjs +56 -0
- package/scripts/lint-command-contract.cjs +114 -0
- package/scripts/lint-descriptions.cjs +87 -0
- package/scripts/lint-docs-required.cjs +222 -0
- package/scripts/lint-legacy-dir-name.cjs +160 -0
- package/scripts/lint-package-identity-drift.cjs +141 -0
- package/scripts/lint-pr-check-project-dir.cjs +99 -0
- package/scripts/lint-shell-command-projection-drift.cjs +62 -0
- package/scripts/lint-skill-deps.cjs +185 -0
- package/scripts/lint-test-file-count.allowlist.json +135 -0
- package/scripts/lint-test-file-count.cjs +246 -0
- package/scripts/mutation-matrix.cjs +222 -0
- package/scripts/pr-template-policy.cjs +268 -0
- package/scripts/prompt-injection-scan.sh +207 -0
- package/scripts/release-notes/discord-release-summary.cjs +373 -0
- package/scripts/release-notes/format-github-release-notes.cjs +261 -0
- package/scripts/release-tarball-smoke.cjs +629 -0
- package/scripts/research-profiles.cjs +149 -0
- package/scripts/run-affected-tests.cjs +7 -0
- package/scripts/run-cross-platform-tests.cjs +67 -0
- package/scripts/run-tests.cjs +315 -0
- package/scripts/secret-scan-lint.sh +231 -0
- package/scripts/secret-scan.sh +358 -0
- package/scripts/setup-branch-protection.sh +236 -0
- package/scripts/strip-prose-atrefs.cjs +106 -0
- package/scripts/sync-manifest-versions.cjs +119 -0
- package/scripts/sync-rulesets.sh +34 -0
- package/scripts/sync-runtime-launcher.cjs +399 -0
- package/scripts/test-failure-reasons.cjs +34 -0
- package/scripts/verify-npm-publish.cjs +240 -0
- package/scripts/workflow-policy.cjs +450 -0
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
---
|
|
2
|
+
component: verifier
|
|
3
|
+
version: 2
|
|
4
|
+
last_calibrated: 2026-03-25
|
|
5
|
+
calibration_source: "Adapted from thinking-partner verification corpus"
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Verifier Few-Shot Examples
|
|
9
|
+
|
|
10
|
+
## Positive Examples
|
|
11
|
+
|
|
12
|
+
### Example 1: Thorough multi-level artifact verification with real gap discovery
|
|
13
|
+
|
|
14
|
+
**Input:** Must-have artifact: `gsd-core/workflows/context-bridge.md: >50 lines`
|
|
15
|
+
|
|
16
|
+
**Output:**
|
|
17
|
+
|
|
18
|
+
> **L1 (Existence):** EXISTS -- `gsd-core/workflows/context-bridge.md` found, 187 lines.
|
|
19
|
+
> **L2 (Substantive):** SUBSTANTIVE -- No TODO/FIXME markers, 4 defined sections (`updateContextTier`, `getContextBudget`, `injectContextWarning`, `resetTierState`), non-trivial logic with config reads and threshold calculations.
|
|
20
|
+
> **L3 (Wired):** WIRED -- Referenced by `gsd-core/workflows/execute-phase.md` at step 3. Called by `agents/gsd-executor.md` via @-reference include. Arguments verified: receives planning directory path matching the expected parameter.
|
|
21
|
+
> **Status: PASSED**
|
|
22
|
+
|
|
23
|
+
**Why this is good:** The verifier checked all three levels independently with specific evidence at each level -- file path, line count, exported symbols, import location, and argument verification. It did not stop at "file exists" but traced wiring through to actual usage with correct arguments.
|
|
24
|
+
|
|
25
|
+
### Example 2: Correct FAILED classification with grep evidence
|
|
26
|
+
|
|
27
|
+
**Input:** Must-have truth: `validate-commit.js rejects commits missing scope parentheses`
|
|
28
|
+
|
|
29
|
+
**Output:**
|
|
30
|
+
|
|
31
|
+
> **Method:** Ran `grep -n "scope" gsd-core/bin/validate-commit.js` to locate scope validation logic.
|
|
32
|
+
> **Evidence:** Lines 34-41 show regex `/^(feat|fix|refactor|test|docs|chore|wip)\(/` which requires opening paren after type. However, no test for MISSING closing paren exists -- the regex accepts `feat(: description` (missing scope content and closing paren).
|
|
33
|
+
> **Ran:** `echo "feat(: test" | node gsd-core/bin/validate-commit.js` -- exit code 0 (accepted).
|
|
34
|
+
> **Status: FAILED** -- Commit messages with empty scope `feat(: desc)` are accepted. The truth "rejects commits missing scope parentheses" does not hold for empty-scope edge case.
|
|
35
|
+
|
|
36
|
+
**Why this is good:** The verifier did not trust the code's intent -- it ran an actual test with an edge case input and reported the specific failure. Evidence includes the regex, the test command, the exit code, and why the truth does not hold.
|
|
37
|
+
|
|
38
|
+
### Example 3: Catching missing wiring (calibration-derived gap pattern)
|
|
39
|
+
|
|
40
|
+
**Input:** Must-have key_link: `check-subagent-output.js imports and calls feedback-loop.js extractFeedback()`
|
|
41
|
+
|
|
42
|
+
**Output:**
|
|
43
|
+
|
|
44
|
+
> **Method:** Ran `grep -n "feedback-loop\|extractFeedback" gsd-core/bin/check-subagent-output.js`.
|
|
45
|
+
> **Evidence:** Zero matches. The file `feedback-loop.js` exists (172 lines, substantive), and `tests/feedback-loop.test.js` passes (229 lines). But `check-subagent-output.js` never imports or calls it.
|
|
46
|
+
> **Cross-check:** `grep -rn "require.*feedback-loop" gsd-core/bin/` returns zero results across all scripts.
|
|
47
|
+
> **Status: FAILED** -- The artifact exists and is tested, but is completely orphaned. The key_link "imports and calls" does not hold. This is a **missing wiring** gap.
|
|
48
|
+
|
|
49
|
+
**Why this is good:** The verifier caught a common calibration pattern: code that exists, is tested, but is never actually wired into the system. L1 and L2 pass, but L3 (wiring) fails. This pattern accounts for 37% of all gaps found in calibration corpus.
|
|
50
|
+
|
|
51
|
+
### Example 4: Catching missing config schema entries (calibration-derived gap pattern)
|
|
52
|
+
|
|
53
|
+
**Input:** Must-have truth: `Config toggles features.architecture_graph and features.architecture_guard exist with defaults`
|
|
54
|
+
|
|
55
|
+
**Output:**
|
|
56
|
+
|
|
57
|
+
> **Method:** Ran `grep "architecture_graph\|architecture_guard" gsd-core/bin/lib/config-schema.json`.
|
|
58
|
+
> **Evidence:** Zero matches in schema. However, `grep "architecture" gsd-core/bin/lib/config.cjs` shows both flags in CONFIG_DEFAULTS (lines 426, 428).
|
|
59
|
+
> **Gap:** Defaults exist in code but schema validation doesn't know about them. `configValidate()` would strip these fields on load, making the defaults unreachable.
|
|
60
|
+
> **Status: FAILED** -- Config flags work in code but are invisible to schema validation. This is a **missing wiring** gap between config layers.
|
|
61
|
+
|
|
62
|
+
**Why this is good:** The verifier checked multiple config layers (schema vs defaults vs code) rather than just one. Config wiring requires schema + defaults + code to agree -- checking only one layer misses layer-mismatch bugs.
|
|
63
|
+
|
|
64
|
+
### Example 5: Distinguishing planning gaps from execution failures
|
|
65
|
+
|
|
66
|
+
**Input:** Must-have truth: `All MSYS regex patterns consolidated into shared module`
|
|
67
|
+
|
|
68
|
+
**Output:**
|
|
69
|
+
|
|
70
|
+
> **Method:** Ran `grep -rn "\/\[a-zA-Z\]\/" gsd-core/bin/` to find inline MSYS regex.
|
|
71
|
+
> **Evidence:** 2 matches in `commands/gsd/misc.md` (lines 26, 487). These were NOT in the original plan scope -- Phase 148 extracted code into misc.md AFTER Phase 149's plan was written.
|
|
72
|
+
> **Assessment:** The executor correctly completed all planned tasks. The gap is a **planning ordering issue**, not an execution failure.
|
|
73
|
+
> **Status: PASS_WITH_NOTES** -- Executor did what was planned. Unconsolidated regex noted as follow-up, not as a failure of this phase.
|
|
74
|
+
|
|
75
|
+
**Why this is good:** The verifier distinguished between what was planned vs what exists now. Code that changed AFTER plan creation is a planning gap, not an executor failure. This prevents false FAIL verdicts on correctly-executed work.
|
|
76
|
+
|
|
77
|
+
## Calibration-Derived Gap Patterns
|
|
78
|
+
|
|
79
|
+
Based on analysis of verification corpus (80% pass rate, 8 gaps):
|
|
80
|
+
|
|
81
|
+
| Pattern | Count | % of Gaps | What to Check |
|
|
82
|
+
|---------|-------|-----------|---------------|
|
|
83
|
+
| Missing wiring | 3 | 37% | File exists + tested but never imported/called by consumer |
|
|
84
|
+
| Missing tests | 2 | 25% | Feature works but test file excluded from CI or never runs |
|
|
85
|
+
| Other | 3 | 38% | Config layer mismatches, planning ordering issues, schema gaps |
|
|
86
|
+
|
|
87
|
+
## Negative Examples
|
|
88
|
+
|
|
89
|
+
### Example 1: Blanket pass with no per-criterion evidence
|
|
90
|
+
|
|
91
|
+
**Input:** Must-haves: 5 truths, 3 artifacts, 2 key_links from plan frontmatter.
|
|
92
|
+
|
|
93
|
+
**Output:**
|
|
94
|
+
|
|
95
|
+
> All must-haves have been verified. The implementation matches the plan requirements. Files exist and are properly connected. Status: PASSED.
|
|
96
|
+
> must_haves_checked: 10, must_haves_passed: 10
|
|
97
|
+
|
|
98
|
+
**Why this is bad:** No individual must-have is listed or checked. No file paths, no line numbers, no grep output, no level-by-level breakdown. The verifier restated the must-haves as passing without showing any evidence. This would miss stubs, orphaned exports, and broken wiring.
|
|
99
|
+
|
|
100
|
+
### Example 2: File existence check without substance or wiring verification
|
|
101
|
+
|
|
102
|
+
**Input:** Must-have artifact: `gsd-core/bin/lib/audit-checks/index.cjs: >100 lines`
|
|
103
|
+
|
|
104
|
+
**Output:**
|
|
105
|
+
|
|
106
|
+
> **L1 (Existence):** EXISTS -- File found at `gsd-core/bin/lib/audit-checks/index.cjs`, 142 lines.
|
|
107
|
+
> **Status: PASSED**
|
|
108
|
+
|
|
109
|
+
**Why this is bad:** The verifier stopped at Level 1. The file has 142 lines but could contain `// TODO: implement all checks` with stub functions returning empty objects. Level 2 (substantive) and Level 3 (wired) were skipped entirely. A file that exists but is never imported or contains only placeholder code should not pass.
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# Flaky-Test Avoidance Checklist
|
|
2
|
+
|
|
3
|
+
How-to reference for preventing flaky tests (intermittent pass/fail). Read when a test is flaky, or proactively when writing integration/e2e tests. (Empirically, async-wait is the #1 cause (~45%), then concurrency (~20%) and test-order dependence (~12%) — Luo et al., FSE 2014.)
|
|
4
|
+
|
|
5
|
+
## Checklist
|
|
6
|
+
|
|
7
|
+
- [ ] **Mock the clock** — inject a fixed/controllable clock; never call `now()` / `Date.now()` directly in code under test.
|
|
8
|
+
- [ ] **Seed randomness** — fixed RNG seed; never raw Faker values in assertions (use sequences/UUIDs).
|
|
9
|
+
- [ ] **Poll, don't sleep** — wait for a **condition** (element visible, API responded, row present), not a fixed interval. `sleep(2000)` is slow-when-fast and still flaky-when-slow. Poll with backoff for eventually-consistent reads.
|
|
10
|
+
- [ ] **Use framework actionability waits** — Playwright auto-waits; Testcontainers `Wait.*` strategies. Removes the #1 flake cause by construction.
|
|
11
|
+
- [ ] **Order independence** — every test self-seeds; no test depends on another's leftover state. (Randomize test order to surface hidden dependence.)
|
|
12
|
+
- [ ] **No shared mutable global state** — separate temp dirs / DBs / schemas per worker (see `db-test-isolation.md`).
|
|
13
|
+
- [ ] **Isolate external services** — fakes/stubs/contract tests at the boundary; retry-with-backoff ONLY at genuine integration edges.
|
|
14
|
+
- [ ] **Quarantine, don't ignore** — detect/mark flaky tests, auto-rerun, stage new tests before the critical path; treat flakiness as infra debt, not noise.
|
|
15
|
+
|
|
16
|
+
## The big three causes (fix structurally, not with retries)
|
|
17
|
+
|
|
18
|
+
1. **Async/timing (~45%)** → poll for conditions, framework waits, fixed clock.
|
|
19
|
+
2. **Concurrency / shared state (~20%)** → per-worker isolation, no shared globals.
|
|
20
|
+
3. **Order dependence (~12%)** → self-seeding tests; randomized order to surface it.
|
|
21
|
+
|
|
22
|
+
*Sources: Luo et al., "An Empirical Analysis of Flaky Tests" (FSE 2014) for the cause breakdown; Google Testing Blog (flaky tests at Google); OpenReplay (time/async in tests); patterns from `db-test-isolation.md` & `test-containers.md`.*
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
# Gate Prompt Patterns
|
|
2
|
+
|
|
3
|
+
Reusable prompt patterns for structured gate checks in workflows and agents.
|
|
4
|
+
|
|
5
|
+
**For checkpoint box format details, see `references/ui-brand.md`** -- checkpoint boxes use double-line border drawing with 62-character inner width.
|
|
6
|
+
|
|
7
|
+
## Rules
|
|
8
|
+
|
|
9
|
+
- `header` must be max 12 characters
|
|
10
|
+
- `multiSelect` is always `false` for gate checks
|
|
11
|
+
- Always handle the "Other" case (user typed a freeform response instead of selecting)
|
|
12
|
+
- Max 4 options per prompt -- if more are needed, use a 2-step flow
|
|
13
|
+
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Pattern: approve-revise-abort
|
|
17
|
+
3-option gate for plan approval, gap-closure approval.
|
|
18
|
+
- question: "Approve these {noun}?"
|
|
19
|
+
- header: "Approve?"
|
|
20
|
+
- options: Approve | Request changes | Abort
|
|
21
|
+
|
|
22
|
+
## Pattern: yes-no
|
|
23
|
+
Simple 2-option confirmation for re-planning, rebuild, replace plans, commit.
|
|
24
|
+
- question: "{Specific question about the action}"
|
|
25
|
+
- header: "Confirm"
|
|
26
|
+
- options: Yes | No
|
|
27
|
+
|
|
28
|
+
## Pattern: stale-continue
|
|
29
|
+
2-option refresh gate for staleness warnings, timestamp freshness.
|
|
30
|
+
- question: "{Artifact} may be outdated. Refresh or continue?"
|
|
31
|
+
- header: "Stale"
|
|
32
|
+
- options: Refresh | Continue anyway
|
|
33
|
+
|
|
34
|
+
## Pattern: yes-no-pick
|
|
35
|
+
3-option selection for seed selection, item inclusion.
|
|
36
|
+
- question: "Include {items} in planning?"
|
|
37
|
+
- header: "Include?"
|
|
38
|
+
- options: Yes, all | Let me pick | No
|
|
39
|
+
|
|
40
|
+
## Pattern: multi-option-failure
|
|
41
|
+
4-option failure handler for build failures.
|
|
42
|
+
- question: "Plan {id} failed. How should we proceed?"
|
|
43
|
+
- header: "Failed"
|
|
44
|
+
- options: Retry | Skip | Rollback | Abort
|
|
45
|
+
|
|
46
|
+
## Pattern: multi-option-escalation
|
|
47
|
+
4-option escalation for review escalation (max retries exceeded).
|
|
48
|
+
- question: "Phase {N} has failed verification {attempt} times. How should we proceed?"
|
|
49
|
+
- header: "Escalate"
|
|
50
|
+
- options: Accept gaps | Re-plan (via /gsd:plan-phase) | Debug (via /gsd:debug) | Retry
|
|
51
|
+
|
|
52
|
+
## Pattern: multi-option-gaps
|
|
53
|
+
4-option gap handler for review gaps-found.
|
|
54
|
+
- question: "{count} verification gaps need attention. How should we proceed?"
|
|
55
|
+
- header: "Gaps"
|
|
56
|
+
- options: Auto-fix | Override | Manual | Skip
|
|
57
|
+
|
|
58
|
+
## Pattern: multi-option-priority
|
|
59
|
+
4-option priority selection for milestone gap priority.
|
|
60
|
+
- question: "Which gaps should we address?"
|
|
61
|
+
- header: "Priority"
|
|
62
|
+
- options: Must-fix only | Must + should | Everything | Let me pick
|
|
63
|
+
|
|
64
|
+
## Pattern: toggle-confirm
|
|
65
|
+
2-option confirmation for enabling/disabling boolean features.
|
|
66
|
+
- question: "Enable {feature_name}?"
|
|
67
|
+
- header: "Toggle"
|
|
68
|
+
- options: Enable | Disable
|
|
69
|
+
|
|
70
|
+
## Pattern: action-routing
|
|
71
|
+
Up to 4 suggested next actions with selection (status, resume workflows).
|
|
72
|
+
- question: "What would you like to do next?"
|
|
73
|
+
- header: "Next Step"
|
|
74
|
+
- options: {primary action} | {alternative 1} | {alternative 2} | Something else
|
|
75
|
+
- Note: Dynamically generate options from workflow state. Always include "Something else" as last option.
|
|
76
|
+
|
|
77
|
+
## Pattern: scope-confirm
|
|
78
|
+
3-option confirmation for quick task scope validation.
|
|
79
|
+
- question: "This task looks complex. Proceed as quick task or use full planning?"
|
|
80
|
+
- header: "Scope"
|
|
81
|
+
- options: Quick task | Full plan (via /gsd:plan-phase) | Revise
|
|
82
|
+
|
|
83
|
+
## Pattern: depth-select
|
|
84
|
+
3-option depth selection for planning workflow preferences.
|
|
85
|
+
- question: "How thorough should planning be?"
|
|
86
|
+
- header: "Depth"
|
|
87
|
+
- options: Quick (3-5 phases, skip research) | Standard (5-8 phases, default) | Comprehensive (8-12 phases, deep research)
|
|
88
|
+
|
|
89
|
+
## Pattern: context-handling
|
|
90
|
+
3-option handler for existing CONTEXT.md in discuss workflow.
|
|
91
|
+
- question: "Phase {N} already has a CONTEXT.md. How should we handle it?"
|
|
92
|
+
- header: "Context"
|
|
93
|
+
- options: Overwrite | Append | Cancel
|
|
94
|
+
|
|
95
|
+
## Pattern: gray-area-option
|
|
96
|
+
Dynamic template for presenting gray area choices in discuss workflow.
|
|
97
|
+
- question: "{Gray area title}"
|
|
98
|
+
- header: "Decision"
|
|
99
|
+
- options: {Option 1} | {Option 2} | Let Claude decide
|
|
100
|
+
- Note: Options generated at runtime. Always include "Let Claude decide" as last option.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Gates Taxonomy
|
|
2
|
+
|
|
3
|
+
Canonical gate types used across GSD workflows. Every validation checkpoint maps to one of these four types.
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## Gate Types
|
|
8
|
+
|
|
9
|
+
### Pre-flight Gate
|
|
10
|
+
**Purpose:** Validates preconditions before starting an operation.
|
|
11
|
+
**Behavior:** Blocks entry if conditions unmet. No partial work created.
|
|
12
|
+
**Recovery:** Fix the missing precondition, then retry.
|
|
13
|
+
**Examples:**
|
|
14
|
+
- Plan-phase checks for REQUIREMENTS.md before planning
|
|
15
|
+
- Execute-phase validates PLAN.md exists before execution
|
|
16
|
+
- Discuss-phase confirms phase exists in ROADMAP.md
|
|
17
|
+
|
|
18
|
+
### Revision Gate
|
|
19
|
+
**Purpose:** Evaluates output quality and routes to revision if insufficient.
|
|
20
|
+
**Behavior:** Loops back to producer with specific feedback. Bounded by iteration cap.
|
|
21
|
+
**Recovery:** Producer addresses feedback; checker re-evaluates. The loop also escalates early if issue count does not decrease between consecutive iterations (stall detection). After max iterations, escalates unconditionally.
|
|
22
|
+
**Examples:**
|
|
23
|
+
- Plan-checker reviewing PLAN.md (max 3 iterations)
|
|
24
|
+
- Verifier checking phase deliverables against success criteria
|
|
25
|
+
|
|
26
|
+
### Escalation Gate
|
|
27
|
+
**Purpose:** Surfaces unresolvable issues to the developer for a decision.
|
|
28
|
+
**Behavior:** Pauses workflow, presents options, waits for human input.
|
|
29
|
+
**Recovery:** Developer chooses action; workflow resumes on selected path.
|
|
30
|
+
**Examples:**
|
|
31
|
+
- Revision loop exhausted after 3 iterations
|
|
32
|
+
- Merge conflict during worktree cleanup
|
|
33
|
+
- Ambiguous requirement needing clarification
|
|
34
|
+
|
|
35
|
+
### Abort Gate
|
|
36
|
+
**Purpose:** Terminates the operation to prevent damage or waste.
|
|
37
|
+
**Behavior:** Stops immediately, preserves state, reports reason.
|
|
38
|
+
**Recovery:** Developer investigates root cause, fixes, restarts from checkpoint.
|
|
39
|
+
**Examples:**
|
|
40
|
+
- Context window critically low during execution
|
|
41
|
+
- STATE.md in error state blocking /gsd-next
|
|
42
|
+
- Verification finds critical missing deliverables
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## Gate Matrix
|
|
47
|
+
|
|
48
|
+
| Workflow | Phase | Gate Type | Artifacts Checked | Failure Behavior |
|
|
49
|
+
|----------|-------|-----------|-------------------|------------------|
|
|
50
|
+
| plan-phase | Entry | Pre-flight | REQUIREMENTS.md, ROADMAP.md | Block with missing-file message |
|
|
51
|
+
| plan-phase | Step 12 | Revision | PLAN.md quality | Loop to planner (max 3) |
|
|
52
|
+
| plan-phase | Post-revision | Escalation | Unresolved issues | Surface to developer |
|
|
53
|
+
| execute-phase | Entry | Pre-flight | PLAN.md | Block with missing-plan message |
|
|
54
|
+
| execute-phase | Completion | Revision | SUMMARY.md completeness | Re-run incomplete tasks |
|
|
55
|
+
| verify-work | Entry | Pre-flight | SUMMARY.md | Block with missing-summary |
|
|
56
|
+
| verify-work | Evaluation | Escalation | Failed criteria | Surface gaps to developer |
|
|
57
|
+
| next | Entry | Abort | Error state, checkpoints | Stop with diagnostic |
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
|
|
61
|
+
## Implementing Gates
|
|
62
|
+
|
|
63
|
+
Use this taxonomy when designing or auditing workflow validation points:
|
|
64
|
+
|
|
65
|
+
- **Pre-flight** gates belong at workflow entry points. They are cheap, deterministic checks that prevent wasted work. If you can verify a precondition with a file-existence check or a config read, use a pre-flight gate.
|
|
66
|
+
- **Revision** gates belong after a producer step where quality varies. Always pair them with an iteration cap to prevent infinite loops. The cap should reflect the cost of each iteration -- expensive operations get fewer retries.
|
|
67
|
+
- **Escalation** gates belong wherever automated resolution is impossible or ambiguous. They are the safety valve between revision loops and abort. Present the developer with clear options and enough context to decide.
|
|
68
|
+
- **Abort** gates belong at points where continuing would cause damage, waste significant resources, or produce meaningless output. They should preserve state so work can resume after the root cause is fixed.
|
|
69
|
+
|
|
70
|
+
**Selection heuristic:** Start with pre-flight. If the check happens after work is produced, it is a revision gate. If the revision loop cannot resolve the issue, escalate. If continuing is dangerous, abort.
|
|
@@ -0,0 +1,298 @@
|
|
|
1
|
+
<overview>
|
|
2
|
+
Git integration for GSD framework.
|
|
3
|
+
</overview>
|
|
4
|
+
|
|
5
|
+
<core_principle>
|
|
6
|
+
|
|
7
|
+
**Commit outcomes, not process.**
|
|
8
|
+
|
|
9
|
+
The git log should read like a changelog of what shipped, not a diary of planning activity.
|
|
10
|
+
</core_principle>
|
|
11
|
+
|
|
12
|
+
<commit_points>
|
|
13
|
+
|
|
14
|
+
| Event | Commit? | Why |
|
|
15
|
+
| ----------------------- | ------- | ------------------------------------------------ |
|
|
16
|
+
| BRIEF + ROADMAP created | YES | Project initialization |
|
|
17
|
+
| PLAN.md created | NO | Intermediate - commit with plan completion |
|
|
18
|
+
| RESEARCH.md created | NO | Intermediate |
|
|
19
|
+
| DISCOVERY.md created | NO | Intermediate |
|
|
20
|
+
| **Task completed** | YES | Atomic unit of work (1 commit per task) |
|
|
21
|
+
| **Plan completed** | YES | Metadata commit (SUMMARY + STATE + ROADMAP) |
|
|
22
|
+
| Handoff created | YES | WIP state preserved |
|
|
23
|
+
|
|
24
|
+
</commit_points>
|
|
25
|
+
|
|
26
|
+
<git_check>
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
[ -d .git ] && echo "GIT_EXISTS" || echo "NO_GIT"
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
If NO_GIT: Run `git init` silently. GSD projects always get their own repo.
|
|
33
|
+
</git_check>
|
|
34
|
+
|
|
35
|
+
<commit_formats>
|
|
36
|
+
|
|
37
|
+
<format name="initialization">
|
|
38
|
+
## Project Initialization (brief + roadmap together)
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
docs: initialize [project-name] ([N] phases)
|
|
42
|
+
|
|
43
|
+
[One-liner from PROJECT.md]
|
|
44
|
+
|
|
45
|
+
Phases:
|
|
46
|
+
1. [phase-name]: [goal]
|
|
47
|
+
2. [phase-name]: [goal]
|
|
48
|
+
3. [phase-name]: [goal]
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
What to commit:
|
|
52
|
+
|
|
53
|
+
```bash
|
|
54
|
+
gsd-tools query commit "docs: initialize [project-name] ([N] phases)" --files .planning/
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
</format>
|
|
58
|
+
|
|
59
|
+
<format name="task-completion">
|
|
60
|
+
## Task Completion (During Plan Execution)
|
|
61
|
+
|
|
62
|
+
Each task gets its own commit immediately after completion.
|
|
63
|
+
|
|
64
|
+
> **Parallel agents:** When running as a parallel executor (spawned by execute-phase),
|
|
65
|
+
> run commits normally — let pre-commit hooks run. Do NOT pass `--no-verify` by default
|
|
66
|
+
> (#2924). Hooks should fire on the introducing commit; silent bypass violates project
|
|
67
|
+
> CLAUDE.md guidance. If a project explicitly opts out via
|
|
68
|
+
> `workflow.worktree_skip_hooks=true`, the orchestrator surfaces that flag in the
|
|
69
|
+
> executor prompt; absent that signal, hooks run normally.
|
|
70
|
+
|
|
71
|
+
```
|
|
72
|
+
{type}({phase}-{plan}): {task-name}
|
|
73
|
+
|
|
74
|
+
- [Key change 1]
|
|
75
|
+
- [Key change 2]
|
|
76
|
+
- [Key change 3]
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
**Commit types:**
|
|
80
|
+
- `feat` - New feature/functionality
|
|
81
|
+
- `fix` - Bug fix
|
|
82
|
+
- `test` - Test-only (TDD RED phase)
|
|
83
|
+
- `refactor` - Code cleanup (TDD REFACTOR phase)
|
|
84
|
+
- `perf` - Performance improvement
|
|
85
|
+
- `chore` - Dependencies, config, tooling
|
|
86
|
+
|
|
87
|
+
**Examples:**
|
|
88
|
+
|
|
89
|
+
```bash
|
|
90
|
+
# Standard task
|
|
91
|
+
git add src/api/auth.ts src/types/user.ts
|
|
92
|
+
git commit -m "feat(08-02): create user registration endpoint
|
|
93
|
+
|
|
94
|
+
- POST /auth/register validates email and password
|
|
95
|
+
- Checks for duplicate users
|
|
96
|
+
- Returns JWT token on success
|
|
97
|
+
"
|
|
98
|
+
|
|
99
|
+
# TDD task - RED phase
|
|
100
|
+
git add src/__tests__/jwt.test.ts
|
|
101
|
+
git commit -m "test(07-02): add failing test for JWT generation
|
|
102
|
+
|
|
103
|
+
- Tests token contains user ID claim
|
|
104
|
+
- Tests token expires in 1 hour
|
|
105
|
+
- Tests signature verification
|
|
106
|
+
"
|
|
107
|
+
|
|
108
|
+
# TDD task - GREEN phase
|
|
109
|
+
git add src/utils/jwt.ts
|
|
110
|
+
git commit -m "feat(07-02): implement JWT generation
|
|
111
|
+
|
|
112
|
+
- Uses jose library for signing
|
|
113
|
+
- Includes user ID and expiry claims
|
|
114
|
+
- Signs with HS256 algorithm
|
|
115
|
+
"
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
</format>
|
|
119
|
+
|
|
120
|
+
<format name="plan-completion">
|
|
121
|
+
## Plan Completion (After All Tasks Done)
|
|
122
|
+
|
|
123
|
+
After all tasks committed, one final metadata commit captures plan completion.
|
|
124
|
+
|
|
125
|
+
```
|
|
126
|
+
docs({phase}-{plan}): complete [plan-name] plan
|
|
127
|
+
|
|
128
|
+
Tasks completed: [N]/[N]
|
|
129
|
+
- [Task 1 name]
|
|
130
|
+
- [Task 2 name]
|
|
131
|
+
- [Task 3 name]
|
|
132
|
+
|
|
133
|
+
SUMMARY: .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
What to commit:
|
|
137
|
+
|
|
138
|
+
```bash
|
|
139
|
+
gsd-tools query commit "docs({phase}-{plan}): complete [plan-name] plan" --files .planning/phases/XX-name/{phase}-{plan}-PLAN.md .planning/phases/XX-name/{phase}-{plan}-SUMMARY.md .planning/STATE.md .planning/ROADMAP.md
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
**Note:** Code files NOT included - already committed per-task.
|
|
143
|
+
|
|
144
|
+
</format>
|
|
145
|
+
|
|
146
|
+
<format name="handoff">
|
|
147
|
+
## Handoff (WIP)
|
|
148
|
+
|
|
149
|
+
```
|
|
150
|
+
wip: [phase-name] paused at task [X]/[Y]
|
|
151
|
+
|
|
152
|
+
Current: [task name]
|
|
153
|
+
[If blocked:] Blocked: [reason]
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
What to commit:
|
|
157
|
+
|
|
158
|
+
```bash
|
|
159
|
+
gsd-tools query commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
</format>
|
|
163
|
+
</commit_formats>
|
|
164
|
+
|
|
165
|
+
<example_log>
|
|
166
|
+
|
|
167
|
+
**Old approach (per-plan commits):**
|
|
168
|
+
```
|
|
169
|
+
a7f2d1 feat(checkout): Stripe payments with webhook verification
|
|
170
|
+
3e9c4b feat(products): catalog with search, filters, and pagination
|
|
171
|
+
8a1b2c feat(auth): JWT with refresh rotation using jose
|
|
172
|
+
5c3d7e feat(foundation): Next.js 15 + Prisma + Tailwind scaffold
|
|
173
|
+
2f4a8d docs: initialize ecommerce-app (5 phases)
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
**New approach (per-task commits):**
|
|
177
|
+
```
|
|
178
|
+
# Phase 04 - Checkout
|
|
179
|
+
1a2b3c docs(04-01): complete checkout flow plan
|
|
180
|
+
4d5e6f feat(04-01): add webhook signature verification
|
|
181
|
+
7g8h9i feat(04-01): implement payment session creation
|
|
182
|
+
0j1k2l feat(04-01): create checkout page component
|
|
183
|
+
|
|
184
|
+
# Phase 03 - Products
|
|
185
|
+
3m4n5o docs(03-02): complete product listing plan
|
|
186
|
+
6p7q8r feat(03-02): add pagination controls
|
|
187
|
+
9s0t1u feat(03-02): implement search and filters
|
|
188
|
+
2v3w4x feat(03-01): create product catalog schema
|
|
189
|
+
|
|
190
|
+
# Phase 02 - Auth
|
|
191
|
+
5y6z7a docs(02-02): complete token refresh plan
|
|
192
|
+
8b9c0d feat(02-02): implement refresh token rotation
|
|
193
|
+
1e2f3g test(02-02): add failing test for token refresh
|
|
194
|
+
4h5i6j docs(02-01): complete JWT setup plan
|
|
195
|
+
7k8l9m feat(02-01): add JWT generation and validation
|
|
196
|
+
0n1o2p chore(02-01): install jose library
|
|
197
|
+
|
|
198
|
+
# Phase 01 - Foundation
|
|
199
|
+
3q4r5s docs(01-01): complete scaffold plan
|
|
200
|
+
6t7u8v feat(01-01): configure Tailwind and globals
|
|
201
|
+
9w0x1y feat(01-01): set up Prisma with database
|
|
202
|
+
2z3a4b feat(01-01): create Next.js 15 project
|
|
203
|
+
|
|
204
|
+
# Initialization
|
|
205
|
+
5c6d7e docs: initialize ecommerce-app (5 phases)
|
|
206
|
+
```
|
|
207
|
+
|
|
208
|
+
Each plan produces 2-4 commits (tasks + metadata). Clear, granular, bisectable.
|
|
209
|
+
|
|
210
|
+
</example_log>
|
|
211
|
+
|
|
212
|
+
<anti_patterns>
|
|
213
|
+
|
|
214
|
+
**Still don't commit (intermediate artifacts):**
|
|
215
|
+
- PLAN.md creation (commit with plan completion)
|
|
216
|
+
- RESEARCH.md (intermediate)
|
|
217
|
+
- DISCOVERY.md (intermediate)
|
|
218
|
+
- Minor planning tweaks
|
|
219
|
+
- "Fixed typo in roadmap"
|
|
220
|
+
|
|
221
|
+
**Do commit (outcomes):**
|
|
222
|
+
- Each task completion (feat/fix/test/refactor)
|
|
223
|
+
- Plan completion metadata (docs)
|
|
224
|
+
- Project initialization (docs)
|
|
225
|
+
|
|
226
|
+
**Key principle:** Commit working code and shipped outcomes, not planning process.
|
|
227
|
+
|
|
228
|
+
</anti_patterns>
|
|
229
|
+
|
|
230
|
+
<commit_strategy_rationale>
|
|
231
|
+
|
|
232
|
+
## Why Per-Task Commits?
|
|
233
|
+
|
|
234
|
+
**Context engineering for AI:**
|
|
235
|
+
- Git history becomes primary context source for future Claude sessions
|
|
236
|
+
- `git log --grep="{phase}-{plan}"` shows all work for a plan
|
|
237
|
+
- `git diff <hash>^..<hash>` shows exact changes per task
|
|
238
|
+
- Less reliance on parsing SUMMARY.md = more context for actual work
|
|
239
|
+
|
|
240
|
+
**Failure recovery:**
|
|
241
|
+
- Task 1 committed ✅, Task 2 failed ❌
|
|
242
|
+
- Claude in next session: sees task 1 complete, can retry task 2
|
|
243
|
+
- Can `git reset --hard` to last successful task
|
|
244
|
+
|
|
245
|
+
**Debugging:**
|
|
246
|
+
- `git bisect` finds exact failing task, not just failing plan
|
|
247
|
+
- `git blame` traces line to specific task context
|
|
248
|
+
- Each commit is independently revertable
|
|
249
|
+
|
|
250
|
+
**Observability:**
|
|
251
|
+
- Solo developer + Claude workflow benefits from granular attribution
|
|
252
|
+
- Atomic commits are git best practice
|
|
253
|
+
- "Commit noise" irrelevant when consumer is Claude, not humans
|
|
254
|
+
|
|
255
|
+
</commit_strategy_rationale>
|
|
256
|
+
|
|
257
|
+
<sub_repos_support>
|
|
258
|
+
|
|
259
|
+
## Multi-Repo Workspace Support (sub_repos)
|
|
260
|
+
|
|
261
|
+
For workspaces with separate git repos (e.g., `backend/`, `frontend/`, `shared/`), GSD routes commits to each repo independently.
|
|
262
|
+
|
|
263
|
+
### Configuration
|
|
264
|
+
|
|
265
|
+
In `.planning/config.json`, list sub-repo directories under `planning.sub_repos`:
|
|
266
|
+
|
|
267
|
+
```json
|
|
268
|
+
{
|
|
269
|
+
"planning": {
|
|
270
|
+
"commit_docs": false,
|
|
271
|
+
"sub_repos": ["backend", "frontend", "shared"]
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
```
|
|
275
|
+
|
|
276
|
+
Set `commit_docs: false` so planning docs stay local and are not committed to any sub-repo.
|
|
277
|
+
|
|
278
|
+
### How It Works
|
|
279
|
+
|
|
280
|
+
1. **Auto-detection:** During `/gsd:new-project`, directories with their own `.git` folder are detected and offered for selection as sub-repos. On subsequent runs, `loadConfig` auto-syncs the `sub_repos` list with the filesystem — adding newly created repos and removing deleted ones. This means `config.json` may be rewritten automatically when repos change on disk.
|
|
281
|
+
2. **File grouping:** Code files are grouped by their sub-repo prefix (e.g., `backend/src/api/users.ts` belongs to the `backend/` repo).
|
|
282
|
+
3. **Independent commits:** Each sub-repo receives its own atomic commit via `gsd-tools.cjs commit-to-subrepo`. File paths are made relative to the sub-repo root before staging.
|
|
283
|
+
4. **Planning stays local:** The `.planning/` directory is not committed; it acts as cross-repo coordination.
|
|
284
|
+
|
|
285
|
+
### Commit Routing
|
|
286
|
+
|
|
287
|
+
Instead of the standard `commit` command, use `commit-to-subrepo` when `sub_repos` is configured:
|
|
288
|
+
|
|
289
|
+
```bash
|
|
290
|
+
gsd-tools query commit-to-subrepo "feat(02-01): add user API" \
|
|
291
|
+
--files backend/src/api/users.ts backend/src/types/user.ts frontend/src/components/UserForm.tsx
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
This stages `src/api/users.ts` and `src/types/user.ts` in the `backend/` repo, and `src/components/UserForm.tsx` in the `frontend/` repo, then commits each independently with the same message.
|
|
295
|
+
|
|
296
|
+
Files that don't match any configured sub-repo are reported as unmatched.
|
|
297
|
+
|
|
298
|
+
</sub_repos_support>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
# Git Planning Commit
|
|
2
|
+
|
|
3
|
+
Commit planning artifacts via `gsd-tools query commit`, which checks `commit_docs` config and gitignore status (same behavior as legacy `gsd-tools.cjs commit`).
|
|
4
|
+
|
|
5
|
+
## Commit via CLI
|
|
6
|
+
|
|
7
|
+
Pass the message first, then file paths via `--files`. Both `commit` and `commit-to-subrepo` use `--files` to declare the paths to commit.
|
|
8
|
+
|
|
9
|
+
Always use this for `.planning/` files — it handles `commit_docs` and gitignore checks automatically:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
gsd-tools query commit "docs({scope}): {description}" --files .planning/STATE.md .planning/ROADMAP.md
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
The CLI will return `skipped` (with reason) if `commit_docs` is `false` or `.planning/` is gitignored. No manual conditional checks needed.
|
|
16
|
+
|
|
17
|
+
## Amend previous commit
|
|
18
|
+
|
|
19
|
+
To fold `.planning/` file changes into the previous commit:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
gsd-tools query commit "" --files .planning/codebase/*.md --amend
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## Commit Message Patterns
|
|
26
|
+
|
|
27
|
+
| Command | Scope | Example |
|
|
28
|
+
|---------|-------|---------|
|
|
29
|
+
| plan-phase | phase | `docs(phase-03): create authentication plans` |
|
|
30
|
+
| execute-phase | phase | `docs(phase-03): complete authentication phase` |
|
|
31
|
+
| new-milestone | milestone | `docs: start milestone v1.1` |
|
|
32
|
+
| remove-phase | chore | `chore: remove phase 17 (dashboard)` |
|
|
33
|
+
| insert-phase | phase | `docs: insert phase 16.1 (critical fix)` |
|
|
34
|
+
| add-phase | phase | `docs: add phase 07 (settings page)` |
|
|
35
|
+
|
|
36
|
+
## When to Skip
|
|
37
|
+
|
|
38
|
+
- `commit_docs: false` in config
|
|
39
|
+
- `.planning/` is gitignored
|
|
40
|
+
- No changes to commit (check with `git status --porcelain .planning/`)
|