claude-code-pilot 2.0.0 → 3.1.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/README.md +76 -97
- package/bin/install.js +267 -250
- package/manifest.json +5 -18
- package/package.json +5 -7
- package/src/agents/build-error-resolver.md +114 -0
- package/src/agents/ccp-advisor-researcher.md +104 -0
- package/src/agents/ccp-assumptions-analyzer.md +105 -0
- package/{gsd/agents/gsd-codebase-mapper.md → src/agents/ccp-codebase-mapper.md} +7 -7
- package/{gsd/agents/gsd-debugger.md → src/agents/ccp-debugger.md} +125 -8
- package/{gsd/agents/gsd-executor.md → src/agents/ccp-executor.md} +31 -20
- package/{gsd/agents/gsd-integration-checker.md → src/agents/ccp-integration-checker.md} +2 -2
- package/{gsd/agents/gsd-nyquist-auditor.md → src/agents/ccp-nyquist-auditor.md} +3 -3
- package/{gsd/agents/gsd-phase-researcher.md → src/agents/ccp-phase-researcher.md} +127 -13
- package/{gsd/agents/gsd-plan-checker.md → src/agents/ccp-plan-checker.md} +57 -21
- package/{gsd/agents/gsd-planner.md → src/agents/ccp-planner.md} +61 -23
- package/{gsd/agents/gsd-project-researcher.md → src/agents/ccp-project-researcher.md} +33 -6
- package/{gsd/agents/gsd-research-synthesizer.md → src/agents/ccp-research-synthesizer.md} +11 -11
- package/{gsd/agents/gsd-roadmapper.md → src/agents/ccp-roadmapper.md} +39 -10
- package/src/agents/ccp-ui-auditor.md +439 -0
- package/src/agents/ccp-ui-checker.md +300 -0
- package/src/agents/ccp-ui-researcher.md +357 -0
- package/{gsd/agents/gsd-verifier.md → src/agents/ccp-verifier.md} +81 -15
- package/src/agents/cpp-build-resolver.md +90 -0
- package/src/agents/cpp-reviewer.md +72 -0
- package/src/agents/database-reviewer.md +91 -0
- package/{ecc → src}/agents/doc-updater.md +1 -1
- package/src/agents/docs-lookup.md +68 -0
- package/src/agents/flutter-reviewer.md +243 -0
- package/src/agents/gan-evaluator.md +209 -0
- package/src/agents/gan-generator.md +131 -0
- package/src/agents/gan-planner.md +99 -0
- package/src/agents/go-build-resolver.md +94 -0
- package/src/agents/go-reviewer.md +76 -0
- package/src/agents/harness-optimizer.md +35 -0
- package/src/agents/java-build-resolver.md +153 -0
- package/src/agents/java-reviewer.md +92 -0
- package/src/agents/kotlin-build-resolver.md +118 -0
- package/src/agents/kotlin-reviewer.md +159 -0
- package/src/agents/loop-operator.md +36 -0
- package/src/agents/opensource-forker.md +198 -0
- package/src/agents/opensource-packager.md +249 -0
- package/src/agents/opensource-sanitizer.md +188 -0
- package/src/agents/performance-optimizer.md +446 -0
- package/src/agents/planner.md +212 -0
- package/src/agents/python-reviewer.md +98 -0
- package/src/agents/pytorch-build-resolver.md +120 -0
- package/src/agents/refactor-cleaner.md +85 -0
- package/src/agents/rust-build-resolver.md +148 -0
- package/src/agents/rust-reviewer.md +94 -0
- package/src/agents/typescript-reviewer.md +112 -0
- package/src/available-rules/README.md +80 -0
- package/src/available-rules/cpp/coding-style.md +44 -0
- package/src/available-rules/cpp/hooks.md +39 -0
- package/src/available-rules/cpp/patterns.md +51 -0
- package/src/available-rules/cpp/security.md +51 -0
- package/src/available-rules/cpp/testing.md +44 -0
- package/src/available-rules/csharp/coding-style.md +72 -0
- package/src/available-rules/csharp/hooks.md +25 -0
- package/src/available-rules/csharp/patterns.md +50 -0
- package/src/available-rules/csharp/security.md +58 -0
- package/src/available-rules/csharp/testing.md +46 -0
- package/src/available-rules/java/coding-style.md +114 -0
- package/src/available-rules/java/hooks.md +18 -0
- package/src/available-rules/java/patterns.md +146 -0
- package/src/available-rules/java/security.md +100 -0
- package/src/available-rules/java/testing.md +131 -0
- package/src/available-rules/kotlin/hooks.md +17 -0
- package/src/available-rules/rust/coding-style.md +151 -0
- package/src/available-rules/rust/hooks.md +16 -0
- package/src/available-rules/rust/patterns.md +168 -0
- package/src/available-rules/rust/security.md +141 -0
- package/src/available-rules/rust/testing.md +154 -0
- package/src/commands/ccp/add-backlog.md +76 -0
- package/{gsd/commands-gsd → src/commands/ccp}/add-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/add-tests.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/add-todo.md +4 -4
- package/src/commands/ccp/aside.md +165 -0
- package/{gsd/commands-gsd → src/commands/ccp}/audit-milestone.md +3 -3
- package/src/commands/ccp/audit-uat.md +24 -0
- package/src/commands/ccp/autonomous.md +41 -0
- package/src/commands/ccp/build-fix.md +67 -0
- package/{gsd/commands-gsd → src/commands/ccp}/check-todos.md +3 -3
- package/{ecc/commands → src/commands/ccp}/checkpoint.md +12 -7
- package/{gsd/commands-gsd → src/commands/ccp}/cleanup.md +3 -3
- package/src/commands/ccp/code-review.md +45 -0
- package/{gsd/commands-gsd → src/commands/ccp}/complete-milestone.md +9 -9
- package/src/commands/ccp/context-budget.md +30 -0
- package/src/commands/ccp/cpp-build.md +174 -0
- package/src/commands/ccp/cpp-review.md +133 -0
- package/src/commands/ccp/cpp-test.md +252 -0
- package/{gsd/commands-gsd → src/commands/ccp}/debug.md +14 -9
- package/src/commands/ccp/discuss-phase.md +64 -0
- package/src/commands/ccp/do.md +30 -0
- package/src/commands/ccp/docs-update.md +48 -0
- package/src/commands/ccp/docs.md +32 -0
- package/src/commands/ccp/e2e.md +365 -0
- package/src/commands/ccp/eval.md +125 -0
- package/{ecc/commands → src/commands/ccp}/evolve.md +5 -5
- package/src/commands/ccp/execute-phase.md +59 -0
- package/src/commands/ccp/fast.md +30 -0
- package/src/commands/ccp/forensics.md +56 -0
- package/src/commands/ccp/go-build.md +184 -0
- package/src/commands/ccp/go-review.md +149 -0
- package/src/commands/ccp/go-test.md +269 -0
- package/src/commands/ccp/gradle-build.md +71 -0
- package/src/commands/ccp/harness-audit.md +76 -0
- package/{gsd/commands-gsd → src/commands/ccp}/health.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/help.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/insert-phase.md +3 -3
- package/src/commands/ccp/kotlin-build.md +175 -0
- package/src/commands/ccp/kotlin-review.md +141 -0
- package/src/commands/ccp/kotlin-test.md +313 -0
- package/{ecc/commands → src/commands/ccp}/learn.md +7 -2
- package/{gsd/commands-gsd → src/commands/ccp}/list-phase-assumptions.md +2 -2
- package/src/commands/ccp/manager.md +39 -0
- package/{gsd/commands-gsd → src/commands/ccp}/map-codebase.md +7 -7
- package/src/commands/ccp/milestone-summary.md +51 -0
- package/{ecc/commands → src/commands/ccp}/model-route.md +6 -1
- package/{gsd/commands-gsd → src/commands/ccp}/new-milestone.md +8 -8
- package/{gsd/commands-gsd → src/commands/ccp}/new-project.md +8 -8
- package/src/commands/ccp/next.md +24 -0
- package/src/commands/ccp/note.md +34 -0
- package/src/commands/ccp/orchestrate.md +232 -0
- package/{gsd/commands-gsd → src/commands/ccp}/pause-work.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/plan-milestone-gaps.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/plan-phase.md +9 -7
- package/src/commands/ccp/plan.md +115 -0
- package/src/commands/ccp/plant-seed.md +28 -0
- package/src/commands/ccp/pr-branch.md +25 -0
- package/src/commands/ccp/profile-user.md +46 -0
- package/{gsd/commands-gsd → src/commands/ccp}/progress.md +3 -3
- package/src/commands/ccp/prompt-optimize.md +39 -0
- package/src/commands/ccp/prune.md +25 -0
- package/src/commands/ccp/python-review.md +298 -0
- package/{ecc/commands → src/commands/ccp}/quality-gate.md +7 -2
- package/{gsd/commands-gsd → src/commands/ccp}/quick.md +10 -8
- package/src/commands/ccp/refactor-clean.md +85 -0
- package/{gsd/commands-gsd → src/commands/ccp}/remove-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/research-phase.md +17 -12
- package/{ecc/commands → src/commands/ccp}/resume-session.md +9 -8
- package/{gsd/commands-gsd → src/commands/ccp}/resume-work.md +3 -3
- package/src/commands/ccp/review-backlog.md +61 -0
- package/src/commands/ccp/review.md +37 -0
- package/src/commands/ccp/rules-distill.md +12 -0
- package/src/commands/ccp/rust-build.md +188 -0
- package/src/commands/ccp/rust-review.md +143 -0
- package/src/commands/ccp/rust-test.md +309 -0
- package/{ecc/commands → src/commands/ccp}/save-session.md +2 -1
- package/src/commands/ccp/secure-phase.md +35 -0
- package/src/commands/ccp/session-report.md +19 -0
- package/{ecc/commands → src/commands/ccp}/sessions.md +39 -34
- package/src/commands/ccp/set-profile.md +12 -0
- package/{gsd/commands-gsd → src/commands/ccp}/settings.md +5 -5
- package/src/commands/ccp/setup-pm.md +81 -0
- package/{kit/commands → src/commands/ccp}/setup-refresh.md +4 -3
- package/{kit/commands → src/commands/ccp}/setup.md +67 -40
- package/src/commands/ccp/ship.md +23 -0
- package/src/commands/ccp/skill-create.md +172 -0
- package/src/commands/ccp/skill-health.md +51 -0
- package/src/commands/ccp/stats.md +18 -0
- package/src/commands/ccp/tdd.md +329 -0
- package/src/commands/ccp/test-coverage.md +74 -0
- package/src/commands/ccp/thread.md +127 -0
- package/{kit/commands → src/commands/ccp}/tool-guide.md +2 -1
- package/src/commands/ccp/ui-phase.md +34 -0
- package/src/commands/ccp/ui-review.md +32 -0
- package/src/commands/ccp/update-codemaps.md +77 -0
- package/src/commands/ccp/update-docs.md +89 -0
- package/{gsd/commands-gsd → src/commands/ccp}/update.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/validate-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/verify-work.md +5 -5
- package/{ecc/commands → src/commands/ccp}/verify.md +5 -0
- package/src/commands/ccp/workstreams.md +68 -0
- package/{ecc → src}/examples/CLAUDE.md +4 -4
- package/{ecc → src}/examples/django-api-CLAUDE.md +5 -5
- package/{ecc → src}/examples/go-microservice-CLAUDE.md +6 -6
- package/{ecc → src}/examples/rust-api-CLAUDE.md +4 -4
- package/{ecc → src}/examples/saas-nextjs-CLAUDE.md +8 -8
- package/{gsd/hooks/gsd-context-monitor.js → src/hooks/ccp-context-monitor.js} +3 -3
- package/src/hooks/ccp-prompt-guard.js +96 -0
- package/{gsd/hooks/gsd-statusline.js → src/hooks/ccp-statusline.js} +7 -7
- package/src/hooks/ccp-workflow-guard.js +94 -0
- package/src/hooks/config-protection.js +141 -0
- package/{kit → src}/hooks/kit-check-update.js +7 -4
- package/src/hooks/mcp-health-check.js +620 -0
- package/{ecc/scripts → src}/hooks/run-with-flags-shell.sh +1 -1
- package/{ecc/scripts → src}/hooks/run-with-flags.js +74 -13
- package/src/hooks/session-end-marker.js +29 -0
- package/{ecc/scripts → src}/hooks/session-end.js +83 -40
- package/{ecc/scripts → src}/hooks/session-start.js +76 -10
- package/{ecc/scripts → src}/lib/hook-flags.js +8 -4
- package/{ecc/scripts → src}/lib/project-detect.js +2 -1
- package/{ecc/scripts → src}/lib/session-manager.d.ts +5 -1
- package/{ecc/scripts → src}/lib/session-manager.js +202 -92
- package/{ecc/scripts → src}/lib/utils.d.ts +23 -1
- package/{ecc/scripts → src}/lib/utils.js +91 -3
- package/{gsd/get-shit-done/bin/gsd-tools.cjs → src/pilot/bin/ccp-tools.cjs} +257 -86
- package/{gsd/get-shit-done → src/pilot}/bin/lib/commands.cjs +1 -1
- package/src/pilot/bin/lib/config.cjs +444 -0
- package/src/pilot/bin/lib/core.cjs +1190 -0
- package/src/pilot/bin/lib/init.cjs +1281 -0
- package/src/pilot/bin/lib/model-profiles.cjs +67 -0
- package/{gsd/get-shit-done → src/pilot}/bin/lib/phase.cjs +2 -2
- package/src/pilot/bin/lib/security.cjs +382 -0
- package/{gsd/get-shit-done → src/pilot}/bin/lib/state.cjs +1 -1
- package/src/pilot/bin/lib/uat.cjs +282 -0
- package/{gsd/get-shit-done → src/pilot}/bin/lib/verify.cjs +10 -10
- package/{gsd/get-shit-done → src/pilot}/references/continuation-format.md +16 -16
- package/{gsd/get-shit-done → src/pilot}/references/decimal-phase-calculation.md +5 -5
- package/{gsd/get-shit-done → src/pilot}/references/git-integration.md +5 -5
- package/{gsd/get-shit-done → src/pilot}/references/git-planning-commit.md +4 -4
- package/src/pilot/references/mcp-servers.json +153 -0
- package/{gsd/get-shit-done → src/pilot}/references/model-profile-resolution.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/references/model-profiles.md +20 -20
- package/{gsd/get-shit-done → src/pilot}/references/phase-argument-parsing.md +4 -4
- package/{gsd/get-shit-done → src/pilot}/references/planning-config.md +15 -15
- package/{gsd/get-shit-done → src/pilot}/references/ui-brand.md +5 -5
- package/{gsd/get-shit-done → src/pilot}/references/verification-patterns.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/templates/DEBUG.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/templates/UAT.md +3 -3
- package/src/pilot/templates/UI-SPEC.md +100 -0
- package/{gsd/get-shit-done → src/pilot}/templates/VALIDATION.md +1 -1
- package/src/pilot/templates/claude-md.md +122 -0
- package/{gsd/get-shit-done → src/pilot}/templates/codebase/architecture.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/templates/codebase/structure.md +13 -13
- package/{gsd/get-shit-done → src/pilot}/templates/context.md +4 -4
- package/src/pilot/templates/copilot-instructions.md +7 -0
- package/{gsd/get-shit-done → src/pilot}/templates/debug-subagent-prompt.md +4 -4
- package/src/pilot/templates/dev-preferences.md +21 -0
- package/{gsd/get-shit-done → src/pilot}/templates/discovery.md +2 -2
- package/src/pilot/templates/discussion-log.md +63 -0
- package/{gsd/get-shit-done → src/pilot}/templates/phase-prompt.md +12 -12
- package/{gsd/get-shit-done → src/pilot}/templates/planner-subagent-prompt.md +7 -7
- package/{gsd/get-shit-done → src/pilot}/templates/project.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/templates/research.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/templates/state.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/templates/summary-complex.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/workflows/add-phase.md +11 -11
- package/{gsd/get-shit-done → src/pilot}/workflows/add-tests.md +15 -15
- package/{gsd/get-shit-done → src/pilot}/workflows/add-todo.md +7 -7
- package/{gsd/get-shit-done → src/pilot}/workflows/audit-milestone.md +24 -16
- package/src/pilot/workflows/audit-uat.md +109 -0
- package/src/pilot/workflows/autonomous.md +891 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/check-todos.md +10 -10
- package/{gsd/get-shit-done → src/pilot}/workflows/cleanup.md +3 -3
- package/{gsd/get-shit-done → src/pilot}/workflows/complete-milestone.md +19 -16
- package/{gsd/get-shit-done → src/pilot}/workflows/diagnose-issues.md +9 -4
- package/{gsd/get-shit-done → src/pilot}/workflows/discovery-phase.md +8 -8
- package/src/pilot/workflows/discuss-phase-assumptions.md +653 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/discuss-phase.md +407 -49
- package/src/pilot/workflows/do.md +104 -0
- package/src/pilot/workflows/docs-update.md +1165 -0
- package/src/pilot/workflows/execute-phase.md +821 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/execute-plan.md +79 -28
- package/src/pilot/workflows/fast.md +105 -0
- package/src/pilot/workflows/forensics.md +265 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/health.md +34 -11
- package/src/pilot/workflows/help.md +767 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/insert-phase.md +10 -10
- package/{gsd/get-shit-done → src/pilot}/workflows/list-phase-assumptions.md +4 -4
- package/src/pilot/workflows/manager.md +362 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/map-codebase.md +27 -17
- package/src/pilot/workflows/milestone-summary.md +223 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/new-milestone.md +135 -33
- package/{gsd/get-shit-done → src/pilot}/workflows/new-project.md +152 -79
- package/src/pilot/workflows/next.md +97 -0
- package/src/pilot/workflows/node-repair.md +92 -0
- package/src/pilot/workflows/note.md +156 -0
- package/src/pilot/workflows/pause-work.md +177 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/plan-milestone-gaps.md +10 -11
- package/src/pilot/workflows/plan-phase.md +859 -0
- package/src/pilot/workflows/plant-seed.md +169 -0
- package/src/pilot/workflows/pr-branch.md +129 -0
- package/src/pilot/workflows/profile-user.md +452 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/progress.md +95 -34
- package/{gsd/get-shit-done → src/pilot}/workflows/quick.md +33 -21
- package/{gsd/get-shit-done → src/pilot}/workflows/remove-phase.md +14 -14
- package/{gsd/get-shit-done → src/pilot}/workflows/research-phase.md +18 -10
- package/{gsd/get-shit-done → src/pilot}/workflows/resume-project.md +37 -18
- package/src/pilot/workflows/review.md +244 -0
- package/src/pilot/workflows/secure-phase.md +164 -0
- package/src/pilot/workflows/session-report.md +146 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/set-profile.md +7 -7
- package/{gsd/get-shit-done → src/pilot}/workflows/settings.md +75 -22
- package/src/pilot/workflows/ship.md +228 -0
- package/src/pilot/workflows/stats.md +60 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/transition.md +57 -17
- package/src/pilot/workflows/ui-phase.md +302 -0
- package/src/pilot/workflows/ui-review.md +165 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/update.md +88 -58
- package/{gsd/get-shit-done → src/pilot}/workflows/validate-phase.md +24 -17
- package/{gsd/get-shit-done → src/pilot}/workflows/verify-phase.md +26 -15
- package/{gsd/get-shit-done → src/pilot}/workflows/verify-work.md +89 -37
- package/{ecc → src}/rules/common/agents.md +1 -0
- package/src/rules/common/code-review.md +124 -0
- package/{ecc → src}/rules/common/coding-style.md +21 -0
- package/src/rules/zh/README.md +108 -0
- package/src/rules/zh/agents.md +50 -0
- package/src/rules/zh/code-review.md +124 -0
- package/src/rules/zh/coding-style.md +48 -0
- package/src/rules/zh/development-workflow.md +44 -0
- package/src/rules/zh/git-workflow.md +24 -0
- package/src/rules/zh/hooks.md +30 -0
- package/src/rules/zh/patterns.md +31 -0
- package/src/rules/zh/performance.md +55 -0
- package/src/rules/zh/security.md +29 -0
- package/src/rules/zh/testing.md +29 -0
- package/src/skills/agentic-engineering/SKILL.md +63 -0
- package/src/skills/ai-first-engineering/SKILL.md +51 -0
- package/src/skills/ai-regression-testing/SKILL.md +385 -0
- package/src/skills/api-design/SKILL.md +523 -0
- package/src/skills/architecture-decision-records/SKILL.md +179 -0
- package/src/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/src/skills/autonomous-loops/SKILL.md +610 -0
- package/src/skills/backend-patterns/SKILL.md +598 -0
- package/src/skills/benchmark/SKILL.md +87 -0
- package/src/skills/blueprint/SKILL.md +90 -0
- package/src/skills/browser-qa/SKILL.md +81 -0
- package/src/skills/bun-runtime/SKILL.md +84 -0
- package/src/skills/claude-api/SKILL.md +337 -0
- package/src/skills/codebase-onboarding/SKILL.md +233 -0
- package/src/skills/coding-standards/SKILL.md +530 -0
- package/src/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/src/skills/context-budget/SKILL.md +135 -0
- package/{ecc → src}/skills/continuous-learning-v2/SKILL.md +6 -6
- package/{ecc → src}/skills/continuous-learning-v2/agents/observer-loop.sh +1 -1
- package/{ecc → src}/skills/continuous-learning-v2/agents/observer.md +1 -1
- package/src/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/src/skills/cpp-coding-standards/SKILL.md +723 -0
- package/src/skills/cpp-testing/SKILL.md +324 -0
- package/src/skills/database-migrations/SKILL.md +429 -0
- package/src/skills/deep-research/SKILL.md +155 -0
- package/src/skills/deployment-patterns/SKILL.md +427 -0
- package/src/skills/design-system/SKILL.md +82 -0
- package/src/skills/django-patterns/SKILL.md +734 -0
- package/src/skills/django-security/SKILL.md +593 -0
- package/src/skills/django-tdd/SKILL.md +729 -0
- package/src/skills/django-verification/SKILL.md +469 -0
- package/src/skills/docker-patterns/SKILL.md +364 -0
- package/src/skills/documentation-lookup/SKILL.md +90 -0
- package/src/skills/e2e-testing/SKILL.md +326 -0
- package/src/skills/eval-harness/SKILL.md +270 -0
- package/src/skills/exa-search/SKILL.md +103 -0
- package/src/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/src/skills/frontend-patterns/SKILL.md +642 -0
- package/src/skills/gan-style-harness/SKILL.md +278 -0
- package/src/skills/git-workflow/SKILL.md +715 -0
- package/src/skills/golang-patterns/SKILL.md +674 -0
- package/src/skills/golang-testing/SKILL.md +720 -0
- package/src/skills/hexagonal-architecture/SKILL.md +276 -0
- package/src/skills/iterative-retrieval/SKILL.md +211 -0
- package/src/skills/java-coding-standards/SKILL.md +147 -0
- package/src/skills/jpa-patterns/SKILL.md +151 -0
- package/src/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/src/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/src/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/src/skills/kotlin-patterns/SKILL.md +711 -0
- package/src/skills/kotlin-testing/SKILL.md +824 -0
- package/src/skills/laravel-patterns/SKILL.md +415 -0
- package/src/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/src/skills/laravel-security/SKILL.md +285 -0
- package/src/skills/laravel-tdd/SKILL.md +283 -0
- package/src/skills/laravel-verification/SKILL.md +179 -0
- package/src/skills/mcp-server-patterns/SKILL.md +67 -0
- package/src/skills/nextjs-turbopack/SKILL.md +44 -0
- package/src/skills/nuxt4-patterns/SKILL.md +100 -0
- package/src/skills/opensource-pipeline/SKILL.md +255 -0
- package/src/skills/perl-patterns/SKILL.md +504 -0
- package/src/skills/perl-security/SKILL.md +503 -0
- package/src/skills/perl-testing/SKILL.md +475 -0
- package/src/skills/postgres-patterns/SKILL.md +147 -0
- package/src/skills/project-flow-ops/SKILL.md +111 -0
- package/src/skills/project-guidelines-example/SKILL.md +349 -0
- package/src/skills/prompt-optimizer/SKILL.md +397 -0
- package/src/skills/python-patterns/SKILL.md +750 -0
- package/src/skills/python-testing/SKILL.md +816 -0
- package/src/skills/pytorch-patterns/SKILL.md +396 -0
- package/src/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/src/skills/repo-scan/SKILL.md +78 -0
- package/src/skills/rules-distill/SKILL.md +264 -0
- package/src/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/src/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/src/skills/rust-patterns/SKILL.md +499 -0
- package/src/skills/rust-testing/SKILL.md +500 -0
- package/src/skills/safety-guard/SKILL.md +69 -0
- package/src/skills/search-first/SKILL.md +161 -0
- package/src/skills/security-review/SKILL.md +495 -0
- package/src/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/src/skills/security-scan/SKILL.md +165 -0
- package/src/skills/springboot-patterns/SKILL.md +314 -0
- package/src/skills/springboot-security/SKILL.md +272 -0
- package/src/skills/springboot-tdd/SKILL.md +158 -0
- package/src/skills/springboot-verification/SKILL.md +231 -0
- package/src/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/src/skills/tdd-workflow/SKILL.md +410 -0
- package/src/skills/token-budget-advisor/SKILL.md +133 -0
- package/{ecc/skills/verification-loop-SKILL.md → src/skills/verification-loop/SKILL.md} +1 -1
- package/src/skills/workspace-surface-audit/SKILL.md +125 -0
- package/ecc/scripts/hooks/session-end-marker.js +0 -15
- package/gsd/LICENSE +0 -21
- package/gsd/commands-gsd/discuss-phase.md +0 -90
- package/gsd/commands-gsd/execute-phase.md +0 -41
- package/gsd/commands-gsd/join-discord.md +0 -18
- package/gsd/commands-gsd/reapply-patches.md +0 -123
- package/gsd/commands-gsd/set-profile.md +0 -34
- package/gsd/get-shit-done/bin/lib/config.cjs +0 -169
- package/gsd/get-shit-done/bin/lib/core.cjs +0 -492
- package/gsd/get-shit-done/bin/lib/init.cjs +0 -710
- package/gsd/get-shit-done/workflows/execute-phase.md +0 -459
- package/gsd/get-shit-done/workflows/help.md +0 -489
- package/gsd/get-shit-done/workflows/pause-work.md +0 -122
- package/gsd/get-shit-done/workflows/plan-phase.md +0 -560
- package/gsd/hooks/gsd-check-update.js +0 -81
- package/kit/CLAUDE.md +0 -43
- package/kit/commands/kit/update.md +0 -46
- package/kit/mcp.json +0 -10
- package/kit/rules/code-style.md +0 -24
- /package/{ecc → src}/agents/architect.md +0 -0
- /package/{ecc → src}/agents/code-reviewer.md +0 -0
- /package/{ecc → src}/agents/e2e-runner.md +0 -0
- /package/{ecc → src}/agents/security-reviewer.md +0 -0
- /package/{ecc → src}/agents/tdd-guide.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/testing.md +0 -0
- /package/{ecc → src}/contexts/dev.md +0 -0
- /package/{ecc → src}/contexts/research.md +0 -0
- /package/{ecc → src}/contexts/review.md +0 -0
- /package/{ecc → src}/examples/user-CLAUDE.md +0 -0
- /package/{ecc/scripts → src}/hooks/check-hook-enabled.js +0 -0
- /package/{ecc/scripts → src}/hooks/evaluate-session.js +0 -0
- /package/{ecc/scripts → src}/hooks/pre-compact.js +0 -0
- /package/{ecc/scripts → src}/hooks/suggest-compact.js +0 -0
- /package/{ecc/scripts → src}/lib/package-manager.d.ts +0 -0
- /package/{ecc/scripts → src}/lib/package-manager.js +0 -0
- /package/{ecc/scripts → src}/lib/resolve-formatter.js +0 -0
- /package/{ecc/scripts → src}/lib/session-aliases.d.ts +0 -0
- /package/{ecc/scripts → src}/lib/session-aliases.js +0 -0
- /package/{ecc/scripts → src}/lib/shell-split.js +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/frontmatter.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/milestone.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/roadmap.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/template.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/references/checkpoints.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/references/questioning.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/references/tdd.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/concerns.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/conventions.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/integrations.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/stack.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/testing.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/config.json +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/continue-here.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/milestone-archive.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/milestone.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/requirements.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/ARCHITECTURE.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/FEATURES.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/PITFALLS.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/STACK.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/SUMMARY.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/retrospective.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/roadmap.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/summary-minimal.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/summary-standard.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/summary.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/user-setup.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/verification-report.md +0 -0
- /package/{ecc → src}/rules/common/development-workflow.md +0 -0
- /package/{ecc → src}/rules/common/git-workflow.md +0 -0
- /package/{ecc → src}/rules/common/hooks.md +0 -0
- /package/{ecc → src}/rules/common/patterns.md +0 -0
- /package/{ecc → src}/rules/common/performance.md +0 -0
- /package/{ecc → src}/rules/common/security.md +0 -0
- /package/{ecc → src}/rules/common/testing.md +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/agents/start-observer.sh +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/config.json +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/hooks/observe.sh +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/scripts/detect-project.sh +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/scripts/instinct-cli.py +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/scripts/test_parse_instinct.py +0 -0
- /package/{ecc → src}/skills/strategic-compact/SKILL.md +0 -0
- /package/{ecc → src}/skills/strategic-compact/suggest-compact.sh +0 -0
package/gsd/LICENSE
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2025 Lex Christopherson
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
@@ -1,90 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gsd:discuss-phase
|
|
3
|
-
description: Gather phase context through adaptive questioning before planning
|
|
4
|
-
argument-hint: "<phase> [--auto]"
|
|
5
|
-
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Write
|
|
8
|
-
- Bash
|
|
9
|
-
- Glob
|
|
10
|
-
- Grep
|
|
11
|
-
- AskUserQuestion
|
|
12
|
-
- Task
|
|
13
|
-
- mcp__context7__resolve-library-id
|
|
14
|
-
- mcp__context7__query-docs
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
<objective>
|
|
18
|
-
Extract implementation decisions that downstream agents need — researcher and planner will use CONTEXT.md to know what to investigate and what choices are locked.
|
|
19
|
-
|
|
20
|
-
**How it works:**
|
|
21
|
-
1. Load prior context (PROJECT.md, REQUIREMENTS.md, STATE.md, prior CONTEXT.md files)
|
|
22
|
-
2. Scout codebase for reusable assets and patterns
|
|
23
|
-
3. Analyze phase — skip gray areas already decided in prior phases
|
|
24
|
-
4. Present remaining gray areas — user selects which to discuss
|
|
25
|
-
5. Deep-dive each selected area until satisfied
|
|
26
|
-
6. Create CONTEXT.md with decisions that guide research and planning
|
|
27
|
-
|
|
28
|
-
**Output:** `{phase_num}-CONTEXT.md` — decisions clear enough that downstream agents can act without asking the user again
|
|
29
|
-
</objective>
|
|
30
|
-
|
|
31
|
-
<execution_context>
|
|
32
|
-
@~/.claude/get-shit-done/workflows/discuss-phase.md
|
|
33
|
-
@~/.claude/get-shit-done/templates/context.md
|
|
34
|
-
</execution_context>
|
|
35
|
-
|
|
36
|
-
<context>
|
|
37
|
-
Phase number: $ARGUMENTS (required)
|
|
38
|
-
|
|
39
|
-
Context files are resolved in-workflow using `init phase-op` and roadmap/state tool calls.
|
|
40
|
-
</context>
|
|
41
|
-
|
|
42
|
-
<process>
|
|
43
|
-
1. Validate phase number (error if missing or not in roadmap)
|
|
44
|
-
2. Check if CONTEXT.md exists (offer update/view/skip if yes)
|
|
45
|
-
3. **Load prior context** — Read PROJECT.md, REQUIREMENTS.md, STATE.md, and all prior CONTEXT.md files
|
|
46
|
-
4. **Scout codebase** — Find reusable assets, patterns, and integration points
|
|
47
|
-
5. **Analyze phase** — Check prior decisions, skip already-decided areas, generate remaining gray areas
|
|
48
|
-
6. **Present gray areas** — Multi-select: which to discuss? Annotate with prior decisions + code context
|
|
49
|
-
7. **Deep-dive each area** — 4 questions per area, code-informed options, Context7 for library choices
|
|
50
|
-
8. **Write CONTEXT.md** — Sections match areas discussed + code_context section
|
|
51
|
-
9. Offer next steps (research or plan)
|
|
52
|
-
|
|
53
|
-
**CRITICAL: Scope guardrail**
|
|
54
|
-
- Phase boundary from ROADMAP.md is FIXED
|
|
55
|
-
- Discussion clarifies HOW to implement, not WHETHER to add more
|
|
56
|
-
- If user suggests new capabilities: "That's its own phase. I'll note it for later."
|
|
57
|
-
- Capture deferred ideas — don't lose them, don't act on them
|
|
58
|
-
|
|
59
|
-
**Domain-aware gray areas:**
|
|
60
|
-
Gray areas depend on what's being built. Analyze the phase goal:
|
|
61
|
-
- Something users SEE → layout, density, interactions, states
|
|
62
|
-
- Something users CALL → responses, errors, auth, versioning
|
|
63
|
-
- Something users RUN → output format, flags, modes, error handling
|
|
64
|
-
- Something users READ → structure, tone, depth, flow
|
|
65
|
-
- Something being ORGANIZED → criteria, grouping, naming, exceptions
|
|
66
|
-
|
|
67
|
-
Generate 3-4 **phase-specific** gray areas, not generic categories.
|
|
68
|
-
|
|
69
|
-
**Probing depth:**
|
|
70
|
-
- Ask 4 questions per area before checking
|
|
71
|
-
- "More questions about [area], or move to next?"
|
|
72
|
-
- If more → ask 4 more, check again
|
|
73
|
-
- After all areas → "Ready to create context?"
|
|
74
|
-
|
|
75
|
-
**Do NOT ask about (Claude handles these):**
|
|
76
|
-
- Technical implementation
|
|
77
|
-
- Architecture choices
|
|
78
|
-
- Performance concerns
|
|
79
|
-
- Scope expansion
|
|
80
|
-
</process>
|
|
81
|
-
|
|
82
|
-
<success_criteria>
|
|
83
|
-
- Prior context loaded and applied (no re-asking decided questions)
|
|
84
|
-
- Gray areas identified through intelligent analysis
|
|
85
|
-
- User chose which areas to discuss
|
|
86
|
-
- Each selected area explored until satisfied
|
|
87
|
-
- Scope creep redirected to deferred ideas
|
|
88
|
-
- CONTEXT.md captures decisions, not vague vision
|
|
89
|
-
- User knows next steps
|
|
90
|
-
</success_criteria>
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gsd:execute-phase
|
|
3
|
-
description: Execute all plans in a phase with wave-based parallelization
|
|
4
|
-
argument-hint: "<phase-number> [--gaps-only]"
|
|
5
|
-
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Write
|
|
8
|
-
- Edit
|
|
9
|
-
- Glob
|
|
10
|
-
- Grep
|
|
11
|
-
- Bash
|
|
12
|
-
- Task
|
|
13
|
-
- TodoWrite
|
|
14
|
-
- AskUserQuestion
|
|
15
|
-
---
|
|
16
|
-
<objective>
|
|
17
|
-
Execute all plans in a phase using wave-based parallel execution.
|
|
18
|
-
|
|
19
|
-
Orchestrator stays lean: discover plans, analyze dependencies, group into waves, spawn subagents, collect results. Each subagent loads the full execute-plan context and handles its own plan.
|
|
20
|
-
|
|
21
|
-
Context budget: ~15% orchestrator, 100% fresh per subagent.
|
|
22
|
-
</objective>
|
|
23
|
-
|
|
24
|
-
<execution_context>
|
|
25
|
-
@~/.claude/get-shit-done/workflows/execute-phase.md
|
|
26
|
-
@~/.claude/get-shit-done/references/ui-brand.md
|
|
27
|
-
</execution_context>
|
|
28
|
-
|
|
29
|
-
<context>
|
|
30
|
-
Phase: $ARGUMENTS
|
|
31
|
-
|
|
32
|
-
**Flags:**
|
|
33
|
-
- `--gaps-only` — Execute only gap closure plans (plans with `gap_closure: true` in frontmatter). Use after verify-work creates fix plans.
|
|
34
|
-
|
|
35
|
-
Context files are resolved inside the workflow via `gsd-tools init execute-phase` and per-subagent `<files_to_read>` blocks.
|
|
36
|
-
</context>
|
|
37
|
-
|
|
38
|
-
<process>
|
|
39
|
-
Execute the execute-phase workflow from @~/.claude/get-shit-done/workflows/execute-phase.md end-to-end.
|
|
40
|
-
Preserve all workflow gates (wave execution, checkpoint handling, verification, state updates, routing).
|
|
41
|
-
</process>
|
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gsd:join-discord
|
|
3
|
-
description: Join the GSD Discord community
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<objective>
|
|
7
|
-
Display the Discord invite link for the GSD community server.
|
|
8
|
-
</objective>
|
|
9
|
-
|
|
10
|
-
<output>
|
|
11
|
-
# Join the GSD Discord
|
|
12
|
-
|
|
13
|
-
Connect with other GSD users, get help, share what you're building, and stay updated.
|
|
14
|
-
|
|
15
|
-
**Invite link:** https://discord.gg/gsd
|
|
16
|
-
|
|
17
|
-
Click the link or paste it into your browser to join.
|
|
18
|
-
</output>
|
|
@@ -1,123 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
description: Reapply local modifications after a GSD update
|
|
3
|
-
allowed-tools: Read, Write, Edit, Bash, Glob, Grep, AskUserQuestion
|
|
4
|
-
---
|
|
5
|
-
|
|
6
|
-
<purpose>
|
|
7
|
-
After a GSD update wipes and reinstalls files, this command merges user's previously saved local modifications back into the new version. Uses intelligent comparison to handle cases where the upstream file also changed.
|
|
8
|
-
</purpose>
|
|
9
|
-
|
|
10
|
-
<process>
|
|
11
|
-
|
|
12
|
-
## Step 1: Detect backed-up patches
|
|
13
|
-
|
|
14
|
-
Check for local patches directory:
|
|
15
|
-
|
|
16
|
-
```bash
|
|
17
|
-
# Global install — detect runtime config directory
|
|
18
|
-
if [ -d "$HOME/.config/opencode/gsd-local-patches" ]; then
|
|
19
|
-
PATCHES_DIR="$HOME/.config/opencode/gsd-local-patches"
|
|
20
|
-
elif [ -d "$HOME/.opencode/gsd-local-patches" ]; then
|
|
21
|
-
PATCHES_DIR="$HOME/.opencode/gsd-local-patches"
|
|
22
|
-
elif [ -d "$HOME/.gemini/gsd-local-patches" ]; then
|
|
23
|
-
PATCHES_DIR="$HOME/.gemini/gsd-local-patches"
|
|
24
|
-
else
|
|
25
|
-
PATCHES_DIR="$HOME/.claude/gsd-local-patches"
|
|
26
|
-
fi
|
|
27
|
-
# Local install fallback — check all runtime directories
|
|
28
|
-
if [ ! -d "$PATCHES_DIR" ]; then
|
|
29
|
-
for dir in .config/opencode .opencode .gemini .claude; do
|
|
30
|
-
if [ -d "./$dir/gsd-local-patches" ]; then
|
|
31
|
-
PATCHES_DIR="./$dir/gsd-local-patches"
|
|
32
|
-
break
|
|
33
|
-
fi
|
|
34
|
-
done
|
|
35
|
-
fi
|
|
36
|
-
```
|
|
37
|
-
|
|
38
|
-
Read `backup-meta.json` from the patches directory.
|
|
39
|
-
|
|
40
|
-
**If no patches found:**
|
|
41
|
-
```
|
|
42
|
-
No local patches found. Nothing to reapply.
|
|
43
|
-
|
|
44
|
-
Local patches are automatically saved when you run /gsd:update
|
|
45
|
-
after modifying any GSD workflow, command, or agent files.
|
|
46
|
-
```
|
|
47
|
-
Exit.
|
|
48
|
-
|
|
49
|
-
## Step 2: Show patch summary
|
|
50
|
-
|
|
51
|
-
```
|
|
52
|
-
## Local Patches to Reapply
|
|
53
|
-
|
|
54
|
-
**Backed up from:** v{from_version}
|
|
55
|
-
**Current version:** {read VERSION file}
|
|
56
|
-
**Files modified:** {count}
|
|
57
|
-
|
|
58
|
-
| # | File | Status |
|
|
59
|
-
|---|------|--------|
|
|
60
|
-
| 1 | {file_path} | Pending |
|
|
61
|
-
| 2 | {file_path} | Pending |
|
|
62
|
-
```
|
|
63
|
-
|
|
64
|
-
## Step 3: Merge each file
|
|
65
|
-
|
|
66
|
-
For each file in `backup-meta.json`:
|
|
67
|
-
|
|
68
|
-
1. **Read the backed-up version** (user's modified copy from `gsd-local-patches/`)
|
|
69
|
-
2. **Read the newly installed version** (current file after update)
|
|
70
|
-
3. **Compare and merge:**
|
|
71
|
-
|
|
72
|
-
- If the new file is identical to the backed-up file: skip (modification was incorporated upstream)
|
|
73
|
-
- If the new file differs: identify the user's modifications and apply them to the new version
|
|
74
|
-
|
|
75
|
-
**Merge strategy:**
|
|
76
|
-
- Read both versions fully
|
|
77
|
-
- Identify sections the user added or modified (look for additions, not just differences from path replacement)
|
|
78
|
-
- Apply user's additions/modifications to the new version
|
|
79
|
-
- If a section the user modified was also changed upstream: flag as conflict, show both versions, ask user which to keep
|
|
80
|
-
|
|
81
|
-
4. **Write merged result** to the installed location
|
|
82
|
-
5. **Report status:**
|
|
83
|
-
- `Merged` — user modifications applied cleanly
|
|
84
|
-
- `Skipped` — modification already in upstream
|
|
85
|
-
- `Conflict` — user chose resolution
|
|
86
|
-
|
|
87
|
-
## Step 4: Update manifest
|
|
88
|
-
|
|
89
|
-
After reapplying, regenerate the file manifest so future updates correctly detect these as user modifications:
|
|
90
|
-
|
|
91
|
-
```bash
|
|
92
|
-
# The manifest will be regenerated on next /gsd:update
|
|
93
|
-
# For now, just note which files were modified
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
## Step 5: Cleanup option
|
|
97
|
-
|
|
98
|
-
Ask user:
|
|
99
|
-
- "Keep patch backups for reference?" → preserve `gsd-local-patches/`
|
|
100
|
-
- "Clean up patch backups?" → remove `gsd-local-patches/` directory
|
|
101
|
-
|
|
102
|
-
## Step 6: Report
|
|
103
|
-
|
|
104
|
-
```
|
|
105
|
-
## Patches Reapplied
|
|
106
|
-
|
|
107
|
-
| # | File | Status |
|
|
108
|
-
|---|------|--------|
|
|
109
|
-
| 1 | {file_path} | ✓ Merged |
|
|
110
|
-
| 2 | {file_path} | ○ Skipped (already upstream) |
|
|
111
|
-
| 3 | {file_path} | ⚠ Conflict resolved |
|
|
112
|
-
|
|
113
|
-
{count} file(s) updated. Your local modifications are active again.
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
</process>
|
|
117
|
-
|
|
118
|
-
<success_criteria>
|
|
119
|
-
- [ ] All backed-up patches processed
|
|
120
|
-
- [ ] User modifications merged into new version
|
|
121
|
-
- [ ] Conflicts resolved with user input
|
|
122
|
-
- [ ] Status reported for each file
|
|
123
|
-
</success_criteria>
|
|
@@ -1,34 +0,0 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: gsd:set-profile
|
|
3
|
-
description: Switch model profile for GSD agents (quality/balanced/budget)
|
|
4
|
-
argument-hint: <profile>
|
|
5
|
-
allowed-tools:
|
|
6
|
-
- Read
|
|
7
|
-
- Write
|
|
8
|
-
- Bash
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
<objective>
|
|
12
|
-
Switch the model profile used by GSD agents. Controls which Claude model each agent uses, balancing quality vs token spend.
|
|
13
|
-
|
|
14
|
-
Routes to the set-profile workflow which handles:
|
|
15
|
-
- Argument validation (quality/balanced/budget)
|
|
16
|
-
- Config file creation if missing
|
|
17
|
-
- Profile update in config.json
|
|
18
|
-
- Confirmation with model table display
|
|
19
|
-
</objective>
|
|
20
|
-
|
|
21
|
-
<execution_context>
|
|
22
|
-
@~/.claude/get-shit-done/workflows/set-profile.md
|
|
23
|
-
</execution_context>
|
|
24
|
-
|
|
25
|
-
<process>
|
|
26
|
-
**Follow the set-profile workflow** from `@~/.claude/get-shit-done/workflows/set-profile.md`.
|
|
27
|
-
|
|
28
|
-
The workflow handles all logic including:
|
|
29
|
-
1. Profile argument validation
|
|
30
|
-
2. Config file ensuring
|
|
31
|
-
3. Config reading and updating
|
|
32
|
-
4. Model table generation from MODEL_PROFILES
|
|
33
|
-
5. Confirmation display
|
|
34
|
-
</process>
|
|
@@ -1,169 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Config — Planning config CRUD operations
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
const fs = require('fs');
|
|
6
|
-
const path = require('path');
|
|
7
|
-
const { output, error } = require('./core.cjs');
|
|
8
|
-
|
|
9
|
-
function cmdConfigEnsureSection(cwd, raw) {
|
|
10
|
-
const configPath = path.join(cwd, '.planning', 'config.json');
|
|
11
|
-
const planningDir = path.join(cwd, '.planning');
|
|
12
|
-
|
|
13
|
-
// Ensure .planning directory exists
|
|
14
|
-
try {
|
|
15
|
-
if (!fs.existsSync(planningDir)) {
|
|
16
|
-
fs.mkdirSync(planningDir, { recursive: true });
|
|
17
|
-
}
|
|
18
|
-
} catch (err) {
|
|
19
|
-
error('Failed to create .planning directory: ' + err.message);
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Check if config already exists
|
|
23
|
-
if (fs.existsSync(configPath)) {
|
|
24
|
-
const result = { created: false, reason: 'already_exists' };
|
|
25
|
-
output(result, raw, 'exists');
|
|
26
|
-
return;
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
// Detect Brave Search API key availability
|
|
30
|
-
const homedir = require('os').homedir();
|
|
31
|
-
const braveKeyFile = path.join(homedir, '.gsd', 'brave_api_key');
|
|
32
|
-
const hasBraveSearch = !!(process.env.BRAVE_API_KEY || fs.existsSync(braveKeyFile));
|
|
33
|
-
|
|
34
|
-
// Load user-level defaults from ~/.gsd/defaults.json if available
|
|
35
|
-
const globalDefaultsPath = path.join(homedir, '.gsd', 'defaults.json');
|
|
36
|
-
let userDefaults = {};
|
|
37
|
-
try {
|
|
38
|
-
if (fs.existsSync(globalDefaultsPath)) {
|
|
39
|
-
userDefaults = JSON.parse(fs.readFileSync(globalDefaultsPath, 'utf-8'));
|
|
40
|
-
// Migrate deprecated "depth" key to "granularity"
|
|
41
|
-
if ('depth' in userDefaults && !('granularity' in userDefaults)) {
|
|
42
|
-
const depthToGranularity = { quick: 'coarse', standard: 'standard', comprehensive: 'fine' };
|
|
43
|
-
userDefaults.granularity = depthToGranularity[userDefaults.depth] || userDefaults.depth;
|
|
44
|
-
delete userDefaults.depth;
|
|
45
|
-
try { fs.writeFileSync(globalDefaultsPath, JSON.stringify(userDefaults, null, 2), 'utf-8'); } catch {}
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
} catch (err) {
|
|
49
|
-
// Ignore malformed global defaults, fall back to hardcoded
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Create default config (user-level defaults override hardcoded defaults)
|
|
53
|
-
const hardcoded = {
|
|
54
|
-
model_profile: 'balanced',
|
|
55
|
-
commit_docs: true,
|
|
56
|
-
search_gitignored: false,
|
|
57
|
-
branching_strategy: 'none',
|
|
58
|
-
phase_branch_template: 'gsd/phase-{phase}-{slug}',
|
|
59
|
-
milestone_branch_template: 'gsd/{milestone}-{slug}',
|
|
60
|
-
workflow: {
|
|
61
|
-
research: true,
|
|
62
|
-
plan_check: true,
|
|
63
|
-
verifier: true,
|
|
64
|
-
nyquist_validation: true,
|
|
65
|
-
},
|
|
66
|
-
parallelization: true,
|
|
67
|
-
brave_search: hasBraveSearch,
|
|
68
|
-
};
|
|
69
|
-
const defaults = {
|
|
70
|
-
...hardcoded,
|
|
71
|
-
...userDefaults,
|
|
72
|
-
workflow: { ...hardcoded.workflow, ...(userDefaults.workflow || {}) },
|
|
73
|
-
};
|
|
74
|
-
|
|
75
|
-
try {
|
|
76
|
-
fs.writeFileSync(configPath, JSON.stringify(defaults, null, 2), 'utf-8');
|
|
77
|
-
const result = { created: true, path: '.planning/config.json' };
|
|
78
|
-
output(result, raw, 'created');
|
|
79
|
-
} catch (err) {
|
|
80
|
-
error('Failed to create config.json: ' + err.message);
|
|
81
|
-
}
|
|
82
|
-
}
|
|
83
|
-
|
|
84
|
-
function cmdConfigSet(cwd, keyPath, value, raw) {
|
|
85
|
-
const configPath = path.join(cwd, '.planning', 'config.json');
|
|
86
|
-
|
|
87
|
-
if (!keyPath) {
|
|
88
|
-
error('Usage: config-set <key.path> <value>');
|
|
89
|
-
}
|
|
90
|
-
|
|
91
|
-
// Parse value (handle booleans and numbers)
|
|
92
|
-
let parsedValue = value;
|
|
93
|
-
if (value === 'true') parsedValue = true;
|
|
94
|
-
else if (value === 'false') parsedValue = false;
|
|
95
|
-
else if (!isNaN(value) && value !== '') parsedValue = Number(value);
|
|
96
|
-
|
|
97
|
-
// Load existing config or start with empty object
|
|
98
|
-
let config = {};
|
|
99
|
-
try {
|
|
100
|
-
if (fs.existsSync(configPath)) {
|
|
101
|
-
config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
102
|
-
}
|
|
103
|
-
} catch (err) {
|
|
104
|
-
error('Failed to read config.json: ' + err.message);
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
// Set nested value using dot notation (e.g., "workflow.research")
|
|
108
|
-
const keys = keyPath.split('.');
|
|
109
|
-
let current = config;
|
|
110
|
-
for (let i = 0; i < keys.length - 1; i++) {
|
|
111
|
-
const key = keys[i];
|
|
112
|
-
if (current[key] === undefined || typeof current[key] !== 'object') {
|
|
113
|
-
current[key] = {};
|
|
114
|
-
}
|
|
115
|
-
current = current[key];
|
|
116
|
-
}
|
|
117
|
-
current[keys[keys.length - 1]] = parsedValue;
|
|
118
|
-
|
|
119
|
-
// Write back
|
|
120
|
-
try {
|
|
121
|
-
fs.writeFileSync(configPath, JSON.stringify(config, null, 2), 'utf-8');
|
|
122
|
-
const result = { updated: true, key: keyPath, value: parsedValue };
|
|
123
|
-
output(result, raw, `${keyPath}=${parsedValue}`);
|
|
124
|
-
} catch (err) {
|
|
125
|
-
error('Failed to write config.json: ' + err.message);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
function cmdConfigGet(cwd, keyPath, raw) {
|
|
130
|
-
const configPath = path.join(cwd, '.planning', 'config.json');
|
|
131
|
-
|
|
132
|
-
if (!keyPath) {
|
|
133
|
-
error('Usage: config-get <key.path>');
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
let config = {};
|
|
137
|
-
try {
|
|
138
|
-
if (fs.existsSync(configPath)) {
|
|
139
|
-
config = JSON.parse(fs.readFileSync(configPath, 'utf-8'));
|
|
140
|
-
} else {
|
|
141
|
-
error('No config.json found at ' + configPath);
|
|
142
|
-
}
|
|
143
|
-
} catch (err) {
|
|
144
|
-
if (err.message.startsWith('No config.json')) throw err;
|
|
145
|
-
error('Failed to read config.json: ' + err.message);
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Traverse dot-notation path (e.g., "workflow.auto_advance")
|
|
149
|
-
const keys = keyPath.split('.');
|
|
150
|
-
let current = config;
|
|
151
|
-
for (const key of keys) {
|
|
152
|
-
if (current === undefined || current === null || typeof current !== 'object') {
|
|
153
|
-
error(`Key not found: ${keyPath}`);
|
|
154
|
-
}
|
|
155
|
-
current = current[key];
|
|
156
|
-
}
|
|
157
|
-
|
|
158
|
-
if (current === undefined) {
|
|
159
|
-
error(`Key not found: ${keyPath}`);
|
|
160
|
-
}
|
|
161
|
-
|
|
162
|
-
output(current, raw, String(current));
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
module.exports = {
|
|
166
|
-
cmdConfigEnsureSection,
|
|
167
|
-
cmdConfigSet,
|
|
168
|
-
cmdConfigGet,
|
|
169
|
-
};
|