gsd-remix 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/README.md +939 -0
- package/README.zh-CN.md +876 -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 +517 -0
- package/agents/gsd-code-reviewer.md +371 -0
- package/agents/gsd-codebase-mapper.md +781 -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 +603 -0
- package/agents/gsd-framework-selector.md +160 -0
- package/agents/gsd-integration-checker.md +470 -0
- package/agents/gsd-intel-updater.md +334 -0
- package/agents/gsd-nyquist-auditor.md +203 -0
- package/agents/gsd-pattern-mapper.md +335 -0
- package/agents/gsd-phase-researcher.md +841 -0
- package/agents/gsd-plan-checker.md +978 -0
- package/agents/gsd-planner.md +1251 -0
- package/agents/gsd-project-researcher.md +677 -0
- package/agents/gsd-research-synthesizer.md +247 -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 +830 -0
- package/bin/install.js +7062 -0
- package/commands/gsd/add-backlog.md +79 -0
- package/commands/gsd/add-phase.md +43 -0
- package/commands/gsd/add-tests.md +41 -0
- package/commands/gsd/add-todo.md +47 -0
- package/commands/gsd/ai-integration-phase.md +36 -0
- package/commands/gsd/analyze-dependencies.md +34 -0
- package/commands/gsd/audit-fix.md +33 -0
- package/commands/gsd/audit-milestone.md +36 -0
- package/commands/gsd/audit-uat.md +24 -0
- package/commands/gsd/autonomous.md +46 -0
- package/commands/gsd/check-todos.md +45 -0
- package/commands/gsd/cleanup.md +23 -0
- package/commands/gsd/code-review-fix.md +52 -0
- package/commands/gsd/code-review.md +55 -0
- package/commands/gsd/complete-milestone.md +136 -0
- package/commands/gsd/debug.md +263 -0
- package/commands/gsd/discuss-phase.md +69 -0
- package/commands/gsd/do.md +30 -0
- package/commands/gsd/docs-update.md +48 -0
- package/commands/gsd/eval-review.md +32 -0
- package/commands/gsd/execute-phase.md +63 -0
- package/commands/gsd/explore.md +27 -0
- package/commands/gsd/extract_learnings.md +22 -0
- package/commands/gsd/fast.md +30 -0
- package/commands/gsd/forensics.md +56 -0
- package/commands/gsd/from-gsd2.md +47 -0
- package/commands/gsd/graphify.md +201 -0
- package/commands/gsd/health.md +22 -0
- package/commands/gsd/help.md +24 -0
- package/commands/gsd/import.md +37 -0
- package/commands/gsd/inbox.md +38 -0
- package/commands/gsd/ingest-docs.md +42 -0
- package/commands/gsd/insert-phase.md +32 -0
- package/commands/gsd/intel.md +179 -0
- package/commands/gsd/join-discord.md +19 -0
- package/commands/gsd/list-phase-assumptions.md +46 -0
- package/commands/gsd/list-workspaces.md +19 -0
- package/commands/gsd/manager.md +40 -0
- package/commands/gsd/map-codebase.md +71 -0
- package/commands/gsd/milestone-summary.md +51 -0
- package/commands/gsd/new-milestone.md +44 -0
- package/commands/gsd/new-project.md +46 -0
- package/commands/gsd/new-workspace.md +44 -0
- package/commands/gsd/next.md +28 -0
- package/commands/gsd/note.md +34 -0
- package/commands/gsd/pause-work.md +38 -0
- package/commands/gsd/plan-milestone-gaps.md +34 -0
- package/commands/gsd/plan-phase.md +52 -0
- package/commands/gsd/plan-review-convergence.md +52 -0
- package/commands/gsd/plant-seed.md +28 -0
- package/commands/gsd/pr-branch.md +25 -0
- package/commands/gsd/profile-user.md +46 -0
- package/commands/gsd/progress.md +25 -0
- package/commands/gsd/quick.md +173 -0
- package/commands/gsd/reapply-patches.md +331 -0
- package/commands/gsd/remove-phase.md +31 -0
- package/commands/gsd/remove-workspace.md +26 -0
- package/commands/gsd/research-phase.md +195 -0
- package/commands/gsd/resume-work.md +40 -0
- package/commands/gsd/review-backlog.md +62 -0
- package/commands/gsd/review.md +40 -0
- package/commands/gsd/scan.md +26 -0
- package/commands/gsd/secure-phase.md +35 -0
- package/commands/gsd/session-report.md +19 -0
- package/commands/gsd/set-profile.md +12 -0
- package/commands/gsd/settings.md +36 -0
- package/commands/gsd/ship.md +23 -0
- package/commands/gsd/sketch-wrap-up.md +31 -0
- package/commands/gsd/sketch.md +49 -0
- package/commands/gsd/spec-phase.md +62 -0
- package/commands/gsd/spike-wrap-up.md +31 -0
- package/commands/gsd/spike.md +46 -0
- package/commands/gsd/stats.md +18 -0
- package/commands/gsd/sync-skills.md +19 -0
- package/commands/gsd/thread.md +227 -0
- package/commands/gsd/ui-phase.md +34 -0
- package/commands/gsd/ui-review.md +32 -0
- package/commands/gsd/ultraplan-phase.md +33 -0
- package/commands/gsd/undo.md +34 -0
- package/commands/gsd/update.md +37 -0
- package/commands/gsd/validate-phase.md +35 -0
- package/commands/gsd/verify-work.md +38 -0
- package/commands/gsd/workstreams.md +69 -0
- package/get-shit-done/bin/gsd-tools.cjs +1263 -0
- package/get-shit-done/bin/lib/artifacts.cjs +52 -0
- package/get-shit-done/bin/lib/audit.cjs +757 -0
- package/get-shit-done/bin/lib/commands.cjs +1023 -0
- package/get-shit-done/bin/lib/config-schema.cjs +79 -0
- package/get-shit-done/bin/lib/config.cjs +463 -0
- package/get-shit-done/bin/lib/core.cjs +1794 -0
- package/get-shit-done/bin/lib/docs.cjs +267 -0
- package/get-shit-done/bin/lib/frontmatter.cjs +379 -0
- package/get-shit-done/bin/lib/graphify.cjs +494 -0
- package/get-shit-done/bin/lib/gsd2-import.cjs +511 -0
- package/get-shit-done/bin/lib/init.cjs +1878 -0
- package/get-shit-done/bin/lib/intel.cjs +639 -0
- package/get-shit-done/bin/lib/learnings.cjs +378 -0
- package/get-shit-done/bin/lib/milestone.cjs +283 -0
- package/get-shit-done/bin/lib/model-profiles.cjs +71 -0
- package/get-shit-done/bin/lib/phase.cjs +1058 -0
- package/get-shit-done/bin/lib/profile-output.cjs +1080 -0
- package/get-shit-done/bin/lib/profile-pipeline.cjs +539 -0
- package/get-shit-done/bin/lib/roadmap.cjs +523 -0
- package/get-shit-done/bin/lib/schema-detect.cjs +238 -0
- package/get-shit-done/bin/lib/security.cjs +504 -0
- package/get-shit-done/bin/lib/state.cjs +1649 -0
- package/get-shit-done/bin/lib/template.cjs +226 -0
- package/get-shit-done/bin/lib/uat.cjs +288 -0
- package/get-shit-done/bin/lib/verify.cjs +1184 -0
- package/get-shit-done/bin/lib/workstream.cjs +495 -0
- package/get-shit-done/bin/repair-sdk.cjs +177 -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 +22 -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 +808 -0
- package/get-shit-done/references/common-bug-patterns.md +114 -0
- package/get-shit-done/references/context-budget.md +49 -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/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 +295 -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 +145 -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-gap-closure.md +62 -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 +460 -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/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/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/verification-overrides.md +227 -0
- package/get-shit-done/references/verification-patterns.md +612 -0
- package/get-shit-done/references/workstream-flag.md +111 -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 +76 -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 +56 -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 +184 -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/add-phase.md +112 -0
- package/get-shit-done/workflows/add-tests.md +354 -0
- package/get-shit-done/workflows/add-todo.md +160 -0
- package/get-shit-done/workflows/ai-integration-phase.md +284 -0
- package/get-shit-done/workflows/analyze-dependencies.md +96 -0
- package/get-shit-done/workflows/audit-fix.md +175 -0
- package/get-shit-done/workflows/audit-milestone.md +340 -0
- package/get-shit-done/workflows/audit-uat.md +109 -0
- package/get-shit-done/workflows/autonomous.md +789 -0
- package/get-shit-done/workflows/check-todos.md +179 -0
- package/get-shit-done/workflows/cleanup.md +154 -0
- package/get-shit-done/workflows/code-review-fix.md +497 -0
- package/get-shit-done/workflows/code-review.md +515 -0
- package/get-shit-done/workflows/complete-milestone.md +847 -0
- package/get-shit-done/workflows/diagnose-issues.md +238 -0
- package/get-shit-done/workflows/discovery-phase.md +291 -0
- package/get-shit-done/workflows/discuss-phase-assumptions.md +670 -0
- package/get-shit-done/workflows/discuss-phase-power.md +308 -0
- package/get-shit-done/workflows/discuss-phase.md +1378 -0
- package/get-shit-done/workflows/do.md +110 -0
- package/get-shit-done/workflows/docs-update.md +1155 -0
- package/get-shit-done/workflows/eval-review.md +155 -0
- package/get-shit-done/workflows/execute-phase.md +1677 -0
- package/get-shit-done/workflows/execute-plan.md +533 -0
- package/get-shit-done/workflows/explore.md +141 -0
- package/get-shit-done/workflows/extract_learnings.md +242 -0
- package/get-shit-done/workflows/fast.md +105 -0
- package/get-shit-done/workflows/forensics.md +265 -0
- package/get-shit-done/workflows/graduation.md +195 -0
- package/get-shit-done/workflows/health.md +314 -0
- package/get-shit-done/workflows/help.md +667 -0
- package/get-shit-done/workflows/import.md +246 -0
- package/get-shit-done/workflows/inbox.md +387 -0
- package/get-shit-done/workflows/ingest-docs.md +328 -0
- package/get-shit-done/workflows/insert-phase.md +130 -0
- package/get-shit-done/workflows/list-phase-assumptions.md +178 -0
- package/get-shit-done/workflows/list-workspaces.md +56 -0
- package/get-shit-done/workflows/manager.md +365 -0
- package/get-shit-done/workflows/map-codebase.md +393 -0
- package/get-shit-done/workflows/milestone-summary.md +223 -0
- package/get-shit-done/workflows/new-milestone.md +611 -0
- package/get-shit-done/workflows/new-project.md +1391 -0
- package/get-shit-done/workflows/new-workspace.md +239 -0
- package/get-shit-done/workflows/next.md +220 -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 +243 -0
- package/get-shit-done/workflows/plan-milestone-gaps.md +273 -0
- package/get-shit-done/workflows/plan-phase.md +1349 -0
- package/get-shit-done/workflows/plan-review-convergence.md +254 -0
- package/get-shit-done/workflows/plant-seed.md +172 -0
- package/get-shit-done/workflows/pr-branch.md +157 -0
- package/get-shit-done/workflows/profile-user.md +452 -0
- package/get-shit-done/workflows/progress.md +619 -0
- package/get-shit-done/workflows/quick.md +970 -0
- package/get-shit-done/workflows/remove-phase.md +155 -0
- package/get-shit-done/workflows/remove-workspace.md +92 -0
- package/get-shit-done/workflows/research-phase.md +89 -0
- package/get-shit-done/workflows/resume-project.md +326 -0
- package/get-shit-done/workflows/review.md +344 -0
- package/get-shit-done/workflows/scan.md +102 -0
- package/get-shit-done/workflows/secure-phase.md +166 -0
- package/get-shit-done/workflows/session-report.md +146 -0
- package/get-shit-done/workflows/settings.md +319 -0
- package/get-shit-done/workflows/ship.md +302 -0
- package/get-shit-done/workflows/sketch-wrap-up.md +283 -0
- package/get-shit-done/workflows/sketch.md +286 -0
- package/get-shit-done/workflows/spec-phase.md +262 -0
- package/get-shit-done/workflows/spike-wrap-up.md +281 -0
- package/get-shit-done/workflows/spike.md +362 -0
- package/get-shit-done/workflows/stats.md +60 -0
- package/get-shit-done/workflows/sync-skills.md +182 -0
- package/get-shit-done/workflows/transition.md +693 -0
- package/get-shit-done/workflows/ui-phase.md +323 -0
- package/get-shit-done/workflows/ui-review.md +190 -0
- package/get-shit-done/workflows/ultraplan-phase.md +189 -0
- package/get-shit-done/workflows/undo.md +314 -0
- package/get-shit-done/workflows/update.md +587 -0
- package/get-shit-done/workflows/validate-phase.md +176 -0
- package/get-shit-done/workflows/verify-phase.md +465 -0
- package/get-shit-done/workflows/verify-work.md +740 -0
- package/hooks/dist/gsd-check-update-worker.js +108 -0
- package/hooks/dist/gsd-check-update.js +64 -0
- package/hooks/dist/gsd-context-monitor.js +192 -0
- package/hooks/dist/gsd-phase-boundary.sh +28 -0
- package/hooks/dist/gsd-prompt-guard.js +97 -0
- package/hooks/dist/gsd-read-guard.js +82 -0
- package/hooks/dist/gsd-read-injection-scanner.js +152 -0
- package/hooks/dist/gsd-session-state.sh +34 -0
- package/hooks/dist/gsd-statusline.js +293 -0
- package/hooks/dist/gsd-validate-commit.sh +48 -0
- package/hooks/dist/gsd-workflow-guard.js +94 -0
- package/hooks/gsd-check-update-worker.js +108 -0
- package/hooks/gsd-check-update.js +64 -0
- package/hooks/gsd-context-monitor.js +192 -0
- package/hooks/gsd-phase-boundary.sh +28 -0
- package/hooks/gsd-prompt-guard.js +97 -0
- package/hooks/gsd-read-guard.js +82 -0
- package/hooks/gsd-read-injection-scanner.js +152 -0
- package/hooks/gsd-session-state.sh +34 -0
- package/hooks/gsd-statusline.js +293 -0
- package/hooks/gsd-validate-commit.sh +48 -0
- package/hooks/gsd-workflow-guard.js +94 -0
- package/package.json +59 -0
- package/scripts/base64-scan.sh +262 -0
- package/scripts/build-hooks.js +95 -0
- package/scripts/gen-inventory-manifest.cjs +109 -0
- package/scripts/prompt-injection-scan.sh +201 -0
- package/scripts/run-tests.cjs +33 -0
- package/scripts/secret-scan.sh +227 -0
- package/sdk/package-lock.json +1998 -0
- package/sdk/package.json +52 -0
- package/sdk/prompts/agents/gsd-executor.md +110 -0
- package/sdk/prompts/agents/gsd-phase-researcher.md +158 -0
- package/sdk/prompts/agents/gsd-plan-checker.md +160 -0
- package/sdk/prompts/agents/gsd-planner.md +214 -0
- package/sdk/prompts/agents/gsd-project-researcher.md +323 -0
- package/sdk/prompts/agents/gsd-research-synthesizer.md +237 -0
- package/sdk/prompts/agents/gsd-roadmapper.md +670 -0
- package/sdk/prompts/agents/gsd-verifier.md +159 -0
- package/sdk/prompts/templates/project.md +186 -0
- package/sdk/prompts/templates/requirements.md +231 -0
- package/sdk/prompts/templates/research-project/ARCHITECTURE.md +204 -0
- package/sdk/prompts/templates/research-project/FEATURES.md +147 -0
- package/sdk/prompts/templates/research-project/PITFALLS.md +200 -0
- package/sdk/prompts/templates/research-project/STACK.md +120 -0
- package/sdk/prompts/templates/research-project/SUMMARY.md +170 -0
- package/sdk/prompts/templates/roadmap.md +202 -0
- package/sdk/prompts/templates/state.md +175 -0
- package/sdk/prompts/workflows/discuss-phase.md +126 -0
- package/sdk/prompts/workflows/execute-plan.md +106 -0
- package/sdk/prompts/workflows/plan-phase.md +84 -0
- package/sdk/prompts/workflows/research-phase.md +45 -0
- package/sdk/prompts/workflows/verify-phase.md +142 -0
- package/sdk/src/assembled-prompts.test.ts +349 -0
- package/sdk/src/cli-transport.test.ts +388 -0
- package/sdk/src/cli-transport.ts +130 -0
- package/sdk/src/cli.test.ts +383 -0
- package/sdk/src/cli.ts +670 -0
- package/sdk/src/config.test.ts +168 -0
- package/sdk/src/config.ts +177 -0
- package/sdk/src/context-engine.test.ts +295 -0
- package/sdk/src/context-engine.ts +170 -0
- package/sdk/src/context-truncation.test.ts +163 -0
- package/sdk/src/context-truncation.ts +233 -0
- package/sdk/src/e2e.integration.test.ts +178 -0
- package/sdk/src/errors.ts +72 -0
- package/sdk/src/event-stream.test.ts +661 -0
- package/sdk/src/event-stream.ts +441 -0
- package/sdk/src/failure-memory.test.ts +457 -0
- package/sdk/src/failure-memory.ts +1324 -0
- package/sdk/src/golden/capture.ts +95 -0
- package/sdk/src/golden/fixtures/generate-slug.golden.json +1 -0
- package/sdk/src/golden/fixtures/profile-sample-sessions/demo-project/sample.jsonl +3 -0
- package/sdk/src/golden/fixtures/summary-extract-sample.md +26 -0
- package/sdk/src/golden/fixtures/uat-render-checkpoint-sample.md +15 -0
- package/sdk/src/golden/golden-integration-covered.ts +30 -0
- package/sdk/src/golden/golden-mutation-covered.ts +7 -0
- package/sdk/src/golden/golden-policy.test.ts +8 -0
- package/sdk/src/golden/golden-policy.ts +112 -0
- package/sdk/src/golden/golden.integration.test.ts +373 -0
- package/sdk/src/golden/init-golden-normalize.ts +15 -0
- package/sdk/src/golden/read-only-golden-rows.ts +77 -0
- package/sdk/src/golden/read-only-parity.integration.test.ts +125 -0
- package/sdk/src/golden/registry-canonical-commands.ts +31 -0
- package/sdk/src/gsd-tools.test.ts +409 -0
- package/sdk/src/gsd-tools.ts +595 -0
- package/sdk/src/headless-prompts.test.ts +159 -0
- package/sdk/src/index.ts +333 -0
- package/sdk/src/init-e2e.integration.test.ts +136 -0
- package/sdk/src/init-runner.test.ts +783 -0
- package/sdk/src/init-runner.ts +735 -0
- package/sdk/src/lifecycle-e2e.integration.test.ts +258 -0
- package/sdk/src/logger.test.ts +149 -0
- package/sdk/src/logger.ts +113 -0
- package/sdk/src/milestone-runner.test.ts +421 -0
- package/sdk/src/phase-prompt.test.ts +538 -0
- package/sdk/src/phase-prompt.ts +264 -0
- package/sdk/src/phase-runner-types.test.ts +421 -0
- package/sdk/src/phase-runner.integration.test.ts +377 -0
- package/sdk/src/phase-runner.test.ts +2333 -0
- package/sdk/src/phase-runner.ts +1203 -0
- package/sdk/src/plan-parser.test.ts +528 -0
- package/sdk/src/plan-parser.ts +427 -0
- package/sdk/src/prompt-builder.test.ts +306 -0
- package/sdk/src/prompt-builder.ts +193 -0
- package/sdk/src/prompt-sanitizer.test.ts +260 -0
- package/sdk/src/prompt-sanitizer.ts +71 -0
- package/sdk/src/query/QUERY-HANDLERS.md +317 -0
- package/sdk/src/query/audit-open.ts +722 -0
- package/sdk/src/query/check-auto-mode.test.ts +77 -0
- package/sdk/src/query/check-auto-mode.ts +50 -0
- package/sdk/src/query/check-completion.test.ts +113 -0
- package/sdk/src/query/check-completion.ts +182 -0
- package/sdk/src/query/check-gates.test.ts +103 -0
- package/sdk/src/query/check-gates.ts +112 -0
- package/sdk/src/query/check-ship-ready.test.ts +77 -0
- package/sdk/src/query/check-ship-ready.ts +103 -0
- package/sdk/src/query/check-verification-status.test.ts +143 -0
- package/sdk/src/query/check-verification-status.ts +160 -0
- package/sdk/src/query/commit.test.ts +202 -0
- package/sdk/src/query/commit.ts +301 -0
- package/sdk/src/query/config-gates.test.ts +89 -0
- package/sdk/src/query/config-gates.ts +69 -0
- package/sdk/src/query/config-mutation.test.ts +365 -0
- package/sdk/src/query/config-mutation.ts +497 -0
- package/sdk/src/query/config-query.test.ts +161 -0
- package/sdk/src/query/config-query.ts +190 -0
- package/sdk/src/query/context-history.test.ts +165 -0
- package/sdk/src/query/context-history.ts +467 -0
- package/sdk/src/query/decomposed-handlers.test.ts +365 -0
- package/sdk/src/query/detect-custom-files.ts +97 -0
- package/sdk/src/query/detect-phase-type.test.ts +105 -0
- package/sdk/src/query/detect-phase-type.ts +141 -0
- package/sdk/src/query/docs-init.ts +257 -0
- package/sdk/src/query/failure-capture.ts +58 -0
- package/sdk/src/query/frontmatter-array.test.ts +14 -0
- package/sdk/src/query/frontmatter-mutation.test.ts +259 -0
- package/sdk/src/query/frontmatter-mutation.ts +343 -0
- package/sdk/src/query/frontmatter.test.ts +281 -0
- package/sdk/src/query/frontmatter.ts +397 -0
- package/sdk/src/query/helpers.test.ts +426 -0
- package/sdk/src/query/helpers.ts +482 -0
- package/sdk/src/query/index.ts +586 -0
- package/sdk/src/query/init-complex.test.ts +232 -0
- package/sdk/src/query/init-complex.ts +578 -0
- package/sdk/src/query/init.test.ts +522 -0
- package/sdk/src/query/init.ts +1046 -0
- package/sdk/src/query/intel.test.ts +90 -0
- package/sdk/src/query/intel.ts +404 -0
- package/sdk/src/query/normalize-query-command.test.ts +50 -0
- package/sdk/src/query/normalize-query-command.ts +56 -0
- package/sdk/src/query/phase-lifecycle.test.ts +1126 -0
- package/sdk/src/query/phase-lifecycle.ts +1799 -0
- package/sdk/src/query/phase-list-queries.test.ts +88 -0
- package/sdk/src/query/phase-list-queries.ts +152 -0
- package/sdk/src/query/phase-ready.test.ts +65 -0
- package/sdk/src/query/phase-ready.ts +158 -0
- package/sdk/src/query/phase.test.ts +307 -0
- package/sdk/src/query/phase.ts +340 -0
- package/sdk/src/query/pipeline.test.ts +169 -0
- package/sdk/src/query/pipeline.ts +243 -0
- package/sdk/src/query/plan-execution-route.test.ts +166 -0
- package/sdk/src/query/plan-execution-route.ts +209 -0
- package/sdk/src/query/plan-task-structure.test.ts +65 -0
- package/sdk/src/query/plan-task-structure.ts +63 -0
- package/sdk/src/query/profile-extract-messages.ts +247 -0
- package/sdk/src/query/profile-output.ts +908 -0
- package/sdk/src/query/profile-questionnaire-data.ts +181 -0
- package/sdk/src/query/profile-sample.ts +184 -0
- package/sdk/src/query/profile-scan-sessions.ts +174 -0
- package/sdk/src/query/profile.test.ts +74 -0
- package/sdk/src/query/profile.ts +337 -0
- package/sdk/src/query/progress.test.ts +156 -0
- package/sdk/src/query/progress.ts +566 -0
- package/sdk/src/query/registry.test.ts +216 -0
- package/sdk/src/query/registry.ts +174 -0
- package/sdk/src/query/requirements-extract-from-plans.test.ts +58 -0
- package/sdk/src/query/requirements-extract-from-plans.ts +86 -0
- package/sdk/src/query/roadmap-update-plan-progress.ts +132 -0
- package/sdk/src/query/roadmap.test.ts +359 -0
- package/sdk/src/query/roadmap.ts +591 -0
- package/sdk/src/query/route-next-action.test.ts +61 -0
- package/sdk/src/query/route-next-action.ts +345 -0
- package/sdk/src/query/runtime-health.ts +7 -0
- package/sdk/src/query/schema-detect.ts +189 -0
- package/sdk/src/query/skill-manifest.ts +214 -0
- package/sdk/src/query/skills.test.ts +80 -0
- package/sdk/src/query/skills.ts +62 -0
- package/sdk/src/query/state-mutation.test.ts +450 -0
- package/sdk/src/query/state-mutation.ts +1444 -0
- package/sdk/src/query/state-project-load.ts +109 -0
- package/sdk/src/query/state.test.ts +347 -0
- package/sdk/src/query/state.ts +397 -0
- package/sdk/src/query/summary.test.ts +95 -0
- package/sdk/src/query/summary.ts +296 -0
- package/sdk/src/query/template.test.ts +180 -0
- package/sdk/src/query/template.ts +242 -0
- package/sdk/src/query/uat.test.ts +77 -0
- package/sdk/src/query/uat.ts +314 -0
- package/sdk/src/query/utils.test.ts +82 -0
- package/sdk/src/query/utils.ts +92 -0
- package/sdk/src/query/validate.test.ts +656 -0
- package/sdk/src/query/validate.ts +807 -0
- package/sdk/src/query/verify.test.ts +414 -0
- package/sdk/src/query/verify.ts +645 -0
- package/sdk/src/query/websearch.test.ts +31 -0
- package/sdk/src/query/websearch.ts +82 -0
- package/sdk/src/query/workspace.test.ts +119 -0
- package/sdk/src/query/workspace.ts +131 -0
- package/sdk/src/query/workstream.test.ts +51 -0
- package/sdk/src/query/workstream.ts +434 -0
- package/sdk/src/research-gate.test.ts +190 -0
- package/sdk/src/research-gate.ts +94 -0
- package/sdk/src/runtime-health.test.ts +176 -0
- package/sdk/src/runtime-health.ts +387 -0
- package/sdk/src/session-runner.test.ts +98 -0
- package/sdk/src/session-runner.ts +299 -0
- package/sdk/src/tool-scoping.test.ts +160 -0
- package/sdk/src/tool-scoping.ts +61 -0
- package/sdk/src/types.ts +917 -0
- package/sdk/src/workstream-utils.ts +33 -0
- package/sdk/src/ws-flag.test.ts +285 -0
- package/sdk/src/ws-transport.test.ts +161 -0
- package/sdk/src/ws-transport.ts +93 -0
- package/sdk/tsconfig.json +20 -0
|
@@ -0,0 +1,286 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Explore design directions through throwaway HTML mockups before committing to implementation.
|
|
3
|
+
Each sketch produces 2-3 variants for comparison. Saves artifacts to `.planning/sketches/`.
|
|
4
|
+
Companion to `/gsd-sketch-wrap-up`.
|
|
5
|
+
</purpose>
|
|
6
|
+
|
|
7
|
+
<required_reading>
|
|
8
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
9
|
+
|
|
10
|
+
@~/.claude/get-shit-done/references/sketch-theme-system.md
|
|
11
|
+
@~/.claude/get-shit-done/references/sketch-variant-patterns.md
|
|
12
|
+
@~/.claude/get-shit-done/references/sketch-interactivity.md
|
|
13
|
+
@~/.claude/get-shit-done/references/sketch-tooling.md
|
|
14
|
+
</required_reading>
|
|
15
|
+
|
|
16
|
+
<process>
|
|
17
|
+
|
|
18
|
+
<step name="banner">
|
|
19
|
+
```
|
|
20
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
21
|
+
GSD ► SKETCHING
|
|
22
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
Parse `$ARGUMENTS` for:
|
|
26
|
+
- `--quick` flag → set `QUICK_MODE=true`
|
|
27
|
+
- `--text` flag → set `TEXT_MODE=true`
|
|
28
|
+
- Remaining text → the design idea to sketch
|
|
29
|
+
|
|
30
|
+
**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.
|
|
31
|
+
</step>
|
|
32
|
+
|
|
33
|
+
<step name="setup_directory">
|
|
34
|
+
Create `.planning/sketches/` and themes directory if they don't exist:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
mkdir -p .planning/sketches/themes
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Check for existing sketches to determine numbering:
|
|
41
|
+
```bash
|
|
42
|
+
ls -d .planning/sketches/[0-9][0-9][0-9]-* 2>/dev/null | sort | tail -1
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
Check `commit_docs` config:
|
|
46
|
+
```bash
|
|
47
|
+
COMMIT_DOCS=$(gsd-remix-sdk query config-get commit_docs 2>/dev/null || echo "true")
|
|
48
|
+
```
|
|
49
|
+
</step>
|
|
50
|
+
|
|
51
|
+
<step name="mood_intake">
|
|
52
|
+
**If `QUICK_MODE` is true:** Skip mood intake. Use whatever the user provided in `$ARGUMENTS` as the design direction. Jump to `decompose`.
|
|
53
|
+
|
|
54
|
+
**Otherwise:**
|
|
55
|
+
|
|
56
|
+
Before sketching anything, explore the design intent through conversation. Ask one question at a time using AskUserQuestion, with a paragraph of context and reasoning for each.
|
|
57
|
+
|
|
58
|
+
**Questions to cover (adapt to what the user has already shared):**
|
|
59
|
+
|
|
60
|
+
1. **Feel:** "What should this feel like? Give me adjectives, emotions, or a vibe." (e.g., "clean and clinical", "warm and playful", "dense and powerful")
|
|
61
|
+
2. **References:** "What apps, sites, or products have a similar feel to what you're imagining?" (gives concrete visual anchors)
|
|
62
|
+
3. **Core action:** "What's the single most important thing a user does here?" (focuses the sketch on what matters)
|
|
63
|
+
|
|
64
|
+
You may need more or fewer questions depending on how much the user shares upfront. After each answer, briefly reflect what you heard and how it shapes your thinking.
|
|
65
|
+
|
|
66
|
+
When you have enough signal, ask: **"I think I have a good sense of the direction. Ready for me to sketch, or want to keep discussing?"**
|
|
67
|
+
|
|
68
|
+
Only proceed when the user says go.
|
|
69
|
+
</step>
|
|
70
|
+
|
|
71
|
+
<step name="decompose">
|
|
72
|
+
Break the idea into 2-5 design questions. Present as a table:
|
|
73
|
+
|
|
74
|
+
| Sketch | Design question | Approach | Risk |
|
|
75
|
+
|--------|----------------|----------|------|
|
|
76
|
+
| 001 | Does a two-panel layout feel right? | Sidebar + main, variants: fixed/collapsible/floating | **High** — sets page structure |
|
|
77
|
+
| 002 | How should the form controls look? | Grouped cards, variants: stacked/inline/floating labels | Medium |
|
|
78
|
+
|
|
79
|
+
Each sketch answers one specific visual question. Good sketches:
|
|
80
|
+
- "Does this layout feel right?" — build with real-ish content
|
|
81
|
+
- "How should these controls be grouped?" — build with actual labels and inputs
|
|
82
|
+
- "What does this interaction feel like?" — build the hover/click/transition
|
|
83
|
+
- "Does this color palette work?" — apply to actual UI, not a swatch grid
|
|
84
|
+
|
|
85
|
+
Bad sketches:
|
|
86
|
+
- "Design the whole app" — too broad
|
|
87
|
+
- "Set up the component library" — that's implementation
|
|
88
|
+
- "Pick a color palette" — apply it to UI instead
|
|
89
|
+
|
|
90
|
+
Present the table and get alignment before building.
|
|
91
|
+
</step>
|
|
92
|
+
|
|
93
|
+
<step name="research_stack">
|
|
94
|
+
## Research the Target Stack
|
|
95
|
+
|
|
96
|
+
Before sketching, ground the design in what's actually buildable. Sketches are HTML, but they should reflect real constraints of the target implementation.
|
|
97
|
+
|
|
98
|
+
**a. Identify the target stack.** Check for package.json, Cargo.toml, etc. If the user mentioned a framework (React, SwiftUI, Flutter, etc.), note it.
|
|
99
|
+
|
|
100
|
+
**b. Check component/pattern availability.** Use context7 (resolve-library-id → query-docs) or web search to answer:
|
|
101
|
+
- What layout primitives does the target framework provide? (grid systems, nav patterns, panel components)
|
|
102
|
+
- Are there existing component libraries in use? (shadcn, Material UI, etc.) What components are available?
|
|
103
|
+
- What interaction patterns are idiomatic? (e.g., sheet vs modal vs dialog in mobile)
|
|
104
|
+
|
|
105
|
+
**c. Note constraints that affect design.** Some things that look great in HTML are painful or impossible in certain stacks:
|
|
106
|
+
- Platform conventions (iOS nav patterns, desktop menu bars, terminal grid constraints)
|
|
107
|
+
- Framework limitations (what's easy vs requires custom work)
|
|
108
|
+
- Existing design tokens or theme systems already in the project
|
|
109
|
+
|
|
110
|
+
**d. Let research inform variants.** Use findings to make variants that are actually buildable — at least one variant should follow the path of least resistance for the target stack.
|
|
111
|
+
|
|
112
|
+
**Skip when unnecessary.** If it's a greenfield project with no stack chosen, or the user explicitly says "just explore visually, don't worry about implementation," skip this step entirely. The point is grounding, not gatekeeping.
|
|
113
|
+
</step>
|
|
114
|
+
|
|
115
|
+
<step name="create_manifest">
|
|
116
|
+
Create or update `.planning/sketches/MANIFEST.md`:
|
|
117
|
+
|
|
118
|
+
```markdown
|
|
119
|
+
# Sketch Manifest
|
|
120
|
+
|
|
121
|
+
## Design Direction
|
|
122
|
+
[One paragraph capturing the mood/feel/direction from the intake conversation]
|
|
123
|
+
|
|
124
|
+
## Reference Points
|
|
125
|
+
[Apps/sites the user referenced]
|
|
126
|
+
|
|
127
|
+
## Sketches
|
|
128
|
+
|
|
129
|
+
| # | Name | Design Question | Winner | Tags |
|
|
130
|
+
|---|------|----------------|--------|------|
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
If MANIFEST.md already exists, append new sketches to the existing table.
|
|
134
|
+
</step>
|
|
135
|
+
|
|
136
|
+
<step name="create_theme">
|
|
137
|
+
If no theme exists yet at `.planning/sketches/themes/default.css`, create one based on the mood/direction from the intake step. See `sketch-theme-system.md` for the full template.
|
|
138
|
+
|
|
139
|
+
Adapt colors, fonts, spacing, and shapes to match the agreed aesthetic — don't use the defaults verbatim unless they match the mood.
|
|
140
|
+
</step>
|
|
141
|
+
|
|
142
|
+
<step name="build_sketches">
|
|
143
|
+
Build each sketch in order.
|
|
144
|
+
|
|
145
|
+
### For Each Sketch:
|
|
146
|
+
|
|
147
|
+
**a.** Find next available number by checking existing `.planning/sketches/NNN-*/` directories.
|
|
148
|
+
Format: three-digit zero-padded + hyphenated descriptive name.
|
|
149
|
+
|
|
150
|
+
**b.** Create the sketch directory: `.planning/sketches/NNN-descriptive-name/`
|
|
151
|
+
|
|
152
|
+
**c.** Build `index.html` with 2-3 variants:
|
|
153
|
+
|
|
154
|
+
**First round — dramatic differences:** Build 2-3 meaningfully different approaches to the design question. Different layouts, different visual structures, different interaction models.
|
|
155
|
+
|
|
156
|
+
**Subsequent rounds — refinements:** Once the user has picked a direction or cherry-picked elements, build subtler variations within that direction.
|
|
157
|
+
|
|
158
|
+
Each variant is a page/tab in the same HTML file. Include:
|
|
159
|
+
- Tab navigation to switch between variants (see `sketch-variant-patterns.md`)
|
|
160
|
+
- Clear labels: "Variant A: Sidebar Layout", "Variant B: Top Nav", etc.
|
|
161
|
+
- The sketch toolbar (see `sketch-tooling.md`)
|
|
162
|
+
- All interactive elements functional (see `sketch-interactivity.md`)
|
|
163
|
+
- Real-ish content, not lorem ipsum
|
|
164
|
+
- Link to `../themes/default.css` for shared theme variables
|
|
165
|
+
|
|
166
|
+
**All sketches are plain HTML with inline CSS and JS.** No build step, no npm, no framework. Opens instantly in a browser.
|
|
167
|
+
|
|
168
|
+
**d.** Write `README.md`:
|
|
169
|
+
|
|
170
|
+
```markdown
|
|
171
|
+
---
|
|
172
|
+
sketch: NNN
|
|
173
|
+
name: descriptive-name
|
|
174
|
+
question: "What layout structure feels right for the dashboard?"
|
|
175
|
+
winner: null
|
|
176
|
+
tags: [layout, dashboard]
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
# Sketch NNN: Descriptive Name
|
|
180
|
+
|
|
181
|
+
## Design Question
|
|
182
|
+
[The specific visual question this sketch answers]
|
|
183
|
+
|
|
184
|
+
## How to View
|
|
185
|
+
open .planning/sketches/NNN-descriptive-name/index.html
|
|
186
|
+
|
|
187
|
+
## Variants
|
|
188
|
+
- **A: [name]** — [one-line description of this approach]
|
|
189
|
+
- **B: [name]** — [one-line description]
|
|
190
|
+
- **C: [name]** — [one-line description]
|
|
191
|
+
|
|
192
|
+
## What to Look For
|
|
193
|
+
[Specific things to pay attention to when comparing variants]
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
**e.** Present to the user with a checkpoint:
|
|
197
|
+
|
|
198
|
+
╔══════════════════════════════════════════════════════════════╗
|
|
199
|
+
║ CHECKPOINT: Verification Required ║
|
|
200
|
+
╚══════════════════════════════════════════════════════════════╝
|
|
201
|
+
|
|
202
|
+
**Sketch {NNN}: {name}**
|
|
203
|
+
|
|
204
|
+
Open: `open .planning/sketches/NNN-name/index.html`
|
|
205
|
+
|
|
206
|
+
Compare: {what to look for between variants}
|
|
207
|
+
|
|
208
|
+
──────────────────────────────────────────────────────────────
|
|
209
|
+
→ Which variant feels right? Or cherry-pick elements across variants.
|
|
210
|
+
──────────────────────────────────────────────────────────────
|
|
211
|
+
|
|
212
|
+
**f.** Handle feedback:
|
|
213
|
+
- **Pick a direction:** "I like variant B" → mark winner in README, move to next sketch
|
|
214
|
+
- **Cherry-pick elements:** "Rounded edges from A, color treatment from C" → build a synthesis as a new variant, show again
|
|
215
|
+
- **Want more exploration:** "None of these feel right, try X instead" → build new variants
|
|
216
|
+
|
|
217
|
+
Iterate until the user is satisfied with a direction for this sketch.
|
|
218
|
+
|
|
219
|
+
**g.** Finalize:
|
|
220
|
+
1. Mark the winning variant in the README frontmatter (`winner: "B"`)
|
|
221
|
+
2. Add ★ indicator to the winning tab in the HTML
|
|
222
|
+
3. Update `.planning/sketches/MANIFEST.md` with the sketch row
|
|
223
|
+
|
|
224
|
+
**h.** Commit (if `COMMIT_DOCS` is true):
|
|
225
|
+
```bash
|
|
226
|
+
gsd-remix-sdk query commit "docs(sketch-NNN): [winning direction] — [key visual insight]" .planning/sketches/NNN-descriptive-name/ .planning/sketches/MANIFEST.md
|
|
227
|
+
```
|
|
228
|
+
|
|
229
|
+
**i.** Report:
|
|
230
|
+
```
|
|
231
|
+
◆ Sketch NNN: {name}
|
|
232
|
+
Winner: Variant {X} — {description}
|
|
233
|
+
Insight: {key visual decision made}
|
|
234
|
+
```
|
|
235
|
+
</step>
|
|
236
|
+
|
|
237
|
+
<step name="report">
|
|
238
|
+
After all sketches complete, present the summary:
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
242
|
+
GSD ► SKETCH COMPLETE ✓
|
|
243
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
244
|
+
|
|
245
|
+
## Design Direction
|
|
246
|
+
{what we landed on overall}
|
|
247
|
+
|
|
248
|
+
## Key Decisions
|
|
249
|
+
{layout, palette, typography, spacing, interaction patterns}
|
|
250
|
+
|
|
251
|
+
## Open Questions
|
|
252
|
+
{anything unresolved or worth revisiting}
|
|
253
|
+
```
|
|
254
|
+
|
|
255
|
+
───────────────────────────────────────────────────────────────
|
|
256
|
+
|
|
257
|
+
## ▶ Next Up
|
|
258
|
+
|
|
259
|
+
**Package findings** — wrap design decisions into a reusable skill
|
|
260
|
+
|
|
261
|
+
`/gsd-sketch-wrap-up`
|
|
262
|
+
|
|
263
|
+
───────────────────────────────────────────────────────────────
|
|
264
|
+
|
|
265
|
+
**Also available:**
|
|
266
|
+
- `/gsd-plan-phase` — start building the real UI
|
|
267
|
+
- `/gsd-explore` — continue exploring the concept
|
|
268
|
+
- `/gsd-spike` — spike technical feasibility of a design pattern
|
|
269
|
+
|
|
270
|
+
───────────────────────────────────────────────────────────────
|
|
271
|
+
</step>
|
|
272
|
+
|
|
273
|
+
</process>
|
|
274
|
+
|
|
275
|
+
<success_criteria>
|
|
276
|
+
- [ ] `.planning/sketches/` created (auto-creates if needed, no project init required)
|
|
277
|
+
- [ ] Design direction explored conversationally before any code (unless --quick)
|
|
278
|
+
- [ ] Target stack researched — component availability, constraints, and idioms noted (unless greenfield/skipped)
|
|
279
|
+
- [ ] Each sketch has 2-3 variants for comparison (at least one follows path of least resistance for target stack)
|
|
280
|
+
- [ ] User can open and interact with sketches in a browser
|
|
281
|
+
- [ ] Winning variant selected and marked for each sketch
|
|
282
|
+
- [ ] All variants preserved (winner marked, not others deleted)
|
|
283
|
+
- [ ] MANIFEST.md is current
|
|
284
|
+
- [ ] Commits use `docs(sketch-NNN): [winner]` format
|
|
285
|
+
- [ ] Summary presented with next-step routing
|
|
286
|
+
</success_criteria>
|
|
@@ -0,0 +1,262 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Clarify WHAT a phase delivers through a Socratic interview loop with quantitative ambiguity scoring.
|
|
3
|
+
Produces a SPEC.md with falsifiable requirements that discuss-phase treats as locked decisions.
|
|
4
|
+
|
|
5
|
+
This workflow handles "what" and "why" — discuss-phase handles "how".
|
|
6
|
+
</purpose>
|
|
7
|
+
|
|
8
|
+
<ambiguity_model>
|
|
9
|
+
Score each dimension 0.0 (completely unclear) to 1.0 (crystal clear):
|
|
10
|
+
|
|
11
|
+
| Dimension | Weight | Minimum | What it measures |
|
|
12
|
+
|-------------------|--------|---------|---------------------------------------------------|
|
|
13
|
+
| Goal Clarity | 35% | 0.75 | Is the outcome specific and measurable? |
|
|
14
|
+
| Boundary Clarity | 25% | 0.70 | What's in scope vs out of scope? |
|
|
15
|
+
| Constraint Clarity| 20% | 0.65 | Performance, compatibility, data requirements? |
|
|
16
|
+
| Acceptance Criteria| 20% | 0.70 | How do we know it's done? |
|
|
17
|
+
|
|
18
|
+
**Ambiguity score** = 1.0 − (0.35×goal + 0.25×boundary + 0.20×constraint + 0.20×acceptance)
|
|
19
|
+
|
|
20
|
+
**Gate:** ambiguity ≤ 0.20 AND all dimensions ≥ their minimums → ready to write SPEC.md.
|
|
21
|
+
|
|
22
|
+
A score of 0.20 means 80% weighted clarity — enough precision that the planner won't silently make wrong assumptions.
|
|
23
|
+
</ambiguity_model>
|
|
24
|
+
|
|
25
|
+
<interview_perspectives>
|
|
26
|
+
Rotate through these perspectives — each naturally surfaces different blindspots:
|
|
27
|
+
|
|
28
|
+
**Researcher (rounds 1–2):** Ground the discussion in current reality.
|
|
29
|
+
- "What exists in the codebase today related to this phase?"
|
|
30
|
+
- "What's the delta between today and the target state?"
|
|
31
|
+
- "What triggers this work — what's broken or missing?"
|
|
32
|
+
|
|
33
|
+
**Simplifier (round 2):** Surface minimum viable scope.
|
|
34
|
+
- "What's the simplest version that solves the core problem?"
|
|
35
|
+
- "If you had to cut 50%, what's the irreducible core?"
|
|
36
|
+
- "What would make this phase a success even without the nice-to-haves?"
|
|
37
|
+
|
|
38
|
+
**Boundary Keeper (round 3):** Lock the perimeter.
|
|
39
|
+
- "What explicitly will NOT be done in this phase?"
|
|
40
|
+
- "What adjacent problems is it tempting to solve but shouldn't?"
|
|
41
|
+
- "What does 'done' look like — what's the final deliverable?"
|
|
42
|
+
|
|
43
|
+
**Failure Analyst (round 4):** Find the edge cases that invalidate requirements.
|
|
44
|
+
- "What's the worst thing that could go wrong if we get the requirements wrong?"
|
|
45
|
+
- "What does a broken version of this look like?"
|
|
46
|
+
- "What would cause a verifier to reject the output?"
|
|
47
|
+
|
|
48
|
+
**Seed Closer (rounds 5–6):** Lock remaining undecided territory.
|
|
49
|
+
- "We have [dimension] at [score] — what would make it completely clear?"
|
|
50
|
+
- "The remaining ambiguity is in [area] — can we make a decision now?"
|
|
51
|
+
- "Is there anything you'd regret not specifying before planning starts?"
|
|
52
|
+
</interview_perspectives>
|
|
53
|
+
|
|
54
|
+
<process>
|
|
55
|
+
|
|
56
|
+
## Step 1: Initialize
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
INIT=$(node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" init phase-op "${PHASE}")
|
|
60
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
Parse JSON for: `phase_found`, `phase_dir`, `phase_number`, `phase_name`, `phase_slug`, `padded_phase`, `state_path`, `requirements_path`, `roadmap_path`, `planning_path`, `response_language`, `commit_docs`.
|
|
64
|
+
|
|
65
|
+
**If `response_language` is set:** All user-facing text in this workflow MUST be in `{response_language}`. Technical terms, code, and file paths stay in English.
|
|
66
|
+
|
|
67
|
+
**If `phase_found` is false:**
|
|
68
|
+
```
|
|
69
|
+
Phase [X] not found in roadmap.
|
|
70
|
+
Use /gsd-progress to see available phases.
|
|
71
|
+
```
|
|
72
|
+
Exit.
|
|
73
|
+
|
|
74
|
+
**Check for existing SPEC.md:**
|
|
75
|
+
```bash
|
|
76
|
+
ls ${phase_dir}/*-SPEC.md 2>/dev/null | grep -v AI-SPEC | head -1 || true
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
If SPEC.md already exists:
|
|
80
|
+
|
|
81
|
+
**If `--auto`:** Auto-select "Update it". Log: `[auto] SPEC.md exists — updating.`
|
|
82
|
+
|
|
83
|
+
**Otherwise:** Use AskUserQuestion:
|
|
84
|
+
- header: "Spec"
|
|
85
|
+
- question: "Phase [X] already has a SPEC.md. What do you want to do?"
|
|
86
|
+
- options:
|
|
87
|
+
- "Update it" — Revise and re-score
|
|
88
|
+
- "View it" — Show current spec
|
|
89
|
+
- "Skip" — Exit (use existing spec as-is)
|
|
90
|
+
|
|
91
|
+
If "View": Display SPEC.md, then offer Update/Skip.
|
|
92
|
+
If "Skip": Exit with message: "Existing SPEC.md unchanged. Run /gsd-discuss-phase [X] to continue."
|
|
93
|
+
If "Update": Load existing SPEC.md, continue to Step 3.
|
|
94
|
+
|
|
95
|
+
## Step 2: Scout Codebase
|
|
96
|
+
|
|
97
|
+
**Read these files before any questions:**
|
|
98
|
+
- `{requirements_path}` — Project requirements
|
|
99
|
+
- `STATE_SNAPSHOT=$(gsd-remix-sdk query state-snapshot 2>/dev/null || echo "{}")` — Decisions already made, current phase, blockers without loading full STATE.md
|
|
100
|
+
- ROADMAP.md phase entry — Phase description, goals, canonical refs
|
|
101
|
+
|
|
102
|
+
**Grep the codebase** for code/files relevant to this phase goal. Look for:
|
|
103
|
+
- Existing implementations of similar functionality
|
|
104
|
+
- Integration points where new code will connect
|
|
105
|
+
- Test coverage gaps relevant to the phase
|
|
106
|
+
- Prior phase artifacts (SUMMARY.md, VERIFICATION.md) that inform current state
|
|
107
|
+
|
|
108
|
+
**Synthesize current state** — the grounded baseline for the interview:
|
|
109
|
+
- What exists today related to this phase
|
|
110
|
+
- The gap between current state and the phase goal
|
|
111
|
+
- The primary deliverable: what file/behavior/capability does NOT exist yet?
|
|
112
|
+
|
|
113
|
+
Confirm your current state synthesis internally. Do not present it to the user yet — you'll use it to ask precise, grounded questions.
|
|
114
|
+
|
|
115
|
+
## Step 3: First Ambiguity Assessment
|
|
116
|
+
|
|
117
|
+
Before questioning begins, score the phase's current ambiguity based only on what ROADMAP.md and REQUIREMENTS.md say:
|
|
118
|
+
|
|
119
|
+
```
|
|
120
|
+
Goal Clarity: [score 0.0–1.0]
|
|
121
|
+
Boundary Clarity: [score 0.0–1.0]
|
|
122
|
+
Constraint Clarity: [score 0.0–1.0]
|
|
123
|
+
Acceptance Criteria:[score 0.0–1.0]
|
|
124
|
+
|
|
125
|
+
Ambiguity: [score] ([calculate])
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**If `--auto` and initial ambiguity already ≤ 0.20 with all minimums met:** Skip interview — derive SPEC.md directly from roadmap + requirements. Log: `[auto] Phase requirements are already sufficiently clear — generating SPEC.md from existing context.` Jump to Step 6.
|
|
129
|
+
|
|
130
|
+
**Otherwise:** Continue to Step 4.
|
|
131
|
+
|
|
132
|
+
## Step 4: Socratic Interview Loop
|
|
133
|
+
|
|
134
|
+
**Max 6 rounds.** Each round: 2–3 questions max. End round after user responds.
|
|
135
|
+
|
|
136
|
+
**Round selection by perspective:**
|
|
137
|
+
- Round 1: Researcher
|
|
138
|
+
- Round 2: Researcher + Simplifier
|
|
139
|
+
- Round 3: Boundary Keeper
|
|
140
|
+
- Round 4: Failure Analyst
|
|
141
|
+
- Rounds 5–6: Seed Closer (focus on lowest-scoring dimensions)
|
|
142
|
+
|
|
143
|
+
**After each round:**
|
|
144
|
+
1. Update all 4 dimension scores from the user's answers
|
|
145
|
+
2. Calculate new ambiguity score
|
|
146
|
+
3. Display the updated scoring:
|
|
147
|
+
|
|
148
|
+
```
|
|
149
|
+
After round [N]:
|
|
150
|
+
Goal Clarity: [score] (min 0.75) [✓ or ↑ needed]
|
|
151
|
+
Boundary Clarity: [score] (min 0.70) [✓ or ↑ needed]
|
|
152
|
+
Constraint Clarity: [score] (min 0.65) [✓ or ↑ needed]
|
|
153
|
+
Acceptance Criteria:[score] (min 0.70) [✓ or ↑ needed]
|
|
154
|
+
Ambiguity: [score] (gate: ≤ 0.20)
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
**Gate check after each round:**
|
|
158
|
+
|
|
159
|
+
If gate passes (ambiguity ≤ 0.20 AND all minimums met):
|
|
160
|
+
|
|
161
|
+
**If `--auto`:** Jump to Step 6.
|
|
162
|
+
|
|
163
|
+
**Otherwise:** AskUserQuestion:
|
|
164
|
+
- header: "Spec Gate Passed"
|
|
165
|
+
- question: "Ambiguity is [score] — requirements are clear enough to write SPEC.md. Proceed?"
|
|
166
|
+
- options:
|
|
167
|
+
- "Yes — write SPEC.md" → Jump to Step 6
|
|
168
|
+
- "One more round" → Continue interview
|
|
169
|
+
- "Done talking — write it" → Jump to Step 6
|
|
170
|
+
|
|
171
|
+
**If max rounds reached (6) and gate not passed:**
|
|
172
|
+
|
|
173
|
+
**If `--auto`:** Write SPEC.md anyway — flag unresolved dimensions. Log: `[auto] Max rounds reached. Writing SPEC.md with [N] dimensions below minimum. Planner will need to treat these as assumptions.`
|
|
174
|
+
|
|
175
|
+
**Otherwise:** AskUserQuestion:
|
|
176
|
+
- header: "Max Rounds"
|
|
177
|
+
- question: "After 6 rounds, ambiguity is [score]. [List dimensions still below minimum.] What would you like to do?"
|
|
178
|
+
- options:
|
|
179
|
+
- "Write SPEC.md anyway — flag gaps" → Write SPEC.md, mark unresolved dimensions in Ambiguity Report
|
|
180
|
+
- "Keep talking" → Continue (no round limit from here)
|
|
181
|
+
- "Abandon" → Exit without writing
|
|
182
|
+
|
|
183
|
+
**If `--auto` mode throughout:** Replace all AskUserQuestion calls above with Claude's recommended choice. Log decisions inline. Apply the same logic as `--auto` in discuss-phase.
|
|
184
|
+
|
|
185
|
+
**Text mode (`workflow.text_mode: true` or `--text` flag):** Use plain-text numbered lists instead of AskUserQuestion TUI menus.
|
|
186
|
+
|
|
187
|
+
## Step 5: (covered inline — ambiguity scoring is per-round)
|
|
188
|
+
|
|
189
|
+
## Step 6: Generate SPEC.md
|
|
190
|
+
|
|
191
|
+
Use the SPEC.md template from @~/.claude/get-shit-done/templates/spec.md.
|
|
192
|
+
|
|
193
|
+
**Requirements for every requirement entry:**
|
|
194
|
+
- One specific, testable statement
|
|
195
|
+
- Current state (what exists now)
|
|
196
|
+
- Target state (what it should become)
|
|
197
|
+
- Acceptance criterion (how to verify it was met)
|
|
198
|
+
|
|
199
|
+
**Vague requirements are rejected:**
|
|
200
|
+
- ✗ "The system should be fast"
|
|
201
|
+
- ✗ "Improve user experience"
|
|
202
|
+
- ✓ "API endpoint responds in < 200ms at p95 under 100 concurrent requests"
|
|
203
|
+
- ✓ "CLI command exits with code 1 and prints to stderr on invalid input"
|
|
204
|
+
|
|
205
|
+
**Count requirements.** The display in discuss-phase reads: "Found SPEC.md — {N} requirements locked."
|
|
206
|
+
|
|
207
|
+
**Boundaries must be explicit lists:**
|
|
208
|
+
- "In scope" — what this phase produces
|
|
209
|
+
- "Out of scope" — what it explicitly does NOT do (with brief reasoning)
|
|
210
|
+
|
|
211
|
+
**Acceptance criteria must be pass/fail checkboxes** — no "should feel good" or "looks reasonable."
|
|
212
|
+
|
|
213
|
+
**If any dimensions are below minimum**, mark them in the Ambiguity Report with: `⚠ Below minimum — planner must treat as assumption`.
|
|
214
|
+
|
|
215
|
+
Write to: `{phase_dir}/{padded_phase}-SPEC.md`
|
|
216
|
+
|
|
217
|
+
## Step 7: Commit
|
|
218
|
+
|
|
219
|
+
```bash
|
|
220
|
+
git add "${phase_dir}/${padded_phase}-SPEC.md"
|
|
221
|
+
git commit -m "spec(phase-${phase_number}): add SPEC.md for ${phase_name} — ${requirement_count} requirements (#2213)"
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
If `commit_docs` is false: Skip commit. Note that SPEC.md was written but not committed.
|
|
225
|
+
|
|
226
|
+
## Step 8: Wrap Up
|
|
227
|
+
|
|
228
|
+
Display:
|
|
229
|
+
|
|
230
|
+
```
|
|
231
|
+
SPEC.md written — {N} requirements locked.
|
|
232
|
+
|
|
233
|
+
Phase {X}: {name}
|
|
234
|
+
Ambiguity: {final_score} (gate: ≤ 0.20)
|
|
235
|
+
|
|
236
|
+
Next: /gsd-discuss-phase {X}
|
|
237
|
+
discuss-phase will detect SPEC.md and focus on implementation decisions only.
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
</process>
|
|
241
|
+
|
|
242
|
+
<critical_rules>
|
|
243
|
+
- Every requirement MUST have current state, target state, and acceptance criterion
|
|
244
|
+
- Boundaries section is MANDATORY — cannot be empty
|
|
245
|
+
- "In scope" and "Out of scope" must be explicit lists, not narrative prose
|
|
246
|
+
- Acceptance criteria must be pass/fail — no subjective criteria
|
|
247
|
+
- SPEC.md is NEVER written if the user selects "Abandon"
|
|
248
|
+
- Do NOT ask about HOW to implement — that is discuss-phase territory
|
|
249
|
+
- Scout the codebase BEFORE the first question — grounded questions only
|
|
250
|
+
- Max 2–3 questions per round — do not frontload all questions at once
|
|
251
|
+
</critical_rules>
|
|
252
|
+
|
|
253
|
+
<success_criteria>
|
|
254
|
+
- Codebase scouted and current state understood before questioning
|
|
255
|
+
- All 4 dimensions scored after every round
|
|
256
|
+
- Gate passed OR user explicitly chose to write despite gaps
|
|
257
|
+
- SPEC.md contains only falsifiable requirements
|
|
258
|
+
- Boundaries are explicit (in scope / out of scope with reasoning)
|
|
259
|
+
- Acceptance criteria are pass/fail checkboxes
|
|
260
|
+
- SPEC.md committed atomically (when commit_docs is true)
|
|
261
|
+
- User directed to /gsd-discuss-phase as next step
|
|
262
|
+
</success_criteria>
|