@opengsd/gsd-core 1.10.0 → 1.12.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/marketplace.json +1 -1
- package/.claude-plugin/plugin.json +1 -1
- package/agents/gsd-code-fixer.md +1 -1
- package/agents/gsd-debug-session-manager.md +12 -1
- package/agents/gsd-debugger.md +1 -1
- package/agents/gsd-doc-synthesizer.md +2 -4
- package/agents/gsd-dom-verifier.md +169 -0
- package/agents/gsd-eval-auditor.md +1 -1
- package/agents/gsd-executor.md +22 -14
- package/agents/gsd-framework-selector.md +1 -3
- package/agents/gsd-intel-updater.md +1 -1
- package/agents/gsd-mempalace-curator.md +5 -3
- package/agents/gsd-pattern-mapper.md +11 -0
- package/agents/gsd-phase-researcher.md +23 -2
- package/agents/gsd-plan-checker.md +50 -53
- package/agents/gsd-planner.md +50 -50
- package/agents/gsd-project-researcher.md +1 -1
- package/agents/gsd-research-synthesizer.md +2 -2
- package/agents/gsd-roadmapper.md +15 -11
- package/agents/gsd-ui-checker.md +63 -4
- package/agents/gsd-ui-researcher.md +41 -3
- package/agents/gsd-user-profiler.md +3 -0
- package/agents/gsd-verifier.md +13 -4
- package/bin/install.js +1448 -1103
- package/commands/gsd/code-review.md +1 -1
- package/commands/gsd/discuss-phase.md +1 -1
- package/commands/gsd/execute-phase.md +1 -1
- package/commands/gsd/import.md +1 -1
- package/commands/gsd/map-codebase.md +1 -1
- package/commands/gsd/mempalace-capture.md +1 -1
- package/commands/gsd/mempalace-recall.md +1 -1
- package/commands/gsd/new-milestone.md +1 -1
- package/commands/gsd/quick.md +9 -5
- package/commands/gsd/review-backlog.md +2 -1
- package/commands/gsd/verify-work.md +1 -1
- package/gsd-core/bin/gsd-tools.cjs +1035 -138
- package/gsd-core/bin/lib/active-workstream-store.cjs +146 -22
- package/gsd-core/bin/lib/adr-parser.cjs +13 -7
- package/gsd-core/bin/lib/agent-install-check.cjs +392 -32
- package/gsd-core/bin/lib/api-coverage.cjs +33 -14
- package/gsd-core/bin/lib/artifacts.cjs +5 -0
- package/gsd-core/bin/lib/assumption-delta.cjs +32 -15
- package/gsd-core/bin/lib/audit-command-router.cjs +9 -2
- package/gsd-core/bin/lib/audit.cjs +1026 -268
- package/gsd-core/bin/lib/broken-windows.cjs +306 -28
- package/gsd-core/bin/lib/capability-consent.cjs +149 -15
- package/gsd-core/bin/lib/capability-lifecycle.cjs +45 -0
- package/gsd-core/bin/lib/capability-lock.cjs +10 -4
- package/gsd-core/bin/lib/capability-registry.cjs +845 -130
- package/gsd-core/bin/lib/capability-source.cjs +92 -0
- package/gsd-core/bin/lib/capability-state.cjs +18 -3
- package/gsd-core/bin/lib/capability-trust.cjs +444 -25
- package/gsd-core/bin/lib/capability-validator.cjs +700 -40
- package/gsd-core/bin/lib/capability-writer.cjs +3 -2
- package/gsd-core/bin/lib/check-command-router.cjs +216 -42
- package/gsd-core/bin/lib/claude-orchestration.cjs +56 -3
- package/gsd-core/bin/lib/cli-exit.cjs +496 -10
- package/gsd-core/bin/lib/code-review-depth.cjs +288 -0
- package/gsd-core/bin/lib/codex-agent-toml.cjs +735 -0
- package/gsd-core/bin/lib/command-aliases.cjs +22 -0
- package/gsd-core/bin/lib/command-arg-projection.cjs +144 -14
- package/gsd-core/bin/lib/command-roster.cjs +44 -1
- package/gsd-core/bin/lib/command-routing-hub.cjs +31 -2
- package/gsd-core/bin/lib/commands.cjs +1172 -108
- package/gsd-core/bin/lib/commonjs-marker.cjs +12 -6
- package/gsd-core/bin/lib/complexity-trigger.cjs +1192 -0
- package/gsd-core/bin/lib/config-loader.cjs +187 -23
- package/gsd-core/bin/lib/config.cjs +102 -3
- package/gsd-core/bin/lib/configuration.cjs +129 -37
- package/gsd-core/bin/lib/core-utils.cjs +208 -33
- package/gsd-core/bin/lib/decisions.cjs +23 -0
- package/gsd-core/bin/lib/edge-probe.cjs +9 -1
- package/gsd-core/bin/lib/estimate-cli.cjs +55 -11
- package/gsd-core/bin/lib/exit-code-registry.cjs +98 -0
- package/gsd-core/bin/lib/fallow-runner.cjs +20 -44
- package/gsd-core/bin/lib/frontmatter.cjs +899 -229
- package/gsd-core/bin/lib/gap-checker.cjs +95 -10
- package/gsd-core/bin/lib/git-base-branch.cjs +276 -39
- package/gsd-core/bin/lib/gsd2-import.cjs +10 -1
- package/gsd-core/bin/lib/health-diagnostic-rules/agent-install.cjs +101 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/config-validation.cjs +348 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/consistency.cjs +149 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/install-surface-shadowing.cjs +98 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/milestone-archive-hygiene.cjs +100 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/phase-structure.cjs +222 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/roadmap-disk-consistency.cjs +268 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/root-existence.cjs +161 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/state-consistency.cjs +303 -0
- package/gsd-core/bin/lib/health-diagnostic-rules/worktree-health.cjs +187 -0
- package/gsd-core/bin/lib/health-diagnostic-types.cjs +68 -0
- package/gsd-core/bin/lib/health-diagnostic.cjs +451 -0
- package/gsd-core/bin/lib/host-integration.cjs +39 -6
- package/gsd-core/bin/lib/host-runtime-detection.cjs +134 -0
- package/gsd-core/bin/lib/init-command-router.cjs +118 -21
- package/gsd-core/bin/lib/init.cjs +439 -168
- package/gsd-core/bin/lib/install-effort-resolver.cjs +73 -30
- package/gsd-core/bin/lib/install-engine.cjs +811 -259
- package/gsd-core/bin/lib/install-fs-adapter.cjs +262 -0
- package/gsd-core/bin/lib/install-model-override-resolver.cjs +235 -0
- package/gsd-core/bin/lib/install-profiles.cjs +212 -61
- package/gsd-core/bin/lib/install-scope.cjs +270 -0
- package/gsd-core/bin/lib/install-shadow-report.cjs +385 -0
- package/gsd-core/bin/lib/installed-surface-resolver.cjs +381 -0
- package/gsd-core/bin/lib/installer-migration-report.cjs +3 -0
- package/gsd-core/bin/lib/installer-migrations/010-antigravity-retire-confighome-artifacts.cjs +169 -0
- package/gsd-core/bin/lib/installer-migrations.cjs +148 -38
- package/gsd-core/bin/lib/intel.cjs +101 -26
- package/gsd-core/bin/lib/io.cjs +170 -15
- package/gsd-core/bin/lib/learnings.cjs +85 -14
- package/gsd-core/bin/lib/legacy-cleanup.cjs +8 -2
- package/gsd-core/bin/lib/markdown-sectionizer.cjs +2 -1
- package/gsd-core/bin/lib/markdown-table.cjs +183 -22
- package/gsd-core/bin/lib/milestone-lock.cjs +248 -0
- package/gsd-core/bin/lib/milestone.cjs +842 -73
- package/gsd-core/bin/lib/model-catalog.cjs +232 -16
- package/gsd-core/bin/lib/model-resolver.cjs +193 -68
- package/gsd-core/bin/lib/normalize-test-command.cjs +1 -1
- package/gsd-core/bin/lib/onboard-projection.cjs +5 -1
- package/gsd-core/bin/lib/pattern.cjs +122 -0
- package/gsd-core/bin/lib/phase-estimation.cjs +18 -9
- package/gsd-core/bin/lib/phase-id.cjs +514 -40
- package/gsd-core/bin/lib/phase-lifecycle.cjs +52 -19
- package/gsd-core/bin/lib/phase-locator.cjs +262 -34
- package/gsd-core/bin/lib/phase.cjs +1038 -214
- package/gsd-core/bin/lib/plan-dependency-graph.cjs +72 -1
- package/gsd-core/bin/lib/plan-document.cjs +263 -0
- package/gsd-core/bin/lib/plan-drift-guard.cjs +120 -0
- package/gsd-core/bin/lib/plan-scan.cjs +98 -3
- package/gsd-core/bin/lib/planning-command-router.cjs +61 -0
- package/gsd-core/bin/lib/planning-inspect.cjs +1168 -0
- package/gsd-core/bin/lib/planning-scope.cjs +31 -0
- package/gsd-core/bin/lib/planning-snapshot.cjs +894 -0
- package/gsd-core/bin/lib/planning-workspace.cjs +112 -6
- package/gsd-core/bin/lib/probe-core.cjs +5 -2
- package/gsd-core/bin/lib/profile-output.cjs +1 -1
- package/gsd-core/bin/lib/profile-pipeline-command-router.cjs +50 -7
- package/gsd-core/bin/lib/profile-pipeline.cjs +6 -3
- package/gsd-core/bin/lib/real-home-guard.cjs +419 -0
- package/gsd-core/bin/lib/refactor-trigger-command-router.cjs +766 -0
- package/gsd-core/bin/lib/retired-artifact-cleanup.cjs +11 -6
- package/gsd-core/bin/lib/review-lane-descriptor.cjs +22 -13
- package/gsd-core/bin/lib/review-lane-invocation.cjs +30 -0
- package/gsd-core/bin/lib/review-lane-runner.cjs +421 -66
- package/gsd-core/bin/lib/review-reviewer-selection.cjs +13 -18
- package/gsd-core/bin/lib/roadmap-command-router.cjs +59 -11
- package/gsd-core/bin/lib/roadmap-parser.cjs +1006 -184
- package/gsd-core/bin/lib/roadmap-upgrade.cjs +37 -10
- package/gsd-core/bin/lib/roadmap.cjs +442 -96
- package/gsd-core/bin/lib/runtime-artifact-conversion.cjs +702 -52
- package/gsd-core/bin/lib/runtime-artifact-install-plan.cjs +14 -2
- package/gsd-core/bin/lib/runtime-artifact-layout.cjs +459 -55
- package/gsd-core/bin/lib/runtime-config-adapter-registry.cjs +3 -2
- package/gsd-core/bin/lib/runtime-homes.cjs +69 -3
- package/gsd-core/bin/lib/runtime-hooks-surface.cjs +402 -58
- package/gsd-core/bin/lib/runtime-identity.cjs +234 -0
- package/gsd-core/bin/lib/runtime-name-policy.cjs +3 -1
- package/gsd-core/bin/lib/runtime-slash.cjs +96 -8
- package/gsd-core/bin/lib/security.cjs +104 -5
- package/gsd-core/bin/lib/shell-command-projection.cjs +342 -7
- package/gsd-core/bin/lib/smart-entry.cjs +133 -23
- package/gsd-core/bin/lib/spec-section.cjs +12 -7
- package/gsd-core/bin/lib/state-command-router.cjs +52 -19
- package/gsd-core/bin/lib/state-contract.cjs +359 -0
- package/gsd-core/bin/lib/state-document.cjs +338 -8
- package/gsd-core/bin/lib/state-md-schema.cjs +221 -0
- package/gsd-core/bin/lib/state-transition.cjs +846 -176
- package/gsd-core/bin/lib/state.cjs +2589 -369
- package/gsd-core/bin/lib/surface.cjs +33 -11
- package/gsd-core/bin/lib/task-command-router.cjs +111 -1
- package/gsd-core/bin/lib/task-content-resolution.cjs +368 -0
- package/gsd-core/bin/lib/teams-status.cjs +4 -1
- package/gsd-core/bin/lib/text-lines.cjs +80 -0
- package/gsd-core/bin/lib/token-scanner.cjs +76 -0
- package/gsd-core/bin/lib/uat-predicate.cjs +67 -23
- package/gsd-core/bin/lib/uat.cjs +1761 -167
- package/gsd-core/bin/lib/ui-consideration-probe.cjs +9 -1
- package/gsd-core/bin/lib/ui-frontend-evidence.cjs +157 -0
- package/gsd-core/bin/lib/ui-safety-gate.cjs +51 -12
- package/gsd-core/bin/lib/unusable-input.cjs +37 -0
- package/gsd-core/bin/lib/update-context.cjs +8 -2
- package/gsd-core/bin/lib/user-artifact-staging.cjs +705 -0
- package/gsd-core/bin/lib/validate-command-router.cjs +2 -2
- package/gsd-core/bin/lib/validate.cjs +20 -6
- package/gsd-core/bin/lib/vendor/README.md +75 -0
- package/gsd-core/bin/lib/vendor/js-yaml.cjs +3014 -0
- package/gsd-core/bin/lib/vendor/re2js.cjs +6480 -0
- package/gsd-core/bin/lib/vendor/re2js.d.cts +938 -0
- package/gsd-core/bin/lib/verification-command-router.cjs +2 -1
- package/gsd-core/bin/lib/verification.cjs +272 -9
- package/gsd-core/bin/lib/verify-command-grounding.cjs +846 -0
- package/gsd-core/bin/lib/verify.cjs +453 -918
- package/gsd-core/bin/lib/workstream-inventory-builder.cjs +53 -32
- package/gsd-core/bin/lib/workstream-inventory.cjs +63 -10
- package/gsd-core/bin/lib/workstream-name-policy.cjs +25 -4
- package/gsd-core/bin/lib/workstream.cjs +2 -2
- package/gsd-core/bin/lib/worktree-base-ref.cjs +66 -12
- package/gsd-core/bin/lib/worktree-safety.cjs +341 -18
- package/gsd-core/bin/shared/config-defaults.manifest.json +8 -1
- package/gsd-core/bin/shared/config-schema.manifest.json +12 -1
- package/gsd-core/bin/shared/exit-codes.json +8 -0
- package/gsd-core/bin/shared/exit-codes.sh +20 -0
- package/gsd-core/bin/shared/model-catalog.json +8 -1
- package/gsd-core/references/agent-contracts.md +44 -26
- package/gsd-core/references/api-coverage.md +24 -2
- package/gsd-core/references/autonomous-smart-discuss.md +3 -3
- package/gsd-core/references/checkpoints.md +39 -21
- package/gsd-core/references/context-budget.md +1 -1
- package/gsd-core/references/decimal-phase-calculation.md +5 -5
- package/gsd-core/references/dispatch-isolation-gate.md +138 -0
- package/gsd-core/references/doc-conflict-engine.md +1 -1
- package/gsd-core/references/edge-probe.md +8 -0
- package/gsd-core/references/execute-mvp-tdd.md +4 -6
- package/gsd-core/references/execute-phase-between-wave-reset.md +15 -14
- package/gsd-core/references/execute-phase-context-guard.md +1 -1
- package/gsd-core/references/execute-phase-response-language.md +1 -1
- package/gsd-core/references/execute-phase-wave-guard.md +17 -11
- package/gsd-core/references/failing-direction.md +78 -0
- package/gsd-core/references/gate-prompts.md +1 -1
- package/gsd-core/references/git-integration.md +5 -5
- package/gsd-core/references/git-planning-commit.md +5 -4
- package/gsd-core/references/gsd-run-resolver.md +1 -1
- package/gsd-core/references/loop-hook-dispatch.md +61 -2
- package/gsd-core/references/model-profiles.md +12 -4
- package/gsd-core/references/mvp-concepts.md +9 -9
- package/gsd-core/references/nyquist-compliance.md +74 -0
- package/gsd-core/references/offer-next.md +3 -5
- package/gsd-core/references/phase-argument-parsing.md +3 -3
- package/gsd-core/references/planner-failing-direction.md +53 -0
- package/gsd-core/references/planner-guidance.md +3 -9
- package/gsd-core/references/planner-human-verify-mode.md +15 -1
- package/gsd-core/references/planner-preconditions.md +1 -1
- package/gsd-core/references/planner-reviews.md +1 -1
- package/gsd-core/references/planner-revision.md +1 -1
- package/gsd-core/references/planner-verify-command-grounding.md +17 -0
- package/gsd-core/references/planning-config.md +44 -13
- package/gsd-core/references/reviewer-instances.md +31 -0
- package/gsd-core/references/revision-loop.md +1 -1
- package/gsd-core/references/runtime-aware-dispatch.md +1 -1
- package/gsd-core/references/specless-probe-fallback.md +1 -1
- package/gsd-core/references/tdd.md +1 -3
- package/gsd-core/references/ui-brand.md +65 -21
- package/gsd-core/references/ui-consideration-probe.md +1 -1
- package/gsd-core/references/universal-anti-patterns.md +5 -5
- package/gsd-core/references/verifier-phase-gates.md +192 -0
- package/gsd-core/references/verify-command-path-resolvability.md +42 -0
- package/gsd-core/references/verify-mvp-mode.md +2 -2
- package/gsd-core/references/workstream-flag.md +33 -17
- package/gsd-core/templates/README.md +1 -1
- package/gsd-core/templates/SECURITY.md +3 -3
- package/gsd-core/templates/UI-SPEC.md +25 -3
- package/gsd-core/templates/VALIDATION.md +3 -3
- package/gsd-core/templates/discussion-log.md +1 -1
- package/gsd-core/templates/phase-prompt.md +5 -4
- package/gsd-core/templates/state.md +11 -4
- package/gsd-core/templates/verification-report.md +9 -1
- package/gsd-core/workflows/_runtime-launcher.snippet.sh +1 -1
- package/gsd-core/workflows/add-backlog.md +1 -1
- package/gsd-core/workflows/add-phase.md +3 -3
- package/gsd-core/workflows/add-tests.md +3 -8
- package/gsd-core/workflows/add-todo.md +1 -1
- package/gsd-core/workflows/ai-integration-phase.md +13 -20
- package/gsd-core/workflows/audit-fix.md +12 -3
- package/gsd-core/workflows/audit-milestone.md +9 -9
- package/gsd-core/workflows/audit-uat.md +17 -2
- package/gsd-core/workflows/autonomous/steps/converge-fail-fast.md +2 -2
- package/gsd-core/workflows/autonomous.md +11 -27
- package/gsd-core/workflows/check-todos.md +1 -1
- package/gsd-core/workflows/cleanup.md +64 -5
- package/gsd-core/workflows/code-review/steps/structural-pre-pass.md +14 -4
- package/gsd-core/workflows/code-review-fix.md +38 -11
- package/gsd-core/workflows/code-review.md +159 -52
- package/gsd-core/workflows/complete-milestone.md +151 -23
- package/gsd-core/workflows/debug.md +12 -8
- package/gsd-core/workflows/diagnose-issues.md +47 -15
- package/gsd-core/workflows/discuss-phase/modes/advisor.md +1 -1
- package/gsd-core/workflows/discuss-phase/modes/chain.md +5 -8
- package/gsd-core/workflows/discuss-phase/modes/default.md +1 -1
- package/gsd-core/workflows/discuss-phase/modes/text.md +1 -1
- package/gsd-core/workflows/discuss-phase-assumptions/steps/auto-advance-dispatch.md +1 -3
- package/gsd-core/workflows/discuss-phase-assumptions.md +4 -3
- package/gsd-core/workflows/discuss-phase.md +1 -1
- package/gsd-core/workflows/do.md +3 -6
- package/gsd-core/workflows/docs-update.md +5 -4
- package/gsd-core/workflows/edit-phase.md +27 -2
- package/gsd-core/workflows/eval-review.md +7 -14
- package/gsd-core/workflows/execute-phase/steps/codebase-drift-gate.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/executor-isolation-dispatch.md +142 -15
- package/gsd-core/workflows/execute-phase/steps/gap-closure-artifacts.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/partial-wave.md +1 -1
- package/gsd-core/workflows/execute-phase/steps/per-plan-executor-routing.md +77 -0
- package/gsd-core/workflows/execute-phase/steps/per-plan-worktree-gate.md +24 -4
- package/gsd-core/workflows/execute-phase/steps/post-merge-gate.md +2 -2
- package/gsd-core/workflows/execute-phase/steps/protected-branch.md +21 -0
- package/gsd-core/workflows/execute-phase/steps/regression-gate-run.md +2 -2
- package/gsd-core/workflows/execute-phase/steps/wave-post-gate-hooks.md +39 -0
- package/gsd-core/workflows/execute-phase.md +72 -100
- package/gsd-core/workflows/execute-plan.md +52 -15
- package/gsd-core/workflows/explore.md +131 -4
- package/gsd-core/workflows/extract-learnings.md +1 -1
- package/gsd-core/workflows/fast.md +10 -2
- package/gsd-core/workflows/forensics.md +1 -1
- package/gsd-core/workflows/graduation.md +5 -5
- package/gsd-core/workflows/health.md +76 -10
- package/gsd-core/workflows/import.md +18 -15
- package/gsd-core/workflows/inbox.md +4 -5
- package/gsd-core/workflows/ingest-docs.md +49 -16
- package/gsd-core/workflows/insert-phase.md +5 -5
- package/gsd-core/workflows/list-seeds.md +5 -3
- package/gsd-core/workflows/list-workspaces.md +1 -1
- package/gsd-core/workflows/manager.md +12 -23
- package/gsd-core/workflows/map-codebase.md +1 -1
- package/gsd-core/workflows/milestone-summary.md +1 -1
- package/gsd-core/workflows/mvp-phase.md +8 -5
- package/gsd-core/workflows/new-milestone.md +22 -29
- package/gsd-core/workflows/new-project/steps/auto-mode-config.md +1 -1
- package/gsd-core/workflows/new-project.md +26 -40
- package/gsd-core/workflows/new-workspace.md +1 -1
- package/gsd-core/workflows/next.md +14 -2
- package/gsd-core/workflows/pause-work.md +1 -1
- package/gsd-core/workflows/plan-phase/steps/adr-ingest-express-path.md +1 -1
- package/gsd-core/workflows/plan-phase/steps/chunked-planning-mode.md +1 -1
- package/gsd-core/workflows/plan-phase/steps/prd-express-path.md +2 -4
- package/gsd-core/workflows/plan-phase/steps/stall-detection-helpers.md +3 -3
- package/gsd-core/workflows/plan-phase.md +162 -59
- package/gsd-core/workflows/plan-review-convergence.md +96 -11
- package/gsd-core/workflows/plant-seed.md +2 -2
- package/gsd-core/workflows/pr-branch.md +187 -51
- package/gsd-core/workflows/profile-user.md +16 -14
- package/gsd-core/workflows/progress.md +61 -18
- package/gsd-core/workflows/quick/steps/discussion-phase.md +1 -3
- package/gsd-core/workflows/quick/steps/plan-checker-loop.md +5 -7
- package/gsd-core/workflows/quick/steps/quick-verification.md +28 -9
- package/gsd-core/workflows/quick/steps/research-phase.md +4 -6
- package/gsd-core/workflows/quick/steps/worktree-pre-dispatch-commit.md +3 -3
- package/gsd-core/workflows/quick.md +55 -44
- package/gsd-core/workflows/remove-phase.md +4 -4
- package/gsd-core/workflows/remove-workspace.md +2 -2
- package/gsd-core/workflows/resume-project.md +8 -12
- package/gsd-core/workflows/review.md +219 -20
- package/gsd-core/workflows/scan.md +1 -1
- package/gsd-core/workflows/secure-phase.md +3 -3
- package/gsd-core/workflows/session-report.md +2 -1
- package/gsd-core/workflows/settings-advanced.md +7 -9
- package/gsd-core/workflows/settings-integrations.md +64 -31
- package/gsd-core/workflows/settings.md +69 -7
- package/gsd-core/workflows/ship.md +116 -50
- package/gsd-core/workflows/sketch-wrap-up.md +11 -17
- package/gsd-core/workflows/sketch.md +12 -18
- package/gsd-core/workflows/smart-entry.md +3 -5
- package/gsd-core/workflows/spec-phase.md +53 -13
- package/gsd-core/workflows/spike-wrap-up.md +7 -11
- package/gsd-core/workflows/spike.md +20 -31
- package/gsd-core/workflows/stats.md +2 -2
- package/gsd-core/workflows/sync-skills.md +64 -9
- package/gsd-core/workflows/thread.md +11 -7
- package/gsd-core/workflows/transition.md +49 -14
- package/gsd-core/workflows/ui-phase.md +15 -21
- package/gsd-core/workflows/ui-review.md +8 -12
- package/gsd-core/workflows/ultraplan-phase.md +5 -13
- package/gsd-core/workflows/undo.md +8 -16
- package/gsd-core/workflows/update.md +7 -11
- package/gsd-core/workflows/validate-phase.md +3 -3
- package/gsd-core/workflows/verify-work/steps/automated-ui-verification.md +25 -1
- package/gsd-core/workflows/verify-work/steps/mvp-uat-framing.md +1 -1
- package/gsd-core/workflows/verify-work.md +66 -25
- package/hooks/dist/gsd-agent-isolation-guard.js +158 -30
- package/hooks/dist/gsd-check-update-worker.js +56 -13
- package/hooks/dist/gsd-check-update.js +19 -1
- package/hooks/dist/gsd-config-reload.js +18 -12
- package/hooks/dist/gsd-context-monitor.js +19 -10
- package/hooks/dist/gsd-cursor-post-tool.js +3 -1
- package/hooks/dist/gsd-cursor-pre-tool.js +2 -3
- package/hooks/dist/gsd-cursor-session-start.js +2 -1
- package/hooks/dist/gsd-cursor-stop.js +2 -1
- package/hooks/dist/gsd-cursor-subagent-start.js +83 -3
- package/hooks/dist/gsd-cursor-subagent-stop.js +6 -3
- package/hooks/dist/gsd-ensure-canonical-path.js +2 -1
- package/hooks/dist/gsd-graphify-update.sh +22 -18
- package/hooks/dist/gsd-node-runner.sh +76 -0
- package/hooks/dist/gsd-phase-boundary.sh +1 -0
- package/hooks/dist/gsd-prompt-guard.js +37 -27
- package/hooks/dist/gsd-read-guard.js +16 -7
- package/hooks/dist/gsd-read-injection-scanner.js +55 -32
- package/hooks/dist/gsd-session-state.sh +1 -0
- package/hooks/dist/gsd-statusline.js +231 -24
- package/hooks/dist/gsd-update-banner.js +22 -1
- package/hooks/dist/gsd-validate-commit.sh +80 -6
- package/hooks/dist/gsd-windsurf-pre-command.js +16 -11
- package/hooks/dist/gsd-windsurf-pre-write.js +22 -13
- package/hooks/dist/gsd-workflow-guard.js +162 -46
- package/hooks/dist/gsd-worktree-path-guard.js +36 -21
- package/hooks/dist/gsd-write-guard.js +35 -25
- package/hooks/dist/lib/cli-exit.js +560 -0
- package/hooks/dist/lib/exit-code-registry.js +98 -0
- package/hooks/dist/lib/git-cmd.js +92 -59
- package/hooks/dist/lib/git-probe.js +84 -0
- package/hooks/dist/lib/hook-exit.js +81 -0
- package/hooks/dist/lib/injection-patterns.js +45 -0
- package/hooks/dist/lib/isolation-deny-reason.js +39 -0
- package/hooks/dist/lib/isolation-sentinel.js +9 -0
- package/hooks/dist/managed-hooks-registry.cjs +3 -0
- package/hooks/gsd-agent-isolation-guard.js +158 -30
- package/hooks/gsd-check-update-worker.js +56 -13
- package/hooks/gsd-check-update.js +19 -1
- package/hooks/gsd-config-reload.js +18 -12
- package/hooks/gsd-context-monitor.js +19 -10
- package/hooks/gsd-cursor-post-tool.js +3 -1
- package/hooks/gsd-cursor-pre-tool.js +2 -3
- package/hooks/gsd-cursor-session-start.js +2 -1
- package/hooks/gsd-cursor-stop.js +2 -1
- package/hooks/gsd-cursor-subagent-start.js +83 -3
- package/hooks/gsd-cursor-subagent-stop.js +6 -3
- package/hooks/gsd-ensure-canonical-path.js +2 -1
- package/hooks/gsd-graphify-update.sh +22 -18
- package/hooks/gsd-node-runner.sh +76 -0
- package/hooks/gsd-phase-boundary.sh +1 -0
- package/hooks/gsd-prompt-guard.js +37 -27
- package/hooks/gsd-read-guard.js +16 -7
- package/hooks/gsd-read-injection-scanner.js +55 -32
- package/hooks/gsd-session-state.sh +1 -0
- package/hooks/gsd-statusline.js +231 -24
- package/hooks/gsd-update-banner.js +22 -1
- package/hooks/gsd-validate-commit.sh +80 -6
- package/hooks/gsd-windsurf-pre-command.js +16 -11
- package/hooks/gsd-windsurf-pre-write.js +22 -13
- package/hooks/gsd-workflow-guard.js +162 -46
- package/hooks/gsd-worktree-path-guard.js +36 -21
- package/hooks/gsd-write-guard.js +35 -25
- package/hooks/lib/cli-exit.js +560 -0
- package/hooks/lib/exit-code-registry.js +98 -0
- package/hooks/lib/git-cmd.js +92 -59
- package/hooks/lib/git-probe.js +84 -0
- package/hooks/lib/hook-exit.js +81 -0
- package/hooks/lib/injection-patterns.js +45 -0
- package/hooks/lib/isolation-deny-reason.js +39 -0
- package/hooks/lib/isolation-sentinel.js +9 -0
- package/hooks/managed-hooks-registry.cjs +3 -0
- package/package.json +28 -11
- package/pi/gsd.cjs +19 -5
- package/scripts/base64-scan.sh +74 -12
- package/scripts/baselines/planning-prompt-drift-baseline.json +4 -0
- package/scripts/baselines/planning-snapshot-bypass-baseline.json +12 -0
- package/scripts/baselines/unreachable-guard-drift-baseline.json +4 -0
- package/scripts/build-hooks.js +5 -0
- package/scripts/changeset/lint.cjs +60 -5
- package/scripts/check-alias-drift.cjs +7 -43
- package/scripts/check-contract-drift.cjs +297 -0
- package/scripts/check-glossary-refs.cjs +77 -15
- package/scripts/check-mutation-score-ratchet.cjs +156 -0
- package/scripts/ci-check-job-near-cap.cjs +49 -0
- package/scripts/ci-pr-mergeability.cjs +262 -0
- package/scripts/ci-test-scope.cjs +64 -14
- package/scripts/ci-timeout-report.cjs +230 -0
- package/scripts/command-contract-helpers.cjs +903 -1
- package/scripts/docs-guard-registry.cjs +396 -0
- package/scripts/gen-adr-index.cjs +728 -38
- package/scripts/gen-capability-registry.cjs +11 -21
- package/scripts/gen-context-index.cjs +2 -11
- package/scripts/gen-exit-code-docs.cjs +318 -0
- package/scripts/gen-exit-code-registry.cjs +891 -0
- package/scripts/gen-features.cjs +836 -0
- package/scripts/gen-health-docs.cjs +390 -0
- package/scripts/gen-hooks-cli-exit.cjs +239 -0
- package/scripts/gen-install-tree-fixtures.cjs +2 -2
- package/scripts/gen-inventory-manifest.cjs +50 -4
- package/scripts/gen-loop-host-contract.cjs +138 -25
- package/scripts/gen-registry.cjs +3 -14
- package/scripts/gen-scripts-cli-exit.cjs +185 -0
- package/scripts/gen-state-md-docs.cjs +727 -0
- package/scripts/{test-failure-reasons.cjs → gsd-test-gate-reasons.cjs} +6 -0
- package/scripts/lib/alias-drift-families.cjs +46 -0
- package/scripts/lib/ci-job-timing.cjs +72 -0
- package/scripts/lib/cli-exit.cjs +546 -44
- package/scripts/lib/drift-scan.cjs +308 -0
- package/scripts/lib/exit-code-registry.cjs +98 -0
- package/scripts/lib/ndjson-reporter.cjs +119 -0
- package/scripts/lint-allow-test-rule-refs.allowlist.json +1 -26
- package/scripts/lint-allow-test-rule-refs.effective-ceiling.json +4 -0
- package/scripts/lint-allow-test-rule-refs.unverified-ceiling.json +3 -0
- package/scripts/lint-canary-version-leak.cjs +73 -0
- package/scripts/lint-command-contract.cjs +96 -13
- package/scripts/lint-completion-predicate-drift.cjs +933 -0
- package/scripts/lint-completion-ratio-drift.cjs +214 -0
- package/scripts/lint-default-flip-documentation.cjs +193 -0
- package/scripts/lint-docs-guard-registration.cjs +495 -0
- package/scripts/lint-docs-guard-registration.exempt-baseline.cjs +193 -0
- package/scripts/lint-eslint-glob-coverage.allowlist.json +38 -0
- package/scripts/lint-eslint-glob-coverage.cjs +340 -0
- package/scripts/{lint-fix-has-regression-test.cjs → lint-fix-has-regression-tests.cjs} +12 -6
- package/scripts/lint-frontmatter-scalar-broad-grep.cjs +237 -0
- package/scripts/lint-health-diagnostic-rule-table.cjs +461 -0
- package/scripts/lint-hooks-runtime-build-seam.cjs +262 -0
- package/scripts/lint-milestone-window-drift.cjs +468 -0
- package/scripts/lint-mutation-test-derivation-drift.cjs +86 -0
- package/scripts/lint-phase-enumeration-drift.cjs +492 -0
- package/scripts/lint-plan-count-drift.cjs +318 -0
- package/scripts/lint-planning-artifact-writer-drift.cjs +398 -0
- package/scripts/lint-planning-prompt-drift.cjs +471 -0
- package/scripts/lint-planning-snapshot-bypass-drift.cjs +544 -0
- package/scripts/lint-regression-test-names.cjs +15 -13
- package/scripts/lint-removed-but-needed.cjs +488 -0
- package/scripts/lint-seam-enforcement.cjs +182 -0
- package/scripts/lint-slug-derivation-drift.cjs +921 -0
- package/scripts/lint-source-test-name-collision.cjs +241 -0
- package/scripts/lint-state-field-drift.cjs +805 -0
- package/scripts/lint-state-write-path-drift.cjs +950 -0
- package/scripts/lint-test-file-count.allowlist.json +137 -8
- package/scripts/lint-test-file-count.cjs +25 -3
- package/scripts/lint-unreachable-guard-drift.cjs +830 -0
- package/scripts/lint-vendored-deps.cjs +297 -0
- package/scripts/mutation-matrix.cjs +599 -50
- package/scripts/pr-changed-files.cjs +63 -0
- package/scripts/pr-template-policy.cjs +14 -4
- package/scripts/prompt-injection-scan.sh +100 -14
- package/scripts/require-issue-link-policy.cjs +192 -0
- package/scripts/secret-scan.sh +75 -13
- package/scripts/select-docs-guards.cjs +56 -0
- package/scripts/sync-runtime-launcher.cjs +24 -7
- package/skills/gsd-autonomous/SKILL.md +0 -1
- package/skills/gsd-code-review/SKILL.md +1 -1
- package/skills/gsd-discuss-phase/SKILL.md +1 -1
- package/skills/gsd-execute-phase/SKILL.md +1 -2
- package/skills/gsd-import/SKILL.md +1 -1
- package/skills/gsd-map-codebase/SKILL.md +1 -1
- package/skills/gsd-mempalace-capture/SKILL.md +1 -1
- package/skills/gsd-mempalace-recall/SKILL.md +1 -1
- package/skills/gsd-new-milestone/SKILL.md +1 -1
- package/skills/gsd-next/SKILL.md +0 -1
- package/skills/gsd-plan-phase/SKILL.md +0 -1
- package/skills/gsd-progress/SKILL.md +0 -1
- package/skills/gsd-quick/SKILL.md +9 -5
- package/skills/gsd-review-backlog/SKILL.md +2 -1
- package/skills/gsd-stats/SKILL.md +0 -1
- package/skills/gsd-verify-work/SKILL.md +1 -1
- package/vscode/package.json +1 -1
- package/bin/lib/ui-safety-gate.cjs +0 -107
- package/gsd-core/workflows/discovery-phase.md +0 -298
- package/gsd-core/workflows/plan-milestone-gaps.md +0 -281
- package/gsd-core/workflows/verify-phase.md +0 -574
- package/scripts/affected-tests-lib.cjs +0 -554
- package/scripts/lint-allow-test-rule-refs.cjs +0 -162
- package/scripts/lint-emitted-drift-ack.cjs +0 -344
- package/scripts/run-affected-tests.cjs +0 -7
- package/scripts/run-tests.cjs +0 -1051
|
@@ -1,298 +0,0 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
Execute discovery at the appropriate depth level.
|
|
3
|
-
Produces DISCOVERY.md (for Level 2-3) that informs PLAN.md creation.
|
|
4
|
-
|
|
5
|
-
Called from plan-phase.md's mandatory_discovery step with a depth parameter.
|
|
6
|
-
|
|
7
|
-
NOTE: For comprehensive ecosystem research ("how do experts build this"), use /gsd:plan-phase --research-phase instead, which produces RESEARCH.md.
|
|
8
|
-
</purpose>
|
|
9
|
-
```bash
|
|
10
|
-
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
|
|
11
|
-
RESPONSE_LANGUAGE=$(gsd_run query config-get response_language --default "" 2>/dev/null || echo "")
|
|
12
|
-
```
|
|
13
|
-
|
|
14
|
-
**If `response_language` is set:** All user-facing questions, prompts, and explanations in this workflow MUST be presented in `{response_language}`. Technical terms, code, file paths, and subagent prompts stay in English — only user-facing output is translated.
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
<depth_levels>
|
|
18
|
-
**This workflow supports three depth levels:**
|
|
19
|
-
|
|
20
|
-
| Level | Name | Time | Output | When |
|
|
21
|
-
| ----- | ------------ | --------- | -------------------------------------------- | ----------------------------------------- |
|
|
22
|
-
| 1 | Quick Verify | 2-5 min | No file, proceed with verified knowledge | Single library, confirming current syntax |
|
|
23
|
-
| 2 | Standard | 15-30 min | DISCOVERY.md | Choosing between options, new integration |
|
|
24
|
-
| 3 | Deep Dive | 1+ hour | Detailed DISCOVERY.md with validation gates | Architectural decisions, novel problems |
|
|
25
|
-
|
|
26
|
-
**Depth is determined by plan-phase.md before routing here.**
|
|
27
|
-
</depth_levels>
|
|
28
|
-
|
|
29
|
-
<source_hierarchy>
|
|
30
|
-
**MANDATORY: Context7 BEFORE WebSearch**
|
|
31
|
-
|
|
32
|
-
Claude's training data is 6-18 months stale. Always verify.
|
|
33
|
-
|
|
34
|
-
1. **Context7 MCP FIRST** - Current docs, no hallucination
|
|
35
|
-
2. **Official docs** - When Context7 lacks coverage
|
|
36
|
-
3. **WebSearch LAST** - For comparisons and trends only
|
|
37
|
-
|
|
38
|
-
See ~/.claude/gsd-core/templates/discovery.md `<discovery_protocol>` for full protocol.
|
|
39
|
-
</source_hierarchy>
|
|
40
|
-
|
|
41
|
-
<process>
|
|
42
|
-
|
|
43
|
-
<step name="determine_depth">
|
|
44
|
-
Check the depth parameter passed from plan-phase.md:
|
|
45
|
-
- `depth=verify` → Level 1 (Quick Verification)
|
|
46
|
-
- `depth=standard` → Level 2 (Standard Discovery)
|
|
47
|
-
- `depth=deep` → Level 3 (Deep Dive)
|
|
48
|
-
|
|
49
|
-
Route to appropriate level workflow below.
|
|
50
|
-
</step>
|
|
51
|
-
|
|
52
|
-
<step name="level_1_quick_verify">
|
|
53
|
-
**Level 1: Quick Verification (2-5 minutes)**
|
|
54
|
-
|
|
55
|
-
For: Single known library, confirming syntax/version still correct.
|
|
56
|
-
|
|
57
|
-
**Process:**
|
|
58
|
-
|
|
59
|
-
1. Resolve library in Context7:
|
|
60
|
-
|
|
61
|
-
```
|
|
62
|
-
mcp__context7__resolve-library-id with libraryName: "[library]"
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
2. Fetch relevant docs:
|
|
66
|
-
|
|
67
|
-
```
|
|
68
|
-
mcp__context7__query-docs with:
|
|
69
|
-
- libraryId: [from step 1]
|
|
70
|
-
- query: [specific concern]
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
3. Verify:
|
|
74
|
-
|
|
75
|
-
- Current version matches expectations
|
|
76
|
-
- API syntax unchanged
|
|
77
|
-
- No breaking changes in recent versions
|
|
78
|
-
|
|
79
|
-
4. **If verified:** Return to plan-phase.md with confirmation. No DISCOVERY.md needed.
|
|
80
|
-
|
|
81
|
-
5. **If concerns found:** Escalate to Level 2.
|
|
82
|
-
|
|
83
|
-
**Output:** Verbal confirmation to proceed, or escalation to Level 2.
|
|
84
|
-
</step>
|
|
85
|
-
|
|
86
|
-
<step name="level_2_standard">
|
|
87
|
-
**Level 2: Standard Discovery (15-30 minutes)**
|
|
88
|
-
|
|
89
|
-
For: Choosing between options, new external integration.
|
|
90
|
-
|
|
91
|
-
**Process:**
|
|
92
|
-
|
|
93
|
-
1. **Identify what to discover:**
|
|
94
|
-
|
|
95
|
-
- What options exist?
|
|
96
|
-
- What are the key comparison criteria?
|
|
97
|
-
- What's our specific use case?
|
|
98
|
-
|
|
99
|
-
2. **Context7 for each option:**
|
|
100
|
-
|
|
101
|
-
```
|
|
102
|
-
For each library/framework:
|
|
103
|
-
- mcp__context7__resolve-library-id
|
|
104
|
-
- mcp__context7__query-docs (frame the `query` for API usage vs concepts)
|
|
105
|
-
```
|
|
106
|
-
|
|
107
|
-
3. **Official docs** for anything Context7 lacks.
|
|
108
|
-
|
|
109
|
-
4. **WebSearch** for comparisons:
|
|
110
|
-
|
|
111
|
-
- "[option A] vs [option B] {current_year}"
|
|
112
|
-
- "[option] known issues"
|
|
113
|
-
- "[option] with [our stack]"
|
|
114
|
-
|
|
115
|
-
5. **Cross-verify:** Any WebSearch finding → confirm with Context7/official docs.
|
|
116
|
-
|
|
117
|
-
6. **Create DISCOVERY.md** using ~/.claude/gsd-core/templates/discovery.md structure:
|
|
118
|
-
|
|
119
|
-
- Summary with recommendation
|
|
120
|
-
- Key findings per option
|
|
121
|
-
- Code examples from Context7
|
|
122
|
-
- Confidence level (should be MEDIUM-HIGH for Level 2)
|
|
123
|
-
|
|
124
|
-
7. Return to plan-phase.md.
|
|
125
|
-
|
|
126
|
-
**Output:** `.planning/phases/XX-name/DISCOVERY.md`
|
|
127
|
-
</step>
|
|
128
|
-
|
|
129
|
-
<step name="level_3_deep_dive">
|
|
130
|
-
**Level 3: Deep Dive (1+ hour)**
|
|
131
|
-
|
|
132
|
-
For: Architectural decisions, novel problems, high-risk choices.
|
|
133
|
-
|
|
134
|
-
**Process:**
|
|
135
|
-
|
|
136
|
-
1. **Scope the discovery** using ~/.claude/gsd-core/templates/discovery.md:
|
|
137
|
-
|
|
138
|
-
- Define clear scope
|
|
139
|
-
- Define include/exclude boundaries
|
|
140
|
-
- List specific questions to answer
|
|
141
|
-
|
|
142
|
-
2. **Exhaustive Context7 research:**
|
|
143
|
-
|
|
144
|
-
- All relevant libraries
|
|
145
|
-
- Related patterns and concepts
|
|
146
|
-
- Multiple topics per library if needed
|
|
147
|
-
|
|
148
|
-
3. **Official documentation deep read:**
|
|
149
|
-
|
|
150
|
-
- Architecture guides
|
|
151
|
-
- Best practices sections
|
|
152
|
-
- Migration/upgrade guides
|
|
153
|
-
- Known limitations
|
|
154
|
-
|
|
155
|
-
4. **WebSearch for ecosystem context:**
|
|
156
|
-
|
|
157
|
-
- How others solved similar problems
|
|
158
|
-
- Production experiences
|
|
159
|
-
- Gotchas and anti-patterns
|
|
160
|
-
- Recent changes/announcements
|
|
161
|
-
|
|
162
|
-
5. **Cross-verify ALL findings:**
|
|
163
|
-
|
|
164
|
-
- Every WebSearch claim → verify with authoritative source
|
|
165
|
-
- Mark what's verified vs assumed
|
|
166
|
-
- Flag contradictions
|
|
167
|
-
|
|
168
|
-
6. **Create comprehensive DISCOVERY.md:**
|
|
169
|
-
|
|
170
|
-
- Full structure from ~/.claude/gsd-core/templates/discovery.md
|
|
171
|
-
- Quality report with source attribution
|
|
172
|
-
- Confidence by finding
|
|
173
|
-
- If LOW confidence on any critical finding → add validation checkpoints
|
|
174
|
-
|
|
175
|
-
7. **Confidence gate:** If overall confidence is LOW, present options before proceeding.
|
|
176
|
-
|
|
177
|
-
8. Return to plan-phase.md.
|
|
178
|
-
|
|
179
|
-
**Output:** `.planning/phases/XX-name/DISCOVERY.md` (comprehensive)
|
|
180
|
-
</step>
|
|
181
|
-
|
|
182
|
-
<step name="identify_unknowns">
|
|
183
|
-
**For Level 2-3:** Define what we need to learn.
|
|
184
|
-
|
|
185
|
-
Ask: What do we need to learn before we can plan this phase?
|
|
186
|
-
|
|
187
|
-
- Technology choices?
|
|
188
|
-
- Best practices?
|
|
189
|
-
- API patterns?
|
|
190
|
-
- Architecture approach?
|
|
191
|
-
</step>
|
|
192
|
-
|
|
193
|
-
<step name="create_discovery_scope">
|
|
194
|
-
Use ~/.claude/gsd-core/templates/discovery.md.
|
|
195
|
-
|
|
196
|
-
Include:
|
|
197
|
-
|
|
198
|
-
- Clear discovery objective
|
|
199
|
-
- Scoped include/exclude lists
|
|
200
|
-
- Source preferences (official docs, Context7, current year)
|
|
201
|
-
- Output structure for DISCOVERY.md
|
|
202
|
-
</step>
|
|
203
|
-
|
|
204
|
-
<step name="execute_discovery">
|
|
205
|
-
Run the discovery:
|
|
206
|
-
- Use web search for current info
|
|
207
|
-
- Use Context7 MCP for library docs
|
|
208
|
-
- Prefer current year sources
|
|
209
|
-
- Structure findings per template
|
|
210
|
-
</step>
|
|
211
|
-
|
|
212
|
-
<step name="create_discovery_output">
|
|
213
|
-
Write `.planning/phases/XX-name/DISCOVERY.md`:
|
|
214
|
-
- Summary with recommendation
|
|
215
|
-
- Key findings with sources
|
|
216
|
-
- Code examples if applicable
|
|
217
|
-
- Metadata (confidence, dependencies, open questions, assumptions)
|
|
218
|
-
</step>
|
|
219
|
-
|
|
220
|
-
<step name="confidence_gate">
|
|
221
|
-
After creating DISCOVERY.md, check confidence level.
|
|
222
|
-
|
|
223
|
-
If confidence is LOW:
|
|
224
|
-
|
|
225
|
-
**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.
|
|
226
|
-
Use AskUserQuestion:
|
|
227
|
-
|
|
228
|
-
- header: "Low Conf."
|
|
229
|
-
- question: "Discovery confidence is LOW: [reason]. How would you like to proceed?"
|
|
230
|
-
- options:
|
|
231
|
-
- "Dig deeper" - Do more research before planning
|
|
232
|
-
- "Proceed anyway" - Accept uncertainty, plan with caveats
|
|
233
|
-
- "Pause" - I need to think about this
|
|
234
|
-
|
|
235
|
-
If confidence is MEDIUM:
|
|
236
|
-
Inline: "Discovery complete (medium confidence). [brief reason]. Proceed to planning?"
|
|
237
|
-
|
|
238
|
-
If confidence is HIGH:
|
|
239
|
-
Proceed directly, just note: "Discovery complete (high confidence)."
|
|
240
|
-
</step>
|
|
241
|
-
|
|
242
|
-
<step name="open_questions_gate">
|
|
243
|
-
If DISCOVERY.md has open_questions:
|
|
244
|
-
|
|
245
|
-
Present them inline:
|
|
246
|
-
"Open questions from discovery:
|
|
247
|
-
|
|
248
|
-
- [Question 1]
|
|
249
|
-
- [Question 2]
|
|
250
|
-
|
|
251
|
-
These may affect implementation. Acknowledge and proceed? (yes / address first)"
|
|
252
|
-
|
|
253
|
-
If "address first": Gather user input on questions, update discovery.
|
|
254
|
-
</step>
|
|
255
|
-
|
|
256
|
-
<step name="offer_next">
|
|
257
|
-
```
|
|
258
|
-
Discovery complete: .planning/phases/XX-name/DISCOVERY.md
|
|
259
|
-
Recommendation: [one-liner]
|
|
260
|
-
Confidence: [level]
|
|
261
|
-
|
|
262
|
-
What's next?
|
|
263
|
-
|
|
264
|
-
1. Discuss phase context (/gsd:discuss-phase [current-phase])
|
|
265
|
-
2. Create phase plan (/gsd:plan-phase [current-phase])
|
|
266
|
-
3. Refine discovery (dig deeper)
|
|
267
|
-
4. Review discovery
|
|
268
|
-
|
|
269
|
-
```
|
|
270
|
-
|
|
271
|
-
NOTE: DISCOVERY.md is NOT committed separately. It will be committed with phase completion.
|
|
272
|
-
</step>
|
|
273
|
-
|
|
274
|
-
</process>
|
|
275
|
-
|
|
276
|
-
<success_criteria>
|
|
277
|
-
**Level 1 (Quick Verify):**
|
|
278
|
-
- Context7 consulted for library/topic
|
|
279
|
-
- Current state verified or concerns escalated
|
|
280
|
-
- Verbal confirmation to proceed (no files)
|
|
281
|
-
|
|
282
|
-
**Level 2 (Standard):**
|
|
283
|
-
- Context7 consulted for all options
|
|
284
|
-
- WebSearch findings cross-verified
|
|
285
|
-
- DISCOVERY.md created with recommendation
|
|
286
|
-
- Confidence level MEDIUM or higher
|
|
287
|
-
- Ready to inform PLAN.md creation
|
|
288
|
-
|
|
289
|
-
**Level 3 (Deep Dive):**
|
|
290
|
-
- Discovery scope defined
|
|
291
|
-
- Context7 exhaustively consulted
|
|
292
|
-
- All WebSearch findings verified against authoritative sources
|
|
293
|
-
- DISCOVERY.md created with comprehensive analysis
|
|
294
|
-
- Quality report with source attribution
|
|
295
|
-
- If LOW confidence findings → validation checkpoints defined
|
|
296
|
-
- Confidence gate passed
|
|
297
|
-
- Ready to inform PLAN.md creation
|
|
298
|
-
</success_criteria>
|
|
@@ -1,281 +0,0 @@
|
|
|
1
|
-
<purpose>
|
|
2
|
-
Create all phases necessary to close gaps identified by `/gsd:audit-milestone`. Reads MILESTONE-AUDIT.md, groups gaps into logical phases, creates phase entries in ROADMAP.md, and offers to plan each phase. One command creates all fix phases — no manual `/gsd-add-phase` per gap.
|
|
3
|
-
</purpose>
|
|
4
|
-
|
|
5
|
-
<required_reading>
|
|
6
|
-
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
-
</required_reading>
|
|
8
|
-
|
|
9
|
-
<process>
|
|
10
|
-
|
|
11
|
-
## 1. Load Audit Results
|
|
12
|
-
|
|
13
|
-
```bash
|
|
14
|
-
# Find the most recent audit file
|
|
15
|
-
(ls -t .planning/v*-MILESTONE-AUDIT.md 2>/dev/null || true) | head -1
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
Parse YAML frontmatter to extract structured gaps:
|
|
19
|
-
- `gaps.requirements` — unsatisfied requirements
|
|
20
|
-
- `gaps.integration` — missing cross-phase connections
|
|
21
|
-
- `gaps.flows` — broken E2E flows
|
|
22
|
-
|
|
23
|
-
If no audit file exists or has no gaps, error:
|
|
24
|
-
```
|
|
25
|
-
No audit gaps found. Run `/gsd:audit-milestone` first.
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
## 2. Prioritize Gaps
|
|
29
|
-
|
|
30
|
-
Group gaps by priority from REQUIREMENTS.md:
|
|
31
|
-
|
|
32
|
-
| Priority | Action |
|
|
33
|
-
|----------|--------|
|
|
34
|
-
| `must` | Create phase, blocks milestone |
|
|
35
|
-
| `should` | Create phase, recommended |
|
|
36
|
-
| `nice` | Ask user: include or defer? |
|
|
37
|
-
|
|
38
|
-
For integration/flow gaps, infer priority from affected requirements.
|
|
39
|
-
|
|
40
|
-
## 3. Group Gaps into Phases
|
|
41
|
-
|
|
42
|
-
Cluster related gaps into logical phases:
|
|
43
|
-
|
|
44
|
-
**Grouping rules:**
|
|
45
|
-
- Same affected phase → combine into one fix phase
|
|
46
|
-
- Same subsystem (auth, API, UI) → combine
|
|
47
|
-
- Dependency order (fix stubs before wiring)
|
|
48
|
-
- Keep phases focused: 2-4 tasks each
|
|
49
|
-
|
|
50
|
-
**Example grouping:**
|
|
51
|
-
```
|
|
52
|
-
Gap: DASH-01 unsatisfied (Dashboard doesn't fetch)
|
|
53
|
-
Gap: Integration Phase 1→3 (Auth not passed to API calls)
|
|
54
|
-
Gap: Flow "View dashboard" broken at data fetch
|
|
55
|
-
|
|
56
|
-
→ Phase 6: "Wire Dashboard to API"
|
|
57
|
-
- Add fetch to Dashboard.tsx
|
|
58
|
-
- Include auth header in fetch
|
|
59
|
-
- Handle response, update state
|
|
60
|
-
- Render user data
|
|
61
|
-
```
|
|
62
|
-
|
|
63
|
-
## 4. Determine Phase Numbers
|
|
64
|
-
|
|
65
|
-
Find highest existing phase:
|
|
66
|
-
```bash
|
|
67
|
-
_GSD_SHIM_NAME="gsd-tools.cjs"; _GSD_RUNTIME_ROOT="${RUNTIME_DIR:-$(git rev-parse --show-toplevel 2>/dev/null || pwd)}"; GSD_TOOLS="${_GSD_RUNTIME_ROOT}/gsd-core/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.codex/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif command -v gsd-tools >/dev/null 2>&1; then GSD_TOOLS="$(command -v gsd-tools)"; gsd_run() { "$GSD_TOOLS" "$@"; }; elif [ -f "${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLAUDE_CONFIG_DIR:-$HOME/.claude}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${HERMES_HOME:-$HOME/.hermes}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CURSOR_CONFIG_DIR:-$HOME/.cursor}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEX_HOME:-$HOME/.codex}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GEMINI_CONFIG_DIR:-$HOME/.gemini}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${COPILOT_CONFIG_DIR:-$HOME/.copilot}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${WINDSURF_CONFIG_DIR:-$HOME/.codeium/windsurf}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${AUGMENT_CONFIG_DIR:-$HOME/.augment}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${TRAE_CONFIG_DIR:-$HOME/.trae}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${QWEN_CONFIG_DIR:-$HOME/.qwen}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CODEBUDDY_CONFIG_DIR:-$HOME/.codebuddy}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${CLINE_CONFIG_DIR:-$HOME/.cline}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${GROK_AGENTS_HOME:-$HOME/.agents}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${ANTIGRAVITY_CONFIG_DIR:-$HOME/.gemini/antigravity}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${OPENCODE_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/opencode}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${KILO_CONFIG_DIR:-${XDG_CONFIG_HOME:-$HOME/.config}/kilo}/gsd-core/bin/${_GSD_SHIM_NAME}"; gsd_run() { node "$GSD_TOOLS" "$@"; }; else echo "ERROR: gsd-tools.cjs not found at $GSD_TOOLS and gsd-tools is not on PATH. Run: npx -y @opengsd/gsd-core@latest --claude --local" >&2; exit 1; fi; if [ -n "${CLAUDE_ENV_FILE:-}" ] && [ -n "${GSD_TOOLS:-}" ]; then printf "export PATH='%s':\"\$PATH\"\n" "${GSD_TOOLS%/*}" >> "$CLAUDE_ENV_FILE" 2>/dev/null || true; fi
|
|
68
|
-
# Get sorted phase list, extract last one
|
|
69
|
-
HIGHEST=$(gsd_run query phases.list --pick directories[-1])
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
New phases continue from there:
|
|
73
|
-
- If Phase 5 is highest, gaps become Phase 6, 7, 8...
|
|
74
|
-
|
|
75
|
-
## 5. Present Gap Closure Plan
|
|
76
|
-
|
|
77
|
-
```markdown
|
|
78
|
-
## Gap Closure Plan
|
|
79
|
-
|
|
80
|
-
**Milestone:** {version}
|
|
81
|
-
**Gaps to close:** {N} requirements, {M} integration, {K} flows
|
|
82
|
-
|
|
83
|
-
### Proposed Phases
|
|
84
|
-
|
|
85
|
-
**Phase {N}: {Name}**
|
|
86
|
-
Closes:
|
|
87
|
-
- {REQ-ID}: {description}
|
|
88
|
-
- Integration: {from} → {to}
|
|
89
|
-
Tasks: {count}
|
|
90
|
-
|
|
91
|
-
**Phase {N+1}: {Name}**
|
|
92
|
-
Closes:
|
|
93
|
-
- {REQ-ID}: {description}
|
|
94
|
-
- Flow: {flow name}
|
|
95
|
-
Tasks: {count}
|
|
96
|
-
|
|
97
|
-
{If nice-to-have gaps exist:}
|
|
98
|
-
|
|
99
|
-
### Deferred (nice-to-have)
|
|
100
|
-
|
|
101
|
-
These gaps are optional. Include them?
|
|
102
|
-
- {gap description}
|
|
103
|
-
- {gap description}
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
Create these {X} phases? (yes / adjust / defer all optional)
|
|
108
|
-
```
|
|
109
|
-
|
|
110
|
-
Wait for user confirmation.
|
|
111
|
-
|
|
112
|
-
## 6. Update ROADMAP.md
|
|
113
|
-
|
|
114
|
-
Add new phases to current milestone:
|
|
115
|
-
|
|
116
|
-
```markdown
|
|
117
|
-
### Phase {N}: {Name}
|
|
118
|
-
**Goal:** {derived from gaps being closed}
|
|
119
|
-
**Requirements:** {REQ-IDs being satisfied}
|
|
120
|
-
**Gap Closure:** Closes gaps from audit
|
|
121
|
-
|
|
122
|
-
### Phase {N+1}: {Name}
|
|
123
|
-
...
|
|
124
|
-
```
|
|
125
|
-
|
|
126
|
-
## 7. Update REQUIREMENTS.md Traceability Table (REQUIRED)
|
|
127
|
-
|
|
128
|
-
For each REQ-ID assigned to a gap closure phase:
|
|
129
|
-
- Update the Phase column to reflect the new gap closure phase
|
|
130
|
-
- Reset Status to `Pending`
|
|
131
|
-
|
|
132
|
-
Reset checked-off requirements the audit found unsatisfied:
|
|
133
|
-
- Change `[x]` → `[ ]` for any requirement marked unsatisfied in the audit
|
|
134
|
-
- Update coverage count at top of REQUIREMENTS.md
|
|
135
|
-
|
|
136
|
-
```bash
|
|
137
|
-
# Verify traceability table reflects gap closure assignments
|
|
138
|
-
grep -c "Pending" .planning/REQUIREMENTS.md
|
|
139
|
-
```
|
|
140
|
-
|
|
141
|
-
## 8. Create Phase Directories
|
|
142
|
-
|
|
143
|
-
For each new phase (N, N+1, …), resolve the directory name via `init.phase-op` so the `project_code` prefix is honoured:
|
|
144
|
-
|
|
145
|
-
```bash
|
|
146
|
-
INIT=$(gsd_run query init.phase-op "{NN}")
|
|
147
|
-
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
148
|
-
expected_phase_dir=$(echo "$INIT" | node -e "process.stdout.write(JSON.parse(require('fs').readFileSync('/dev/stdin','utf8')).expected_phase_dir)")
|
|
149
|
-
mkdir -p "${expected_phase_dir}"
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
Repeat for each gap-closure phase number. This produces `{CODE}-{NN}-{slug}/` when `project_code` is set in `.planning/config.json`, and `{NN}-{slug}/` otherwise — consistent with all other phase-creation paths.
|
|
153
|
-
|
|
154
|
-
## 9. Commit Roadmap and Requirements Update
|
|
155
|
-
|
|
156
|
-
```bash
|
|
157
|
-
gsd_run query commit "docs(roadmap): add gap closure phases {N}-{M}" --files .planning/ROADMAP.md .planning/REQUIREMENTS.md
|
|
158
|
-
```
|
|
159
|
-
|
|
160
|
-
## 10. Offer Next Steps
|
|
161
|
-
|
|
162
|
-
```markdown
|
|
163
|
-
## ✓ Gap Closure Phases Created
|
|
164
|
-
|
|
165
|
-
**Phases added:** {N} - {M}
|
|
166
|
-
**Gaps addressed:** {count} requirements, {count} integration, {count} flows
|
|
167
|
-
|
|
168
|
-
---
|
|
169
|
-
|
|
170
|
-
## ▶ Next Up — [${PROJECT_CODE}] ${PROJECT_TITLE}
|
|
171
|
-
|
|
172
|
-
**Plan first gap closure phase**
|
|
173
|
-
|
|
174
|
-
`/clear` then:
|
|
175
|
-
|
|
176
|
-
`/gsd:plan-phase {N}`
|
|
177
|
-
|
|
178
|
-
---
|
|
179
|
-
|
|
180
|
-
**Also available:**
|
|
181
|
-
- `/gsd:execute-phase {N}` — if plans already exist
|
|
182
|
-
- `cat .planning/ROADMAP.md` — see updated roadmap
|
|
183
|
-
|
|
184
|
-
---
|
|
185
|
-
|
|
186
|
-
**After all gap phases complete:**
|
|
187
|
-
|
|
188
|
-
`/gsd:audit-milestone` — re-audit to verify gaps closed
|
|
189
|
-
`/gsd:complete-milestone {version}` — archive when audit passes
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
</process>
|
|
193
|
-
|
|
194
|
-
<gap_to_phase_mapping>
|
|
195
|
-
|
|
196
|
-
## How Gaps Become Tasks
|
|
197
|
-
|
|
198
|
-
**Requirement gap → Tasks:**
|
|
199
|
-
```yaml
|
|
200
|
-
gap:
|
|
201
|
-
id: DASH-01
|
|
202
|
-
description: "User sees their data"
|
|
203
|
-
reason: "Dashboard exists but doesn't fetch from API"
|
|
204
|
-
missing:
|
|
205
|
-
- "useEffect with fetch to /api/user/data"
|
|
206
|
-
- "State for user data"
|
|
207
|
-
- "Render user data in JSX"
|
|
208
|
-
|
|
209
|
-
becomes:
|
|
210
|
-
|
|
211
|
-
phase: "Wire Dashboard Data"
|
|
212
|
-
tasks:
|
|
213
|
-
- name: "Add data fetching"
|
|
214
|
-
files: [src/components/Dashboard.tsx]
|
|
215
|
-
action: "Add useEffect that fetches /api/user/data on mount"
|
|
216
|
-
|
|
217
|
-
- name: "Add state management"
|
|
218
|
-
files: [src/components/Dashboard.tsx]
|
|
219
|
-
action: "Add useState for userData, loading, error states"
|
|
220
|
-
|
|
221
|
-
- name: "Render user data"
|
|
222
|
-
files: [src/components/Dashboard.tsx]
|
|
223
|
-
action: "Replace placeholder with userData.map rendering"
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
**Integration gap → Tasks:**
|
|
227
|
-
```yaml
|
|
228
|
-
gap:
|
|
229
|
-
from_phase: 1
|
|
230
|
-
to_phase: 3
|
|
231
|
-
connection: "Auth token → API calls"
|
|
232
|
-
reason: "Dashboard API calls don't include auth header"
|
|
233
|
-
missing:
|
|
234
|
-
- "Auth header in fetch calls"
|
|
235
|
-
- "Token refresh on 401"
|
|
236
|
-
|
|
237
|
-
becomes:
|
|
238
|
-
|
|
239
|
-
phase: "Add Auth to Dashboard API Calls"
|
|
240
|
-
tasks:
|
|
241
|
-
- name: "Add auth header to fetches"
|
|
242
|
-
files: [src/components/Dashboard.tsx, src/lib/api.ts]
|
|
243
|
-
action: "Include Authorization header with token in all API calls"
|
|
244
|
-
|
|
245
|
-
- name: "Handle 401 responses"
|
|
246
|
-
files: [src/lib/api.ts]
|
|
247
|
-
action: "Add interceptor to refresh token or redirect to login on 401"
|
|
248
|
-
```
|
|
249
|
-
|
|
250
|
-
**Flow gap → Tasks:**
|
|
251
|
-
```yaml
|
|
252
|
-
gap:
|
|
253
|
-
name: "User views dashboard after login"
|
|
254
|
-
broken_at: "Dashboard data load"
|
|
255
|
-
reason: "No fetch call"
|
|
256
|
-
missing:
|
|
257
|
-
- "Fetch user data on mount"
|
|
258
|
-
- "Display loading state"
|
|
259
|
-
- "Render user data"
|
|
260
|
-
|
|
261
|
-
becomes:
|
|
262
|
-
|
|
263
|
-
# Usually same phase as requirement/integration gap
|
|
264
|
-
# Flow gaps often overlap with other gap types
|
|
265
|
-
```
|
|
266
|
-
|
|
267
|
-
</gap_to_phase_mapping>
|
|
268
|
-
|
|
269
|
-
<success_criteria>
|
|
270
|
-
- [ ] MILESTONE-AUDIT.md loaded and gaps parsed
|
|
271
|
-
- [ ] Gaps prioritized (must/should/nice)
|
|
272
|
-
- [ ] Gaps grouped into logical phases
|
|
273
|
-
- [ ] User confirmed phase plan
|
|
274
|
-
- [ ] ROADMAP.md updated with new phases
|
|
275
|
-
- [ ] REQUIREMENTS.md traceability table updated with gap closure phase assignments
|
|
276
|
-
- [ ] Unsatisfied requirement checkboxes reset (`[x]` → `[ ]`)
|
|
277
|
-
- [ ] Coverage count updated in REQUIREMENTS.md
|
|
278
|
-
- [ ] Phase directories created
|
|
279
|
-
- [ ] Changes committed (includes REQUIREMENTS.md)
|
|
280
|
-
- [ ] User knows to run `/gsd:plan-phase` next
|
|
281
|
-
</success_criteria>
|