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,331 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:reapply-patches
|
|
3
|
+
description: Reapply local modifications after a GSD update
|
|
4
|
+
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
<purpose>
|
|
8
|
+
After a GSD update wipes and reinstalls files, this command merges user's previously saved local modifications back into the new version. Uses three-way comparison (pristine baseline, user-modified backup, newly installed version) to reliably distinguish user customizations from version drift.
|
|
9
|
+
|
|
10
|
+
**Critical invariant:** Every file in `gsd-local-patches/` was backed up because the installer's hash comparison detected it was modified. The workflow must NEVER conclude "no custom content" for any backed-up file — that is a logical contradiction. When in doubt, classify as CONFLICT requiring user review, not SKIP.
|
|
11
|
+
</purpose>
|
|
12
|
+
|
|
13
|
+
<process>
|
|
14
|
+
|
|
15
|
+
## Step 1: Detect backed-up patches
|
|
16
|
+
|
|
17
|
+
Check for local patches directory:
|
|
18
|
+
|
|
19
|
+
```bash
|
|
20
|
+
expand_home() {
|
|
21
|
+
case "$1" in
|
|
22
|
+
"~/"*) printf '%s/%s\n' "$HOME" "${1#~/}" ;;
|
|
23
|
+
*) printf '%s\n' "$1" ;;
|
|
24
|
+
esac
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
PATCHES_DIR=""
|
|
28
|
+
|
|
29
|
+
# Env overrides first — covers custom config directories used with --config-dir
|
|
30
|
+
if [ -n "$KILO_CONFIG_DIR" ]; then
|
|
31
|
+
candidate="$(expand_home "$KILO_CONFIG_DIR")/gsd-local-patches"
|
|
32
|
+
if [ -d "$candidate" ]; then
|
|
33
|
+
PATCHES_DIR="$candidate"
|
|
34
|
+
fi
|
|
35
|
+
elif [ -n "$KILO_CONFIG" ]; then
|
|
36
|
+
candidate="$(dirname "$(expand_home "$KILO_CONFIG")")/gsd-local-patches"
|
|
37
|
+
if [ -d "$candidate" ]; then
|
|
38
|
+
PATCHES_DIR="$candidate"
|
|
39
|
+
fi
|
|
40
|
+
elif [ -n "$XDG_CONFIG_HOME" ]; then
|
|
41
|
+
candidate="$(expand_home "$XDG_CONFIG_HOME")/kilo/gsd-local-patches"
|
|
42
|
+
if [ -d "$candidate" ]; then
|
|
43
|
+
PATCHES_DIR="$candidate"
|
|
44
|
+
fi
|
|
45
|
+
fi
|
|
46
|
+
|
|
47
|
+
if [ -z "$PATCHES_DIR" ] && [ -n "$OPENCODE_CONFIG_DIR" ]; then
|
|
48
|
+
candidate="$(expand_home "$OPENCODE_CONFIG_DIR")/gsd-local-patches"
|
|
49
|
+
if [ -d "$candidate" ]; then
|
|
50
|
+
PATCHES_DIR="$candidate"
|
|
51
|
+
fi
|
|
52
|
+
elif [ -z "$PATCHES_DIR" ] && [ -n "$OPENCODE_CONFIG" ]; then
|
|
53
|
+
candidate="$(dirname "$(expand_home "$OPENCODE_CONFIG")")/gsd-local-patches"
|
|
54
|
+
if [ -d "$candidate" ]; then
|
|
55
|
+
PATCHES_DIR="$candidate"
|
|
56
|
+
fi
|
|
57
|
+
elif [ -z "$PATCHES_DIR" ] && [ -n "$XDG_CONFIG_HOME" ]; then
|
|
58
|
+
candidate="$(expand_home "$XDG_CONFIG_HOME")/opencode/gsd-local-patches"
|
|
59
|
+
if [ -d "$candidate" ]; then
|
|
60
|
+
PATCHES_DIR="$candidate"
|
|
61
|
+
fi
|
|
62
|
+
fi
|
|
63
|
+
|
|
64
|
+
if [ -z "$PATCHES_DIR" ] && [ -n "$GEMINI_CONFIG_DIR" ]; then
|
|
65
|
+
candidate="$(expand_home "$GEMINI_CONFIG_DIR")/gsd-local-patches"
|
|
66
|
+
if [ -d "$candidate" ]; then
|
|
67
|
+
PATCHES_DIR="$candidate"
|
|
68
|
+
fi
|
|
69
|
+
fi
|
|
70
|
+
|
|
71
|
+
if [ -z "$PATCHES_DIR" ] && [ -n "$CODEX_HOME" ]; then
|
|
72
|
+
candidate="$(expand_home "$CODEX_HOME")/gsd-local-patches"
|
|
73
|
+
if [ -d "$candidate" ]; then
|
|
74
|
+
PATCHES_DIR="$candidate"
|
|
75
|
+
fi
|
|
76
|
+
fi
|
|
77
|
+
|
|
78
|
+
if [ -z "$PATCHES_DIR" ] && [ -n "$CLAUDE_CONFIG_DIR" ]; then
|
|
79
|
+
candidate="$(expand_home "$CLAUDE_CONFIG_DIR")/gsd-local-patches"
|
|
80
|
+
if [ -d "$candidate" ]; then
|
|
81
|
+
PATCHES_DIR="$candidate"
|
|
82
|
+
fi
|
|
83
|
+
fi
|
|
84
|
+
|
|
85
|
+
# Global install — detect runtime config directory defaults
|
|
86
|
+
if [ -z "$PATCHES_DIR" ]; then
|
|
87
|
+
if [ -d "$HOME/.config/kilo/gsd-local-patches" ]; then
|
|
88
|
+
PATCHES_DIR="$HOME/.config/kilo/gsd-local-patches"
|
|
89
|
+
elif [ -d "$HOME/.config/opencode/gsd-local-patches" ]; then
|
|
90
|
+
PATCHES_DIR="$HOME/.config/opencode/gsd-local-patches"
|
|
91
|
+
elif [ -d "$HOME/.opencode/gsd-local-patches" ]; then
|
|
92
|
+
PATCHES_DIR="$HOME/.opencode/gsd-local-patches"
|
|
93
|
+
elif [ -d "$HOME/.gemini/gsd-local-patches" ]; then
|
|
94
|
+
PATCHES_DIR="$HOME/.gemini/gsd-local-patches"
|
|
95
|
+
elif [ -d "$HOME/.codex/gsd-local-patches" ]; then
|
|
96
|
+
PATCHES_DIR="$HOME/.codex/gsd-local-patches"
|
|
97
|
+
else
|
|
98
|
+
PATCHES_DIR="$HOME/.claude/gsd-local-patches"
|
|
99
|
+
fi
|
|
100
|
+
fi
|
|
101
|
+
# Local install fallback — check all runtime directories
|
|
102
|
+
if [ ! -d "$PATCHES_DIR" ]; then
|
|
103
|
+
for dir in .config/kilo .kilo .config/opencode .opencode .gemini .codex .claude; do
|
|
104
|
+
if [ -d "./$dir/gsd-local-patches" ]; then
|
|
105
|
+
PATCHES_DIR="./$dir/gsd-local-patches"
|
|
106
|
+
break
|
|
107
|
+
fi
|
|
108
|
+
done
|
|
109
|
+
fi
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
Read `backup-meta.json` from the patches directory.
|
|
113
|
+
|
|
114
|
+
**If no patches found:**
|
|
115
|
+
```
|
|
116
|
+
No local patches found. Nothing to reapply.
|
|
117
|
+
|
|
118
|
+
Local patches are automatically saved when you run /gsd-update
|
|
119
|
+
after modifying any GSD workflow, command, or agent files.
|
|
120
|
+
```
|
|
121
|
+
Exit.
|
|
122
|
+
|
|
123
|
+
## Step 2: Determine baseline for three-way comparison
|
|
124
|
+
|
|
125
|
+
The quality of the merge depends on having a **pristine baseline** — the original unmodified version of each file from the pre-update GSD release. This enables three-way comparison:
|
|
126
|
+
- **Pristine baseline** (original GSD file before any user edits)
|
|
127
|
+
- **User's version** (backed up in `gsd-local-patches/`)
|
|
128
|
+
- **New version** (freshly installed after update)
|
|
129
|
+
|
|
130
|
+
Check for baseline sources in priority order:
|
|
131
|
+
|
|
132
|
+
### Option A: Pristine hash from backup-meta.json + git history (most reliable)
|
|
133
|
+
If the config directory is a git repository:
|
|
134
|
+
```bash
|
|
135
|
+
CONFIG_DIR=$(dirname "$PATCHES_DIR")
|
|
136
|
+
if git -C "$CONFIG_DIR" rev-parse --git-dir >/dev/null 2>&1; then
|
|
137
|
+
HAS_GIT=true
|
|
138
|
+
fi
|
|
139
|
+
```
|
|
140
|
+
When `HAS_GIT=true`, use the `pristine_hashes` recorded in `backup-meta.json` to locate the correct baseline commit. For each file, iterate commits that touched it and find the one whose blob SHA-256 matches the recorded pristine hash:
|
|
141
|
+
```bash
|
|
142
|
+
# Get the expected pristine SHA-256 from backup-meta.json
|
|
143
|
+
PRISTINE_HASH=$(jq -r ".pristine_hashes[\"${file_path}\"] // empty" "$PATCHES_DIR/backup-meta.json")
|
|
144
|
+
|
|
145
|
+
BASELINE_COMMIT=""
|
|
146
|
+
if [ -n "$PRISTINE_HASH" ]; then
|
|
147
|
+
# Walk commits that touched this file, pick the one matching the pristine hash
|
|
148
|
+
while IFS= read -r commit_hash; do
|
|
149
|
+
blob_hash=$(git -C "$CONFIG_DIR" show "${commit_hash}:${file_path}" 2>/dev/null | sha256sum | cut -d' ' -f1)
|
|
150
|
+
if [ "$blob_hash" = "$PRISTINE_HASH" ]; then
|
|
151
|
+
BASELINE_COMMIT="$commit_hash"
|
|
152
|
+
break
|
|
153
|
+
fi
|
|
154
|
+
done < <(git -C "$CONFIG_DIR" log --format="%H" -- "${file_path}")
|
|
155
|
+
fi
|
|
156
|
+
|
|
157
|
+
# Fallback: if no pristine hash in backup-meta (older installer), use first-add commit
|
|
158
|
+
if [ -z "$BASELINE_COMMIT" ]; then
|
|
159
|
+
BASELINE_COMMIT=$(git -C "$CONFIG_DIR" log --diff-filter=A --format="%H" -- "${file_path}" | tail -1)
|
|
160
|
+
fi
|
|
161
|
+
```
|
|
162
|
+
Extract the pristine version from the matched commit:
|
|
163
|
+
```bash
|
|
164
|
+
git -C "$CONFIG_DIR" show "${BASELINE_COMMIT}:${file_path}"
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
**Why this matters:** `git log --diff-filter=A` returns the commit that *first added* the file, which is the wrong baseline on repos that have been through multiple GSD update cycles. The `pristine_hashes` field in `backup-meta.json` records the SHA-256 of the file as it existed in the pre-update GSD release — matching against it finds the correct baseline regardless of how many updates have occurred.
|
|
168
|
+
|
|
169
|
+
### Option B: Pristine snapshot directory
|
|
170
|
+
Check if a `gsd-pristine/` directory exists alongside `gsd-local-patches/`:
|
|
171
|
+
```bash
|
|
172
|
+
PRISTINE_DIR="$CONFIG_DIR/gsd-pristine"
|
|
173
|
+
```
|
|
174
|
+
If it exists, the installer saved pristine copies at install time. Use these as the baseline.
|
|
175
|
+
|
|
176
|
+
### Option C: No baseline available (two-way fallback)
|
|
177
|
+
If neither git history nor pristine snapshots are available, fall back to two-way comparison — but with **strengthened heuristics** (see Step 3).
|
|
178
|
+
|
|
179
|
+
## Step 3: Show patch summary
|
|
180
|
+
|
|
181
|
+
```
|
|
182
|
+
## Local Patches to Reapply
|
|
183
|
+
|
|
184
|
+
**Backed up from:** v{from_version}
|
|
185
|
+
**Current version:** {read VERSION file}
|
|
186
|
+
**Files modified:** {count}
|
|
187
|
+
**Merge strategy:** {three-way (git) | three-way (pristine) | two-way (enhanced)}
|
|
188
|
+
|
|
189
|
+
| # | File | Status |
|
|
190
|
+
|---|------|--------|
|
|
191
|
+
| 1 | {file_path} | Pending |
|
|
192
|
+
| 2 | {file_path} | Pending |
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
## Step 4: Merge each file
|
|
196
|
+
|
|
197
|
+
For each file in `backup-meta.json`:
|
|
198
|
+
|
|
199
|
+
1. **Read the backed-up version** (user's modified copy from `gsd-local-patches/`)
|
|
200
|
+
2. **Read the newly installed version** (current file after update)
|
|
201
|
+
3. **If available, read the pristine baseline** (from git history or `gsd-pristine/`)
|
|
202
|
+
|
|
203
|
+
### Three-way merge (when baseline is available)
|
|
204
|
+
|
|
205
|
+
Compare the three versions to isolate changes:
|
|
206
|
+
- **User changes** = diff(pristine → user's version) — these are the customizations to preserve
|
|
207
|
+
- **Upstream changes** = diff(pristine → new version) — these are version updates to accept
|
|
208
|
+
|
|
209
|
+
**Merge rules:**
|
|
210
|
+
- Sections changed only by user → apply user's version
|
|
211
|
+
- Sections changed only by upstream → accept upstream version
|
|
212
|
+
- Sections changed by both → flag as CONFLICT, show both, ask user
|
|
213
|
+
- Sections unchanged by either → use new version (identical to all three)
|
|
214
|
+
|
|
215
|
+
### Two-way merge (fallback when no baseline)
|
|
216
|
+
|
|
217
|
+
When no pristine baseline is available, use these **strengthened heuristics**:
|
|
218
|
+
|
|
219
|
+
**CRITICAL RULE: Every file in this backup directory was explicitly detected as modified by the installer's SHA-256 hash comparison. "No custom content" is never a valid conclusion.**
|
|
220
|
+
|
|
221
|
+
For each file:
|
|
222
|
+
a. Read both versions completely
|
|
223
|
+
b. Identify ALL differences, then classify each as:
|
|
224
|
+
- **Mechanical drift** — path substitutions (e.g. `/Users/xxx/.claude/` → `$HOME/.claude/`), variable additions (`${GSD_WS}`, `${AGENT_SKILLS_*}`), error handling additions (`|| true`)
|
|
225
|
+
- **User customization** — added steps/sections, removed sections, reordered content, changed behavior, added frontmatter fields, modified instructions
|
|
226
|
+
|
|
227
|
+
c. **If ANY differences remain after filtering out mechanical drift → those are user customizations. Merge them.**
|
|
228
|
+
d. **If ALL differences appear to be mechanical drift → still flag as CONFLICT.** The installer's hash check already proved this file was modified. Ask the user: "This file appears to only have path/variable differences. Were there intentional customizations?" Do NOT silently skip.
|
|
229
|
+
|
|
230
|
+
### Git-enhanced two-way merge
|
|
231
|
+
|
|
232
|
+
When the config directory is a git repo but the pristine install commit can't be found, use commit history to identify user changes:
|
|
233
|
+
```bash
|
|
234
|
+
# Find non-update commits that touched this file
|
|
235
|
+
git -C "$CONFIG_DIR" log --oneline --no-merges -- "{file_path}" | grep -v "gsd:update\|GSD update\|gsd-install"
|
|
236
|
+
```
|
|
237
|
+
Each matching commit represents an intentional user modification. Use the commit messages and diffs to understand what was changed and why.
|
|
238
|
+
|
|
239
|
+
4. **Write merged result** to the installed location
|
|
240
|
+
|
|
241
|
+
### Post-merge verification
|
|
242
|
+
|
|
243
|
+
After writing each merged file, verify that user modifications survived the merge:
|
|
244
|
+
|
|
245
|
+
1. **Line-count check:** Count lines in the backup and the merged result. If the merged result has fewer lines than the backup minus the expected upstream removals, flag for review.
|
|
246
|
+
2. **Hunk presence check:** For each user-added section identified during diff analysis, search the merged output for at least the first significant line (non-blank, non-comment) of each addition. Missing signature lines indicate a dropped hunk.
|
|
247
|
+
3. **Report warnings inline** (do not block):
|
|
248
|
+
```
|
|
249
|
+
⚠ Potential dropped content in {file_path}:
|
|
250
|
+
- Missing hunk near line {N}: "{first_line_preview}..." ({line_count} lines)
|
|
251
|
+
- Backup available: {patches_dir}/{file_path}
|
|
252
|
+
```
|
|
253
|
+
4. **Produce a Hunk Verification Table** — one row per hunk per file. This table is **mandatory output** and must be produced before Step 5 can proceed. Format:
|
|
254
|
+
|
|
255
|
+
| file | hunk_id | signature_line | line_count | verified |
|
|
256
|
+
|------|---------|----------------|------------|----------|
|
|
257
|
+
| {file_path} | {N} | {first_significant_line} | {count} | yes |
|
|
258
|
+
| {file_path} | {N} | {first_significant_line} | {count} | no |
|
|
259
|
+
|
|
260
|
+
- `hunk_id` — sequential integer per file (1, 2, 3…)
|
|
261
|
+
- `signature_line` — first non-blank, non-comment line of the user-added section
|
|
262
|
+
- `line_count` — total lines in the hunk
|
|
263
|
+
- `verified` — `yes` if the signature_line is present in the merged output, `no` otherwise
|
|
264
|
+
|
|
265
|
+
5. **Track verification status** — add to per-file report: `Merged (verified)` vs `Merged (⚠ {N} hunks may be missing)`
|
|
266
|
+
|
|
267
|
+
6. **Report status per file:**
|
|
268
|
+
- `Merged` — user modifications applied cleanly (show summary of what was preserved)
|
|
269
|
+
- `Conflict` — user reviewed and chose resolution
|
|
270
|
+
- `Incorporated` — user's modification was already adopted upstream (only valid when pristine baseline confirms this)
|
|
271
|
+
|
|
272
|
+
**Never report `Skipped — no custom content`.** If a file is in the backup, it has custom content.
|
|
273
|
+
|
|
274
|
+
## Step 5: Hunk Verification Gate
|
|
275
|
+
|
|
276
|
+
Before proceeding to cleanup, evaluate the Hunk Verification Table produced in Step 4.
|
|
277
|
+
|
|
278
|
+
**If the Hunk Verification Table is absent** (Step 4 did not produce it), STOP immediately and report to the user:
|
|
279
|
+
```
|
|
280
|
+
ERROR: Hunk Verification Table is missing. Post-merge verification was not completed.
|
|
281
|
+
Rerun /gsd-reapply-patches to retry with full verification.
|
|
282
|
+
```
|
|
283
|
+
|
|
284
|
+
**If any row in the Hunk Verification Table shows `verified: no`**, STOP and report to the user:
|
|
285
|
+
```
|
|
286
|
+
ERROR: {N} hunk(s) failed verification — content may have been dropped during merge.
|
|
287
|
+
|
|
288
|
+
Unverified hunks:
|
|
289
|
+
{file} hunk {hunk_id}: signature line "{signature_line}" not found in merged output
|
|
290
|
+
|
|
291
|
+
The backup is preserved at: {patches_dir}/{file}
|
|
292
|
+
Review the merged file manually, then either:
|
|
293
|
+
(a) Re-merge the missing content by hand, or
|
|
294
|
+
(b) Restore from backup: cp {patches_dir}/{file} {installed_path}
|
|
295
|
+
```
|
|
296
|
+
|
|
297
|
+
Do not proceed to cleanup until the user confirms they have resolved all unverified hunks.
|
|
298
|
+
|
|
299
|
+
**Only when all rows show `verified: yes`** (or when all files had zero user-added hunks) may execution continue to Step 6.
|
|
300
|
+
|
|
301
|
+
## Step 6: Cleanup option
|
|
302
|
+
|
|
303
|
+
Ask user:
|
|
304
|
+
- "Keep patch backups for reference?" → preserve `gsd-local-patches/`
|
|
305
|
+
- "Clean up patch backups?" → remove `gsd-local-patches/` directory
|
|
306
|
+
|
|
307
|
+
## Step 7: Report
|
|
308
|
+
|
|
309
|
+
```
|
|
310
|
+
## Patches Reapplied
|
|
311
|
+
|
|
312
|
+
| # | File | Result | User Changes Preserved |
|
|
313
|
+
|---|------|--------|----------------------|
|
|
314
|
+
| 1 | {file_path} | Merged | Added step X, modified section Y |
|
|
315
|
+
| 2 | {file_path} | Incorporated | Already in upstream v{version} |
|
|
316
|
+
| 3 | {file_path} | Conflict resolved | User chose: keep custom section |
|
|
317
|
+
|
|
318
|
+
{count} file(s) updated. Your local modifications are active again.
|
|
319
|
+
```
|
|
320
|
+
|
|
321
|
+
</process>
|
|
322
|
+
|
|
323
|
+
<success_criteria>
|
|
324
|
+
- [ ] All backed-up patches processed — zero files left unhandled
|
|
325
|
+
- [ ] No file classified as "no custom content" or "SKIP" — every backed-up file is definitionally modified
|
|
326
|
+
- [ ] Three-way merge used when pristine baseline available (git history or gsd-pristine/)
|
|
327
|
+
- [ ] User modifications identified and merged into new version
|
|
328
|
+
- [ ] Conflicts surfaced to user with both versions shown
|
|
329
|
+
- [ ] Status reported for each file with summary of what was preserved
|
|
330
|
+
- [ ] Post-merge verification checks each file for dropped hunks and warns if content appears missing
|
|
331
|
+
</success_criteria>
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:remove-phase
|
|
3
|
+
description: Remove a future phase from roadmap and renumber subsequent phases
|
|
4
|
+
argument-hint: <phase-number>
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
---
|
|
11
|
+
<objective>
|
|
12
|
+
Remove an unstarted future phase from the roadmap and renumber all subsequent phases to maintain a clean, linear sequence.
|
|
13
|
+
|
|
14
|
+
Purpose: Clean removal of work you've decided not to do, without polluting context with cancelled/deferred markers.
|
|
15
|
+
Output: Phase deleted, all subsequent phases renumbered, git commit as historical record.
|
|
16
|
+
</objective>
|
|
17
|
+
|
|
18
|
+
<execution_context>
|
|
19
|
+
@~/.claude/get-shit-done/workflows/remove-phase.md
|
|
20
|
+
</execution_context>
|
|
21
|
+
|
|
22
|
+
<context>
|
|
23
|
+
Phase: $ARGUMENTS
|
|
24
|
+
|
|
25
|
+
Roadmap and state are resolved in-workflow via `init phase-op` and targeted reads.
|
|
26
|
+
</context>
|
|
27
|
+
|
|
28
|
+
<process>
|
|
29
|
+
Execute the remove-phase workflow from @~/.claude/get-shit-done/workflows/remove-phase.md end-to-end.
|
|
30
|
+
Preserve all validation gates (future phase check, work check), renumbering logic, and commit.
|
|
31
|
+
</process>
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:remove-workspace
|
|
3
|
+
description: Remove a GSD workspace and clean up worktrees
|
|
4
|
+
argument-hint: "<workspace-name>"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Bash
|
|
7
|
+
- Read
|
|
8
|
+
- AskUserQuestion
|
|
9
|
+
---
|
|
10
|
+
<context>
|
|
11
|
+
**Arguments:**
|
|
12
|
+
- `<workspace-name>` (required) — Name of the workspace to remove
|
|
13
|
+
</context>
|
|
14
|
+
|
|
15
|
+
<objective>
|
|
16
|
+
Remove a workspace directory after confirmation. For worktree strategy, runs `git worktree remove` for each member repo first. Refuses if any repo has uncommitted changes.
|
|
17
|
+
</objective>
|
|
18
|
+
|
|
19
|
+
<execution_context>
|
|
20
|
+
@~/.claude/get-shit-done/workflows/remove-workspace.md
|
|
21
|
+
@~/.claude/get-shit-done/references/ui-brand.md
|
|
22
|
+
</execution_context>
|
|
23
|
+
|
|
24
|
+
<process>
|
|
25
|
+
Execute the remove-workspace workflow from @~/.claude/get-shit-done/workflows/remove-workspace.md end-to-end.
|
|
26
|
+
</process>
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:research-phase
|
|
3
|
+
description: Research how to implement a phase (standalone - usually use /gsd-plan-phase instead)
|
|
4
|
+
argument-hint: "[phase]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Bash
|
|
8
|
+
- Task
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<objective>
|
|
12
|
+
Research how to implement a phase. Spawns gsd-phase-researcher agent with phase context.
|
|
13
|
+
|
|
14
|
+
**Note:** This is a standalone research command. For most workflows, use `/gsd-plan-phase` which integrates research automatically.
|
|
15
|
+
|
|
16
|
+
**Use this command when:**
|
|
17
|
+
- You want to research without planning yet
|
|
18
|
+
- You want to re-research after planning is complete
|
|
19
|
+
- You need to investigate before deciding if a phase is feasible
|
|
20
|
+
|
|
21
|
+
**Orchestrator role:** Parse phase, validate against roadmap, check existing research, gather context, spawn researcher agent, present results.
|
|
22
|
+
|
|
23
|
+
**Why subagent:** Research burns context fast (WebSearch, Context7 queries, source verification). Fresh 200k context for investigation. Main context stays lean for user interaction.
|
|
24
|
+
</objective>
|
|
25
|
+
|
|
26
|
+
<available_agent_types>
|
|
27
|
+
Valid GSD subagent types (use exact names — do not fall back to 'general-purpose'):
|
|
28
|
+
- gsd-phase-researcher — Researches technical approaches for a phase
|
|
29
|
+
</available_agent_types>
|
|
30
|
+
|
|
31
|
+
<context>
|
|
32
|
+
Phase number: $ARGUMENTS (required)
|
|
33
|
+
|
|
34
|
+
Normalize phase input in step 1 before any directory lookups.
|
|
35
|
+
</context>
|
|
36
|
+
|
|
37
|
+
<process>
|
|
38
|
+
|
|
39
|
+
## 0. Initialize Context
|
|
40
|
+
|
|
41
|
+
```bash
|
|
42
|
+
INIT=$(gsd-remix-sdk query init.phase-op "$ARGUMENTS")
|
|
43
|
+
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`, `phase_found`, `commit_docs`, `has_research`, `state_path`, `requirements_path`, `context_path`, `research_path`.
|
|
47
|
+
|
|
48
|
+
Resolve researcher model:
|
|
49
|
+
```bash
|
|
50
|
+
RESEARCHER_MODEL=$(gsd-remix-sdk query resolve-model gsd-phase-researcher --raw)
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
## 1. Validate Phase
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
PHASE_INFO=$(gsd-remix-sdk query roadmap.get-phase "${phase_number}")
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
**If `found` is false:** Error and exit. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
|
|
60
|
+
|
|
61
|
+
## 2. Check Existing Research
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
ls .planning/phases/${PHASE}-*/RESEARCH.md 2>/dev/null
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**If exists:** Offer: 1) Update research, 2) View existing, 3) Skip. Wait for response.
|
|
68
|
+
|
|
69
|
+
**If doesn't exist:** Continue.
|
|
70
|
+
|
|
71
|
+
## 3. Gather Phase Context
|
|
72
|
+
|
|
73
|
+
Use paths from INIT (do not inline file contents in orchestrator context):
|
|
74
|
+
- `requirements_path`
|
|
75
|
+
- `context_path`
|
|
76
|
+
- `state_path`
|
|
77
|
+
|
|
78
|
+
Present summary with phase description and what files the researcher will load.
|
|
79
|
+
|
|
80
|
+
## 4. Spawn gsd-phase-researcher Agent
|
|
81
|
+
|
|
82
|
+
Research modes: ecosystem (default), feasibility, implementation, comparison.
|
|
83
|
+
|
|
84
|
+
```markdown
|
|
85
|
+
<research_type>
|
|
86
|
+
Phase Research — investigating HOW to implement a specific phase well.
|
|
87
|
+
</research_type>
|
|
88
|
+
|
|
89
|
+
<key_insight>
|
|
90
|
+
The question is NOT "which library should I use?"
|
|
91
|
+
|
|
92
|
+
The question is: "What do I not know that I don't know?"
|
|
93
|
+
|
|
94
|
+
For this phase, discover:
|
|
95
|
+
- What's the established architecture pattern?
|
|
96
|
+
- What libraries form the standard stack?
|
|
97
|
+
- What problems do people commonly hit?
|
|
98
|
+
- What's SOTA vs what Claude's training thinks is SOTA?
|
|
99
|
+
- What should NOT be hand-rolled?
|
|
100
|
+
</key_insight>
|
|
101
|
+
|
|
102
|
+
<objective>
|
|
103
|
+
Research implementation approach for Phase {phase_number}: {phase_name}
|
|
104
|
+
Mode: ecosystem
|
|
105
|
+
</objective>
|
|
106
|
+
|
|
107
|
+
<files_to_read>
|
|
108
|
+
- {requirements_path} (Requirements)
|
|
109
|
+
- {context_path} (Phase context from discuss-phase, if exists)
|
|
110
|
+
- {state_path} (Prior project decisions and blockers)
|
|
111
|
+
</files_to_read>
|
|
112
|
+
|
|
113
|
+
<additional_context>
|
|
114
|
+
**Phase description:** {phase_description}
|
|
115
|
+
</additional_context>
|
|
116
|
+
|
|
117
|
+
<downstream_consumer>
|
|
118
|
+
Your RESEARCH.md will be loaded by `/gsd-plan-phase` which uses specific sections:
|
|
119
|
+
- `## Standard Stack` → Plans use these libraries
|
|
120
|
+
- `## Architecture Patterns` → Task structure follows these
|
|
121
|
+
- `## Don't Hand-Roll` → Tasks NEVER build custom solutions for listed problems
|
|
122
|
+
- `## Common Pitfalls` → Verification steps check for these
|
|
123
|
+
- `## Code Examples` → Task actions reference these patterns
|
|
124
|
+
|
|
125
|
+
Be prescriptive, not exploratory. "Use X" not "Consider X or Y."
|
|
126
|
+
</downstream_consumer>
|
|
127
|
+
|
|
128
|
+
<quality_gate>
|
|
129
|
+
Before declaring complete, verify:
|
|
130
|
+
- [ ] All domains investigated (not just some)
|
|
131
|
+
- [ ] Negative claims verified with official docs
|
|
132
|
+
- [ ] Multiple sources for critical claims
|
|
133
|
+
- [ ] Confidence levels assigned honestly
|
|
134
|
+
- [ ] Section names match what plan-phase expects
|
|
135
|
+
</quality_gate>
|
|
136
|
+
|
|
137
|
+
<output>
|
|
138
|
+
Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
|
|
139
|
+
</output>
|
|
140
|
+
```
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
Task(
|
|
144
|
+
prompt=filled_prompt,
|
|
145
|
+
subagent_type="gsd-phase-researcher",
|
|
146
|
+
model="{researcher_model}",
|
|
147
|
+
description="Research Phase {phase}"
|
|
148
|
+
)
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## 5. Handle Agent Return
|
|
152
|
+
|
|
153
|
+
**`## RESEARCH COMPLETE`:** Display summary, offer: Plan phase, Dig deeper, Review full, Done.
|
|
154
|
+
|
|
155
|
+
**`## CHECKPOINT REACHED`:** Present to user, get response, spawn continuation.
|
|
156
|
+
|
|
157
|
+
**`## RESEARCH INCONCLUSIVE`:** Show what was attempted, offer: Add context, Try different mode, Manual.
|
|
158
|
+
|
|
159
|
+
## 6. Spawn Continuation Agent
|
|
160
|
+
|
|
161
|
+
```markdown
|
|
162
|
+
<objective>
|
|
163
|
+
Continue research for Phase {phase_number}: {phase_name}
|
|
164
|
+
</objective>
|
|
165
|
+
|
|
166
|
+
<prior_state>
|
|
167
|
+
<files_to_read>
|
|
168
|
+
- .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md (Existing research)
|
|
169
|
+
</files_to_read>
|
|
170
|
+
</prior_state>
|
|
171
|
+
|
|
172
|
+
<checkpoint_response>
|
|
173
|
+
**Type:** {checkpoint_type}
|
|
174
|
+
**Response:** {user_response}
|
|
175
|
+
</checkpoint_response>
|
|
176
|
+
```
|
|
177
|
+
|
|
178
|
+
```
|
|
179
|
+
Task(
|
|
180
|
+
prompt=continuation_prompt,
|
|
181
|
+
subagent_type="gsd-phase-researcher",
|
|
182
|
+
model="{researcher_model}",
|
|
183
|
+
description="Continue research Phase {phase}"
|
|
184
|
+
)
|
|
185
|
+
```
|
|
186
|
+
|
|
187
|
+
</process>
|
|
188
|
+
|
|
189
|
+
<success_criteria>
|
|
190
|
+
- [ ] Phase validated against roadmap
|
|
191
|
+
- [ ] Existing research checked
|
|
192
|
+
- [ ] gsd-phase-researcher spawned with context
|
|
193
|
+
- [ ] Checkpoints handled correctly
|
|
194
|
+
- [ ] User knows next steps
|
|
195
|
+
</success_criteria>
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:resume-work
|
|
3
|
+
description: Resume work from previous session with full context restoration
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Bash
|
|
7
|
+
- Write
|
|
8
|
+
- AskUserQuestion
|
|
9
|
+
- SlashCommand
|
|
10
|
+
---
|
|
11
|
+
|
|
12
|
+
<objective>
|
|
13
|
+
Restore complete project context and resume work seamlessly from previous session.
|
|
14
|
+
|
|
15
|
+
Routes to the resume-project workflow which handles:
|
|
16
|
+
|
|
17
|
+
- STATE.md loading (or reconstruction if missing)
|
|
18
|
+
- Checkpoint detection (.continue-here files)
|
|
19
|
+
- Incomplete work detection (PLAN without SUMMARY)
|
|
20
|
+
- Status presentation
|
|
21
|
+
- Context-aware next action routing
|
|
22
|
+
</objective>
|
|
23
|
+
|
|
24
|
+
<execution_context>
|
|
25
|
+
@~/.claude/get-shit-done/workflows/resume-project.md
|
|
26
|
+
</execution_context>
|
|
27
|
+
|
|
28
|
+
<process>
|
|
29
|
+
**Follow the resume-project workflow** from `@~/.claude/get-shit-done/workflows/resume-project.md`.
|
|
30
|
+
|
|
31
|
+
The workflow handles all resumption logic including:
|
|
32
|
+
|
|
33
|
+
1. Project existence verification
|
|
34
|
+
2. STATE.md loading or reconstruction
|
|
35
|
+
3. Checkpoint and incomplete work detection
|
|
36
|
+
4. Visual status presentation
|
|
37
|
+
5. Context-aware option offering (checks CONTEXT.md before suggesting plan vs discuss)
|
|
38
|
+
6. Routing to appropriate next command
|
|
39
|
+
7. Session continuity updates
|
|
40
|
+
</process>
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: gsd:review-backlog
|
|
3
|
+
description: Review and promote backlog items to active milestone
|
|
4
|
+
allowed-tools:
|
|
5
|
+
- Read
|
|
6
|
+
- Write
|
|
7
|
+
- Bash
|
|
8
|
+
- AskUserQuestion
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<objective>
|
|
12
|
+
Review all 999.x backlog items and optionally promote them into the active
|
|
13
|
+
milestone sequence or remove stale entries.
|
|
14
|
+
</objective>
|
|
15
|
+
|
|
16
|
+
<process>
|
|
17
|
+
|
|
18
|
+
1. **List backlog items:**
|
|
19
|
+
```bash
|
|
20
|
+
ls -d .planning/phases/999* 2>/dev/null || echo "No backlog items found"
|
|
21
|
+
```
|
|
22
|
+
|
|
23
|
+
2. **Read ROADMAP.md** and extract all 999.x phase entries:
|
|
24
|
+
```bash
|
|
25
|
+
cat .planning/ROADMAP.md
|
|
26
|
+
```
|
|
27
|
+
Show each backlog item with its description, any accumulated context (CONTEXT.md, RESEARCH.md), and creation date.
|
|
28
|
+
|
|
29
|
+
3. **Present the list to the user** via AskUserQuestion:
|
|
30
|
+
- For each backlog item, show: phase number, description, accumulated artifacts
|
|
31
|
+
- Options per item: **Promote** (move to active), **Keep** (leave in backlog), **Remove** (delete)
|
|
32
|
+
|
|
33
|
+
4. **For items to PROMOTE:**
|
|
34
|
+
- Find the next sequential phase number in the active milestone
|
|
35
|
+
- Rename the directory from `999.x-slug` to `{new_num}-slug`:
|
|
36
|
+
```bash
|
|
37
|
+
NEW_NUM=$(gsd-remix-sdk query phase.add "${DESCRIPTION}" --raw)
|
|
38
|
+
```
|
|
39
|
+
- Move accumulated artifacts to the new phase directory
|
|
40
|
+
- Update ROADMAP.md: move the entry from `## Backlog` section to the active phase list
|
|
41
|
+
- Remove `(BACKLOG)` marker
|
|
42
|
+
- Add appropriate `**Depends on:**` field
|
|
43
|
+
|
|
44
|
+
5. **For items to REMOVE:**
|
|
45
|
+
- Delete the phase directory
|
|
46
|
+
- Remove the entry from ROADMAP.md `## Backlog` section
|
|
47
|
+
|
|
48
|
+
6. **Commit changes:**
|
|
49
|
+
```bash
|
|
50
|
+
gsd-remix-sdk query commit "docs: review backlog — promoted N, removed M" .planning/ROADMAP.md
|
|
51
|
+
```
|
|
52
|
+
|
|
53
|
+
7. **Report summary:**
|
|
54
|
+
```
|
|
55
|
+
## 📋 Backlog Review Complete
|
|
56
|
+
|
|
57
|
+
Promoted: {list of promoted items with new phase numbers}
|
|
58
|
+
Kept: {list of items remaining in backlog}
|
|
59
|
+
Removed: {list of deleted items}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
</process>
|