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,111 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-flow-ops
|
|
3
|
+
description: Operate execution flow across GitHub and Linear by triaging issues and pull requests, linking active work, and keeping GitHub public-facing while Linear remains the internal execution layer. Use when the user wants backlog control, PR triage, or GitHub-to-Linear coordination.
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Project Flow Ops
|
|
8
|
+
|
|
9
|
+
This skill turns disconnected GitHub issues, PRs, and Linear tasks into one execution flow.
|
|
10
|
+
|
|
11
|
+
Use it when the problem is coordination, not coding.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
- Triage open PR or issue backlogs
|
|
16
|
+
- Decide what belongs in Linear vs what should remain GitHub-only
|
|
17
|
+
- Link active GitHub work to internal execution lanes
|
|
18
|
+
- Classify PRs into merge, port/rebuild, close, or park
|
|
19
|
+
- Audit whether review comments, CI failures, or stale issues are blocking execution
|
|
20
|
+
|
|
21
|
+
## Operating Model
|
|
22
|
+
|
|
23
|
+
- **GitHub** is the public and community truth
|
|
24
|
+
- **Linear** is the internal execution truth for active scheduled work
|
|
25
|
+
- Not every GitHub issue needs a Linear issue
|
|
26
|
+
- Create or update Linear only when the work is:
|
|
27
|
+
- active
|
|
28
|
+
- delegated
|
|
29
|
+
- scheduled
|
|
30
|
+
- cross-functional
|
|
31
|
+
- important enough to track internally
|
|
32
|
+
|
|
33
|
+
## Core Workflow
|
|
34
|
+
|
|
35
|
+
### 1. Read the public surface first
|
|
36
|
+
|
|
37
|
+
Gather:
|
|
38
|
+
|
|
39
|
+
- GitHub issue or PR state
|
|
40
|
+
- author and branch status
|
|
41
|
+
- review comments
|
|
42
|
+
- CI status
|
|
43
|
+
- linked issues
|
|
44
|
+
|
|
45
|
+
### 2. Classify the work
|
|
46
|
+
|
|
47
|
+
Every item should end up in one of these states:
|
|
48
|
+
|
|
49
|
+
| State | Meaning |
|
|
50
|
+
|-------|---------|
|
|
51
|
+
| Merge | self-contained, policy-compliant, ready |
|
|
52
|
+
| Port/Rebuild | useful idea, but should be manually re-landed inside ECC |
|
|
53
|
+
| Close | wrong direction, stale, unsafe, or duplicated |
|
|
54
|
+
| Park | potentially useful, but not scheduled now |
|
|
55
|
+
|
|
56
|
+
### 3. Decide whether Linear is warranted
|
|
57
|
+
|
|
58
|
+
Create or update Linear only if:
|
|
59
|
+
|
|
60
|
+
- execution is actively planned
|
|
61
|
+
- multiple repos or workstreams are involved
|
|
62
|
+
- the work needs internal ownership or sequencing
|
|
63
|
+
- the issue is part of a larger program lane
|
|
64
|
+
|
|
65
|
+
Do not mirror everything mechanically.
|
|
66
|
+
|
|
67
|
+
### 4. Keep the two systems consistent
|
|
68
|
+
|
|
69
|
+
When work is active:
|
|
70
|
+
|
|
71
|
+
- GitHub issue/PR should say what is happening publicly
|
|
72
|
+
- Linear should track owner, priority, and execution lane internally
|
|
73
|
+
|
|
74
|
+
When work ships or is rejected:
|
|
75
|
+
|
|
76
|
+
- post the public resolution back to GitHub
|
|
77
|
+
- mark the Linear task accordingly
|
|
78
|
+
|
|
79
|
+
## Review Rules
|
|
80
|
+
|
|
81
|
+
- Never merge from title, summary, or trust alone; use the full diff
|
|
82
|
+
- External-source features should be rebuilt inside ECC when they are valuable but not self-contained
|
|
83
|
+
- CI red means classify and fix or block; do not pretend it is merge-ready
|
|
84
|
+
- If the real blocker is product direction, say so instead of hiding behind tooling
|
|
85
|
+
|
|
86
|
+
## Output Format
|
|
87
|
+
|
|
88
|
+
Return:
|
|
89
|
+
|
|
90
|
+
```text
|
|
91
|
+
PUBLIC STATUS
|
|
92
|
+
- issue / PR state
|
|
93
|
+
- CI / review state
|
|
94
|
+
|
|
95
|
+
CLASSIFICATION
|
|
96
|
+
- merge / port-rebuild / close / park
|
|
97
|
+
- one-paragraph rationale
|
|
98
|
+
|
|
99
|
+
LINEAR ACTION
|
|
100
|
+
- create / update / no Linear item needed
|
|
101
|
+
- project / lane if applicable
|
|
102
|
+
|
|
103
|
+
NEXT OPERATOR ACTION
|
|
104
|
+
- exact next move
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
## Good Use Cases
|
|
108
|
+
|
|
109
|
+
- "Audit the open PR backlog and tell me what to merge vs rebuild"
|
|
110
|
+
- "Map GitHub issues into our ECC 1.x and ECC 2.0 program lanes"
|
|
111
|
+
- "Check whether this needs a Linear issue or should stay GitHub-only"
|
|
@@ -0,0 +1,349 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: project-guidelines-example
|
|
3
|
+
description: "Example project-specific skill template based on a real production application."
|
|
4
|
+
origin: ECC
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Project Guidelines Skill (Example)
|
|
8
|
+
|
|
9
|
+
This is an example of a project-specific skill. Use this as a template for your own projects.
|
|
10
|
+
|
|
11
|
+
Based on a real production application: [Zenith](https://zenith.chat) - AI-powered customer discovery platform.
|
|
12
|
+
|
|
13
|
+
## When to Use
|
|
14
|
+
|
|
15
|
+
Reference this skill when working on the specific project it's designed for. Project skills contain:
|
|
16
|
+
- Architecture overview
|
|
17
|
+
- File structure
|
|
18
|
+
- Code patterns
|
|
19
|
+
- Testing requirements
|
|
20
|
+
- Deployment workflow
|
|
21
|
+
|
|
22
|
+
---
|
|
23
|
+
|
|
24
|
+
## Architecture Overview
|
|
25
|
+
|
|
26
|
+
**Tech Stack:**
|
|
27
|
+
- **Frontend**: Next.js 15 (App Router), TypeScript, React
|
|
28
|
+
- **Backend**: FastAPI (Python), Pydantic models
|
|
29
|
+
- **Database**: Supabase (PostgreSQL)
|
|
30
|
+
- **AI**: Claude API with tool calling and structured output
|
|
31
|
+
- **Deployment**: Google Cloud Run
|
|
32
|
+
- **Testing**: Playwright (E2E), pytest (backend), React Testing Library
|
|
33
|
+
|
|
34
|
+
**Services:**
|
|
35
|
+
```
|
|
36
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
37
|
+
│ Frontend │
|
|
38
|
+
│ Next.js 15 + TypeScript + TailwindCSS │
|
|
39
|
+
│ Deployed: Vercel / Cloud Run │
|
|
40
|
+
└─────────────────────────────────────────────────────────────┘
|
|
41
|
+
│
|
|
42
|
+
▼
|
|
43
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
44
|
+
│ Backend │
|
|
45
|
+
│ FastAPI + Python 3.11 + Pydantic │
|
|
46
|
+
│ Deployed: Cloud Run │
|
|
47
|
+
└─────────────────────────────────────────────────────────────┘
|
|
48
|
+
│
|
|
49
|
+
┌───────────────┼───────────────┐
|
|
50
|
+
▼ ▼ ▼
|
|
51
|
+
┌──────────┐ ┌──────────┐ ┌──────────┐
|
|
52
|
+
│ Supabase │ │ Claude │ │ Redis │
|
|
53
|
+
│ Database │ │ API │ │ Cache │
|
|
54
|
+
└──────────┘ └──────────┘ └──────────┘
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
---
|
|
58
|
+
|
|
59
|
+
## File Structure
|
|
60
|
+
|
|
61
|
+
```
|
|
62
|
+
project/
|
|
63
|
+
├── frontend/
|
|
64
|
+
│ └── src/
|
|
65
|
+
│ ├── app/ # Next.js app router pages
|
|
66
|
+
│ │ ├── api/ # API routes
|
|
67
|
+
│ │ ├── (auth)/ # Auth-protected routes
|
|
68
|
+
│ │ └── workspace/ # Main app workspace
|
|
69
|
+
│ ├── components/ # React components
|
|
70
|
+
│ │ ├── ui/ # Base UI components
|
|
71
|
+
│ │ ├── forms/ # Form components
|
|
72
|
+
│ │ └── layouts/ # Layout components
|
|
73
|
+
│ ├── hooks/ # Custom React hooks
|
|
74
|
+
│ ├── lib/ # Utilities
|
|
75
|
+
│ ├── types/ # TypeScript definitions
|
|
76
|
+
│ └── config/ # Configuration
|
|
77
|
+
│
|
|
78
|
+
├── backend/
|
|
79
|
+
│ ├── routers/ # FastAPI route handlers
|
|
80
|
+
│ ├── models.py # Pydantic models
|
|
81
|
+
│ ├── main.py # FastAPI app entry
|
|
82
|
+
│ ├── auth_system.py # Authentication
|
|
83
|
+
│ ├── database.py # Database operations
|
|
84
|
+
│ ├── services/ # Business logic
|
|
85
|
+
│ └── tests/ # pytest tests
|
|
86
|
+
│
|
|
87
|
+
├── deploy/ # Deployment configs
|
|
88
|
+
├── docs/ # Documentation
|
|
89
|
+
└── scripts/ # Utility scripts
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
---
|
|
93
|
+
|
|
94
|
+
## Code Patterns
|
|
95
|
+
|
|
96
|
+
### API Response Format (FastAPI)
|
|
97
|
+
|
|
98
|
+
```python
|
|
99
|
+
from pydantic import BaseModel
|
|
100
|
+
from typing import Generic, TypeVar, Optional
|
|
101
|
+
|
|
102
|
+
T = TypeVar('T')
|
|
103
|
+
|
|
104
|
+
class ApiResponse(BaseModel, Generic[T]):
|
|
105
|
+
success: bool
|
|
106
|
+
data: Optional[T] = None
|
|
107
|
+
error: Optional[str] = None
|
|
108
|
+
|
|
109
|
+
@classmethod
|
|
110
|
+
def ok(cls, data: T) -> "ApiResponse[T]":
|
|
111
|
+
return cls(success=True, data=data)
|
|
112
|
+
|
|
113
|
+
@classmethod
|
|
114
|
+
def fail(cls, error: str) -> "ApiResponse[T]":
|
|
115
|
+
return cls(success=False, error=error)
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
### Frontend API Calls (TypeScript)
|
|
119
|
+
|
|
120
|
+
```typescript
|
|
121
|
+
interface ApiResponse<T> {
|
|
122
|
+
success: boolean
|
|
123
|
+
data?: T
|
|
124
|
+
error?: string
|
|
125
|
+
}
|
|
126
|
+
|
|
127
|
+
async function fetchApi<T>(
|
|
128
|
+
endpoint: string,
|
|
129
|
+
options?: RequestInit
|
|
130
|
+
): Promise<ApiResponse<T>> {
|
|
131
|
+
try {
|
|
132
|
+
const response = await fetch(`/api${endpoint}`, {
|
|
133
|
+
...options,
|
|
134
|
+
headers: {
|
|
135
|
+
'Content-Type': 'application/json',
|
|
136
|
+
...options?.headers,
|
|
137
|
+
},
|
|
138
|
+
})
|
|
139
|
+
|
|
140
|
+
if (!response.ok) {
|
|
141
|
+
return { success: false, error: `HTTP ${response.status}` }
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
return await response.json()
|
|
145
|
+
} catch (error) {
|
|
146
|
+
return { success: false, error: String(error) }
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
### Claude AI Integration (Structured Output)
|
|
152
|
+
|
|
153
|
+
```python
|
|
154
|
+
from anthropic import Anthropic
|
|
155
|
+
from pydantic import BaseModel
|
|
156
|
+
|
|
157
|
+
class AnalysisResult(BaseModel):
|
|
158
|
+
summary: str
|
|
159
|
+
key_points: list[str]
|
|
160
|
+
confidence: float
|
|
161
|
+
|
|
162
|
+
async def analyze_with_claude(content: str) -> AnalysisResult:
|
|
163
|
+
client = Anthropic()
|
|
164
|
+
|
|
165
|
+
response = client.messages.create(
|
|
166
|
+
model="claude-sonnet-4-5-20250514",
|
|
167
|
+
max_tokens=1024,
|
|
168
|
+
messages=[{"role": "user", "content": content}],
|
|
169
|
+
tools=[{
|
|
170
|
+
"name": "provide_analysis",
|
|
171
|
+
"description": "Provide structured analysis",
|
|
172
|
+
"input_schema": AnalysisResult.model_json_schema()
|
|
173
|
+
}],
|
|
174
|
+
tool_choice={"type": "tool", "name": "provide_analysis"}
|
|
175
|
+
)
|
|
176
|
+
|
|
177
|
+
# Extract tool use result
|
|
178
|
+
tool_use = next(
|
|
179
|
+
block for block in response.content
|
|
180
|
+
if block.type == "tool_use"
|
|
181
|
+
)
|
|
182
|
+
|
|
183
|
+
return AnalysisResult(**tool_use.input)
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
### Custom Hooks (React)
|
|
187
|
+
|
|
188
|
+
```typescript
|
|
189
|
+
import { useState, useCallback } from 'react'
|
|
190
|
+
|
|
191
|
+
interface UseApiState<T> {
|
|
192
|
+
data: T | null
|
|
193
|
+
loading: boolean
|
|
194
|
+
error: string | null
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
export function useApi<T>(
|
|
198
|
+
fetchFn: () => Promise<ApiResponse<T>>
|
|
199
|
+
) {
|
|
200
|
+
const [state, setState] = useState<UseApiState<T>>({
|
|
201
|
+
data: null,
|
|
202
|
+
loading: false,
|
|
203
|
+
error: null,
|
|
204
|
+
})
|
|
205
|
+
|
|
206
|
+
const execute = useCallback(async () => {
|
|
207
|
+
setState(prev => ({ ...prev, loading: true, error: null }))
|
|
208
|
+
|
|
209
|
+
const result = await fetchFn()
|
|
210
|
+
|
|
211
|
+
if (result.success) {
|
|
212
|
+
setState({ data: result.data!, loading: false, error: null })
|
|
213
|
+
} else {
|
|
214
|
+
setState({ data: null, loading: false, error: result.error! })
|
|
215
|
+
}
|
|
216
|
+
}, [fetchFn])
|
|
217
|
+
|
|
218
|
+
return { ...state, execute }
|
|
219
|
+
}
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
---
|
|
223
|
+
|
|
224
|
+
## Testing Requirements
|
|
225
|
+
|
|
226
|
+
### Backend (pytest)
|
|
227
|
+
|
|
228
|
+
```bash
|
|
229
|
+
# Run all tests
|
|
230
|
+
poetry run pytest tests/
|
|
231
|
+
|
|
232
|
+
# Run with coverage
|
|
233
|
+
poetry run pytest tests/ --cov=. --cov-report=html
|
|
234
|
+
|
|
235
|
+
# Run specific test file
|
|
236
|
+
poetry run pytest tests/test_auth.py -v
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
**Test structure:**
|
|
240
|
+
```python
|
|
241
|
+
import pytest
|
|
242
|
+
from httpx import AsyncClient
|
|
243
|
+
from main import app
|
|
244
|
+
|
|
245
|
+
@pytest.fixture
|
|
246
|
+
async def client():
|
|
247
|
+
async with AsyncClient(app=app, base_url="http://test") as ac:
|
|
248
|
+
yield ac
|
|
249
|
+
|
|
250
|
+
@pytest.mark.asyncio
|
|
251
|
+
async def test_health_check(client: AsyncClient):
|
|
252
|
+
response = await client.get("/health")
|
|
253
|
+
assert response.status_code == 200
|
|
254
|
+
assert response.json()["status"] == "healthy"
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### Frontend (React Testing Library)
|
|
258
|
+
|
|
259
|
+
```bash
|
|
260
|
+
# Run tests
|
|
261
|
+
npm run test
|
|
262
|
+
|
|
263
|
+
# Run with coverage
|
|
264
|
+
npm run test -- --coverage
|
|
265
|
+
|
|
266
|
+
# Run E2E tests
|
|
267
|
+
npm run test:e2e
|
|
268
|
+
```
|
|
269
|
+
|
|
270
|
+
**Test structure:**
|
|
271
|
+
```typescript
|
|
272
|
+
import { render, screen, fireEvent } from '@testing-library/react'
|
|
273
|
+
import { WorkspacePanel } from './WorkspacePanel'
|
|
274
|
+
|
|
275
|
+
describe('WorkspacePanel', () => {
|
|
276
|
+
it('renders workspace correctly', () => {
|
|
277
|
+
render(<WorkspacePanel />)
|
|
278
|
+
expect(screen.getByRole('main')).toBeInTheDocument()
|
|
279
|
+
})
|
|
280
|
+
|
|
281
|
+
it('handles session creation', async () => {
|
|
282
|
+
render(<WorkspacePanel />)
|
|
283
|
+
fireEvent.click(screen.getByText('New Session'))
|
|
284
|
+
expect(await screen.findByText('Session created')).toBeInTheDocument()
|
|
285
|
+
})
|
|
286
|
+
})
|
|
287
|
+
```
|
|
288
|
+
|
|
289
|
+
---
|
|
290
|
+
|
|
291
|
+
## Deployment Workflow
|
|
292
|
+
|
|
293
|
+
### Pre-Deployment Checklist
|
|
294
|
+
|
|
295
|
+
- [ ] All tests passing locally
|
|
296
|
+
- [ ] `npm run build` succeeds (frontend)
|
|
297
|
+
- [ ] `poetry run pytest` passes (backend)
|
|
298
|
+
- [ ] No hardcoded secrets
|
|
299
|
+
- [ ] Environment variables documented
|
|
300
|
+
- [ ] Database migrations ready
|
|
301
|
+
|
|
302
|
+
### Deployment Commands
|
|
303
|
+
|
|
304
|
+
```bash
|
|
305
|
+
# Build and deploy frontend
|
|
306
|
+
cd frontend && npm run build
|
|
307
|
+
gcloud run deploy frontend --source .
|
|
308
|
+
|
|
309
|
+
# Build and deploy backend
|
|
310
|
+
cd backend
|
|
311
|
+
gcloud run deploy backend --source .
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
### Environment Variables
|
|
315
|
+
|
|
316
|
+
```bash
|
|
317
|
+
# Frontend (.env.local)
|
|
318
|
+
NEXT_PUBLIC_API_URL=https://api.example.com
|
|
319
|
+
NEXT_PUBLIC_SUPABASE_URL=https://xxx.supabase.co
|
|
320
|
+
NEXT_PUBLIC_SUPABASE_ANON_KEY=eyJ...
|
|
321
|
+
|
|
322
|
+
# Backend (.env)
|
|
323
|
+
DATABASE_URL=postgresql://...
|
|
324
|
+
ANTHROPIC_API_KEY=sk-ant-...
|
|
325
|
+
SUPABASE_URL=https://xxx.supabase.co
|
|
326
|
+
SUPABASE_KEY=eyJ...
|
|
327
|
+
```
|
|
328
|
+
|
|
329
|
+
---
|
|
330
|
+
|
|
331
|
+
## Critical Rules
|
|
332
|
+
|
|
333
|
+
1. **No emojis** in code, comments, or documentation
|
|
334
|
+
2. **Immutability** - never mutate objects or arrays
|
|
335
|
+
3. **TDD** - write tests before implementation
|
|
336
|
+
4. **80% coverage** minimum
|
|
337
|
+
5. **Many small files** - 200-400 lines typical, 800 max
|
|
338
|
+
6. **No console.log** in production code
|
|
339
|
+
7. **Proper error handling** with try/catch
|
|
340
|
+
8. **Input validation** with Pydantic/Zod
|
|
341
|
+
|
|
342
|
+
---
|
|
343
|
+
|
|
344
|
+
## Related Skills
|
|
345
|
+
|
|
346
|
+
- `coding-standards.md` - General coding best practices
|
|
347
|
+
- `backend-patterns.md` - API and database patterns
|
|
348
|
+
- `frontend-patterns.md` - React and Next.js patterns
|
|
349
|
+
- `tdd-workflow/` - Test-driven development methodology
|