claude-code-pilot 2.0.0 → 3.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/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/src/agents/docs-lookup.md +68 -0
- package/src/agents/flutter-reviewer.md +243 -0
- package/src/agents/go-build-resolver.md +94 -0
- package/src/agents/go-reviewer.md +76 -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/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/aside.md +164 -0
- package/src/commands/build-fix.md +62 -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/{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/{gsd/commands-gsd → src/commands/ccp}/check-todos.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/cleanup.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/complete-milestone.md +9 -9
- 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/execute-phase.md +59 -0
- package/src/commands/ccp/fast.md +30 -0
- package/src/commands/ccp/forensics.md +56 -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/{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/{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/{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/plant-seed.md +28 -0
- package/src/commands/ccp/pr-branch.md +25 -0
- package/{gsd/commands-gsd → src/commands/ccp}/progress.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/quick.md +10 -8
- 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/{gsd/commands-gsd → src/commands/ccp}/resume-work.md +3 -3
- package/src/commands/ccp/review-backlog.md +61 -0
- package/src/commands/ccp/session-report.md +19 -0
- package/src/commands/ccp/set-profile.md +12 -0
- package/{gsd/commands-gsd → src/commands/ccp}/settings.md +5 -5
- package/src/commands/ccp/ship.md +23 -0
- package/src/commands/ccp/stats.md +18 -0
- package/src/commands/ccp/thread.md +127 -0
- package/src/commands/ccp/ui-phase.md +34 -0
- package/src/commands/ccp/ui-review.md +32 -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/src/commands/code-review.md +40 -0
- package/src/commands/context-budget.md +29 -0
- package/src/commands/cpp-build.md +173 -0
- package/src/commands/cpp-review.md +132 -0
- package/src/commands/cpp-test.md +251 -0
- package/src/commands/docs.md +31 -0
- package/src/commands/e2e.md +364 -0
- package/src/commands/eval.md +120 -0
- package/{ecc → src}/commands/evolve.md +2 -2
- package/src/commands/go-build.md +183 -0
- package/src/commands/go-review.md +148 -0
- package/src/commands/go-test.md +268 -0
- package/src/commands/gradle-build.md +70 -0
- package/src/commands/harness-audit.md +71 -0
- package/src/commands/kotlin-build.md +174 -0
- package/src/commands/kotlin-review.md +140 -0
- package/src/commands/kotlin-test.md +312 -0
- package/src/commands/orchestrate.md +231 -0
- package/src/commands/plan.md +114 -0
- package/src/commands/prompt-optimize.md +38 -0
- package/src/commands/prune.md +25 -0
- package/src/commands/python-review.md +297 -0
- package/{ecc → src}/commands/quality-gate.md +1 -1
- package/src/commands/refactor-clean.md +80 -0
- package/src/commands/rules-distill.md +11 -0
- package/src/commands/rust-build.md +187 -0
- package/src/commands/rust-review.md +142 -0
- package/src/commands/rust-test.md +308 -0
- package/{ecc → src}/commands/sessions.md +10 -10
- package/src/commands/setup-pm.md +80 -0
- package/{kit → src}/commands/setup.md +45 -19
- package/src/commands/skill-create.md +172 -0
- package/src/commands/skill-health.md +51 -0
- package/src/commands/tdd.md +328 -0
- package/src/commands/test-coverage.md +69 -0
- package/src/commands/update-codemaps.md +72 -0
- package/src/commands/update-docs.md +84 -0
- 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 +75 -9
- 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/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 +775 -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/{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/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/{ecc → src}/rules/common/coding-style.md +21 -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/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/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/context-budget/SKILL.md +135 -0
- package/{ecc → src}/skills/continuous-learning-v2/SKILL.md +2 -2
- package/{ecc → src}/skills/continuous-learning-v2/agents/observer-loop.sh +1 -1
- 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/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/exa-search/SKILL.md +103 -0
- package/src/skills/frontend-patterns/SKILL.md +642 -0
- package/src/skills/golang-patterns/SKILL.md +674 -0
- package/src/skills/golang-testing/SKILL.md +720 -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-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/perl-patterns/SKILL.md +504 -0
- package/src/skills/perl-testing/SKILL.md +475 -0
- package/src/skills/postgres-patterns/SKILL.md +147 -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/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/tdd-workflow/SKILL.md +410 -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/doc-updater.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}/commands/checkpoint.md +0 -0
- /package/{ecc → src}/commands/learn.md +0 -0
- /package/{ecc → src}/commands/model-route.md +0 -0
- /package/{ecc → src}/commands/resume-session.md +0 -0
- /package/{ecc → src}/commands/save-session.md +0 -0
- /package/{kit → src}/commands/setup-refresh.md +0 -0
- /package/{kit → src}/commands/tool-guide.md +0 -0
- /package/{ecc → src}/commands/verify.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/CLAUDE.md +0 -0
- /package/{ecc → src}/examples/django-api-CLAUDE.md +0 -0
- /package/{ecc → src}/examples/go-microservice-CLAUDE.md +0 -0
- /package/{ecc → src}/examples/rust-api-CLAUDE.md +0 -0
- /package/{ecc → src}/examples/saas-nextjs-CLAUDE.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/observer.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/{ecc/skills/verification-loop-SKILL.md → src/skills/verification-loop/SKILL.md} +0 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Autonomous repair operator for failed task verification. Invoked by execute-plan when a task fails its done-criteria. Proposes and attempts structured fixes before escalating to the user.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<inputs>
|
|
6
|
+
- FAILED_TASK: Task number, name, and done-criteria from the plan
|
|
7
|
+
- ERROR: What verification produced — actual result vs expected
|
|
8
|
+
- PLAN_CONTEXT: Adjacent tasks and phase goal (for constraint awareness)
|
|
9
|
+
- REPAIR_BUDGET: Max repair attempts remaining (default: 2)
|
|
10
|
+
</inputs>
|
|
11
|
+
|
|
12
|
+
<repair_directive>
|
|
13
|
+
Analyze the failure and choose exactly one repair strategy:
|
|
14
|
+
|
|
15
|
+
**RETRY** — The approach was right but execution failed. Try again with a concrete adjustment.
|
|
16
|
+
- Use when: command error, missing dependency, wrong path, env issue, transient failure
|
|
17
|
+
- Output: `RETRY: [specific adjustment to make before retrying]`
|
|
18
|
+
|
|
19
|
+
**DECOMPOSE** — The task is too coarse. Break it into smaller verifiable sub-steps.
|
|
20
|
+
- Use when: done-criteria covers multiple concerns, implementation gaps are structural
|
|
21
|
+
- Output: `DECOMPOSE: [sub-task 1] | [sub-task 2] | ...` (max 3 sub-tasks)
|
|
22
|
+
- Sub-tasks must each have a single verifiable outcome
|
|
23
|
+
|
|
24
|
+
**PRUNE** — The task is infeasible given current constraints. Skip with justification.
|
|
25
|
+
- Use when: prerequisite missing and not fixable here, out of scope, contradicts an earlier decision
|
|
26
|
+
- Output: `PRUNE: [one-sentence justification]`
|
|
27
|
+
|
|
28
|
+
**ESCALATE** — Repair budget exhausted, or this is an architectural decision (Rule 4).
|
|
29
|
+
- Use when: RETRY failed more than once with different approaches, or fix requires structural change
|
|
30
|
+
- Output: `ESCALATE: [what was tried] | [what decision is needed]`
|
|
31
|
+
</repair_directive>
|
|
32
|
+
|
|
33
|
+
<process>
|
|
34
|
+
|
|
35
|
+
<step name="diagnose">
|
|
36
|
+
Read the error and done-criteria carefully. Ask:
|
|
37
|
+
1. Is this a transient/environmental issue? → RETRY
|
|
38
|
+
2. Is the task verifiably too broad? → DECOMPOSE
|
|
39
|
+
3. Is a prerequisite genuinely missing and unfixable in scope? → PRUNE
|
|
40
|
+
4. Has RETRY already been attempted with this task? Check REPAIR_BUDGET. If 0 → ESCALATE
|
|
41
|
+
</step>
|
|
42
|
+
|
|
43
|
+
<step name="execute_retry">
|
|
44
|
+
If RETRY:
|
|
45
|
+
1. Apply the specific adjustment stated in the directive
|
|
46
|
+
2. Re-run the task implementation
|
|
47
|
+
3. Re-run verification
|
|
48
|
+
4. If passes → continue normally, log `[Node Repair - RETRY] Task [X]: [adjustment made]`
|
|
49
|
+
5. If fails again → decrement REPAIR_BUDGET, re-invoke node-repair with updated context
|
|
50
|
+
</step>
|
|
51
|
+
|
|
52
|
+
<step name="execute_decompose">
|
|
53
|
+
If DECOMPOSE:
|
|
54
|
+
1. Replace the failed task inline with the sub-tasks (do not modify PLAN.md on disk)
|
|
55
|
+
2. Execute sub-tasks sequentially, each with its own verification
|
|
56
|
+
3. If all sub-tasks pass → treat original task as succeeded, log `[Node Repair - DECOMPOSE] Task [X] → [N] sub-tasks`
|
|
57
|
+
4. If a sub-task fails → re-invoke node-repair for that sub-task (REPAIR_BUDGET applies per sub-task)
|
|
58
|
+
</step>
|
|
59
|
+
|
|
60
|
+
<step name="execute_prune">
|
|
61
|
+
If PRUNE:
|
|
62
|
+
1. Mark task as skipped with justification
|
|
63
|
+
2. Log to SUMMARY "Issues Encountered": `[Node Repair - PRUNE] Task [X]: [justification]`
|
|
64
|
+
3. Continue to next task
|
|
65
|
+
</step>
|
|
66
|
+
|
|
67
|
+
<step name="execute_escalate">
|
|
68
|
+
If ESCALATE:
|
|
69
|
+
1. Surface to user via verification_failure_gate with full repair history
|
|
70
|
+
2. Present: what was tried (each RETRY/DECOMPOSE attempt), what the blocker is, options available
|
|
71
|
+
3. Wait for user direction before continuing
|
|
72
|
+
</step>
|
|
73
|
+
|
|
74
|
+
</process>
|
|
75
|
+
|
|
76
|
+
<logging>
|
|
77
|
+
All repair actions must appear in SUMMARY.md under "## Deviations from Plan":
|
|
78
|
+
|
|
79
|
+
| Type | Format |
|
|
80
|
+
|------|--------|
|
|
81
|
+
| RETRY success | `[Node Repair - RETRY] Task X: [adjustment] — resolved` |
|
|
82
|
+
| RETRY fail → ESCALATE | `[Node Repair - RETRY] Task X: [N] attempts exhausted — escalated to user` |
|
|
83
|
+
| DECOMPOSE | `[Node Repair - DECOMPOSE] Task X split into [N] sub-tasks — all passed` |
|
|
84
|
+
| PRUNE | `[Node Repair - PRUNE] Task X skipped: [justification]` |
|
|
85
|
+
</logging>
|
|
86
|
+
|
|
87
|
+
<constraints>
|
|
88
|
+
- REPAIR_BUDGET defaults to 2 per task. Configurable via config.json `workflow.node_repair_budget`.
|
|
89
|
+
- Never modify PLAN.md on disk — decomposed sub-tasks are in-memory only.
|
|
90
|
+
- DECOMPOSE sub-tasks must be more specific than the original, not synonymous rewrites.
|
|
91
|
+
- If config.json `workflow.node_repair` is `false`, skip directly to verification_failure_gate (user retains original behavior).
|
|
92
|
+
</constraints>
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Zero-friction idea capture. One Write call, one confirmation line. No questions, no prompts.
|
|
3
|
+
Runs inline — no Task, no AskUserQuestion, no Bash.
|
|
4
|
+
</purpose>
|
|
5
|
+
|
|
6
|
+
<required_reading>
|
|
7
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
8
|
+
</required_reading>
|
|
9
|
+
|
|
10
|
+
<process>
|
|
11
|
+
|
|
12
|
+
<step name="storage_format">
|
|
13
|
+
**Note storage format.**
|
|
14
|
+
|
|
15
|
+
Notes are stored as individual markdown files:
|
|
16
|
+
|
|
17
|
+
- **Project scope**: `.planning/notes/{YYYY-MM-DD}-{slug}.md` — used when `.planning/` exists in cwd
|
|
18
|
+
- **Global scope**: `~/.claude/notes/{YYYY-MM-DD}-{slug}.md` — fallback when no `.planning/`, or when `--global` flag is present
|
|
19
|
+
|
|
20
|
+
Each note file:
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
---
|
|
24
|
+
date: "YYYY-MM-DD HH:mm"
|
|
25
|
+
promoted: false
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
{note text verbatim}
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
**`--global` flag**: Strip `--global` from anywhere in `$ARGUMENTS` before parsing. When present, force global scope regardless of whether `.planning/` exists.
|
|
32
|
+
|
|
33
|
+
**Important**: Do NOT create `.planning/` if it doesn't exist. Fall back to global scope silently.
|
|
34
|
+
</step>
|
|
35
|
+
|
|
36
|
+
<step name="parse_subcommand">
|
|
37
|
+
**Parse subcommand from $ARGUMENTS (after stripping --global).**
|
|
38
|
+
|
|
39
|
+
| Condition | Subcommand |
|
|
40
|
+
|-----------|------------|
|
|
41
|
+
| Arguments are exactly `list` (case-insensitive) | **list** |
|
|
42
|
+
| Arguments are exactly `promote <N>` where N is a number | **promote** |
|
|
43
|
+
| Arguments are empty (no text at all) | **list** |
|
|
44
|
+
| Anything else | **append** (the text IS the note) |
|
|
45
|
+
|
|
46
|
+
**Critical**: `list` is only a subcommand when it's the ENTIRE argument. `/ccp:note list of groceries` saves a note with text "list of groceries". Same for `promote` — only a subcommand when followed by exactly one number.
|
|
47
|
+
</step>
|
|
48
|
+
|
|
49
|
+
<step name="append">
|
|
50
|
+
**Subcommand: append — create a timestamped note file.**
|
|
51
|
+
|
|
52
|
+
1. Determine scope (project or global) per storage format above
|
|
53
|
+
2. Ensure the notes directory exists (`.planning/notes/` or `~/.claude/notes/`)
|
|
54
|
+
3. Generate slug: first ~4 meaningful words of the note text, lowercase, hyphen-separated (strip articles/prepositions from the start)
|
|
55
|
+
4. Generate filename: `{YYYY-MM-DD}-{slug}.md`
|
|
56
|
+
- If a file with that name already exists, append `-2`, `-3`, etc.
|
|
57
|
+
5. Write the file with frontmatter and note text (see storage format)
|
|
58
|
+
6. Confirm with exactly one line: `Noted ({scope}): {note text}`
|
|
59
|
+
- Where `{scope}` is "project" or "global"
|
|
60
|
+
|
|
61
|
+
**Constraints:**
|
|
62
|
+
- **Never modify the note text** — capture verbatim, including typos
|
|
63
|
+
- **Never ask questions** — just write and confirm
|
|
64
|
+
- **Timestamp format**: Use local time, `YYYY-MM-DD HH:mm` (24-hour, no seconds)
|
|
65
|
+
</step>
|
|
66
|
+
|
|
67
|
+
<step name="list">
|
|
68
|
+
**Subcommand: list — show notes from both scopes.**
|
|
69
|
+
|
|
70
|
+
1. Glob `.planning/notes/*.md` (if directory exists) — project notes
|
|
71
|
+
2. Glob `~/.claude/notes/*.md` (if directory exists) — global notes
|
|
72
|
+
3. For each file, read frontmatter to get `date` and `promoted` status
|
|
73
|
+
4. Exclude files where `promoted: true` from active counts (but still show them, dimmed)
|
|
74
|
+
5. Sort by date, number all active entries sequentially starting at 1
|
|
75
|
+
6. If total active entries > 20, show only the last 10 with a note about how many were omitted
|
|
76
|
+
|
|
77
|
+
**Display format:**
|
|
78
|
+
|
|
79
|
+
```
|
|
80
|
+
Notes:
|
|
81
|
+
|
|
82
|
+
Project (.planning/notes/):
|
|
83
|
+
1. [2026-02-08 14:32] refactor the hook system to support async validators
|
|
84
|
+
2. [promoted] [2026-02-08 14:40] add rate limiting to the API endpoints
|
|
85
|
+
3. [2026-02-08 15:10] consider adding a --dry-run flag to build
|
|
86
|
+
|
|
87
|
+
Global (~/.claude/notes/):
|
|
88
|
+
4. [2026-02-08 10:00] cross-project idea about shared config
|
|
89
|
+
|
|
90
|
+
{count} active note(s). Use `/ccp:note promote <N>` to convert to a todo.
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
If a scope has no directory or no entries, show: `(no notes)`
|
|
94
|
+
</step>
|
|
95
|
+
|
|
96
|
+
<step name="promote">
|
|
97
|
+
**Subcommand: promote — convert a note into a todo.**
|
|
98
|
+
|
|
99
|
+
1. Run the **list** logic to build the numbered index (both scopes)
|
|
100
|
+
2. Find entry N from the numbered list
|
|
101
|
+
3. If N is invalid or refers to an already-promoted note, tell the user and stop
|
|
102
|
+
4. **Requires `.planning/` directory** — if it doesn't exist, warn: "Todos require a CCP project. Run `/ccp:new-project` to initialize one."
|
|
103
|
+
5. Ensure `.planning/todos/pending/` directory exists
|
|
104
|
+
6. Generate todo ID: `{NNN}-{slug}` where NNN is the next sequential number (scan both `.planning/todos/pending/` and `.planning/todos/done/` for the highest existing number, increment by 1, zero-pad to 3 digits) and slug is the first ~4 meaningful words of the note text
|
|
105
|
+
7. Extract the note text from the source file (body after frontmatter)
|
|
106
|
+
8. Create `.planning/todos/pending/{id}.md`:
|
|
107
|
+
|
|
108
|
+
```yaml
|
|
109
|
+
---
|
|
110
|
+
title: "{note text}"
|
|
111
|
+
status: pending
|
|
112
|
+
priority: P2
|
|
113
|
+
source: "promoted from /ccp:note"
|
|
114
|
+
created: {YYYY-MM-DD}
|
|
115
|
+
theme: general
|
|
116
|
+
---
|
|
117
|
+
|
|
118
|
+
## Goal
|
|
119
|
+
|
|
120
|
+
{note text}
|
|
121
|
+
|
|
122
|
+
## Context
|
|
123
|
+
|
|
124
|
+
Promoted from quick note captured on {original date}.
|
|
125
|
+
|
|
126
|
+
## Acceptance Criteria
|
|
127
|
+
|
|
128
|
+
- [ ] {primary criterion derived from note text}
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
9. Mark the source note file as promoted: update its frontmatter to `promoted: true`
|
|
132
|
+
10. Confirm: `Promoted note {N} to todo {id}: {note text}`
|
|
133
|
+
</step>
|
|
134
|
+
|
|
135
|
+
</process>
|
|
136
|
+
|
|
137
|
+
<edge_cases>
|
|
138
|
+
1. **"list" as note text**: `/ccp:note list of things` saves note "list of things" (subcommand only when `list` is the entire arg)
|
|
139
|
+
2. **No `.planning/`**: Falls back to global `~/.claude/notes/` — works in any directory
|
|
140
|
+
3. **Promote without project**: Warns that todos require `.planning/`, suggests `/ccp:new-project`
|
|
141
|
+
4. **Large files**: `list` shows last 10 when >20 active entries
|
|
142
|
+
5. **Duplicate slugs**: Append `-2`, `-3` etc. to filename if slug already used on same date
|
|
143
|
+
6. **`--global` position**: Stripped from anywhere — `--global my idea` and `my idea --global` both save "my idea" globally
|
|
144
|
+
7. **Promote already-promoted**: Tell user "Note {N} is already promoted" and stop
|
|
145
|
+
8. **Empty note text after stripping flags**: Treat as `list` subcommand
|
|
146
|
+
</edge_cases>
|
|
147
|
+
|
|
148
|
+
<success_criteria>
|
|
149
|
+
- [ ] Append: Note file written with correct frontmatter and verbatim text
|
|
150
|
+
- [ ] Append: No questions asked — instant capture
|
|
151
|
+
- [ ] List: Both scopes shown with sequential numbering
|
|
152
|
+
- [ ] List: Promoted notes shown but dimmed
|
|
153
|
+
- [ ] Promote: Todo created with correct format
|
|
154
|
+
- [ ] Promote: Source note marked as promoted
|
|
155
|
+
- [ ] Global fallback: Works when no `.planning/` exists
|
|
156
|
+
</success_criteria>
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
<purpose>
|
|
2
|
+
Create structured `.planning/HANDOFF.json` and `.continue-here.md` handoff files to preserve complete work state across sessions. The JSON provides machine-readable state for `/ccp:resume-work`; the markdown provides human-readable context.
|
|
3
|
+
</purpose>
|
|
4
|
+
|
|
5
|
+
<required_reading>
|
|
6
|
+
Read all files referenced by the invoking prompt's execution_context before starting.
|
|
7
|
+
</required_reading>
|
|
8
|
+
|
|
9
|
+
<process>
|
|
10
|
+
|
|
11
|
+
<step name="detect">
|
|
12
|
+
Find current phase directory from most recently modified files:
|
|
13
|
+
|
|
14
|
+
```bash
|
|
15
|
+
# Find most recent phase directory with work
|
|
16
|
+
(ls -lt .planning/phases/*/PLAN.md 2>/dev/null || true) | head -1 | grep -oP 'phases/\K[^/]+' || true
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
If no active phase detected, ask user which phase they're pausing work on.
|
|
20
|
+
</step>
|
|
21
|
+
|
|
22
|
+
<step name="gather">
|
|
23
|
+
**Collect complete state for handoff:**
|
|
24
|
+
|
|
25
|
+
1. **Current position**: Which phase, which plan, which task
|
|
26
|
+
2. **Work completed**: What got done this session
|
|
27
|
+
3. **Work remaining**: What's left in current plan/phase
|
|
28
|
+
4. **Decisions made**: Key decisions and rationale
|
|
29
|
+
5. **Blockers/issues**: Anything stuck
|
|
30
|
+
6. **Human actions pending**: Things that need manual intervention (MCP setup, API keys, approvals, manual testing)
|
|
31
|
+
7. **Background processes**: Any running servers/watchers that were part of the workflow
|
|
32
|
+
8. **Files modified**: What's changed but not committed
|
|
33
|
+
|
|
34
|
+
Ask user for clarifications if needed via conversational questions.
|
|
35
|
+
|
|
36
|
+
**Also inspect SUMMARY.md files for false completions:**
|
|
37
|
+
```bash
|
|
38
|
+
# Check for placeholder content in existing summaries
|
|
39
|
+
grep -l "To be filled\|placeholder\|TBD" .planning/phases/*/*.md 2>/dev/null || true
|
|
40
|
+
```
|
|
41
|
+
Report any summaries with placeholder content as incomplete items.
|
|
42
|
+
</step>
|
|
43
|
+
|
|
44
|
+
<step name="write_structured">
|
|
45
|
+
**Write structured handoff to `.planning/HANDOFF.json`:**
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
timestamp=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" current-timestamp full --raw)
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
```json
|
|
52
|
+
{
|
|
53
|
+
"version": "1.0",
|
|
54
|
+
"timestamp": "{timestamp}",
|
|
55
|
+
"phase": "{phase_number}",
|
|
56
|
+
"phase_name": "{phase_name}",
|
|
57
|
+
"phase_dir": "{phase_dir}",
|
|
58
|
+
"plan": {current_plan_number},
|
|
59
|
+
"task": {current_task_number},
|
|
60
|
+
"total_tasks": {total_task_count},
|
|
61
|
+
"status": "paused",
|
|
62
|
+
"completed_tasks": [
|
|
63
|
+
{"id": 1, "name": "{task_name}", "status": "done", "commit": "{short_hash}"},
|
|
64
|
+
{"id": 2, "name": "{task_name}", "status": "done", "commit": "{short_hash}"},
|
|
65
|
+
{"id": 3, "name": "{task_name}", "status": "in_progress", "progress": "{what_done}"}
|
|
66
|
+
],
|
|
67
|
+
"remaining_tasks": [
|
|
68
|
+
{"id": 4, "name": "{task_name}", "status": "not_started"},
|
|
69
|
+
{"id": 5, "name": "{task_name}", "status": "not_started"}
|
|
70
|
+
],
|
|
71
|
+
"blockers": [
|
|
72
|
+
{"description": "{blocker}", "type": "technical|human_action|external", "workaround": "{if any}"}
|
|
73
|
+
],
|
|
74
|
+
"human_actions_pending": [
|
|
75
|
+
{"action": "{what needs to be done}", "context": "{why}", "blocking": true}
|
|
76
|
+
],
|
|
77
|
+
"decisions": [
|
|
78
|
+
{"decision": "{what}", "rationale": "{why}", "phase": "{phase_number}"}
|
|
79
|
+
],
|
|
80
|
+
"uncommitted_files": [],
|
|
81
|
+
"next_action": "{specific first action when resuming}",
|
|
82
|
+
"context_notes": "{mental state, approach, what you were thinking}"
|
|
83
|
+
}
|
|
84
|
+
```
|
|
85
|
+
</step>
|
|
86
|
+
|
|
87
|
+
<step name="write">
|
|
88
|
+
**Write handoff to `.planning/phases/XX-name/.continue-here.md`:**
|
|
89
|
+
|
|
90
|
+
```markdown
|
|
91
|
+
---
|
|
92
|
+
phase: XX-name
|
|
93
|
+
task: 3
|
|
94
|
+
total_tasks: 7
|
|
95
|
+
status: in_progress
|
|
96
|
+
last_updated: [timestamp from current-timestamp]
|
|
97
|
+
---
|
|
98
|
+
|
|
99
|
+
<current_state>
|
|
100
|
+
[Where exactly are we? Immediate context]
|
|
101
|
+
</current_state>
|
|
102
|
+
|
|
103
|
+
<completed_work>
|
|
104
|
+
|
|
105
|
+
- Task 1: [name] - Done
|
|
106
|
+
- Task 2: [name] - Done
|
|
107
|
+
- Task 3: [name] - In progress, [what's done]
|
|
108
|
+
</completed_work>
|
|
109
|
+
|
|
110
|
+
<remaining_work>
|
|
111
|
+
|
|
112
|
+
- Task 3: [what's left]
|
|
113
|
+
- Task 4: Not started
|
|
114
|
+
- Task 5: Not started
|
|
115
|
+
</remaining_work>
|
|
116
|
+
|
|
117
|
+
<decisions_made>
|
|
118
|
+
|
|
119
|
+
- Decided to use [X] because [reason]
|
|
120
|
+
- Chose [approach] over [alternative] because [reason]
|
|
121
|
+
</decisions_made>
|
|
122
|
+
|
|
123
|
+
<blockers>
|
|
124
|
+
- [Blocker 1]: [status/workaround]
|
|
125
|
+
</blockers>
|
|
126
|
+
|
|
127
|
+
<context>
|
|
128
|
+
[Mental state, what were you thinking, the plan]
|
|
129
|
+
</context>
|
|
130
|
+
|
|
131
|
+
<next_action>
|
|
132
|
+
Start with: [specific first action when resuming]
|
|
133
|
+
</next_action>
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
Be specific enough for a fresh Claude to understand immediately.
|
|
137
|
+
|
|
138
|
+
Use `current-timestamp` for last_updated field. You can use init todos (which provides timestamps) or call directly:
|
|
139
|
+
```bash
|
|
140
|
+
timestamp=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" current-timestamp full --raw)
|
|
141
|
+
```
|
|
142
|
+
</step>
|
|
143
|
+
|
|
144
|
+
<step name="commit">
|
|
145
|
+
```bash
|
|
146
|
+
node "$HOME/.claude/pilot/bin/ccp-tools.cjs" commit "wip: [phase-name] paused at task [X]/[Y]" --files .planning/phases/*/.continue-here.md .planning/HANDOFF.json
|
|
147
|
+
```
|
|
148
|
+
</step>
|
|
149
|
+
|
|
150
|
+
<step name="confirm">
|
|
151
|
+
```
|
|
152
|
+
Handoff created:
|
|
153
|
+
- .planning/HANDOFF.json (structured, machine-readable)
|
|
154
|
+
- .planning/phases/[XX-name]/.continue-here.md (human-readable)
|
|
155
|
+
|
|
156
|
+
Current state:
|
|
157
|
+
|
|
158
|
+
- Phase: [XX-name]
|
|
159
|
+
- Task: [X] of [Y]
|
|
160
|
+
- Status: [in_progress/blocked]
|
|
161
|
+
- Blockers: [count] ({human_actions_pending count} need human action)
|
|
162
|
+
- Committed as WIP
|
|
163
|
+
|
|
164
|
+
To resume: /ccp:resume-work
|
|
165
|
+
|
|
166
|
+
```
|
|
167
|
+
</step>
|
|
168
|
+
|
|
169
|
+
</process>
|
|
170
|
+
|
|
171
|
+
<success_criteria>
|
|
172
|
+
- [ ] .continue-here.md created in correct phase directory
|
|
173
|
+
- [ ] HANDOFF.json created with structured machine-readable state
|
|
174
|
+
- [ ] All sections filled with specific content
|
|
175
|
+
- [ ] Committed as WIP
|
|
176
|
+
- [ ] User knows location and how to resume
|
|
177
|
+
</success_criteria>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<purpose>
|
|
2
|
-
Create all phases necessary to close gaps identified by `/
|
|
2
|
+
Create all phases necessary to close gaps identified by `/ccp:audit-milestone`. Reads MILESTONE-AUDIT.md, groups gaps into logical phases, creates phase entries in ROADMAP.md, and offers to plan each phase. One command creates all fix phases — no manual `/ccp:add-phase` per gap.
|
|
3
3
|
</purpose>
|
|
4
4
|
|
|
5
5
|
<required_reading>
|
|
@@ -12,7 +12,7 @@ Read all files referenced by the invoking prompt's execution_context before star
|
|
|
12
12
|
|
|
13
13
|
```bash
|
|
14
14
|
# Find the most recent audit file
|
|
15
|
-
ls -t .planning/v*-MILESTONE-AUDIT.md 2>/dev/null | head -1
|
|
15
|
+
(ls -t .planning/v*-MILESTONE-AUDIT.md 2>/dev/null || true) | head -1
|
|
16
16
|
```
|
|
17
17
|
|
|
18
18
|
Parse YAML frontmatter to extract structured gaps:
|
|
@@ -22,7 +22,7 @@ Parse YAML frontmatter to extract structured gaps:
|
|
|
22
22
|
|
|
23
23
|
If no audit file exists or has no gaps, error:
|
|
24
24
|
```
|
|
25
|
-
No audit gaps found. Run `/
|
|
25
|
+
No audit gaps found. Run `/ccp:audit-milestone` first.
|
|
26
26
|
```
|
|
27
27
|
|
|
28
28
|
## 2. Prioritize Gaps
|
|
@@ -65,8 +65,7 @@ Gap: Flow "View dashboard" broken at data fetch
|
|
|
65
65
|
Find highest existing phase:
|
|
66
66
|
```bash
|
|
67
67
|
# Get sorted phase list, extract last one
|
|
68
|
-
|
|
69
|
-
HIGHEST=$(printf '%s\n' "$PHASES" | jq -r '.directories[-1]')
|
|
68
|
+
HIGHEST=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" phases list --pick directories[-1])
|
|
70
69
|
```
|
|
71
70
|
|
|
72
71
|
New phases continue from there:
|
|
@@ -147,7 +146,7 @@ mkdir -p ".planning/phases/{NN}-{name}"
|
|
|
147
146
|
## 9. Commit Roadmap and Requirements Update
|
|
148
147
|
|
|
149
148
|
```bash
|
|
150
|
-
node "$HOME/.claude/
|
|
149
|
+
node "$HOME/.claude/pilot/bin/ccp-tools.cjs" commit "docs(roadmap): add gap closure phases {N}-{M}" --files .planning/ROADMAP.md .planning/REQUIREMENTS.md
|
|
151
150
|
```
|
|
152
151
|
|
|
153
152
|
## 10. Offer Next Steps
|
|
@@ -164,22 +163,22 @@ node "$HOME/.claude/get-shit-done/bin/gsd-tools.cjs" commit "docs(roadmap): add
|
|
|
164
163
|
|
|
165
164
|
**Plan first gap closure phase**
|
|
166
165
|
|
|
167
|
-
`/
|
|
166
|
+
`/ccp:plan-phase {N}`
|
|
168
167
|
|
|
169
168
|
<sub>`/clear` first → fresh context window</sub>
|
|
170
169
|
|
|
171
170
|
---
|
|
172
171
|
|
|
173
172
|
**Also available:**
|
|
174
|
-
- `/
|
|
173
|
+
- `/ccp:execute-phase {N}` — if plans already exist
|
|
175
174
|
- `cat .planning/ROADMAP.md` — see updated roadmap
|
|
176
175
|
|
|
177
176
|
---
|
|
178
177
|
|
|
179
178
|
**After all gap phases complete:**
|
|
180
179
|
|
|
181
|
-
`/
|
|
182
|
-
`/
|
|
180
|
+
`/ccp:audit-milestone` — re-audit to verify gaps closed
|
|
181
|
+
`/ccp:complete-milestone {version}` — archive when audit passes
|
|
183
182
|
```
|
|
184
183
|
|
|
185
184
|
</process>
|
|
@@ -270,5 +269,5 @@ becomes:
|
|
|
270
269
|
- [ ] Coverage count updated in REQUIREMENTS.md
|
|
271
270
|
- [ ] Phase directories created
|
|
272
271
|
- [ ] Changes committed (includes REQUIREMENTS.md)
|
|
273
|
-
- [ ] User knows to run `/
|
|
272
|
+
- [ ] User knows to run `/ccp:plan-phase` next
|
|
274
273
|
</success_criteria>
|