@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,356 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Create a pull request from completed phase/milestone work, generate a rich PR body from planning artifacts, optionally run code review, and prepare for merge. Closes the plan → execute → verify → ship loop.
|
|
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="initialize">
|
|
12
|
+
Parse arguments and load project state:
|
|
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.phase-op "${PHASE_ARG}")
|
|
17
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
Parse from init JSON: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `padded_phase`, `commit_docs`.
|
|
21
|
+
|
|
22
|
+
Also load config for branching strategy:
|
|
23
|
+
```bash
|
|
24
|
+
CONFIG=$(gsd_run query state.load)
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
Extract: `branching_strategy`, `branch_name`.
|
|
28
|
+
|
|
29
|
+
Detect base branch for PRs and merges:
|
|
30
|
+
```bash
|
|
31
|
+
BASE_BRANCH=$(gsd_run query config-get git.base_branch 2>/dev/null || echo "")
|
|
32
|
+
if [ -z "$BASE_BRANCH" ] || [ "$BASE_BRANCH" = "null" ]; then
|
|
33
|
+
BASE_BRANCH=$(git symbolic-ref refs/remotes/origin/HEAD 2>/dev/null | sed 's|^refs/remotes/origin/||')
|
|
34
|
+
BASE_BRANCH="${BASE_BRANCH:-main}"
|
|
35
|
+
fi
|
|
36
|
+
```
|
|
37
|
+
</step>
|
|
38
|
+
|
|
39
|
+
<step name="preflight_checks">
|
|
40
|
+
Verify the work is ready to ship:
|
|
41
|
+
|
|
42
|
+
1. **Verification passed?**
|
|
43
|
+
```bash
|
|
44
|
+
VERIFICATION=$(cat ${PHASE_DIR}/*-VERIFICATION.md 2>/dev/null)
|
|
45
|
+
```
|
|
46
|
+
Check for `status: pass` or `status: passed`.
|
|
47
|
+
If no VERIFICATION.md or status is anything other than `pass` / `passed` (including `human_needed` / `gaps_found`): block with `PHASE_VERIFICATION_INCOMPLETE`; complete or formally re-run verification before shipping.
|
|
48
|
+
|
|
49
|
+
2. **Clean working tree?**
|
|
50
|
+
```bash
|
|
51
|
+
git status --short
|
|
52
|
+
```
|
|
53
|
+
If uncommitted changes exist: ask user to commit or stash first.
|
|
54
|
+
|
|
55
|
+
3. **On correct branch?**
|
|
56
|
+
```bash
|
|
57
|
+
CURRENT_BRANCH=$(git branch --show-current)
|
|
58
|
+
```
|
|
59
|
+
If on `${BASE_BRANCH}`: warn — should be on a feature branch.
|
|
60
|
+
If branching_strategy is `none`: offer to create a branch now.
|
|
61
|
+
|
|
62
|
+
4. **Remote configured?**
|
|
63
|
+
```bash
|
|
64
|
+
git remote -v | head -2
|
|
65
|
+
```
|
|
66
|
+
Detect `origin` remote. If no remote: error — can't create PR.
|
|
67
|
+
|
|
68
|
+
5. **`gh` CLI available?**
|
|
69
|
+
```bash
|
|
70
|
+
which gh && gh auth status 2>&1
|
|
71
|
+
```
|
|
72
|
+
If `gh` not found or not authenticated: provide setup instructions and exit.
|
|
73
|
+
</step>
|
|
74
|
+
|
|
75
|
+
<step name="push_branch">
|
|
76
|
+
Push the current branch to remote:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
git push origin ${CURRENT_BRANCH} 2>&1
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
If push fails (e.g., no upstream): set upstream:
|
|
83
|
+
```bash
|
|
84
|
+
git push --set-upstream origin ${CURRENT_BRANCH} 2>&1
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
Report: "Pushed `{branch}` to origin ({commit_count} commits ahead of ${BASE_BRANCH})"
|
|
88
|
+
</step>
|
|
89
|
+
|
|
90
|
+
<step name="generate_pr_body">
|
|
91
|
+
Auto-generate a rich PR body from planning artifacts:
|
|
92
|
+
|
|
93
|
+
**1. Title:**
|
|
94
|
+
```
|
|
95
|
+
Phase {phase_number}: {phase_name}
|
|
96
|
+
```
|
|
97
|
+
Or for milestone: `Milestone {version}: {name}`
|
|
98
|
+
|
|
99
|
+
**2. Summary section:**
|
|
100
|
+
Read ROADMAP.md for phase goal. Read VERIFICATION.md for verification status.
|
|
101
|
+
|
|
102
|
+
```markdown
|
|
103
|
+
## Summary
|
|
104
|
+
|
|
105
|
+
**Phase {N}: {Name}**
|
|
106
|
+
**Goal:** {goal from ROADMAP.md}
|
|
107
|
+
**Status:** Verified ✓
|
|
108
|
+
|
|
109
|
+
{One paragraph synthesized from SUMMARY.md files — what was built}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**3. Changes section:**
|
|
113
|
+
For each SUMMARY.md in the phase directory:
|
|
114
|
+
```markdown
|
|
115
|
+
## Changes
|
|
116
|
+
|
|
117
|
+
### Plan {plan_id}: {plan_name}
|
|
118
|
+
{one_liner from SUMMARY.md frontmatter}
|
|
119
|
+
|
|
120
|
+
**Key files:**
|
|
121
|
+
{key-files.created and key-files.modified from SUMMARY.md frontmatter}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
**4. Requirements section:**
|
|
125
|
+
```markdown
|
|
126
|
+
## Requirements Addressed
|
|
127
|
+
|
|
128
|
+
{REQ-IDs from plan frontmatter, linked to REQUIREMENTS.md descriptions}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
**5. Testing section:**
|
|
132
|
+
```markdown
|
|
133
|
+
## Verification
|
|
134
|
+
|
|
135
|
+
- [x] Automated verification: {pass/fail from VERIFICATION.md}
|
|
136
|
+
- {human verification items from VERIFICATION.md, if any}
|
|
137
|
+
```
|
|
138
|
+
|
|
139
|
+
**6. Decisions section:**
|
|
140
|
+
```markdown
|
|
141
|
+
## Key Decisions
|
|
142
|
+
|
|
143
|
+
{Decisions from STATE.md accumulated context relevant to this phase}
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
**7. Configured project sections:**
|
|
147
|
+
Read append-only project-specific PRD/PR body sections from config:
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
CUSTOM_PR_SECTIONS=$(gsd_run query config-get ship.pr_body_sections --default '[]' 2>/dev/null || echo '[]')
|
|
151
|
+
```
|
|
152
|
+
|
|
153
|
+
`ship.pr_body_sections` is an onboarding-time extension point for teams that need extra PRD-style sections such as `User Stories & Acceptance Criteria`, `Risks & Dependencies`, `Success Metrics`, `Release Criteria`, or `Stakeholder Review & Approval`.
|
|
154
|
+
|
|
155
|
+
Use these sections for lean/agile PRD material that should travel with the PR without making the core `/gsd:ship` body configurable:
|
|
156
|
+
|
|
157
|
+
- User stories and acceptance criteria that explain the functional increment from the user's point of view.
|
|
158
|
+
- Definition of Done or release criteria that make the completion standard explicit.
|
|
159
|
+
- Risks, dependencies, stakeholder review, and traceability notes needed by regulated or approval-heavy projects.
|
|
160
|
+
|
|
161
|
+
Rules:
|
|
162
|
+
|
|
163
|
+
- Treat configured sections as append-only. They are rendered after `Key Decisions` and cannot replace, remove, or reorder the required core sections: `Summary`, `Changes`, `Requirements Addressed`, `Verification`, and `Key Decisions`.
|
|
164
|
+
- Each entry must have `heading` plus at least one of `source`, `template`, or `fallback`.
|
|
165
|
+
- `enabled` defaults to `true`; when `enabled` is `false`, skip the section without warning. This lets onboarding seed optional sections that a project can enable later.
|
|
166
|
+
- `source` is a fallback chain of planning artifact headings: `PLAN.md ## Risks || VERIFICATION.md ## Manual Checks`. Allowed artifacts are `ROADMAP.md`, `PLAN.md`, `SUMMARY.md`, `VERIFICATION.md`, `STATE.md`, `REQUIREMENTS.md`, and `CONTEXT.md`.
|
|
167
|
+
- `template` is literal Markdown with a closed token namespace only: `{phase_number}`, `{phase_name}`, `{phase_dir}`, `{base_branch}`, `{padded_phase}`.
|
|
168
|
+
- `fallback` is literal Markdown used when `source` finds no content and no `template` is present.
|
|
169
|
+
- Omit sections whose final rendered body is empty after trimming.
|
|
170
|
+
|
|
171
|
+
Example configured sections:
|
|
172
|
+
|
|
173
|
+
```json
|
|
174
|
+
[
|
|
175
|
+
{
|
|
176
|
+
"heading": "User Stories & Acceptance Criteria",
|
|
177
|
+
"enabled": true,
|
|
178
|
+
"source": "REQUIREMENTS.md ## User Stories || REQUIREMENTS.md ## Acceptance Criteria",
|
|
179
|
+
"fallback": "- Acceptance criteria are covered by the linked requirements and verification evidence."
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
"heading": "Risks & Dependencies",
|
|
183
|
+
"enabled": true,
|
|
184
|
+
"source": "PLAN.md ## Risks || PLAN.md ## Dependencies",
|
|
185
|
+
"fallback": "- No known high-risk rollout dependencies."
|
|
186
|
+
},
|
|
187
|
+
{
|
|
188
|
+
"heading": "Stakeholder Review & Approval",
|
|
189
|
+
"enabled": false,
|
|
190
|
+
"template": "- Product owner approval pending for {phase_name}."
|
|
191
|
+
}
|
|
192
|
+
]
|
|
193
|
+
```
|
|
194
|
+
</step>
|
|
195
|
+
|
|
196
|
+
<step name="create_pr">
|
|
197
|
+
Create the PR using the generated body. Write the body to a temp file first so large generated PRD sections do not hit shell argument limits:
|
|
198
|
+
|
|
199
|
+
```bash
|
|
200
|
+
PR_BODY_FILE=$(mktemp "${TMPDIR:-/tmp}/gsd-pr-body.XXXXXX.md")
|
|
201
|
+
trap 'rm -f "${PR_BODY_FILE:-}"' EXIT
|
|
202
|
+
printf '%s\n' "${PR_BODY}" > "${PR_BODY_FILE}"
|
|
203
|
+
|
|
204
|
+
gh pr create \
|
|
205
|
+
--title "Phase ${PHASE_NUMBER}: ${PHASE_NAME}" \
|
|
206
|
+
--body-file "${PR_BODY_FILE}" \
|
|
207
|
+
--base "${BASE_BRANCH}"
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
If `--draft` flag was passed: add `--draft`.
|
|
211
|
+
|
|
212
|
+
Report: "PR #{number} created: {url}"
|
|
213
|
+
</step>
|
|
214
|
+
|
|
215
|
+
<step name="optional_review">
|
|
216
|
+
|
|
217
|
+
**External code review command (automated sub-step):**
|
|
218
|
+
|
|
219
|
+
Before prompting the user, check if an external review command is configured:
|
|
220
|
+
|
|
221
|
+
```bash
|
|
222
|
+
REVIEW_CMD=$(gsd_run query config-get workflow.code_review_command 2>/dev/null | jq -r '.' 2>/dev/null || echo "")
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
If `REVIEW_CMD` is non-empty and not `"null"`, run the external review:
|
|
226
|
+
|
|
227
|
+
1. **Generate diff and stats:**
|
|
228
|
+
```bash
|
|
229
|
+
DIFF=$(git diff ${BASE_BRANCH}...HEAD)
|
|
230
|
+
DIFF_STATS=$(git diff --stat ${BASE_BRANCH}...HEAD)
|
|
231
|
+
```
|
|
232
|
+
|
|
233
|
+
2. **Load phase context from STATE.md:**
|
|
234
|
+
```bash
|
|
235
|
+
STATE_STATUS=$(gsd_run query state.load 2>/dev/null | head -20)
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
3. **Build review prompt and pipe to command via stdin:**
|
|
239
|
+
Construct a review prompt containing the diff, diff stats, and phase context, then pipe it to the configured command:
|
|
240
|
+
```bash
|
|
241
|
+
REVIEW_PROMPT="You are reviewing a pull request.\n\nDiff stats:\n${DIFF_STATS}\n\nPhase context:\n${STATE_STATUS}\n\nFull diff:\n${DIFF}\n\nRespond with JSON: { \"verdict\": \"APPROVED\" or \"REVISE\", \"confidence\": 0-100, \"summary\": \"...\", \"issues\": [{\"severity\": \"...\", \"file\": \"...\", \"line_range\": \"...\", \"description\": \"...\", \"suggestion\": \"...\"}] }"
|
|
242
|
+
REVIEW_OUTPUT=$(echo "${REVIEW_PROMPT}" | timeout 120 ${REVIEW_CMD} 2>/tmp/gsd-review-stderr.log)
|
|
243
|
+
REVIEW_EXIT=$?
|
|
244
|
+
```
|
|
245
|
+
|
|
246
|
+
4. **Handle timeout (120s) and failure:**
|
|
247
|
+
If `REVIEW_EXIT` is non-zero or the command times out:
|
|
248
|
+
```bash
|
|
249
|
+
if [ $REVIEW_EXIT -ne 0 ]; then
|
|
250
|
+
REVIEW_STDERR=$(cat /tmp/gsd-review-stderr.log 2>/dev/null)
|
|
251
|
+
echo "WARNING: External review command failed (exit ${REVIEW_EXIT}). stderr: ${REVIEW_STDERR}"
|
|
252
|
+
echo "Continuing with manual review flow..."
|
|
253
|
+
fi
|
|
254
|
+
```
|
|
255
|
+
On failure, warn with stderr output and fall through to the manual review flow below.
|
|
256
|
+
|
|
257
|
+
5. **Parse JSON result:**
|
|
258
|
+
If the command succeeded, parse the JSON output and report the verdict:
|
|
259
|
+
```bash
|
|
260
|
+
# Parse verdict and summary from REVIEW_OUTPUT JSON
|
|
261
|
+
VERDICT=$(echo "${REVIEW_OUTPUT}" | node -e "
|
|
262
|
+
let d=''; process.stdin.on('data',c=>d+=c); process.stdin.on('end',()=>{
|
|
263
|
+
try { const r=JSON.parse(d); console.log(r.verdict); }
|
|
264
|
+
catch(e) { console.log('INVALID_JSON'); }
|
|
265
|
+
});
|
|
266
|
+
")
|
|
267
|
+
```
|
|
268
|
+
- If `verdict` is `"APPROVED"`: report approval with confidence and summary.
|
|
269
|
+
- If `verdict` is `"REVISE"`: report issues found, list each issue with severity, file, line_range, description, and suggestion.
|
|
270
|
+
- If JSON is invalid (`INVALID_JSON`): warn "External review returned invalid JSON" with stderr and continue.
|
|
271
|
+
|
|
272
|
+
Regardless of the external review result, fall through to the manual review options below.
|
|
273
|
+
|
|
274
|
+
---
|
|
275
|
+
|
|
276
|
+
**Manual review options:**
|
|
277
|
+
|
|
278
|
+
Ask if user wants to trigger a code review:
|
|
279
|
+
|
|
280
|
+
|
|
281
|
+
**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.
|
|
282
|
+
|
|
283
|
+
```
|
|
284
|
+
AskUserQuestion:
|
|
285
|
+
question: "PR created. Run a code review before merge?"
|
|
286
|
+
options:
|
|
287
|
+
- label: "Skip review"
|
|
288
|
+
description: "PR is ready — merge when CI passes"
|
|
289
|
+
- label: "Self-review"
|
|
290
|
+
description: "I'll review the diff in the PR myself"
|
|
291
|
+
- label: "Request review"
|
|
292
|
+
description: "Request review from a teammate"
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
**If "Request review":**
|
|
296
|
+
```bash
|
|
297
|
+
gh pr edit ${PR_NUMBER} --add-reviewer "${REVIEWER}"
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
**If "Self-review":**
|
|
301
|
+
Report the PR URL and suggest: "Review the diff at {url}/files"
|
|
302
|
+
</step>
|
|
303
|
+
|
|
304
|
+
<step name="track_shipping">
|
|
305
|
+
Update STATE.md to reflect the shipping action:
|
|
306
|
+
|
|
307
|
+
```bash
|
|
308
|
+
gsd_run query state.update "Last Activity" "$(date +%Y-%m-%d)"
|
|
309
|
+
gsd_run query state.update "Status" "Phase ${PHASE_NUMBER} shipped — PR #${PR_NUMBER}"
|
|
310
|
+
```
|
|
311
|
+
|
|
312
|
+
If `commit_docs` is true:
|
|
313
|
+
```bash
|
|
314
|
+
gsd_run query commit "docs(${padded_phase}): ship phase ${PHASE_NUMBER} — PR #${PR_NUMBER}" --files .planning/STATE.md
|
|
315
|
+
```
|
|
316
|
+
</step>
|
|
317
|
+
|
|
318
|
+
<step name="report">
|
|
319
|
+
```
|
|
320
|
+
───────────────────────────────────────────────────────────────
|
|
321
|
+
|
|
322
|
+
## ✓ Phase {X}: {Name} — Shipped
|
|
323
|
+
|
|
324
|
+
PR: #{number} ({url})
|
|
325
|
+
Branch: {branch} → ${BASE_BRANCH}
|
|
326
|
+
Commits: {count}
|
|
327
|
+
Verification: ✓ Passed
|
|
328
|
+
Requirements: {N} REQ-IDs addressed
|
|
329
|
+
|
|
330
|
+
Next steps:
|
|
331
|
+
- Review/approve PR
|
|
332
|
+
- Merge when CI passes
|
|
333
|
+
- /gsd:complete-milestone (if last phase in milestone)
|
|
334
|
+
- /gsd:progress (to see what's next)
|
|
335
|
+
|
|
336
|
+
───────────────────────────────────────────────────────────────
|
|
337
|
+
```
|
|
338
|
+
</step>
|
|
339
|
+
|
|
340
|
+
</process>
|
|
341
|
+
|
|
342
|
+
<offer_next>
|
|
343
|
+
After shipping:
|
|
344
|
+
|
|
345
|
+
- /gsd:complete-milestone — if all phases in milestone are done
|
|
346
|
+
- /gsd:progress — see overall project state
|
|
347
|
+
- /gsd:execute-phase {next} — continue to next phase
|
|
348
|
+
</offer_next>
|
|
349
|
+
|
|
350
|
+
<success_criteria>
|
|
351
|
+
- [ ] Preflight checks passed (verification, clean tree, branch, remote, gh)
|
|
352
|
+
- [ ] Branch pushed to remote
|
|
353
|
+
- [ ] PR created with rich auto-generated body
|
|
354
|
+
- [ ] STATE.md updated with shipping status
|
|
355
|
+
- [ ] User knows PR number and next steps
|
|
356
|
+
</success_criteria>
|
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Curate sketch design findings and package them into a persistent project skill for future
|
|
3
|
+
UI implementation. Reads from `.planning/sketches/`, writes skill to `./.claude/skills/sketch-findings-[project]/`
|
|
4
|
+
(project-local) and summary to `.planning/sketches/WRAP-UP-SUMMARY.md`.
|
|
5
|
+
Companion to `/gsd:sketch`.
|
|
6
|
+
</purpose>
|
|
7
|
+
|
|
8
|
+
<required_reading>
|
|
9
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
10
|
+
</required_reading>
|
|
11
|
+
|
|
12
|
+
<process>
|
|
13
|
+
|
|
14
|
+
<step name="banner">
|
|
15
|
+
```
|
|
16
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
17
|
+
GSD ► SKETCH WRAP-UP
|
|
18
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
19
|
+
```
|
|
20
|
+
</step>
|
|
21
|
+
|
|
22
|
+
<step name="gather">
|
|
23
|
+
## Gather Sketch Inventory
|
|
24
|
+
|
|
25
|
+
1. Read `.planning/sketches/MANIFEST.md` for the design direction and reference points
|
|
26
|
+
2. Glob `.planning/sketches/*/README.md` and parse YAML frontmatter from each
|
|
27
|
+
3. Check if `./.claude/skills/sketch-findings-*/SKILL.md` exists for this project
|
|
28
|
+
- If yes: read its `processed_sketches` list and filter those out
|
|
29
|
+
- If no: all sketches are candidates
|
|
30
|
+
|
|
31
|
+
If no unprocessed sketches exist:
|
|
32
|
+
```
|
|
33
|
+
No unprocessed sketches found in `.planning/sketches/`.
|
|
34
|
+
Run `/gsd:sketch` first to create design explorations.
|
|
35
|
+
```
|
|
36
|
+
Exit.
|
|
37
|
+
|
|
38
|
+
Check `commit_docs` config:
|
|
39
|
+
```bash
|
|
40
|
+
_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
|
|
41
|
+
COMMIT_DOCS=$(gsd_run query config-get commit_docs 2>/dev/null || echo "true")
|
|
42
|
+
```
|
|
43
|
+
</step>
|
|
44
|
+
|
|
45
|
+
<step name="curate">
|
|
46
|
+
## Curate Sketches One-at-a-Time
|
|
47
|
+
|
|
48
|
+
Present each unprocessed sketch in ascending order. For each sketch, show:
|
|
49
|
+
|
|
50
|
+
- **Sketch number and name**
|
|
51
|
+
- **Design question:** from frontmatter
|
|
52
|
+
- **Winner:** which variant was selected (if any)
|
|
53
|
+
- **Tags:** from frontmatter
|
|
54
|
+
- **Key decisions:** summarize what was decided visually
|
|
55
|
+
|
|
56
|
+
Then ask the user:
|
|
57
|
+
|
|
58
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
59
|
+
║ CHECKPOINT: Decision Required ║
|
|
60
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
61
|
+
|
|
62
|
+
Sketch {NNN}: {name} — Winner: Variant {X}
|
|
63
|
+
|
|
64
|
+
{key design decisions summary}
|
|
65
|
+
|
|
66
|
+
──────────────────────────────────────────────────────────────
|
|
67
|
+
→ Include / Exclude / Partial / Let me look at it
|
|
68
|
+
──────────────────────────────────────────────────────────────
|
|
69
|
+
|
|
70
|
+
**If "Let me look at it":**
|
|
71
|
+
1. Provide: `open .planning/sketches/NNN-name/index.html`
|
|
72
|
+
2. Remind them which variant won and what to look for
|
|
73
|
+
3. After they've looked, return to the include/exclude/partial decision
|
|
74
|
+
|
|
75
|
+
**If "Partial":**
|
|
76
|
+
Ask what specifically to include or exclude from this sketch's decisions.
|
|
77
|
+
</step>
|
|
78
|
+
|
|
79
|
+
<step name="group">
|
|
80
|
+
## Auto-Group by Design Area
|
|
81
|
+
|
|
82
|
+
After all sketches are curated:
|
|
83
|
+
|
|
84
|
+
1. Read all included sketches' tags, names, and content
|
|
85
|
+
2. Propose design-area groupings, e.g.:
|
|
86
|
+
- "**Layout & Navigation** — sketches 001, 004"
|
|
87
|
+
- "**Form Controls** — sketches 002, 005"
|
|
88
|
+
- "**Color & Typography** — sketches 003"
|
|
89
|
+
3. Present the grouping for approval — user may merge, split, rename, or rearrange
|
|
90
|
+
|
|
91
|
+
Each group becomes one reference file in the generated skill.
|
|
92
|
+
</step>
|
|
93
|
+
|
|
94
|
+
<step name="skill_name">
|
|
95
|
+
## Determine Output Skill Name
|
|
96
|
+
|
|
97
|
+
Derive from the project directory name: `./.claude/skills/sketch-findings-[project-dir-name]/`
|
|
98
|
+
|
|
99
|
+
If a skill already exists at that path (append mode), update in place.
|
|
100
|
+
</step>
|
|
101
|
+
|
|
102
|
+
<step name="copy_sources">
|
|
103
|
+
## Copy Source Files
|
|
104
|
+
|
|
105
|
+
For each included sketch:
|
|
106
|
+
|
|
107
|
+
1. Copy the winning variant's HTML file (or the full index.html with all variants) into `sources/NNN-sketch-name/`
|
|
108
|
+
2. Copy the winning theme.css into `sources/themes/`
|
|
109
|
+
3. Exclude node_modules, build artifacts, .DS_Store
|
|
110
|
+
</step>
|
|
111
|
+
|
|
112
|
+
<step name="synthesize">
|
|
113
|
+
## Synthesize Reference Files
|
|
114
|
+
|
|
115
|
+
For each design-area group, write a reference file at `references/[design-area-name].md`:
|
|
116
|
+
|
|
117
|
+
```markdown
|
|
118
|
+
# [Design Area Name]
|
|
119
|
+
|
|
120
|
+
## Design Decisions
|
|
121
|
+
[For each validated decision: what was chosen, why it won over alternatives, the key visual properties (colors, spacing, border radius, typography)]
|
|
122
|
+
|
|
123
|
+
## CSS Patterns
|
|
124
|
+
[Key CSS snippets from winning variants — layout structures, component patterns, animation patterns. Extracted and cleaned up for reference.]
|
|
125
|
+
|
|
126
|
+
## HTML Structures
|
|
127
|
+
[Key HTML patterns from winning variants — page layout, component markup, navigation structures.]
|
|
128
|
+
|
|
129
|
+
## What to Avoid
|
|
130
|
+
[Design directions that were tried and rejected. Why they didn't work.]
|
|
131
|
+
|
|
132
|
+
## Origin
|
|
133
|
+
Synthesized from sketches: NNN, NNN
|
|
134
|
+
Source files available in: sources/NNN-sketch-name/
|
|
135
|
+
```
|
|
136
|
+
</step>
|
|
137
|
+
|
|
138
|
+
<step name="write_skill">
|
|
139
|
+
## Write SKILL.md
|
|
140
|
+
|
|
141
|
+
Create (or update) the generated skill's SKILL.md:
|
|
142
|
+
|
|
143
|
+
```markdown
|
|
144
|
+
---
|
|
145
|
+
name: sketch-findings-[project-dir-name]
|
|
146
|
+
description: Validated design decisions, CSS patterns, and visual direction from sketch experiments. Auto-loaded during UI implementation on [project-dir-name].
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
<context>
|
|
150
|
+
## Project: [project-dir-name]
|
|
151
|
+
|
|
152
|
+
[Design direction paragraph from MANIFEST.md]
|
|
153
|
+
[Reference points mentioned during intake]
|
|
154
|
+
|
|
155
|
+
Sketch sessions wrapped: [date(s)]
|
|
156
|
+
</context>
|
|
157
|
+
|
|
158
|
+
<design_direction>
|
|
159
|
+
## Overall Direction
|
|
160
|
+
|
|
161
|
+
[Summary of the validated visual direction: palette, typography, spacing system, layout approach, interaction patterns]
|
|
162
|
+
</design_direction>
|
|
163
|
+
|
|
164
|
+
<findings_index>
|
|
165
|
+
## Design Areas
|
|
166
|
+
|
|
167
|
+
| Area | Reference | Key Decision |
|
|
168
|
+
|------|-----------|--------------|
|
|
169
|
+
| [Name] | references/[name].md | [One-line summary] |
|
|
170
|
+
|
|
171
|
+
## Theme
|
|
172
|
+
|
|
173
|
+
The winning theme file is at `sources/themes/default.css`.
|
|
174
|
+
|
|
175
|
+
## Source Files
|
|
176
|
+
|
|
177
|
+
Original sketch HTML files are preserved in `sources/` for complete reference.
|
|
178
|
+
</findings_index>
|
|
179
|
+
|
|
180
|
+
<metadata>
|
|
181
|
+
## Processed Sketches
|
|
182
|
+
|
|
183
|
+
[List of sketch numbers wrapped up]
|
|
184
|
+
|
|
185
|
+
- 001-sketch-name
|
|
186
|
+
- 002-sketch-name
|
|
187
|
+
</metadata>
|
|
188
|
+
```
|
|
189
|
+
</step>
|
|
190
|
+
|
|
191
|
+
<step name="write_summary">
|
|
192
|
+
## Write Planning Summary
|
|
193
|
+
|
|
194
|
+
Write `.planning/sketches/WRAP-UP-SUMMARY.md` for project history:
|
|
195
|
+
|
|
196
|
+
```markdown
|
|
197
|
+
# Sketch Wrap-Up Summary
|
|
198
|
+
|
|
199
|
+
**Date:** [date]
|
|
200
|
+
**Sketches processed:** [count]
|
|
201
|
+
**Design areas:** [list]
|
|
202
|
+
**Skill output:** `./.claude/skills/sketch-findings-[project]/`
|
|
203
|
+
|
|
204
|
+
## Included Sketches
|
|
205
|
+
| # | Name | Winner | Design Area |
|
|
206
|
+
|---|------|--------|-------------|
|
|
207
|
+
|
|
208
|
+
## Excluded Sketches
|
|
209
|
+
| # | Name | Reason |
|
|
210
|
+
|---|------|--------|
|
|
211
|
+
|
|
212
|
+
## Design Direction
|
|
213
|
+
[consolidated design direction summary]
|
|
214
|
+
|
|
215
|
+
## Key Decisions
|
|
216
|
+
[layout, palette, typography, spacing, interaction patterns]
|
|
217
|
+
```
|
|
218
|
+
</step>
|
|
219
|
+
|
|
220
|
+
<step name="update_claude_md">
|
|
221
|
+
## Update Project CLAUDE.md
|
|
222
|
+
|
|
223
|
+
Add an auto-load routing line:
|
|
224
|
+
|
|
225
|
+
```
|
|
226
|
+
- **Sketch findings for [project]** (design decisions, CSS patterns, visual direction) → `Skill("sketch-findings-[project-dir-name]")`
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
If this routing line already exists (append mode), leave it as-is.
|
|
230
|
+
</step>
|
|
231
|
+
|
|
232
|
+
<step name="commit">
|
|
233
|
+
Commit all artifacts (if `COMMIT_DOCS` is true):
|
|
234
|
+
|
|
235
|
+
```bash
|
|
236
|
+
gsd_run query commit "docs(sketch-wrap-up): package [N] sketch findings into project skill" --files .planning/sketches/WRAP-UP-SUMMARY.md
|
|
237
|
+
```
|
|
238
|
+
</step>
|
|
239
|
+
|
|
240
|
+
<step name="report">
|
|
241
|
+
```
|
|
242
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
243
|
+
GSD ► SKETCH WRAP-UP COMPLETE ✓
|
|
244
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
245
|
+
|
|
246
|
+
**Curated:** {N} sketches ({included} included, {excluded} excluded)
|
|
247
|
+
**Design areas:** {list}
|
|
248
|
+
**Skill:** `./.claude/skills/sketch-findings-[project]/`
|
|
249
|
+
**Summary:** `.planning/sketches/WRAP-UP-SUMMARY.md`
|
|
250
|
+
**CLAUDE.md:** routing line added
|
|
251
|
+
|
|
252
|
+
The sketch-findings skill will auto-load when building the UI.
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
───────────────────────────────────────────────────────────────
|
|
256
|
+
|
|
257
|
+
## ▶ Next Up
|
|
258
|
+
|
|
259
|
+
**Explore frontier sketches** — see what else is worth sketching based on what we've explored
|
|
260
|
+
|
|
261
|
+
`/gsd:sketch` (run with no argument — its frontier mode analyzes the sketch landscape and proposes consistency and frontier sketches)
|
|
262
|
+
|
|
263
|
+
───────────────────────────────────────────────────────────────
|
|
264
|
+
|
|
265
|
+
**Also available:**
|
|
266
|
+
- `/gsd:plan-phase` — start building the real UI
|
|
267
|
+
- `/gsd:ui-phase` — generate a UI design contract for a frontend phase
|
|
268
|
+
- `/gsd:sketch [idea]` — sketch a specific new design area
|
|
269
|
+
- `/gsd:explore` — continue exploring
|
|
270
|
+
|
|
271
|
+
───────────────────────────────────────────────────────────────
|
|
272
|
+
</step>
|
|
273
|
+
|
|
274
|
+
</process>
|
|
275
|
+
|
|
276
|
+
<success_criteria>
|
|
277
|
+
- [ ] Every unprocessed sketch presented for individual curation
|
|
278
|
+
- [ ] Design-area grouping proposed and approved
|
|
279
|
+
- [ ] Sketch-findings skill exists at `./.claude/skills/` with SKILL.md, references/, sources/
|
|
280
|
+
- [ ] Winning theme.css copied into skill sources
|
|
281
|
+
- [ ] Reference files contain design decisions, CSS patterns, HTML structures, anti-patterns
|
|
282
|
+
- [ ] `.planning/sketches/WRAP-UP-SUMMARY.md` written for project history
|
|
283
|
+
- [ ] Project CLAUDE.md has auto-load routing line
|
|
284
|
+
- [ ] Summary presented
|
|
285
|
+
- [ ] Next-step options presented (including frontier sketch exploration via `/gsd:sketch`)
|
|
286
|
+
</success_criteria>
|