claude-code-pilot 2.0.0 → 3.0.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.
Files changed (455) hide show
  1. package/bin/install.js +267 -250
  2. package/manifest.json +5 -18
  3. package/package.json +5 -7
  4. package/src/agents/build-error-resolver.md +114 -0
  5. package/src/agents/ccp-advisor-researcher.md +104 -0
  6. package/src/agents/ccp-assumptions-analyzer.md +105 -0
  7. package/{gsd/agents/gsd-codebase-mapper.md → src/agents/ccp-codebase-mapper.md} +7 -7
  8. package/{gsd/agents/gsd-debugger.md → src/agents/ccp-debugger.md} +125 -8
  9. package/{gsd/agents/gsd-executor.md → src/agents/ccp-executor.md} +31 -20
  10. package/{gsd/agents/gsd-integration-checker.md → src/agents/ccp-integration-checker.md} +2 -2
  11. package/{gsd/agents/gsd-nyquist-auditor.md → src/agents/ccp-nyquist-auditor.md} +3 -3
  12. package/{gsd/agents/gsd-phase-researcher.md → src/agents/ccp-phase-researcher.md} +127 -13
  13. package/{gsd/agents/gsd-plan-checker.md → src/agents/ccp-plan-checker.md} +57 -21
  14. package/{gsd/agents/gsd-planner.md → src/agents/ccp-planner.md} +61 -23
  15. package/{gsd/agents/gsd-project-researcher.md → src/agents/ccp-project-researcher.md} +33 -6
  16. package/{gsd/agents/gsd-research-synthesizer.md → src/agents/ccp-research-synthesizer.md} +11 -11
  17. package/{gsd/agents/gsd-roadmapper.md → src/agents/ccp-roadmapper.md} +39 -10
  18. package/src/agents/ccp-ui-auditor.md +439 -0
  19. package/src/agents/ccp-ui-checker.md +300 -0
  20. package/src/agents/ccp-ui-researcher.md +357 -0
  21. package/{gsd/agents/gsd-verifier.md → src/agents/ccp-verifier.md} +81 -15
  22. package/src/agents/cpp-build-resolver.md +90 -0
  23. package/src/agents/cpp-reviewer.md +72 -0
  24. package/src/agents/database-reviewer.md +91 -0
  25. package/src/agents/docs-lookup.md +68 -0
  26. package/src/agents/flutter-reviewer.md +243 -0
  27. package/src/agents/go-build-resolver.md +94 -0
  28. package/src/agents/go-reviewer.md +76 -0
  29. package/src/agents/java-build-resolver.md +153 -0
  30. package/src/agents/java-reviewer.md +92 -0
  31. package/src/agents/kotlin-build-resolver.md +118 -0
  32. package/src/agents/kotlin-reviewer.md +159 -0
  33. package/src/agents/planner.md +212 -0
  34. package/src/agents/python-reviewer.md +98 -0
  35. package/src/agents/pytorch-build-resolver.md +120 -0
  36. package/src/agents/refactor-cleaner.md +85 -0
  37. package/src/agents/rust-build-resolver.md +148 -0
  38. package/src/agents/rust-reviewer.md +94 -0
  39. package/src/agents/typescript-reviewer.md +112 -0
  40. package/src/available-rules/README.md +80 -0
  41. package/src/available-rules/cpp/coding-style.md +44 -0
  42. package/src/available-rules/cpp/hooks.md +39 -0
  43. package/src/available-rules/cpp/patterns.md +51 -0
  44. package/src/available-rules/cpp/security.md +51 -0
  45. package/src/available-rules/cpp/testing.md +44 -0
  46. package/src/available-rules/csharp/coding-style.md +72 -0
  47. package/src/available-rules/csharp/hooks.md +25 -0
  48. package/src/available-rules/csharp/patterns.md +50 -0
  49. package/src/available-rules/csharp/security.md +58 -0
  50. package/src/available-rules/csharp/testing.md +46 -0
  51. package/src/available-rules/java/coding-style.md +114 -0
  52. package/src/available-rules/java/hooks.md +18 -0
  53. package/src/available-rules/java/patterns.md +146 -0
  54. package/src/available-rules/java/security.md +100 -0
  55. package/src/available-rules/java/testing.md +131 -0
  56. package/src/available-rules/kotlin/hooks.md +17 -0
  57. package/src/available-rules/rust/coding-style.md +151 -0
  58. package/src/available-rules/rust/hooks.md +16 -0
  59. package/src/available-rules/rust/patterns.md +168 -0
  60. package/src/available-rules/rust/security.md +141 -0
  61. package/src/available-rules/rust/testing.md +154 -0
  62. package/src/commands/aside.md +164 -0
  63. package/src/commands/build-fix.md +62 -0
  64. package/src/commands/ccp/add-backlog.md +76 -0
  65. package/{gsd/commands-gsd → src/commands/ccp}/add-phase.md +3 -3
  66. package/{gsd/commands-gsd → src/commands/ccp}/add-tests.md +5 -5
  67. package/{gsd/commands-gsd → src/commands/ccp}/add-todo.md +4 -4
  68. package/{gsd/commands-gsd → src/commands/ccp}/audit-milestone.md +3 -3
  69. package/src/commands/ccp/audit-uat.md +24 -0
  70. package/src/commands/ccp/autonomous.md +41 -0
  71. package/{gsd/commands-gsd → src/commands/ccp}/check-todos.md +3 -3
  72. package/{gsd/commands-gsd → src/commands/ccp}/cleanup.md +3 -3
  73. package/{gsd/commands-gsd → src/commands/ccp}/complete-milestone.md +9 -9
  74. package/{gsd/commands-gsd → src/commands/ccp}/debug.md +14 -9
  75. package/src/commands/ccp/discuss-phase.md +64 -0
  76. package/src/commands/ccp/do.md +30 -0
  77. package/src/commands/ccp/execute-phase.md +59 -0
  78. package/src/commands/ccp/fast.md +30 -0
  79. package/src/commands/ccp/forensics.md +56 -0
  80. package/{gsd/commands-gsd → src/commands/ccp}/health.md +3 -3
  81. package/{gsd/commands-gsd → src/commands/ccp}/help.md +5 -5
  82. package/{gsd/commands-gsd → src/commands/ccp}/insert-phase.md +3 -3
  83. package/{gsd/commands-gsd → src/commands/ccp}/list-phase-assumptions.md +2 -2
  84. package/src/commands/ccp/manager.md +39 -0
  85. package/{gsd/commands-gsd → src/commands/ccp}/map-codebase.md +7 -7
  86. package/src/commands/ccp/milestone-summary.md +51 -0
  87. package/{gsd/commands-gsd → src/commands/ccp}/new-milestone.md +8 -8
  88. package/{gsd/commands-gsd → src/commands/ccp}/new-project.md +8 -8
  89. package/src/commands/ccp/next.md +24 -0
  90. package/src/commands/ccp/note.md +34 -0
  91. package/{gsd/commands-gsd → src/commands/ccp}/pause-work.md +3 -3
  92. package/{gsd/commands-gsd → src/commands/ccp}/plan-milestone-gaps.md +5 -5
  93. package/{gsd/commands-gsd → src/commands/ccp}/plan-phase.md +9 -7
  94. package/src/commands/ccp/plant-seed.md +28 -0
  95. package/src/commands/ccp/pr-branch.md +25 -0
  96. package/{gsd/commands-gsd → src/commands/ccp}/progress.md +3 -3
  97. package/{gsd/commands-gsd → src/commands/ccp}/quick.md +10 -8
  98. package/{gsd/commands-gsd → src/commands/ccp}/remove-phase.md +3 -3
  99. package/{gsd/commands-gsd → src/commands/ccp}/research-phase.md +17 -12
  100. package/{gsd/commands-gsd → src/commands/ccp}/resume-work.md +3 -3
  101. package/src/commands/ccp/review-backlog.md +61 -0
  102. package/src/commands/ccp/session-report.md +19 -0
  103. package/src/commands/ccp/set-profile.md +12 -0
  104. package/{gsd/commands-gsd → src/commands/ccp}/settings.md +5 -5
  105. package/src/commands/ccp/ship.md +23 -0
  106. package/src/commands/ccp/stats.md +18 -0
  107. package/src/commands/ccp/thread.md +127 -0
  108. package/src/commands/ccp/ui-phase.md +34 -0
  109. package/src/commands/ccp/ui-review.md +32 -0
  110. package/{gsd/commands-gsd → src/commands/ccp}/update.md +5 -5
  111. package/{gsd/commands-gsd → src/commands/ccp}/validate-phase.md +3 -3
  112. package/{gsd/commands-gsd → src/commands/ccp}/verify-work.md +5 -5
  113. package/src/commands/code-review.md +40 -0
  114. package/src/commands/context-budget.md +29 -0
  115. package/src/commands/cpp-build.md +173 -0
  116. package/src/commands/cpp-review.md +132 -0
  117. package/src/commands/cpp-test.md +251 -0
  118. package/src/commands/docs.md +31 -0
  119. package/src/commands/e2e.md +364 -0
  120. package/src/commands/eval.md +120 -0
  121. package/{ecc → src}/commands/evolve.md +2 -2
  122. package/src/commands/go-build.md +183 -0
  123. package/src/commands/go-review.md +148 -0
  124. package/src/commands/go-test.md +268 -0
  125. package/src/commands/gradle-build.md +70 -0
  126. package/src/commands/harness-audit.md +71 -0
  127. package/src/commands/kotlin-build.md +174 -0
  128. package/src/commands/kotlin-review.md +140 -0
  129. package/src/commands/kotlin-test.md +312 -0
  130. package/src/commands/orchestrate.md +231 -0
  131. package/src/commands/plan.md +114 -0
  132. package/src/commands/prompt-optimize.md +38 -0
  133. package/src/commands/prune.md +25 -0
  134. package/src/commands/python-review.md +297 -0
  135. package/{ecc → src}/commands/quality-gate.md +1 -1
  136. package/src/commands/refactor-clean.md +80 -0
  137. package/src/commands/rules-distill.md +11 -0
  138. package/src/commands/rust-build.md +187 -0
  139. package/src/commands/rust-review.md +142 -0
  140. package/src/commands/rust-test.md +308 -0
  141. package/{ecc → src}/commands/sessions.md +10 -10
  142. package/src/commands/setup-pm.md +80 -0
  143. package/{kit → src}/commands/setup.md +45 -19
  144. package/src/commands/skill-create.md +172 -0
  145. package/src/commands/skill-health.md +51 -0
  146. package/src/commands/tdd.md +328 -0
  147. package/src/commands/test-coverage.md +69 -0
  148. package/src/commands/update-codemaps.md +72 -0
  149. package/src/commands/update-docs.md +84 -0
  150. package/{gsd/hooks/gsd-context-monitor.js → src/hooks/ccp-context-monitor.js} +3 -3
  151. package/src/hooks/ccp-prompt-guard.js +96 -0
  152. package/{gsd/hooks/gsd-statusline.js → src/hooks/ccp-statusline.js} +7 -7
  153. package/src/hooks/ccp-workflow-guard.js +94 -0
  154. package/src/hooks/config-protection.js +141 -0
  155. package/{kit → src}/hooks/kit-check-update.js +7 -4
  156. package/src/hooks/mcp-health-check.js +620 -0
  157. package/{ecc/scripts → src}/hooks/run-with-flags-shell.sh +1 -1
  158. package/{ecc/scripts → src}/hooks/run-with-flags.js +74 -13
  159. package/src/hooks/session-end-marker.js +29 -0
  160. package/{ecc/scripts → src}/hooks/session-end.js +83 -40
  161. package/{ecc/scripts → src}/hooks/session-start.js +75 -9
  162. package/{ecc/scripts → src}/lib/hook-flags.js +8 -4
  163. package/{ecc/scripts → src}/lib/project-detect.js +2 -1
  164. package/{ecc/scripts → src}/lib/session-manager.d.ts +5 -1
  165. package/{ecc/scripts → src}/lib/session-manager.js +202 -92
  166. package/{ecc/scripts → src}/lib/utils.d.ts +23 -1
  167. package/{ecc/scripts → src}/lib/utils.js +91 -3
  168. package/{gsd/get-shit-done/bin/gsd-tools.cjs → src/pilot/bin/ccp-tools.cjs} +257 -86
  169. package/{gsd/get-shit-done → src/pilot}/bin/lib/commands.cjs +1 -1
  170. package/src/pilot/bin/lib/config.cjs +444 -0
  171. package/src/pilot/bin/lib/core.cjs +1190 -0
  172. package/src/pilot/bin/lib/init.cjs +1281 -0
  173. package/src/pilot/bin/lib/model-profiles.cjs +67 -0
  174. package/{gsd/get-shit-done → src/pilot}/bin/lib/phase.cjs +2 -2
  175. package/src/pilot/bin/lib/security.cjs +382 -0
  176. package/{gsd/get-shit-done → src/pilot}/bin/lib/state.cjs +1 -1
  177. package/src/pilot/bin/lib/uat.cjs +282 -0
  178. package/{gsd/get-shit-done → src/pilot}/bin/lib/verify.cjs +10 -10
  179. package/{gsd/get-shit-done → src/pilot}/references/continuation-format.md +16 -16
  180. package/{gsd/get-shit-done → src/pilot}/references/decimal-phase-calculation.md +5 -5
  181. package/{gsd/get-shit-done → src/pilot}/references/git-integration.md +5 -5
  182. package/{gsd/get-shit-done → src/pilot}/references/git-planning-commit.md +4 -4
  183. package/src/pilot/references/mcp-servers.json +153 -0
  184. package/{gsd/get-shit-done → src/pilot}/references/model-profile-resolution.md +2 -2
  185. package/{gsd/get-shit-done → src/pilot}/references/model-profiles.md +20 -20
  186. package/{gsd/get-shit-done → src/pilot}/references/phase-argument-parsing.md +4 -4
  187. package/{gsd/get-shit-done → src/pilot}/references/planning-config.md +15 -15
  188. package/{gsd/get-shit-done → src/pilot}/references/ui-brand.md +5 -5
  189. package/{gsd/get-shit-done → src/pilot}/references/verification-patterns.md +1 -1
  190. package/{gsd/get-shit-done → src/pilot}/templates/DEBUG.md +1 -1
  191. package/{gsd/get-shit-done → src/pilot}/templates/UAT.md +3 -3
  192. package/src/pilot/templates/UI-SPEC.md +100 -0
  193. package/{gsd/get-shit-done → src/pilot}/templates/VALIDATION.md +1 -1
  194. package/src/pilot/templates/claude-md.md +122 -0
  195. package/{gsd/get-shit-done → src/pilot}/templates/codebase/architecture.md +2 -2
  196. package/{gsd/get-shit-done → src/pilot}/templates/codebase/structure.md +13 -13
  197. package/{gsd/get-shit-done → src/pilot}/templates/context.md +4 -4
  198. package/src/pilot/templates/copilot-instructions.md +7 -0
  199. package/{gsd/get-shit-done → src/pilot}/templates/debug-subagent-prompt.md +4 -4
  200. package/src/pilot/templates/dev-preferences.md +21 -0
  201. package/{gsd/get-shit-done → src/pilot}/templates/discovery.md +2 -2
  202. package/src/pilot/templates/discussion-log.md +63 -0
  203. package/{gsd/get-shit-done → src/pilot}/templates/phase-prompt.md +12 -12
  204. package/{gsd/get-shit-done → src/pilot}/templates/planner-subagent-prompt.md +7 -7
  205. package/{gsd/get-shit-done → src/pilot}/templates/project.md +1 -1
  206. package/{gsd/get-shit-done → src/pilot}/templates/research.md +2 -2
  207. package/{gsd/get-shit-done → src/pilot}/templates/state.md +2 -2
  208. package/{gsd/get-shit-done → src/pilot}/templates/summary-complex.md +1 -1
  209. package/{gsd/get-shit-done → src/pilot}/workflows/add-phase.md +11 -11
  210. package/{gsd/get-shit-done → src/pilot}/workflows/add-tests.md +15 -15
  211. package/{gsd/get-shit-done → src/pilot}/workflows/add-todo.md +7 -7
  212. package/{gsd/get-shit-done → src/pilot}/workflows/audit-milestone.md +24 -16
  213. package/src/pilot/workflows/audit-uat.md +109 -0
  214. package/src/pilot/workflows/autonomous.md +891 -0
  215. package/{gsd/get-shit-done → src/pilot}/workflows/check-todos.md +10 -10
  216. package/{gsd/get-shit-done → src/pilot}/workflows/cleanup.md +3 -3
  217. package/{gsd/get-shit-done → src/pilot}/workflows/complete-milestone.md +19 -16
  218. package/{gsd/get-shit-done → src/pilot}/workflows/diagnose-issues.md +9 -4
  219. package/{gsd/get-shit-done → src/pilot}/workflows/discovery-phase.md +8 -8
  220. package/src/pilot/workflows/discuss-phase-assumptions.md +653 -0
  221. package/{gsd/get-shit-done → src/pilot}/workflows/discuss-phase.md +407 -49
  222. package/src/pilot/workflows/do.md +104 -0
  223. package/src/pilot/workflows/execute-phase.md +821 -0
  224. package/{gsd/get-shit-done → src/pilot}/workflows/execute-plan.md +79 -28
  225. package/src/pilot/workflows/fast.md +105 -0
  226. package/src/pilot/workflows/forensics.md +265 -0
  227. package/{gsd/get-shit-done → src/pilot}/workflows/health.md +34 -11
  228. package/src/pilot/workflows/help.md +775 -0
  229. package/{gsd/get-shit-done → src/pilot}/workflows/insert-phase.md +10 -10
  230. package/{gsd/get-shit-done → src/pilot}/workflows/list-phase-assumptions.md +4 -4
  231. package/src/pilot/workflows/manager.md +362 -0
  232. package/{gsd/get-shit-done → src/pilot}/workflows/map-codebase.md +27 -17
  233. package/src/pilot/workflows/milestone-summary.md +223 -0
  234. package/{gsd/get-shit-done → src/pilot}/workflows/new-milestone.md +135 -33
  235. package/{gsd/get-shit-done → src/pilot}/workflows/new-project.md +152 -79
  236. package/src/pilot/workflows/next.md +97 -0
  237. package/src/pilot/workflows/node-repair.md +92 -0
  238. package/src/pilot/workflows/note.md +156 -0
  239. package/src/pilot/workflows/pause-work.md +177 -0
  240. package/{gsd/get-shit-done → src/pilot}/workflows/plan-milestone-gaps.md +10 -11
  241. package/src/pilot/workflows/plan-phase.md +859 -0
  242. package/src/pilot/workflows/plant-seed.md +169 -0
  243. package/src/pilot/workflows/pr-branch.md +129 -0
  244. package/{gsd/get-shit-done → src/pilot}/workflows/progress.md +95 -34
  245. package/{gsd/get-shit-done → src/pilot}/workflows/quick.md +33 -21
  246. package/{gsd/get-shit-done → src/pilot}/workflows/remove-phase.md +14 -14
  247. package/{gsd/get-shit-done → src/pilot}/workflows/research-phase.md +18 -10
  248. package/{gsd/get-shit-done → src/pilot}/workflows/resume-project.md +37 -18
  249. package/src/pilot/workflows/session-report.md +146 -0
  250. package/{gsd/get-shit-done → src/pilot}/workflows/set-profile.md +7 -7
  251. package/{gsd/get-shit-done → src/pilot}/workflows/settings.md +75 -22
  252. package/src/pilot/workflows/ship.md +228 -0
  253. package/src/pilot/workflows/stats.md +60 -0
  254. package/{gsd/get-shit-done → src/pilot}/workflows/transition.md +57 -17
  255. package/src/pilot/workflows/ui-phase.md +302 -0
  256. package/src/pilot/workflows/ui-review.md +165 -0
  257. package/{gsd/get-shit-done → src/pilot}/workflows/update.md +88 -58
  258. package/{gsd/get-shit-done → src/pilot}/workflows/validate-phase.md +24 -17
  259. package/{gsd/get-shit-done → src/pilot}/workflows/verify-phase.md +26 -15
  260. package/{gsd/get-shit-done → src/pilot}/workflows/verify-work.md +89 -37
  261. package/{ecc → src}/rules/common/agents.md +1 -0
  262. package/{ecc → src}/rules/common/coding-style.md +21 -0
  263. package/src/skills/agentic-engineering/SKILL.md +63 -0
  264. package/src/skills/ai-first-engineering/SKILL.md +51 -0
  265. package/src/skills/ai-regression-testing/SKILL.md +385 -0
  266. package/src/skills/api-design/SKILL.md +523 -0
  267. package/src/skills/architecture-decision-records/SKILL.md +179 -0
  268. package/src/skills/backend-patterns/SKILL.md +598 -0
  269. package/src/skills/benchmark/SKILL.md +87 -0
  270. package/src/skills/blueprint/SKILL.md +90 -0
  271. package/src/skills/browser-qa/SKILL.md +81 -0
  272. package/src/skills/claude-api/SKILL.md +337 -0
  273. package/src/skills/codebase-onboarding/SKILL.md +233 -0
  274. package/src/skills/coding-standards/SKILL.md +530 -0
  275. package/src/skills/context-budget/SKILL.md +135 -0
  276. package/{ecc → src}/skills/continuous-learning-v2/SKILL.md +2 -2
  277. package/{ecc → src}/skills/continuous-learning-v2/agents/observer-loop.sh +1 -1
  278. package/src/skills/cpp-coding-standards/SKILL.md +723 -0
  279. package/src/skills/cpp-testing/SKILL.md +324 -0
  280. package/src/skills/database-migrations/SKILL.md +429 -0
  281. package/src/skills/deep-research/SKILL.md +155 -0
  282. package/src/skills/deployment-patterns/SKILL.md +427 -0
  283. package/src/skills/django-patterns/SKILL.md +734 -0
  284. package/src/skills/django-security/SKILL.md +593 -0
  285. package/src/skills/django-tdd/SKILL.md +729 -0
  286. package/src/skills/django-verification/SKILL.md +469 -0
  287. package/src/skills/docker-patterns/SKILL.md +364 -0
  288. package/src/skills/documentation-lookup/SKILL.md +90 -0
  289. package/src/skills/e2e-testing/SKILL.md +326 -0
  290. package/src/skills/exa-search/SKILL.md +103 -0
  291. package/src/skills/frontend-patterns/SKILL.md +642 -0
  292. package/src/skills/golang-patterns/SKILL.md +674 -0
  293. package/src/skills/golang-testing/SKILL.md +720 -0
  294. package/src/skills/java-coding-standards/SKILL.md +147 -0
  295. package/src/skills/jpa-patterns/SKILL.md +151 -0
  296. package/src/skills/kotlin-coroutines-flows/SKILL.md +284 -0
  297. package/src/skills/kotlin-exposed-patterns/SKILL.md +719 -0
  298. package/src/skills/kotlin-ktor-patterns/SKILL.md +689 -0
  299. package/src/skills/kotlin-patterns/SKILL.md +711 -0
  300. package/src/skills/kotlin-testing/SKILL.md +824 -0
  301. package/src/skills/laravel-patterns/SKILL.md +415 -0
  302. package/src/skills/laravel-security/SKILL.md +285 -0
  303. package/src/skills/laravel-tdd/SKILL.md +283 -0
  304. package/src/skills/laravel-verification/SKILL.md +179 -0
  305. package/src/skills/mcp-server-patterns/SKILL.md +67 -0
  306. package/src/skills/perl-patterns/SKILL.md +504 -0
  307. package/src/skills/perl-testing/SKILL.md +475 -0
  308. package/src/skills/postgres-patterns/SKILL.md +147 -0
  309. package/src/skills/prompt-optimizer/SKILL.md +397 -0
  310. package/src/skills/python-patterns/SKILL.md +750 -0
  311. package/src/skills/python-testing/SKILL.md +816 -0
  312. package/src/skills/rust-patterns/SKILL.md +499 -0
  313. package/src/skills/rust-testing/SKILL.md +500 -0
  314. package/src/skills/safety-guard/SKILL.md +69 -0
  315. package/src/skills/search-first/SKILL.md +161 -0
  316. package/src/skills/security-review/SKILL.md +495 -0
  317. package/src/skills/security-review/cloud-infrastructure-security.md +361 -0
  318. package/src/skills/security-scan/SKILL.md +165 -0
  319. package/src/skills/springboot-patterns/SKILL.md +314 -0
  320. package/src/skills/springboot-security/SKILL.md +272 -0
  321. package/src/skills/springboot-tdd/SKILL.md +158 -0
  322. package/src/skills/springboot-verification/SKILL.md +231 -0
  323. package/src/skills/tdd-workflow/SKILL.md +410 -0
  324. package/ecc/scripts/hooks/session-end-marker.js +0 -15
  325. package/gsd/LICENSE +0 -21
  326. package/gsd/commands-gsd/discuss-phase.md +0 -90
  327. package/gsd/commands-gsd/execute-phase.md +0 -41
  328. package/gsd/commands-gsd/join-discord.md +0 -18
  329. package/gsd/commands-gsd/reapply-patches.md +0 -123
  330. package/gsd/commands-gsd/set-profile.md +0 -34
  331. package/gsd/get-shit-done/bin/lib/config.cjs +0 -169
  332. package/gsd/get-shit-done/bin/lib/core.cjs +0 -492
  333. package/gsd/get-shit-done/bin/lib/init.cjs +0 -710
  334. package/gsd/get-shit-done/workflows/execute-phase.md +0 -459
  335. package/gsd/get-shit-done/workflows/help.md +0 -489
  336. package/gsd/get-shit-done/workflows/pause-work.md +0 -122
  337. package/gsd/get-shit-done/workflows/plan-phase.md +0 -560
  338. package/gsd/hooks/gsd-check-update.js +0 -81
  339. package/kit/CLAUDE.md +0 -43
  340. package/kit/commands/kit/update.md +0 -46
  341. package/kit/mcp.json +0 -10
  342. package/kit/rules/code-style.md +0 -24
  343. /package/{ecc → src}/agents/architect.md +0 -0
  344. /package/{ecc → src}/agents/code-reviewer.md +0 -0
  345. /package/{ecc → src}/agents/doc-updater.md +0 -0
  346. /package/{ecc → src}/agents/e2e-runner.md +0 -0
  347. /package/{ecc → src}/agents/security-reviewer.md +0 -0
  348. /package/{ecc → src}/agents/tdd-guide.md +0 -0
  349. /package/{ecc/rules → src/available-rules}/golang/coding-style.md +0 -0
  350. /package/{ecc/rules → src/available-rules}/golang/hooks.md +0 -0
  351. /package/{ecc/rules → src/available-rules}/golang/patterns.md +0 -0
  352. /package/{ecc/rules → src/available-rules}/golang/security.md +0 -0
  353. /package/{ecc/rules → src/available-rules}/golang/testing.md +0 -0
  354. /package/{ecc/rules → src/available-rules}/kotlin/coding-style.md +0 -0
  355. /package/{ecc/rules → src/available-rules}/kotlin/patterns.md +0 -0
  356. /package/{ecc/rules → src/available-rules}/kotlin/security.md +0 -0
  357. /package/{ecc/rules → src/available-rules}/kotlin/testing.md +0 -0
  358. /package/{ecc/rules → src/available-rules}/perl/coding-style.md +0 -0
  359. /package/{ecc/rules → src/available-rules}/perl/hooks.md +0 -0
  360. /package/{ecc/rules → src/available-rules}/perl/patterns.md +0 -0
  361. /package/{ecc/rules → src/available-rules}/perl/security.md +0 -0
  362. /package/{ecc/rules → src/available-rules}/perl/testing.md +0 -0
  363. /package/{ecc/rules → src/available-rules}/php/coding-style.md +0 -0
  364. /package/{ecc/rules → src/available-rules}/php/hooks.md +0 -0
  365. /package/{ecc/rules → src/available-rules}/php/patterns.md +0 -0
  366. /package/{ecc/rules → src/available-rules}/php/security.md +0 -0
  367. /package/{ecc/rules → src/available-rules}/php/testing.md +0 -0
  368. /package/{ecc/rules → src/available-rules}/python/coding-style.md +0 -0
  369. /package/{ecc/rules → src/available-rules}/python/hooks.md +0 -0
  370. /package/{ecc/rules → src/available-rules}/python/patterns.md +0 -0
  371. /package/{ecc/rules → src/available-rules}/python/security.md +0 -0
  372. /package/{ecc/rules → src/available-rules}/python/testing.md +0 -0
  373. /package/{ecc/rules → src/available-rules}/swift/coding-style.md +0 -0
  374. /package/{ecc/rules → src/available-rules}/swift/hooks.md +0 -0
  375. /package/{ecc/rules → src/available-rules}/swift/patterns.md +0 -0
  376. /package/{ecc/rules → src/available-rules}/swift/security.md +0 -0
  377. /package/{ecc/rules → src/available-rules}/swift/testing.md +0 -0
  378. /package/{ecc/rules → src/available-rules}/typescript/coding-style.md +0 -0
  379. /package/{ecc/rules → src/available-rules}/typescript/hooks.md +0 -0
  380. /package/{ecc/rules → src/available-rules}/typescript/patterns.md +0 -0
  381. /package/{ecc/rules → src/available-rules}/typescript/security.md +0 -0
  382. /package/{ecc/rules → src/available-rules}/typescript/testing.md +0 -0
  383. /package/{ecc → src}/commands/checkpoint.md +0 -0
  384. /package/{ecc → src}/commands/learn.md +0 -0
  385. /package/{ecc → src}/commands/model-route.md +0 -0
  386. /package/{ecc → src}/commands/resume-session.md +0 -0
  387. /package/{ecc → src}/commands/save-session.md +0 -0
  388. /package/{kit → src}/commands/setup-refresh.md +0 -0
  389. /package/{kit → src}/commands/tool-guide.md +0 -0
  390. /package/{ecc → src}/commands/verify.md +0 -0
  391. /package/{ecc → src}/contexts/dev.md +0 -0
  392. /package/{ecc → src}/contexts/research.md +0 -0
  393. /package/{ecc → src}/contexts/review.md +0 -0
  394. /package/{ecc → src}/examples/CLAUDE.md +0 -0
  395. /package/{ecc → src}/examples/django-api-CLAUDE.md +0 -0
  396. /package/{ecc → src}/examples/go-microservice-CLAUDE.md +0 -0
  397. /package/{ecc → src}/examples/rust-api-CLAUDE.md +0 -0
  398. /package/{ecc → src}/examples/saas-nextjs-CLAUDE.md +0 -0
  399. /package/{ecc → src}/examples/user-CLAUDE.md +0 -0
  400. /package/{ecc/scripts → src}/hooks/check-hook-enabled.js +0 -0
  401. /package/{ecc/scripts → src}/hooks/evaluate-session.js +0 -0
  402. /package/{ecc/scripts → src}/hooks/pre-compact.js +0 -0
  403. /package/{ecc/scripts → src}/hooks/suggest-compact.js +0 -0
  404. /package/{ecc/scripts → src}/lib/package-manager.d.ts +0 -0
  405. /package/{ecc/scripts → src}/lib/package-manager.js +0 -0
  406. /package/{ecc/scripts → src}/lib/resolve-formatter.js +0 -0
  407. /package/{ecc/scripts → src}/lib/session-aliases.d.ts +0 -0
  408. /package/{ecc/scripts → src}/lib/session-aliases.js +0 -0
  409. /package/{ecc/scripts → src}/lib/shell-split.js +0 -0
  410. /package/{gsd/get-shit-done → src/pilot}/bin/lib/frontmatter.cjs +0 -0
  411. /package/{gsd/get-shit-done → src/pilot}/bin/lib/milestone.cjs +0 -0
  412. /package/{gsd/get-shit-done → src/pilot}/bin/lib/roadmap.cjs +0 -0
  413. /package/{gsd/get-shit-done → src/pilot}/bin/lib/template.cjs +0 -0
  414. /package/{gsd/get-shit-done → src/pilot}/references/checkpoints.md +0 -0
  415. /package/{gsd/get-shit-done → src/pilot}/references/questioning.md +0 -0
  416. /package/{gsd/get-shit-done → src/pilot}/references/tdd.md +0 -0
  417. /package/{gsd/get-shit-done → src/pilot}/templates/codebase/concerns.md +0 -0
  418. /package/{gsd/get-shit-done → src/pilot}/templates/codebase/conventions.md +0 -0
  419. /package/{gsd/get-shit-done → src/pilot}/templates/codebase/integrations.md +0 -0
  420. /package/{gsd/get-shit-done → src/pilot}/templates/codebase/stack.md +0 -0
  421. /package/{gsd/get-shit-done → src/pilot}/templates/codebase/testing.md +0 -0
  422. /package/{gsd/get-shit-done → src/pilot}/templates/config.json +0 -0
  423. /package/{gsd/get-shit-done → src/pilot}/templates/continue-here.md +0 -0
  424. /package/{gsd/get-shit-done → src/pilot}/templates/milestone-archive.md +0 -0
  425. /package/{gsd/get-shit-done → src/pilot}/templates/milestone.md +0 -0
  426. /package/{gsd/get-shit-done → src/pilot}/templates/requirements.md +0 -0
  427. /package/{gsd/get-shit-done → src/pilot}/templates/research-project/ARCHITECTURE.md +0 -0
  428. /package/{gsd/get-shit-done → src/pilot}/templates/research-project/FEATURES.md +0 -0
  429. /package/{gsd/get-shit-done → src/pilot}/templates/research-project/PITFALLS.md +0 -0
  430. /package/{gsd/get-shit-done → src/pilot}/templates/research-project/STACK.md +0 -0
  431. /package/{gsd/get-shit-done → src/pilot}/templates/research-project/SUMMARY.md +0 -0
  432. /package/{gsd/get-shit-done → src/pilot}/templates/retrospective.md +0 -0
  433. /package/{gsd/get-shit-done → src/pilot}/templates/roadmap.md +0 -0
  434. /package/{gsd/get-shit-done → src/pilot}/templates/summary-minimal.md +0 -0
  435. /package/{gsd/get-shit-done → src/pilot}/templates/summary-standard.md +0 -0
  436. /package/{gsd/get-shit-done → src/pilot}/templates/summary.md +0 -0
  437. /package/{gsd/get-shit-done → src/pilot}/templates/user-setup.md +0 -0
  438. /package/{gsd/get-shit-done → src/pilot}/templates/verification-report.md +0 -0
  439. /package/{ecc → src}/rules/common/development-workflow.md +0 -0
  440. /package/{ecc → src}/rules/common/git-workflow.md +0 -0
  441. /package/{ecc → src}/rules/common/hooks.md +0 -0
  442. /package/{ecc → src}/rules/common/patterns.md +0 -0
  443. /package/{ecc → src}/rules/common/performance.md +0 -0
  444. /package/{ecc → src}/rules/common/security.md +0 -0
  445. /package/{ecc → src}/rules/common/testing.md +0 -0
  446. /package/{ecc → src}/skills/continuous-learning-v2/agents/observer.md +0 -0
  447. /package/{ecc → src}/skills/continuous-learning-v2/agents/start-observer.sh +0 -0
  448. /package/{ecc → src}/skills/continuous-learning-v2/config.json +0 -0
  449. /package/{ecc → src}/skills/continuous-learning-v2/hooks/observe.sh +0 -0
  450. /package/{ecc → src}/skills/continuous-learning-v2/scripts/detect-project.sh +0 -0
  451. /package/{ecc → src}/skills/continuous-learning-v2/scripts/instinct-cli.py +0 -0
  452. /package/{ecc → src}/skills/continuous-learning-v2/scripts/test_parse_instinct.py +0 -0
  453. /package/{ecc → src}/skills/strategic-compact/SKILL.md +0 -0
  454. /package/{ecc → src}/skills/strategic-compact/suggest-compact.sh +0 -0
  455. /package/{ecc/skills/verification-loop-SKILL.md → src/skills/verification-loop/SKILL.md} +0 -0
