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,308 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Enforce TDD workflow for Rust. Write tests first, then implement. Verify 80%+ coverage with cargo-llvm-cov.
|
|
3
|
+
---
|
|
4
|
+
|
|
5
|
+
# Rust TDD Command
|
|
6
|
+
|
|
7
|
+
This command enforces test-driven development methodology for Rust code using `#[test]`, rstest, proptest, and mockall.
|
|
8
|
+
|
|
9
|
+
## What This Command Does
|
|
10
|
+
|
|
11
|
+
1. **Define Types/Traits**: Scaffold function signatures with `todo!()`
|
|
12
|
+
2. **Write Tests**: Create comprehensive test module (RED)
|
|
13
|
+
3. **Run Tests**: Verify tests fail for the right reason
|
|
14
|
+
4. **Implement Code**: Write minimal code to pass (GREEN)
|
|
15
|
+
5. **Refactor**: Improve while keeping tests green
|
|
16
|
+
6. **Check Coverage**: Ensure 80%+ coverage with cargo-llvm-cov
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
Use `/rust-test` when:
|
|
21
|
+
- Implementing new Rust functions, methods, or traits
|
|
22
|
+
- Adding test coverage to existing Rust code
|
|
23
|
+
- Fixing bugs (write failing test first)
|
|
24
|
+
- Building critical business logic
|
|
25
|
+
- Learning TDD workflow in Rust
|
|
26
|
+
|
|
27
|
+
## TDD Cycle
|
|
28
|
+
|
|
29
|
+
```
|
|
30
|
+
RED -> Write failing test first
|
|
31
|
+
GREEN -> Implement minimal code to pass
|
|
32
|
+
REFACTOR -> Improve code, tests stay green
|
|
33
|
+
REPEAT -> Next test case
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
## Example Session
|
|
37
|
+
|
|
38
|
+
````text
|
|
39
|
+
User: /rust-test I need a function to validate user registration
|
|
40
|
+
|
|
41
|
+
Agent:
|
|
42
|
+
# TDD Session: Registration Validator
|
|
43
|
+
|
|
44
|
+
## Step 1: Define Interface
|
|
45
|
+
|
|
46
|
+
```rust
|
|
47
|
+
// src/validator.rs
|
|
48
|
+
pub struct RegistrationRequest {
|
|
49
|
+
pub name: String,
|
|
50
|
+
pub email: String,
|
|
51
|
+
pub password: String,
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
pub enum ValidationResult {
|
|
55
|
+
Valid,
|
|
56
|
+
Invalid(Vec<String>),
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
pub fn validate_registration(request: &RegistrationRequest) -> ValidationResult {
|
|
60
|
+
todo!()
|
|
61
|
+
}
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
## Step 2: Write Tests (RED)
|
|
65
|
+
|
|
66
|
+
```rust
|
|
67
|
+
#[cfg(test)]
|
|
68
|
+
mod tests {
|
|
69
|
+
use super::*;
|
|
70
|
+
|
|
71
|
+
#[test]
|
|
72
|
+
fn valid_registration_returns_valid() {
|
|
73
|
+
let request = RegistrationRequest {
|
|
74
|
+
name: "Alice".into(),
|
|
75
|
+
email: "alice@example.com".into(),
|
|
76
|
+
password: "SecureP@ss1".into(),
|
|
77
|
+
};
|
|
78
|
+
assert!(matches!(validate_registration(&request), ValidationResult::Valid));
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
#[test]
|
|
82
|
+
fn blank_name_returns_invalid() {
|
|
83
|
+
let request = RegistrationRequest {
|
|
84
|
+
name: "".into(),
|
|
85
|
+
email: "alice@example.com".into(),
|
|
86
|
+
password: "SecureP@ss1".into(),
|
|
87
|
+
};
|
|
88
|
+
match validate_registration(&request) {
|
|
89
|
+
ValidationResult::Invalid(errors) => {
|
|
90
|
+
assert!(errors.contains(&"Name is required".to_string()));
|
|
91
|
+
}
|
|
92
|
+
ValidationResult::Valid => panic!("expected Invalid"),
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
#[test]
|
|
97
|
+
fn invalid_email_returns_invalid() {
|
|
98
|
+
let request = RegistrationRequest {
|
|
99
|
+
name: "Alice".into(),
|
|
100
|
+
email: "not-an-email".into(),
|
|
101
|
+
password: "SecureP@ss1".into(),
|
|
102
|
+
};
|
|
103
|
+
assert!(matches!(
|
|
104
|
+
validate_registration(&request),
|
|
105
|
+
ValidationResult::Invalid(_)
|
|
106
|
+
));
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
#[test]
|
|
110
|
+
fn short_password_returns_invalid() {
|
|
111
|
+
let request = RegistrationRequest {
|
|
112
|
+
name: "Alice".into(),
|
|
113
|
+
email: "alice@example.com".into(),
|
|
114
|
+
password: "short".into(),
|
|
115
|
+
};
|
|
116
|
+
assert!(matches!(
|
|
117
|
+
validate_registration(&request),
|
|
118
|
+
ValidationResult::Invalid(_)
|
|
119
|
+
));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Step 3: Run Tests — Verify FAIL
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
$ cargo test
|
|
128
|
+
running 4 tests
|
|
129
|
+
test tests::valid_registration_returns_valid ... FAILED (not yet implemented)
|
|
130
|
+
test tests::blank_name_returns_invalid ... FAILED
|
|
131
|
+
test tests::invalid_email_returns_invalid ... FAILED
|
|
132
|
+
test tests::short_password_returns_invalid ... FAILED
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
Tests fail as expected (todo! panic).
|
|
136
|
+
|
|
137
|
+
## Step 4: Implement Minimal Code (GREEN)
|
|
138
|
+
|
|
139
|
+
```rust
|
|
140
|
+
pub fn validate_registration(request: &RegistrationRequest) -> ValidationResult {
|
|
141
|
+
let mut errors = Vec::new();
|
|
142
|
+
|
|
143
|
+
if request.name.trim().is_empty() {
|
|
144
|
+
errors.push("Name is required".into());
|
|
145
|
+
}
|
|
146
|
+
if !request.email.contains('@') {
|
|
147
|
+
errors.push("Invalid email format".into());
|
|
148
|
+
}
|
|
149
|
+
if request.password.len() < 8 {
|
|
150
|
+
errors.push("Password must be at least 8 characters".into());
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if errors.is_empty() {
|
|
154
|
+
ValidationResult::Valid
|
|
155
|
+
} else {
|
|
156
|
+
ValidationResult::Invalid(errors)
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
## Step 5: Run Tests — Verify PASS
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
$ cargo test
|
|
165
|
+
running 4 tests
|
|
166
|
+
test tests::valid_registration_returns_valid ... ok
|
|
167
|
+
test tests::blank_name_returns_invalid ... ok
|
|
168
|
+
test tests::invalid_email_returns_invalid ... ok
|
|
169
|
+
test tests::short_password_returns_invalid ... ok
|
|
170
|
+
|
|
171
|
+
test result: ok. 4 passed; 0 failed
|
|
172
|
+
```
|
|
173
|
+
|
|
174
|
+
All tests passing!
|
|
175
|
+
|
|
176
|
+
## Step 6: Check Coverage
|
|
177
|
+
|
|
178
|
+
```bash
|
|
179
|
+
$ cargo llvm-cov
|
|
180
|
+
Coverage: 100.0% of lines
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
Coverage: 100%
|
|
184
|
+
|
|
185
|
+
## TDD Complete!
|
|
186
|
+
````
|
|
187
|
+
|
|
188
|
+
## Test Patterns
|
|
189
|
+
|
|
190
|
+
### Unit Tests
|
|
191
|
+
|
|
192
|
+
```rust
|
|
193
|
+
#[cfg(test)]
|
|
194
|
+
mod tests {
|
|
195
|
+
use super::*;
|
|
196
|
+
|
|
197
|
+
#[test]
|
|
198
|
+
fn adds_two_numbers() {
|
|
199
|
+
assert_eq!(add(2, 3), 5);
|
|
200
|
+
}
|
|
201
|
+
|
|
202
|
+
#[test]
|
|
203
|
+
fn handles_error() -> Result<(), Box<dyn std::error::Error>> {
|
|
204
|
+
let result = parse_config(r#"port = 8080"#)?;
|
|
205
|
+
assert_eq!(result.port, 8080);
|
|
206
|
+
Ok(())
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
### Parameterized Tests with rstest
|
|
212
|
+
|
|
213
|
+
```rust
|
|
214
|
+
use rstest::{rstest, fixture};
|
|
215
|
+
|
|
216
|
+
#[rstest]
|
|
217
|
+
#[case("hello", 5)]
|
|
218
|
+
#[case("", 0)]
|
|
219
|
+
#[case("rust", 4)]
|
|
220
|
+
fn test_string_length(#[case] input: &str, #[case] expected: usize) {
|
|
221
|
+
assert_eq!(input.len(), expected);
|
|
222
|
+
}
|
|
223
|
+
```
|
|
224
|
+
|
|
225
|
+
### Async Tests
|
|
226
|
+
|
|
227
|
+
```rust
|
|
228
|
+
#[tokio::test]
|
|
229
|
+
async fn fetches_data_successfully() {
|
|
230
|
+
let client = TestClient::new().await;
|
|
231
|
+
let result = client.get("/data").await;
|
|
232
|
+
assert!(result.is_ok());
|
|
233
|
+
}
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Property-Based Tests
|
|
237
|
+
|
|
238
|
+
```rust
|
|
239
|
+
use proptest::prelude::*;
|
|
240
|
+
|
|
241
|
+
proptest! {
|
|
242
|
+
#[test]
|
|
243
|
+
fn encode_decode_roundtrip(input in ".*") {
|
|
244
|
+
let encoded = encode(&input);
|
|
245
|
+
let decoded = decode(&encoded).unwrap();
|
|
246
|
+
assert_eq!(input, decoded);
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
## Coverage Commands
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
# Summary report
|
|
255
|
+
cargo llvm-cov
|
|
256
|
+
|
|
257
|
+
# HTML report
|
|
258
|
+
cargo llvm-cov --html
|
|
259
|
+
|
|
260
|
+
# Fail if below threshold
|
|
261
|
+
cargo llvm-cov --fail-under-lines 80
|
|
262
|
+
|
|
263
|
+
# Run specific test
|
|
264
|
+
cargo test test_name
|
|
265
|
+
|
|
266
|
+
# Run with output
|
|
267
|
+
cargo test -- --nocapture
|
|
268
|
+
|
|
269
|
+
# Run without stopping on first failure
|
|
270
|
+
cargo test --no-fail-fast
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
## Coverage Targets
|
|
274
|
+
|
|
275
|
+
| Code Type | Target |
|
|
276
|
+
|-----------|--------|
|
|
277
|
+
| Critical business logic | 100% |
|
|
278
|
+
| Public API | 90%+ |
|
|
279
|
+
| General code | 80%+ |
|
|
280
|
+
| Generated / FFI bindings | Exclude |
|
|
281
|
+
|
|
282
|
+
## TDD Best Practices
|
|
283
|
+
|
|
284
|
+
**DO:**
|
|
285
|
+
- Write test FIRST, before any implementation
|
|
286
|
+
- Run tests after each change
|
|
287
|
+
- Use `assert_eq!` over `assert!` for better error messages
|
|
288
|
+
- Use `?` in tests that return `Result` for cleaner output
|
|
289
|
+
- Test behavior, not implementation
|
|
290
|
+
- Include edge cases (empty, boundary, error paths)
|
|
291
|
+
|
|
292
|
+
**DON'T:**
|
|
293
|
+
- Write implementation before tests
|
|
294
|
+
- Skip the RED phase
|
|
295
|
+
- Use `#[should_panic]` when `Result::is_err()` works
|
|
296
|
+
- Use `sleep()` in tests — use channels or `tokio::time::pause()`
|
|
297
|
+
- Mock everything — prefer integration tests when feasible
|
|
298
|
+
|
|
299
|
+
## Related Commands
|
|
300
|
+
|
|
301
|
+
- `/rust-build` - Fix build errors
|
|
302
|
+
- `/rust-review` - Review code after implementation
|
|
303
|
+
- `/verify` - Run full verification loop
|
|
304
|
+
|
|
305
|
+
## Related
|
|
306
|
+
|
|
307
|
+
- Skill: `skills/rust-testing/`
|
|
308
|
+
- Skill: `skills/rust-patterns/`
|
|
@@ -23,8 +23,8 @@ Display all sessions with metadata, filtering, and pagination.
|
|
|
23
23
|
**Script:**
|
|
24
24
|
```bash
|
|
25
25
|
node -e "
|
|
26
|
-
const sm = require((process.env.
|
|
27
|
-
const aa = require((process.env.
|
|
26
|
+
const sm = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-manager');
|
|
27
|
+
const aa = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-aliases');
|
|
28
28
|
|
|
29
29
|
const result = sm.getAllSessions({ limit: 20 });
|
|
30
30
|
const aliases = aa.listAliases();
|
|
@@ -62,8 +62,8 @@ Load and display a session's content (by ID or alias).
|
|
|
62
62
|
**Script:**
|
|
63
63
|
```bash
|
|
64
64
|
node -e "
|
|
65
|
-
const sm = require((process.env.
|
|
66
|
-
const aa = require((process.env.
|
|
65
|
+
const sm = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-manager');
|
|
66
|
+
const aa = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-aliases');
|
|
67
67
|
const id = process.argv[1];
|
|
68
68
|
|
|
69
69
|
// First try to resolve as alias
|
|
@@ -123,8 +123,8 @@ Create a memorable alias for a session.
|
|
|
123
123
|
**Script:**
|
|
124
124
|
```bash
|
|
125
125
|
node -e "
|
|
126
|
-
const sm = require((process.env.
|
|
127
|
-
const aa = require((process.env.
|
|
126
|
+
const sm = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-manager');
|
|
127
|
+
const aa = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-aliases');
|
|
128
128
|
|
|
129
129
|
const sessionId = process.argv[1];
|
|
130
130
|
const aliasName = process.argv[2];
|
|
@@ -163,7 +163,7 @@ Delete an existing alias.
|
|
|
163
163
|
**Script:**
|
|
164
164
|
```bash
|
|
165
165
|
node -e "
|
|
166
|
-
const aa = require((process.env.
|
|
166
|
+
const aa = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-aliases');
|
|
167
167
|
|
|
168
168
|
const aliasName = process.argv[1];
|
|
169
169
|
if (!aliasName) {
|
|
@@ -192,8 +192,8 @@ Show detailed information about a session.
|
|
|
192
192
|
**Script:**
|
|
193
193
|
```bash
|
|
194
194
|
node -e "
|
|
195
|
-
const sm = require((process.env.
|
|
196
|
-
const aa = require((process.env.
|
|
195
|
+
const sm = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-manager');
|
|
196
|
+
const aa = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-aliases');
|
|
197
197
|
|
|
198
198
|
const id = process.argv[1];
|
|
199
199
|
const resolved = aa.resolveAlias(id);
|
|
@@ -239,7 +239,7 @@ Show all session aliases.
|
|
|
239
239
|
**Script:**
|
|
240
240
|
```bash
|
|
241
241
|
node -e "
|
|
242
|
-
const aa = require((process.env.
|
|
242
|
+
const aa = require((process.env.CCP_CLAUDE_DIR||require('path').join(require('os').homedir(),'.claude'))+'/scripts/lib/session-aliases');
|
|
243
243
|
|
|
244
244
|
const aliases = aa.listAliases();
|
|
245
245
|
console.log('Session Aliases (' + aliases.length + '):');
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: Configure your preferred package manager (npm/pnpm/yarn/bun)
|
|
3
|
+
disable-model-invocation: true
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Package Manager Setup
|
|
7
|
+
|
|
8
|
+
Configure your preferred package manager for this project or globally.
|
|
9
|
+
|
|
10
|
+
## Usage
|
|
11
|
+
|
|
12
|
+
```bash
|
|
13
|
+
# Detect current package manager
|
|
14
|
+
node scripts/setup-package-manager.js --detect
|
|
15
|
+
|
|
16
|
+
# Set global preference
|
|
17
|
+
node scripts/setup-package-manager.js --global pnpm
|
|
18
|
+
|
|
19
|
+
# Set project preference
|
|
20
|
+
node scripts/setup-package-manager.js --project bun
|
|
21
|
+
|
|
22
|
+
# List available package managers
|
|
23
|
+
node scripts/setup-package-manager.js --list
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
## Detection Priority
|
|
27
|
+
|
|
28
|
+
When determining which package manager to use, the following order is checked:
|
|
29
|
+
|
|
30
|
+
1. **Environment variable**: `CLAUDE_PACKAGE_MANAGER`
|
|
31
|
+
2. **Project config**: `.claude/package-manager.json`
|
|
32
|
+
3. **package.json**: `packageManager` field
|
|
33
|
+
4. **Lock file**: Presence of package-lock.json, yarn.lock, pnpm-lock.yaml, or bun.lockb
|
|
34
|
+
5. **Global config**: `~/.claude/package-manager.json`
|
|
35
|
+
6. **Fallback**: First available package manager (pnpm > bun > yarn > npm)
|
|
36
|
+
|
|
37
|
+
## Configuration Files
|
|
38
|
+
|
|
39
|
+
### Global Configuration
|
|
40
|
+
```json
|
|
41
|
+
// ~/.claude/package-manager.json
|
|
42
|
+
{
|
|
43
|
+
"packageManager": "pnpm"
|
|
44
|
+
}
|
|
45
|
+
```
|
|
46
|
+
|
|
47
|
+
### Project Configuration
|
|
48
|
+
```json
|
|
49
|
+
// .claude/package-manager.json
|
|
50
|
+
{
|
|
51
|
+
"packageManager": "bun"
|
|
52
|
+
}
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### package.json
|
|
56
|
+
```json
|
|
57
|
+
{
|
|
58
|
+
"packageManager": "pnpm@8.6.0"
|
|
59
|
+
}
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
## Environment Variable
|
|
63
|
+
|
|
64
|
+
Set `CLAUDE_PACKAGE_MANAGER` to override all other detection methods:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
# Windows (PowerShell)
|
|
68
|
+
$env:CLAUDE_PACKAGE_MANAGER = "pnpm"
|
|
69
|
+
|
|
70
|
+
# macOS/Linux
|
|
71
|
+
export CLAUDE_PACKAGE_MANAGER=pnpm
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Run the Detection
|
|
75
|
+
|
|
76
|
+
To see current package manager detection results, run:
|
|
77
|
+
|
|
78
|
+
```bash
|
|
79
|
+
node scripts/setup-package-manager.js --detect
|
|
80
|
+
```
|
|
@@ -13,9 +13,9 @@ Verify that all 4 source directories from the Claude Code Pilot are properly ins
|
|
|
13
13
|
Check the following paths relative to the project root:
|
|
14
14
|
|
|
15
15
|
1. **Kit commands** — check if `.claude/commands/setup.md` exists (this file is a kit-specific marker)
|
|
16
|
-
2. **
|
|
17
|
-
3. **
|
|
18
|
-
4. **
|
|
16
|
+
2. **CCP commands** — check if `.claude/commands/ccp/` directory exists and is non-empty (contains the 32 CCP commands)
|
|
17
|
+
3. **CCP toolbox** — check if `.claude/hooks/` directory exists (contains hooks, lib, detection scripts)
|
|
18
|
+
4. **CCP SDLC workflows** — check if `.claude/pilot/` directory exists and contains `workflows/` subdirectory
|
|
19
19
|
|
|
20
20
|
Use the Bash tool to run existence checks (e.g., `ls` or `test -d`). Count items in each directory.
|
|
21
21
|
|
|
@@ -23,17 +23,17 @@ Present results in this format:
|
|
|
23
23
|
```
|
|
24
24
|
Source Directory Detection:
|
|
25
25
|
[PASS] Kit commands .claude/commands/ (N kit commands)
|
|
26
|
-
[PASS]
|
|
27
|
-
[PASS]
|
|
28
|
-
[PASS]
|
|
26
|
+
[PASS] CCP commands .claude/commands/ccp/ (N commands)
|
|
27
|
+
[PASS] CCP toolbox .claude/hooks/ (hooks, lib, detection)
|
|
28
|
+
[PASS] CCP workflows .claude/pilot/ (workflows, references, templates)
|
|
29
29
|
|
|
30
30
|
All 4 source directories detected.
|
|
31
31
|
```
|
|
32
32
|
|
|
33
33
|
If any directory is missing, show:
|
|
34
34
|
```
|
|
35
|
-
[FAIL]
|
|
36
|
-
Fix: Run /
|
|
35
|
+
[FAIL] CCP commands .claude/commands/ccp/ -- NOT FOUND
|
|
36
|
+
Fix: Run /ccp:update or reinstall with npx claude-code-pilot@latest
|
|
37
37
|
```
|
|
38
38
|
|
|
39
39
|
Continue to Stage 1 regardless — detection is informational, not blocking.
|
|
@@ -53,6 +53,32 @@ Check if this is an existing codebase or new project:
|
|
|
53
53
|
|
|
54
54
|
## Stage 2A — Scan Existing Codebase
|
|
55
55
|
|
|
56
|
+
### Codebase Intelligence Check
|
|
57
|
+
|
|
58
|
+
Before subagent exploration, check if codebase-memory-mcp is available for richer codebase analysis:
|
|
59
|
+
|
|
60
|
+
1. Read `.mcp.json` from project root
|
|
61
|
+
2. Check if `mcpServers["codebase-memory-mcp"]` key exists
|
|
62
|
+
3. If YES: attempt to use the `search_graph` MCP tool to get high-level codebase information:
|
|
63
|
+
- Call `search_graph` with query: "project structure and main components"
|
|
64
|
+
- If the call succeeds and returns data: use it to supplement the subagent exploration below (skip redundant grep/find for items already covered by graph results)
|
|
65
|
+
- If the call fails or returns empty: log a warning and continue with standard exploration
|
|
66
|
+
|
|
67
|
+
```
|
|
68
|
+
Codebase Intelligence:
|
|
69
|
+
[ACTIVE] codebase-memory-mcp detected in .mcp.json — using graph queries for richer analysis
|
|
70
|
+
-- or --
|
|
71
|
+
[FALLBACK] codebase-memory-mcp not configured — using file exploration
|
|
72
|
+
-- or --
|
|
73
|
+
[FALLBACK] codebase-memory-mcp not responding — falling back to file exploration
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
4. If NO (key not in .mcp.json): skip graph queries entirely, proceed with standard subagent exploration below.
|
|
77
|
+
|
|
78
|
+
**Important:** This is a best-effort enhancement. The standard subagent exploration (grep/find) must ALWAYS run as the baseline. Graph results supplement, they don't replace. If codebase-memory-mcp adds value, great. If not, /setup works exactly as before.
|
|
79
|
+
|
|
80
|
+
---
|
|
81
|
+
|
|
56
82
|
Use subagents to explore (keeps main context clean). Tailor the exploration prompts based on what Stage 1 detected:
|
|
57
83
|
|
|
58
84
|
**If Next.js detected** (react + next in dependencies, or next.config.* exists):
|
|
@@ -458,8 +484,8 @@ Write CLAUDE.md under 100 lines. Sections:
|
|
|
458
484
|
- **Build & Validate** (8-10 lines): exact commands
|
|
459
485
|
- **Universal Rules** (5-7 lines): project-specific patterns
|
|
460
486
|
- **Forbidden** (4-6 lines): things that break this project
|
|
461
|
-
- **Methodology —
|
|
462
|
-
- **Toolbox —
|
|
487
|
+
- **Methodology — CCP** (6-8 lines): reference /ccp: commands
|
|
488
|
+
- **Toolbox — CCP** (6-8 lines): reference /verify, /checkpoint, /save-session, /learn
|
|
463
489
|
- **Before ANY work** (2 lines): `npx skills find <keywords>`
|
|
464
490
|
- **Reference Docs & MCP** (3-4 lines): point to docs/, contexts/, registries
|
|
465
491
|
- **Gotchas** (3-5 lines): non-obvious things from scan
|
|
@@ -537,8 +563,8 @@ Check MCP registries (github.com/mcp, mcp.so) for relevant servers.
|
|
|
537
563
|
|
|
538
564
|
## Stage 9 — Initialize
|
|
539
565
|
|
|
540
|
-
- **New project**: Suggest `/
|
|
541
|
-
- **Existing project**: Suggest `/
|
|
566
|
+
- **New project**: Suggest `/ccp:new-project` for roadmap/milestones
|
|
567
|
+
- **Existing project**: Suggest `/ccp:quick "first task"` or `/ccp:discuss-phase 1`
|
|
542
568
|
|
|
543
569
|
---
|
|
544
570
|
|
|
@@ -548,8 +574,8 @@ Check MCP registries (github.com/mcp, mcp.so) for relevant servers.
|
|
|
548
574
|
git add CLAUDE.md */CLAUDE.md .claude/ .mcp.json docs/
|
|
549
575
|
git commit -m "chore: add Claude Code Pilot
|
|
550
576
|
|
|
551
|
-
-
|
|
552
|
-
-
|
|
577
|
+
- CCP methodology (32 commands, 12 agents)
|
|
578
|
+
- CCP toolbox (sessions, learning, verification, quality gates)
|
|
553
579
|
- Language rules: [detected]
|
|
554
580
|
- Directory-scoped CLAUDE.md files: [list of directories]
|
|
555
581
|
- MCP auto-configured: [list of detected tools]
|
|
@@ -564,16 +590,16 @@ Setup complete!
|
|
|
564
590
|
Configured:
|
|
565
591
|
- CLAUDE.md — [X]-line project guide
|
|
566
592
|
- [N] directory CLAUDE.md files (src/, test/, ...)
|
|
567
|
-
-
|
|
568
|
-
-
|
|
569
|
-
- [N]
|
|
593
|
+
- CCP — 32 commands, 12 agents, context monitoring, statusline
|
|
594
|
+
- CCP — Sessions, learning, verification, checkpoints, quality gates
|
|
595
|
+
- [N] CCP agents (architect, code-reviewer, security, tdd, ...)
|
|
570
596
|
- [N] language rule sets activated
|
|
571
597
|
- [N] ecosystem skills installed
|
|
572
598
|
- MCP tools: [list of detected/added tools]
|
|
573
599
|
- Safety hooks + desktop notifications
|
|
574
600
|
|
|
575
|
-
Methodology: /
|
|
601
|
+
Methodology: /ccp:discuss → /ccp:plan → /ccp:execute → /ccp:verify
|
|
576
602
|
Quality: /verify → /checkpoint → /quality-gate
|
|
577
603
|
Persistence: /save-session → /resume-session → /learn → /evolve
|
|
578
|
-
Update: /
|
|
604
|
+
Update: /ccp:update
|
|
579
605
|
```
|