@opengsd/gsd-core 1.2.0-rc.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.ja-JP.md +870 -0
- package/README.ko-KR.md +861 -0
- package/README.md +301 -0
- package/README.pt-BR.md +492 -0
- package/README.zh-CN.md +842 -0
- package/agents/gsd-advisor-researcher.md +127 -0
- package/agents/gsd-ai-researcher.md +133 -0
- package/agents/gsd-assumptions-analyzer.md +105 -0
- package/agents/gsd-code-fixer.md +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 +615 -0
- package/agents/gsd-domain-researcher.md +153 -0
- package/agents/gsd-eval-auditor.md +191 -0
- package/agents/gsd-eval-planner.md +154 -0
- package/agents/gsd-executor.md +772 -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 +928 -0
- package/agents/gsd-plan-checker.md +978 -0
- package/agents/gsd-planner.md +1218 -0
- package/agents/gsd-project-researcher.md +677 -0
- package/agents/gsd-research-synthesizer.md +255 -0
- package/agents/gsd-roadmapper.md +688 -0
- package/agents/gsd-security-auditor.md +155 -0
- package/agents/gsd-ui-auditor.md +495 -0
- package/agents/gsd-ui-checker.md +309 -0
- package/agents/gsd-ui-researcher.md +380 -0
- package/agents/gsd-user-profiler.md +171 -0
- package/agents/gsd-verifier.md +917 -0
- package/bin/install.js +10936 -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 +46 -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/discuss-phase.md +76 -0
- package/commands/gsd/docs-update.md +49 -0
- package/commands/gsd/eval-review.md +33 -0
- package/commands/gsd/execute-phase.md +64 -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 +199 -0
- package/commands/gsd/health.md +31 -0
- package/commands/gsd/help.md +28 -0
- package/commands/gsd/import.md +41 -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/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 +62 -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 +47 -0
- package/commands/gsd/quick.md +174 -0
- package/commands/gsd/resume-work.md +30 -0
- package/commands/gsd/review-backlog.md +63 -0
- package/commands/gsd/review.md +41 -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 +19 -0
- package/commands/gsd/surface.md +155 -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 +48 -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/get-shit-done/bin/check-latest-version.cjs +106 -0
- package/get-shit-done/bin/gsd-tools.cjs +1676 -0
- package/get-shit-done/bin/lib/active-workstream-store.cjs +302 -0
- package/get-shit-done/bin/lib/adr-parser.cjs +394 -0
- package/get-shit-done/bin/lib/agent-command-router.cjs +65 -0
- package/get-shit-done/bin/lib/artifacts.cjs +53 -0
- package/get-shit-done/bin/lib/audit.cjs +755 -0
- package/get-shit-done/bin/lib/check-command-router.cjs +333 -0
- package/get-shit-done/bin/lib/cjs-command-router-adapter.cjs +118 -0
- package/get-shit-done/bin/lib/clock.cjs +96 -0
- package/get-shit-done/bin/lib/clusters.cjs +135 -0
- package/get-shit-done/bin/lib/code-review-flags.cjs +74 -0
- package/get-shit-done/bin/lib/command-aliases.cjs +815 -0
- package/get-shit-done/bin/lib/command-arg-projection.cjs +62 -0
- package/get-shit-done/bin/lib/command-routing-hub.cjs +388 -0
- package/get-shit-done/bin/lib/commands.cjs +1188 -0
- package/get-shit-done/bin/lib/config-schema.cjs +31 -0
- package/get-shit-done/bin/lib/config.cjs +728 -0
- package/get-shit-done/bin/lib/configuration.cjs +248 -0
- package/get-shit-done/bin/lib/context-utilization.cjs +47 -0
- package/get-shit-done/bin/lib/core.cjs +2121 -0
- package/get-shit-done/bin/lib/decisions.cjs +116 -0
- package/get-shit-done/bin/lib/docs.cjs +270 -0
- package/get-shit-done/bin/lib/drift.cjs +388 -0
- package/get-shit-done/bin/lib/fallow-runner.cjs +109 -0
- package/get-shit-done/bin/lib/frontmatter.cjs +389 -0
- package/get-shit-done/bin/lib/gap-checker.cjs +205 -0
- package/get-shit-done/bin/lib/graphify.cjs +592 -0
- package/get-shit-done/bin/lib/gsd2-import.cjs +514 -0
- package/get-shit-done/bin/lib/init-command-router.cjs +58 -0
- package/get-shit-done/bin/lib/init.cjs +2112 -0
- package/get-shit-done/bin/lib/install-profiles.cjs +603 -0
- package/get-shit-done/bin/lib/installer-migration-authoring.cjs +117 -0
- package/get-shit-done/bin/lib/installer-migration-report.cjs +354 -0
- package/get-shit-done/bin/lib/installer-migrations/000-first-time-baseline.cjs +220 -0
- package/get-shit-done/bin/lib/installer-migrations/001-legacy-orphan-files.cjs +41 -0
- package/get-shit-done/bin/lib/installer-migrations/002-codex-legacy-hooks-json.cjs +80 -0
- package/get-shit-done/bin/lib/installer-migrations.cjs +778 -0
- package/get-shit-done/bin/lib/intel.cjs +708 -0
- package/get-shit-done/bin/lib/learnings.cjs +421 -0
- package/get-shit-done/bin/lib/milestone.cjs +314 -0
- package/get-shit-done/bin/lib/model-catalog.cjs +212 -0
- package/get-shit-done/bin/lib/model-profiles.cjs +31 -0
- package/get-shit-done/bin/lib/observability/event.cjs +82 -0
- package/get-shit-done/bin/lib/observability/logger.cjs +174 -0
- package/get-shit-done/bin/lib/observability/redaction.cjs +50 -0
- package/get-shit-done/bin/lib/package-identity.cjs +31 -0
- package/get-shit-done/bin/lib/phase-command-router.cjs +191 -0
- package/get-shit-done/bin/lib/phase-lifecycle.cjs +80 -0
- package/get-shit-done/bin/lib/phase.cjs +1607 -0
- package/get-shit-done/bin/lib/phases-command-router.cjs +39 -0
- package/get-shit-done/bin/lib/plan-scan.cjs +97 -0
- package/get-shit-done/bin/lib/planning-workspace.cjs +238 -0
- package/get-shit-done/bin/lib/profile-output.cjs +1141 -0
- package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
- package/get-shit-done/bin/lib/project-root.cjs +112 -0
- package/get-shit-done/bin/lib/prompt-budget.cjs +399 -0
- package/get-shit-done/bin/lib/review-reviewer-selection.cjs +125 -0
- package/get-shit-done/bin/lib/roadmap-command-router.cjs +28 -0
- package/get-shit-done/bin/lib/roadmap.cjs +650 -0
- package/get-shit-done/bin/lib/runtime-artifact-layout.cjs +301 -0
- package/get-shit-done/bin/lib/runtime-homes.cjs +222 -0
- package/get-shit-done/bin/lib/runtime-name-policy.cjs +83 -0
- package/get-shit-done/bin/lib/runtime-slash.cjs +112 -0
- package/get-shit-done/bin/lib/schema-detect.cjs +165 -0
- package/get-shit-done/bin/lib/secrets.cjs +32 -0
- package/get-shit-done/bin/lib/security.cjs +600 -0
- package/get-shit-done/bin/lib/semver-compare.cjs +35 -0
- package/get-shit-done/bin/lib/shell-command-projection.cjs +500 -0
- package/get-shit-done/bin/lib/state-command-router.cjs +252 -0
- package/get-shit-done/bin/lib/state-document.cjs +263 -0
- package/get-shit-done/bin/lib/state.cjs +2038 -0
- package/get-shit-done/bin/lib/surface.cjs +470 -0
- package/get-shit-done/bin/lib/task-command-router.cjs +81 -0
- package/get-shit-done/bin/lib/template.cjs +228 -0
- package/get-shit-done/bin/lib/uat.cjs +289 -0
- package/get-shit-done/bin/lib/update-context.cjs +209 -0
- package/get-shit-done/bin/lib/validate-command-router.cjs +83 -0
- package/get-shit-done/bin/lib/validate.cjs +92 -0
- package/get-shit-done/bin/lib/verify-command-router.cjs +40 -0
- package/get-shit-done/bin/lib/verify.cjs +1511 -0
- package/get-shit-done/bin/lib/workstream-inventory-builder.cjs +74 -0
- package/get-shit-done/bin/lib/workstream-inventory.cjs +146 -0
- package/get-shit-done/bin/lib/workstream-name-policy.cjs +94 -0
- package/get-shit-done/bin/lib/workstream.cjs +389 -0
- package/get-shit-done/bin/lib/worktree-safety.cjs +985 -0
- package/get-shit-done/bin/shared/config-defaults.manifest.json +97 -0
- package/get-shit-done/bin/shared/config-schema.manifest.json +175 -0
- package/get-shit-done/bin/shared/model-catalog.json +122 -0
- package/get-shit-done/bin/shared/runtime-aliases.manifest.json +75 -0
- package/get-shit-done/bin/verify-reapply-patches.cjs +352 -0
- package/get-shit-done/contexts/dev.md +21 -0
- package/get-shit-done/contexts/research.md +22 -0
- package/get-shit-done/contexts/review.md +23 -0
- package/get-shit-done/references/agent-contracts.md +79 -0
- package/get-shit-done/references/ai-evals.md +156 -0
- package/get-shit-done/references/ai-frameworks.md +186 -0
- package/get-shit-done/references/artifact-types.md +131 -0
- package/get-shit-done/references/autonomous-smart-discuss.md +277 -0
- package/get-shit-done/references/checkpoints.md +814 -0
- package/get-shit-done/references/common-bug-patterns.md +114 -0
- package/get-shit-done/references/context-budget.md +85 -0
- package/get-shit-done/references/continuation-format.md +253 -0
- package/get-shit-done/references/debugger-philosophy.md +76 -0
- package/get-shit-done/references/decimal-phase-calculation.md +64 -0
- package/get-shit-done/references/doc-conflict-engine.md +91 -0
- package/get-shit-done/references/domain-probes.md +125 -0
- package/get-shit-done/references/execute-mvp-tdd.md +81 -0
- package/get-shit-done/references/executor-examples.md +110 -0
- package/get-shit-done/references/few-shot-examples/plan-checker.md +73 -0
- package/get-shit-done/references/few-shot-examples/verifier.md +109 -0
- package/get-shit-done/references/gate-prompts.md +100 -0
- package/get-shit-done/references/gates.md +70 -0
- package/get-shit-done/references/git-integration.md +298 -0
- package/get-shit-done/references/git-planning-commit.md +40 -0
- package/get-shit-done/references/ios-scaffold.md +123 -0
- package/get-shit-done/references/mandatory-initial-read.md +2 -0
- package/get-shit-done/references/model-profile-resolution.md +38 -0
- package/get-shit-done/references/model-profiles.md +245 -0
- package/get-shit-done/references/mvp-concepts.md +49 -0
- package/get-shit-done/references/phase-argument-parsing.md +61 -0
- package/get-shit-done/references/planner-antipatterns.md +89 -0
- package/get-shit-done/references/planner-chunked.md +49 -0
- package/get-shit-done/references/planner-gap-closure.md +62 -0
- package/get-shit-done/references/planner-graphify-auto-update.md +67 -0
- package/get-shit-done/references/planner-human-verify-mode.md +57 -0
- package/get-shit-done/references/planner-interface-context.md +62 -0
- package/get-shit-done/references/planner-mvp-mode.md +53 -0
- package/get-shit-done/references/planner-reviews.md +39 -0
- package/get-shit-done/references/planner-revision.md +87 -0
- package/get-shit-done/references/planner-source-audit.md +73 -0
- package/get-shit-done/references/planning-config.md +471 -0
- package/get-shit-done/references/project-skills-discovery.md +19 -0
- package/get-shit-done/references/questioning.md +162 -0
- package/get-shit-done/references/revision-loop.md +97 -0
- package/get-shit-done/references/scout-codebase.md +51 -0
- package/get-shit-done/references/skeleton-template.md +48 -0
- package/get-shit-done/references/sketch-interactivity.md +41 -0
- package/get-shit-done/references/sketch-theme-system.md +94 -0
- package/get-shit-done/references/sketch-tooling.md +45 -0
- package/get-shit-done/references/sketch-variant-patterns.md +81 -0
- package/get-shit-done/references/spidr-splitting.md +69 -0
- package/get-shit-done/references/tdd.md +330 -0
- package/get-shit-done/references/thinking-models-debug.md +44 -0
- package/get-shit-done/references/thinking-models-execution.md +50 -0
- package/get-shit-done/references/thinking-models-planning.md +62 -0
- package/get-shit-done/references/thinking-models-research.md +50 -0
- package/get-shit-done/references/thinking-models-verification.md +55 -0
- package/get-shit-done/references/thinking-partner.md +96 -0
- package/get-shit-done/references/ui-brand.md +160 -0
- package/get-shit-done/references/universal-anti-patterns.md +63 -0
- package/get-shit-done/references/user-profiling.md +681 -0
- package/get-shit-done/references/user-story-template.md +58 -0
- package/get-shit-done/references/verification-overrides.md +227 -0
- package/get-shit-done/references/verification-patterns.md +612 -0
- package/get-shit-done/references/verify-mvp-mode.md +85 -0
- package/get-shit-done/references/workstream-flag.md +111 -0
- package/get-shit-done/references/worktree-path-safety.md +89 -0
- package/get-shit-done/templates/AI-SPEC.md +246 -0
- package/get-shit-done/templates/DEBUG.md +169 -0
- package/get-shit-done/templates/README.md +77 -0
- package/get-shit-done/templates/SECURITY.md +61 -0
- package/get-shit-done/templates/UAT.md +265 -0
- package/get-shit-done/templates/UI-SPEC.md +100 -0
- package/get-shit-done/templates/VALIDATION.md +76 -0
- package/get-shit-done/templates/claude-md.md +145 -0
- package/get-shit-done/templates/codebase/architecture.md +255 -0
- package/get-shit-done/templates/codebase/concerns.md +310 -0
- package/get-shit-done/templates/codebase/conventions.md +307 -0
- package/get-shit-done/templates/codebase/integrations.md +280 -0
- package/get-shit-done/templates/codebase/stack.md +186 -0
- package/get-shit-done/templates/codebase/structure.md +285 -0
- package/get-shit-done/templates/codebase/testing.md +480 -0
- package/get-shit-done/templates/config.json +62 -0
- package/get-shit-done/templates/context.md +352 -0
- package/get-shit-done/templates/continue-here.md +78 -0
- package/get-shit-done/templates/copilot-instructions.md +7 -0
- package/get-shit-done/templates/debug-subagent-prompt.md +91 -0
- package/get-shit-done/templates/dev-preferences.md +21 -0
- package/get-shit-done/templates/discovery.md +146 -0
- package/get-shit-done/templates/discussion-log.md +63 -0
- package/get-shit-done/templates/milestone-archive.md +123 -0
- package/get-shit-done/templates/milestone.md +115 -0
- package/get-shit-done/templates/phase-prompt.md +610 -0
- package/get-shit-done/templates/planner-subagent-prompt.md +117 -0
- package/get-shit-done/templates/project.md +186 -0
- package/get-shit-done/templates/requirements.md +231 -0
- package/get-shit-done/templates/research-project/ARCHITECTURE.md +204 -0
- package/get-shit-done/templates/research-project/FEATURES.md +147 -0
- package/get-shit-done/templates/research-project/PITFALLS.md +200 -0
- package/get-shit-done/templates/research-project/STACK.md +120 -0
- package/get-shit-done/templates/research-project/SUMMARY.md +170 -0
- package/get-shit-done/templates/research.md +592 -0
- package/get-shit-done/templates/retrospective.md +54 -0
- package/get-shit-done/templates/roadmap.md +202 -0
- package/get-shit-done/templates/spec.md +307 -0
- package/get-shit-done/templates/state.md +195 -0
- package/get-shit-done/templates/summary-complex.md +59 -0
- package/get-shit-done/templates/summary-minimal.md +41 -0
- package/get-shit-done/templates/summary-standard.md +48 -0
- package/get-shit-done/templates/summary.md +248 -0
- package/get-shit-done/templates/user-profile.md +146 -0
- package/get-shit-done/templates/user-setup.md +311 -0
- package/get-shit-done/templates/verification-report.md +322 -0
- package/get-shit-done/workflows/_runtime-launcher.snippet.sh +1 -0
- package/get-shit-done/workflows/add-backlog.md +91 -0
- package/get-shit-done/workflows/add-phase.md +113 -0
- package/get-shit-done/workflows/add-tests.md +355 -0
- package/get-shit-done/workflows/add-todo.md +161 -0
- package/get-shit-done/workflows/ai-integration-phase.md +295 -0
- package/get-shit-done/workflows/analyze-dependencies.md +96 -0
- package/get-shit-done/workflows/audit-fix.md +178 -0
- package/get-shit-done/workflows/audit-milestone.md +358 -0
- package/get-shit-done/workflows/audit-uat.md +110 -0
- package/get-shit-done/workflows/autonomous.md +795 -0
- package/get-shit-done/workflows/check-todos.md +180 -0
- package/get-shit-done/workflows/cleanup.md +155 -0
- package/get-shit-done/workflows/code-review-fix.md +502 -0
- package/get-shit-done/workflows/code-review.md +656 -0
- package/get-shit-done/workflows/complete-milestone.md +855 -0
- package/get-shit-done/workflows/debug.md +232 -0
- package/get-shit-done/workflows/diagnose-issues.md +241 -0
- package/get-shit-done/workflows/discovery-phase.md +291 -0
- package/get-shit-done/workflows/discuss-phase/modes/advisor.md +176 -0
- package/get-shit-done/workflows/discuss-phase/modes/all.md +28 -0
- package/get-shit-done/workflows/discuss-phase/modes/analyze.md +44 -0
- package/get-shit-done/workflows/discuss-phase/modes/auto.md +57 -0
- package/get-shit-done/workflows/discuss-phase/modes/batch.md +52 -0
- package/get-shit-done/workflows/discuss-phase/modes/chain.md +98 -0
- package/get-shit-done/workflows/discuss-phase/modes/default.md +141 -0
- package/get-shit-done/workflows/discuss-phase/modes/power.md +44 -0
- package/get-shit-done/workflows/discuss-phase/modes/text.md +55 -0
- package/get-shit-done/workflows/discuss-phase/templates/checkpoint.json +18 -0
- package/get-shit-done/workflows/discuss-phase/templates/context.md +136 -0
- package/get-shit-done/workflows/discuss-phase/templates/discussion-log.md +50 -0
- package/get-shit-done/workflows/discuss-phase-assumptions.md +675 -0
- package/get-shit-done/workflows/discuss-phase-power.md +291 -0
- package/get-shit-done/workflows/discuss-phase.md +499 -0
- package/get-shit-done/workflows/do.md +111 -0
- package/get-shit-done/workflows/docs-update.md +1162 -0
- package/get-shit-done/workflows/edit-phase.md +295 -0
- package/get-shit-done/workflows/eval-review.md +156 -0
- package/get-shit-done/workflows/execute-phase/steps/codebase-drift-gate.md +82 -0
- package/get-shit-done/workflows/execute-phase/steps/per-plan-worktree-gate.md +94 -0
- package/get-shit-done/workflows/execute-phase/steps/post-merge-gate.md +117 -0
- package/get-shit-done/workflows/execute-phase.md +1709 -0
- package/get-shit-done/workflows/execute-plan.md +526 -0
- package/get-shit-done/workflows/explore.md +144 -0
- package/get-shit-done/workflows/extract-learnings.md +243 -0
- package/get-shit-done/workflows/fast.md +124 -0
- package/get-shit-done/workflows/forensics.md +279 -0
- package/get-shit-done/workflows/graduation.md +196 -0
- package/get-shit-done/workflows/health.md +224 -0
- package/get-shit-done/workflows/help/modes/brief.md +22 -0
- package/get-shit-done/workflows/help/modes/default.md +50 -0
- package/get-shit-done/workflows/help/modes/full.md +784 -0
- package/get-shit-done/workflows/help/modes/topic.md +74 -0
- package/get-shit-done/workflows/help.md +24 -0
- package/get-shit-done/workflows/import.md +254 -0
- package/get-shit-done/workflows/inbox.md +387 -0
- package/get-shit-done/workflows/ingest-docs.md +339 -0
- package/get-shit-done/workflows/insert-phase.md +152 -0
- package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
- package/get-shit-done/workflows/list-workspaces.md +57 -0
- package/get-shit-done/workflows/manager.md +393 -0
- package/get-shit-done/workflows/map-codebase.md +444 -0
- package/get-shit-done/workflows/milestone-summary.md +224 -0
- package/get-shit-done/workflows/mvp-phase.md +222 -0
- package/get-shit-done/workflows/new-milestone.md +635 -0
- package/get-shit-done/workflows/new-project.md +1555 -0
- package/get-shit-done/workflows/new-workspace.md +240 -0
- package/get-shit-done/workflows/next.md +299 -0
- package/get-shit-done/workflows/node-repair.md +92 -0
- package/get-shit-done/workflows/note.md +158 -0
- package/get-shit-done/workflows/pause-work.md +244 -0
- package/get-shit-done/workflows/plan-milestone-gaps.md +281 -0
- package/get-shit-done/workflows/plan-phase.md +1809 -0
- package/get-shit-done/workflows/plan-review-convergence.md +346 -0
- package/get-shit-done/workflows/plant-seed.md +230 -0
- package/get-shit-done/workflows/pr-branch.md +157 -0
- package/get-shit-done/workflows/profile-user.md +453 -0
- package/get-shit-done/workflows/progress.md +699 -0
- package/get-shit-done/workflows/quick.md +1039 -0
- package/get-shit-done/workflows/reapply-patches.md +426 -0
- package/get-shit-done/workflows/remove-phase.md +156 -0
- package/get-shit-done/workflows/remove-workspace.md +108 -0
- package/get-shit-done/workflows/resume-project.md +332 -0
- package/get-shit-done/workflows/review.md +623 -0
- package/get-shit-done/workflows/scan.md +105 -0
- package/get-shit-done/workflows/secure-phase.md +180 -0
- package/get-shit-done/workflows/session-report.md +146 -0
- package/get-shit-done/workflows/settings-advanced.md +620 -0
- package/get-shit-done/workflows/settings-integrations.md +312 -0
- package/get-shit-done/workflows/settings.md +552 -0
- package/get-shit-done/workflows/ship.md +356 -0
- package/get-shit-done/workflows/sketch-wrap-up.md +286 -0
- package/get-shit-done/workflows/sketch.md +361 -0
- package/get-shit-done/workflows/spec-phase.md +262 -0
- package/get-shit-done/workflows/spike-wrap-up.md +307 -0
- package/get-shit-done/workflows/spike.md +453 -0
- package/get-shit-done/workflows/stats.md +80 -0
- package/get-shit-done/workflows/sync-skills.md +182 -0
- package/get-shit-done/workflows/thread.md +222 -0
- package/get-shit-done/workflows/transition.md +694 -0
- package/get-shit-done/workflows/ui-phase.md +328 -0
- package/get-shit-done/workflows/ui-review.md +193 -0
- package/get-shit-done/workflows/ultraplan-phase.md +199 -0
- package/get-shit-done/workflows/undo.md +314 -0
- package/get-shit-done/workflows/update.md +443 -0
- package/get-shit-done/workflows/validate-phase.md +179 -0
- package/get-shit-done/workflows/verify-phase.md +544 -0
- package/get-shit-done/workflows/verify-work.md +781 -0
- package/hooks/dist/gsd-check-update-worker.js +95 -0
- package/hooks/dist/gsd-check-update.js +64 -0
- package/hooks/dist/gsd-context-monitor.js +195 -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 +548 -0
- package/hooks/dist/gsd-update-banner.js +134 -0
- package/hooks/dist/gsd-validate-commit.sh +57 -0
- package/hooks/dist/gsd-workflow-guard.js +166 -0
- package/hooks/dist/lib/git-cmd.js +150 -0
- package/hooks/dist/lib/gsd-graphify-rebuild.sh +65 -0
- package/hooks/gsd-check-update-worker.js +95 -0
- package/hooks/gsd-check-update.js +64 -0
- package/hooks/gsd-context-monitor.js +195 -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 +548 -0
- package/hooks/gsd-update-banner.js +134 -0
- package/hooks/gsd-validate-commit.sh +57 -0
- package/hooks/gsd-workflow-guard.js +166 -0
- package/hooks/lib/git-cmd.js +150 -0
- package/hooks/lib/gsd-graphify-rebuild.sh +65 -0
- package/hooks/managed-hooks-registry.cjs +34 -0
- package/package.json +102 -0
- package/scripts/affected-tests-lib.cjs +541 -0
- package/scripts/audit-workflow-script-paths.cjs +73 -0
- package/scripts/base64-scan.sh +339 -0
- package/scripts/build-hooks.js +236 -0
- package/scripts/changeset/README.md +129 -0
- package/scripts/changeset/cli.cjs +392 -0
- package/scripts/changeset/github-release-notes.cjs +199 -0
- package/scripts/changeset/lint.cjs +110 -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 +108 -0
- package/scripts/check-env.cjs +302 -0
- package/scripts/check-npm-integrity.cjs +209 -0
- package/scripts/ci-guard-runner.cjs +16 -0
- package/scripts/ci-prepare-test-scope.cjs +46 -0
- package/scripts/ci-rebase-check.cjs +85 -0
- package/scripts/ci-test-scope.cjs +302 -0
- package/scripts/command-contract-helpers.cjs +64 -0
- package/scripts/diff-touches-shipped-paths.cjs +147 -0
- package/scripts/fix-slash-commands.cjs +147 -0
- package/scripts/gen-inventory-manifest.cjs +109 -0
- package/scripts/generate-package-identity.cjs +104 -0
- package/scripts/lint-command-contract.cjs +108 -0
- package/scripts/lint-descriptions.cjs +83 -0
- package/scripts/lint-docs-required.cjs +222 -0
- package/scripts/lint-no-source-grep-extras.cjs +81 -0
- package/scripts/lint-no-source-grep.cjs +174 -0
- package/scripts/lint-package-identity-drift.cjs +141 -0
- package/scripts/lint-pr-check-project-dir.cjs +98 -0
- package/scripts/lint-shared-module-handsync.cjs +388 -0
- package/scripts/lint-shell-command-projection-drift.cjs +57 -0
- package/scripts/lint-skill-deps.cjs +180 -0
- package/scripts/lint-test-file-count.allowlist.json +36 -0
- package/scripts/lint-test-file-count.cjs +190 -0
- package/scripts/pr-template-policy.cjs +268 -0
- package/scripts/prompt-injection-scan.sh +203 -0
- package/scripts/release-tarball-smoke.cjs +627 -0
- package/scripts/run-affected-tests.cjs +6 -0
- package/scripts/run-cross-platform-tests.cjs +63 -0
- package/scripts/run-tests.cjs +282 -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/shared-module-handsync-allowlist.json +183 -0
- package/scripts/strip-prose-atrefs.cjs +106 -0
- package/scripts/sync-rulesets.sh +34 -0
- package/scripts/sync-runtime-launcher.cjs +402 -0
- package/scripts/test-failure-reasons.cjs +34 -0
- package/scripts/workflow-policy.cjs +450 -0
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Capture an idea, task, or issue that surfaces during a GSD session as a structured todo for later work. Enables "thought → capture → continue" flow without losing context.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="init_context">
|
|
12
|
+
Load todo context:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
_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}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/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 "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/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
|
|
16
|
+
INIT=$(gsd_run query init.todos)
|
|
17
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Extract from init JSON: `commit_docs`, `date`, `timestamp`, `todo_count`, `todos`, `pending_dir`, `todos_dir_exists`.
|
|
21
|
+
|
|
22
|
+
Ensure directories exist:
|
|
23
|
+
```bash
|
|
24
|
+
mkdir -p .planning/todos/pending .planning/todos/completed
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Note existing areas from the todos array for consistency in infer_area step.
|
|
28
|
+
</step>
|
|
29
|
+
|
|
30
|
+
<step name="extract_content">
|
|
31
|
+
**With arguments:** Use as the title/focus.
|
|
32
|
+
- `/gsd-add-todo Add auth token refresh` → title = "Add auth token refresh"
|
|
33
|
+
|
|
34
|
+
**Without arguments:** Analyze recent conversation to extract:
|
|
35
|
+
- The specific problem, idea, or task discussed
|
|
36
|
+
- Relevant file paths mentioned
|
|
37
|
+
- Technical details (error messages, line numbers, constraints)
|
|
38
|
+
|
|
39
|
+
Formulate:
|
|
40
|
+
- `title`: 3-10 word descriptive title (action verb preferred)
|
|
41
|
+
- `problem`: What's wrong or why this is needed
|
|
42
|
+
- `solution`: Approach hints or "TBD" if just an idea
|
|
43
|
+
- `files`: Relevant paths with line numbers from conversation
|
|
44
|
+
</step>
|
|
45
|
+
|
|
46
|
+
<step name="infer_area">
|
|
47
|
+
Infer area from file paths:
|
|
48
|
+
|
|
49
|
+
| Path pattern | Area |
|
|
50
|
+
|--------------|------|
|
|
51
|
+
| `src/api/*`, `api/*` | `api` |
|
|
52
|
+
| `src/components/*`, `src/ui/*` | `ui` |
|
|
53
|
+
| `src/auth/*`, `auth/*` | `auth` |
|
|
54
|
+
| `src/db/*`, `database/*` | `database` |
|
|
55
|
+
| `tests/*`, `__tests__/*` | `testing` |
|
|
56
|
+
| `docs/*` | `docs` |
|
|
57
|
+
| `.planning/*` | `planning` |
|
|
58
|
+
| `scripts/*`, `bin/*` | `tooling` |
|
|
59
|
+
| No files or unclear | `general` |
|
|
60
|
+
|
|
61
|
+
Use existing area from step 2 if similar match exists.
|
|
62
|
+
</step>
|
|
63
|
+
|
|
64
|
+
<step name="check_duplicates">
|
|
65
|
+
```bash
|
|
66
|
+
# Search for key words from title in existing todos
|
|
67
|
+
grep -l -i "[key words from title]" .planning/todos/pending/*.md 2>/dev/null || true
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
If potential duplicate found:
|
|
71
|
+
1. Read the existing todo
|
|
72
|
+
2. Compare scope
|
|
73
|
+
|
|
74
|
+
|
|
75
|
+
**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.
|
|
76
|
+
If overlapping, use AskUserQuestion:
|
|
77
|
+
- header: "Duplicate?"
|
|
78
|
+
- question: "Similar todo exists: [title]. What would you like to do?"
|
|
79
|
+
- options:
|
|
80
|
+
- "Skip" — keep existing todo
|
|
81
|
+
- "Replace" — update existing with new context
|
|
82
|
+
- "Add anyway" — create as separate todo
|
|
83
|
+
</step>
|
|
84
|
+
|
|
85
|
+
<step name="create_file">
|
|
86
|
+
Use values from init context: `timestamp` and `date` are already available.
|
|
87
|
+
|
|
88
|
+
Generate slug for the title:
|
|
89
|
+
```bash
|
|
90
|
+
slug=$(gsd_run query generate-slug "$title" --raw)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
Write to `.planning/todos/pending/${date}-${slug}.md`:
|
|
94
|
+
|
|
95
|
+
```markdown
|
|
96
|
+
---
|
|
97
|
+
created: [timestamp]
|
|
98
|
+
title: [title]
|
|
99
|
+
area: [area]
|
|
100
|
+
files:
|
|
101
|
+
- [file:lines]
|
|
102
|
+
---
|
|
103
|
+
|
|
104
|
+
## Problem
|
|
105
|
+
|
|
106
|
+
[problem description - enough context for future Claude to understand weeks later]
|
|
107
|
+
|
|
108
|
+
## Solution
|
|
109
|
+
|
|
110
|
+
[approach hints or "TBD"]
|
|
111
|
+
```
|
|
112
|
+
</step>
|
|
113
|
+
|
|
114
|
+
<step name="update_state">
|
|
115
|
+
If `.planning/STATE.md` exists:
|
|
116
|
+
|
|
117
|
+
1. Use `todo_count` from init context (or re-run `init todos` if count changed)
|
|
118
|
+
2. Update "### Pending Todos" under "## Accumulated Context"
|
|
119
|
+
</step>
|
|
120
|
+
|
|
121
|
+
<step name="git_commit">
|
|
122
|
+
Commit the todo and any updated state:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
gsd_run query commit "docs: capture todo - [title]" --files .planning/todos/pending/[filename] .planning/STATE.md
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
Tool respects `commit_docs` config and gitignore automatically.
|
|
129
|
+
|
|
130
|
+
Confirm: "Committed: docs: capture todo - [title]"
|
|
131
|
+
</step>
|
|
132
|
+
|
|
133
|
+
<step name="confirm">
|
|
134
|
+
```
|
|
135
|
+
Todo saved: .planning/todos/pending/[filename]
|
|
136
|
+
|
|
137
|
+
[title]
|
|
138
|
+
Area: [area]
|
|
139
|
+
Files: [count] referenced
|
|
140
|
+
|
|
141
|
+
---
|
|
142
|
+
|
|
143
|
+
Would you like to:
|
|
144
|
+
|
|
145
|
+
1. Continue with current work
|
|
146
|
+
2. Add another todo
|
|
147
|
+
3. View all todos (/gsd:capture --list)
|
|
148
|
+
```
|
|
149
|
+
</step>
|
|
150
|
+
|
|
151
|
+
</process>
|
|
152
|
+
|
|
153
|
+
<success_criteria>
|
|
154
|
+
- [ ] Directory structure exists
|
|
155
|
+
- [ ] Todo file created with valid frontmatter
|
|
156
|
+
- [ ] Problem section has enough context for future Claude
|
|
157
|
+
- [ ] No duplicates (checked and resolved)
|
|
158
|
+
- [ ] Area consistent with existing todos
|
|
159
|
+
- [ ] STATE.md updated if exists
|
|
160
|
+
- [ ] Todo and state committed to git
|
|
161
|
+
</success_criteria>
|
|
@@ -0,0 +1,295 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Generate an AI design contract (AI-SPEC.md) for phases that involve building AI systems. Orchestrates gsd-framework-selector → gsd-ai-researcher → gsd-domain-researcher → gsd-eval-planner with a validation gate. Inserts between discuss-phase and plan-phase in the GSD lifecycle.
|
|
3
|
+
|
|
4
|
+
AI-SPEC.md locks four things before the planner creates tasks:
|
|
5
|
+
1. Framework selection (with rationale and alternatives)
|
|
6
|
+
2. Implementation guidance (correct syntax, patterns, pitfalls from official docs)
|
|
7
|
+
3. Domain context (practitioner rubric ingredients, failure modes, regulatory constraints)
|
|
8
|
+
4. Evaluation strategy (dimensions, rubrics, tooling, reference dataset, guardrails)
|
|
9
|
+
|
|
10
|
+
This prevents the two most common AI development failures: choosing the wrong framework for the use case, and treating evaluation as an afterthought.
|
|
11
|
+
</purpose>
|
|
12
|
+
|
|
13
|
+
<required_reading>
|
|
14
|
+
@~/.claude/get-shit-done/references/ai-frameworks.md
|
|
15
|
+
@~/.claude/get-shit-done/references/ai-evals.md
|
|
16
|
+
</required_reading>
|
|
17
|
+
|
|
18
|
+
<process>
|
|
19
|
+
|
|
20
|
+
## 1. Initialize
|
|
21
|
+
|
|
22
|
+
```bash
|
|
23
|
+
_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}/get-shit-done/bin/${_GSD_SHIM_NAME}"; if [ -f "$GSD_TOOLS" ]; then gsd_run() { node "$GSD_TOOLS" "$@"; }; elif [ -f "${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="${_GSD_RUNTIME_ROOT}/.claude/get-shit-done/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 "$HOME/.claude/get-shit-done/bin/${_GSD_SHIM_NAME}" ]; then GSD_TOOLS="$HOME/.claude/get-shit-done/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
|
|
24
|
+
INIT=$(gsd_run query init.plan-phase "$PHASE")
|
|
25
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
Parse JSON for: `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `has_context`, `has_research`, `commit_docs`.
|
|
29
|
+
|
|
30
|
+
**File paths:** `state_path`, `roadmap_path`, `requirements_path`, `context_path`.
|
|
31
|
+
|
|
32
|
+
Resolve agent models:
|
|
33
|
+
```bash
|
|
34
|
+
SELECTOR_MODEL=$(gsd_run query resolve-model gsd-framework-selector 2>/dev/null | jq -r '.model' 2>/dev/null || true)
|
|
35
|
+
RESEARCHER_MODEL=$(gsd_run query resolve-model gsd-ai-researcher 2>/dev/null | jq -r '.model' 2>/dev/null || true)
|
|
36
|
+
DOMAIN_MODEL=$(gsd_run query resolve-model gsd-domain-researcher 2>/dev/null | jq -r '.model' 2>/dev/null || true)
|
|
37
|
+
PLANNER_MODEL=$(gsd_run query resolve-model gsd-eval-planner 2>/dev/null | jq -r '.model' 2>/dev/null || true)
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Check config:
|
|
41
|
+
```bash
|
|
42
|
+
AI_PHASE_ENABLED=$(gsd_run query config-get workflow.ai_integration_phase 2>/dev/null || echo "true")
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
**If `AI_PHASE_ENABLED` is `false`:**
|
|
46
|
+
```
|
|
47
|
+
AI phase is disabled in config. Enable via /gsd:settings.
|
|
48
|
+
```
|
|
49
|
+
Exit workflow.
|
|
50
|
+
|
|
51
|
+
**If `planning_exists` is false:** Error — run `/gsd:new-project` first.
|
|
52
|
+
|
|
53
|
+
## 2. Parse and Validate Phase
|
|
54
|
+
|
|
55
|
+
Extract phase number from $ARGUMENTS. If not provided, detect next unplanned phase.
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
PHASE_INFO=$(gsd_run query roadmap.get-phase "${PHASE}")
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
**If `found` is false:** Error with available phases.
|
|
62
|
+
|
|
63
|
+
## 3. Check Prerequisites
|
|
64
|
+
|
|
65
|
+
**If `has_context` is false:**
|
|
66
|
+
```
|
|
67
|
+
No CONTEXT.md found for Phase {N}.
|
|
68
|
+
Recommended: run /gsd:discuss-phase {N} first to capture framework preferences.
|
|
69
|
+
Continuing without user decisions — framework selector will ask all questions.
|
|
70
|
+
```
|
|
71
|
+
Continue (non-blocking).
|
|
72
|
+
|
|
73
|
+
## 4. Check Existing AI-SPEC
|
|
74
|
+
|
|
75
|
+
```bash
|
|
76
|
+
AI_SPEC_FILE=$(ls "${PHASE_DIR}"/*-AI-SPEC.md 2>/dev/null | head -1)
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
**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.
|
|
81
|
+
**If exists:** Use AskUserQuestion:
|
|
82
|
+
- header: "Existing AI-SPEC"
|
|
83
|
+
- question: "AI-SPEC.md already exists for Phase {N}. What would you like to do?"
|
|
84
|
+
- options:
|
|
85
|
+
- "Update — re-run with existing as baseline"
|
|
86
|
+
- "View — display current AI-SPEC and exit"
|
|
87
|
+
- "Skip — keep current AI-SPEC and exit"
|
|
88
|
+
|
|
89
|
+
If "View": display file contents, exit.
|
|
90
|
+
If "Skip": exit.
|
|
91
|
+
If "Update": continue to step 5.
|
|
92
|
+
|
|
93
|
+
## 5. Spawn gsd-framework-selector
|
|
94
|
+
|
|
95
|
+
Display:
|
|
96
|
+
```
|
|
97
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
98
|
+
GSD ► AI DESIGN CONTRACT — PHASE {N}: {name}
|
|
99
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
100
|
+
|
|
101
|
+
◆ Step 1/4 — Framework Selection...
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Spawn `gsd-framework-selector` with:
|
|
105
|
+
```markdown
|
|
106
|
+
Read ~/.claude/agents/gsd-framework-selector.md for instructions.
|
|
107
|
+
|
|
108
|
+
<objective>
|
|
109
|
+
Select the right AI framework for Phase {phase_number}: {phase_name}
|
|
110
|
+
Goal: {phase_goal}
|
|
111
|
+
</objective>
|
|
112
|
+
|
|
113
|
+
<files_to_read>
|
|
114
|
+
{context_path if exists}
|
|
115
|
+
{requirements_path if exists}
|
|
116
|
+
</files_to_read>
|
|
117
|
+
|
|
118
|
+
<phase_context>
|
|
119
|
+
Phase: {phase_number} — {phase_name}
|
|
120
|
+
Goal: {phase_goal}
|
|
121
|
+
</phase_context>
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
Parse selector output for: `primary_framework`, `system_type`, `model_provider`, `eval_concerns`, `alternative_framework`.
|
|
125
|
+
|
|
126
|
+
**If selector fails or returns empty:** Exit with error — "Framework selection failed. Re-run /gsd:ai-integration-phase {N} or answer the framework question in /gsd:discuss-phase {N} first."
|
|
127
|
+
|
|
128
|
+
## 6. Initialize AI-SPEC.md
|
|
129
|
+
|
|
130
|
+
Copy template:
|
|
131
|
+
```bash
|
|
132
|
+
cp "$HOME/.claude/get-shit-done/templates/AI-SPEC.md" "${PHASE_DIR}/${PADDED_PHASE}-AI-SPEC.md"
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Fill in header fields:
|
|
136
|
+
- Phase number and name
|
|
137
|
+
- System classification (from selector)
|
|
138
|
+
- Selected framework (from selector)
|
|
139
|
+
- Alternative considered (from selector)
|
|
140
|
+
|
|
141
|
+
## 7. Spawn gsd-ai-researcher
|
|
142
|
+
|
|
143
|
+
> **Ordering note (prevents tool-level last-writer-wins race):** Steps 7 and 8 write disjoint sections of AI-SPEC.md but MUST run sequentially — wait for Step 7 to complete before spawning Step 8. Both agents use the `Edit` tool exclusively (never `Write`) when modifying AI-SPEC.md. A `Write` on a shared file replaces the entire file, silently overwriting the other agent's work; `Edit` targets only the relevant lines. See #3096 for a confirmed 40%-incidence race on parallel dispatch.
|
|
144
|
+
|
|
145
|
+
Display:
|
|
146
|
+
```
|
|
147
|
+
◆ Step 2/4 — Researching {primary_framework} docs + AI systems best practices...
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Spawn `gsd-ai-researcher` with:
|
|
151
|
+
```markdown
|
|
152
|
+
Read ~/.claude/agents/gsd-ai-researcher.md for instructions.
|
|
153
|
+
|
|
154
|
+
**Tool discipline (mandatory):**
|
|
155
|
+
Use the Edit tool exclusively when modifying AI-SPEC.md — NEVER use Write on this file.
|
|
156
|
+
Write replaces the entire file and will overwrite work from parallel or sequential sibling agents.
|
|
157
|
+
Before editing, verify the section you are about to write is still a template placeholder.
|
|
158
|
+
|
|
159
|
+
<objective>
|
|
160
|
+
</objective>
|
|
161
|
+
|
|
162
|
+
<files_to_read>
|
|
163
|
+
{ai_spec_path}
|
|
164
|
+
{context_path if exists}
|
|
165
|
+
</files_to_read>
|
|
166
|
+
|
|
167
|
+
<input>
|
|
168
|
+
framework: {primary_framework}
|
|
169
|
+
system_type: {system_type}
|
|
170
|
+
model_provider: {model_provider}
|
|
171
|
+
ai_spec_path: {ai_spec_path}
|
|
172
|
+
phase_context: Phase {phase_number}: {phase_name} — {phase_goal}
|
|
173
|
+
</input>
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
## 8. Spawn gsd-domain-researcher
|
|
177
|
+
|
|
178
|
+
> **Wait for Step 7 to complete before spawning this step** (see ordering note in Step 7).
|
|
179
|
+
|
|
180
|
+
Display:
|
|
181
|
+
```
|
|
182
|
+
◆ Step 3/4 — Researching domain context and expert evaluation criteria...
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
Spawn `gsd-domain-researcher` with:
|
|
186
|
+
```markdown
|
|
187
|
+
Read ~/.claude/agents/gsd-domain-researcher.md for instructions.
|
|
188
|
+
|
|
189
|
+
**Tool discipline (mandatory):**
|
|
190
|
+
Use the Edit tool exclusively when modifying AI-SPEC.md — NEVER use Write on this file.
|
|
191
|
+
Write replaces the entire file and will overwrite work from parallel or sequential sibling agents.
|
|
192
|
+
Before editing, verify the section you are about to write is still a template placeholder.
|
|
193
|
+
|
|
194
|
+
<objective>
|
|
195
|
+
</objective>
|
|
196
|
+
|
|
197
|
+
<files_to_read>
|
|
198
|
+
{ai_spec_path}
|
|
199
|
+
{context_path if exists}
|
|
200
|
+
{requirements_path if exists}
|
|
201
|
+
</files_to_read>
|
|
202
|
+
|
|
203
|
+
<input>
|
|
204
|
+
system_type: {system_type}
|
|
205
|
+
phase_name: {phase_name}
|
|
206
|
+
phase_goal: {phase_goal}
|
|
207
|
+
ai_spec_path: {ai_spec_path}
|
|
208
|
+
</input>
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
## 9. Spawn gsd-eval-planner
|
|
212
|
+
|
|
213
|
+
Display:
|
|
214
|
+
```
|
|
215
|
+
◆ Step 4/4 — Designing evaluation strategy from domain + technical context...
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
Spawn `gsd-eval-planner` with:
|
|
219
|
+
```markdown
|
|
220
|
+
Read ~/.claude/agents/gsd-eval-planner.md for instructions.
|
|
221
|
+
|
|
222
|
+
<objective>
|
|
223
|
+
Design evaluation strategy for Phase {phase_number}: {phase_name}
|
|
224
|
+
Write Sections 5, 6, and 7 of AI-SPEC.md
|
|
225
|
+
AI-SPEC.md now contains domain context (Section 1b) — use it as your rubric starting point.
|
|
226
|
+
</objective>
|
|
227
|
+
|
|
228
|
+
<files_to_read>
|
|
229
|
+
{ai_spec_path}
|
|
230
|
+
{context_path if exists}
|
|
231
|
+
{requirements_path if exists}
|
|
232
|
+
</files_to_read>
|
|
233
|
+
|
|
234
|
+
<input>
|
|
235
|
+
system_type: {system_type}
|
|
236
|
+
framework: {primary_framework}
|
|
237
|
+
model_provider: {model_provider}
|
|
238
|
+
phase_name: {phase_name}
|
|
239
|
+
phase_goal: {phase_goal}
|
|
240
|
+
ai_spec_path: {ai_spec_path}
|
|
241
|
+
</input>
|
|
242
|
+
```
|
|
243
|
+
|
|
244
|
+
## 10. Validate AI-SPEC Completeness
|
|
245
|
+
|
|
246
|
+
Read the completed AI-SPEC.md. Check that:
|
|
247
|
+
- Section 2 has a framework name (not placeholder)
|
|
248
|
+
- Section 1b has at least one domain rubric ingredient (Good/Bad/Stakes)
|
|
249
|
+
- Section 3 has a non-empty code block (entry point pattern)
|
|
250
|
+
- Section 4b has a Pydantic example
|
|
251
|
+
- Section 5 has at least one row in the dimensions table
|
|
252
|
+
- Section 6 has at least one guardrail or explicit "N/A for internal tool" note
|
|
253
|
+
- Checklist section at end has 3+ items checked
|
|
254
|
+
|
|
255
|
+
**If validation fails:** Display specific missing sections. Ask user if they want to re-run the specific step or continue anyway.
|
|
256
|
+
|
|
257
|
+
## 11. Commit
|
|
258
|
+
|
|
259
|
+
**If `commit_docs` is true:**
|
|
260
|
+
```bash
|
|
261
|
+
git add "${AI_SPEC_FILE}"
|
|
262
|
+
git commit -m "docs({phase_slug}): generate AI-SPEC.md — {primary_framework} + domain context + eval strategy"
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
## 12. Display Completion
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
269
|
+
GSD ► AI-SPEC COMPLETE — PHASE {N}: {name}
|
|
270
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
271
|
+
|
|
272
|
+
◆ Framework: {primary_framework}
|
|
273
|
+
◆ System Type: {system_type}
|
|
274
|
+
◆ Domain: {domain_vertical from Section 1b}
|
|
275
|
+
◆ Eval Dimensions: {eval_concerns}
|
|
276
|
+
◆ Tracing Default: Arize Phoenix (or detected existing tool)
|
|
277
|
+
◆ Output: {ai_spec_path}
|
|
278
|
+
|
|
279
|
+
Next step:
|
|
280
|
+
/gsd:plan-phase {N} — planner will consume AI-SPEC.md
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
</process>
|
|
284
|
+
|
|
285
|
+
<success_criteria>
|
|
286
|
+
- [ ] Framework selected with rationale (Section 2)
|
|
287
|
+
- [ ] AI-SPEC.md created from template
|
|
288
|
+
- [ ] Framework docs + AI best practices researched (Sections 3, 4, 4b populated)
|
|
289
|
+
- [ ] Domain context + expert rubric ingredients researched (Section 1b populated)
|
|
290
|
+
- [ ] Eval strategy grounded in domain context (Sections 5-7 populated)
|
|
291
|
+
- [ ] Arize Phoenix (or detected tool) set as tracing default in Section 7
|
|
292
|
+
- [ ] AI-SPEC.md validated (Sections 1b, 2, 3, 4b, 5, 6 all non-empty)
|
|
293
|
+
- [ ] Committed if commit_docs enabled
|
|
294
|
+
- [ ] Next step surfaced to user
|
|
295
|
+
</success_criteria>
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Analyze ROADMAP.md phases for dependency relationships before execution. Detect file overlap between phases, semantic API/data-flow dependencies, and suggest `Depends on` entries to prevent merge conflicts during parallel execution by `/gsd:manager`.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<process>
|
|
6
|
+
|
|
7
|
+
## 1. Load ROADMAP.md
|
|
8
|
+
|
|
9
|
+
Read `.planning/ROADMAP.md`. If it does not exist, error: "No ROADMAP.md found — run `/gsd:new-project` first."
|
|
10
|
+
|
|
11
|
+
Extract all phases. For each phase capture:
|
|
12
|
+
- Phase number and name
|
|
13
|
+
- Scope/Goal description
|
|
14
|
+
- Files listed in `Files` or `files_modified` fields (if present)
|
|
15
|
+
- Existing `Depends on` field value
|
|
16
|
+
|
|
17
|
+
## 2. Infer Likely File Modifications
|
|
18
|
+
|
|
19
|
+
For each phase without explicit `files_modified`, analyze the scope/goal description to infer which files will likely be modified. Use these heuristics:
|
|
20
|
+
|
|
21
|
+
- **Database/schema phases** → migration files, schema definitions, model files
|
|
22
|
+
- **API/backend phases** → route files, controller files, service files, handler files
|
|
23
|
+
- **Frontend/UI phases** → component files, page files, style files
|
|
24
|
+
- **Auth phases** → middleware files, auth route files, session/token files
|
|
25
|
+
- **Config/infra phases** → config files, environment files, CI/CD files
|
|
26
|
+
- **Test phases** → test files, spec files, fixture files
|
|
27
|
+
- **Shared utility phases** → lib/utils files, shared type definitions
|
|
28
|
+
|
|
29
|
+
Group phases by their inferred file domain (database, API, frontend, auth, config, shared).
|
|
30
|
+
|
|
31
|
+
## 3. Detect Dependency Relationships
|
|
32
|
+
|
|
33
|
+
For each pair of phases (A, B), check for dependency signals:
|
|
34
|
+
|
|
35
|
+
### File Overlap Detection
|
|
36
|
+
If phases A and B will both modify files in the same domain or the same specific files, one must run before the other. The phase that *provides* the foundation runs first.
|
|
37
|
+
|
|
38
|
+
### Semantic Dependency Detection
|
|
39
|
+
Read each phase's scope/goal for these patterns:
|
|
40
|
+
- Phase B mentions consuming, using, or calling something that Phase A creates/implements
|
|
41
|
+
- Phase B references an "API", "schema", "model", "endpoint", or "interface" that Phase A builds
|
|
42
|
+
- Phase B says "after X is complete", "once X is built", "using the X from Phase N"
|
|
43
|
+
- Phase B extends or modifies code that Phase A establishes
|
|
44
|
+
|
|
45
|
+
### Data Flow Detection
|
|
46
|
+
- Phase A creates data structures, schemas, or types → Phase B consumes or transforms them
|
|
47
|
+
- Phase A seeds/migrates the database → Phase B reads from that database
|
|
48
|
+
- Phase A exposes an API contract → Phase B implements the client for that contract
|
|
49
|
+
|
|
50
|
+
## 4. Build Dependency Table
|
|
51
|
+
|
|
52
|
+
Output a dependency suggestion table:
|
|
53
|
+
|
|
54
|
+
```
|
|
55
|
+
Phase Dependency Analysis
|
|
56
|
+
=========================
|
|
57
|
+
|
|
58
|
+
Phase N: <name>
|
|
59
|
+
Scope: <brief scope>
|
|
60
|
+
Likely touches: <inferred file domains>
|
|
61
|
+
|
|
62
|
+
Suggested dependencies:
|
|
63
|
+
→ Depends on: <Phase M> — reason: <overlap/semantic/data-flow explanation>
|
|
64
|
+
|
|
65
|
+
Current "Depends on": <existing value or "(none)">
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
For phase pairs with no detected dependency, state: "No dependency detected between Phase X and Phase Y."
|
|
69
|
+
|
|
70
|
+
## 5. Summarize Suggested Changes
|
|
71
|
+
|
|
72
|
+
Show a consolidated diff of proposed ROADMAP.md `Depends on` changes:
|
|
73
|
+
|
|
74
|
+
```
|
|
75
|
+
Suggested ROADMAP.md updates:
|
|
76
|
+
Phase 3: add "Depends on: 1, 2" (file overlap: database schema)
|
|
77
|
+
Phase 5: add "Depends on: 3" (semantic: uses auth API from Phase 3)
|
|
78
|
+
Phase 4: no change needed (independent scope)
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## 6. Confirm and Apply
|
|
82
|
+
|
|
83
|
+
Ask the user: "Apply these `Depends on` suggestions to ROADMAP.md? (yes / no / edit)"
|
|
84
|
+
|
|
85
|
+
- **yes** — Write all suggested `Depends on` entries to ROADMAP.md. Confirm each write.
|
|
86
|
+
- **no** — Print the suggestions as text only. User updates manually.
|
|
87
|
+
- **edit** — Present each suggestion individually with yes/no/skip per suggestion.
|
|
88
|
+
|
|
89
|
+
When writing to ROADMAP.md:
|
|
90
|
+
- Locate the phase entry and add or update the `Depends on:` field
|
|
91
|
+
- Preserve all other phase content unchanged
|
|
92
|
+
- Do not reorder phases
|
|
93
|
+
|
|
94
|
+
After applying: "ROADMAP.md updated. Run `/gsd:manager` to execute phases in the correct order."
|
|
95
|
+
|
|
96
|
+
</process>
|