@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,243 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Extract decisions, lessons learned, patterns discovered, and surprises encountered from completed phase artifacts into a structured LEARNINGS.md file. Captures institutional knowledge that would otherwise be lost between phases.
|
|
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
|
+
<objective>
|
|
10
|
+
Analyze completed phase artifacts (PLAN.md, SUMMARY.md, VERIFICATION.md, UAT.md, STATE.md) and extract structured learnings into 4 categories: decisions, lessons, patterns, and surprises. Each extracted item includes source attribution. The output is a LEARNINGS.md file with YAML frontmatter containing metadata about the extraction.
|
|
11
|
+
</objective>
|
|
12
|
+
|
|
13
|
+
<process>
|
|
14
|
+
|
|
15
|
+
<step name="initialize">
|
|
16
|
+
Parse arguments and load project state:
|
|
17
|
+
|
|
18
|
+
```bash
|
|
19
|
+
_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
|
|
20
|
+
INIT=$(gsd_run query init.phase-op "${PHASE_ARG}")
|
|
21
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
Parse from init JSON: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `padded_phase`.
|
|
25
|
+
|
|
26
|
+
If phase not found, exit with error: "Phase {PHASE_ARG} not found."
|
|
27
|
+
</step>
|
|
28
|
+
|
|
29
|
+
<step name="collect_artifacts">
|
|
30
|
+
Read the phase artifacts. PLAN.md and SUMMARY.md are required; VERIFICATION.md, UAT.md, and STATE.md are optional.
|
|
31
|
+
|
|
32
|
+
**Required artifacts:**
|
|
33
|
+
- `${PHASE_DIR}/*-PLAN.md` — all plan files for the phase
|
|
34
|
+
- `${PHASE_DIR}/*-SUMMARY.md` — all summary files for the phase
|
|
35
|
+
|
|
36
|
+
If PLAN.md or SUMMARY.md files are not found or missing, exit with error: "Required artifacts missing. PLAN.md and SUMMARY.md are required for learning extraction."
|
|
37
|
+
|
|
38
|
+
**Optional artifacts (read if available, skip if not found):**
|
|
39
|
+
- `${PHASE_DIR}/*-VERIFICATION.md` — verification results
|
|
40
|
+
- `${PHASE_DIR}/*-UAT.md` — user acceptance test results
|
|
41
|
+
- `.planning/STATE.md` — project state with decisions and blockers
|
|
42
|
+
|
|
43
|
+
Track which optional artifacts are missing for the `missing_artifacts` frontmatter field.
|
|
44
|
+
</step>
|
|
45
|
+
|
|
46
|
+
<step name="extract-learnings">
|
|
47
|
+
Analyze all collected artifacts and extract learnings into 4 categories:
|
|
48
|
+
|
|
49
|
+
### 1. Decisions
|
|
50
|
+
Technical and architectural decisions made during the phase. Look for:
|
|
51
|
+
- Explicit decisions documented in PLAN.md or SUMMARY.md
|
|
52
|
+
- Technology choices and their rationale
|
|
53
|
+
- Trade-offs that were evaluated
|
|
54
|
+
- Design decisions recorded in STATE.md
|
|
55
|
+
|
|
56
|
+
Each decision entry must include:
|
|
57
|
+
- **What** was decided
|
|
58
|
+
- **Why** it was decided (rationale)
|
|
59
|
+
- **Source:** attribution to the artifact where the decision was found (e.g., "Source: 03-01-PLAN.md")
|
|
60
|
+
|
|
61
|
+
### 2. Lessons
|
|
62
|
+
Things learned during execution that were not known beforehand. Look for:
|
|
63
|
+
- Unexpected complexity in SUMMARY.md
|
|
64
|
+
- Issues discovered during verification in VERIFICATION.md
|
|
65
|
+
- Failed approaches documented in SUMMARY.md
|
|
66
|
+
- UAT feedback that revealed gaps
|
|
67
|
+
|
|
68
|
+
Each lesson entry must include:
|
|
69
|
+
- **What** was learned
|
|
70
|
+
- **Context** for the lesson
|
|
71
|
+
- **Source:** attribution to the originating artifact
|
|
72
|
+
|
|
73
|
+
### 3. Patterns
|
|
74
|
+
Reusable patterns, approaches, or techniques discovered. Look for:
|
|
75
|
+
- Successful implementation patterns in SUMMARY.md
|
|
76
|
+
- Testing patterns from VERIFICATION.md or UAT.md
|
|
77
|
+
- Workflow patterns that worked well
|
|
78
|
+
- Code organization patterns from PLAN.md
|
|
79
|
+
|
|
80
|
+
Each pattern entry must include:
|
|
81
|
+
- **Pattern** name/description
|
|
82
|
+
- **When to use** it
|
|
83
|
+
- **Source:** attribution to the originating artifact
|
|
84
|
+
|
|
85
|
+
### 4. Surprises
|
|
86
|
+
Unexpected findings, behaviors, or outcomes. Look for:
|
|
87
|
+
- Things that took longer or shorter than estimated
|
|
88
|
+
- Unexpected dependencies or interactions
|
|
89
|
+
- Edge cases not anticipated in planning
|
|
90
|
+
- Performance or behavior that differed from expectations
|
|
91
|
+
|
|
92
|
+
Each surprise entry must include:
|
|
93
|
+
- **What** was surprising
|
|
94
|
+
- **Impact** of the surprise
|
|
95
|
+
- **Source:** attribution to the originating artifact
|
|
96
|
+
</step>
|
|
97
|
+
|
|
98
|
+
<step name="capture_thought_integration">
|
|
99
|
+
**What this step is:** `capture_thought` is an **optional convention**, not a bundled GSD tool. GSD does not ship one and does not require one. The step is a hook for users who run a memory / knowledge-base MCP server (for example ExoCortex-style servers, `claude-mem`, or `mem0`-style servers) that exposes a tool with this exact name. If any MCP server in the current session provides a `capture_thought` tool with the signature below, each extracted learning is routed through it with metadata. If no such tool is present, the step is a silent no-op — `LEARNINGS.md` is always the primary output.
|
|
100
|
+
|
|
101
|
+
**Detection:** Check whether a tool named `capture_thought` is available in the current session. Do not assume any specific MCP server is connected.
|
|
102
|
+
|
|
103
|
+
**If available**, call once per extracted learning:
|
|
104
|
+
|
|
105
|
+
```
|
|
106
|
+
capture_thought({
|
|
107
|
+
category: "decision" | "lesson" | "pattern" | "surprise",
|
|
108
|
+
phase: PHASE_NUMBER,
|
|
109
|
+
content: LEARNING_TEXT,
|
|
110
|
+
source: ARTIFACT_NAME
|
|
111
|
+
})
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
**If not available** (no MCP server in the session exposes this tool, or the runtime does not support it), skip the step silently and continue. The workflow must not fail or warn — this is expected behavior for users who do not run a knowledge-base MCP.
|
|
115
|
+
</step>
|
|
116
|
+
|
|
117
|
+
<step name="write_learnings">
|
|
118
|
+
Write the LEARNINGS.md file to the phase directory. If a previous LEARNINGS.md exists, overwrite it (replace the file entirely).
|
|
119
|
+
|
|
120
|
+
Output path: `${PHASE_DIR}/${PADDED_PHASE}-LEARNINGS.md`
|
|
121
|
+
|
|
122
|
+
The file must have YAML frontmatter with these fields:
|
|
123
|
+
```yaml
|
|
124
|
+
---
|
|
125
|
+
phase: {PHASE_NUMBER}
|
|
126
|
+
phase_name: "{PHASE_NAME}"
|
|
127
|
+
project: "{PROJECT_NAME}"
|
|
128
|
+
generated: "{ISO_DATE}"
|
|
129
|
+
counts:
|
|
130
|
+
decisions: {N}
|
|
131
|
+
lessons: {N}
|
|
132
|
+
patterns: {N}
|
|
133
|
+
surprises: {N}
|
|
134
|
+
missing_artifacts:
|
|
135
|
+
- "{ARTIFACT_NAME}"
|
|
136
|
+
---
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
Individual items may carry an optional `graduated:` annotation (added by `graduation.md` when a cluster is promoted):
|
|
140
|
+
```markdown
|
|
141
|
+
**Graduated:** {target-file}:{ISO_DATE}
|
|
142
|
+
```
|
|
143
|
+
This annotation is appended after the item's existing fields and prevents the item from being re-surfaced in future graduation scans. Do not add this field during extraction — it is written only by the graduation workflow.
|
|
144
|
+
|
|
145
|
+
The body follows this structure:
|
|
146
|
+
```markdown
|
|
147
|
+
# Phase {PHASE_NUMBER} Learnings: {PHASE_NAME}
|
|
148
|
+
|
|
149
|
+
## Decisions
|
|
150
|
+
|
|
151
|
+
### {Decision Title}
|
|
152
|
+
{What was decided}
|
|
153
|
+
|
|
154
|
+
**Rationale:** {Why}
|
|
155
|
+
**Source:** {artifact file}
|
|
156
|
+
|
|
157
|
+
---
|
|
158
|
+
|
|
159
|
+
## Lessons
|
|
160
|
+
|
|
161
|
+
### {Lesson Title}
|
|
162
|
+
{What was learned}
|
|
163
|
+
|
|
164
|
+
**Context:** {context}
|
|
165
|
+
**Source:** {artifact file}
|
|
166
|
+
|
|
167
|
+
---
|
|
168
|
+
|
|
169
|
+
## Patterns
|
|
170
|
+
|
|
171
|
+
### {Pattern Name}
|
|
172
|
+
{Description}
|
|
173
|
+
|
|
174
|
+
**When to use:** {applicability}
|
|
175
|
+
**Source:** {artifact file}
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Surprises
|
|
180
|
+
|
|
181
|
+
### {Surprise Title}
|
|
182
|
+
{What was surprising}
|
|
183
|
+
|
|
184
|
+
**Impact:** {impact description}
|
|
185
|
+
**Source:** {artifact file}
|
|
186
|
+
```
|
|
187
|
+
</step>
|
|
188
|
+
|
|
189
|
+
<step name="update_state">
|
|
190
|
+
Update STATE.md to reflect the learning extraction:
|
|
191
|
+
|
|
192
|
+
```bash
|
|
193
|
+
gsd_run query state.update "Last Activity" "$(date +%Y-%m-%d)"
|
|
194
|
+
```
|
|
195
|
+
</step>
|
|
196
|
+
|
|
197
|
+
<step name="report">
|
|
198
|
+
```
|
|
199
|
+
---------------------------------------------------------------
|
|
200
|
+
|
|
201
|
+
## Learnings Extracted: Phase {X} — {Name}
|
|
202
|
+
|
|
203
|
+
Decisions: {N}
|
|
204
|
+
Lessons: {N}
|
|
205
|
+
Patterns: {N}
|
|
206
|
+
Surprises: {N}
|
|
207
|
+
Total: {N}
|
|
208
|
+
|
|
209
|
+
Output: {PHASE_DIR}/{PADDED_PHASE}-LEARNINGS.md
|
|
210
|
+
|
|
211
|
+
Missing artifacts: {list or "none"}
|
|
212
|
+
|
|
213
|
+
Next steps:
|
|
214
|
+
- Review extracted learnings for accuracy
|
|
215
|
+
- /gsd:progress — see overall project state
|
|
216
|
+
- /gsd:execute-phase {next} — continue to next phase
|
|
217
|
+
|
|
218
|
+
---------------------------------------------------------------
|
|
219
|
+
```
|
|
220
|
+
</step>
|
|
221
|
+
|
|
222
|
+
</process>
|
|
223
|
+
|
|
224
|
+
<success_criteria>
|
|
225
|
+
- [ ] Phase artifacts located and read successfully
|
|
226
|
+
- [ ] All 4 categories extracted: decisions, lessons, patterns, surprises
|
|
227
|
+
- [ ] Each extracted item has source attribution
|
|
228
|
+
- [ ] LEARNINGS.md written with correct YAML frontmatter
|
|
229
|
+
- [ ] Missing optional artifacts tracked in frontmatter
|
|
230
|
+
- [ ] capture_thought integration attempted if tool available
|
|
231
|
+
- [ ] STATE.md updated with extraction activity
|
|
232
|
+
- [ ] User receives summary report
|
|
233
|
+
</success_criteria>
|
|
234
|
+
|
|
235
|
+
<critical_rules>
|
|
236
|
+
- PLAN.md and SUMMARY.md are required — exit with clear error if missing
|
|
237
|
+
- VERIFICATION.md, UAT.md, and STATE.md are optional — extract from them if present, skip gracefully if not found
|
|
238
|
+
- Every extracted learning must have source attribution back to the originating artifact
|
|
239
|
+
- Running extract-learnings twice on the same phase must overwrite (replace) the previous LEARNINGS.md, not append
|
|
240
|
+
- Do not fabricate learnings — only extract what is explicitly documented in artifacts
|
|
241
|
+
- If capture_thought is unavailable, the workflow must not fail — graceful degradation to file-only output
|
|
242
|
+
- LEARNINGS.md frontmatter must include counts for all 4 categories and list any missing_artifacts
|
|
243
|
+
</critical_rules>
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Execute a trivial task inline without subagent overhead. No PLAN.md, no Task spawning,
|
|
3
|
+
no research, no plan checking. Just: understand → do → commit → log.
|
|
4
|
+
|
|
5
|
+
For tasks like: fix a typo, update a config value, add a missing import, rename a
|
|
6
|
+
variable, commit uncommitted work, add a .gitignore entry, bump a version number.
|
|
7
|
+
|
|
8
|
+
Use /gsd:quick for anything that needs multi-step planning or research.
|
|
9
|
+
</purpose>
|
|
10
|
+
|
|
11
|
+
<process>
|
|
12
|
+
|
|
13
|
+
<step name="parse_task">
|
|
14
|
+
Parse `$ARGUMENTS` for the task description.
|
|
15
|
+
|
|
16
|
+
If empty, ask:
|
|
17
|
+
```
|
|
18
|
+
What's the quick fix? (one sentence)
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Store as `$TASK`.
|
|
22
|
+
</step>
|
|
23
|
+
|
|
24
|
+
<step name="scope_check">
|
|
25
|
+
**Before doing anything, verify this is actually trivial.**
|
|
26
|
+
|
|
27
|
+
A task is trivial if it can be completed in:
|
|
28
|
+
- ≤ 3 file edits
|
|
29
|
+
- ≤ 1 minute of work
|
|
30
|
+
- No new dependencies or architecture changes
|
|
31
|
+
- No research needed
|
|
32
|
+
|
|
33
|
+
If the task seems non-trivial (multi-file refactor, new feature, needs research),
|
|
34
|
+
say:
|
|
35
|
+
|
|
36
|
+
```
|
|
37
|
+
This looks like it needs planning. Use /gsd:quick instead:
|
|
38
|
+
/gsd:quick "{task description}"
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
And stop.
|
|
42
|
+
</step>
|
|
43
|
+
|
|
44
|
+
<step name="execute_inline">
|
|
45
|
+
Do the work directly:
|
|
46
|
+
|
|
47
|
+
1. Read the relevant file(s)
|
|
48
|
+
2. Make the change(s)
|
|
49
|
+
3. Verify the change works (run existing tests if applicable, or do a quick sanity check)
|
|
50
|
+
|
|
51
|
+
**No PLAN.md.** Just do it.
|
|
52
|
+
</step>
|
|
53
|
+
|
|
54
|
+
<step name="commit">
|
|
55
|
+
Commit the change atomically:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
git add -A
|
|
59
|
+
git commit -m "fix: {concise description of what changed}"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Use conventional commit format: `fix:`, `feat:`, `docs:`, `chore:`, `refactor:` as appropriate.
|
|
63
|
+
</step>
|
|
64
|
+
|
|
65
|
+
<step name="log_to_state">
|
|
66
|
+
If `.planning/STATE.md` exists and has a "Quick Tasks Completed" table, append a row
|
|
67
|
+
that matches the existing table's schema. If no table exists, skip silently.
|
|
68
|
+
If the table's schema is unrecognized, skip with a brief log rather than append a
|
|
69
|
+
malformed row.
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
# Detect whether STATE.md has a Quick Tasks Completed table
|
|
73
|
+
if grep -q "Quick Tasks Completed" .planning/STATE.md 2>/dev/null; then
|
|
74
|
+
# Read the table header line to determine the column schema.
|
|
75
|
+
# quick.md Step 7 creates a 5-column table:
|
|
76
|
+
# | # | Description | Date | Commit | Directory |
|
|
77
|
+
# Count pipe characters in the header to determine column count.
|
|
78
|
+
HEADER_LINE=$(grep -A2 "Quick Tasks Completed" .planning/STATE.md 2>/dev/null | grep "^|" | head -1)
|
|
79
|
+
# Count columns: number of | separators minus 1 gives column count
|
|
80
|
+
COL_COUNT=$(echo "$HEADER_LINE" | awk -F'|' '{print NF-1}')
|
|
81
|
+
|
|
82
|
+
if [ "$COL_COUNT" -eq 5 ] && echo "$HEADER_LINE" | grep -qi "Description" && echo "$HEADER_LINE" | grep -qi "Commit" && echo "$HEADER_LINE" | grep -qi "Directory"; then
|
|
83
|
+
# 5-column schema from quick.md Step 7: | # | Description | Date | Commit | Directory |
|
|
84
|
+
# Determine the next row number by counting existing data rows (non-separator, non-header).
|
|
85
|
+
NEXT_NUM=$(awk '/Quick Tasks Completed/{found=1} found && /^\|/ && !/^[|][-: |]*[|]$/ && !/Description/{count++} END{print count+1}' .planning/STATE.md 2>/dev/null || echo "1")
|
|
86
|
+
# Get the latest commit hash (short)
|
|
87
|
+
COMMIT_HASH=$(git rev-parse --short HEAD 2>/dev/null || echo "—")
|
|
88
|
+
echo "| $NEXT_NUM | $TASK | $(date +%Y-%m-%d) | $COMMIT_HASH | — |" >> .planning/STATE.md
|
|
89
|
+
else
|
|
90
|
+
# Unrecognized table schema — skip to avoid appending a malformed row.
|
|
91
|
+
echo "⚠ fast.md log_to_state: Quick Tasks Completed table has unrecognized schema (${COL_COUNT} columns); skipping STATE.md update."
|
|
92
|
+
fi
|
|
93
|
+
fi
|
|
94
|
+
```
|
|
95
|
+
</step>
|
|
96
|
+
|
|
97
|
+
<step name="done">
|
|
98
|
+
Report completion:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
✅ Done: {what was changed}
|
|
102
|
+
Commit: {short hash}
|
|
103
|
+
Files: {list of changed files}
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
No next-step suggestions. No workflow routing. Just done.
|
|
107
|
+
</step>
|
|
108
|
+
|
|
109
|
+
</process>
|
|
110
|
+
|
|
111
|
+
<guardrails>
|
|
112
|
+
- NEVER spawn a Task/subagent — this runs inline
|
|
113
|
+
- NEVER create PLAN.md or SUMMARY.md files
|
|
114
|
+
- NEVER run research or plan-checking
|
|
115
|
+
- If the task takes more than 3 file edits, STOP and redirect to /gsd:quick
|
|
116
|
+
- If you're unsure how to implement it, STOP and redirect to /gsd:quick
|
|
117
|
+
</guardrails>
|
|
118
|
+
|
|
119
|
+
<success_criteria>
|
|
120
|
+
- [ ] Task completed in current context (no subagents)
|
|
121
|
+
- [ ] Atomic git commit with conventional message
|
|
122
|
+
- [ ] STATE.md updated if it exists
|
|
123
|
+
- [ ] Total operation under 2 minutes wall time
|
|
124
|
+
</success_criteria>
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
# Forensics Workflow
|
|
2
|
+
|
|
3
|
+
Post-mortem investigation for failed or stuck GSD workflows. Analyzes git history,
|
|
4
|
+
`.planning/` artifacts, and file system state to detect anomalies and generate a
|
|
5
|
+
structured diagnostic report.
|
|
6
|
+
|
|
7
|
+
**Principle:** This is a read-only investigation. Do not modify project files.
|
|
8
|
+
Only write the forensic report.
|
|
9
|
+
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
## Step 1: Get Problem Description
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
PROBLEM="$ARGUMENTS"
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
If `$ARGUMENTS` is empty, ask the user:
|
|
19
|
+
> "What went wrong? Describe the issue — e.g., 'autonomous mode got stuck on phase 3',
|
|
20
|
+
> 'execute-phase failed silently', 'costs seem unusually high'."
|
|
21
|
+
|
|
22
|
+
Record the problem description for the report.
|
|
23
|
+
|
|
24
|
+
## Step 2: Gather Evidence
|
|
25
|
+
|
|
26
|
+
Collect data from all available sources. Missing sources are fine — adapt to what exists.
|
|
27
|
+
|
|
28
|
+
### 2a. Git History
|
|
29
|
+
|
|
30
|
+
```bash
|
|
31
|
+
# Recent commits (last 30)
|
|
32
|
+
git log --oneline -30
|
|
33
|
+
|
|
34
|
+
# Commits with timestamps for gap analysis
|
|
35
|
+
git log --format="%H %ai %s" -30
|
|
36
|
+
|
|
37
|
+
# Files changed in recent commits (detect repeated edits)
|
|
38
|
+
git log --name-only --format="" -20 | sort | uniq -c | sort -rn | head -20
|
|
39
|
+
|
|
40
|
+
# Uncommitted work
|
|
41
|
+
git status --short
|
|
42
|
+
git diff --stat
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Record:
|
|
46
|
+
- Commit timeline (dates, messages, frequency)
|
|
47
|
+
- Most-edited files (potential stuck-loop indicator)
|
|
48
|
+
- Uncommitted changes (potential crash/interruption indicator)
|
|
49
|
+
|
|
50
|
+
### 2b. Planning State
|
|
51
|
+
|
|
52
|
+
Read these files if they exist:
|
|
53
|
+
- `.planning/STATE.md` — current milestone, phase, progress, blockers, last session
|
|
54
|
+
- `.planning/ROADMAP.md` — phase list with status
|
|
55
|
+
- `.planning/config.json` — workflow configuration
|
|
56
|
+
|
|
57
|
+
Extract:
|
|
58
|
+
- Current phase and its status
|
|
59
|
+
- Last recorded session stop point
|
|
60
|
+
- Any blockers or flags
|
|
61
|
+
|
|
62
|
+
### 2c. Phase Artifacts
|
|
63
|
+
|
|
64
|
+
For each phase directory in `.planning/phases/*/`:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
ls .planning/phases/*/
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
For each phase, check which artifacts exist:
|
|
71
|
+
- `{padded}-PLAN.md` or `{padded}-PLAN-*.md` (execution plans)
|
|
72
|
+
- `{padded}-SUMMARY.md` (completion summary)
|
|
73
|
+
- `{padded}-VERIFICATION.md` (quality verification)
|
|
74
|
+
- `{padded}-CONTEXT.md` (design decisions)
|
|
75
|
+
- `{padded}-RESEARCH.md` (pre-planning research)
|
|
76
|
+
|
|
77
|
+
Track: which phases have complete artifact sets vs gaps.
|
|
78
|
+
|
|
79
|
+
### 2d. Session Reports
|
|
80
|
+
|
|
81
|
+
Read `.planning/reports/SESSION_REPORT.md` if it exists — extract last session outcomes,
|
|
82
|
+
work completed, token estimates.
|
|
83
|
+
|
|
84
|
+
### 2e. Git Worktree State
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
git worktree list
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
Check for orphaned worktrees (from crashed agents).
|
|
91
|
+
|
|
92
|
+
## Step 3: Detect Anomalies
|
|
93
|
+
|
|
94
|
+
Evaluate the gathered evidence against these anomaly patterns:
|
|
95
|
+
|
|
96
|
+
### Stuck Loop Detection
|
|
97
|
+
|
|
98
|
+
**Signal:** Same file appears in 3+ consecutive commits within a short time window.
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
# Look for files committed repeatedly in sequence
|
|
102
|
+
git log --name-only --format="---COMMIT---" -20
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Parse commit boundaries. If any file appears in 3+ consecutive commits, flag as:
|
|
106
|
+
- **Confidence HIGH** if the commit messages are similar (e.g., "fix:", "fix:", "fix:" on same file)
|
|
107
|
+
- **Confidence MEDIUM** if the file appears frequently but commit messages vary
|
|
108
|
+
|
|
109
|
+
### Missing Artifact Detection
|
|
110
|
+
|
|
111
|
+
**Signal:** Phase appears complete (has commits, is past in roadmap) but lacks expected artifacts.
|
|
112
|
+
|
|
113
|
+
For each phase that should be complete:
|
|
114
|
+
- PLAN.md missing → planning step was skipped
|
|
115
|
+
- SUMMARY.md missing → phase was not properly closed
|
|
116
|
+
- VERIFICATION.md missing → quality check was skipped
|
|
117
|
+
|
|
118
|
+
### Partial-plan Drift Detection
|
|
119
|
+
|
|
120
|
+
**Signal:** commits exist but SUMMARY.md is missing for the current or recently
|
|
121
|
+
active plan.
|
|
122
|
+
|
|
123
|
+
Run the same comparison as the execute-phase safe-resume verifier: identify the
|
|
124
|
+
active plan from STATE.md/phase artifacts, search git history for that plan id,
|
|
125
|
+
then compare against the expected SUMMARY.md path. If production commits exist
|
|
126
|
+
but SUMMARY.md is missing, flag a high-confidence partial-plan drift anomaly.
|
|
127
|
+
This usually means an executor was interrupted after implementation commits but
|
|
128
|
+
before atomic close-out.
|
|
129
|
+
|
|
130
|
+
### Abandoned Work Detection
|
|
131
|
+
|
|
132
|
+
**Signal:** Large gap between last commit and current time, with STATE.md showing mid-execution.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
# Time since last commit
|
|
136
|
+
git log -1 --format="%ai"
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
If STATE.md shows an active phase but the last commit is >2 hours old and there are
|
|
140
|
+
uncommitted changes, flag as potential abandonment or crash.
|
|
141
|
+
|
|
142
|
+
### Crash/Interruption Detection
|
|
143
|
+
|
|
144
|
+
**Signal:** Uncommitted changes + STATE.md shows mid-execution + orphaned worktrees.
|
|
145
|
+
|
|
146
|
+
Combine:
|
|
147
|
+
- `git status` shows modified/staged files
|
|
148
|
+
- STATE.md has an active execution entry
|
|
149
|
+
- `git worktree list` shows worktrees beyond the main one
|
|
150
|
+
|
|
151
|
+
### Scope Drift Detection
|
|
152
|
+
|
|
153
|
+
**Signal:** Recent commits touch files outside the current phase's expected scope.
|
|
154
|
+
|
|
155
|
+
Read the current phase PLAN.md to determine expected file paths. Compare against
|
|
156
|
+
files actually modified in recent commits. Flag any files that are clearly outside
|
|
157
|
+
the phase's domain.
|
|
158
|
+
|
|
159
|
+
### Test Regression Detection
|
|
160
|
+
|
|
161
|
+
**Signal:** Commit messages containing "fix test", "revert", or re-commits of test files.
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
git log --oneline -20 | grep -iE "fix test|revert|broken|regression|fail"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Step 4: Generate Report
|
|
168
|
+
|
|
169
|
+
Create the forensics directory if needed:
|
|
170
|
+
```bash
|
|
171
|
+
mkdir -p .planning/forensics
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
Write to `.planning/forensics/report-$(date +%Y%m%d-%H%M%S).md`:
|
|
175
|
+
|
|
176
|
+
```markdown
|
|
177
|
+
# Forensic Report
|
|
178
|
+
|
|
179
|
+
**Generated:** {ISO timestamp}
|
|
180
|
+
**Problem:** {user's description}
|
|
181
|
+
|
|
182
|
+
---
|
|
183
|
+
|
|
184
|
+
## Evidence Summary
|
|
185
|
+
|
|
186
|
+
### Git Activity
|
|
187
|
+
- **Last commit:** {date} — "{message}"
|
|
188
|
+
- **Commits (last 30):** {count}
|
|
189
|
+
- **Time span:** {earliest} → {latest}
|
|
190
|
+
- **Uncommitted changes:** {yes/no — list if yes}
|
|
191
|
+
- **Active worktrees:** {count — list if >1}
|
|
192
|
+
|
|
193
|
+
### Planning State
|
|
194
|
+
- **Current milestone:** {version or "none"}
|
|
195
|
+
- **Current phase:** {number — name — status}
|
|
196
|
+
- **Last session:** {stopped_at from STATE.md}
|
|
197
|
+
- **Blockers:** {any flags from STATE.md}
|
|
198
|
+
|
|
199
|
+
### Artifact Completeness
|
|
200
|
+
| Phase | PLAN | CONTEXT | RESEARCH | SUMMARY | VERIFICATION |
|
|
201
|
+
|-------|------|---------|----------|---------|-------------|
|
|
202
|
+
{for each phase: name | ✅/❌ per artifact}
|
|
203
|
+
|
|
204
|
+
## Anomalies Detected
|
|
205
|
+
|
|
206
|
+
### {Anomaly Type} — {Confidence: HIGH/MEDIUM/LOW}
|
|
207
|
+
**Evidence:** {specific commits, files, or state data}
|
|
208
|
+
**Interpretation:** {what this likely means}
|
|
209
|
+
|
|
210
|
+
{repeat for each anomaly found}
|
|
211
|
+
|
|
212
|
+
## Root Cause Hypothesis
|
|
213
|
+
|
|
214
|
+
Based on the evidence above, the most likely explanation is:
|
|
215
|
+
|
|
216
|
+
{1-3 sentence hypothesis grounded in the anomalies}
|
|
217
|
+
|
|
218
|
+
## Recommended Actions
|
|
219
|
+
|
|
220
|
+
1. {Specific, actionable remediation step}
|
|
221
|
+
2. {Another step if applicable}
|
|
222
|
+
3. {Recovery command if applicable — e.g., `/gsd:resume-work`, `/gsd:execute-phase N`}
|
|
223
|
+
|
|
224
|
+
---
|
|
225
|
+
|
|
226
|
+
*Report generated by `/gsd:forensics`. All paths redacted for portability.*
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**Redaction rules:**
|
|
230
|
+
- Replace absolute paths with relative paths (strip `$HOME` prefix)
|
|
231
|
+
- Remove any API keys, tokens, or credentials found in git diff output
|
|
232
|
+
- Truncate large diffs to first 50 lines
|
|
233
|
+
|
|
234
|
+
## Step 5: Present Report
|
|
235
|
+
|
|
236
|
+
Display the full forensic report inline.
|
|
237
|
+
|
|
238
|
+
## Step 6: Offer Interactive Investigation
|
|
239
|
+
|
|
240
|
+
> "Report saved to `.planning/forensics/report-{timestamp}.md`.
|
|
241
|
+
>
|
|
242
|
+
> I can dig deeper into any finding. Want me to:
|
|
243
|
+
> - Trace a specific anomaly to its root cause?
|
|
244
|
+
> - Read specific files referenced in the evidence?
|
|
245
|
+
> - Check if a similar issue has been reported before?"
|
|
246
|
+
|
|
247
|
+
If the user asks follow-up questions, answer from the evidence already gathered.
|
|
248
|
+
Read additional files only if specifically needed.
|
|
249
|
+
|
|
250
|
+
## Step 7: Offer Issue Creation
|
|
251
|
+
|
|
252
|
+
If actionable anomalies were found (HIGH or MEDIUM confidence):
|
|
253
|
+
|
|
254
|
+
> "Want me to create a GitHub issue for this? I'll format the findings and redact paths."
|
|
255
|
+
|
|
256
|
+
If confirmed:
|
|
257
|
+
```bash
|
|
258
|
+
# Check if "bug" label exists before using it
|
|
259
|
+
BUG_LABEL=$(gh label list --repo open-gsd/gsd-core --search "bug" --json name -q '.[0].name' 2>/dev/null)
|
|
260
|
+
LABEL_FLAG=""
|
|
261
|
+
if [ -n "$BUG_LABEL" ]; then
|
|
262
|
+
LABEL_FLAG="--label bug"
|
|
263
|
+
fi
|
|
264
|
+
|
|
265
|
+
gh issue create \
|
|
266
|
+
--repo open-gsd/gsd-core \
|
|
267
|
+
--title "bug: {concise description from anomaly}" \
|
|
268
|
+
$LABEL_FLAG \
|
|
269
|
+
--body "{formatted findings from report}"
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
## Step 8: Update STATE.md
|
|
273
|
+
|
|
274
|
+
```bash
|
|
275
|
+
_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
|
|
276
|
+
gsd_run query state.record-session "" \
|
|
277
|
+
"Forensic investigation complete" \
|
|
278
|
+
".planning/forensics/report-{timestamp}.md"
|
|
279
|
+
```
|