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,298 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:python-review
|
|
3
|
+
description: Comprehensive Python code review for PEP 8 compliance, type hints, security, and Pythonic idioms. Invokes the python-reviewer agent.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Python Code Review
|
|
7
|
+
|
|
8
|
+
This command invokes the **python-reviewer** agent for comprehensive Python-specific code review.
|
|
9
|
+
|
|
10
|
+
## What This Command Does
|
|
11
|
+
|
|
12
|
+
1. **Identify Python Changes**: Find modified `.py` files via `git diff`
|
|
13
|
+
2. **Run Static Analysis**: Execute `ruff`, `mypy`, `pylint`, `black --check`
|
|
14
|
+
3. **Security Scan**: Check for SQL injection, command injection, unsafe deserialization
|
|
15
|
+
4. **Type Safety Review**: Analyze type hints and mypy errors
|
|
16
|
+
5. **Pythonic Code Check**: Verify code follows PEP 8 and Python best practices
|
|
17
|
+
6. **Generate Report**: Categorize issues by severity
|
|
18
|
+
|
|
19
|
+
## When to Use
|
|
20
|
+
|
|
21
|
+
Use `/ccp:python-review` when:
|
|
22
|
+
- After writing or modifying Python code
|
|
23
|
+
- Before committing Python changes
|
|
24
|
+
- Reviewing pull requests with Python code
|
|
25
|
+
- Onboarding to a new Python codebase
|
|
26
|
+
- Learning Pythonic patterns and idioms
|
|
27
|
+
|
|
28
|
+
## Review Categories
|
|
29
|
+
|
|
30
|
+
### CRITICAL (Must Fix)
|
|
31
|
+
- SQL/Command injection vulnerabilities
|
|
32
|
+
- Unsafe eval/exec usage
|
|
33
|
+
- Pickle unsafe deserialization
|
|
34
|
+
- Hardcoded credentials
|
|
35
|
+
- YAML unsafe load
|
|
36
|
+
- Bare except clauses hiding errors
|
|
37
|
+
|
|
38
|
+
### HIGH (Should Fix)
|
|
39
|
+
- Missing type hints on public functions
|
|
40
|
+
- Mutable default arguments
|
|
41
|
+
- Swallowing exceptions silently
|
|
42
|
+
- Not using context managers for resources
|
|
43
|
+
- C-style looping instead of comprehensions
|
|
44
|
+
- Using type() instead of isinstance()
|
|
45
|
+
- Race conditions without locks
|
|
46
|
+
|
|
47
|
+
### MEDIUM (Consider)
|
|
48
|
+
- PEP 8 formatting violations
|
|
49
|
+
- Missing docstrings on public functions
|
|
50
|
+
- Print statements instead of logging
|
|
51
|
+
- Inefficient string operations
|
|
52
|
+
- Magic numbers without named constants
|
|
53
|
+
- Not using f-strings for formatting
|
|
54
|
+
- Unnecessary list creation
|
|
55
|
+
|
|
56
|
+
## Automated Checks Run
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
# Type checking
|
|
60
|
+
mypy .
|
|
61
|
+
|
|
62
|
+
# Linting and formatting
|
|
63
|
+
ruff check .
|
|
64
|
+
black --check .
|
|
65
|
+
isort --check-only .
|
|
66
|
+
|
|
67
|
+
# Security scanning
|
|
68
|
+
bandit -r .
|
|
69
|
+
|
|
70
|
+
# Dependency audit
|
|
71
|
+
pip-audit
|
|
72
|
+
safety check
|
|
73
|
+
|
|
74
|
+
# Testing
|
|
75
|
+
pytest --cov=app --cov-report=term-missing
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
## Example Usage
|
|
79
|
+
|
|
80
|
+
```text
|
|
81
|
+
User: /ccp:python-review
|
|
82
|
+
|
|
83
|
+
Agent:
|
|
84
|
+
# Python Code Review Report
|
|
85
|
+
|
|
86
|
+
## Files Reviewed
|
|
87
|
+
- app/routes/user.py (modified)
|
|
88
|
+
- app/services/auth.py (modified)
|
|
89
|
+
|
|
90
|
+
## Static Analysis Results
|
|
91
|
+
✓ ruff: No issues
|
|
92
|
+
✓ mypy: No errors
|
|
93
|
+
⚠️ black: 2 files need reformatting
|
|
94
|
+
✓ bandit: No security issues
|
|
95
|
+
|
|
96
|
+
## Issues Found
|
|
97
|
+
|
|
98
|
+
[CRITICAL] SQL Injection vulnerability
|
|
99
|
+
File: app/routes/user.py:42
|
|
100
|
+
Issue: User input directly interpolated into SQL query
|
|
101
|
+
```python
|
|
102
|
+
query = f"SELECT * FROM users WHERE id = {user_id}" # Bad
|
|
103
|
+
```
|
|
104
|
+
Fix: Use parameterized query
|
|
105
|
+
```python
|
|
106
|
+
query = "SELECT * FROM users WHERE id = %s" # Good
|
|
107
|
+
cursor.execute(query, (user_id,))
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
[HIGH] Mutable default argument
|
|
111
|
+
File: app/services/auth.py:18
|
|
112
|
+
Issue: Mutable default argument causes shared state
|
|
113
|
+
```python
|
|
114
|
+
def process_items(items=[]): # Bad
|
|
115
|
+
items.append("new")
|
|
116
|
+
return items
|
|
117
|
+
```
|
|
118
|
+
Fix: Use None as default
|
|
119
|
+
```python
|
|
120
|
+
def process_items(items=None): # Good
|
|
121
|
+
if items is None:
|
|
122
|
+
items = []
|
|
123
|
+
items.append("new")
|
|
124
|
+
return items
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
[MEDIUM] Missing type hints
|
|
128
|
+
File: app/services/auth.py:25
|
|
129
|
+
Issue: Public function without type annotations
|
|
130
|
+
```python
|
|
131
|
+
def get_user(user_id): # Bad
|
|
132
|
+
return db.find(user_id)
|
|
133
|
+
```
|
|
134
|
+
Fix: Add type hints
|
|
135
|
+
```python
|
|
136
|
+
def get_user(user_id: str) -> Optional[User]: # Good
|
|
137
|
+
return db.find(user_id)
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
[MEDIUM] Not using context manager
|
|
141
|
+
File: app/routes/user.py:55
|
|
142
|
+
Issue: File not closed on exception
|
|
143
|
+
```python
|
|
144
|
+
f = open("config.json") # Bad
|
|
145
|
+
data = f.read()
|
|
146
|
+
f.close()
|
|
147
|
+
```
|
|
148
|
+
Fix: Use context manager
|
|
149
|
+
```python
|
|
150
|
+
with open("config.json") as f: # Good
|
|
151
|
+
data = f.read()
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Summary
|
|
155
|
+
- CRITICAL: 1
|
|
156
|
+
- HIGH: 1
|
|
157
|
+
- MEDIUM: 2
|
|
158
|
+
|
|
159
|
+
Recommendation: ❌ Block merge until CRITICAL issue is fixed
|
|
160
|
+
|
|
161
|
+
## Formatting Required
|
|
162
|
+
Run: `black app/routes/user.py app/services/auth.py`
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Approval Criteria
|
|
166
|
+
|
|
167
|
+
| Status | Condition |
|
|
168
|
+
|--------|-----------|
|
|
169
|
+
| ✅ Approve | No CRITICAL or HIGH issues |
|
|
170
|
+
| ⚠️ Warning | Only MEDIUM issues (merge with caution) |
|
|
171
|
+
| ❌ Block | CRITICAL or HIGH issues found |
|
|
172
|
+
|
|
173
|
+
## Integration with Other Commands
|
|
174
|
+
|
|
175
|
+
- Use `/ccp:tdd` first to ensure tests pass
|
|
176
|
+
- Use `/ccp:code-review` for non-Python specific concerns
|
|
177
|
+
- Use `/ccp:python-review` before committing
|
|
178
|
+
- Use `/ccp:build-fix` if static analysis tools fail
|
|
179
|
+
|
|
180
|
+
## Framework-Specific Reviews
|
|
181
|
+
|
|
182
|
+
### Django Projects
|
|
183
|
+
The reviewer checks for:
|
|
184
|
+
- N+1 query issues (use `select_related` and `prefetch_related`)
|
|
185
|
+
- Missing migrations for model changes
|
|
186
|
+
- Raw SQL usage when ORM could work
|
|
187
|
+
- Missing `transaction.atomic()` for multi-step operations
|
|
188
|
+
|
|
189
|
+
### FastAPI Projects
|
|
190
|
+
The reviewer checks for:
|
|
191
|
+
- CORS misconfiguration
|
|
192
|
+
- Pydantic models for request validation
|
|
193
|
+
- Response models correctness
|
|
194
|
+
- Proper async/await usage
|
|
195
|
+
- Dependency injection patterns
|
|
196
|
+
|
|
197
|
+
### Flask Projects
|
|
198
|
+
The reviewer checks for:
|
|
199
|
+
- Context management (app context, request context)
|
|
200
|
+
- Proper error handling
|
|
201
|
+
- Blueprint organization
|
|
202
|
+
- Configuration management
|
|
203
|
+
|
|
204
|
+
## Related
|
|
205
|
+
|
|
206
|
+
- Agent: `agents/python-reviewer.md`
|
|
207
|
+
- Skills: `skills/python-patterns/`, `skills/python-testing/`
|
|
208
|
+
|
|
209
|
+
## Common Fixes
|
|
210
|
+
|
|
211
|
+
### Add Type Hints
|
|
212
|
+
```python
|
|
213
|
+
# Before
|
|
214
|
+
def calculate(x, y):
|
|
215
|
+
return x + y
|
|
216
|
+
|
|
217
|
+
# After
|
|
218
|
+
from typing import Union
|
|
219
|
+
|
|
220
|
+
def calculate(x: Union[int, float], y: Union[int, float]) -> Union[int, float]:
|
|
221
|
+
return x + y
|
|
222
|
+
```
|
|
223
|
+
|
|
224
|
+
### Use Context Managers
|
|
225
|
+
```python
|
|
226
|
+
# Before
|
|
227
|
+
f = open("file.txt")
|
|
228
|
+
data = f.read()
|
|
229
|
+
f.close()
|
|
230
|
+
|
|
231
|
+
# After
|
|
232
|
+
with open("file.txt") as f:
|
|
233
|
+
data = f.read()
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
### Use List Comprehensions
|
|
237
|
+
```python
|
|
238
|
+
# Before
|
|
239
|
+
result = []
|
|
240
|
+
for item in items:
|
|
241
|
+
if item.active:
|
|
242
|
+
result.append(item.name)
|
|
243
|
+
|
|
244
|
+
# After
|
|
245
|
+
result = [item.name for item in items if item.active]
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### Fix Mutable Defaults
|
|
249
|
+
```python
|
|
250
|
+
# Before
|
|
251
|
+
def append(value, items=[]):
|
|
252
|
+
items.append(value)
|
|
253
|
+
return items
|
|
254
|
+
|
|
255
|
+
# After
|
|
256
|
+
def append(value, items=None):
|
|
257
|
+
if items is None:
|
|
258
|
+
items = []
|
|
259
|
+
items.append(value)
|
|
260
|
+
return items
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
### Use f-strings (Python 3.6+)
|
|
264
|
+
```python
|
|
265
|
+
# Before
|
|
266
|
+
name = "Alice"
|
|
267
|
+
greeting = "Hello, " + name + "!"
|
|
268
|
+
greeting2 = "Hello, {}".format(name)
|
|
269
|
+
|
|
270
|
+
# After
|
|
271
|
+
greeting = f"Hello, {name}!"
|
|
272
|
+
```
|
|
273
|
+
|
|
274
|
+
### Fix String Concatenation in Loops
|
|
275
|
+
```python
|
|
276
|
+
# Before
|
|
277
|
+
result = ""
|
|
278
|
+
for item in items:
|
|
279
|
+
result += str(item)
|
|
280
|
+
|
|
281
|
+
# After
|
|
282
|
+
result = "".join(str(item) for item in items)
|
|
283
|
+
```
|
|
284
|
+
|
|
285
|
+
## Python Version Compatibility
|
|
286
|
+
|
|
287
|
+
The reviewer notes when code uses features from newer Python versions:
|
|
288
|
+
|
|
289
|
+
| Feature | Minimum Python |
|
|
290
|
+
|---------|----------------|
|
|
291
|
+
| Type hints | 3.5+ |
|
|
292
|
+
| f-strings | 3.6+ |
|
|
293
|
+
| Walrus operator (`:=`) | 3.8+ |
|
|
294
|
+
| Position-only parameters | 3.8+ |
|
|
295
|
+
| Match statements | 3.10+ |
|
|
296
|
+
| Type unions (`x | None`) | 3.10+ |
|
|
297
|
+
|
|
298
|
+
Ensure your project's `pyproject.toml` or `setup.py` specifies the correct minimum Python version.
|
|
@@ -1,10 +1,15 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:quality-gate
|
|
3
|
+
description: "Run the CCP quality pipeline on demand for a file or project scope"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# Quality Gate Command
|
|
2
7
|
|
|
3
|
-
Run the
|
|
8
|
+
Run the CCP quality pipeline on demand for a file or project scope.
|
|
4
9
|
|
|
5
10
|
## Usage
|
|
6
11
|
|
|
7
|
-
`/quality-gate [path|.] [--fix] [--strict]`
|
|
12
|
+
`/ccp:quality-gate [path|.] [--fix] [--strict]`
|
|
8
13
|
|
|
9
14
|
- default target: current directory (`.`)
|
|
10
15
|
- `--fix`: allow auto-format/fix where configured
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Execute a quick task with
|
|
4
|
-
argument-hint: "[--full] [--discuss]"
|
|
2
|
+
name: ccp:quick
|
|
3
|
+
description: Execute a quick task with CCP guarantees (atomic commits, state tracking) but skip optional agents
|
|
4
|
+
argument-hint: "[--full] [--discuss] [--research]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
7
7
|
- Write
|
|
@@ -13,10 +13,10 @@ allowed-tools:
|
|
|
13
13
|
- AskUserQuestion
|
|
14
14
|
---
|
|
15
15
|
<objective>
|
|
16
|
-
Execute small, ad-hoc tasks with
|
|
16
|
+
Execute small, ad-hoc tasks with CCP guarantees (atomic commits, STATE.md tracking).
|
|
17
17
|
|
|
18
18
|
Quick mode is the same system with a shorter path:
|
|
19
|
-
- Spawns
|
|
19
|
+
- Spawns ccp-planner (quick mode) + ccp-executor(s)
|
|
20
20
|
- Quick tasks live in `.planning/quick/` separate from planned phases
|
|
21
21
|
- Updates STATE.md "Quick Tasks Completed" table (NOT ROADMAP.md)
|
|
22
22
|
|
|
@@ -26,11 +26,13 @@ Quick mode is the same system with a shorter path:
|
|
|
26
26
|
|
|
27
27
|
**`--full` flag:** Enables plan-checking (max 2 iterations) and post-execution verification. Use when you want quality guarantees without full milestone ceremony.
|
|
28
28
|
|
|
29
|
-
|
|
29
|
+
**`--research` flag:** Spawns a focused research agent before planning. Investigates implementation approaches, library options, and pitfalls for the task. Use when you're unsure of the best approach.
|
|
30
|
+
|
|
31
|
+
Flags are composable: `--discuss --research --full` gives discussion + research + plan-checking + verification.
|
|
30
32
|
</objective>
|
|
31
33
|
|
|
32
34
|
<execution_context>
|
|
33
|
-
@~/.claude/
|
|
35
|
+
@~/.claude/pilot/workflows/quick.md
|
|
34
36
|
</execution_context>
|
|
35
37
|
|
|
36
38
|
<context>
|
|
@@ -40,6 +42,6 @@ Context files are resolved inside the workflow (`init quick`) and delegated via
|
|
|
40
42
|
</context>
|
|
41
43
|
|
|
42
44
|
<process>
|
|
43
|
-
Execute the quick workflow from @~/.claude/
|
|
45
|
+
Execute the quick workflow from @~/.claude/pilot/workflows/quick.md end-to-end.
|
|
44
46
|
Preserve all workflow gates (validation, task description, planning, execution, state updates, commits).
|
|
45
47
|
</process>
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:refactor-clean
|
|
3
|
+
description: "Safely identify and remove dead code with test verification"
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Refactor Clean
|
|
7
|
+
|
|
8
|
+
Safely identify and remove dead code with test verification at every step.
|
|
9
|
+
|
|
10
|
+
## Step 1: Detect Dead Code
|
|
11
|
+
|
|
12
|
+
Run analysis tools based on project type:
|
|
13
|
+
|
|
14
|
+
| Tool | What It Finds | Command |
|
|
15
|
+
|------|--------------|---------|
|
|
16
|
+
| knip | Unused exports, files, dependencies | `npx knip` |
|
|
17
|
+
| depcheck | Unused npm dependencies | `npx depcheck` |
|
|
18
|
+
| ts-prune | Unused TypeScript exports | `npx ts-prune` |
|
|
19
|
+
| vulture | Unused Python code | `vulture src/` |
|
|
20
|
+
| deadcode | Unused Go code | `deadcode ./...` |
|
|
21
|
+
| cargo-udeps | Unused Rust dependencies | `cargo +nightly udeps` |
|
|
22
|
+
|
|
23
|
+
If no tool is available, use Grep to find exports with zero imports:
|
|
24
|
+
```
|
|
25
|
+
# Find exports, then check if they're imported anywhere
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
## Step 2: Categorize Findings
|
|
29
|
+
|
|
30
|
+
Sort findings into safety tiers:
|
|
31
|
+
|
|
32
|
+
| Tier | Examples | Action |
|
|
33
|
+
|------|----------|--------|
|
|
34
|
+
| **SAFE** | Unused utilities, test helpers, internal functions | Delete with confidence |
|
|
35
|
+
| **CAUTION** | Components, API routes, middleware | Verify no dynamic imports or external consumers |
|
|
36
|
+
| **DANGER** | Config files, entry points, type definitions | Investigate before touching |
|
|
37
|
+
|
|
38
|
+
## Step 3: Safe Deletion Loop
|
|
39
|
+
|
|
40
|
+
For each SAFE item:
|
|
41
|
+
|
|
42
|
+
1. **Run full test suite** — Establish baseline (all green)
|
|
43
|
+
2. **Delete the dead code** — Use Edit tool for surgical removal
|
|
44
|
+
3. **Re-run test suite** — Verify nothing broke
|
|
45
|
+
4. **If tests fail** — Immediately revert with `git checkout -- <file>` and skip this item
|
|
46
|
+
5. **If tests pass** — Move to next item
|
|
47
|
+
|
|
48
|
+
## Step 4: Handle CAUTION Items
|
|
49
|
+
|
|
50
|
+
Before deleting CAUTION items:
|
|
51
|
+
- Search for dynamic imports: `import()`, `require()`, `__import__`
|
|
52
|
+
- Search for string references: route names, component names in configs
|
|
53
|
+
- Check if exported from a public package API
|
|
54
|
+
- Verify no external consumers (check dependents if published)
|
|
55
|
+
|
|
56
|
+
## Step 5: Consolidate Duplicates
|
|
57
|
+
|
|
58
|
+
After removing dead code, look for:
|
|
59
|
+
- Near-duplicate functions (>80% similar) — merge into one
|
|
60
|
+
- Redundant type definitions — consolidate
|
|
61
|
+
- Wrapper functions that add no value — inline them
|
|
62
|
+
- Re-exports that serve no purpose — remove indirection
|
|
63
|
+
|
|
64
|
+
## Step 6: Summary
|
|
65
|
+
|
|
66
|
+
Report results:
|
|
67
|
+
|
|
68
|
+
```
|
|
69
|
+
Dead Code Cleanup
|
|
70
|
+
──────────────────────────────
|
|
71
|
+
Deleted: 12 unused functions
|
|
72
|
+
3 unused files
|
|
73
|
+
5 unused dependencies
|
|
74
|
+
Skipped: 2 items (tests failed)
|
|
75
|
+
Saved: ~450 lines removed
|
|
76
|
+
──────────────────────────────
|
|
77
|
+
All tests passing ✅
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Rules
|
|
81
|
+
|
|
82
|
+
- **Never delete without running tests first**
|
|
83
|
+
- **One deletion at a time** — Atomic changes make rollback easy
|
|
84
|
+
- **Skip if uncertain** — Better to keep dead code than break production
|
|
85
|
+
- **Don't refactor while cleaning** — Separate concerns (clean first, refactor later)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: ccp:remove-phase
|
|
3
3
|
description: Remove a future phase from roadmap and renumber subsequent phases
|
|
4
4
|
argument-hint: <phase-number>
|
|
5
5
|
allowed-tools:
|
|
@@ -16,7 +16,7 @@ Output: Phase deleted, all subsequent phases renumbered, git commit as historica
|
|
|
16
16
|
</objective>
|
|
17
17
|
|
|
18
18
|
<execution_context>
|
|
19
|
-
@~/.claude/
|
|
19
|
+
@~/.claude/pilot/workflows/remove-phase.md
|
|
20
20
|
</execution_context>
|
|
21
21
|
|
|
22
22
|
<context>
|
|
@@ -26,6 +26,6 @@ Roadmap and state are resolved in-workflow via `init phase-op` and targeted read
|
|
|
26
26
|
</context>
|
|
27
27
|
|
|
28
28
|
<process>
|
|
29
|
-
Execute the remove-phase workflow from @~/.claude/
|
|
29
|
+
Execute the remove-phase workflow from @~/.claude/pilot/workflows/remove-phase.md end-to-end.
|
|
30
30
|
Preserve all validation gates (future phase check, work check), renumbering logic, and commit.
|
|
31
31
|
</process>
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
3
|
-
description: Research how to implement a phase (standalone - usually use /
|
|
2
|
+
name: ccp:research-phase
|
|
3
|
+
description: Research how to implement a phase (standalone - usually use /ccp:plan-phase instead)
|
|
4
4
|
argument-hint: "[phase]"
|
|
5
5
|
allowed-tools:
|
|
6
6
|
- Read
|
|
@@ -9,9 +9,9 @@ allowed-tools:
|
|
|
9
9
|
---
|
|
10
10
|
|
|
11
11
|
<objective>
|
|
12
|
-
Research how to implement a phase. Spawns
|
|
12
|
+
Research how to implement a phase. Spawns ccp-phase-researcher agent with phase context.
|
|
13
13
|
|
|
14
|
-
**Note:** This is a standalone research command. For most workflows, use `/
|
|
14
|
+
**Note:** This is a standalone research command. For most workflows, use `/ccp:plan-phase` which integrates research automatically.
|
|
15
15
|
|
|
16
16
|
**Use this command when:**
|
|
17
17
|
- You want to research without planning yet
|
|
@@ -23,6 +23,11 @@ Research how to implement a phase. Spawns gsd-phase-researcher agent with phase
|
|
|
23
23
|
**Why subagent:** Research burns context fast (WebSearch, Context7 queries, source verification). Fresh 200k context for investigation. Main context stays lean for user interaction.
|
|
24
24
|
</objective>
|
|
25
25
|
|
|
26
|
+
<available_agent_types>
|
|
27
|
+
Valid CCP subagent types (use exact names — do not fall back to 'general-purpose'):
|
|
28
|
+
- ccp-phase-researcher — Researches technical approaches for a phase
|
|
29
|
+
</available_agent_types>
|
|
30
|
+
|
|
26
31
|
<context>
|
|
27
32
|
Phase number: $ARGUMENTS (required)
|
|
28
33
|
|
|
@@ -34,7 +39,7 @@ Normalize phase input in step 1 before any directory lookups.
|
|
|
34
39
|
## 0. Initialize Context
|
|
35
40
|
|
|
36
41
|
```bash
|
|
37
|
-
INIT=$(node "$HOME/.claude/
|
|
42
|
+
INIT=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" init phase-op "$ARGUMENTS")
|
|
38
43
|
if [[ "$INIT" == @file:* ]]; then INIT=$(cat "${INIT#@file:}"); fi
|
|
39
44
|
```
|
|
40
45
|
|
|
@@ -42,13 +47,13 @@ Extract from init JSON: `phase_dir`, `phase_number`, `phase_name`, `phase_found`
|
|
|
42
47
|
|
|
43
48
|
Resolve researcher model:
|
|
44
49
|
```bash
|
|
45
|
-
RESEARCHER_MODEL=$(node "$HOME/.claude/
|
|
50
|
+
RESEARCHER_MODEL=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" resolve-model ccp-phase-researcher --raw)
|
|
46
51
|
```
|
|
47
52
|
|
|
48
53
|
## 1. Validate Phase
|
|
49
54
|
|
|
50
55
|
```bash
|
|
51
|
-
PHASE_INFO=$(node "$HOME/.claude/
|
|
56
|
+
PHASE_INFO=$(node "$HOME/.claude/pilot/bin/ccp-tools.cjs" roadmap get-phase "${phase_number}")
|
|
52
57
|
```
|
|
53
58
|
|
|
54
59
|
**If `found` is false:** Error and exit. **If `found` is true:** Extract `phase_number`, `phase_name`, `goal` from JSON.
|
|
@@ -72,7 +77,7 @@ Use paths from INIT (do not inline file contents in orchestrator context):
|
|
|
72
77
|
|
|
73
78
|
Present summary with phase description and what files the researcher will load.
|
|
74
79
|
|
|
75
|
-
## 4. Spawn
|
|
80
|
+
## 4. Spawn ccp-phase-researcher Agent
|
|
76
81
|
|
|
77
82
|
Research modes: ecosystem (default), feasibility, implementation, comparison.
|
|
78
83
|
|
|
@@ -110,7 +115,7 @@ Mode: ecosystem
|
|
|
110
115
|
</additional_context>
|
|
111
116
|
|
|
112
117
|
<downstream_consumer>
|
|
113
|
-
Your RESEARCH.md will be loaded by `/
|
|
118
|
+
Your RESEARCH.md will be loaded by `/ccp:plan-phase` which uses specific sections:
|
|
114
119
|
- `## Standard Stack` → Plans use these libraries
|
|
115
120
|
- `## Architecture Patterns` → Task structure follows these
|
|
116
121
|
- `## Don't Hand-Roll` → Tasks NEVER build custom solutions for listed problems
|
|
@@ -137,7 +142,7 @@ Write to: .planning/phases/${PHASE}-{slug}/${PHASE}-RESEARCH.md
|
|
|
137
142
|
```
|
|
138
143
|
Task(
|
|
139
144
|
prompt=filled_prompt,
|
|
140
|
-
subagent_type="
|
|
145
|
+
subagent_type="ccp-phase-researcher",
|
|
141
146
|
model="{researcher_model}",
|
|
142
147
|
description="Research Phase {phase}"
|
|
143
148
|
)
|
|
@@ -173,7 +178,7 @@ Continue research for Phase {phase_number}: {phase_name}
|
|
|
173
178
|
```
|
|
174
179
|
Task(
|
|
175
180
|
prompt=continuation_prompt,
|
|
176
|
-
subagent_type="
|
|
181
|
+
subagent_type="ccp-phase-researcher",
|
|
177
182
|
model="{researcher_model}",
|
|
178
183
|
description="Continue research Phase {phase}"
|
|
179
184
|
)
|
|
@@ -184,7 +189,7 @@ Task(
|
|
|
184
189
|
<success_criteria>
|
|
185
190
|
- [ ] Phase validated against roadmap
|
|
186
191
|
- [ ] Existing research checked
|
|
187
|
-
- [ ]
|
|
192
|
+
- [ ] ccp-phase-researcher spawned with context
|
|
188
193
|
- [ ] Checkpoints handled correctly
|
|
189
194
|
- [ ] User knows next steps
|
|
190
195
|
</success_criteria>
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
---
|
|
2
|
+
name: ccp:resume-session
|
|
2
3
|
description: Load the most recent session file from ~/.claude/sessions/ and resume work with full context from where the last session ended.
|
|
3
4
|
---
|
|
4
5
|
|
|
5
6
|
# Resume Session Command
|
|
6
7
|
|
|
7
8
|
Load the last saved session state and orient fully before doing any work.
|
|
8
|
-
This command is the counterpart to `/save-session`.
|
|
9
|
+
This command is the counterpart to `/ccp:save-session`.
|
|
9
10
|
|
|
10
11
|
## When to Use
|
|
11
12
|
|
|
@@ -17,10 +18,10 @@ This command is the counterpart to `/save-session`.
|
|
|
17
18
|
## Usage
|
|
18
19
|
|
|
19
20
|
```
|
|
20
|
-
/resume-session # loads most recent file in ~/.claude/sessions/
|
|
21
|
-
/resume-session 2024-01-15 # loads most recent session for that date
|
|
22
|
-
/resume-session ~/.claude/sessions/2024-01-15-session.tmp # loads a specific legacy-format file
|
|
23
|
-
/resume-session ~/.claude/sessions/2024-01-15-abc123de-session.tmp # loads a current short-id session file
|
|
21
|
+
/ccp:resume-session # loads most recent file in ~/.claude/sessions/
|
|
22
|
+
/ccp:resume-session 2024-01-15 # loads most recent session for that date
|
|
23
|
+
/ccp:resume-session ~/.claude/sessions/2024-01-15-session.tmp # loads a specific legacy-format file
|
|
24
|
+
/ccp:resume-session ~/.claude/sessions/2024-01-15-abc123de-session.tmp # loads a current short-id session file
|
|
24
25
|
```
|
|
25
26
|
|
|
26
27
|
## Process
|
|
@@ -34,7 +35,7 @@ If no argument provided:
|
|
|
34
35
|
3. If the folder does not exist or has no matching files, tell the user:
|
|
35
36
|
```
|
|
36
37
|
No session files found in ~/.claude/sessions/
|
|
37
|
-
Run /save-session at the end of a session to create one.
|
|
38
|
+
Run /ccp:save-session at the end of a session to create one.
|
|
38
39
|
```
|
|
39
40
|
Then stop.
|
|
40
41
|
|
|
@@ -107,7 +108,7 @@ Note the gap — "⚠️ This session is from N days ago (threshold: 7 days). Th
|
|
|
107
108
|
Read it and follow the same briefing process — the format is the same regardless of source.
|
|
108
109
|
|
|
109
110
|
**Session file is empty or malformed:**
|
|
110
|
-
Report: "Session file found but appears empty or unreadable. You may need to create a new one with /save-session."
|
|
111
|
+
Report: "Session file found but appears empty or unreadable. You may need to create a new one with /ccp:save-session."
|
|
111
112
|
|
|
112
113
|
---
|
|
113
114
|
|
|
@@ -152,4 +153,4 @@ Ready to continue. What would you like to do?
|
|
|
152
153
|
- Never modify the session file when loading it — it's a read-only historical record
|
|
153
154
|
- The briefing format is fixed — do not skip sections even if they are empty
|
|
154
155
|
- "What Not To Retry" must always be shown, even if it just says "None" — it's too important to miss
|
|
155
|
-
- After resuming, the user may want to run `/save-session` again at the end of the new session to create a new dated file
|
|
156
|
+
- After resuming, the user may want to run `/ccp:save-session` again at the end of the new session to create a new dated file
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name:
|
|
2
|
+
name: ccp:resume-work
|
|
3
3
|
description: Resume work from previous session with full context restoration
|
|
4
4
|
allowed-tools:
|
|
5
5
|
- Read
|
|
@@ -22,11 +22,11 @@ Routes to the resume-project workflow which handles:
|
|
|
22
22
|
</objective>
|
|
23
23
|
|
|
24
24
|
<execution_context>
|
|
25
|
-
@~/.claude/
|
|
25
|
+
@~/.claude/pilot/workflows/resume-project.md
|
|
26
26
|
</execution_context>
|
|
27
27
|
|
|
28
28
|
<process>
|
|
29
|
-
**Follow the resume-project workflow** from `@~/.claude/
|
|
29
|
+
**Follow the resume-project workflow** from `@~/.claude/pilot/workflows/resume-project.md`.
|
|
30
30
|
|
|
31
31
|
The workflow handles all resumption logic including:
|
|
32
32
|
|