@hivehub/rulebook 5.4.0 → 5.4.1

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 (454) hide show
  1. package/.claude/commands/analysis.md +35 -35
  2. package/.claude/commands/continue.md +33 -33
  3. package/.claude/commands/ralph-config.md +112 -112
  4. package/.claude/commands/ralph-history.md +110 -110
  5. package/.claude/commands/ralph-init.md +72 -72
  6. package/.claude/commands/ralph-pause-resume.md +105 -105
  7. package/.claude/commands/ralph-run.md +101 -101
  8. package/.claude/commands/ralph-status.md +76 -76
  9. package/.claude/commands/rulebook-decision-create.md +55 -55
  10. package/.claude/commands/rulebook-decision-list.md +15 -15
  11. package/.claude/commands/rulebook-knowledge-add.md +41 -41
  12. package/.claude/commands/rulebook-knowledge-list.md +15 -15
  13. package/.claude/commands/rulebook-learn-capture.md +48 -48
  14. package/.claude/commands/rulebook-learn-list.md +13 -13
  15. package/.claude/commands/rulebook-memory-save.md +48 -48
  16. package/.claude/commands/rulebook-memory-search.md +47 -47
  17. package/.claude/commands/rulebook-task-apply.md +67 -67
  18. package/.claude/commands/rulebook-task-archive.md +94 -94
  19. package/.claude/commands/rulebook-task-create.md +93 -93
  20. package/.claude/commands/rulebook-task-list.md +42 -42
  21. package/.claude/commands/rulebook-task-show.md +52 -52
  22. package/.claude/commands/rulebook-task-validate.md +53 -53
  23. package/.claude-plugin/marketplace.json +28 -28
  24. package/.claude-plugin/plugin.json +8 -8
  25. package/LICENSE +191 -191
  26. package/README.md +393 -393
  27. package/dist/index.js +0 -0
  28. package/dist/mcp/rulebook-server.js +0 -0
  29. package/package.json +22 -21
  30. package/templates/agents/accessibility-reviewer.md +43 -43
  31. package/templates/agents/api-designer.md +42 -42
  32. package/templates/agents/architect.md +51 -51
  33. package/templates/agents/build-engineer.md +36 -36
  34. package/templates/agents/code-reviewer.md +47 -47
  35. package/templates/agents/compiler/codegen-debugger.md +34 -34
  36. package/templates/agents/compiler/stdlib-engineer.md +28 -28
  37. package/templates/agents/compiler/test-coverage-guardian.md +31 -31
  38. package/templates/agents/context-intelligence.md +52 -52
  39. package/templates/agents/database-architect.md +41 -41
  40. package/templates/agents/devops-engineer.md +42 -42
  41. package/templates/agents/docs-writer.md +38 -38
  42. package/templates/agents/game-engine/cpp-core-expert.md +35 -35
  43. package/templates/agents/game-engine/render-engineer.md +22 -22
  44. package/templates/agents/game-engine/shader-engineer.md +38 -38
  45. package/templates/agents/game-engine/systems-integration.md +43 -43
  46. package/templates/agents/generic/code-reviewer.md +41 -41
  47. package/templates/agents/generic/docs-writer.md +25 -25
  48. package/templates/agents/generic/project-manager.md +36 -36
  49. package/templates/agents/generic/researcher.md +34 -34
  50. package/templates/agents/generic/test-engineer.md +41 -41
  51. package/templates/agents/i18n-engineer.md +42 -42
  52. package/templates/agents/implementer.md +42 -42
  53. package/templates/agents/migration-engineer.md +42 -42
  54. package/templates/agents/mobile/platform-specialist.md +22 -22
  55. package/templates/agents/mobile/ui-engineer.md +22 -22
  56. package/templates/agents/performance-engineer.md +49 -49
  57. package/templates/agents/refactoring-agent.md +41 -41
  58. package/templates/agents/researcher.md +38 -38
  59. package/templates/agents/security-reviewer.md +40 -40
  60. package/templates/agents/team-lead.md +37 -37
  61. package/templates/agents/tester.md +48 -48
  62. package/templates/agents/ux-reviewer.md +43 -43
  63. package/templates/agents/web-app/api-designer.md +22 -22
  64. package/templates/agents/web-app/backend-engineer.md +30 -30
  65. package/templates/agents/web-app/database-engineer.md +22 -22
  66. package/templates/agents/web-app/frontend-engineer.md +29 -29
  67. package/templates/agents/web-app/security-reviewer.md +32 -32
  68. package/templates/ci/rulebook-review.yml +26 -26
  69. package/templates/cli/AIDER.md +49 -49
  70. package/templates/cli/AMAZON_Q.md +25 -25
  71. package/templates/cli/AUGGIE.md +32 -32
  72. package/templates/cli/CLAUDE.md +117 -117
  73. package/templates/cli/CLINE.md +99 -99
  74. package/templates/cli/CODEBUDDY.md +20 -20
  75. package/templates/cli/CODEIUM.md +20 -20
  76. package/templates/cli/CODEX.md +21 -21
  77. package/templates/cli/CONTINUE.md +34 -34
  78. package/templates/cli/CURSOR_CLI.md +62 -62
  79. package/templates/cli/FACTORY.md +18 -18
  80. package/templates/cli/GEMINI.md +35 -35
  81. package/templates/cli/KILOCODE.md +18 -18
  82. package/templates/cli/OPENCODE.md +18 -18
  83. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  84. package/templates/cli/gemini-extension.json +77 -77
  85. package/templates/commands/rulebook-decision-create.md +55 -55
  86. package/templates/commands/rulebook-decision-list.md +15 -15
  87. package/templates/commands/rulebook-knowledge-add.md +41 -41
  88. package/templates/commands/rulebook-knowledge-list.md +15 -15
  89. package/templates/commands/rulebook-learn-capture.md +48 -48
  90. package/templates/commands/rulebook-learn-list.md +13 -13
  91. package/templates/commands/rulebook-memory-save.md +48 -48
  92. package/templates/commands/rulebook-memory-search.md +47 -47
  93. package/templates/commands/rulebook-task-apply.md +67 -67
  94. package/templates/commands/rulebook-task-archive.md +94 -94
  95. package/templates/commands/rulebook-task-create.md +93 -93
  96. package/templates/commands/rulebook-task-list.md +42 -42
  97. package/templates/commands/rulebook-task-show.md +52 -52
  98. package/templates/commands/rulebook-task-validate.md +53 -53
  99. package/templates/compact-context/_default.md +23 -23
  100. package/templates/compact-context/cpp.md +26 -26
  101. package/templates/compact-context/go.md +26 -26
  102. package/templates/compact-context/python.md +26 -26
  103. package/templates/compact-context/rust.md +28 -28
  104. package/templates/compact-context/typescript.md +29 -29
  105. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  106. package/templates/core/AGENT_AUTOMATION.md +296 -296
  107. package/templates/core/CLAUDE_MD_v2.md +71 -71
  108. package/templates/core/DAG.md +304 -304
  109. package/templates/core/DECISIONS.md +38 -38
  110. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  111. package/templates/core/KNOWLEDGE.md +49 -49
  112. package/templates/core/MULTI_AGENT.md +74 -74
  113. package/templates/core/PLANS.md +28 -28
  114. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  115. package/templates/core/RALPH.md +471 -471
  116. package/templates/core/RULEBOOK.md +1947 -1947
  117. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  118. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  119. package/templates/core/WORKSPACE.md +69 -69
  120. package/templates/frameworks/ANGULAR.md +36 -36
  121. package/templates/frameworks/DJANGO.md +83 -83
  122. package/templates/frameworks/ELECTRON.md +147 -147
  123. package/templates/frameworks/FLASK.md +38 -38
  124. package/templates/frameworks/FLUTTER.md +55 -55
  125. package/templates/frameworks/JQUERY.md +32 -32
  126. package/templates/frameworks/LARAVEL.md +38 -38
  127. package/templates/frameworks/NESTJS.md +43 -43
  128. package/templates/frameworks/NEXTJS.md +127 -127
  129. package/templates/frameworks/NUXT.md +40 -40
  130. package/templates/frameworks/RAILS.md +66 -66
  131. package/templates/frameworks/REACT.md +38 -38
  132. package/templates/frameworks/REACT_NATIVE.md +47 -47
  133. package/templates/frameworks/SPRING.md +39 -39
  134. package/templates/frameworks/SYMFONY.md +36 -36
  135. package/templates/frameworks/VUE.md +36 -36
  136. package/templates/frameworks/ZEND.md +35 -35
  137. package/templates/git/CI_CD_PATTERNS.md +661 -661
  138. package/templates/git/GITHUB_ACTIONS.md +728 -728
  139. package/templates/git/GITLAB_CI.md +730 -730
  140. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  141. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  142. package/templates/hooks/COMMIT_MSG.md +530 -530
  143. package/templates/hooks/POST_CHECKOUT.md +546 -546
  144. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  145. package/templates/hooks/PRE_COMMIT.md +414 -414
  146. package/templates/hooks/PRE_PUSH.md +601 -601
  147. package/templates/hooks/check-context-and-handoff.ps1 +58 -58
  148. package/templates/hooks/check-context-and-handoff.sh +76 -76
  149. package/templates/hooks/enforce-team-for-background-agents.ps1 +63 -63
  150. package/templates/hooks/enforce-team-for-background-agents.sh +55 -55
  151. package/templates/hooks/on-compact-reinject.sh +34 -34
  152. package/templates/hooks/resume-from-handoff.ps1 +40 -40
  153. package/templates/hooks/resume-from-handoff.sh +61 -61
  154. package/templates/hooks/terse-activate.ps1 +143 -143
  155. package/templates/hooks/terse-activate.sh +197 -197
  156. package/templates/hooks/terse-mode-tracker.ps1 +153 -153
  157. package/templates/hooks/terse-mode-tracker.sh +187 -187
  158. package/templates/ides/CONTINUE_RULES.md +16 -16
  159. package/templates/ides/COPILOT.md +37 -37
  160. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
  161. package/templates/ides/CURSOR.md +43 -43
  162. package/templates/ides/GEMINI_RULES.md +17 -17
  163. package/templates/ides/JETBRAINS_AI.md +35 -35
  164. package/templates/ides/REPLIT.md +36 -36
  165. package/templates/ides/TABNINE.md +29 -29
  166. package/templates/ides/VSCODE.md +40 -40
  167. package/templates/ides/WINDSURF.md +36 -36
  168. package/templates/ides/WINDSURF_RULES.md +14 -14
  169. package/templates/ides/ZED.md +32 -32
  170. package/templates/ides/cursor-mdc/go.mdc +24 -24
  171. package/templates/ides/cursor-mdc/python.mdc +24 -24
  172. package/templates/ides/cursor-mdc/quality.mdc +25 -25
  173. package/templates/ides/cursor-mdc/ralph.mdc +39 -39
  174. package/templates/ides/cursor-mdc/rulebook.mdc +38 -38
  175. package/templates/ides/cursor-mdc/rust.mdc +24 -24
  176. package/templates/ides/cursor-mdc/typescript.mdc +25 -25
  177. package/templates/languages/C.md +333 -333
  178. package/templates/languages/CPP.md +743 -743
  179. package/templates/languages/CSHARP.md +417 -417
  180. package/templates/languages/ELIXIR.md +454 -454
  181. package/templates/languages/ERLANG.md +361 -361
  182. package/templates/languages/GO.md +645 -645
  183. package/templates/languages/HASKELL.md +177 -177
  184. package/templates/languages/JAVA.md +607 -607
  185. package/templates/languages/JAVASCRIPT.md +631 -631
  186. package/templates/languages/JULIA.md +97 -97
  187. package/templates/languages/KOTLIN.md +511 -511
  188. package/templates/languages/LISP.md +100 -100
  189. package/templates/languages/LUA.md +74 -74
  190. package/templates/languages/OBJECTIVEC.md +90 -90
  191. package/templates/languages/PHP.md +416 -416
  192. package/templates/languages/PYTHON.md +682 -682
  193. package/templates/languages/RUBY.md +421 -421
  194. package/templates/languages/RUST.md +477 -477
  195. package/templates/languages/SAS.md +73 -73
  196. package/templates/languages/SCALA.md +348 -348
  197. package/templates/languages/SOLIDITY.md +580 -580
  198. package/templates/languages/SQL.md +137 -137
  199. package/templates/languages/SWIFT.md +466 -466
  200. package/templates/languages/TYPESCRIPT.md +591 -591
  201. package/templates/languages/ZIG.md +265 -265
  202. package/templates/modules/ATLASSIAN.md +255 -255
  203. package/templates/modules/CONTEXT7.md +54 -54
  204. package/templates/modules/FIGMA.md +267 -267
  205. package/templates/modules/GITHUB_MCP.md +64 -64
  206. package/templates/modules/GRAFANA.md +328 -328
  207. package/templates/modules/MEMORY.md +126 -126
  208. package/templates/modules/NOTION.md +247 -247
  209. package/templates/modules/PLAYWRIGHT.md +90 -90
  210. package/templates/modules/RULEBOOK_MCP.md +208 -208
  211. package/templates/modules/SERENA.md +337 -337
  212. package/templates/modules/SUPABASE.md +223 -223
  213. package/templates/modules/SYNAP.md +69 -69
  214. package/templates/modules/VECTORIZER.md +63 -63
  215. package/templates/modules/sequential-thinking.md +42 -42
  216. package/templates/ralph/ralph-history.bat +4 -4
  217. package/templates/ralph/ralph-history.sh +5 -5
  218. package/templates/ralph/ralph-init.bat +5 -5
  219. package/templates/ralph/ralph-init.sh +5 -5
  220. package/templates/ralph/ralph-pause.bat +5 -5
  221. package/templates/ralph/ralph-pause.sh +5 -5
  222. package/templates/ralph/ralph-run.bat +5 -5
  223. package/templates/ralph/ralph-run.sh +5 -5
  224. package/templates/ralph/ralph-status.bat +4 -4
  225. package/templates/ralph/ralph-status.sh +5 -5
  226. package/templates/rules/consult-analysis-before-implementing.md +23 -23
  227. package/templates/rules/cpp.md +46 -46
  228. package/templates/rules/csharp.md +44 -44
  229. package/templates/rules/diagnostic-first.md +39 -39
  230. package/templates/rules/fail-twice-escalate.md +46 -46
  231. package/templates/rules/follow-task-sequence.md +36 -36
  232. package/templates/rules/git-safety.md +29 -29
  233. package/templates/rules/go.md +40 -40
  234. package/templates/rules/incremental-implementation.md +56 -56
  235. package/templates/rules/incremental-tests.md +29 -29
  236. package/templates/rules/java.md +43 -43
  237. package/templates/rules/javascript.md +39 -39
  238. package/templates/rules/knowledge-base-usage.md +41 -41
  239. package/templates/rules/multi-agent-teams.md +75 -75
  240. package/templates/rules/no-deferred.md +31 -31
  241. package/templates/rules/no-shortcuts.md +30 -30
  242. package/templates/rules/python.md +43 -43
  243. package/templates/rules/research-first.md +30 -30
  244. package/templates/rules/respect-handoff-trigger.md +41 -41
  245. package/templates/rules/rust.md +40 -40
  246. package/templates/rules/sequential-editing.md +21 -21
  247. package/templates/rules/session-workflow.md +24 -24
  248. package/templates/rules/task-decomposition.md +32 -32
  249. package/templates/rules/typescript.md +40 -40
  250. package/templates/services/AZURE_BLOB.md +184 -184
  251. package/templates/services/CASSANDRA.md +239 -239
  252. package/templates/services/DATADOG.md +26 -26
  253. package/templates/services/DOCKER.md +124 -124
  254. package/templates/services/DOCKER_COMPOSE.md +168 -168
  255. package/templates/services/DYNAMODB.md +308 -308
  256. package/templates/services/ELASTICSEARCH.md +347 -347
  257. package/templates/services/GCS.md +178 -178
  258. package/templates/services/HELM.md +194 -194
  259. package/templates/services/INFLUXDB.md +265 -265
  260. package/templates/services/KAFKA.md +341 -341
  261. package/templates/services/KUBERNETES.md +208 -208
  262. package/templates/services/MARIADB.md +183 -183
  263. package/templates/services/MEMCACHED.md +242 -242
  264. package/templates/services/MINIO.md +201 -201
  265. package/templates/services/MONGODB.md +268 -268
  266. package/templates/services/MYSQL.md +358 -358
  267. package/templates/services/NEO4J.md +247 -247
  268. package/templates/services/OPENTELEMETRY.md +25 -25
  269. package/templates/services/ORACLE.md +290 -290
  270. package/templates/services/PINO.md +24 -24
  271. package/templates/services/POSTGRESQL.md +326 -326
  272. package/templates/services/PROMETHEUS.md +33 -33
  273. package/templates/services/RABBITMQ.md +286 -286
  274. package/templates/services/REDIS.md +292 -292
  275. package/templates/services/S3.md +298 -298
  276. package/templates/services/SENTRY.md +23 -23
  277. package/templates/services/SQLITE.md +294 -294
  278. package/templates/services/SQLSERVER.md +294 -294
  279. package/templates/services/WINSTON.md +30 -30
  280. package/templates/skills/cli/aider/SKILL.md +59 -59
  281. package/templates/skills/cli/amazon-q/SKILL.md +35 -35
  282. package/templates/skills/cli/auggie/SKILL.md +42 -42
  283. package/templates/skills/cli/claude/SKILL.md +42 -42
  284. package/templates/skills/cli/cline/SKILL.md +42 -42
  285. package/templates/skills/cli/codebuddy/SKILL.md +30 -30
  286. package/templates/skills/cli/codeium/SKILL.md +30 -30
  287. package/templates/skills/cli/codex/SKILL.md +31 -31
  288. package/templates/skills/cli/continue/SKILL.md +44 -44
  289. package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
  290. package/templates/skills/cli/factory/SKILL.md +28 -28
  291. package/templates/skills/cli/gemini/SKILL.md +45 -45
  292. package/templates/skills/cli/kilocode/SKILL.md +28 -28
  293. package/templates/skills/cli/opencode/SKILL.md +28 -28
  294. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  295. package/templates/skills/core/dag/SKILL.md +314 -314
  296. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  297. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  298. package/templates/skills/core/rulebook/SKILL.md +176 -176
  299. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  300. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  301. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  302. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  303. package/templates/skills/dev/analysis/SKILL.md +19 -19
  304. package/templates/skills/dev/api-design/SKILL.md +15 -15
  305. package/templates/skills/dev/architect/SKILL.md +17 -17
  306. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  307. package/templates/skills/dev/db-design/SKILL.md +15 -15
  308. package/templates/skills/dev/debug/SKILL.md +16 -16
  309. package/templates/skills/dev/deploy/SKILL.md +17 -17
  310. package/templates/skills/dev/docs/SKILL.md +17 -17
  311. package/templates/skills/dev/handoff/SKILL.md +27 -27
  312. package/templates/skills/dev/migrate/SKILL.md +15 -15
  313. package/templates/skills/dev/perf/SKILL.md +17 -17
  314. package/templates/skills/dev/refactor/SKILL.md +17 -17
  315. package/templates/skills/dev/research/SKILL.md +14 -14
  316. package/templates/skills/dev/review/SKILL.md +18 -18
  317. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  318. package/templates/skills/frameworks/angular/SKILL.md +46 -46
  319. package/templates/skills/frameworks/django/SKILL.md +93 -93
  320. package/templates/skills/frameworks/electron/SKILL.md +157 -157
  321. package/templates/skills/frameworks/flask/SKILL.md +48 -48
  322. package/templates/skills/frameworks/flutter/SKILL.md +65 -65
  323. package/templates/skills/frameworks/jquery/SKILL.md +42 -42
  324. package/templates/skills/frameworks/laravel/SKILL.md +48 -48
  325. package/templates/skills/frameworks/nestjs/SKILL.md +53 -53
  326. package/templates/skills/frameworks/nextjs/SKILL.md +137 -137
  327. package/templates/skills/frameworks/nuxt/SKILL.md +50 -50
  328. package/templates/skills/frameworks/rails/SKILL.md +76 -76
  329. package/templates/skills/frameworks/react/SKILL.md +48 -48
  330. package/templates/skills/frameworks/react-native/SKILL.md +57 -57
  331. package/templates/skills/frameworks/spring/SKILL.md +49 -49
  332. package/templates/skills/frameworks/symfony/SKILL.md +46 -46
  333. package/templates/skills/frameworks/vue/SKILL.md +46 -46
  334. package/templates/skills/frameworks/zend/SKILL.md +45 -45
  335. package/templates/skills/ides/copilot/SKILL.md +47 -47
  336. package/templates/skills/ides/cursor/SKILL.md +53 -53
  337. package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
  338. package/templates/skills/ides/replit/SKILL.md +46 -46
  339. package/templates/skills/ides/tabnine/SKILL.md +39 -39
  340. package/templates/skills/ides/vscode/SKILL.md +50 -50
  341. package/templates/skills/ides/windsurf/SKILL.md +46 -46
  342. package/templates/skills/ides/zed/SKILL.md +42 -42
  343. package/templates/skills/languages/c/SKILL.md +343 -343
  344. package/templates/skills/languages/cpp/SKILL.md +753 -753
  345. package/templates/skills/languages/csharp/SKILL.md +427 -427
  346. package/templates/skills/languages/elixir/SKILL.md +464 -464
  347. package/templates/skills/languages/erlang/SKILL.md +371 -371
  348. package/templates/skills/languages/go/SKILL.md +655 -655
  349. package/templates/skills/languages/haskell/SKILL.md +187 -187
  350. package/templates/skills/languages/java/SKILL.md +617 -617
  351. package/templates/skills/languages/javascript/SKILL.md +641 -641
  352. package/templates/skills/languages/julia/SKILL.md +107 -107
  353. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  354. package/templates/skills/languages/lisp/SKILL.md +110 -110
  355. package/templates/skills/languages/lua/SKILL.md +84 -84
  356. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  357. package/templates/skills/languages/php/SKILL.md +426 -426
  358. package/templates/skills/languages/python/SKILL.md +692 -692
  359. package/templates/skills/languages/ruby/SKILL.md +431 -431
  360. package/templates/skills/languages/rust/SKILL.md +487 -487
  361. package/templates/skills/languages/sas/SKILL.md +83 -83
  362. package/templates/skills/languages/scala/SKILL.md +358 -358
  363. package/templates/skills/languages/solidity/SKILL.md +590 -590
  364. package/templates/skills/languages/sql/SKILL.md +147 -147
  365. package/templates/skills/languages/swift/SKILL.md +476 -476
  366. package/templates/skills/languages/typescript/SKILL.md +302 -302
  367. package/templates/skills/languages/zig/SKILL.md +275 -275
  368. package/templates/skills/modules/atlassian/SKILL.md +265 -265
  369. package/templates/skills/modules/context7/SKILL.md +64 -64
  370. package/templates/skills/modules/figma/SKILL.md +277 -277
  371. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  372. package/templates/skills/modules/grafana/SKILL.md +338 -338
  373. package/templates/skills/modules/memory/SKILL.md +73 -73
  374. package/templates/skills/modules/notion/SKILL.md +257 -257
  375. package/templates/skills/modules/playwright/SKILL.md +100 -100
  376. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  377. package/templates/skills/modules/serena/SKILL.md +347 -347
  378. package/templates/skills/modules/supabase/SKILL.md +233 -233
  379. package/templates/skills/modules/synap/SKILL.md +79 -79
  380. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  381. package/templates/skills/services/azure-blob/SKILL.md +194 -194
  382. package/templates/skills/services/cassandra/SKILL.md +249 -249
  383. package/templates/skills/services/dynamodb/SKILL.md +318 -318
  384. package/templates/skills/services/elasticsearch/SKILL.md +357 -357
  385. package/templates/skills/services/gcs/SKILL.md +188 -188
  386. package/templates/skills/services/influxdb/SKILL.md +275 -275
  387. package/templates/skills/services/kafka/SKILL.md +351 -351
  388. package/templates/skills/services/mariadb/SKILL.md +193 -193
  389. package/templates/skills/services/memcached/SKILL.md +252 -252
  390. package/templates/skills/services/minio/SKILL.md +211 -211
  391. package/templates/skills/services/mongodb/SKILL.md +278 -278
  392. package/templates/skills/services/mysql/SKILL.md +368 -368
  393. package/templates/skills/services/neo4j/SKILL.md +257 -257
  394. package/templates/skills/services/oracle/SKILL.md +300 -300
  395. package/templates/skills/services/postgresql/SKILL.md +336 -336
  396. package/templates/skills/services/rabbitmq/SKILL.md +296 -296
  397. package/templates/skills/services/redis/SKILL.md +302 -302
  398. package/templates/skills/services/s3/SKILL.md +308 -308
  399. package/templates/skills/services/sqlite/SKILL.md +304 -304
  400. package/templates/skills/services/sqlserver/SKILL.md +304 -304
  401. package/templates/skills/workflows/ralph/SKILL.md +309 -309
  402. package/templates/skills/workflows/ralph/install.sh +87 -87
  403. package/templates/skills/workflows/ralph/manifest.json +158 -158
  404. package/templates/workflows/codespell.yml +31 -31
  405. package/templates/workflows/cpp-lint.yml +47 -47
  406. package/templates/workflows/cpp-publish.yml +119 -119
  407. package/templates/workflows/cpp-test.yml +77 -77
  408. package/templates/workflows/dotnet-lint.yml +29 -29
  409. package/templates/workflows/dotnet-publish.yml +40 -40
  410. package/templates/workflows/dotnet-test.yml +41 -41
  411. package/templates/workflows/elixir-lint.yml +45 -45
  412. package/templates/workflows/elixir-publish.yml +49 -49
  413. package/templates/workflows/elixir-test.yml +54 -54
  414. package/templates/workflows/erlang-lint.yml +47 -47
  415. package/templates/workflows/erlang-test.yml +62 -62
  416. package/templates/workflows/go-lint.yml +39 -39
  417. package/templates/workflows/go-publish.yml +95 -95
  418. package/templates/workflows/go-test.yml +59 -59
  419. package/templates/workflows/java-lint.yml +60 -60
  420. package/templates/workflows/java-publish.yml +120 -120
  421. package/templates/workflows/java-test.yml +85 -85
  422. package/templates/workflows/kotlin-lint.yml +34 -34
  423. package/templates/workflows/kotlin-publish.yml +56 -56
  424. package/templates/workflows/kotlin-test.yml +48 -48
  425. package/templates/workflows/php-lint.yml +39 -39
  426. package/templates/workflows/php-publish.yml +50 -50
  427. package/templates/workflows/php-test.yml +54 -54
  428. package/templates/workflows/python-lint.yml +47 -47
  429. package/templates/workflows/python-publish.yml +91 -91
  430. package/templates/workflows/python-test.yml +59 -59
  431. package/templates/workflows/rust-lint.yml +54 -54
  432. package/templates/workflows/rust-publish.yml +66 -66
  433. package/templates/workflows/rust-test.yml +75 -75
  434. package/templates/workflows/solidity-lint.yml +41 -41
  435. package/templates/workflows/solidity-test.yml +47 -47
  436. package/templates/workflows/swift-lint.yml +32 -32
  437. package/templates/workflows/swift-publish.yml +58 -58
  438. package/templates/workflows/swift-test.yml +44 -44
  439. package/templates/workflows/typescript-publish.yml +60 -60
  440. package/templates/workflows/typescript-test.yml +73 -73
  441. package/templates/workflows/zig-lint.yml +27 -27
  442. package/templates/workflows/zig-test.yml +40 -40
  443. package/dist/hooks/terse-activate.d.ts +0 -59
  444. package/dist/hooks/terse-activate.d.ts.map +0 -1
  445. package/dist/hooks/terse-activate.js +0 -149
  446. package/dist/hooks/terse-activate.js.map +0 -1
  447. package/dist/hooks/terse-config.d.ts +0 -51
  448. package/dist/hooks/terse-config.d.ts.map +0 -1
  449. package/dist/hooks/terse-config.js +0 -130
  450. package/dist/hooks/terse-config.js.map +0 -1
  451. package/dist/hooks/terse-mode-tracker.d.ts +0 -78
  452. package/dist/hooks/terse-mode-tracker.d.ts.map +0 -1
  453. package/dist/hooks/terse-mode-tracker.js +0 -213
  454. package/dist/hooks/terse-mode-tracker.js.map +0 -1