@@ -0,0 +1,283 @@
1
+ ---
2
+ name: laravel-tdd
3
+ description: Test-driven development for Laravel with PHPUnit and Pest, factories, database testing, fakes, and coverage targets.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Laravel TDD Workflow
8
+
9
+ Test-driven development for Laravel applications using PHPUnit and Pest with 80%+ coverage (unit + feature).
10
+
11
+ ## When to Use
12
+
13
+ - New features or endpoints in Laravel
14
+ - Bug fixes or refactors
15
+ - Testing Eloquent models, policies, jobs, and notifications
16
+ - Prefer Pest for new tests unless the project already standardizes on PHPUnit
17
+
18
+ ## How It Works
19
+
20
+ ### Red-Green-Refactor Cycle
21
+
22
+ 1) Write a failing test
23
+ 2) Implement the minimal change to pass
24
+ 3) Refactor while keeping tests green
25
+
26
+ ### Test Layers
27
+
28
+ - **Unit**: pure PHP classes, value objects, services
29
+ - **Feature**: HTTP endpoints, auth, validation, policies
30
+ - **Integration**: database + queue + external boundaries
31
+
32
+ Choose layers based on scope:
33
+
34
+ - Use **Unit** tests for pure business logic and services.
35
+ - Use **Feature** tests for HTTP, auth, validation, and response shape.
36
+ - Use **Integration** tests when validating DB/queues/external services together.
37
+
38
+ ### Database Strategy
39
+
40
+ - `RefreshDatabase` for most feature/integration tests (runs migrations once per test run, then wraps each test in a transaction when supported; in-memory databases may re-migrate per test)
41
+ - `DatabaseTransactions` when the schema is already migrated and you only need per-test rollback
42
+ - `DatabaseMigrations` when you need a full migrate/fresh for every test and can afford the cost
43
+
44
+ Use `RefreshDatabase` as the default for tests that touch the database: for databases with transaction support, it runs migrations once per test run (via a static flag) and wraps each test in a transaction; for `:memory:` SQLite or connections without transactions, it migrates before each test. Use `DatabaseTransactions` when the schema is already migrated and you only need per-test rollbacks.
45
+
46
+ ### Testing Framework Choice
47
+
48
+ - Default to **Pest** for new tests when available.
49
+ - Use **PHPUnit** only if the project already standardizes on it or requires PHPUnit-specific tooling.
50
+
51
+ ## Examples
52
+
53
+ ### PHPUnit Example
54
+
55
+ ```php
56
+ use App\Models\User;
57
+ use Illuminate\Foundation\Testing\RefreshDatabase;
58
+ use Tests\TestCase;
59
+
60
+ final class ProjectControllerTest extends TestCase
61
+ {
62
+ use RefreshDatabase;
63
+
64
+ public function test_owner_can_create_project(): void
65
+ {
66
+ $user = User::factory()->create();
67
+
68
+ $response = $this->actingAs($user)->postJson('/api/projects', [
69
+ 'name' => 'New Project',
70
+ ]);
71
+
72
+ $response->assertCreated();
73
+ $this->assertDatabaseHas('projects', ['name' => 'New Project']);
74
+ }
75
+ }
76
+ ```
77
+
78
+ ### Feature Test Example (HTTP Layer)
79
+
80
+ ```php
81
+ use App\Models\Project;
82
+ use App\Models\User;
83
+ use Illuminate\Foundation\Testing\RefreshDatabase;
84
+ use Tests\TestCase;
85
+
86
+ final class ProjectIndexTest extends TestCase
87
+ {
88
+ use RefreshDatabase;
89
+
90
+ public function test_projects_index_returns_paginated_results(): void
91
+ {
92
+ $user = User::factory()->create();
93
+ Project::factory()->count(3)->for($user)->create();
94
+
95
+ $response = $this->actingAs($user)->getJson('/api/projects');
96
+
97
+ $response->assertOk();
98
+ $response->assertJsonStructure(['success', 'data', 'error', 'meta']);
99
+ }
100
+ }
101
+ ```
102
+
103
+ ### Pest Example
104
+
105
+ ```php
106
+ use App\Models\User;
107
+ use Illuminate\Foundation\Testing\RefreshDatabase;
108
+
109
+ use function Pest\Laravel\actingAs;
110
+ use function Pest\Laravel\assertDatabaseHas;
111
+
112
+ uses(RefreshDatabase::class);
113
+
114
+ test('owner can create project', function () {
115
+ $user = User::factory()->create();
116
+
117
+ $response = actingAs($user)->postJson('/api/projects', [
118
+ 'name' => 'New Project',
119
+ ]);
120
+
121
+ $response->assertCreated();
122
+ assertDatabaseHas('projects', ['name' => 'New Project']);
123
+ });
124
+ ```
125
+
126
+ ### Feature Test Pest Example (HTTP Layer)
127
+
128
+ ```php
129
+ use App\Models\Project;
130
+ use App\Models\User;
131
+ use Illuminate\Foundation\Testing\RefreshDatabase;
132
+
133
+ use function Pest\Laravel\actingAs;
134
+
135
+ uses(RefreshDatabase::class);
136
+
137
+ test('projects index returns paginated results', function () {
138
+ $user = User::factory()->create();
139
+ Project::factory()->count(3)->for($user)->create();
140
+
141
+ $response = actingAs($user)->getJson('/api/projects');
142
+
143
+ $response->assertOk();
144
+ $response->assertJsonStructure(['success', 'data', 'error', 'meta']);
145
+ });
146
+ ```
147
+
148
+ ### Factories and States
149
+
150
+ - Use factories for test data
151
+ - Define states for edge cases (archived, admin, trial)
152
+
153
+ ```php
154
+ $user = User::factory()->state(['role' => 'admin'])->create();
155
+ ```
156
+
157
+ ### Database Testing
158
+
159
+ - Use `RefreshDatabase` for clean state
160
+ - Keep tests isolated and deterministic
161
+ - Prefer `assertDatabaseHas` over manual queries
162
+
163
+ ### Persistence Test Example
164
+
165
+ ```php
166
+ use App\Models\Project;
167
+ use Illuminate\Foundation\Testing\RefreshDatabase;
168
+ use Tests\TestCase;
169
+
170
+ final class ProjectRepositoryTest extends TestCase
171
+ {
172
+ use RefreshDatabase;
173
+
174
+ public function test_project_can_be_retrieved_by_slug(): void
175
+ {
176
+ $project = Project::factory()->create(['slug' => 'alpha']);
177
+
178
+ $found = Project::query()->where('slug', 'alpha')->firstOrFail();
179
+
180
+ $this->assertSame($project->id, $found->id);
181
+ }
182
+ }
183
+ ```
184
+
185
+ ### Fakes for Side Effects
186
+
187
+ - `Bus::fake()` for jobs
188
+ - `Queue::fake()` for queued work
189
+ - `Mail::fake()` and `Notification::fake()` for notifications
190
+ - `Event::fake()` for domain events
191
+
192
+ ```php
193
+ use Illuminate\Support\Facades\Queue;
194
+
195
+ Queue::fake();
196
+
197
+ dispatch(new SendOrderConfirmation($order->id));
198
+
199
+ Queue::assertPushed(SendOrderConfirmation::class);
200
+ ```
201
+
202
+ ```php
203
+ use Illuminate\Support\Facades\Notification;
204
+
205
+ Notification::fake();
206
+
207
+ $user->notify(new InvoiceReady($invoice));
208
+
209
+ Notification::assertSentTo($user, InvoiceReady::class);
210
+ ```
211
+
212
+ ### Auth Testing (Sanctum)
213
+
214
+ ```php
215
+ use Laravel\Sanctum\Sanctum;
216
+
217
+ Sanctum::actingAs($user);
218
+
219
+ $response = $this->getJson('/api/projects');
220
+ $response->assertOk();
221
+ ```
222
+
223
+ ### HTTP and External Services
224
+
225
+ - Use `Http::fake()` to isolate external APIs
226
+ - Assert outbound payloads with `Http::assertSent()`
227
+
228
+ ### Coverage Targets
229
+
230
+ - Enforce 80%+ coverage for unit + feature tests
231
+ - Use `pcov` or `XDEBUG_MODE=coverage` in CI
232
+
233
+ ### Test Commands
234
+
235
+ - `php artisan test`
236
+ - `vendor/bin/phpunit`
237
+ - `vendor/bin/pest`
238
+
239
+ ### Test Configuration
240
+
241
+ - Use `phpunit.xml` to set `DB_CONNECTION=sqlite` and `DB_DATABASE=:memory:` for fast tests
242
+ - Keep separate env for tests to avoid touching dev/prod data
243
+
244
+ ### Authorization Tests
245
+
246
+ ```php
247
+ use Illuminate\Support\Facades\Gate;
248
+
249
+ $this->assertTrue(Gate::forUser($user)->allows('update', $project));
250
+ $this->assertFalse(Gate::forUser($otherUser)->allows('update', $project));
251
+ ```
252
+
253
+ ### Inertia Feature Tests
254
+
255
+ When using Inertia.js, assert on the component name and props with the Inertia testing helpers.
256
+
257
+ ```php
258
+ use App\Models\User;
259
+ use Inertia\Testing\AssertableInertia;
260
+ use Illuminate\Foundation\Testing\RefreshDatabase;
261
+ use Tests\TestCase;
262
+
263
+ final class DashboardInertiaTest extends TestCase
264
+ {
265
+ use RefreshDatabase;
266
+
267
+ public function test_dashboard_inertia_props(): void
268
+ {
269
+ $user = User::factory()->create();
270
+
271
+ $response = $this->actingAs($user)->get('/dashboard');
272
+
273
+ $response->assertOk();
274
+ $response->assertInertia(fn (AssertableInertia $page) => $page
275
+ ->component('Dashboard')
276
+ ->where('user.id', $user->id)
277
+ ->has('projects')
278
+ );
279
+ }
280
+ }
281
+ ```
282
+
283
+ Prefer `assertInertia` over raw JSON assertions to keep tests aligned with Inertia responses.
@@ -0,0 +1,179 @@
1
+ ---
2
+ name: laravel-verification
3
+ description: Verification loop for Laravel projects: env checks, linting, static analysis, tests with coverage, security scans, and deployment readiness.
4
+ origin: ECC
5
+ ---
6
+
7
+ # Laravel Verification Loop
8
+
9
+ Run before PRs, after major changes, and pre-deploy.
10
+
11
+ ## When to Use
12
+
13
+ - Before opening a pull request for a Laravel project
14
+ - After major refactors or dependency upgrades
15
+ - Pre-deployment verification for staging or production
16
+ - Running full lint -> test -> security -> deploy readiness pipeline
17
+
18
+ ## How It Works
19
+
20
+ - Run phases sequentially from environment checks through deployment readiness so each layer builds on the last.
21
+ - Environment and Composer checks gate everything else; stop immediately if they fail.
22
+ - Linting/static analysis should be clean before running full tests and coverage.
23
+ - Security and migration reviews happen after tests so you verify behavior before data or release steps.
24
+ - Build/deploy readiness and queue/scheduler checks are final gates; any failure blocks release.
25
+
26
+ ## Phase 1: Environment Checks
27
+
28
+ ```bash
29
+ php -v
30
+ composer --version
31
+ php artisan --version
32
+ ```
33
+
34
+ - Verify `.env` is present and required keys exist
35
+ - Confirm `APP_DEBUG=false` for production environments
36
+ - Confirm `APP_ENV` matches the target deployment (`production`, `staging`)
37
+
38
+ If using Laravel Sail locally:
39
+
40
+ ```bash
41
+ ./vendor/bin/sail php -v
42
+ ./vendor/bin/sail artisan --version
43
+ ```
44
+
45
+ ## Phase 1.5: Composer and Autoload
46
+
47
+ ```bash
48
+ composer validate
49
+ composer dump-autoload -o
50
+ ```
51
+
52
+ ## Phase 2: Linting and Static Analysis
53
+
54
+ ```bash
55
+ vendor/bin/pint --test
56
+ vendor/bin/phpstan analyse
57
+ ```
58
+
59
+ If your project uses Psalm instead of PHPStan:
60
+
61
+ ```bash
62
+ vendor/bin/psalm
63
+ ```
64
+
65
+ ## Phase 3: Tests and Coverage
66
+
67
+ ```bash
68
+ php artisan test
69
+ ```
70
+
71
+ Coverage (CI):
72
+
73
+ ```bash
74
+ XDEBUG_MODE=coverage php artisan test --coverage
75
+ ```
76
+
77
+ CI example (format -> static analysis -> tests):
78
+
79
+ ```bash
80
+ vendor/bin/pint --test
81
+ vendor/bin/phpstan analyse
82
+ XDEBUG_MODE=coverage php artisan test --coverage
83
+ ```
84
+
85
+ ## Phase 4: Security and Dependency Checks
86
+
87
+ ```bash
88
+ composer audit
89
+ ```
90
+
91
+ ## Phase 5: Database and Migrations
92
+
93
+ ```bash
94
+ php artisan migrate --pretend
95
+ php artisan migrate:status
96
+ ```
97
+
98
+ - Review destructive migrations carefully
99
+ - Ensure migration filenames follow `Y_m_d_His_*` (e.g., `2025_03_14_154210_create_orders_table.php`) and describe the change clearly
100
+ - Ensure rollbacks are possible
101
+ - Verify `down()` methods and avoid irreversible data loss without explicit backups
102
+
103
+ ## Phase 6: Build and Deployment Readiness
104
+
105
+ ```bash
106
+ php artisan optimize:clear
107
+ php artisan config:cache
108
+ php artisan route:cache
109
+ php artisan view:cache
110
+ ```
111
+
112
+ - Ensure cache warmups succeed in production configuration
113
+ - Verify queue workers and scheduler are configured
114
+ - Confirm `storage/` and `bootstrap/cache/` are writable in the target environment
115
+
116
+ ## Phase 7: Queue and Scheduler Checks
117
+
118
+ ```bash
119
+ php artisan schedule:list
120
+ php artisan queue:failed
121
+ ```
122
+
123
+ If Horizon is used:
124
+
125
+ ```bash
126
+ php artisan horizon:status
127
+ ```
128
+
129
+ If `queue:monitor` is available, use it to check backlog without processing jobs:
130
+
131
+ ```bash
132
+ php artisan queue:monitor default --max=100
133
+ ```
134
+
135
+ Active verification (staging only): dispatch a no-op job to a dedicated queue and run a single worker to process it (ensure a non-`sync` queue connection is configured).
136
+
137
+ ```bash
138
+ php artisan tinker --execute="dispatch((new App\\Jobs\\QueueHealthcheck())->onQueue('healthcheck'))"
139
+ php artisan queue:work --once --queue=healthcheck
140
+ ```
141
+
142
+ Verify the job produced the expected side effect (log entry, healthcheck table row, or metric).
143
+
144
+ Only run this on non-production environments where processing a test job is safe.
145
+
146
+ ## Examples
147
+
148
+ Minimal flow:
149
+
150
+ ```bash
151
+ php -v
152
+ composer --version
153
+ php artisan --version
154
+ composer validate
155
+ vendor/bin/pint --test
156
+ vendor/bin/phpstan analyse
157
+ php artisan test
158
+ composer audit
159
+ php artisan migrate --pretend
160
+ php artisan config:cache
161
+ php artisan queue:failed
162
+ ```
163
+
164
+ CI-style pipeline:
165
+
166
+ ```bash
167
+ composer validate
168
+ composer dump-autoload -o
169
+ vendor/bin/pint --test
170
+ vendor/bin/phpstan analyse
171
+ XDEBUG_MODE=coverage php artisan test --coverage
172
+ composer audit
173
+ php artisan migrate --pretend
174
+ php artisan optimize:clear
175
+ php artisan config:cache
176
+ php artisan route:cache
177
+ php artisan view:cache
178
+ php artisan schedule:list
179
+ ```
@@ -0,0 +1,67 @@
1
+ ---
2
+ name: mcp-server-patterns
3
+ description: Build MCP servers with Node/TypeScript SDK — tools, resources, prompts, Zod validation, stdio vs Streamable HTTP. Use Context7 or official MCP docs for latest API.
4
+ origin: ECC
5
+ ---
6
+
7
+ # MCP Server Patterns
8
+
9
+ The Model Context Protocol (MCP) lets AI assistants call tools, read resources, and use prompts from your server. Use this skill when building or maintaining MCP servers. The SDK API evolves; check Context7 (query-docs for "MCP") or the official MCP documentation for current method names and signatures.
10
+
11
+ ## When to Use
12
+
13
+ Use when: implementing a new MCP server, adding tools or resources, choosing stdio vs HTTP, upgrading the SDK, or debugging MCP registration and transport issues.
14
+
15
+ ## How It Works
16
+
17
+ ### Core concepts
18
+
19
+ - **Tools**: Actions the model can invoke (e.g. search, run a command). Register with `registerTool()` or `tool()` depending on SDK version.
20
+ - **Resources**: Read-only data the model can fetch (e.g. file contents, API responses). Register with `registerResource()` or `resource()`. Handlers typically receive a `uri` argument.
21
+ - **Prompts**: Reusable, parameterised prompt templates the client can surface (e.g. in Claude Desktop). Register with `registerPrompt()` or equivalent.
22
+ - **Transport**: stdio for local clients (e.g. Claude Desktop); Streamable HTTP is preferred for remote (Cursor, cloud). Legacy HTTP/SSE is for backward compatibility.
23
+
24
+ The Node/TypeScript SDK may expose `tool()` / `resource()` or `registerTool()` / `registerResource()`; the official SDK has changed over time. Always verify against the current [MCP docs](https://modelcontextprotocol.io) or Context7.
25
+
26
+ ### Connecting with stdio
27
+
28
+ For local clients, create a stdio transport and pass it to your server’s connect method. The exact API varies by SDK version (e.g. constructor vs factory). See the official MCP documentation or query Context7 for "MCP stdio server" for the current pattern.
29
+
30
+ Keep server logic (tools + resources) independent of transport so you can plug in stdio or HTTP in the entrypoint.
31
+
32
+ ### Remote (Streamable HTTP)
33
+
34
+ For Cursor, cloud, or other remote clients, use **Streamable HTTP** (single MCP HTTP endpoint per current spec). Support legacy HTTP/SSE only when backward compatibility is required.
35
+
36
+ ## Examples
37
+
38
+ ### Install and server setup
39
+
40
+ ```bash
41
+ npm install @modelcontextprotocol/sdk zod
42
+ ```
43
+
44
+ ```typescript
45
+ import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
46
+ import { z } from "zod";
47
+
48
+ const server = new McpServer({ name: "my-server", version: "1.0.0" });
49
+ ```
50
+
51
+ Register tools and resources using the API your SDK version provides: some versions use `server.tool(name, description, schema, handler)` (positional args), others use `server.tool({ name, description, inputSchema }, handler)` or `registerTool()`. Same for resources — include a `uri` in the handler when the API provides it. Check the official MCP docs or Context7 for the current `@modelcontextprotocol/sdk` signatures to avoid copy-paste errors.
52
+
53
+ Use **Zod** (or the SDK’s preferred schema format) for input validation.
54
+
55
+ ## Best Practices
56
+
57
+ - **Schema first**: Define input schemas for every tool; document parameters and return shape.
58
+ - **Errors**: Return structured errors or messages the model can interpret; avoid raw stack traces.
59
+ - **Idempotency**: Prefer idempotent tools where possible so retries are safe.
60
+ - **Rate and cost**: For tools that call external APIs, consider rate limits and cost; document in the tool description.
61
+ - **Versioning**: Pin SDK version in package.json; check release notes when upgrading.
62
+
63
+ ## Official SDKs and Docs
64
+
65
+ - **JavaScript/TypeScript**: `@modelcontextprotocol/sdk` (npm). Use Context7 with library name "MCP" for current registration and transport patterns.
66
+ - **Go**: Official Go SDK on GitHub (`modelcontextprotocol/go-sdk`).
67
+ - **C#**: Official C# SDK for .NET.