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,30 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:fast
|
|
3
|
+
description: Execute a trivial task inline — no subagents, no planning overhead
|
|
4
|
+
argument-hint: "[task description]"
|
|
5
|
+
allowed-tools:
|
|
6
|
+
- Read
|
|
7
|
+
- Write
|
|
8
|
+
- Edit
|
|
9
|
+
- Bash
|
|
10
|
+
- Grep
|
|
11
|
+
- Glob
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
<objective>
|
|
15
|
+
Execute a trivial task directly in the current context without spawning subagents
|
|
16
|
+
or generating PLAN.md files. For tasks too small to justify planning overhead:
|
|
17
|
+
typo fixes, config changes, small refactors, forgotten commits, simple additions.
|
|
18
|
+
|
|
19
|
+
This is NOT a replacement for /ccp:quick — use /ccp:quick for anything that
|
|
20
|
+
needs research, multi-step planning, or verification. /ccp:fast is for tasks
|
|
21
|
+
you could describe in one sentence and execute in under 2 minutes.
|
|
22
|
+
</objective>
|
|
23
|
+
|
|
24
|
+
<execution_context>
|
|
25
|
+
@~/.claude/pilot/workflows/fast.md
|
|
26
|
+
</execution_context>
|
|
27
|
+
|
|
28
|
+
<process>
|
|
29
|
+
Execute the fast workflow from @~/.claude/pilot/workflows/fast.md end-to-end.
|
|
30
|
+
</process>
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
---
|
|
2
|
+
type: prompt
|
|
3
|
+
name: ccp:forensics
|
|
4
|
+
description: Post-mortem investigation for failed CCP workflows — analyzes git history, artifacts, and state to diagnose what went wrong
|
|
5
|
+
argument-hint: "[problem description]"
|
|
6
|
+
allowed-tools:
|
|
7
|
+
- Read
|
|
8
|
+
- Write
|
|
9
|
+
- Bash
|
|
10
|
+
- Grep
|
|
11
|
+
- Glob
|
|
12
|
+
---
|
|
13
|
+
|
|
14
|
+
<objective>
|
|
15
|
+
Investigate what went wrong during a CCP workflow execution. Analyzes git history, `.planning/` artifacts, and file system state to detect anomalies and generate a structured diagnostic report.
|
|
16
|
+
|
|
17
|
+
Purpose: Diagnose failed or stuck workflows so the user can understand root cause and take corrective action.
|
|
18
|
+
Output: Forensic report saved to `.planning/forensics/`, presented inline, with optional issue creation.
|
|
19
|
+
</objective>
|
|
20
|
+
|
|
21
|
+
<execution_context>
|
|
22
|
+
@~/.claude/pilot/workflows/forensics.md
|
|
23
|
+
</execution_context>
|
|
24
|
+
|
|
25
|
+
<context>
|
|
26
|
+
**Data sources:**
|
|
27
|
+
- `git log` (recent commits, patterns, time gaps)
|
|
28
|
+
- `git status` / `git diff` (uncommitted work, conflicts)
|
|
29
|
+
- `.planning/STATE.md` (current position, session history)
|
|
30
|
+
- `.planning/ROADMAP.md` (phase scope and progress)
|
|
31
|
+
- `.planning/phases/*/` (PLAN.md, SUMMARY.md, VERIFICATION.md, CONTEXT.md)
|
|
32
|
+
- `.planning/reports/SESSION_REPORT.md` (last session outcomes)
|
|
33
|
+
|
|
34
|
+
**User input:**
|
|
35
|
+
- Problem description: $ARGUMENTS (optional — will ask if not provided)
|
|
36
|
+
</context>
|
|
37
|
+
|
|
38
|
+
<process>
|
|
39
|
+
Read and execute the forensics workflow from @~/.claude/pilot/workflows/forensics.md end-to-end.
|
|
40
|
+
</process>
|
|
41
|
+
|
|
42
|
+
<success_criteria>
|
|
43
|
+
- Evidence gathered from all available data sources
|
|
44
|
+
- At least 4 anomaly types checked (stuck loop, missing artifacts, abandoned work, crash/interruption)
|
|
45
|
+
- Structured forensic report written to `.planning/forensics/report-{timestamp}.md`
|
|
46
|
+
- Report presented inline with findings, anomalies, and recommendations
|
|
47
|
+
- Interactive investigation offered for deeper analysis
|
|
48
|
+
- GitHub issue creation offered if actionable findings exist
|
|
49
|
+
</success_criteria>
|
|
50
|
+
|
|
51
|
+
<critical_rules>
|
|
52
|
+
- **Read-only investigation:** Do not modify project source files during forensics. Only write the forensic report and update STATE.md session tracking.
|
|
53
|
+
- **Redact sensitive data:** Strip absolute paths, API keys, tokens from reports and issues.
|
|
54
|
+
- **Ground findings in evidence:** Every anomaly must cite specific commits, files, or state data.
|
|
55
|
+
- **No speculation without evidence:** If data is insufficient, say so — do not fabricate root causes.
|
|
56
|
+
</critical_rules>
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:go-build
|
|
3
|
+
description: Fix Go build errors, go vet warnings, and linter issues incrementally. Invokes the go-build-resolver agent for minimal, surgical fixes.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Go Build and Fix
|
|
7
|
+
|
|
8
|
+
This command invokes the **go-build-resolver** agent to incrementally fix Go build errors with minimal changes.
|
|
9
|
+
|
|
10
|
+
## What This Command Does
|
|
11
|
+
|
|
12
|
+
1. **Run Diagnostics**: Execute `go build`, `go vet`, `staticcheck`
|
|
13
|
+
2. **Parse Errors**: Group by file and sort by severity
|
|
14
|
+
3. **Fix Incrementally**: One error at a time
|
|
15
|
+
4. **Verify Each Fix**: Re-run build after each change
|
|
16
|
+
5. **Report Summary**: Show what was fixed and what remains
|
|
17
|
+
|
|
18
|
+
## When to Use
|
|
19
|
+
|
|
20
|
+
Use `/ccp:go-build` when:
|
|
21
|
+
- `go build ./...` fails with errors
|
|
22
|
+
- `go vet ./...` reports issues
|
|
23
|
+
- `golangci-lint run` shows warnings
|
|
24
|
+
- Module dependencies are broken
|
|
25
|
+
- After pulling changes that break the build
|
|
26
|
+
|
|
27
|
+
## Diagnostic Commands Run
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# Primary build check
|
|
31
|
+
go build ./...
|
|
32
|
+
|
|
33
|
+
# Static analysis
|
|
34
|
+
go vet ./...
|
|
35
|
+
|
|
36
|
+
# Extended linting (if available)
|
|
37
|
+
staticcheck ./...
|
|
38
|
+
golangci-lint run
|
|
39
|
+
|
|
40
|
+
# Module issues
|
|
41
|
+
go mod verify
|
|
42
|
+
go mod tidy -v
|
|
43
|
+
```
|
|
44
|
+
|
|
45
|
+
## Example Session
|
|
46
|
+
|
|
47
|
+
```text
|
|
48
|
+
User: /ccp:go-build
|
|
49
|
+
|
|
50
|
+
Agent:
|
|
51
|
+
# Go Build Resolution
|
|
52
|
+
|
|
53
|
+
## Initial Diagnostics
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
$ go build ./...
|
|
57
|
+
internal/service/user.go:25:15: undefined: UserRepository
|
|
58
|
+
internal/handler/api.go:42:9: cannot use x (type string) as type int
|
|
59
|
+
internal/handler/api.go:58:2: missing return at end of function
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Errors found: 3
|
|
63
|
+
|
|
64
|
+
## Fix 1: Undefined Identifier
|
|
65
|
+
|
|
66
|
+
File: internal/service/user.go:25
|
|
67
|
+
Error: undefined: UserRepository
|
|
68
|
+
Cause: Missing import
|
|
69
|
+
|
|
70
|
+
```go
|
|
71
|
+
// Added import
|
|
72
|
+
import "project/internal/repository"
|
|
73
|
+
|
|
74
|
+
// Changed
|
|
75
|
+
var repo UserRepository
|
|
76
|
+
// To
|
|
77
|
+
var repo repository.UserRepository
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
$ go build ./...
|
|
82
|
+
# 2 errors remaining
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Fix 2: Type Mismatch
|
|
86
|
+
|
|
87
|
+
File: internal/handler/api.go:42
|
|
88
|
+
Error: cannot use x (type string) as type int
|
|
89
|
+
|
|
90
|
+
```go
|
|
91
|
+
// Changed
|
|
92
|
+
count := params.Get("count")
|
|
93
|
+
// To
|
|
94
|
+
countStr := params.Get("count")
|
|
95
|
+
count, _ := strconv.Atoi(countStr)
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
```bash
|
|
99
|
+
$ go build ./...
|
|
100
|
+
# 1 error remaining
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
## Fix 3: Missing Return
|
|
104
|
+
|
|
105
|
+
File: internal/handler/api.go:58
|
|
106
|
+
Error: missing return at end of function
|
|
107
|
+
|
|
108
|
+
```go
|
|
109
|
+
func GetUser(id string) (*User, error) {
|
|
110
|
+
if id == "" {
|
|
111
|
+
return nil, ErrInvalidID
|
|
112
|
+
}
|
|
113
|
+
user := findUser(id)
|
|
114
|
+
// Added missing return
|
|
115
|
+
return user, nil
|
|
116
|
+
}
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
```bash
|
|
120
|
+
$ go build ./...
|
|
121
|
+
# Build successful!
|
|
122
|
+
```
|
|
123
|
+
|
|
124
|
+
## Final Verification
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
$ go vet ./...
|
|
128
|
+
# No issues
|
|
129
|
+
|
|
130
|
+
$ go test ./...
|
|
131
|
+
ok project/internal/service 0.015s
|
|
132
|
+
ok project/internal/handler 0.023s
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
## Summary
|
|
136
|
+
|
|
137
|
+
| Metric | Count |
|
|
138
|
+
|--------|-------|
|
|
139
|
+
| Build errors fixed | 3 |
|
|
140
|
+
| Vet warnings fixed | 0 |
|
|
141
|
+
| Files modified | 2 |
|
|
142
|
+
| Remaining issues | 0 |
|
|
143
|
+
|
|
144
|
+
Build Status: ✅ SUCCESS
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Common Errors Fixed
|
|
148
|
+
|
|
149
|
+
| Error | Typical Fix |
|
|
150
|
+
|-------|-------------|
|
|
151
|
+
| `undefined: X` | Add import or fix typo |
|
|
152
|
+
| `cannot use X as Y` | Type conversion or fix assignment |
|
|
153
|
+
| `missing return` | Add return statement |
|
|
154
|
+
| `X does not implement Y` | Add missing method |
|
|
155
|
+
| `import cycle` | Restructure packages |
|
|
156
|
+
| `declared but not used` | Remove or use variable |
|
|
157
|
+
| `cannot find package` | `go get` or `go mod tidy` |
|
|
158
|
+
|
|
159
|
+
## Fix Strategy
|
|
160
|
+
|
|
161
|
+
1. **Build errors first** - Code must compile
|
|
162
|
+
2. **Vet warnings second** - Fix suspicious constructs
|
|
163
|
+
3. **Lint warnings third** - Style and best practices
|
|
164
|
+
4. **One fix at a time** - Verify each change
|
|
165
|
+
5. **Minimal changes** - Don't refactor, just fix
|
|
166
|
+
|
|
167
|
+
## Stop Conditions
|
|
168
|
+
|
|
169
|
+
The agent will stop and report if:
|
|
170
|
+
- Same error persists after 3 attempts
|
|
171
|
+
- Fix introduces more errors
|
|
172
|
+
- Requires architectural changes
|
|
173
|
+
- Missing external dependencies
|
|
174
|
+
|
|
175
|
+
## Related Commands
|
|
176
|
+
|
|
177
|
+
- `/ccp:go-test` - Run tests after build succeeds
|
|
178
|
+
- `/ccp:go-review` - Review code quality
|
|
179
|
+
- `/ccp:verify` - Full verification loop
|
|
180
|
+
|
|
181
|
+
## Related
|
|
182
|
+
|
|
183
|
+
- Agent: `agents/go-build-resolver.md`
|
|
184
|
+
- Skill: `skills/golang-patterns/`
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:go-review
|
|
3
|
+
description: Comprehensive Go code review for idiomatic patterns, concurrency safety, error handling, and security. Invokes the go-reviewer agent.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Go Code Review
|
|
7
|
+
|
|
8
|
+
This command invokes the **go-reviewer** agent for comprehensive Go-specific code review.
|
|
9
|
+
|
|
10
|
+
## What This Command Does
|
|
11
|
+
|
|
12
|
+
1. **Identify Go Changes**: Find modified `.go` files via `git diff`
|
|
13
|
+
2. **Run Static Analysis**: Execute `go vet`, `staticcheck`, and `golangci-lint`
|
|
14
|
+
3. **Security Scan**: Check for SQL injection, command injection, race conditions
|
|
15
|
+
4. **Concurrency Review**: Analyze goroutine safety, channel usage, mutex patterns
|
|
16
|
+
5. **Idiomatic Go Check**: Verify code follows Go conventions and best practices
|
|
17
|
+
6. **Generate Report**: Categorize issues by severity
|
|
18
|
+
|
|
19
|
+
## When to Use
|
|
20
|
+
|
|
21
|
+
Use `/ccp:go-review` when:
|
|
22
|
+
- After writing or modifying Go code
|
|
23
|
+
- Before committing Go changes
|
|
24
|
+
- Reviewing pull requests with Go code
|
|
25
|
+
- Onboarding to a new Go codebase
|
|
26
|
+
- Learning idiomatic Go patterns
|
|
27
|
+
|
|
28
|
+
## Review Categories
|
|
29
|
+
|
|
30
|
+
### CRITICAL (Must Fix)
|
|
31
|
+
- SQL/Command injection vulnerabilities
|
|
32
|
+
- Race conditions without synchronization
|
|
33
|
+
- Goroutine leaks
|
|
34
|
+
- Hardcoded credentials
|
|
35
|
+
- Unsafe pointer usage
|
|
36
|
+
- Ignored errors in critical paths
|
|
37
|
+
|
|
38
|
+
### HIGH (Should Fix)
|
|
39
|
+
- Missing error wrapping with context
|
|
40
|
+
- Panic instead of error returns
|
|
41
|
+
- Context not propagated
|
|
42
|
+
- Unbuffered channels causing deadlocks
|
|
43
|
+
- Interface not satisfied errors
|
|
44
|
+
- Missing mutex protection
|
|
45
|
+
|
|
46
|
+
### MEDIUM (Consider)
|
|
47
|
+
- Non-idiomatic code patterns
|
|
48
|
+
- Missing godoc comments on exports
|
|
49
|
+
- Inefficient string concatenation
|
|
50
|
+
- Slice not preallocated
|
|
51
|
+
- Table-driven tests not used
|
|
52
|
+
|
|
53
|
+
## Automated Checks Run
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Static analysis
|
|
57
|
+
go vet ./...
|
|
58
|
+
|
|
59
|
+
# Advanced checks (if installed)
|
|
60
|
+
staticcheck ./...
|
|
61
|
+
golangci-lint run
|
|
62
|
+
|
|
63
|
+
# Race detection
|
|
64
|
+
go build -race ./...
|
|
65
|
+
|
|
66
|
+
# Security vulnerabilities
|
|
67
|
+
govulncheck ./...
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Example Usage
|
|
71
|
+
|
|
72
|
+
```text
|
|
73
|
+
User: /ccp:go-review
|
|
74
|
+
|
|
75
|
+
Agent:
|
|
76
|
+
# Go Code Review Report
|
|
77
|
+
|
|
78
|
+
## Files Reviewed
|
|
79
|
+
- internal/handler/user.go (modified)
|
|
80
|
+
- internal/service/auth.go (modified)
|
|
81
|
+
|
|
82
|
+
## Static Analysis Results
|
|
83
|
+
✓ go vet: No issues
|
|
84
|
+
✓ staticcheck: No issues
|
|
85
|
+
|
|
86
|
+
## Issues Found
|
|
87
|
+
|
|
88
|
+
[CRITICAL] Race Condition
|
|
89
|
+
File: internal/service/auth.go:45
|
|
90
|
+
Issue: Shared map accessed without synchronization
|
|
91
|
+
```go
|
|
92
|
+
var cache = map[string]*Session{} // Concurrent access!
|
|
93
|
+
|
|
94
|
+
func GetSession(id string) *Session {
|
|
95
|
+
return cache[id] // Race condition
|
|
96
|
+
}
|
|
97
|
+
```
|
|
98
|
+
Fix: Use sync.RWMutex or sync.Map
|
|
99
|
+
```go
|
|
100
|
+
var (
|
|
101
|
+
cache = map[string]*Session{}
|
|
102
|
+
cacheMu sync.RWMutex
|
|
103
|
+
)
|
|
104
|
+
|
|
105
|
+
func GetSession(id string) *Session {
|
|
106
|
+
cacheMu.RLock()
|
|
107
|
+
defer cacheMu.RUnlock()
|
|
108
|
+
return cache[id]
|
|
109
|
+
}
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
[HIGH] Missing Error Context
|
|
113
|
+
File: internal/handler/user.go:28
|
|
114
|
+
Issue: Error returned without context
|
|
115
|
+
```go
|
|
116
|
+
return err // No context
|
|
117
|
+
```
|
|
118
|
+
Fix: Wrap with context
|
|
119
|
+
```go
|
|
120
|
+
return fmt.Errorf("get user %s: %w", userID, err)
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## Summary
|
|
124
|
+
- CRITICAL: 1
|
|
125
|
+
- HIGH: 1
|
|
126
|
+
- MEDIUM: 0
|
|
127
|
+
|
|
128
|
+
Recommendation: ❌ Block merge until CRITICAL issue is fixed
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Approval Criteria
|
|
132
|
+
|
|
133
|
+
| Status | Condition |
|
|
134
|
+
|--------|-----------|
|
|
135
|
+
| ✅ Approve | No CRITICAL or HIGH issues |
|
|
136
|
+
| ⚠️ Warning | Only MEDIUM issues (merge with caution) |
|
|
137
|
+
| ❌ Block | CRITICAL or HIGH issues found |
|
|
138
|
+
|
|
139
|
+
## Integration with Other Commands
|
|
140
|
+
|
|
141
|
+
- Use `/ccp:go-test` first to ensure tests pass
|
|
142
|
+
- Use `/ccp:go-build` if build errors occur
|
|
143
|
+
- Use `/ccp:go-review` before committing
|
|
144
|
+
- Use `/ccp:code-review` for non-Go specific concerns
|
|
145
|
+
|
|
146
|
+
## Related
|
|
147
|
+
|
|
148
|
+
- Agent: `agents/go-reviewer.md`
|
|
149
|
+
- Skills: `skills/golang-patterns/`, `skills/golang-testing/`
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: ccp:go-test
|
|
3
|
+
description: Enforce TDD workflow for Go. Write table-driven tests first, then implement. Verify 80%+ coverage with go test -cover.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Go TDD Command
|
|
7
|
+
|
|
8
|
+
This command enforces test-driven development methodology for Go code using idiomatic Go testing patterns.
|
|
9
|
+
|
|
10
|
+
## What This Command Does
|
|
11
|
+
|
|
12
|
+
1. **Define Types/Interfaces**: Scaffold function signatures first
|
|
13
|
+
2. **Write Table-Driven Tests**: Create comprehensive test cases (RED)
|
|
14
|
+
3. **Run Tests**: Verify tests fail for the right reason
|
|
15
|
+
4. **Implement Code**: Write minimal code to pass (GREEN)
|
|
16
|
+
5. **Refactor**: Improve while keeping tests green
|
|
17
|
+
6. **Check Coverage**: Ensure 80%+ coverage
|
|
18
|
+
|
|
19
|
+
## When to Use
|
|
20
|
+
|
|
21
|
+
Use `/ccp:go-test` when:
|
|
22
|
+
- Implementing new Go functions
|
|
23
|
+
- Adding test coverage to existing code
|
|
24
|
+
- Fixing bugs (write failing test first)
|
|
25
|
+
- Building critical business logic
|
|
26
|
+
- Learning TDD workflow in Go
|
|
27
|
+
|
|
28
|
+
## TDD Cycle
|
|
29
|
+
|
|
30
|
+
```
|
|
31
|
+
RED → Write failing table-driven test
|
|
32
|
+
GREEN → Implement minimal code to pass
|
|
33
|
+
REFACTOR → Improve code, tests stay green
|
|
34
|
+
REPEAT → Next test case
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
## Example Session
|
|
38
|
+
|
|
39
|
+
````
|
|
40
|
+
User: /ccp:go-test I need a function to validate email addresses
|
|
41
|
+
|
|
42
|
+
Agent:
|
|
43
|
+
# TDD Session: Email Validator
|
|
44
|
+
|
|
45
|
+
## Step 1: Define Interface
|
|
46
|
+
|
|
47
|
+
```go
|
|
48
|
+
// validator/email.go
|
|
49
|
+
package validator
|
|
50
|
+
|
|
51
|
+
// ValidateEmail checks if the given string is a valid email address.
|
|
52
|
+
// Returns nil if valid, error describing the issue otherwise.
|
|
53
|
+
func ValidateEmail(email string) error {
|
|
54
|
+
panic("not implemented")
|
|
55
|
+
}
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## Step 2: Write Table-Driven Tests (RED)
|
|
59
|
+
|
|
60
|
+
```go
|
|
61
|
+
// validator/email_test.go
|
|
62
|
+
package validator
|
|
63
|
+
|
|
64
|
+
import (
|
|
65
|
+
"testing"
|
|
66
|
+
)
|
|
67
|
+
|
|
68
|
+
func TestValidateEmail(t *testing.T) {
|
|
69
|
+
tests := []struct {
|
|
70
|
+
name string
|
|
71
|
+
email string
|
|
72
|
+
wantErr bool
|
|
73
|
+
}{
|
|
74
|
+
// Valid emails
|
|
75
|
+
{"simple email", "user@example.com", false},
|
|
76
|
+
{"with subdomain", "user@mail.example.com", false},
|
|
77
|
+
{"with plus", "user+tag@example.com", false},
|
|
78
|
+
{"with dots", "first.last@example.com", false},
|
|
79
|
+
|
|
80
|
+
// Invalid emails
|
|
81
|
+
{"empty string", "", true},
|
|
82
|
+
{"no at sign", "userexample.com", true},
|
|
83
|
+
{"no domain", "user@", true},
|
|
84
|
+
{"no local part", "@example.com", true},
|
|
85
|
+
{"double at", "user@@example.com", true},
|
|
86
|
+
{"spaces", "user @example.com", true},
|
|
87
|
+
{"no tld", "user@example", true},
|
|
88
|
+
}
|
|
89
|
+
|
|
90
|
+
for _, tt := range tests {
|
|
91
|
+
t.Run(tt.name, func(t *testing.T) {
|
|
92
|
+
err := ValidateEmail(tt.email)
|
|
93
|
+
if tt.wantErr && err == nil {
|
|
94
|
+
t.Errorf("ValidateEmail(%q) = nil; want error", tt.email)
|
|
95
|
+
}
|
|
96
|
+
if !tt.wantErr && err != nil {
|
|
97
|
+
t.Errorf("ValidateEmail(%q) = %v; want nil", tt.email, err)
|
|
98
|
+
}
|
|
99
|
+
})
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Step 3: Run Tests - Verify FAIL
|
|
105
|
+
|
|
106
|
+
```bash
|
|
107
|
+
$ go test ./validator/...
|
|
108
|
+
|
|
109
|
+
--- FAIL: TestValidateEmail (0.00s)
|
|
110
|
+
--- FAIL: TestValidateEmail/simple_email (0.00s)
|
|
111
|
+
panic: not implemented
|
|
112
|
+
|
|
113
|
+
FAIL
|
|
114
|
+
```
|
|
115
|
+
|
|
116
|
+
✓ Tests fail as expected (panic).
|
|
117
|
+
|
|
118
|
+
## Step 4: Implement Minimal Code (GREEN)
|
|
119
|
+
|
|
120
|
+
```go
|
|
121
|
+
// validator/email.go
|
|
122
|
+
package validator
|
|
123
|
+
|
|
124
|
+
import (
|
|
125
|
+
"errors"
|
|
126
|
+
"regexp"
|
|
127
|
+
)
|
|
128
|
+
|
|
129
|
+
var emailRegex = regexp.MustCompile(`^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$`)
|
|
130
|
+
|
|
131
|
+
var (
|
|
132
|
+
ErrEmailEmpty = errors.New("email cannot be empty")
|
|
133
|
+
ErrEmailInvalid = errors.New("email format is invalid")
|
|
134
|
+
)
|
|
135
|
+
|
|
136
|
+
func ValidateEmail(email string) error {
|
|
137
|
+
if email == "" {
|
|
138
|
+
return ErrEmailEmpty
|
|
139
|
+
}
|
|
140
|
+
if !emailRegex.MatchString(email) {
|
|
141
|
+
return ErrEmailInvalid
|
|
142
|
+
}
|
|
143
|
+
return nil
|
|
144
|
+
}
|
|
145
|
+
```
|
|
146
|
+
|
|
147
|
+
## Step 5: Run Tests - Verify PASS
|
|
148
|
+
|
|
149
|
+
```bash
|
|
150
|
+
$ go test ./validator/...
|
|
151
|
+
|
|
152
|
+
PASS
|
|
153
|
+
ok project/validator 0.003s
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
✓ All tests passing!
|
|
157
|
+
|
|
158
|
+
## Step 6: Check Coverage
|
|
159
|
+
|
|
160
|
+
```bash
|
|
161
|
+
$ go test -cover ./validator/...
|
|
162
|
+
|
|
163
|
+
PASS
|
|
164
|
+
coverage: 100.0% of statements
|
|
165
|
+
ok project/validator 0.003s
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
✓ Coverage: 100%
|
|
169
|
+
|
|
170
|
+
## TDD Complete!
|
|
171
|
+
````
|
|
172
|
+
|
|
173
|
+
## Test Patterns
|
|
174
|
+
|
|
175
|
+
### Table-Driven Tests
|
|
176
|
+
```go
|
|
177
|
+
tests := []struct {
|
|
178
|
+
name string
|
|
179
|
+
input InputType
|
|
180
|
+
want OutputType
|
|
181
|
+
wantErr bool
|
|
182
|
+
}{
|
|
183
|
+
{"case 1", input1, want1, false},
|
|
184
|
+
{"case 2", input2, want2, true},
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
for _, tt := range tests {
|
|
188
|
+
t.Run(tt.name, func(t *testing.T) {
|
|
189
|
+
got, err := Function(tt.input)
|
|
190
|
+
// assertions
|
|
191
|
+
})
|
|
192
|
+
}
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
### Parallel Tests
|
|
196
|
+
```go
|
|
197
|
+
for _, tt := range tests {
|
|
198
|
+
tt := tt // Capture
|
|
199
|
+
t.Run(tt.name, func(t *testing.T) {
|
|
200
|
+
t.Parallel()
|
|
201
|
+
// test body
|
|
202
|
+
})
|
|
203
|
+
}
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
### Test Helpers
|
|
207
|
+
```go
|
|
208
|
+
func setupTestDB(t *testing.T) *sql.DB {
|
|
209
|
+
t.Helper()
|
|
210
|
+
db := createDB()
|
|
211
|
+
t.Cleanup(func() { db.Close() })
|
|
212
|
+
return db
|
|
213
|
+
}
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## Coverage Commands
|
|
217
|
+
|
|
218
|
+
```bash
|
|
219
|
+
# Basic coverage
|
|
220
|
+
go test -cover ./...
|
|
221
|
+
|
|
222
|
+
# Coverage profile
|
|
223
|
+
go test -coverprofile=coverage.out ./...
|
|
224
|
+
|
|
225
|
+
# View in browser
|
|
226
|
+
go tool cover -html=coverage.out
|
|
227
|
+
|
|
228
|
+
# Coverage by function
|
|
229
|
+
go tool cover -func=coverage.out
|
|
230
|
+
|
|
231
|
+
# With race detection
|
|
232
|
+
go test -race -cover ./...
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
## Coverage Targets
|
|
236
|
+
|
|
237
|
+
| Code Type | Target |
|
|
238
|
+
|-----------|--------|
|
|
239
|
+
| Critical business logic | 100% |
|
|
240
|
+
| Public APIs | 90%+ |
|
|
241
|
+
| General code | 80%+ |
|
|
242
|
+
| Generated code | Exclude |
|
|
243
|
+
|
|
244
|
+
## TDD Best Practices
|
|
245
|
+
|
|
246
|
+
**DO:**
|
|
247
|
+
- Write test FIRST, before any implementation
|
|
248
|
+
- Run tests after each change
|
|
249
|
+
- Use table-driven tests for comprehensive coverage
|
|
250
|
+
- Test behavior, not implementation details
|
|
251
|
+
- Include edge cases (empty, nil, max values)
|
|
252
|
+
|
|
253
|
+
**DON'T:**
|
|
254
|
+
- Write implementation before tests
|
|
255
|
+
- Skip the RED phase
|
|
256
|
+
- Test private functions directly
|
|
257
|
+
- Use `time.Sleep` in tests
|
|
258
|
+
- Ignore flaky tests
|
|
259
|
+
|
|
260
|
+
## Related Commands
|
|
261
|
+
|
|
262
|
+
- `/ccp:go-build` - Fix build errors
|
|
263
|
+
- `/ccp:go-review` - Review code after implementation
|
|
264
|
+
- `/ccp:verify` - Run full verification loop
|
|
265
|
+
|
|
266
|
+
## Related
|
|
267
|
+
|
|
268
|
+
- Skill: `skills/golang-testing/`
|
|
269
|
+
- Skill: `skills/tdd-workflow/`
|