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,90 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: blueprint
|
|
3
|
+
description: >-
|
|
4
|
+
Turn a one-line objective into a step-by-step construction plan for
|
|
5
|
+
multi-session, multi-agent engineering projects. Each step has a
|
|
6
|
+
self-contained context brief so a fresh agent can execute it cold.
|
|
7
|
+
Includes adversarial review gate, dependency graph, parallel step
|
|
8
|
+
detection, anti-pattern catalog, and plan mutation protocol.
|
|
9
|
+
TRIGGER when: user requests a plan, blueprint, or roadmap for a
|
|
10
|
+
complex multi-PR task, or describes work that needs multiple sessions.
|
|
11
|
+
DO NOT TRIGGER when: task is completable in a single PR or fewer
|
|
12
|
+
than 3 tool calls, or user says "just do it".
|
|
13
|
+
origin: community
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
# Blueprint — Construction Plan Generator
|
|
17
|
+
|
|
18
|
+
Turn a one-line objective into a step-by-step construction plan that any coding agent can execute cold.
|
|
19
|
+
|
|
20
|
+
## When to Use
|
|
21
|
+
|
|
22
|
+
- Breaking a large feature into multiple PRs with clear dependency order
|
|
23
|
+
- Planning a refactor or migration that spans multiple sessions
|
|
24
|
+
- Coordinating parallel workstreams across sub-agents
|
|
25
|
+
- Any task where context loss between sessions would cause rework
|
|
26
|
+
|
|
27
|
+
**Do not use** for tasks completable in a single PR, fewer than 3 tool calls, or when the user says "just do it."
|
|
28
|
+
|
|
29
|
+
## How It Works
|
|
30
|
+
|
|
31
|
+
Blueprint runs a 5-phase pipeline:
|
|
32
|
+
|
|
33
|
+
1. **Research** — Pre-flight checks (git, gh auth, remote, default branch), then reads project structure, existing plans, and memory files to gather context.
|
|
34
|
+
2. **Design** — Breaks the objective into one-PR-sized steps (3–12 typical). Assigns dependency edges, parallel/serial ordering, model tier (strongest vs default), and rollback strategy per step.
|
|
35
|
+
3. **Draft** — Writes a self-contained Markdown plan file to `plans/`. Every step includes a context brief, task list, verification commands, and exit criteria — so a fresh agent can execute any step without reading prior steps.
|
|
36
|
+
4. **Review** — Delegates adversarial review to a strongest-model sub-agent (e.g., Opus) against a checklist and anti-pattern catalog. Fixes all critical findings before finalizing.
|
|
37
|
+
5. **Register** — Saves the plan, updates memory index, and presents the step count and parallelism summary to the user.
|
|
38
|
+
|
|
39
|
+
Blueprint detects git/gh availability automatically. With git + GitHub CLI, it generates full branch/PR/CI workflow plans. Without them, it switches to direct mode (edit-in-place, no branches).
|
|
40
|
+
|
|
41
|
+
## Examples
|
|
42
|
+
|
|
43
|
+
### Basic usage
|
|
44
|
+
|
|
45
|
+
```
|
|
46
|
+
/blueprint myapp "migrate database to PostgreSQL"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Produces `plans/myapp-migrate-database-to-postgresql.md` with steps like:
|
|
50
|
+
- Step 1: Add PostgreSQL driver and connection config
|
|
51
|
+
- Step 2: Create migration scripts for each table
|
|
52
|
+
- Step 3: Update repository layer to use new driver
|
|
53
|
+
- Step 4: Add integration tests against PostgreSQL
|
|
54
|
+
- Step 5: Remove old database code and config
|
|
55
|
+
|
|
56
|
+
### Multi-agent project
|
|
57
|
+
|
|
58
|
+
```
|
|
59
|
+
/blueprint chatbot "extract LLM providers into a plugin system"
|
|
60
|
+
```
|
|
61
|
+
|
|
62
|
+
Produces a plan with parallel steps where possible (e.g., "implement Anthropic plugin" and "implement OpenAI plugin" run in parallel after the plugin interface step is done), model tier assignments (strongest for the interface design step, default for implementation), and invariants verified after every step (e.g., "all existing tests pass", "no provider imports in core").
|
|
63
|
+
|
|
64
|
+
## Key Features
|
|
65
|
+
|
|
66
|
+
- **Cold-start execution** — Every step includes a self-contained context brief. No prior context needed.
|
|
67
|
+
- **Adversarial review gate** — Every plan is reviewed by a strongest-model sub-agent against a checklist covering completeness, dependency correctness, and anti-pattern detection.
|
|
68
|
+
- **Branch/PR/CI workflow** — Built into every step. Degrades gracefully to direct mode when git/gh is absent.
|
|
69
|
+
- **Parallel step detection** — Dependency graph identifies steps with no shared files or output dependencies.
|
|
70
|
+
- **Plan mutation protocol** — Steps can be split, inserted, skipped, reordered, or abandoned with formal protocols and audit trail.
|
|
71
|
+
- **Zero runtime risk** — Pure Markdown skill. The entire repository contains only `.md` files — no hooks, no shell scripts, no executable code, no `package.json`, no build step. Nothing runs on install or invocation beyond Claude Code's native Markdown skill loader.
|
|
72
|
+
|
|
73
|
+
## Installation
|
|
74
|
+
|
|
75
|
+
This skill ships with Claude Code Pilot. No separate installation is needed.
|
|
76
|
+
|
|
77
|
+
Verify the skill is present with:
|
|
78
|
+
|
|
79
|
+
```bash
|
|
80
|
+
test -f .claude/skills/blueprint/SKILL.md
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Requirements
|
|
84
|
+
|
|
85
|
+
- Claude Code (for `/blueprint` slash command)
|
|
86
|
+
- Git + GitHub CLI (optional — enables full branch/PR/CI workflow; Blueprint detects absence and auto-switches to direct mode)
|
|
87
|
+
|
|
88
|
+
## Source
|
|
89
|
+
|
|
90
|
+
Inspired by antbotlab/blueprint — upstream project and reference design.
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# Browser QA — Automated Visual Testing & Interaction
|
|
2
|
+
|
|
3
|
+
## When to Use
|
|
4
|
+
|
|
5
|
+
- After deploying a feature to staging/preview
|
|
6
|
+
- When you need to verify UI behavior across pages
|
|
7
|
+
- Before shipping — confirm layouts, forms, interactions actually work
|
|
8
|
+
- When reviewing PRs that touch frontend code
|
|
9
|
+
- Accessibility audits and responsive testing
|
|
10
|
+
|
|
11
|
+
## How It Works
|
|
12
|
+
|
|
13
|
+
Uses the browser automation MCP (claude-in-chrome, Playwright, or Puppeteer) to interact with live pages like a real user.
|
|
14
|
+
|
|
15
|
+
### Phase 1: Smoke Test
|
|
16
|
+
```
|
|
17
|
+
1. Navigate to target URL
|
|
18
|
+
2. Check for console errors (filter noise: analytics, third-party)
|
|
19
|
+
3. Verify no 4xx/5xx in network requests
|
|
20
|
+
4. Screenshot above-the-fold on desktop + mobile viewport
|
|
21
|
+
5. Check Core Web Vitals: LCP < 2.5s, CLS < 0.1, INP < 200ms
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
### Phase 2: Interaction Test
|
|
25
|
+
```
|
|
26
|
+
1. Click every nav link — verify no dead links
|
|
27
|
+
2. Submit forms with valid data — verify success state
|
|
28
|
+
3. Submit forms with invalid data — verify error state
|
|
29
|
+
4. Test auth flow: login → protected page → logout
|
|
30
|
+
5. Test critical user journeys (checkout, onboarding, search)
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### Phase 3: Visual Regression
|
|
34
|
+
```
|
|
35
|
+
1. Screenshot key pages at 3 breakpoints (375px, 768px, 1440px)
|
|
36
|
+
2. Compare against baseline screenshots (if stored)
|
|
37
|
+
3. Flag layout shifts > 5px, missing elements, overflow
|
|
38
|
+
4. Check dark mode if applicable
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
### Phase 4: Accessibility
|
|
42
|
+
```
|
|
43
|
+
1. Run axe-core or equivalent on each page
|
|
44
|
+
2. Flag WCAG AA violations (contrast, labels, focus order)
|
|
45
|
+
3. Verify keyboard navigation works end-to-end
|
|
46
|
+
4. Check screen reader landmarks
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
## Output Format
|
|
50
|
+
|
|
51
|
+
```markdown
|
|
52
|
+
## QA Report — [URL] — [timestamp]
|
|
53
|
+
|
|
54
|
+
### Smoke Test
|
|
55
|
+
- Console errors: 0 critical, 2 warnings (analytics noise)
|
|
56
|
+
- Network: all 200/304, no failures
|
|
57
|
+
- Core Web Vitals: LCP 1.2s ✓, CLS 0.02 ✓, INP 89ms ✓
|
|
58
|
+
|
|
59
|
+
### Interactions
|
|
60
|
+
- [✓] Nav links: 12/12 working
|
|
61
|
+
- [✗] Contact form: missing error state for invalid email
|
|
62
|
+
- [✓] Auth flow: login/logout working
|
|
63
|
+
|
|
64
|
+
### Visual
|
|
65
|
+
- [✗] Hero section overflows on 375px viewport
|
|
66
|
+
- [✓] Dark mode: all pages consistent
|
|
67
|
+
|
|
68
|
+
### Accessibility
|
|
69
|
+
- 2 AA violations: missing alt text on hero image, low contrast on footer links
|
|
70
|
+
|
|
71
|
+
### Verdict: SHIP WITH FIXES (2 issues, 0 blockers)
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
## Integration
|
|
75
|
+
|
|
76
|
+
Works with any browser MCP:
|
|
77
|
+
- `mChild__claude-in-chrome__*` tools (preferred — uses your actual Chrome)
|
|
78
|
+
- Playwright via `mcp__browserbase__*`
|
|
79
|
+
- Direct Puppeteer scripts
|
|
80
|
+
|
|
81
|
+
Pair with `/canary-watch` for post-deploy monitoring.
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: bun-runtime
|
|
3
|
+
description: Bun as runtime, package manager, bundler, and test runner. When to choose Bun vs Node, migration notes, and Vercel support.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Bun Runtime
|
|
8
|
+
|
|
9
|
+
Bun is a fast all-in-one JavaScript runtime and toolkit: runtime, package manager, bundler, and test runner.
|
|
10
|
+
|
|
11
|
+
## When to Use
|
|
12
|
+
|
|
13
|
+
- **Prefer Bun** for: new JS/TS projects, scripts where install/run speed matters, Vercel deployments with Bun runtime, and when you want a single toolchain (run + install + test + build).
|
|
14
|
+
- **Prefer Node** for: maximum ecosystem compatibility, legacy tooling that assumes Node, or when a dependency has known Bun issues.
|
|
15
|
+
|
|
16
|
+
Use when: adopting Bun, migrating from Node, writing or debugging Bun scripts/tests, or configuring Bun on Vercel or other platforms.
|
|
17
|
+
|
|
18
|
+
## How It Works
|
|
19
|
+
|
|
20
|
+
- **Runtime**: Drop-in Node-compatible runtime (built on JavaScriptCore, implemented in Zig).
|
|
21
|
+
- **Package manager**: `bun install` is significantly faster than npm/yarn. Lockfile is `bun.lock` (text) by default in current Bun; older versions used `bun.lockb` (binary).
|
|
22
|
+
- **Bundler**: Built-in bundler and transpiler for apps and libraries.
|
|
23
|
+
- **Test runner**: Built-in `bun test` with Jest-like API.
|
|
24
|
+
|
|
25
|
+
**Migration from Node**: Replace `node script.js` with `bun run script.js` or `bun script.js`. Run `bun install` in place of `npm install`; most packages work. Use `bun run` for npm scripts; `bun x` for npx-style one-off runs. Node built-ins are supported; prefer Bun APIs where they exist for better performance.
|
|
26
|
+
|
|
27
|
+
**Vercel**: Set runtime to Bun in project settings. Build: `bun run build` or `bun build ./src/index.ts --outdir=dist`. Install: `bun install --frozen-lockfile` for reproducible deploys.
|
|
28
|
+
|
|
29
|
+
## Examples
|
|
30
|
+
|
|
31
|
+
### Run and install
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
# Install dependencies (creates/updates bun.lock or bun.lockb)
|
|
35
|
+
bun install
|
|
36
|
+
|
|
37
|
+
# Run a script or file
|
|
38
|
+
bun run dev
|
|
39
|
+
bun run src/index.ts
|
|
40
|
+
bun src/index.ts
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
### Scripts and env
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
bun run --env-file=.env dev
|
|
47
|
+
FOO=bar bun run script.ts
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Testing
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
bun test
|
|
54
|
+
bun test --watch
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```typescript
|
|
58
|
+
// test/example.test.ts
|
|
59
|
+
import { expect, test } from "bun:test";
|
|
60
|
+
|
|
61
|
+
test("add", () => {
|
|
62
|
+
expect(1 + 2).toBe(3);
|
|
63
|
+
});
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### Runtime API
|
|
67
|
+
|
|
68
|
+
```typescript
|
|
69
|
+
const file = Bun.file("package.json");
|
|
70
|
+
const json = await file.json();
|
|
71
|
+
|
|
72
|
+
Bun.serve({
|
|
73
|
+
port: 3000,
|
|
74
|
+
fetch(req) {
|
|
75
|
+
return new Response("Hello");
|
|
76
|
+
},
|
|
77
|
+
});
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
## Best Practices
|
|
81
|
+
|
|
82
|
+
- Commit the lockfile (`bun.lock` or `bun.lockb`) for reproducible installs.
|
|
83
|
+
- Prefer `bun run` for scripts. For TypeScript, Bun runs `.ts` natively.
|
|
84
|
+
- Keep dependencies up to date; Bun and the ecosystem evolve quickly.
|
|
@@ -0,0 +1,337 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: claude-api
|
|
3
|
+
description: Anthropic Claude API patterns for Python and TypeScript. Covers Messages API, streaming, tool use, vision, extended thinking, batches, prompt caching, and Claude Agent SDK. Use when building applications with the Claude API or Anthropic SDKs.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Claude API
|
|
8
|
+
|
|
9
|
+
Build applications with the Anthropic Claude API and SDKs.
|
|
10
|
+
|
|
11
|
+
## When to Activate
|
|
12
|
+
|
|
13
|
+
- Building applications that call the Claude API
|
|
14
|
+
- Code imports `anthropic` (Python) or `@anthropic-ai/sdk` (TypeScript)
|
|
15
|
+
- User asks about Claude API patterns, tool use, streaming, or vision
|
|
16
|
+
- Implementing agent workflows with Claude Agent SDK
|
|
17
|
+
- Optimizing API costs, token usage, or latency
|
|
18
|
+
|
|
19
|
+
## Model Selection
|
|
20
|
+
|
|
21
|
+
| Model | ID | Best For |
|
|
22
|
+
|-------|-----|----------|
|
|
23
|
+
| Opus 4.1 | `claude-opus-4-1` | Complex reasoning, architecture, research |
|
|
24
|
+
| Sonnet 4 | `claude-sonnet-4-0` | Balanced coding, most development tasks |
|
|
25
|
+
| Haiku 3.5 | `claude-3-5-haiku-latest` | Fast responses, high-volume, cost-sensitive |
|
|
26
|
+
|
|
27
|
+
Default to Sonnet 4 unless the task requires deep reasoning (Opus) or speed/cost optimization (Haiku). For production, prefer pinned snapshot IDs over aliases.
|
|
28
|
+
|
|
29
|
+
## Python SDK
|
|
30
|
+
|
|
31
|
+
### Installation
|
|
32
|
+
|
|
33
|
+
```bash
|
|
34
|
+
pip install anthropic
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
### Basic Message
|
|
38
|
+
|
|
39
|
+
```python
|
|
40
|
+
import anthropic
|
|
41
|
+
|
|
42
|
+
client = anthropic.Anthropic() # reads ANTHROPIC_API_KEY from env
|
|
43
|
+
|
|
44
|
+
message = client.messages.create(
|
|
45
|
+
model="claude-sonnet-4-0",
|
|
46
|
+
max_tokens=1024,
|
|
47
|
+
messages=[
|
|
48
|
+
{"role": "user", "content": "Explain async/await in Python"}
|
|
49
|
+
]
|
|
50
|
+
)
|
|
51
|
+
print(message.content[0].text)
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
### Streaming
|
|
55
|
+
|
|
56
|
+
```python
|
|
57
|
+
with client.messages.stream(
|
|
58
|
+
model="claude-sonnet-4-0",
|
|
59
|
+
max_tokens=1024,
|
|
60
|
+
messages=[{"role": "user", "content": "Write a haiku about coding"}]
|
|
61
|
+
) as stream:
|
|
62
|
+
for text in stream.text_stream:
|
|
63
|
+
print(text, end="", flush=True)
|
|
64
|
+
```
|
|
65
|
+
|
|
66
|
+
### System Prompt
|
|
67
|
+
|
|
68
|
+
```python
|
|
69
|
+
message = client.messages.create(
|
|
70
|
+
model="claude-sonnet-4-0",
|
|
71
|
+
max_tokens=1024,
|
|
72
|
+
system="You are a senior Python developer. Be concise.",
|
|
73
|
+
messages=[{"role": "user", "content": "Review this function"}]
|
|
74
|
+
)
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## TypeScript SDK
|
|
78
|
+
|
|
79
|
+
### Installation
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
npm install @anthropic-ai/sdk
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Basic Message
|
|
86
|
+
|
|
87
|
+
```typescript
|
|
88
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
89
|
+
|
|
90
|
+
const client = new Anthropic(); // reads ANTHROPIC_API_KEY from env
|
|
91
|
+
|
|
92
|
+
const message = await client.messages.create({
|
|
93
|
+
model: "claude-sonnet-4-0",
|
|
94
|
+
max_tokens: 1024,
|
|
95
|
+
messages: [
|
|
96
|
+
{ role: "user", content: "Explain async/await in TypeScript" }
|
|
97
|
+
],
|
|
98
|
+
});
|
|
99
|
+
console.log(message.content[0].text);
|
|
100
|
+
```
|
|
101
|
+
|
|
102
|
+
### Streaming
|
|
103
|
+
|
|
104
|
+
```typescript
|
|
105
|
+
const stream = client.messages.stream({
|
|
106
|
+
model: "claude-sonnet-4-0",
|
|
107
|
+
max_tokens: 1024,
|
|
108
|
+
messages: [{ role: "user", content: "Write a haiku" }],
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
for await (const event of stream) {
|
|
112
|
+
if (event.type === "content_block_delta" && event.delta.type === "text_delta") {
|
|
113
|
+
process.stdout.write(event.delta.text);
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
## Tool Use
|
|
119
|
+
|
|
120
|
+
Define tools and let Claude call them:
|
|
121
|
+
|
|
122
|
+
```python
|
|
123
|
+
tools = [
|
|
124
|
+
{
|
|
125
|
+
"name": "get_weather",
|
|
126
|
+
"description": "Get current weather for a location",
|
|
127
|
+
"input_schema": {
|
|
128
|
+
"type": "object",
|
|
129
|
+
"properties": {
|
|
130
|
+
"location": {"type": "string", "description": "City name"},
|
|
131
|
+
"unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
|
|
132
|
+
},
|
|
133
|
+
"required": ["location"]
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
]
|
|
137
|
+
|
|
138
|
+
message = client.messages.create(
|
|
139
|
+
model="claude-sonnet-4-0",
|
|
140
|
+
max_tokens=1024,
|
|
141
|
+
tools=tools,
|
|
142
|
+
messages=[{"role": "user", "content": "What's the weather in SF?"}]
|
|
143
|
+
)
|
|
144
|
+
|
|
145
|
+
# Handle tool use response
|
|
146
|
+
for block in message.content:
|
|
147
|
+
if block.type == "tool_use":
|
|
148
|
+
# Execute the tool with block.input
|
|
149
|
+
result = get_weather(**block.input)
|
|
150
|
+
# Send result back
|
|
151
|
+
follow_up = client.messages.create(
|
|
152
|
+
model="claude-sonnet-4-0",
|
|
153
|
+
max_tokens=1024,
|
|
154
|
+
tools=tools,
|
|
155
|
+
messages=[
|
|
156
|
+
{"role": "user", "content": "What's the weather in SF?"},
|
|
157
|
+
{"role": "assistant", "content": message.content},
|
|
158
|
+
{"role": "user", "content": [
|
|
159
|
+
{"type": "tool_result", "tool_use_id": block.id, "content": str(result)}
|
|
160
|
+
]}
|
|
161
|
+
]
|
|
162
|
+
)
|
|
163
|
+
```
|
|
164
|
+
|
|
165
|
+
## Vision
|
|
166
|
+
|
|
167
|
+
Send images for analysis:
|
|
168
|
+
|
|
169
|
+
```python
|
|
170
|
+
import base64
|
|
171
|
+
|
|
172
|
+
with open("diagram.png", "rb") as f:
|
|
173
|
+
image_data = base64.standard_b64encode(f.read()).decode("utf-8")
|
|
174
|
+
|
|
175
|
+
message = client.messages.create(
|
|
176
|
+
model="claude-sonnet-4-0",
|
|
177
|
+
max_tokens=1024,
|
|
178
|
+
messages=[{
|
|
179
|
+
"role": "user",
|
|
180
|
+
"content": [
|
|
181
|
+
{"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": image_data}},
|
|
182
|
+
{"type": "text", "text": "Describe this diagram"}
|
|
183
|
+
]
|
|
184
|
+
}]
|
|
185
|
+
)
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
## Extended Thinking
|
|
189
|
+
|
|
190
|
+
For complex reasoning tasks:
|
|
191
|
+
|
|
192
|
+
```python
|
|
193
|
+
message = client.messages.create(
|
|
194
|
+
model="claude-sonnet-4-0",
|
|
195
|
+
max_tokens=16000,
|
|
196
|
+
thinking={
|
|
197
|
+
"type": "enabled",
|
|
198
|
+
"budget_tokens": 10000
|
|
199
|
+
},
|
|
200
|
+
messages=[{"role": "user", "content": "Solve this math problem step by step..."}]
|
|
201
|
+
)
|
|
202
|
+
|
|
203
|
+
for block in message.content:
|
|
204
|
+
if block.type == "thinking":
|
|
205
|
+
print(f"Thinking: {block.thinking}")
|
|
206
|
+
elif block.type == "text":
|
|
207
|
+
print(f"Answer: {block.text}")
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## Prompt Caching
|
|
211
|
+
|
|
212
|
+
Cache large system prompts or context to reduce costs:
|
|
213
|
+
|
|
214
|
+
```python
|
|
215
|
+
message = client.messages.create(
|
|
216
|
+
model="claude-sonnet-4-0",
|
|
217
|
+
max_tokens=1024,
|
|
218
|
+
system=[
|
|
219
|
+
{"type": "text", "text": large_system_prompt, "cache_control": {"type": "ephemeral"}}
|
|
220
|
+
],
|
|
221
|
+
messages=[{"role": "user", "content": "Question about the cached context"}]
|
|
222
|
+
)
|
|
223
|
+
# Check cache usage
|
|
224
|
+
print(f"Cache read: {message.usage.cache_read_input_tokens}")
|
|
225
|
+
print(f"Cache creation: {message.usage.cache_creation_input_tokens}")
|
|
226
|
+
```
|
|
227
|
+
|
|
228
|
+
## Batches API
|
|
229
|
+
|
|
230
|
+
Process large volumes asynchronously at 50% cost reduction:
|
|
231
|
+
|
|
232
|
+
```python
|
|
233
|
+
import time
|
|
234
|
+
|
|
235
|
+
batch = client.messages.batches.create(
|
|
236
|
+
requests=[
|
|
237
|
+
{
|
|
238
|
+
"custom_id": f"request-{i}",
|
|
239
|
+
"params": {
|
|
240
|
+
"model": "claude-sonnet-4-0",
|
|
241
|
+
"max_tokens": 1024,
|
|
242
|
+
"messages": [{"role": "user", "content": prompt}]
|
|
243
|
+
}
|
|
244
|
+
}
|
|
245
|
+
for i, prompt in enumerate(prompts)
|
|
246
|
+
]
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
# Poll for completion
|
|
250
|
+
while True:
|
|
251
|
+
status = client.messages.batches.retrieve(batch.id)
|
|
252
|
+
if status.processing_status == "ended":
|
|
253
|
+
break
|
|
254
|
+
time.sleep(30)
|
|
255
|
+
|
|
256
|
+
# Get results
|
|
257
|
+
for result in client.messages.batches.results(batch.id):
|
|
258
|
+
print(result.result.message.content[0].text)
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
## Claude Agent SDK
|
|
262
|
+
|
|
263
|
+
Build multi-step agents:
|
|
264
|
+
|
|
265
|
+
```python
|
|
266
|
+
# Note: Agent SDK API surface may change — check official docs
|
|
267
|
+
import anthropic
|
|
268
|
+
|
|
269
|
+
# Define tools as functions
|
|
270
|
+
tools = [{
|
|
271
|
+
"name": "search_codebase",
|
|
272
|
+
"description": "Search the codebase for relevant code",
|
|
273
|
+
"input_schema": {
|
|
274
|
+
"type": "object",
|
|
275
|
+
"properties": {"query": {"type": "string"}},
|
|
276
|
+
"required": ["query"]
|
|
277
|
+
}
|
|
278
|
+
}]
|
|
279
|
+
|
|
280
|
+
# Run an agentic loop with tool use
|
|
281
|
+
client = anthropic.Anthropic()
|
|
282
|
+
messages = [{"role": "user", "content": "Review the auth module for security issues"}]
|
|
283
|
+
|
|
284
|
+
while True:
|
|
285
|
+
response = client.messages.create(
|
|
286
|
+
model="claude-sonnet-4-0",
|
|
287
|
+
max_tokens=4096,
|
|
288
|
+
tools=tools,
|
|
289
|
+
messages=messages,
|
|
290
|
+
)
|
|
291
|
+
if response.stop_reason == "end_turn":
|
|
292
|
+
break
|
|
293
|
+
# Handle tool calls and continue the loop
|
|
294
|
+
messages.append({"role": "assistant", "content": response.content})
|
|
295
|
+
# ... execute tools and append tool_result messages
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
## Cost Optimization
|
|
299
|
+
|
|
300
|
+
| Strategy | Savings | When to Use |
|
|
301
|
+
|----------|---------|-------------|
|
|
302
|
+
| Prompt caching | Up to 90% on cached tokens | Repeated system prompts or context |
|
|
303
|
+
| Batches API | 50% | Non-time-sensitive bulk processing |
|
|
304
|
+
| Haiku instead of Sonnet | ~75% | Simple tasks, classification, extraction |
|
|
305
|
+
| Shorter max_tokens | Variable | When you know output will be short |
|
|
306
|
+
| Streaming | None (same cost) | Better UX, same price |
|
|
307
|
+
|
|
308
|
+
## Error Handling
|
|
309
|
+
|
|
310
|
+
```python
|
|
311
|
+
import time
|
|
312
|
+
|
|
313
|
+
from anthropic import APIError, RateLimitError, APIConnectionError
|
|
314
|
+
|
|
315
|
+
try:
|
|
316
|
+
message = client.messages.create(...)
|
|
317
|
+
except RateLimitError:
|
|
318
|
+
# Back off and retry
|
|
319
|
+
time.sleep(60)
|
|
320
|
+
except APIConnectionError:
|
|
321
|
+
# Network issue, retry with backoff
|
|
322
|
+
pass
|
|
323
|
+
except APIError as e:
|
|
324
|
+
print(f"API error {e.status_code}: {e.message}")
|
|
325
|
+
```
|
|
326
|
+
|
|
327
|
+
## Environment Setup
|
|
328
|
+
|
|
329
|
+
```bash
|
|
330
|
+
# Required
|
|
331
|
+
export ANTHROPIC_API_KEY="your-api-key-here"
|
|
332
|
+
|
|
333
|
+
# Optional: set default model
|
|
334
|
+
export ANTHROPIC_MODEL="claude-sonnet-4-0"
|
|
335
|
+
```
|
|
336
|
+
|
|
337
|
+
Never hardcode API keys. Always use environment variables.
|