@@ -1,426 +1,426 @@
1
- ---
2
- name: "PHP"
3
- description: "Execute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow)."
4
- version: "1.0.0"
5
- category: "languages"
6
- author: "Rulebook"
7
- tags: ["languages", "language"]
8
- dependencies: []
9
- conflicts: []
10
- ---
11
- <!-- PHP:START -->
12
- # PHP Project Rules
13
-
14
- ## Agent Automation Commands
15
-
16
- **CRITICAL**: Execute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow).
17
-
18
- ```bash
19
- # Complete quality check sequence:
20
- ./vendor/bin/pint --test # Format check (Laravel Pint)
21
- # OR: ./vendor/bin/php-cs-fixer fix --dry-run
22
- ./vendor/bin/phpstan analyze # Static analysis
23
- ./vendor/bin/phpunit # All tests (100% pass)
24
- ./vendor/bin/phpunit --coverage-text # Coverage (95%+ required)
25
-
26
- # Security audit:
27
- composer audit # Vulnerability scan
28
- composer outdated # Check outdated deps
29
- ```
30
-
31
- ## PHP Configuration
32
-
33
- **CRITICAL**: Use PHP 8.2+ with strict types enabled.
34
-
35
- - **Version**: PHP 8.2+
36
- - **Strict Types**: Enabled
37
- - **Type Hints**: Required for all functions
38
- - **Error Reporting**: E_ALL | E_STRICT
39
-
40
- ### composer.json Requirements
41
-
42
- ```json
43
- {
44
- "name": "your-vendor/your-package",
45
- "description": "A short description of your package",
46
- "type": "library",
47
- "license": "MIT",
48
- "authors": [
49
- {
50
- "name": "Your Name",
51
- "email": "your.email@example.com"
52
- }
53
- ],
54
- "require": {
55
- "php": "^8.2"
56
- },
57
- "require-dev": {
58
- "phpunit/phpunit": "^11.0",
59
- "phpstan/phpstan": "^1.10",
60
- "squizlabs/php_codesniffer": "^3.8",
61
- "friendsofphp/php-cs-fixer": "^3.48"
62
- },
63
- "autoload": {
64
- "psr-4": {
65
- "YourVendor\\YourPackage\\": "src/"
66
- }
67
- },
68
- "autoload-dev": {
69
- "psr-4": {
70
- "YourVendor\\YourPackage\\Tests\\": "tests/"
71
- }
72
- },
73
- "scripts": {
74
- "test": "phpunit",
75
- "cs-fix": "php-cs-fixer fix",
76
- "cs-check": "php-cs-fixer fix --dry-run --diff",
77
- "stan": "phpstan analyse",
78
- "phpcs": "phpcs src tests"
79
- },
80
- "minimum-stability": "stable",
81
- "prefer-stable": true
82
- }
83
- ```
84
-
85
- ## Code Quality Standards
86
-
87
- ### Mandatory Quality Checks
88
-
89
- **CRITICAL**: After implementing ANY feature, you MUST run these commands in order.
90
-
91
- **IMPORTANT**: These commands MUST match your GitHub Actions workflows to prevent CI/CD failures!
92
-
93
- ```bash
94
- # Pre-Commit Checklist (MUST match .github/workflows/*.yml)
95
-
96
- # 1. Format check (matches workflow - use check, not fix!)
97
- composer cs-check
98
-
99
- # 2. Static analysis (MUST pass with no errors - matches workflow)
100
- composer stan
101
-
102
- # 3. Code style check (matches workflow)
103
- composer phpcs
104
-
105
- # 4. Run all tests (MUST pass 100% - matches workflow)
106
- composer test
107
-
108
- # 5. Check coverage (MUST meet threshold)
109
- ./vendor/bin/phpunit --coverage-text
110
-
111
- # If ANY fails: ❌ DO NOT COMMIT - Fix first!
112
- ```
113
-
114
- **If ANY of these fail, you MUST fix the issues before committing.**
115
-
116
- **Why This Matters:**
117
- - CI/CD failures happen when local commands differ from workflows
118
- - Example: Using `cs-fix` locally but `cs-check` in CI = failure
119
- - Example: Missing static analysis locally = CI PHPStan failures
120
-
121
- ### Code Style
122
-
123
- Use PHP-CS-Fixer with PSR-12 standard. Configuration in `.php-cs-fixer.php`:
124
-
125
- ```php
126
- <?php
127
-
128
- declare(strict_types=1);
129
-
130
- $finder = PhpCsFixer\Finder::create()
131
- ->in(__DIR__ . '/src')
132
- ->in(__DIR__ . '/tests');
133
-
134
- return (new PhpCsFixer\Config())
135
- ->setRules([
136
- '@PSR12' => true,
137
- '@PHP82Migration' => true,
138
- 'strict_param' => true,
139
- 'array_syntax' => ['syntax' => 'short'],
140
- 'declare_strict_types' => true,
141
- 'native_function_invocation' => ['include' => ['@all']],
142
- 'no_unused_imports' => true,
143
- 'ordered_imports' => ['sort_algorithm' => 'alpha'],
144
- 'phpdoc_align' => true,
145
- 'phpdoc_order' => true,
146
- 'trailing_comma_in_multiline' => ['elements' => ['arrays']],
147
- ])
148
- ->setFinder($finder);
149
- ```
150
-
151
- ### Static Analysis
152
-
153
- Use PHPStan at maximum level. Configuration in `phpstan.neon`:
154
-
155
- ```neon
156
- parameters:
157
- level: max
158
- paths:
159
- - src
160
- - tests
161
- excludePaths:
162
- - tests/Fixtures/*
163
- checkMissingIterableValueType: true
164
- checkGenericClassInNonGenericObjectType: true
165
- reportUnmatchedIgnoredErrors: true
166
- ```
167
-
168
- ### Testing
169
-
170
- - **Framework**: PHPUnit 11+
171
- - **Location**: `tests/` directory
172
- - **Coverage**: XDebug or PCOV
173
- - **Coverage Threshold**: 95%+
174
-
175
- Configuration in `phpunit.xml`:
176
-
177
- ```xml
178
- <?xml version="1.0" encoding="UTF-8"?>
179
- <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
180
- xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
181
- bootstrap="vendor/autoload.php"
182
- colors="true"
183
- failOnRisky="true"
184
- failOnWarning="true"
185
- cacheDirectory=".phpunit.cache">
186
- <testsuites>
187
- <testsuite name="Unit">
188
- <directory>tests/Unit</directory>
189
- </testsuite>
190
- <testsuite name="Integration">
191
- <directory>tests/Integration</directory>
192
- </testsuite>
193
- </testsuites>
194
- <source>
195
- <include>
196
- <directory>src</directory>
197
- </include>
198
- </source>
199
- <coverage>
200
- <report>
201
- <html outputDirectory="coverage"/>
202
- <text outputFile="php://stdout"/>
203
- </report>
204
- </coverage>
205
- </phpunit>
206
- ```
207
-
208
- Example test:
209
-
210
- ```php
211
- <?php
212
-
213
- declare(strict_types=1);
214
-
215
- namespace YourVendor\YourPackage\Tests;
216
-
217
- use PHPUnit\Framework\TestCase;
218
- use YourVendor\YourPackage\MyClass;
219
-
220
- final class MyClassTest extends TestCase
221
- {
222
- public function testProcessValidInput(): void
223
- {
224
- $myClass = new MyClass();
225
- $result = $myClass->process('hello');
226
-
227
- $this->assertSame('HELLO', $result);
228
- }
229
-
230
- public function testProcessEmptyInputThrowsException(): void
231
- {
232
- $this->expectException(\InvalidArgumentException::class);
233
- $this->expectExceptionMessage('Input cannot be empty');
234
-
235
- $myClass = new MyClass();
236
- $myClass->process('');
237
- }
238
- }
239
- ```
240
-
241
- ### Type Declarations
242
-
243
- - Use strict types in all files
244
- - Type hint all parameters and return types
245
- - Use union types and nullable types appropriately
246
-
247
- Example:
248
-
249
- ```php
250
- <?php
251
-
252
- declare(strict_types=1);
253
-
254
- namespace YourVendor\YourPackage;
255
-
256
- use InvalidArgumentException;
257
-
258
- final class DataProcessor
259
- {
260
- /**
261
- * Process the input data and return the result.
262
- *
263
- * @param string $input The input to process
264
- * @return string The processed output
265
- * @throws InvalidArgumentException If input is empty
266
- */
267
- public function process(string $input): string
268
- {
269
- if ($input === '') {
270
- throw new InvalidArgumentException('Input cannot be empty');
271
- }
272
-
273
- return strtoupper($input);
274
- }
275
-
276
- /**
277
- * Find a value in the data.
278
- *
279
- * @param array<string, mixed> $data
280
- * @param string $key
281
- * @return mixed|null
282
- */
283
- public function findValue(array $data, string $key): mixed
284
- {
285
- return $data[$key] ?? null;
286
- }
287
-
288
- /**
289
- * Process multiple items.
290
- *
291
- * @param list<string> $items
292
- * @return list<string>
293
- */
294
- public function processMany(array $items): array
295
- {
296
- return array_map(
297
- fn (string $item): string => $this->process($item),
298
- $items
299
- );
300
- }
301
- }
302
- ```
303
-
304
- ## Documentation
305
-
306
- - Use PHPDoc blocks for all public methods
307
- - Include `@param`, `@return`, `@throws` tags
308
- - Use generics annotations for arrays
309
-
310
- Example:
311
-
312
- ```php
313
- <?php
314
-
315
- declare(strict_types=1);
316
-
317
- namespace YourVendor\YourPackage;
318
-
319
- /**
320
- * Service for managing user data.
321
- *
322
- * This class provides methods for creating, updating, and retrieving user information.
323
- */
324
- final class UserService
325
- {
326
- /**
327
- * Find a user by ID.
328
- *
329
- * @param positive-int $userId The user ID
330
- * @return array{id: int, name: string, email: string}|null User data or null if not found
331
- */
332
- public function findById(int $userId): ?array
333
- {
334
- // Implementation
335
- }
336
-
337
- /**
338
- * Get all users.
339
- *
340
- * @return list<array{id: int, name: string, email: string}>
341
- */
342
- public function getAll(): array
343
- {
344
- // Implementation
345
- }
346
- }
347
- ```
348
-
349
- ## Project Structure
350
-
351
- ```
352
- project/
353
- ├── composer.json # Composer configuration
354
- ├── phpunit.xml # PHPUnit configuration
355
- ├── phpstan.neon # PHPStan configuration
356
- ├── .php-cs-fixer.php # PHP-CS-Fixer configuration
357
- ├── README.md # Project overview (allowed in root)
358
- ├── CHANGELOG.md # Version history (allowed in root)
359
- ├── LICENSE # Project license (allowed in root)
360
- ├── src/
361
- │ └── YourClass.php
362
- ├── tests/
363
- │ ├── Unit/
364
- │ └── Integration/
365
- └── docs/ # Project documentation
366
- ```
367
-
368
- ## CI/CD Requirements
369
-
370
- Must include GitHub Actions workflows for:
371
-
372
- 1. **Testing** (`php-test.yml`):
373
- - Test on ubuntu-latest, windows-latest
374
- - Test on PHP 8.2, 8.3
375
- - Upload coverage reports
376
-
377
- 2. **Linting** (`php-lint.yml`):
378
- - PHPStan: `composer stan`
379
- - PHP-CS-Fixer: `composer cs-check`
380
- - PHPCS: `composer phpcs`
381
-
382
- ## Package Publication
383
-
384
- ### Publishing to Packagist
385
-
386
- **Prerequisites:**
387
- 1. Create account at https://packagist.org
388
- 2. Submit your package (automatic sync with GitHub)
389
- 3. Configure webhook in GitHub for auto-updates
390
-
391
- **Publishing Workflow:**
392
-
393
- 1. Update version in composer.json (optional, uses git tags)
394
- 2. Update CHANGELOG.md
395
- 3. Run quality checks:
396
- ```bash
397
- composer cs-fix
398
- composer stan
399
- composer test
400
- ```
401
-
402
- 4. Create git tag: `git tag v1.0.0 && git push --tags`
403
- 5. Packagist automatically updates from GitHub
404
- 6. Package available at: `https://packagist.org/packages/your-vendor/your-package`
405
-
406
- **Publishing Checklist:**
407
-
408
- - ✅ All tests passing
409
- - ✅ PHPStan at max level passes
410
- - ✅ Code style conforms to PSR-12
411
- - ✅ CHANGELOG.md updated
412
- - ✅ README.md up to date
413
- - ✅ LICENSE file present
414
- - ✅ composer.json metadata complete
415
- - ✅ GitHub repository public
416
- - ✅ Webhook configured on Packagist
417
-
418
- **Semantic Versioning:**
419
-
420
- Packagist uses git tags for versions:
421
- - Tag format: `v1.0.0`
422
- - Follows [SemVer](https://semver.org/)
423
- - Composer constraints: `^1.0`, `~1.0`, `1.0.*`
424
-
425
- <!-- PHP:END -->
426
-
1
+ ---
2
+ name: "PHP"
3
+ description: "Execute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow)."
4
+ version: "1.0.0"
5
+ category: "languages"
6
+ author: "Rulebook"
7
+ tags: ["languages", "language"]
8
+ dependencies: []
9
+ conflicts: []
10
+ ---
11
+ <!-- PHP:START -->
12
+ # PHP Project Rules
13
+
14
+ ## Agent Automation Commands
15
+
16
+ **CRITICAL**: Execute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow).
17
+
18
+ ```bash
19
+ # Complete quality check sequence:
20
+ ./vendor/bin/pint --test # Format check (Laravel Pint)
21
+ # OR: ./vendor/bin/php-cs-fixer fix --dry-run
22
+ ./vendor/bin/phpstan analyze # Static analysis
23
+ ./vendor/bin/phpunit # All tests (100% pass)
24
+ ./vendor/bin/phpunit --coverage-text # Coverage (95%+ required)
25
+
26
+ # Security audit:
27
+ composer audit # Vulnerability scan
28
+ composer outdated # Check outdated deps
29
+ ```
30
+
31
+ ## PHP Configuration
32
+
33
+ **CRITICAL**: Use PHP 8.2+ with strict types enabled.
34
+
35
+ - **Version**: PHP 8.2+
36
+ - **Strict Types**: Enabled
37
+ - **Type Hints**: Required for all functions
38
+ - **Error Reporting**: E_ALL | E_STRICT
39
+
40
+ ### composer.json Requirements
41
+
42
+ ```json
43
+ {
44
+ "name": "your-vendor/your-package",
45
+ "description": "A short description of your package",
46
+ "type": "library",
47
+ "license": "MIT",
48
+ "authors": [
49
+ {
50
+ "name": "Your Name",
51
+ "email": "your.email@example.com"
52
+ }
53
+ ],
54
+ "require": {
55
+ "php": "^8.2"
56
+ },
57
+ "require-dev": {
58
+ "phpunit/phpunit": "^11.0",
59
+ "phpstan/phpstan": "^1.10",
60
+ "squizlabs/php_codesniffer": "^3.8",
61
+ "friendsofphp/php-cs-fixer": "^3.48"
62
+ },
63
+ "autoload": {
64
+ "psr-4": {
65
+ "YourVendor\\YourPackage\\": "src/"
66
+ }
67
+ },
68
+ "autoload-dev": {
69
+ "psr-4": {
70
+ "YourVendor\\YourPackage\\Tests\\": "tests/"
71
+ }
72
+ },
73
+ "scripts": {
74
+ "test": "phpunit",
75
+ "cs-fix": "php-cs-fixer fix",
76
+ "cs-check": "php-cs-fixer fix --dry-run --diff",
77
+ "stan": "phpstan analyse",
78
+ "phpcs": "phpcs src tests"
79
+ },
80
+ "minimum-stability": "stable",
81
+ "prefer-stable": true
82
+ }
83
+ ```
84
+
85
+ ## Code Quality Standards
86
+
87
+ ### Mandatory Quality Checks
88
+
89
+ **CRITICAL**: After implementing ANY feature, you MUST run these commands in order.
90
+
91
+ **IMPORTANT**: These commands MUST match your GitHub Actions workflows to prevent CI/CD failures!
92
+
93
+ ```bash
94
+ # Pre-Commit Checklist (MUST match .github/workflows/*.yml)
95
+
96
+ # 1. Format check (matches workflow - use check, not fix!)
97
+ composer cs-check
98
+
99
+ # 2. Static analysis (MUST pass with no errors - matches workflow)
100
+ composer stan
101
+
102
+ # 3. Code style check (matches workflow)
103
+ composer phpcs
104
+
105
+ # 4. Run all tests (MUST pass 100% - matches workflow)
106
+ composer test
107
+
108
+ # 5. Check coverage (MUST meet threshold)
109
+ ./vendor/bin/phpunit --coverage-text
110
+
111
+ # If ANY fails: ❌ DO NOT COMMIT - Fix first!
112
+ ```
113
+
114
+ **If ANY of these fail, you MUST fix the issues before committing.**
115
+
116
+ **Why This Matters:**
117
+ - CI/CD failures happen when local commands differ from workflows
118
+ - Example: Using `cs-fix` locally but `cs-check` in CI = failure
119
+ - Example: Missing static analysis locally = CI PHPStan failures
120
+
121
+ ### Code Style
122
+
123
+ Use PHP-CS-Fixer with PSR-12 standard. Configuration in `.php-cs-fixer.php`:
124
+
125
+ ```php
126
+ <?php
127
+
128
+ declare(strict_types=1);
129
+
130
+ $finder = PhpCsFixer\Finder::create()
131
+ ->in(__DIR__ . '/src')
132
+ ->in(__DIR__ . '/tests');
133
+
134
+ return (new PhpCsFixer\Config())
135
+ ->setRules([
136
+ '@PSR12' => true,
137
+ '@PHP82Migration' => true,
138
+ 'strict_param' => true,
139
+ 'array_syntax' => ['syntax' => 'short'],
140
+ 'declare_strict_types' => true,
141
+ 'native_function_invocation' => ['include' => ['@all']],
142
+ 'no_unused_imports' => true,
143
+ 'ordered_imports' => ['sort_algorithm' => 'alpha'],
144
+ 'phpdoc_align' => true,
145
+ 'phpdoc_order' => true,
146
+ 'trailing_comma_in_multiline' => ['elements' => ['arrays']],
147
+ ])
148
+ ->setFinder($finder);
149
+ ```
150
+
151
+ ### Static Analysis
152
+
153
+ Use PHPStan at maximum level. Configuration in `phpstan.neon`:
154
+
155
+ ```neon
156
+ parameters:
157
+ level: max
158
+ paths:
159
+ - src
160
+ - tests
161
+ excludePaths:
162
+ - tests/Fixtures/*
163
+ checkMissingIterableValueType: true
164
+ checkGenericClassInNonGenericObjectType: true
165
+ reportUnmatchedIgnoredErrors: true
166
+ ```
167
+
168
+ ### Testing
169
+
170
+ - **Framework**: PHPUnit 11+
171
+ - **Location**: `tests/` directory
172
+ - **Coverage**: XDebug or PCOV
173
+ - **Coverage Threshold**: 95%+
174
+
175
+ Configuration in `phpunit.xml`:
176
+
177
+ ```xml
178
+ <?xml version="1.0" encoding="UTF-8"?>
179
+ <phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
180
+ xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
181
+ bootstrap="vendor/autoload.php"
182
+ colors="true"
183
+ failOnRisky="true"
184
+ failOnWarning="true"
185
+ cacheDirectory=".phpunit.cache">
186
+ <testsuites>
187
+ <testsuite name="Unit">
188
+ <directory>tests/Unit</directory>
189
+ </testsuite>
190
+ <testsuite name="Integration">
191
+ <directory>tests/Integration</directory>
192
+ </testsuite>
193
+ </testsuites>
194
+ <source>
195
+ <include>
196
+ <directory>src</directory>
197
+ </include>
198
+ </source>
199
+ <coverage>
200
+ <report>
201
+ <html outputDirectory="coverage"/>
202
+ <text outputFile="php://stdout"/>
203
+ </report>
204
+ </coverage>
205
+ </phpunit>
206
+ ```
207
+
208
+ Example test:
209
+
210
+ ```php
211
+ <?php
212
+
213
+ declare(strict_types=1);
214
+
215
+ namespace YourVendor\YourPackage\Tests;
216
+
217
+ use PHPUnit\Framework\TestCase;
218
+ use YourVendor\YourPackage\MyClass;
219
+
220
+ final class MyClassTest extends TestCase
221
+ {
222
+ public function testProcessValidInput(): void
223
+ {
224
+ $myClass = new MyClass();
225
+ $result = $myClass->process('hello');
226
+
227
+ $this->assertSame('HELLO', $result);
228
+ }
229
+
230
+ public function testProcessEmptyInputThrowsException(): void
231
+ {
232
+ $this->expectException(\InvalidArgumentException::class);
233
+ $this->expectExceptionMessage('Input cannot be empty');
234
+
235
+ $myClass = new MyClass();
236
+ $myClass->process('');
237
+ }
238
+ }
239
+ ```
240
+
241
+ ### Type Declarations
242
+
243
+ - Use strict types in all files
244
+ - Type hint all parameters and return types
245
+ - Use union types and nullable types appropriately
246
+
247
+ Example:
248
+
249
+ ```php
250
+ <?php
251
+
252
+ declare(strict_types=1);
253
+
254
+ namespace YourVendor\YourPackage;
255
+
256
+ use InvalidArgumentException;
257
+
258
+ final class DataProcessor
259
+ {
260
+ /**
261
+ * Process the input data and return the result.
262
+ *
263
+ * @param string $input The input to process
264
+ * @return string The processed output
265
+ * @throws InvalidArgumentException If input is empty
266
+ */
267
+ public function process(string $input): string
268
+ {
269
+ if ($input === '') {
270
+ throw new InvalidArgumentException('Input cannot be empty');
271
+ }
272
+
273
+ return strtoupper($input);
274
+ }
275
+
276
+ /**
277
+ * Find a value in the data.
278
+ *
279
+ * @param array<string, mixed> $data
280
+ * @param string $key
281
+ * @return mixed|null
282
+ */
283
+ public function findValue(array $data, string $key): mixed
284
+ {
285
+ return $data[$key] ?? null;
286
+ }
287
+
288
+ /**
289
+ * Process multiple items.
290
+ *
291
+ * @param list<string> $items
292
+ * @return list<string>
293
+ */
294
+ public function processMany(array $items): array
295
+ {
296
+ return array_map(
297
+ fn (string $item): string => $this->process($item),
298
+ $items
299
+ );
300
+ }
301
+ }
302
+ ```
303
+
304
+ ## Documentation
305
+
306
+ - Use PHPDoc blocks for all public methods
307
+ - Include `@param`, `@return`, `@throws` tags
308
+ - Use generics annotations for arrays
309
+
310
+ Example:
311
+
312
+ ```php
313
+ <?php
314
+
315
+ declare(strict_types=1);
316
+
317
+ namespace YourVendor\YourPackage;
318
+
319
+ /**
320
+ * Service for managing user data.
321
+ *
322
+ * This class provides methods for creating, updating, and retrieving user information.
323
+ */
324
+ final class UserService
325
+ {
326
+ /**
327
+ * Find a user by ID.
328
+ *
329
+ * @param positive-int $userId The user ID
330
+ * @return array{id: int, name: string, email: string}|null User data or null if not found
331
+ */
332
+ public function findById(int $userId): ?array
333
+ {
334
+ // Implementation
335
+ }
336
+
337
+ /**
338
+ * Get all users.
339
+ *
340
+ * @return list<array{id: int, name: string, email: string}>
341
+ */
342
+ public function getAll(): array
343
+ {
344
+ // Implementation
345
+ }
346
+ }
347
+ ```
348
+
349
+ ## Project Structure
350
+
351
+ ```
352
+ project/
353
+ ├── composer.json # Composer configuration
354
+ ├── phpunit.xml # PHPUnit configuration
355
+ ├── phpstan.neon # PHPStan configuration
356
+ ├── .php-cs-fixer.php # PHP-CS-Fixer configuration
357
+ ├── README.md # Project overview (allowed in root)
358
+ ├── CHANGELOG.md # Version history (allowed in root)
359
+ ├── LICENSE # Project license (allowed in root)
360
+ ├── src/
361
+ │ └── YourClass.php
362
+ ├── tests/
363
+ │ ├── Unit/
364
+ │ └── Integration/
365
+ └── docs/ # Project documentation
366
+ ```
367
+
368
+ ## CI/CD Requirements
369
+
370
+ Must include GitHub Actions workflows for:
371
+
372
+ 1. **Testing** (`php-test.yml`):
373
+ - Test on ubuntu-latest, windows-latest
374
+ - Test on PHP 8.2, 8.3
375
+ - Upload coverage reports
376
+
377
+ 2. **Linting** (`php-lint.yml`):
378
+ - PHPStan: `composer stan`
379
+ - PHP-CS-Fixer: `composer cs-check`
380
+ - PHPCS: `composer phpcs`
381
+
382
+ ## Package Publication
383
+
384
+ ### Publishing to Packagist
385
+
386
+ **Prerequisites:**
387
+ 1. Create account at https://packagist.org
388
+ 2. Submit your package (automatic sync with GitHub)
389
+ 3. Configure webhook in GitHub for auto-updates
390
+
391
+ **Publishing Workflow:**
392
+
393
+ 1. Update version in composer.json (optional, uses git tags)
394
+ 2. Update CHANGELOG.md
395
+ 3. Run quality checks:
396
+ ```bash
397
+ composer cs-fix
398
+ composer stan
399
+ composer test
400
+ ```
401
+
402
+ 4. Create git tag: `git tag v1.0.0 && git push --tags`
403
+ 5. Packagist automatically updates from GitHub
404
+ 6. Package available at: `https://packagist.org/packages/your-vendor/your-package`
405
+
406
+ **Publishing Checklist:**
407
+
408
+ - ✅ All tests passing
409
+ - ✅ PHPStan at max level passes
410
+ - ✅ Code style conforms to PSR-12
411
+ - ✅ CHANGELOG.md updated
412
+ - ✅ README.md up to date
413
+ - ✅ LICENSE file present
414
+ - ✅ composer.json metadata complete
415
+ - ✅ GitHub repository public
416
+ - ✅ Webhook configured on Packagist
417
+
418
+ **Semantic Versioning:**
419
+
420
+ Packagist uses git tags for versions:
421
+ - Tag format: `v1.0.0`
422
+ - Follows [SemVer](https://semver.org/)
423
+ - Composer constraints: `^1.0`, `~1.0`, `1.0.*`
424
+
425
+ <!-- PHP:END -->
426
+