claude-code-pilot 2.0.0 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +76 -97
- package/bin/install.js +267 -250
- package/manifest.json +5 -18
- package/package.json +5 -7
- package/src/agents/build-error-resolver.md +114 -0
- package/src/agents/ccp-advisor-researcher.md +104 -0
- package/src/agents/ccp-assumptions-analyzer.md +105 -0
- package/{gsd/agents/gsd-codebase-mapper.md → src/agents/ccp-codebase-mapper.md} +7 -7
- package/{gsd/agents/gsd-debugger.md → src/agents/ccp-debugger.md} +125 -8
- package/{gsd/agents/gsd-executor.md → src/agents/ccp-executor.md} +31 -20
- package/{gsd/agents/gsd-integration-checker.md → src/agents/ccp-integration-checker.md} +2 -2
- package/{gsd/agents/gsd-nyquist-auditor.md → src/agents/ccp-nyquist-auditor.md} +3 -3
- package/{gsd/agents/gsd-phase-researcher.md → src/agents/ccp-phase-researcher.md} +127 -13
- package/{gsd/agents/gsd-plan-checker.md → src/agents/ccp-plan-checker.md} +57 -21
- package/{gsd/agents/gsd-planner.md → src/agents/ccp-planner.md} +61 -23
- package/{gsd/agents/gsd-project-researcher.md → src/agents/ccp-project-researcher.md} +33 -6
- package/{gsd/agents/gsd-research-synthesizer.md → src/agents/ccp-research-synthesizer.md} +11 -11
- package/{gsd/agents/gsd-roadmapper.md → src/agents/ccp-roadmapper.md} +39 -10
- package/src/agents/ccp-ui-auditor.md +439 -0
- package/src/agents/ccp-ui-checker.md +300 -0
- package/src/agents/ccp-ui-researcher.md +357 -0
- package/{gsd/agents/gsd-verifier.md → src/agents/ccp-verifier.md} +81 -15
- package/src/agents/cpp-build-resolver.md +90 -0
- package/src/agents/cpp-reviewer.md +72 -0
- package/src/agents/database-reviewer.md +91 -0
- package/{ecc → src}/agents/doc-updater.md +1 -1
- package/src/agents/docs-lookup.md +68 -0
- package/src/agents/flutter-reviewer.md +243 -0
- package/src/agents/gan-evaluator.md +209 -0
- package/src/agents/gan-generator.md +131 -0
- package/src/agents/gan-planner.md +99 -0
- package/src/agents/go-build-resolver.md +94 -0
- package/src/agents/go-reviewer.md +76 -0
- package/src/agents/harness-optimizer.md +35 -0
- package/src/agents/java-build-resolver.md +153 -0
- package/src/agents/java-reviewer.md +92 -0
- package/src/agents/kotlin-build-resolver.md +118 -0
- package/src/agents/kotlin-reviewer.md +159 -0
- package/src/agents/loop-operator.md +36 -0
- package/src/agents/opensource-forker.md +198 -0
- package/src/agents/opensource-packager.md +249 -0
- package/src/agents/opensource-sanitizer.md +188 -0
- package/src/agents/performance-optimizer.md +446 -0
- package/src/agents/planner.md +212 -0
- package/src/agents/python-reviewer.md +98 -0
- package/src/agents/pytorch-build-resolver.md +120 -0
- package/src/agents/refactor-cleaner.md +85 -0
- package/src/agents/rust-build-resolver.md +148 -0
- package/src/agents/rust-reviewer.md +94 -0
- package/src/agents/typescript-reviewer.md +112 -0
- package/src/available-rules/README.md +80 -0
- package/src/available-rules/cpp/coding-style.md +44 -0
- package/src/available-rules/cpp/hooks.md +39 -0
- package/src/available-rules/cpp/patterns.md +51 -0
- package/src/available-rules/cpp/security.md +51 -0
- package/src/available-rules/cpp/testing.md +44 -0
- package/src/available-rules/csharp/coding-style.md +72 -0
- package/src/available-rules/csharp/hooks.md +25 -0
- package/src/available-rules/csharp/patterns.md +50 -0
- package/src/available-rules/csharp/security.md +58 -0
- package/src/available-rules/csharp/testing.md +46 -0
- package/src/available-rules/java/coding-style.md +114 -0
- package/src/available-rules/java/hooks.md +18 -0
- package/src/available-rules/java/patterns.md +146 -0
- package/src/available-rules/java/security.md +100 -0
- package/src/available-rules/java/testing.md +131 -0
- package/src/available-rules/kotlin/hooks.md +17 -0
- package/src/available-rules/rust/coding-style.md +151 -0
- package/src/available-rules/rust/hooks.md +16 -0
- package/src/available-rules/rust/patterns.md +168 -0
- package/src/available-rules/rust/security.md +141 -0
- package/src/available-rules/rust/testing.md +154 -0
- package/src/commands/ccp/add-backlog.md +76 -0
- package/{gsd/commands-gsd → src/commands/ccp}/add-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/add-tests.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/add-todo.md +4 -4
- package/src/commands/ccp/aside.md +165 -0
- package/{gsd/commands-gsd → src/commands/ccp}/audit-milestone.md +3 -3
- package/src/commands/ccp/audit-uat.md +24 -0
- package/src/commands/ccp/autonomous.md +41 -0
- package/src/commands/ccp/build-fix.md +67 -0
- package/{gsd/commands-gsd → src/commands/ccp}/check-todos.md +3 -3
- package/{ecc/commands → src/commands/ccp}/checkpoint.md +12 -7
- package/{gsd/commands-gsd → src/commands/ccp}/cleanup.md +3 -3
- package/src/commands/ccp/code-review.md +45 -0
- package/{gsd/commands-gsd → src/commands/ccp}/complete-milestone.md +9 -9
- package/src/commands/ccp/context-budget.md +30 -0
- package/src/commands/ccp/cpp-build.md +174 -0
- package/src/commands/ccp/cpp-review.md +133 -0
- package/src/commands/ccp/cpp-test.md +252 -0
- package/{gsd/commands-gsd → src/commands/ccp}/debug.md +14 -9
- package/src/commands/ccp/discuss-phase.md +64 -0
- package/src/commands/ccp/do.md +30 -0
- package/src/commands/ccp/docs-update.md +48 -0
- package/src/commands/ccp/docs.md +32 -0
- package/src/commands/ccp/e2e.md +365 -0
- package/src/commands/ccp/eval.md +125 -0
- package/{ecc/commands → src/commands/ccp}/evolve.md +5 -5
- package/src/commands/ccp/execute-phase.md +59 -0
- package/src/commands/ccp/fast.md +30 -0
- package/src/commands/ccp/forensics.md +56 -0
- package/src/commands/ccp/go-build.md +184 -0
- package/src/commands/ccp/go-review.md +149 -0
- package/src/commands/ccp/go-test.md +269 -0
- package/src/commands/ccp/gradle-build.md +71 -0
- package/src/commands/ccp/harness-audit.md +76 -0
- package/{gsd/commands-gsd → src/commands/ccp}/health.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/help.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/insert-phase.md +3 -3
- package/src/commands/ccp/kotlin-build.md +175 -0
- package/src/commands/ccp/kotlin-review.md +141 -0
- package/src/commands/ccp/kotlin-test.md +313 -0
- package/{ecc/commands → src/commands/ccp}/learn.md +7 -2
- package/{gsd/commands-gsd → src/commands/ccp}/list-phase-assumptions.md +2 -2
- package/src/commands/ccp/manager.md +39 -0
- package/{gsd/commands-gsd → src/commands/ccp}/map-codebase.md +7 -7
- package/src/commands/ccp/milestone-summary.md +51 -0
- package/{ecc/commands → src/commands/ccp}/model-route.md +6 -1
- package/{gsd/commands-gsd → src/commands/ccp}/new-milestone.md +8 -8
- package/{gsd/commands-gsd → src/commands/ccp}/new-project.md +8 -8
- package/src/commands/ccp/next.md +24 -0
- package/src/commands/ccp/note.md +34 -0
- package/src/commands/ccp/orchestrate.md +232 -0
- package/{gsd/commands-gsd → src/commands/ccp}/pause-work.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/plan-milestone-gaps.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/plan-phase.md +9 -7
- package/src/commands/ccp/plan.md +115 -0
- package/src/commands/ccp/plant-seed.md +28 -0
- package/src/commands/ccp/pr-branch.md +25 -0
- package/src/commands/ccp/profile-user.md +46 -0
- package/{gsd/commands-gsd → src/commands/ccp}/progress.md +3 -3
- package/src/commands/ccp/prompt-optimize.md +39 -0
- package/src/commands/ccp/prune.md +25 -0
- package/src/commands/ccp/python-review.md +298 -0
- package/{ecc/commands → src/commands/ccp}/quality-gate.md +7 -2
- package/{gsd/commands-gsd → src/commands/ccp}/quick.md +10 -8
- package/src/commands/ccp/refactor-clean.md +85 -0
- package/{gsd/commands-gsd → src/commands/ccp}/remove-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/research-phase.md +17 -12
- package/{ecc/commands → src/commands/ccp}/resume-session.md +9 -8
- package/{gsd/commands-gsd → src/commands/ccp}/resume-work.md +3 -3
- package/src/commands/ccp/review-backlog.md +61 -0
- package/src/commands/ccp/review.md +37 -0
- package/src/commands/ccp/rules-distill.md +12 -0
- package/src/commands/ccp/rust-build.md +188 -0
- package/src/commands/ccp/rust-review.md +143 -0
- package/src/commands/ccp/rust-test.md +309 -0
- package/{ecc/commands → src/commands/ccp}/save-session.md +2 -1
- package/src/commands/ccp/secure-phase.md +35 -0
- package/src/commands/ccp/session-report.md +19 -0
- package/{ecc/commands → src/commands/ccp}/sessions.md +39 -34
- package/src/commands/ccp/set-profile.md +12 -0
- package/{gsd/commands-gsd → src/commands/ccp}/settings.md +5 -5
- package/src/commands/ccp/setup-pm.md +81 -0
- package/{kit/commands → src/commands/ccp}/setup-refresh.md +4 -3
- package/{kit/commands → src/commands/ccp}/setup.md +67 -40
- package/src/commands/ccp/ship.md +23 -0
- package/src/commands/ccp/skill-create.md +172 -0
- package/src/commands/ccp/skill-health.md +51 -0
- package/src/commands/ccp/stats.md +18 -0
- package/src/commands/ccp/tdd.md +329 -0
- package/src/commands/ccp/test-coverage.md +74 -0
- package/src/commands/ccp/thread.md +127 -0
- package/{kit/commands → src/commands/ccp}/tool-guide.md +2 -1
- package/src/commands/ccp/ui-phase.md +34 -0
- package/src/commands/ccp/ui-review.md +32 -0
- package/src/commands/ccp/update-codemaps.md +77 -0
- package/src/commands/ccp/update-docs.md +89 -0
- package/{gsd/commands-gsd → src/commands/ccp}/update.md +5 -5
- package/{gsd/commands-gsd → src/commands/ccp}/validate-phase.md +3 -3
- package/{gsd/commands-gsd → src/commands/ccp}/verify-work.md +5 -5
- package/{ecc/commands → src/commands/ccp}/verify.md +5 -0
- package/src/commands/ccp/workstreams.md +68 -0
- package/{ecc → src}/examples/CLAUDE.md +4 -4
- package/{ecc → src}/examples/django-api-CLAUDE.md +5 -5
- package/{ecc → src}/examples/go-microservice-CLAUDE.md +6 -6
- package/{ecc → src}/examples/rust-api-CLAUDE.md +4 -4
- package/{ecc → src}/examples/saas-nextjs-CLAUDE.md +8 -8
- package/{gsd/hooks/gsd-context-monitor.js → src/hooks/ccp-context-monitor.js} +3 -3
- package/src/hooks/ccp-prompt-guard.js +96 -0
- package/{gsd/hooks/gsd-statusline.js → src/hooks/ccp-statusline.js} +7 -7
- package/src/hooks/ccp-workflow-guard.js +94 -0
- package/src/hooks/config-protection.js +141 -0
- package/{kit → src}/hooks/kit-check-update.js +7 -4
- package/src/hooks/mcp-health-check.js +620 -0
- package/{ecc/scripts → src}/hooks/run-with-flags-shell.sh +1 -1
- package/{ecc/scripts → src}/hooks/run-with-flags.js +74 -13
- package/src/hooks/session-end-marker.js +29 -0
- package/{ecc/scripts → src}/hooks/session-end.js +83 -40
- package/{ecc/scripts → src}/hooks/session-start.js +76 -10
- package/{ecc/scripts → src}/lib/hook-flags.js +8 -4
- package/{ecc/scripts → src}/lib/project-detect.js +2 -1
- package/{ecc/scripts → src}/lib/session-manager.d.ts +5 -1
- package/{ecc/scripts → src}/lib/session-manager.js +202 -92
- package/{ecc/scripts → src}/lib/utils.d.ts +23 -1
- package/{ecc/scripts → src}/lib/utils.js +91 -3
- package/{gsd/get-shit-done/bin/gsd-tools.cjs → src/pilot/bin/ccp-tools.cjs} +257 -86
- package/{gsd/get-shit-done → src/pilot}/bin/lib/commands.cjs +1 -1
- package/src/pilot/bin/lib/config.cjs +444 -0
- package/src/pilot/bin/lib/core.cjs +1190 -0
- package/src/pilot/bin/lib/init.cjs +1281 -0
- package/src/pilot/bin/lib/model-profiles.cjs +67 -0
- package/{gsd/get-shit-done → src/pilot}/bin/lib/phase.cjs +2 -2
- package/src/pilot/bin/lib/security.cjs +382 -0
- package/{gsd/get-shit-done → src/pilot}/bin/lib/state.cjs +1 -1
- package/src/pilot/bin/lib/uat.cjs +282 -0
- package/{gsd/get-shit-done → src/pilot}/bin/lib/verify.cjs +10 -10
- package/{gsd/get-shit-done → src/pilot}/references/continuation-format.md +16 -16
- package/{gsd/get-shit-done → src/pilot}/references/decimal-phase-calculation.md +5 -5
- package/{gsd/get-shit-done → src/pilot}/references/git-integration.md +5 -5
- package/{gsd/get-shit-done → src/pilot}/references/git-planning-commit.md +4 -4
- package/src/pilot/references/mcp-servers.json +153 -0
- package/{gsd/get-shit-done → src/pilot}/references/model-profile-resolution.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/references/model-profiles.md +20 -20
- package/{gsd/get-shit-done → src/pilot}/references/phase-argument-parsing.md +4 -4
- package/{gsd/get-shit-done → src/pilot}/references/planning-config.md +15 -15
- package/{gsd/get-shit-done → src/pilot}/references/ui-brand.md +5 -5
- package/{gsd/get-shit-done → src/pilot}/references/verification-patterns.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/templates/DEBUG.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/templates/UAT.md +3 -3
- package/src/pilot/templates/UI-SPEC.md +100 -0
- package/{gsd/get-shit-done → src/pilot}/templates/VALIDATION.md +1 -1
- package/src/pilot/templates/claude-md.md +122 -0
- package/{gsd/get-shit-done → src/pilot}/templates/codebase/architecture.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/templates/codebase/structure.md +13 -13
- package/{gsd/get-shit-done → src/pilot}/templates/context.md +4 -4
- package/src/pilot/templates/copilot-instructions.md +7 -0
- package/{gsd/get-shit-done → src/pilot}/templates/debug-subagent-prompt.md +4 -4
- package/src/pilot/templates/dev-preferences.md +21 -0
- package/{gsd/get-shit-done → src/pilot}/templates/discovery.md +2 -2
- package/src/pilot/templates/discussion-log.md +63 -0
- package/{gsd/get-shit-done → src/pilot}/templates/phase-prompt.md +12 -12
- package/{gsd/get-shit-done → src/pilot}/templates/planner-subagent-prompt.md +7 -7
- package/{gsd/get-shit-done → src/pilot}/templates/project.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/templates/research.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/templates/state.md +2 -2
- package/{gsd/get-shit-done → src/pilot}/templates/summary-complex.md +1 -1
- package/{gsd/get-shit-done → src/pilot}/workflows/add-phase.md +11 -11
- package/{gsd/get-shit-done → src/pilot}/workflows/add-tests.md +15 -15
- package/{gsd/get-shit-done → src/pilot}/workflows/add-todo.md +7 -7
- package/{gsd/get-shit-done → src/pilot}/workflows/audit-milestone.md +24 -16
- package/src/pilot/workflows/audit-uat.md +109 -0
- package/src/pilot/workflows/autonomous.md +891 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/check-todos.md +10 -10
- package/{gsd/get-shit-done → src/pilot}/workflows/cleanup.md +3 -3
- package/{gsd/get-shit-done → src/pilot}/workflows/complete-milestone.md +19 -16
- package/{gsd/get-shit-done → src/pilot}/workflows/diagnose-issues.md +9 -4
- package/{gsd/get-shit-done → src/pilot}/workflows/discovery-phase.md +8 -8
- package/src/pilot/workflows/discuss-phase-assumptions.md +653 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/discuss-phase.md +407 -49
- package/src/pilot/workflows/do.md +104 -0
- package/src/pilot/workflows/docs-update.md +1165 -0
- package/src/pilot/workflows/execute-phase.md +821 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/execute-plan.md +79 -28
- package/src/pilot/workflows/fast.md +105 -0
- package/src/pilot/workflows/forensics.md +265 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/health.md +34 -11
- package/src/pilot/workflows/help.md +767 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/insert-phase.md +10 -10
- package/{gsd/get-shit-done → src/pilot}/workflows/list-phase-assumptions.md +4 -4
- package/src/pilot/workflows/manager.md +362 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/map-codebase.md +27 -17
- package/src/pilot/workflows/milestone-summary.md +223 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/new-milestone.md +135 -33
- package/{gsd/get-shit-done → src/pilot}/workflows/new-project.md +152 -79
- package/src/pilot/workflows/next.md +97 -0
- package/src/pilot/workflows/node-repair.md +92 -0
- package/src/pilot/workflows/note.md +156 -0
- package/src/pilot/workflows/pause-work.md +177 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/plan-milestone-gaps.md +10 -11
- package/src/pilot/workflows/plan-phase.md +859 -0
- package/src/pilot/workflows/plant-seed.md +169 -0
- package/src/pilot/workflows/pr-branch.md +129 -0
- package/src/pilot/workflows/profile-user.md +452 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/progress.md +95 -34
- package/{gsd/get-shit-done → src/pilot}/workflows/quick.md +33 -21
- package/{gsd/get-shit-done → src/pilot}/workflows/remove-phase.md +14 -14
- package/{gsd/get-shit-done → src/pilot}/workflows/research-phase.md +18 -10
- package/{gsd/get-shit-done → src/pilot}/workflows/resume-project.md +37 -18
- package/src/pilot/workflows/review.md +244 -0
- package/src/pilot/workflows/secure-phase.md +164 -0
- package/src/pilot/workflows/session-report.md +146 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/set-profile.md +7 -7
- package/{gsd/get-shit-done → src/pilot}/workflows/settings.md +75 -22
- package/src/pilot/workflows/ship.md +228 -0
- package/src/pilot/workflows/stats.md +60 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/transition.md +57 -17
- package/src/pilot/workflows/ui-phase.md +302 -0
- package/src/pilot/workflows/ui-review.md +165 -0
- package/{gsd/get-shit-done → src/pilot}/workflows/update.md +88 -58
- package/{gsd/get-shit-done → src/pilot}/workflows/validate-phase.md +24 -17
- package/{gsd/get-shit-done → src/pilot}/workflows/verify-phase.md +26 -15
- package/{gsd/get-shit-done → src/pilot}/workflows/verify-work.md +89 -37
- package/{ecc → src}/rules/common/agents.md +1 -0
- package/src/rules/common/code-review.md +124 -0
- package/{ecc → src}/rules/common/coding-style.md +21 -0
- package/src/rules/zh/README.md +108 -0
- package/src/rules/zh/agents.md +50 -0
- package/src/rules/zh/code-review.md +124 -0
- package/src/rules/zh/coding-style.md +48 -0
- package/src/rules/zh/development-workflow.md +44 -0
- package/src/rules/zh/git-workflow.md +24 -0
- package/src/rules/zh/hooks.md +30 -0
- package/src/rules/zh/patterns.md +31 -0
- package/src/rules/zh/performance.md +55 -0
- package/src/rules/zh/security.md +29 -0
- package/src/rules/zh/testing.md +29 -0
- package/src/skills/agentic-engineering/SKILL.md +63 -0
- package/src/skills/ai-first-engineering/SKILL.md +51 -0
- package/src/skills/ai-regression-testing/SKILL.md +385 -0
- package/src/skills/api-design/SKILL.md +523 -0
- package/src/skills/architecture-decision-records/SKILL.md +179 -0
- package/src/skills/autonomous-agent-harness/SKILL.md +267 -0
- package/src/skills/autonomous-loops/SKILL.md +610 -0
- package/src/skills/backend-patterns/SKILL.md +598 -0
- package/src/skills/benchmark/SKILL.md +87 -0
- package/src/skills/blueprint/SKILL.md +90 -0
- package/src/skills/browser-qa/SKILL.md +81 -0
- package/src/skills/bun-runtime/SKILL.md +84 -0
- package/src/skills/claude-api/SKILL.md +337 -0
- package/src/skills/codebase-onboarding/SKILL.md +233 -0
- package/src/skills/coding-standards/SKILL.md +530 -0
- package/src/skills/content-hash-cache-pattern/SKILL.md +161 -0
- package/src/skills/context-budget/SKILL.md +135 -0
- package/{ecc → src}/skills/continuous-learning-v2/SKILL.md +6 -6
- package/{ecc → src}/skills/continuous-learning-v2/agents/observer-loop.sh +1 -1
- package/{ecc → src}/skills/continuous-learning-v2/agents/observer.md +1 -1
- package/src/skills/cost-aware-llm-pipeline/SKILL.md +183 -0
- package/src/skills/cpp-coding-standards/SKILL.md +723 -0
- package/src/skills/cpp-testing/SKILL.md +324 -0
- package/src/skills/database-migrations/SKILL.md +429 -0
- package/src/skills/deep-research/SKILL.md +155 -0
- package/src/skills/deployment-patterns/SKILL.md +427 -0
- package/src/skills/design-system/SKILL.md +82 -0
- package/src/skills/django-patterns/SKILL.md +734 -0
- package/src/skills/django-security/SKILL.md +593 -0
- package/src/skills/django-tdd/SKILL.md +729 -0
- package/src/skills/django-verification/SKILL.md +469 -0
- package/src/skills/docker-patterns/SKILL.md +364 -0
- package/src/skills/documentation-lookup/SKILL.md +90 -0
- package/src/skills/e2e-testing/SKILL.md +326 -0
- package/src/skills/eval-harness/SKILL.md +270 -0
- package/src/skills/exa-search/SKILL.md +103 -0
- package/src/skills/flutter-dart-code-review/SKILL.md +435 -0
- package/src/skills/frontend-patterns/SKILL.md +642 -0
- package/src/skills/gan-style-harness/SKILL.md +278 -0
- package/src/skills/git-workflow/SKILL.md +715 -0
- package/src/skills/golang-patterns/SKILL.md +674 -0
- package/src/skills/golang-testing/SKILL.md +720 -0
- package/src/skills/hexagonal-architecture/SKILL.md +276 -0
- package/src/skills/iterative-retrieval/SKILL.md +211 -0
- package/src/skills/java-coding-standards/SKILL.md +147 -0
- package/src/skills/jpa-patterns/SKILL.md +151 -0
- package/src/skills/kotlin-coroutines-flows/SKILL.md +284 -0
- package/src/skills/kotlin-exposed-patterns/SKILL.md +719 -0
- package/src/skills/kotlin-ktor-patterns/SKILL.md +689 -0
- package/src/skills/kotlin-patterns/SKILL.md +711 -0
- package/src/skills/kotlin-testing/SKILL.md +824 -0
- package/src/skills/laravel-patterns/SKILL.md +415 -0
- package/src/skills/laravel-plugin-discovery/SKILL.md +229 -0
- package/src/skills/laravel-security/SKILL.md +285 -0
- package/src/skills/laravel-tdd/SKILL.md +283 -0
- package/src/skills/laravel-verification/SKILL.md +179 -0
- package/src/skills/mcp-server-patterns/SKILL.md +67 -0
- package/src/skills/nextjs-turbopack/SKILL.md +44 -0
- package/src/skills/nuxt4-patterns/SKILL.md +100 -0
- package/src/skills/opensource-pipeline/SKILL.md +255 -0
- package/src/skills/perl-patterns/SKILL.md +504 -0
- package/src/skills/perl-security/SKILL.md +503 -0
- package/src/skills/perl-testing/SKILL.md +475 -0
- package/src/skills/postgres-patterns/SKILL.md +147 -0
- package/src/skills/project-flow-ops/SKILL.md +111 -0
- package/src/skills/project-guidelines-example/SKILL.md +349 -0
- package/src/skills/prompt-optimizer/SKILL.md +397 -0
- package/src/skills/python-patterns/SKILL.md +750 -0
- package/src/skills/python-testing/SKILL.md +816 -0
- package/src/skills/pytorch-patterns/SKILL.md +396 -0
- package/src/skills/regex-vs-llm-structured-text/SKILL.md +220 -0
- package/src/skills/repo-scan/SKILL.md +78 -0
- package/src/skills/rules-distill/SKILL.md +264 -0
- package/src/skills/rules-distill/scripts/scan-rules.sh +58 -0
- package/src/skills/rules-distill/scripts/scan-skills.sh +129 -0
- package/src/skills/rust-patterns/SKILL.md +499 -0
- package/src/skills/rust-testing/SKILL.md +500 -0
- package/src/skills/safety-guard/SKILL.md +69 -0
- package/src/skills/search-first/SKILL.md +161 -0
- package/src/skills/security-review/SKILL.md +495 -0
- package/src/skills/security-review/cloud-infrastructure-security.md +361 -0
- package/src/skills/security-scan/SKILL.md +165 -0
- package/src/skills/springboot-patterns/SKILL.md +314 -0
- package/src/skills/springboot-security/SKILL.md +272 -0
- package/src/skills/springboot-tdd/SKILL.md +158 -0
- package/src/skills/springboot-verification/SKILL.md +231 -0
- package/src/skills/swift-concurrency-6-2/SKILL.md +216 -0
- package/src/skills/tdd-workflow/SKILL.md +410 -0
- package/src/skills/token-budget-advisor/SKILL.md +133 -0
- package/{ecc/skills/verification-loop-SKILL.md → src/skills/verification-loop/SKILL.md} +1 -1
- package/src/skills/workspace-surface-audit/SKILL.md +125 -0
- package/ecc/scripts/hooks/session-end-marker.js +0 -15
- package/gsd/LICENSE +0 -21
- package/gsd/commands-gsd/discuss-phase.md +0 -90
- package/gsd/commands-gsd/execute-phase.md +0 -41
- package/gsd/commands-gsd/join-discord.md +0 -18
- package/gsd/commands-gsd/reapply-patches.md +0 -123
- package/gsd/commands-gsd/set-profile.md +0 -34
- package/gsd/get-shit-done/bin/lib/config.cjs +0 -169
- package/gsd/get-shit-done/bin/lib/core.cjs +0 -492
- package/gsd/get-shit-done/bin/lib/init.cjs +0 -710
- package/gsd/get-shit-done/workflows/execute-phase.md +0 -459
- package/gsd/get-shit-done/workflows/help.md +0 -489
- package/gsd/get-shit-done/workflows/pause-work.md +0 -122
- package/gsd/get-shit-done/workflows/plan-phase.md +0 -560
- package/gsd/hooks/gsd-check-update.js +0 -81
- package/kit/CLAUDE.md +0 -43
- package/kit/commands/kit/update.md +0 -46
- package/kit/mcp.json +0 -10
- package/kit/rules/code-style.md +0 -24
- /package/{ecc → src}/agents/architect.md +0 -0
- /package/{ecc → src}/agents/code-reviewer.md +0 -0
- /package/{ecc → src}/agents/e2e-runner.md +0 -0
- /package/{ecc → src}/agents/security-reviewer.md +0 -0
- /package/{ecc → src}/agents/tdd-guide.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/golang/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/kotlin/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/perl/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/php/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/python/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/swift/testing.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/coding-style.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/hooks.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/patterns.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/security.md +0 -0
- /package/{ecc/rules → src/available-rules}/typescript/testing.md +0 -0
- /package/{ecc → src}/contexts/dev.md +0 -0
- /package/{ecc → src}/contexts/research.md +0 -0
- /package/{ecc → src}/contexts/review.md +0 -0
- /package/{ecc → src}/examples/user-CLAUDE.md +0 -0
- /package/{ecc/scripts → src}/hooks/check-hook-enabled.js +0 -0
- /package/{ecc/scripts → src}/hooks/evaluate-session.js +0 -0
- /package/{ecc/scripts → src}/hooks/pre-compact.js +0 -0
- /package/{ecc/scripts → src}/hooks/suggest-compact.js +0 -0
- /package/{ecc/scripts → src}/lib/package-manager.d.ts +0 -0
- /package/{ecc/scripts → src}/lib/package-manager.js +0 -0
- /package/{ecc/scripts → src}/lib/resolve-formatter.js +0 -0
- /package/{ecc/scripts → src}/lib/session-aliases.d.ts +0 -0
- /package/{ecc/scripts → src}/lib/session-aliases.js +0 -0
- /package/{ecc/scripts → src}/lib/shell-split.js +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/frontmatter.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/milestone.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/roadmap.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/bin/lib/template.cjs +0 -0
- /package/{gsd/get-shit-done → src/pilot}/references/checkpoints.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/references/questioning.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/references/tdd.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/concerns.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/conventions.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/integrations.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/stack.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/codebase/testing.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/config.json +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/continue-here.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/milestone-archive.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/milestone.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/requirements.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/ARCHITECTURE.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/FEATURES.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/PITFALLS.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/STACK.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/research-project/SUMMARY.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/retrospective.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/roadmap.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/summary-minimal.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/summary-standard.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/summary.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/user-setup.md +0 -0
- /package/{gsd/get-shit-done → src/pilot}/templates/verification-report.md +0 -0
- /package/{ecc → src}/rules/common/development-workflow.md +0 -0
- /package/{ecc → src}/rules/common/git-workflow.md +0 -0
- /package/{ecc → src}/rules/common/hooks.md +0 -0
- /package/{ecc → src}/rules/common/patterns.md +0 -0
- /package/{ecc → src}/rules/common/performance.md +0 -0
- /package/{ecc → src}/rules/common/security.md +0 -0
- /package/{ecc → src}/rules/common/testing.md +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/agents/start-observer.sh +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/config.json +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/hooks/observe.sh +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/scripts/detect-project.sh +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/scripts/instinct-cli.py +0 -0
- /package/{ecc → src}/skills/continuous-learning-v2/scripts/test_parse_instinct.py +0 -0
- /package/{ecc → src}/skills/strategic-compact/SKILL.md +0 -0
- /package/{ecc → src}/skills/strategic-compact/suggest-compact.sh +0 -0
|
@@ -0,0 +1,329 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:tdd
|
|
3
|
+
description: Enforce test-driven development workflow. Scaffold interfaces, generate tests FIRST, then implement minimal code to pass. Ensure 80%+ coverage.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# TDD Command
|
|
7
|
+
|
|
8
|
+
This command invokes the **tdd-guide** agent to enforce test-driven development methodology.
|
|
9
|
+
|
|
10
|
+
## What This Command Does
|
|
11
|
+
|
|
12
|
+
1. **Scaffold Interfaces** - Define types/interfaces first
|
|
13
|
+
2. **Generate Tests First** - Write failing tests (RED)
|
|
14
|
+
3. **Implement Minimal Code** - Write just enough to pass (GREEN)
|
|
15
|
+
4. **Refactor** - Improve code while keeping tests green (REFACTOR)
|
|
16
|
+
5. **Verify Coverage** - Ensure 80%+ test coverage
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
Use `/ccp:tdd` when:
|
|
21
|
+
- Implementing new features
|
|
22
|
+
- Adding new functions/components
|
|
23
|
+
- Fixing bugs (write test that reproduces bug first)
|
|
24
|
+
- Refactoring existing code
|
|
25
|
+
- Building critical business logic
|
|
26
|
+
|
|
27
|
+
## How It Works
|
|
28
|
+
|
|
29
|
+
The tdd-guide agent will:
|
|
30
|
+
|
|
31
|
+
1. **Define interfaces** for inputs/outputs
|
|
32
|
+
2. **Write tests that will FAIL** (because code doesn't exist yet)
|
|
33
|
+
3. **Run tests** and verify they fail for the right reason
|
|
34
|
+
4. **Write minimal implementation** to make tests pass
|
|
35
|
+
5. **Run tests** and verify they pass
|
|
36
|
+
6. **Refactor** code while keeping tests green
|
|
37
|
+
7. **Check coverage** and add more tests if below 80%
|
|
38
|
+
|
|
39
|
+
## TDD Cycle
|
|
40
|
+
|
|
41
|
+
```
|
|
42
|
+
RED → GREEN → REFACTOR → REPEAT
|
|
43
|
+
|
|
44
|
+
RED: Write a failing test
|
|
45
|
+
GREEN: Write minimal code to pass
|
|
46
|
+
REFACTOR: Improve code, keep tests passing
|
|
47
|
+
REPEAT: Next feature/scenario
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
## Example Usage
|
|
51
|
+
|
|
52
|
+
```
|
|
53
|
+
User: /ccp:tdd I need a function to calculate market liquidity score
|
|
54
|
+
|
|
55
|
+
Agent (tdd-guide):
|
|
56
|
+
# TDD Session: Market Liquidity Score Calculator
|
|
57
|
+
|
|
58
|
+
## Step 1: Define Interface (SCAFFOLD)
|
|
59
|
+
|
|
60
|
+
```typescript
|
|
61
|
+
// lib/liquidity.ts
|
|
62
|
+
export interface MarketData {
|
|
63
|
+
totalVolume: number
|
|
64
|
+
bidAskSpread: number
|
|
65
|
+
activeTraders: number
|
|
66
|
+
lastTradeTime: Date
|
|
67
|
+
}
|
|
68
|
+
|
|
69
|
+
export function calculateLiquidityScore(market: MarketData): number {
|
|
70
|
+
// TODO: Implementation
|
|
71
|
+
throw new Error('Not implemented')
|
|
72
|
+
}
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Step 2: Write Failing Test (RED)
|
|
76
|
+
|
|
77
|
+
```typescript
|
|
78
|
+
// lib/liquidity.test.ts
|
|
79
|
+
import { calculateLiquidityScore } from './liquidity'
|
|
80
|
+
|
|
81
|
+
describe('calculateLiquidityScore', () => {
|
|
82
|
+
it('should return high score for liquid market', () => {
|
|
83
|
+
const market = {
|
|
84
|
+
totalVolume: 100000,
|
|
85
|
+
bidAskSpread: 0.01,
|
|
86
|
+
activeTraders: 500,
|
|
87
|
+
lastTradeTime: new Date()
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
const score = calculateLiquidityScore(market)
|
|
91
|
+
|
|
92
|
+
expect(score).toBeGreaterThan(80)
|
|
93
|
+
expect(score).toBeLessThanOrEqual(100)
|
|
94
|
+
})
|
|
95
|
+
|
|
96
|
+
it('should return low score for illiquid market', () => {
|
|
97
|
+
const market = {
|
|
98
|
+
totalVolume: 100,
|
|
99
|
+
bidAskSpread: 0.5,
|
|
100
|
+
activeTraders: 2,
|
|
101
|
+
lastTradeTime: new Date(Date.now() - 86400000) // 1 day ago
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
const score = calculateLiquidityScore(market)
|
|
105
|
+
|
|
106
|
+
expect(score).toBeLessThan(30)
|
|
107
|
+
expect(score).toBeGreaterThanOrEqual(0)
|
|
108
|
+
})
|
|
109
|
+
|
|
110
|
+
it('should handle edge case: zero volume', () => {
|
|
111
|
+
const market = {
|
|
112
|
+
totalVolume: 0,
|
|
113
|
+
bidAskSpread: 0,
|
|
114
|
+
activeTraders: 0,
|
|
115
|
+
lastTradeTime: new Date()
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
const score = calculateLiquidityScore(market)
|
|
119
|
+
|
|
120
|
+
expect(score).toBe(0)
|
|
121
|
+
})
|
|
122
|
+
})
|
|
123
|
+
```
|
|
124
|
+
|
|
125
|
+
## Step 3: Run Tests - Verify FAIL
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
npm test lib/liquidity.test.ts
|
|
129
|
+
|
|
130
|
+
FAIL lib/liquidity.test.ts
|
|
131
|
+
✕ should return high score for liquid market (2 ms)
|
|
132
|
+
Error: Not implemented
|
|
133
|
+
|
|
134
|
+
1 test failed, 0 passed
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
✅ Tests fail as expected. Ready to implement.
|
|
138
|
+
|
|
139
|
+
## Step 4: Implement Minimal Code (GREEN)
|
|
140
|
+
|
|
141
|
+
```typescript
|
|
142
|
+
// lib/liquidity.ts
|
|
143
|
+
export function calculateLiquidityScore(market: MarketData): number {
|
|
144
|
+
// Handle zero volume edge case
|
|
145
|
+
if (market.totalVolume === 0) {
|
|
146
|
+
return 0
|
|
147
|
+
}
|
|
148
|
+
|
|
149
|
+
// Calculate component scores (0-100 scale)
|
|
150
|
+
const volumeScore = Math.min(market.totalVolume / 1000, 100)
|
|
151
|
+
const spreadScore = Math.max(100 - (market.bidAskSpread * 1000), 0)
|
|
152
|
+
const traderScore = Math.min(market.activeTraders / 10, 100)
|
|
153
|
+
|
|
154
|
+
// Recent activity bonus
|
|
155
|
+
const hoursSinceLastTrade = (Date.now() - market.lastTradeTime.getTime()) / (1000 * 60 * 60)
|
|
156
|
+
const recencyScore = Math.max(100 - (hoursSinceLastTrade * 10), 0)
|
|
157
|
+
|
|
158
|
+
// Weighted average
|
|
159
|
+
const score = (
|
|
160
|
+
volumeScore * 0.4 +
|
|
161
|
+
spreadScore * 0.3 +
|
|
162
|
+
traderScore * 0.2 +
|
|
163
|
+
recencyScore * 0.1
|
|
164
|
+
)
|
|
165
|
+
|
|
166
|
+
return Math.min(Math.max(score, 0), 100) // Clamp to 0-100
|
|
167
|
+
}
|
|
168
|
+
```
|
|
169
|
+
|
|
170
|
+
## Step 5: Run Tests - Verify PASS
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
npm test lib/liquidity.test.ts
|
|
174
|
+
|
|
175
|
+
PASS lib/liquidity.test.ts
|
|
176
|
+
✓ should return high score for liquid market (3 ms)
|
|
177
|
+
✓ should return low score for illiquid market (2 ms)
|
|
178
|
+
✓ should handle edge case: zero volume (1 ms)
|
|
179
|
+
|
|
180
|
+
3 tests passed
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
✅ All tests passing!
|
|
184
|
+
|
|
185
|
+
## Step 6: Refactor (IMPROVE)
|
|
186
|
+
|
|
187
|
+
```typescript
|
|
188
|
+
// lib/liquidity.ts - Refactored with constants and better readability
|
|
189
|
+
const WEIGHTS = {
|
|
190
|
+
VOLUME: 0.4,
|
|
191
|
+
SPREAD: 0.3,
|
|
192
|
+
TRADERS: 0.2,
|
|
193
|
+
RECENCY: 0.1,
|
|
194
|
+
} as const
|
|
195
|
+
|
|
196
|
+
const SCALE_FACTORS = {
|
|
197
|
+
VOLUME: 1000,
|
|
198
|
+
SPREAD: 1000,
|
|
199
|
+
TRADERS: 10,
|
|
200
|
+
RECENCY_PENALTY: 10,
|
|
201
|
+
} as const
|
|
202
|
+
|
|
203
|
+
function clamp(value: number, min: number, max: number): number {
|
|
204
|
+
return Math.min(Math.max(value, min), max)
|
|
205
|
+
}
|
|
206
|
+
|
|
207
|
+
export function calculateLiquidityScore(market: MarketData): number {
|
|
208
|
+
if (market.totalVolume === 0) return 0
|
|
209
|
+
|
|
210
|
+
const volumeScore = Math.min(market.totalVolume / SCALE_FACTORS.VOLUME, 100)
|
|
211
|
+
const spreadScore = clamp(100 - (market.bidAskSpread * SCALE_FACTORS.SPREAD), 0, 100)
|
|
212
|
+
const traderScore = Math.min(market.activeTraders / SCALE_FACTORS.TRADERS, 100)
|
|
213
|
+
|
|
214
|
+
const hoursSinceLastTrade = (Date.now() - market.lastTradeTime.getTime()) / (1000 * 60 * 60)
|
|
215
|
+
const recencyScore = clamp(100 - (hoursSinceLastTrade * SCALE_FACTORS.RECENCY_PENALTY), 0, 100)
|
|
216
|
+
|
|
217
|
+
const weightedScore =
|
|
218
|
+
volumeScore * WEIGHTS.VOLUME +
|
|
219
|
+
spreadScore * WEIGHTS.SPREAD +
|
|
220
|
+
traderScore * WEIGHTS.TRADERS +
|
|
221
|
+
recencyScore * WEIGHTS.RECENCY
|
|
222
|
+
|
|
223
|
+
return clamp(weightedScore, 0, 100)
|
|
224
|
+
}
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
## Step 7: Verify Tests Still Pass
|
|
228
|
+
|
|
229
|
+
```bash
|
|
230
|
+
npm test lib/liquidity.test.ts
|
|
231
|
+
|
|
232
|
+
PASS lib/liquidity.test.ts
|
|
233
|
+
✓ should return high score for liquid market (3 ms)
|
|
234
|
+
✓ should return low score for illiquid market (2 ms)
|
|
235
|
+
✓ should handle edge case: zero volume (1 ms)
|
|
236
|
+
|
|
237
|
+
3 tests passed
|
|
238
|
+
```
|
|
239
|
+
|
|
240
|
+
✅ Refactoring complete, tests still passing!
|
|
241
|
+
|
|
242
|
+
## Step 8: Check Coverage
|
|
243
|
+
|
|
244
|
+
```bash
|
|
245
|
+
npm test -- --coverage lib/liquidity.test.ts
|
|
246
|
+
|
|
247
|
+
File | % Stmts | % Branch | % Funcs | % Lines
|
|
248
|
+
---------------|---------|----------|---------|--------
|
|
249
|
+
liquidity.ts | 100 | 100 | 100 | 100
|
|
250
|
+
|
|
251
|
+
Coverage: 100% ✅ (Target: 80%)
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
✅ TDD session complete!
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## TDD Best Practices
|
|
258
|
+
|
|
259
|
+
**DO:**
|
|
260
|
+
- ✅ Write the test FIRST, before any implementation
|
|
261
|
+
- ✅ Run tests and verify they FAIL before implementing
|
|
262
|
+
- ✅ Write minimal code to make tests pass
|
|
263
|
+
- ✅ Refactor only after tests are green
|
|
264
|
+
- ✅ Add edge cases and error scenarios
|
|
265
|
+
- ✅ Aim for 80%+ coverage (100% for critical code)
|
|
266
|
+
|
|
267
|
+
**DON'T:**
|
|
268
|
+
- ❌ Write implementation before tests
|
|
269
|
+
- ❌ Skip running tests after each change
|
|
270
|
+
- ❌ Write too much code at once
|
|
271
|
+
- ❌ Ignore failing tests
|
|
272
|
+
- ❌ Test implementation details (test behavior)
|
|
273
|
+
- ❌ Mock everything (prefer integration tests)
|
|
274
|
+
|
|
275
|
+
## Test Types to Include
|
|
276
|
+
|
|
277
|
+
**Unit Tests** (Function-level):
|
|
278
|
+
- Happy path scenarios
|
|
279
|
+
- Edge cases (empty, null, max values)
|
|
280
|
+
- Error conditions
|
|
281
|
+
- Boundary values
|
|
282
|
+
|
|
283
|
+
**Integration Tests** (Component-level):
|
|
284
|
+
- API endpoints
|
|
285
|
+
- Database operations
|
|
286
|
+
- External service calls
|
|
287
|
+
- React components with hooks
|
|
288
|
+
|
|
289
|
+
**E2E Tests** (use `/ccp:e2e` command):
|
|
290
|
+
- Critical user flows
|
|
291
|
+
- Multi-step processes
|
|
292
|
+
- Full stack integration
|
|
293
|
+
|
|
294
|
+
## Coverage Requirements
|
|
295
|
+
|
|
296
|
+
- **80% minimum** for all code
|
|
297
|
+
- **100% required** for:
|
|
298
|
+
- Financial calculations
|
|
299
|
+
- Authentication logic
|
|
300
|
+
- Security-critical code
|
|
301
|
+
- Core business logic
|
|
302
|
+
|
|
303
|
+
## Important Notes
|
|
304
|
+
|
|
305
|
+
**MANDATORY**: Tests must be written BEFORE implementation. The TDD cycle is:
|
|
306
|
+
|
|
307
|
+
1. **RED** - Write failing test
|
|
308
|
+
2. **GREEN** - Implement to pass
|
|
309
|
+
3. **REFACTOR** - Improve code
|
|
310
|
+
|
|
311
|
+
Never skip the RED phase. Never write code before tests.
|
|
312
|
+
|
|
313
|
+
## Integration with Other Commands
|
|
314
|
+
|
|
315
|
+
- Use `/ccp:plan` first to understand what to build
|
|
316
|
+
- Use `/ccp:tdd` to implement with tests
|
|
317
|
+
- Use `/ccp:build-fix` if build errors occur
|
|
318
|
+
- Use `/ccp:code-review` to review implementation
|
|
319
|
+
- Use `/ccp:test-coverage` to verify coverage
|
|
320
|
+
|
|
321
|
+
## Related Agents
|
|
322
|
+
|
|
323
|
+
This command invokes the `tdd-guide` agent.
|
|
324
|
+
|
|
325
|
+
The related `tdd-workflow` skill is also bundled.
|
|
326
|
+
|
|
327
|
+
Source files:
|
|
328
|
+
- `~/.claude/agents/tdd-guide.md`
|
|
329
|
+
- `~/.claude/skills/tdd-workflow/SKILL.md`
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:test-coverage
|
|
3
|
+
description: "Analyze test coverage, identify gaps, and generate missing tests for 80%+ coverage"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Test Coverage
|
|
7
|
+
|
|
8
|
+
Analyze test coverage, identify gaps, and generate missing tests to reach 80%+ coverage.
|
|
9
|
+
|
|
10
|
+
## Step 1: Detect Test Framework
|
|
11
|
+
|
|
12
|
+
| Indicator | Coverage Command |
|
|
13
|
+
|-----------|-----------------|
|
|
14
|
+
| `jest.config.*` or `package.json` jest | `npx jest --coverage --coverageReporters=json-summary` |
|
|
15
|
+
| `vitest.config.*` | `npx vitest run --coverage` |
|
|
16
|
+
| `pytest.ini` / `pyproject.toml` pytest | `pytest --cov=src --cov-report=json` |
|
|
17
|
+
| `Cargo.toml` | `cargo llvm-cov --json` |
|
|
18
|
+
| `pom.xml` with JaCoCo | `mvn test jacoco:report` |
|
|
19
|
+
| `go.mod` | `go test -coverprofile=coverage.out ./...` |
|
|
20
|
+
|
|
21
|
+
## Step 2: Analyze Coverage Report
|
|
22
|
+
|
|
23
|
+
1. Run the coverage command
|
|
24
|
+
2. Parse the output (JSON summary or terminal output)
|
|
25
|
+
3. List files **below 80% coverage**, sorted worst-first
|
|
26
|
+
4. For each under-covered file, identify:
|
|
27
|
+
- Untested functions or methods
|
|
28
|
+
- Missing branch coverage (if/else, switch, error paths)
|
|
29
|
+
- Dead code that inflates the denominator
|
|
30
|
+
|
|
31
|
+
## Step 3: Generate Missing Tests
|
|
32
|
+
|
|
33
|
+
For each under-covered file, generate tests following this priority:
|
|
34
|
+
|
|
35
|
+
1. **Happy path** — Core functionality with valid inputs
|
|
36
|
+
2. **Error handling** — Invalid inputs, missing data, network failures
|
|
37
|
+
3. **Edge cases** — Empty arrays, null/undefined, boundary values (0, -1, MAX_INT)
|
|
38
|
+
4. **Branch coverage** — Each if/else, switch case, ternary
|
|
39
|
+
|
|
40
|
+
### Test Generation Rules
|
|
41
|
+
|
|
42
|
+
- Place tests adjacent to source: `foo.ts` → `foo.test.ts` (or project convention)
|
|
43
|
+
- Use existing test patterns from the project (import style, assertion library, mocking approach)
|
|
44
|
+
- Mock external dependencies (database, APIs, file system)
|
|
45
|
+
- Each test should be independent — no shared mutable state between tests
|
|
46
|
+
- Name tests descriptively: `test_create_user_with_duplicate_email_returns_409`
|
|
47
|
+
|
|
48
|
+
## Step 4: Verify
|
|
49
|
+
|
|
50
|
+
1. Run the full test suite — all tests must pass
|
|
51
|
+
2. Re-run coverage — verify improvement
|
|
52
|
+
3. If still below 80%, repeat Step 3 for remaining gaps
|
|
53
|
+
|
|
54
|
+
## Step 5: Report
|
|
55
|
+
|
|
56
|
+
Show before/after comparison:
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
Coverage Report
|
|
60
|
+
──────────────────────────────
|
|
61
|
+
File Before After
|
|
62
|
+
src/services/auth.ts 45% 88%
|
|
63
|
+
src/utils/validation.ts 32% 82%
|
|
64
|
+
──────────────────────────────
|
|
65
|
+
Overall: 67% 84% ✅
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
## Focus Areas
|
|
69
|
+
|
|
70
|
+
- Functions with complex branching (high cyclomatic complexity)
|
|
71
|
+
- Error handlers and catch blocks
|
|
72
|
+
- Utility functions used across the codebase
|
|
73
|
+
- API endpoint handlers (request → response flow)
|
|
74
|
+
- Edge cases: null, undefined, empty string, empty array, zero, negative numbers
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:thread
|
|
3
|
+
description: Manage persistent context threads for cross-session work
|
|
4
|
+
argument-hint: [name | description]
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
<objective>
|
|
12
|
+
Create, list, or resume persistent context threads. Threads are lightweight
|
|
13
|
+
cross-session knowledge stores for work that spans multiple sessions but
|
|
14
|
+
doesn't belong to any specific phase.
|
|
15
|
+
</objective>
|
|
16
|
+
|
|
17
|
+
<process>
|
|
18
|
+
|
|
19
|
+
**Parse $ARGUMENTS to determine mode:**
|
|
20
|
+
|
|
21
|
+
<mode_list>
|
|
22
|
+
**If no arguments or $ARGUMENTS is empty:**
|
|
23
|
+
|
|
24
|
+
List all threads:
|
|
25
|
+
```bash
|
|
26
|
+
ls .planning/threads/*.md 2>/dev/null
|
|
27
|
+
```
|
|
28
|
+
|
|
29
|
+
For each thread, read the first few lines to show title and status:
|
|
30
|
+
```
|
|
31
|
+
## Active Threads
|
|
32
|
+
|
|
33
|
+
| Thread | Status | Last Updated |
|
|
34
|
+
|--------|--------|-------------|
|
|
35
|
+
| fix-deploy-key-auth | OPEN | 2026-03-15 |
|
|
36
|
+
| pasta-tcp-timeout | RESOLVED | 2026-03-12 |
|
|
37
|
+
| perf-investigation | IN PROGRESS | 2026-03-17 |
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
If no threads exist, show:
|
|
41
|
+
```
|
|
42
|
+
No threads found. Create one with: /ccp:thread <description>
|
|
43
|
+
```
|
|
44
|
+
</mode_list>
|
|
45
|
+
|
|
46
|
+
<mode_resume>
|
|
47
|
+
**If $ARGUMENTS matches an existing thread name (file exists):**
|
|
48
|
+
|
|
49
|
+
Resume the thread — load its context into the current session:
|
|
50
|
+
```bash
|
|
51
|
+
cat ".planning/threads/${THREAD_NAME}.md"
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Display the thread content and ask what the user wants to work on next.
|
|
55
|
+
Update the thread's status to `IN PROGRESS` if it was `OPEN`.
|
|
56
|
+
</mode_resume>
|
|
57
|
+
|
|
58
|
+
<mode_create>
|
|
59
|
+
**If $ARGUMENTS is a new description (no matching thread file):**
|
|
60
|
+
|
|
61
|
+
Create a new thread:
|
|
62
|
+
|
|
63
|
+
1. Generate slug from description:
|
|
64
|
+
```bash
|
|
65
|
+
SLUG=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" generate-slug "$ARGUMENTS")
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
2. Create the threads directory if needed:
|
|
69
|
+
```bash
|
|
70
|
+
mkdir -p .planning/threads
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
3. Write the thread file:
|
|
74
|
+
```bash
|
|
75
|
+
cat > ".planning/threads/${SLUG}.md" << 'EOF'
|
|
76
|
+
# Thread: {description}
|
|
77
|
+
|
|
78
|
+
## Status: OPEN
|
|
79
|
+
|
|
80
|
+
## Goal
|
|
81
|
+
|
|
82
|
+
{description}
|
|
83
|
+
|
|
84
|
+
## Context
|
|
85
|
+
|
|
86
|
+
*Created from conversation on {today's date}.*
|
|
87
|
+
|
|
88
|
+
## References
|
|
89
|
+
|
|
90
|
+
- *(add links, file paths, or issue numbers)*
|
|
91
|
+
|
|
92
|
+
## Next Steps
|
|
93
|
+
|
|
94
|
+
- *(what the next session should do first)*
|
|
95
|
+
EOF
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
4. If there's relevant context in the current conversation (code snippets,
|
|
99
|
+
error messages, investigation results), extract and add it to the Context
|
|
100
|
+
section.
|
|
101
|
+
|
|
102
|
+
5. Commit:
|
|
103
|
+
```bash
|
|
104
|
+
node "$HOME/.claude/pilot/bin/ccp-tools.cjs" commit "docs: create thread — ${ARGUMENTS}" --files ".planning/threads/${SLUG}.md"
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
6. Report:
|
|
108
|
+
```
|
|
109
|
+
## 🧵 Thread Created
|
|
110
|
+
|
|
111
|
+
Thread: {slug}
|
|
112
|
+
File: .planning/threads/{slug}.md
|
|
113
|
+
|
|
114
|
+
Resume anytime with: /ccp:thread {slug}
|
|
115
|
+
```
|
|
116
|
+
</mode_create>
|
|
117
|
+
|
|
118
|
+
</process>
|
|
119
|
+
|
|
120
|
+
<notes>
|
|
121
|
+
- Threads are NOT phase-scoped — they exist independently of the roadmap
|
|
122
|
+
- Lighter weight than /ccp:pause-work — no phase state, no plan context
|
|
123
|
+
- The value is in Context and Next Steps — a cold-start session can pick up immediately
|
|
124
|
+
- Threads can be promoted to phases or backlog items when they mature:
|
|
125
|
+
/ccp:add-phase or /ccp:add-backlog with context from the thread
|
|
126
|
+
- Thread files live in .planning/threads/ — no collision with phases or other CCP structures
|
|
127
|
+
</notes>
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: ccp:tool-guide
|
|
2
3
|
description: "MCP tool recommendations per task type -- which tools to use when"
|
|
3
4
|
---
|
|
4
5
|
|
|
@@ -32,7 +33,7 @@ The kit configures or recommends these MCP tools:
|
|
|
32
33
|
## Usage Tips
|
|
33
34
|
|
|
34
35
|
- If a tool is not installed, Claude will skip it automatically -- no errors.
|
|
35
|
-
- Use `/setup` to auto-detect and configure available MCP tools.
|
|
36
|
+
- Use `/ccp:setup` to auto-detect and configure available MCP tools.
|
|
36
37
|
- Context7 is the highest-value tool -- it prevents the #1 cause of agent errors (outdated API usage).
|
|
37
38
|
- codebase-memory-mcp and cocoindex-code serve similar purposes -- you don't need both.
|
|
38
39
|
- For large codebases (100+ files), codebase-memory-mcp significantly reduces context waste from file exploration.
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:ui-phase
|
|
3
|
+
description: Generate UI design contract (UI-SPEC.md) for frontend phases
|
|
4
|
+
argument-hint: "[phase]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Task
|
|
12
|
+
- WebFetch
|
|
13
|
+
- AskUserQuestion
|
|
14
|
+
- mcp__context7__*
|
|
15
|
+
---
|
|
16
|
+
<objective>
|
|
17
|
+
Create a UI design contract (UI-SPEC.md) for a frontend phase.
|
|
18
|
+
Orchestrates ccp-ui-researcher and ccp-ui-checker.
|
|
19
|
+
Flow: Validate → Research UI → Verify UI-SPEC → Done
|
|
20
|
+
</objective>
|
|
21
|
+
|
|
22
|
+
<execution_context>
|
|
23
|
+
@~/.claude/pilot/workflows/ui-phase.md
|
|
24
|
+
@~/.claude/pilot/references/ui-brand.md
|
|
25
|
+
</execution_context>
|
|
26
|
+
|
|
27
|
+
<context>
|
|
28
|
+
Phase number: $ARGUMENTS — optional, auto-detects next unplanned phase if omitted.
|
|
29
|
+
</context>
|
|
30
|
+
|
|
31
|
+
<process>
|
|
32
|
+
Execute @~/.claude/pilot/workflows/ui-phase.md end-to-end.
|
|
33
|
+
Preserve all workflow gates.
|
|
34
|
+
</process>
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:ui-review
|
|
3
|
+
description: Retroactive 6-pillar visual audit of implemented frontend code
|
|
4
|
+
argument-hint: "[phase]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Bash
|
|
9
|
+
- Glob
|
|
10
|
+
- Grep
|
|
11
|
+
- Task
|
|
12
|
+
- AskUserQuestion
|
|
13
|
+
---
|
|
14
|
+
<objective>
|
|
15
|
+
Conduct a retroactive 6-pillar visual audit. Produces UI-REVIEW.md with
|
|
16
|
+
graded assessment (1-4 per pillar). Works on any project.
|
|
17
|
+
Output: {phase_num}-UI-REVIEW.md
|
|
18
|
+
</objective>
|
|
19
|
+
|
|
20
|
+
<execution_context>
|
|
21
|
+
@~/.claude/pilot/workflows/ui-review.md
|
|
22
|
+
@~/.claude/pilot/references/ui-brand.md
|
|
23
|
+
</execution_context>
|
|
24
|
+
|
|
25
|
+
<context>
|
|
26
|
+
Phase: $ARGUMENTS — optional, defaults to last completed phase.
|
|
27
|
+
</context>
|
|
28
|
+
|
|
29
|
+
<process>
|
|
30
|
+
Execute @~/.claude/pilot/workflows/ui-review.md end-to-end.
|
|
31
|
+
Preserve all workflow gates.
|
|
32
|
+
</process>
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:update-codemaps
|
|
3
|
+
description: "Analyze codebase structure and generate token-lean architecture documentation"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Update Codemaps
|
|
7
|
+
|
|
8
|
+
Analyze the codebase structure and generate token-lean architecture documentation.
|
|
9
|
+
|
|
10
|
+
## Step 1: Scan Project Structure
|
|
11
|
+
|
|
12
|
+
1. Identify the project type (monorepo, single app, library, microservice)
|
|
13
|
+
2. Find all source directories (src/, lib/, app/, packages/)
|
|
14
|
+
3. Map entry points (main.ts, index.ts, app.py, main.go, etc.)
|
|
15
|
+
|
|
16
|
+
## Step 2: Generate Codemaps
|
|
17
|
+
|
|
18
|
+
Create or update codemaps in `docs/CODEMAPS/` (or `.reports/codemaps/`):
|
|
19
|
+
|
|
20
|
+
| File | Contents |
|
|
21
|
+
|------|----------|
|
|
22
|
+
| `architecture.md` | High-level system diagram, service boundaries, data flow |
|
|
23
|
+
| `backend.md` | API routes, middleware chain, service → repository mapping |
|
|
24
|
+
| `frontend.md` | Page tree, component hierarchy, state management flow |
|
|
25
|
+
| `data.md` | Database tables, relationships, migration history |
|
|
26
|
+
| `dependencies.md` | External services, third-party integrations, shared libraries |
|
|
27
|
+
|
|
28
|
+
### Codemap Format
|
|
29
|
+
|
|
30
|
+
Each codemap should be token-lean — optimized for AI context consumption:
|
|
31
|
+
|
|
32
|
+
```markdown
|
|
33
|
+
# Backend Architecture
|
|
34
|
+
|
|
35
|
+
## Routes
|
|
36
|
+
POST /api/users → UserController.create → UserService.create → UserRepo.insert
|
|
37
|
+
GET /api/users/:id → UserController.get → UserService.findById → UserRepo.findById
|
|
38
|
+
|
|
39
|
+
## Key Files
|
|
40
|
+
src/services/user.ts (business logic, 120 lines)
|
|
41
|
+
src/repos/user.ts (database access, 80 lines)
|
|
42
|
+
|
|
43
|
+
## Dependencies
|
|
44
|
+
- PostgreSQL (primary data store)
|
|
45
|
+
- Redis (session cache, rate limiting)
|
|
46
|
+
- Stripe (payment processing)
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Step 3: Diff Detection
|
|
50
|
+
|
|
51
|
+
1. If previous codemaps exist, calculate the diff percentage
|
|
52
|
+
2. If changes > 30%, show the diff and request user approval before overwriting
|
|
53
|
+
3. If changes <= 30%, update in place
|
|
54
|
+
|
|
55
|
+
## Step 4: Add Metadata
|
|
56
|
+
|
|
57
|
+
Add a freshness header to each codemap:
|
|
58
|
+
|
|
59
|
+
```markdown
|
|
60
|
+
<!-- Generated: 2026-02-11 | Files scanned: 142 | Token estimate: ~800 -->
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
## Step 5: Save Analysis Report
|
|
64
|
+
|
|
65
|
+
Write a summary to `.reports/codemap-diff.txt`:
|
|
66
|
+
- Files added/removed/modified since last scan
|
|
67
|
+
- New dependencies detected
|
|
68
|
+
- Architecture changes (new routes, new services, etc.)
|
|
69
|
+
- Staleness warnings for docs not updated in 90+ days
|
|
70
|
+
|
|
71
|
+
## Tips
|
|
72
|
+
|
|
73
|
+
- Focus on **high-level structure**, not implementation details
|
|
74
|
+
- Prefer **file paths and function signatures** over full code blocks
|
|
75
|
+
- Keep each codemap under **1000 tokens** for efficient context loading
|
|
76
|
+
- Use ASCII diagrams for data flow instead of verbose descriptions
|
|
77
|
+
- Run after major feature additions or refactoring sessions
|