@hivehub/rulebook 5.7.0 → 5.8.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 (600) hide show
  1. package/.claude/commands/analysis.md +35 -35
  2. package/.claude/commands/continue.md +33 -33
  3. package/.claude/commands/rulebook-decision-create.md +55 -55
  4. package/.claude/commands/rulebook-decision-list.md +15 -15
  5. package/.claude/commands/rulebook-knowledge-add.md +41 -41
  6. package/.claude/commands/rulebook-knowledge-list.md +15 -15
  7. package/.claude/commands/rulebook-memory-save.md +48 -48
  8. package/.claude/commands/rulebook-memory-search.md +47 -47
  9. package/.claude/commands/rulebook-task-apply.md +67 -67
  10. package/.claude/commands/rulebook-task-archive.md +94 -94
  11. package/.claude/commands/rulebook-task-create.md +93 -93
  12. package/.claude/commands/rulebook-task-list.md +42 -42
  13. package/.claude/commands/rulebook-task-show.md +52 -52
  14. package/.claude/commands/rulebook-task-validate.md +53 -53
  15. package/.claude-plugin/marketplace.json +28 -28
  16. package/.claude-plugin/plugin.json +8 -8
  17. package/README.md +86 -0
  18. package/dist/cli/commands/claude.d.ts +17 -0
  19. package/dist/cli/commands/claude.d.ts.map +1 -0
  20. package/dist/cli/commands/claude.js +56 -0
  21. package/dist/cli/commands/claude.js.map +1 -0
  22. package/dist/cli/commands/init.d.ts.map +1 -1
  23. package/dist/cli/commands/init.js +18 -2
  24. package/dist/cli/commands/init.js.map +1 -1
  25. package/dist/cli/commands/update.d.ts.map +1 -1
  26. package/dist/cli/commands/update.js +6 -1
  27. package/dist/cli/commands/update.js.map +1 -1
  28. package/dist/cli/prompts.d.ts +13 -0
  29. package/dist/cli/prompts.d.ts.map +1 -1
  30. package/dist/cli/prompts.js +106 -0
  31. package/dist/cli/prompts.js.map +1 -1
  32. package/dist/core/claude/claude-mcp.d.ts +10 -1
  33. package/dist/core/claude/claude-mcp.d.ts.map +1 -1
  34. package/dist/core/claude/claude-mcp.js +48 -2
  35. package/dist/core/claude/claude-mcp.js.map +1 -1
  36. package/dist/core/claude/claude-settings-manager.d.ts +12 -0
  37. package/dist/core/claude/claude-settings-manager.d.ts.map +1 -1
  38. package/dist/core/claude/claude-settings-manager.js +59 -3
  39. package/dist/core/claude/claude-settings-manager.js.map +1 -1
  40. package/dist/core/detect/detector.d.ts +8 -1
  41. package/dist/core/detect/detector.d.ts.map +1 -1
  42. package/dist/core/detect/detector.js +225 -0
  43. package/dist/core/detect/detector.js.map +1 -1
  44. package/dist/core/detect/library-registry.d.ts +40 -0
  45. package/dist/core/detect/library-registry.d.ts.map +1 -0
  46. package/dist/core/detect/library-registry.js +239 -0
  47. package/dist/core/detect/library-registry.js.map +1 -0
  48. package/dist/core/generators/generator.d.ts +2 -1
  49. package/dist/core/generators/generator.d.ts.map +1 -1
  50. package/dist/core/generators/generator.js +38 -1
  51. package/dist/core/generators/generator.js.map +1 -1
  52. package/dist/core/generators/rules-generator.d.ts +1 -5
  53. package/dist/core/generators/rules-generator.d.ts.map +1 -1
  54. package/dist/core/generators/rules-generator.js +40 -1
  55. package/dist/core/generators/rules-generator.js.map +1 -1
  56. package/dist/index.js +12 -0
  57. package/dist/index.js.map +1 -1
  58. package/dist/mcp/rulebook-server.js +0 -0
  59. package/dist/types.d.ts +13 -0
  60. package/dist/types.d.ts.map +1 -1
  61. package/package.json +23 -22
  62. package/templates/agents/accessibility-reviewer.md +43 -43
  63. package/templates/agents/api-designer.md +42 -42
  64. package/templates/agents/architect.md +51 -51
  65. package/templates/agents/build-engineer.md +36 -36
  66. package/templates/agents/code-reviewer.md +47 -47
  67. package/templates/agents/compiler/codegen-debugger.md +34 -34
  68. package/templates/agents/compiler/stdlib-engineer.md +28 -28
  69. package/templates/agents/compiler/test-coverage-guardian.md +31 -31
  70. package/templates/agents/database-architect.md +41 -41
  71. package/templates/agents/devops-engineer.md +42 -42
  72. package/templates/agents/docs-writer.md +38 -38
  73. package/templates/agents/game-engine/cpp-core-expert.md +35 -35
  74. package/templates/agents/game-engine/render-engineer.md +22 -22
  75. package/templates/agents/game-engine/shader-engineer.md +38 -38
  76. package/templates/agents/game-engine/systems-integration.md +43 -43
  77. package/templates/agents/generic/code-reviewer.md +41 -41
  78. package/templates/agents/generic/docs-writer.md +25 -25
  79. package/templates/agents/generic/project-manager.md +36 -36
  80. package/templates/agents/generic/researcher.md +34 -34
  81. package/templates/agents/generic/test-engineer.md +41 -41
  82. package/templates/agents/i18n-engineer.md +42 -42
  83. package/templates/agents/implementer.md +42 -42
  84. package/templates/agents/migration-engineer.md +42 -42
  85. package/templates/agents/mobile/platform-specialist.md +22 -22
  86. package/templates/agents/mobile/ui-engineer.md +22 -22
  87. package/templates/agents/performance-engineer.md +49 -49
  88. package/templates/agents/project-manager.md +217 -0
  89. package/templates/agents/quality-gatekeeper.md +208 -0
  90. package/templates/agents/refactoring-agent.md +41 -41
  91. package/templates/agents/researcher.md +38 -38
  92. package/templates/agents/security-reviewer.md +40 -40
  93. package/templates/agents/team-lead.md +37 -37
  94. package/templates/agents/tester.md +48 -48
  95. package/templates/agents/ux-reviewer.md +43 -43
  96. package/templates/agents/web-app/api-designer.md +22 -22
  97. package/templates/agents/web-app/backend-engineer.md +30 -30
  98. package/templates/agents/web-app/database-engineer.md +22 -22
  99. package/templates/agents/web-app/frontend-engineer.md +29 -29
  100. package/templates/agents/web-app/security-reviewer.md +32 -32
  101. package/templates/ci/rulebook-review.yml +26 -26
  102. package/templates/claude-workflows/bugfix.js +94 -0
  103. package/templates/claude-workflows/feature-pipeline.js +88 -0
  104. package/templates/claude-workflows/release-gate.js +64 -0
  105. package/templates/claude-workflows/review-fanout.js +125 -0
  106. package/templates/claude-workflows/rulebook-driver.js +382 -0
  107. package/templates/claude-workflows/spec-author.js +133 -0
  108. package/templates/cli/AIDER.md +49 -49
  109. package/templates/cli/AMAZON_Q.md +25 -25
  110. package/templates/cli/AUGGIE.md +32 -32
  111. package/templates/cli/CLAUDE.md +117 -117
  112. package/templates/cli/CLINE.md +99 -99
  113. package/templates/cli/CODEBUDDY.md +20 -20
  114. package/templates/cli/CODEIUM.md +20 -20
  115. package/templates/cli/CODEX.md +21 -21
  116. package/templates/cli/CONTINUE.md +34 -34
  117. package/templates/cli/CURSOR_CLI.md +62 -62
  118. package/templates/cli/FACTORY.md +18 -18
  119. package/templates/cli/GEMINI.md +35 -35
  120. package/templates/cli/KILOCODE.md +18 -18
  121. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  122. package/templates/commands/rulebook-decision-create.md +55 -55
  123. package/templates/commands/rulebook-decision-list.md +15 -15
  124. package/templates/commands/rulebook-knowledge-add.md +41 -41
  125. package/templates/commands/rulebook-knowledge-list.md +15 -15
  126. package/templates/commands/rulebook-memory-save.md +48 -48
  127. package/templates/commands/rulebook-memory-search.md +47 -47
  128. package/templates/commands/rulebook-task-apply.md +67 -67
  129. package/templates/commands/rulebook-task-archive.md +94 -94
  130. package/templates/commands/rulebook-task-create.md +93 -93
  131. package/templates/commands/rulebook-task-list.md +42 -42
  132. package/templates/commands/rulebook-task-show.md +52 -52
  133. package/templates/commands/rulebook-task-validate.md +53 -53
  134. package/templates/compact-context/_default.md +23 -23
  135. package/templates/compact-context/cpp.md +26 -26
  136. package/templates/compact-context/go.md +26 -26
  137. package/templates/compact-context/python.md +26 -26
  138. package/templates/compact-context/rust.md +28 -28
  139. package/templates/compact-context/typescript.md +29 -29
  140. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  141. package/templates/core/AGENT_AUTOMATION.md +296 -296
  142. package/templates/core/CLAUDE_MD_v2.md +90 -90
  143. package/templates/core/DAG.md +304 -304
  144. package/templates/core/DECISIONS.md +38 -38
  145. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  146. package/templates/core/KNOWLEDGE.md +49 -49
  147. package/templates/core/MULTI_AGENT.md +74 -74
  148. package/templates/core/PLANS.md +28 -28
  149. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  150. package/templates/core/RULEBOOK.md +1947 -1947
  151. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  152. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  153. package/templates/git/CI_CD_PATTERNS.md +661 -661
  154. package/templates/git/GITHUB_ACTIONS.md +728 -728
  155. package/templates/git/GITLAB_CI.md +730 -730
  156. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  157. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  158. package/templates/hooks/COMMIT_MSG.md +530 -530
  159. package/templates/hooks/POST_CHECKOUT.md +546 -546
  160. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  161. package/templates/hooks/PRE_COMMIT.md +414 -414
  162. package/templates/hooks/PRE_PUSH.md +601 -601
  163. package/templates/hooks/check-context-and-handoff.sh +16 -6
  164. package/templates/hooks/update-check.ps1 +84 -0
  165. package/templates/hooks/update-check.sh +103 -0
  166. package/templates/ides/CONTINUE_RULES.md +16 -16
  167. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
  168. package/templates/ides/GEMINI_RULES.md +17 -17
  169. package/templates/ides/WINDSURF_RULES.md +14 -14
  170. package/templates/languages/C.md +333 -333
  171. package/templates/languages/CPP.md +743 -743
  172. package/templates/languages/CSHARP.md +417 -417
  173. package/templates/languages/ELIXIR.md +454 -454
  174. package/templates/languages/ERLANG.md +361 -361
  175. package/templates/languages/GO.md +645 -645
  176. package/templates/languages/HASKELL.md +177 -177
  177. package/templates/languages/JAVA.md +607 -607
  178. package/templates/languages/JAVASCRIPT.md +631 -631
  179. package/templates/languages/JULIA.md +97 -97
  180. package/templates/languages/KOTLIN.md +511 -511
  181. package/templates/languages/LISP.md +100 -100
  182. package/templates/languages/LUA.md +74 -74
  183. package/templates/languages/OBJECTIVEC.md +90 -90
  184. package/templates/languages/PHP.md +416 -416
  185. package/templates/languages/PYTHON.md +682 -682
  186. package/templates/languages/RUBY.md +421 -421
  187. package/templates/languages/RUST.md +477 -477
  188. package/templates/languages/SAS.md +73 -73
  189. package/templates/languages/SCALA.md +348 -348
  190. package/templates/languages/SOLIDITY.md +580 -580
  191. package/templates/languages/SQL.md +137 -137
  192. package/templates/languages/SWIFT.md +466 -466
  193. package/templates/languages/TYPESCRIPT.md +591 -591
  194. package/templates/languages/ZIG.md +265 -265
  195. package/templates/libraries/go/ECHO.md +18 -0
  196. package/templates/libraries/go/GIN.md +18 -0
  197. package/templates/libraries/go/GORM.md +18 -0
  198. package/templates/libraries/python/DJANGO.md +18 -0
  199. package/templates/libraries/python/FASTAPI.md +18 -0
  200. package/templates/libraries/python/FLASK.md +17 -0
  201. package/templates/libraries/python/PYDANTIC.md +17 -0
  202. package/templates/libraries/python/PYTEST.md +17 -0
  203. package/templates/libraries/python/SQLALCHEMY.md +17 -0
  204. package/templates/libraries/rust/ACTIX.md +17 -0
  205. package/templates/libraries/rust/AXUM.md +18 -0
  206. package/templates/libraries/rust/SERDE.md +16 -0
  207. package/templates/libraries/rust/SQLX.md +17 -0
  208. package/templates/libraries/rust/TOKIO.md +16 -0
  209. package/templates/libraries/typescript/ANGULAR.md +17 -0
  210. package/templates/libraries/typescript/DRIZZLE.md +16 -0
  211. package/templates/libraries/typescript/EXPRESS.md +17 -0
  212. package/templates/libraries/typescript/HEROUI.md +16 -0
  213. package/templates/libraries/typescript/JEST.md +17 -0
  214. package/templates/libraries/typescript/NESTJS.md +17 -0
  215. package/templates/libraries/typescript/NEXT.md +18 -0
  216. package/templates/libraries/typescript/PRISMA.md +16 -0
  217. package/templates/libraries/typescript/RADIX.md +16 -0
  218. package/templates/libraries/typescript/REACT.md +18 -0
  219. package/templates/libraries/typescript/SHADCN.md +16 -0
  220. package/templates/libraries/typescript/SVELTE.md +16 -0
  221. package/templates/libraries/typescript/TAILWIND.md +16 -0
  222. package/templates/libraries/typescript/TRPC.md +16 -0
  223. package/templates/libraries/typescript/VITEST.md +17 -0
  224. package/templates/libraries/typescript/VUE.md +17 -0
  225. package/templates/libraries/typescript/ZOD.md +17 -0
  226. package/templates/modules/ATLASSIAN.md +255 -255
  227. package/templates/modules/CONTEXT7.md +54 -54
  228. package/templates/modules/FIGMA.md +267 -267
  229. package/templates/modules/GITHUB_MCP.md +64 -64
  230. package/templates/modules/GRAFANA.md +328 -328
  231. package/templates/modules/MEMORY.md +126 -126
  232. package/templates/modules/NOTION.md +247 -247
  233. package/templates/modules/PLAYWRIGHT.md +90 -90
  234. package/templates/modules/RULEBOOK_MCP.md +208 -208
  235. package/templates/modules/SERENA.md +337 -337
  236. package/templates/modules/SUPABASE.md +223 -223
  237. package/templates/modules/SYNAP.md +69 -69
  238. package/templates/modules/VECTORIZER.md +63 -63
  239. package/templates/modules/sequential-thinking.md +42 -42
  240. package/templates/rules/consult-analysis-before-implementing.md +23 -23
  241. package/templates/rules/cpp.md +46 -46
  242. package/templates/rules/csharp.md +44 -44
  243. package/templates/rules/diagnostic-first.md +39 -39
  244. package/templates/rules/fail-twice-escalate.md +46 -46
  245. package/templates/rules/follow-task-sequence.md +36 -36
  246. package/templates/rules/git-safety.md +29 -29
  247. package/templates/rules/go.md +40 -40
  248. package/templates/rules/incremental-implementation.md +56 -56
  249. package/templates/rules/incremental-tests.md +29 -29
  250. package/templates/rules/java.md +43 -43
  251. package/templates/rules/javascript.md +39 -39
  252. package/templates/rules/knowledge-base-usage.md +41 -41
  253. package/templates/rules/multi-agent-teams.md +75 -75
  254. package/templates/rules/no-deferred.md +31 -31
  255. package/templates/rules/no-shortcuts.md +30 -30
  256. package/templates/rules/python.md +43 -43
  257. package/templates/rules/research-first.md +30 -30
  258. package/templates/rules/respect-handoff-trigger.md +41 -41
  259. package/templates/rules/rust.md +40 -40
  260. package/templates/rules/sequential-editing.md +21 -21
  261. package/templates/rules/session-workflow.md +24 -24
  262. package/templates/rules/task-decomposition.md +32 -32
  263. package/templates/rules/typescript.md +40 -40
  264. package/templates/skills/cli/aider/SKILL.md +59 -59
  265. package/templates/skills/cli/amazon-q/SKILL.md +35 -35
  266. package/templates/skills/cli/auggie/SKILL.md +42 -42
  267. package/templates/skills/cli/claude/SKILL.md +42 -42
  268. package/templates/skills/cli/cline/SKILL.md +42 -42
  269. package/templates/skills/cli/codebuddy/SKILL.md +30 -30
  270. package/templates/skills/cli/codeium/SKILL.md +30 -30
  271. package/templates/skills/cli/codex/SKILL.md +31 -31
  272. package/templates/skills/cli/continue/SKILL.md +44 -44
  273. package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
  274. package/templates/skills/cli/factory/SKILL.md +28 -28
  275. package/templates/skills/cli/gemini/SKILL.md +45 -45
  276. package/templates/skills/cli/kilocode/SKILL.md +28 -28
  277. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  278. package/templates/skills/core/dag/SKILL.md +314 -314
  279. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  280. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  281. package/templates/skills/core/rulebook/SKILL.md +176 -176
  282. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  283. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  284. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  285. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  286. package/templates/skills/dev/analysis/SKILL.md +19 -19
  287. package/templates/skills/dev/api-design/SKILL.md +15 -15
  288. package/templates/skills/dev/architect/SKILL.md +17 -17
  289. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  290. package/templates/skills/dev/db-design/SKILL.md +15 -15
  291. package/templates/skills/dev/debug/SKILL.md +16 -16
  292. package/templates/skills/dev/deploy/SKILL.md +17 -17
  293. package/templates/skills/dev/docs/SKILL.md +17 -17
  294. package/templates/skills/dev/handoff/SKILL.md +27 -27
  295. package/templates/skills/dev/migrate/SKILL.md +15 -15
  296. package/templates/skills/dev/perf/SKILL.md +17 -17
  297. package/templates/skills/dev/refactor/SKILL.md +17 -17
  298. package/templates/skills/dev/research/SKILL.md +14 -14
  299. package/templates/skills/dev/review/SKILL.md +18 -18
  300. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  301. package/templates/skills/dev/spec/SKILL.md +65 -0
  302. package/templates/skills/ides/copilot/SKILL.md +47 -47
  303. package/templates/skills/ides/cursor/SKILL.md +53 -53
  304. package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
  305. package/templates/skills/ides/replit/SKILL.md +46 -46
  306. package/templates/skills/ides/tabnine/SKILL.md +39 -39
  307. package/templates/skills/ides/vscode/SKILL.md +50 -50
  308. package/templates/skills/ides/windsurf/SKILL.md +46 -46
  309. package/templates/skills/ides/zed/SKILL.md +42 -42
  310. package/templates/skills/languages/c/SKILL.md +343 -343
  311. package/templates/skills/languages/cpp/SKILL.md +753 -753
  312. package/templates/skills/languages/csharp/SKILL.md +427 -427
  313. package/templates/skills/languages/elixir/SKILL.md +464 -464
  314. package/templates/skills/languages/erlang/SKILL.md +371 -371
  315. package/templates/skills/languages/go/SKILL.md +655 -655
  316. package/templates/skills/languages/haskell/SKILL.md +187 -187
  317. package/templates/skills/languages/java/SKILL.md +617 -617
  318. package/templates/skills/languages/javascript/SKILL.md +641 -641
  319. package/templates/skills/languages/julia/SKILL.md +107 -107
  320. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  321. package/templates/skills/languages/lisp/SKILL.md +110 -110
  322. package/templates/skills/languages/lua/SKILL.md +84 -84
  323. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  324. package/templates/skills/languages/php/SKILL.md +426 -426
  325. package/templates/skills/languages/python/SKILL.md +692 -692
  326. package/templates/skills/languages/ruby/SKILL.md +431 -431
  327. package/templates/skills/languages/rust/SKILL.md +487 -487
  328. package/templates/skills/languages/sas/SKILL.md +83 -83
  329. package/templates/skills/languages/scala/SKILL.md +358 -358
  330. package/templates/skills/languages/solidity/SKILL.md +590 -590
  331. package/templates/skills/languages/sql/SKILL.md +147 -147
  332. package/templates/skills/languages/swift/SKILL.md +476 -476
  333. package/templates/skills/languages/typescript/SKILL.md +302 -302
  334. package/templates/skills/languages/zig/SKILL.md +275 -275
  335. package/templates/skills/modules/atlassian/SKILL.md +265 -265
  336. package/templates/skills/modules/context7/SKILL.md +64 -64
  337. package/templates/skills/modules/figma/SKILL.md +277 -277
  338. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  339. package/templates/skills/modules/grafana/SKILL.md +338 -338
  340. package/templates/skills/modules/memory/SKILL.md +73 -73
  341. package/templates/skills/modules/notion/SKILL.md +257 -257
  342. package/templates/skills/modules/playwright/SKILL.md +100 -100
  343. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  344. package/templates/skills/modules/serena/SKILL.md +347 -347
  345. package/templates/skills/modules/supabase/SKILL.md +233 -233
  346. package/templates/skills/modules/synap/SKILL.md +79 -79
  347. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  348. package/templates/workflows/typescript-test.yml +9 -3
  349. package/dist/agents/ralph-parser.d.ts +0 -91
  350. package/dist/agents/ralph-parser.d.ts.map +0 -1
  351. package/dist/agents/ralph-parser.js +0 -415
  352. package/dist/agents/ralph-parser.js.map +0 -1
  353. package/dist/cli/commands/analysis.d.ts +0 -8
  354. package/dist/cli/commands/analysis.d.ts.map +0 -1
  355. package/dist/cli/commands/analysis.js +0 -78
  356. package/dist/cli/commands/analysis.js.map +0 -1
  357. package/dist/cli/commands/compress.d.ts +0 -18
  358. package/dist/cli/commands/compress.d.ts.map +0 -1
  359. package/dist/cli/commands/compress.js +0 -100
  360. package/dist/cli/commands/compress.js.map +0 -1
  361. package/dist/cli/commands/ralph.d.ts +0 -45
  362. package/dist/cli/commands/ralph.d.ts.map +0 -1
  363. package/dist/cli/commands/ralph.js +0 -694
  364. package/dist/cli/commands/ralph.js.map +0 -1
  365. package/dist/cli/docs-prompts.d.ts +0 -3
  366. package/dist/cli/docs-prompts.d.ts.map +0 -1
  367. package/dist/cli/docs-prompts.js +0 -45
  368. package/dist/cli/docs-prompts.js.map +0 -1
  369. package/dist/core/agent-manager.d.ts +0 -69
  370. package/dist/core/agent-manager.d.ts.map +0 -1
  371. package/dist/core/agent-manager.js +0 -476
  372. package/dist/core/agent-manager.js.map +0 -1
  373. package/dist/core/agent-template-engine.d.ts +0 -51
  374. package/dist/core/agent-template-engine.d.ts.map +0 -1
  375. package/dist/core/agent-template-engine.js +0 -291
  376. package/dist/core/agent-template-engine.js.map +0 -1
  377. package/dist/core/analysis-manager.d.ts +0 -56
  378. package/dist/core/analysis-manager.d.ts.map +0 -1
  379. package/dist/core/analysis-manager.js +0 -218
  380. package/dist/core/analysis-manager.js.map +0 -1
  381. package/dist/core/auto-fixer.d.ts +0 -14
  382. package/dist/core/auto-fixer.d.ts.map +0 -1
  383. package/dist/core/auto-fixer.js +0 -207
  384. package/dist/core/auto-fixer.js.map +0 -1
  385. package/dist/core/changelog-generator.d.ts +0 -44
  386. package/dist/core/changelog-generator.d.ts.map +0 -1
  387. package/dist/core/changelog-generator.js +0 -222
  388. package/dist/core/changelog-generator.js.map +0 -1
  389. package/dist/core/claude-mcp.d.ts +0 -59
  390. package/dist/core/claude-mcp.d.ts.map +0 -1
  391. package/dist/core/claude-mcp.js +0 -220
  392. package/dist/core/claude-mcp.js.map +0 -1
  393. package/dist/core/claude-md-generator.d.ts +0 -52
  394. package/dist/core/claude-md-generator.d.ts.map +0 -1
  395. package/dist/core/claude-md-generator.js +0 -104
  396. package/dist/core/claude-md-generator.js.map +0 -1
  397. package/dist/core/claude-settings-manager.d.ts +0 -44
  398. package/dist/core/claude-settings-manager.d.ts.map +0 -1
  399. package/dist/core/claude-settings-manager.js +0 -191
  400. package/dist/core/claude-settings-manager.js.map +0 -1
  401. package/dist/core/cli-bridge.d.ts +0 -113
  402. package/dist/core/cli-bridge.d.ts.map +0 -1
  403. package/dist/core/cli-bridge.js +0 -1094
  404. package/dist/core/cli-bridge.js.map +0 -1
  405. package/dist/core/compact-context-manager.d.ts +0 -34
  406. package/dist/core/compact-context-manager.d.ts.map +0 -1
  407. package/dist/core/compact-context-manager.js +0 -60
  408. package/dist/core/compact-context-manager.js.map +0 -1
  409. package/dist/core/complexity-detector.d.ts +0 -36
  410. package/dist/core/complexity-detector.d.ts.map +0 -1
  411. package/dist/core/complexity-detector.js +0 -334
  412. package/dist/core/complexity-detector.js.map +0 -1
  413. package/dist/core/compress/compressor.d.ts +0 -60
  414. package/dist/core/compress/compressor.d.ts.map +0 -1
  415. package/dist/core/compress/compressor.js +0 -232
  416. package/dist/core/compress/compressor.js.map +0 -1
  417. package/dist/core/compress/discover.d.ts +0 -19
  418. package/dist/core/compress/discover.d.ts.map +0 -1
  419. package/dist/core/compress/discover.js +0 -100
  420. package/dist/core/compress/discover.js.map +0 -1
  421. package/dist/core/compress/validator.d.ts +0 -47
  422. package/dist/core/compress/validator.d.ts.map +0 -1
  423. package/dist/core/compress/validator.js +0 -131
  424. package/dist/core/compress/validator.js.map +0 -1
  425. package/dist/core/config-manager.d.ts +0 -86
  426. package/dist/core/config-manager.d.ts.map +0 -1
  427. package/dist/core/config-manager.js +0 -621
  428. package/dist/core/config-manager.js.map +0 -1
  429. package/dist/core/coverage-checker.d.ts +0 -14
  430. package/dist/core/coverage-checker.d.ts.map +0 -1
  431. package/dist/core/coverage-checker.js +0 -176
  432. package/dist/core/coverage-checker.js.map +0 -1
  433. package/dist/core/cursor-mdc-generator.d.ts +0 -30
  434. package/dist/core/cursor-mdc-generator.d.ts.map +0 -1
  435. package/dist/core/cursor-mdc-generator.js +0 -98
  436. package/dist/core/cursor-mdc-generator.js.map +0 -1
  437. package/dist/core/decision-manager.d.ts +0 -25
  438. package/dist/core/decision-manager.d.ts.map +0 -1
  439. package/dist/core/decision-manager.js +0 -183
  440. package/dist/core/decision-manager.js.map +0 -1
  441. package/dist/core/dependency-checker.d.ts +0 -21
  442. package/dist/core/dependency-checker.d.ts.map +0 -1
  443. package/dist/core/dependency-checker.js +0 -247
  444. package/dist/core/dependency-checker.js.map +0 -1
  445. package/dist/core/detector.d.ts +0 -27
  446. package/dist/core/detector.d.ts.map +0 -1
  447. package/dist/core/detector.js +0 -1763
  448. package/dist/core/detector.js.map +0 -1
  449. package/dist/core/docs-generator.d.ts +0 -9
  450. package/dist/core/docs-generator.d.ts.map +0 -1
  451. package/dist/core/docs-generator.js +0 -531
  452. package/dist/core/docs-generator.js.map +0 -1
  453. package/dist/core/doctor.d.ts +0 -19
  454. package/dist/core/doctor.d.ts.map +0 -1
  455. package/dist/core/doctor.js +0 -229
  456. package/dist/core/doctor.js.map +0 -1
  457. package/dist/core/generator.d.ts +0 -56
  458. package/dist/core/generator.d.ts.map +0 -1
  459. package/dist/core/generator.js +0 -1193
  460. package/dist/core/generator.js.map +0 -1
  461. package/dist/core/github-issues-importer.d.ts +0 -82
  462. package/dist/core/github-issues-importer.d.ts.map +0 -1
  463. package/dist/core/github-issues-importer.js +0 -161
  464. package/dist/core/github-issues-importer.js.map +0 -1
  465. package/dist/core/gitignore-generator.d.ts +0 -13
  466. package/dist/core/gitignore-generator.d.ts.map +0 -1
  467. package/dist/core/gitignore-generator.js +0 -307
  468. package/dist/core/gitignore-generator.js.map +0 -1
  469. package/dist/core/health-scorer.d.ts +0 -61
  470. package/dist/core/health-scorer.d.ts.map +0 -1
  471. package/dist/core/health-scorer.js +0 -638
  472. package/dist/core/health-scorer.js.map +0 -1
  473. package/dist/core/iteration-tracker.d.ts +0 -85
  474. package/dist/core/iteration-tracker.d.ts.map +0 -1
  475. package/dist/core/iteration-tracker.js +0 -295
  476. package/dist/core/iteration-tracker.js.map +0 -1
  477. package/dist/core/knowledge-manager.d.ts +0 -24
  478. package/dist/core/knowledge-manager.d.ts.map +0 -1
  479. package/dist/core/knowledge-manager.js +0 -173
  480. package/dist/core/knowledge-manager.js.map +0 -1
  481. package/dist/core/learn-manager.d.ts +0 -29
  482. package/dist/core/learn-manager.d.ts.map +0 -1
  483. package/dist/core/learn-manager.js +0 -159
  484. package/dist/core/learn-manager.js.map +0 -1
  485. package/dist/core/mcp-reference-generator.d.ts +0 -13
  486. package/dist/core/mcp-reference-generator.d.ts.map +0 -1
  487. package/dist/core/mcp-reference-generator.js +0 -66
  488. package/dist/core/mcp-reference-generator.js.map +0 -1
  489. package/dist/core/minimal-scaffolder.d.ts +0 -8
  490. package/dist/core/minimal-scaffolder.d.ts.map +0 -1
  491. package/dist/core/minimal-scaffolder.js +0 -51
  492. package/dist/core/minimal-scaffolder.js.map +0 -1
  493. package/dist/core/modern-console.d.ts +0 -98
  494. package/dist/core/modern-console.d.ts.map +0 -1
  495. package/dist/core/modern-console.js +0 -556
  496. package/dist/core/modern-console.js.map +0 -1
  497. package/dist/core/multi-tool-generator.d.ts +0 -59
  498. package/dist/core/multi-tool-generator.d.ts.map +0 -1
  499. package/dist/core/multi-tool-generator.js +0 -157
  500. package/dist/core/multi-tool-generator.js.map +0 -1
  501. package/dist/core/override-manager.d.ts +0 -23
  502. package/dist/core/override-manager.d.ts.map +0 -1
  503. package/dist/core/override-manager.js +0 -82
  504. package/dist/core/override-manager.js.map +0 -1
  505. package/dist/core/plans-manager.d.ts +0 -46
  506. package/dist/core/plans-manager.d.ts.map +0 -1
  507. package/dist/core/plans-manager.js +0 -158
  508. package/dist/core/plans-manager.js.map +0 -1
  509. package/dist/core/prd-generator.d.ts +0 -48
  510. package/dist/core/prd-generator.d.ts.map +0 -1
  511. package/dist/core/prd-generator.js +0 -233
  512. package/dist/core/prd-generator.js.map +0 -1
  513. package/dist/core/ralph-manager.d.ts +0 -163
  514. package/dist/core/ralph-manager.d.ts.map +0 -1
  515. package/dist/core/ralph-manager.js +0 -555
  516. package/dist/core/ralph-manager.js.map +0 -1
  517. package/dist/core/ralph-parallel.d.ts +0 -55
  518. package/dist/core/ralph-parallel.d.ts.map +0 -1
  519. package/dist/core/ralph-parallel.js +0 -201
  520. package/dist/core/ralph-parallel.js.map +0 -1
  521. package/dist/core/ralph-plan-checkpoint.d.ts +0 -58
  522. package/dist/core/ralph-plan-checkpoint.d.ts.map +0 -1
  523. package/dist/core/ralph-plan-checkpoint.js +0 -154
  524. package/dist/core/ralph-plan-checkpoint.js.map +0 -1
  525. package/dist/core/ralph-scripts.d.ts +0 -12
  526. package/dist/core/ralph-scripts.d.ts.map +0 -1
  527. package/dist/core/ralph-scripts.js +0 -50
  528. package/dist/core/ralph-scripts.js.map +0 -1
  529. package/dist/core/review-manager.d.ts +0 -74
  530. package/dist/core/review-manager.d.ts.map +0 -1
  531. package/dist/core/review-manager.js +0 -371
  532. package/dist/core/review-manager.js.map +0 -1
  533. package/dist/core/rules-generator.d.ts +0 -73
  534. package/dist/core/rules-generator.d.ts.map +0 -1
  535. package/dist/core/rules-generator.js +0 -202
  536. package/dist/core/rules-generator.js.map +0 -1
  537. package/dist/core/skills-manager.d.ts +0 -126
  538. package/dist/core/skills-manager.d.ts.map +0 -1
  539. package/dist/core/skills-manager.js +0 -654
  540. package/dist/core/skills-manager.js.map +0 -1
  541. package/dist/core/state-writer.d.ts +0 -35
  542. package/dist/core/state-writer.d.ts.map +0 -1
  543. package/dist/core/state-writer.js +0 -81
  544. package/dist/core/state-writer.js.map +0 -1
  545. package/dist/core/task-manager.d.ts +0 -127
  546. package/dist/core/task-manager.d.ts.map +0 -1
  547. package/dist/core/task-manager.js +0 -607
  548. package/dist/core/task-manager.js.map +0 -1
  549. package/dist/core/telemetry.d.ts +0 -29
  550. package/dist/core/telemetry.d.ts.map +0 -1
  551. package/dist/core/telemetry.js +0 -57
  552. package/dist/core/telemetry.js.map +0 -1
  553. package/dist/core/validator.d.ts +0 -21
  554. package/dist/core/validator.d.ts.map +0 -1
  555. package/dist/core/validator.js +0 -177
  556. package/dist/core/validator.js.map +0 -1
  557. package/dist/core/version-bumper.d.ts +0 -19
  558. package/dist/core/version-bumper.d.ts.map +0 -1
  559. package/dist/core/version-bumper.js +0 -180
  560. package/dist/core/version-bumper.js.map +0 -1
  561. package/dist/core/watcher.d.ts +0 -9
  562. package/dist/core/watcher.d.ts.map +0 -1
  563. package/dist/core/watcher.js +0 -22
  564. package/dist/core/watcher.js.map +0 -1
  565. package/dist/core/workflow-generator.d.ts +0 -15
  566. package/dist/core/workflow-generator.d.ts.map +0 -1
  567. package/dist/core/workflow-generator.js +0 -391
  568. package/dist/core/workflow-generator.js.map +0 -1
  569. package/dist/hooks/terse-activate.d.ts +0 -59
  570. package/dist/hooks/terse-activate.d.ts.map +0 -1
  571. package/dist/hooks/terse-activate.js +0 -149
  572. package/dist/hooks/terse-activate.js.map +0 -1
  573. package/dist/hooks/terse-config.d.ts +0 -51
  574. package/dist/hooks/terse-config.d.ts.map +0 -1
  575. package/dist/hooks/terse-config.js +0 -130
  576. package/dist/hooks/terse-config.js.map +0 -1
  577. package/dist/hooks/terse-mode-tracker.d.ts +0 -78
  578. package/dist/hooks/terse-mode-tracker.d.ts.map +0 -1
  579. package/dist/hooks/terse-mode-tracker.js +0 -213
  580. package/dist/hooks/terse-mode-tracker.js.map +0 -1
  581. package/dist/memory/hnsw-index.d.ts +0 -68
  582. package/dist/memory/hnsw-index.d.ts.map +0 -1
  583. package/dist/memory/hnsw-index.js +0 -544
  584. package/dist/memory/hnsw-index.js.map +0 -1
  585. package/dist/memory/memory-cache.d.ts +0 -33
  586. package/dist/memory/memory-cache.d.ts.map +0 -1
  587. package/dist/memory/memory-cache.js +0 -85
  588. package/dist/memory/memory-cache.js.map +0 -1
  589. package/dist/memory/memory-search.d.ts +0 -42
  590. package/dist/memory/memory-search.d.ts.map +0 -1
  591. package/dist/memory/memory-search.js +0 -180
  592. package/dist/memory/memory-search.js.map +0 -1
  593. package/dist/memory/memory-store.d.ts +0 -84
  594. package/dist/memory/memory-store.d.ts.map +0 -1
  595. package/dist/memory/memory-store.js +0 -566
  596. package/dist/memory/memory-store.js.map +0 -1
  597. package/dist/memory/memory-vectorizer.d.ts +0 -29
  598. package/dist/memory/memory-vectorizer.d.ts.map +0 -1
  599. package/dist/memory/memory-vectorizer.js +0 -199
  600. package/dist/memory/memory-vectorizer.js.map +0 -1
@@ -0,0 +1,17 @@
1
+ <!-- PYTEST:START -->
2
+ # pytest Rules
3
+
4
+ ## Conventions
5
+ - Use `pytest.fixture` with explicit `scope` (`"function"` default, `"session"` for expensive setup like DB engines).
6
+ - Prefer `conftest.py` for shared fixtures; scope conftest files to the directory that needs them.
7
+ - Use `pytest.mark.parametrize` for data-driven tests; name parameters descriptively with `ids=` when values are not self-documenting.
8
+ - Assert with plain `assert` statements — pytest rewrites them for detailed diffs; avoid `unittest.TestCase` assertion methods.
9
+ - Use `pytest-asyncio` with `asyncio_mode = "auto"` in `pyproject.toml` for async test functions; mark individual tests with `@pytest.mark.asyncio` only when not using auto mode.
10
+ - Isolate side effects with `monkeypatch` or `unittest.mock.patch` as a context manager; prefer `monkeypatch` for environment variables and file system changes.
11
+
12
+ ## Avoid
13
+ - Using `setup_method`/`teardown_method` — replace with fixtures using appropriate scope.
14
+ - Importing test utilities from test files directly; put shared helpers in `conftest.py` or a `tests/helpers/` module.
15
+ - Writing tests that depend on execution order — each test must be independently runnable.
16
+ - Silencing warnings with `filterwarnings = "ignore"` globally; address root causes or scope suppressions narrowly.
17
+ <!-- PYTEST:END -->
@@ -0,0 +1,17 @@
1
+ <!-- SQLALCHEMY:START -->
2
+ # SQLAlchemy Rules
3
+
4
+ ## Conventions
5
+ - Use SQLAlchemy 2.x-style mapped classes with `DeclarativeBase` and `Mapped[T]` / `mapped_column()` type annotations.
6
+ - Create one `sessionmaker` / `async_sessionmaker` bound to the engine at startup; inject sessions via dependency injection, not global state.
7
+ - Expire sessions explicitly after commit when needed (`session.expire_on_commit=False` for async patterns to avoid lazy-load errors).
8
+ - Use `select()`, `update()`, `delete()` Core statements with ORM entities rather than legacy `session.query()` API.
9
+ - Enable `echo=True` only in development; use `logging.getLogger("sqlalchemy.engine")` for production query logging.
10
+ - Define relationships with `relationship()` and explicit `back_populates`; set `lazy="selectin"` or `lazy="joined"` deliberately.
11
+
12
+ ## Avoid
13
+ - Mixing sync and async sessions in the same code path — choose one execution style per module.
14
+ - Using `session.execute(text(...))` with f-strings — always bind parameters with `:name` placeholders.
15
+ - Relying on implicit lazy loading in async contexts; it raises `MissingGreenlet` — load eagerly or use `selectinload`.
16
+ - Calling `session.commit()` inside a repository method when the session lifecycle is owned by the caller.
17
+ <!-- SQLALCHEMY:END -->
@@ -0,0 +1,17 @@
1
+ <!-- ACTIX:START -->
2
+ # Actix Web Rules
3
+
4
+ ## Conventions
5
+ - Bootstrap with `HttpServer::new(|| App::new().service(...)).bind(addr)?.run().await`
6
+ - Register shared data with `App::app_data(web::Data::new(state))`; extract it in handlers via `web::Data<T>`
7
+ - Group related routes under `web::scope("/prefix")` and register with `App::service(scope)`
8
+ - Use `web::Json<T>` extractor for request bodies; configure size limits via `web::JsonConfig::default().limit(bytes)`
9
+ - Return `impl Responder` or `actix_web::Result<impl Responder>`; use `HttpResponse::Ok().json(body)` for JSON responses
10
+ - Define custom error types implementing `actix_web::ResponseError` to produce structured error responses with correct status codes
11
+
12
+ ## Avoid
13
+ - Do not call blocking code directly in handler async functions — use `web::block(|| ...)` to offload to the blocking thread pool
14
+ - Do not hold `Mutex`-locked state across `.await` points inside handlers; deadlocks are silent
15
+ - Do not clone `web::Data<T>` to pass ownership — `Data<T>` is already an `Arc` wrapper, pass it directly
16
+ - Do not ignore the `JsonConfig` error handler; without it, malformed JSON returns a generic 400 with no actionable message
17
+ <!-- ACTIX:END -->
@@ -0,0 +1,18 @@
1
+ <!-- AXUM:START -->
2
+ # Axum Rules
3
+
4
+ ## Conventions
5
+ - Define routes with `Router::new().route("/path", get(handler))` and compose sub-routers via `Router::merge` or `Router::nest`
6
+ - Extract shared state via `State<Arc<AppState>>` derived from `axum::extract::State`; register it with `Router::with_state`
7
+ - Use typed extractors (`Json<T>`, `Path<T>`, `Query<T>`) as handler function arguments; let Axum reject invalid requests automatically
8
+ - Return `impl IntoResponse` from handlers; use `(StatusCode, Json<T>)` tuples or a custom error type that implements `IntoResponse`
9
+ - Apply middleware with `tower::ServiceBuilder` and `.layer()`; keep middleware order explicit (outermost = first to run)
10
+ - Handle errors uniformly: define an `AppError(anyhow::Error)` newtype that implements `IntoResponse` returning structured JSON
11
+ - Use `axum::serve(listener, app)` (axum 0.7+) instead of the deprecated `axum::Server::bind`
12
+
13
+ ## Avoid
14
+ - Do not store non-`Clone` or non-`Send` types directly in `State`; wrap in `Arc<Mutex<T>>` when mutation is needed
15
+ - Do not ignore extractor rejection by returning `200 OK` — let the extractor's `rejection` propagate or map it explicitly
16
+ - Do not mix `axum` 0.6 and 0.7 APIs in the same project; the handler and middleware traits changed incompatibly
17
+ - Do not spawn blocking work inside async handlers — use `tokio::task::spawn_blocking` instead
18
+ <!-- AXUM:END -->
@@ -0,0 +1,16 @@
1
+ <!-- SERDE:START -->
2
+ # Serde Rules
3
+
4
+ ## Conventions
5
+ - Derive `Serialize, Deserialize` on data types; add `#[serde(deny_unknown_fields)]` on strict API contracts to reject unexpected keys
6
+ - Use `#[serde(rename_all = "camelCase")]` at the struct level instead of per-field `rename` for consistent naming conventions
7
+ - Mark optional fields with `#[serde(skip_serializing_if = "Option::is_none")]` to keep serialized output clean
8
+ - Use `#[serde(default)]` on fields that should fall back to `Default::default()` when the key is absent during deserialization
9
+ - For enums, use `#[serde(tag = "type")]` (internally tagged) or `#[serde(untagged)]` to control the wire representation explicitly
10
+ - Use `#[serde(with = "module")]` or `#[serde(serialize_with / deserialize_with)]` to apply custom logic to individual fields without newtype wrappers
11
+
12
+ ## Avoid
13
+ - Do not use `serde_json::Value` as a field type when the shape is known — use a concrete type for compile-time guarantees
14
+ - Do not derive `Deserialize` on types with `#[non_exhaustive]` without `#[serde(deny_unknown_fields)]`; silent data loss is likely
15
+ - Do not mix `#[serde(flatten)]` with `#[serde(deny_unknown_fields)]` on the same struct — the combination is unsupported and panics at runtime
16
+ <!-- SERDE:END -->
@@ -0,0 +1,17 @@
1
+ <!-- SQLX:START -->
2
+ # SQLx Rules
3
+
4
+ ## Conventions
5
+ - Use `sqlx::query_as!` and `sqlx::query!` macros for compile-time verified SQL; set `DATABASE_URL` at build time for macro expansion
6
+ - Create a connection pool with `PgPoolOptions::new().max_connections(N).connect(url).await?` and share it via `Arc` or framework state
7
+ - Run migrations at startup with `sqlx::migrate!("./migrations").run(&pool).await?`; keep migration files append-only
8
+ - Use `query.fetch_one`, `fetch_optional`, and `fetch_all` purposefully — `fetch_one` returns an error on zero rows; `fetch_optional` does not
9
+ - Wrap multi-statement operations in `pool.begin().await?` and call `tx.commit().await?` explicitly; `tx.rollback()` is called on drop
10
+ - Bind user input exclusively through `query.bind(value)` — never interpolate values into raw SQL strings
11
+
12
+ ## Avoid
13
+ - Do not use `query!` macros pointing to a non-existent or out-of-date schema — the compile error is cryptic; run pending migrations first
14
+ - Do not acquire a connection manually from the pool (`pool.acquire()`) when `pool` itself implements `Executor` and can be passed directly
15
+ - Do not ignore `RowNotFound` from `fetch_one` — map it to a domain-level `NotFound` error before it reaches the API layer
16
+ - Do not store `PoolConnection<Db>` in long-lived structs; connections should be borrowed for a single logical operation, then released
17
+ <!-- SQLX:END -->
@@ -0,0 +1,16 @@
1
+ <!-- TOKIO:START -->
2
+ # Tokio Rules
3
+
4
+ ## Conventions
5
+ - Annotate the main entry point with `#[tokio::main]`; use `#[tokio::main(flavor = "current_thread")]` for single-threaded scenarios
6
+ - Spawn independent tasks with `tokio::spawn`; always `.await` or store the returned `JoinHandle` to surface panics
7
+ - Use `tokio::sync::Mutex` (not `std::sync::Mutex`) when the lock must be held across `.await` points
8
+ - Prefer `tokio::sync::mpsc` for task communication and `tokio::sync::broadcast` for fan-out messaging
9
+ - Use `tokio::time::timeout(duration, future)` to add cancellation deadlines; handle `Elapsed` explicitly
10
+ - Offload CPU-bound or blocking I/O with `tokio::task::spawn_blocking`; never call `std::thread::sleep` inside async code
11
+
12
+ ## Avoid
13
+ - Do not hold a `std::sync::MutexGuard` across an `.await` — the future is not `Send` and the runtime can deadlock
14
+ - Do not `unwrap()` on `JoinHandle` results without checking for panics; use `handle.await?` or inspect the `JoinError`
15
+ - Do not create a second `#[tokio::main]` runtime inside an existing async context — use `tokio::runtime::Handle::current()` instead
16
+ <!-- TOKIO:END -->
@@ -0,0 +1,17 @@
1
+ <!-- ANGULAR:START -->
2
+ # Angular Rules
3
+
4
+ ## Conventions
5
+ - Use standalone components (`standalone: true`) for all new code; NgModules are legacy in Angular 17+
6
+ - Inject dependencies with the `inject()` function inside the constructor or field initializer instead of constructor parameter injection for standalone
7
+ - Use signals (`signal()`, `computed()`, `effect()`) for reactive local state in Angular 17+; prefer over `BehaviorSubject` for component state
8
+ - Use the `@if`, `@for`, `@switch` built-in control flow blocks (Angular 17+) instead of `*ngIf`/`*ngFor` structural directives
9
+ - Always unsubscribe from Observables — prefer `takeUntilDestroyed()` from `@angular/core/rxjs-interop`
10
+ - Type HTTP responses with generics: `HttpClient.get<MyType>(url)` — never cast with `as`
11
+
12
+ ## Avoid
13
+ - Using `any` type for component inputs or service return values
14
+ - Manually calling `ChangeDetectorRef.detectChanges()` when signals or `async` pipe would handle it
15
+ - Subscribing inside templates — use the `async` pipe or signal reads
16
+ - Importing `CommonModule` in standalone components — import specific directives instead
17
+ <!-- ANGULAR:END -->
@@ -0,0 +1,16 @@
1
+ <!-- DRIZZLE:START -->
2
+ # Drizzle ORM Rules
3
+
4
+ ## Conventions
5
+ - Define schema in dedicated `schema.ts` files co-located by domain; export tables and inferred types together
6
+ - Use `drizzle-zod` or `drizzle-valibot` to derive insert/select validation schemas from table definitions — single source of truth
7
+ - Use `db.transaction(async (tx) => { ... })` for atomic multi-step operations; pass `tx` to all writes inside
8
+ - Prefer `.returning()` after inserts/updates instead of a separate select round-trip
9
+ - Type query results with `typeof table.$inferSelect` and `typeof table.$inferInsert` — never manually duplicate column types
10
+ - Use `sql` tagged template from `drizzle-orm` for raw SQL fragments; never interpolate user input directly
11
+
12
+ ## Avoid
13
+ - Importing the db instance inside schema files — schema must be a pure declaration with no runtime dependencies
14
+ - Running `drizzle-kit push` in production — use `drizzle-kit generate` + migration files for reproducible deploys
15
+ - Chaining `.where()` conditions with string concatenation — use `and()`, `or()`, `eq()` operators from `drizzle-orm`
16
+ <!-- DRIZZLE:END -->
@@ -0,0 +1,17 @@
1
+ <!-- EXPRESS:START -->
2
+ # Express Rules
3
+
4
+ ## Conventions
5
+ - Type request and response with generics: `Request<Params, ResBody, ReqBody, Query>` — avoids `any` in handlers
6
+ - Use a centralized error-handling middleware `(err, req, res, next): void` registered last with four parameters
7
+ - Validate request bodies, params, and query strings at the route level before business logic — use Zod or a validation middleware
8
+ - Group routes by domain in separate `express.Router()` instances and mount them in `app.ts`
9
+ - Use `express.json()` and `express.urlencoded()` middleware explicitly — do not rely on body parsing being enabled by default
10
+ - Return consistent JSON error shapes: `{ error: string; code?: string }` — never leak stack traces in production
11
+
12
+ ## Avoid
13
+ - Calling `next()` after sending a response — it triggers double-response errors
14
+ - Using `req.query` values as raw strings in database queries — always validate and sanitize
15
+ - Defining async route handlers without wrapping in a try/catch or using an async error wrapper — unhandled promise rejections bypass the error middleware
16
+ - Mutating `req.body` directly — treat it as read-only input
17
+ <!-- EXPRESS:END -->
@@ -0,0 +1,16 @@
1
+ <!-- HEROUI:START -->
2
+ # HeroUI Rules
3
+
4
+ ## Conventions
5
+ - Wrap the app in `<HeroUIProvider>` at the root; pass `navigate` from your router for link support
6
+ - Use the `color`, `variant`, and `size` props from the component API instead of overriding with raw Tailwind classes
7
+ - Extend or override tokens via `heroui()` plugin in `tailwind.config.ts` — never patch component internals
8
+ - Use `classNames` prop (object with slot keys) for targeted per-slot styling instead of wrapping with extra divs
9
+ - Prefer controlled components (`value` + `onChange`) for form inputs to keep state in one place
10
+ - Use `isDisabled`, `isLoading`, and `isInvalid` boolean props rather than custom conditional classes
11
+
12
+ ## Avoid
13
+ - Importing components from deep internal paths — always import from `@heroui/react`
14
+ - Overriding component styles with `!important` — use slot-based `classNames` instead
15
+ - Rendering HeroUI components outside `<HeroUIProvider>` — theme context will be missing
16
+ <!-- HEROUI:END -->
@@ -0,0 +1,17 @@
1
+ <!-- JEST:START -->
2
+ # Jest Rules
3
+
4
+ ## Conventions
5
+ - Use `jest.config.ts` (TypeScript) with `ts-jest` or `@swc/jest` transform for type-safe configuration
6
+ - Mock modules with `jest.mock('../path/to/module')` at the top of the file — Jest hoists these automatically
7
+ - Use `jest.spyOn(object, 'method').mockReturnValue(value)` for partial mocks; restore with `jest.restoreAllMocks()` in `afterEach`
8
+ - Use `expect.assertions(n)` in async tests that rely on callbacks to catch silent failures
9
+ - Use `jest.useFakeTimers()` for time-dependent tests; advance with `jest.advanceTimersByTimeAsync(ms)` (Jest 29+)
10
+ - Isolate module state between tests with `jest.isolateModules()` when a module has side-effectful initialization
11
+
12
+ ## Avoid
13
+ - Using `test.only` or `fdescribe` — remove before committing
14
+ - Mocking entire large modules when only one method needs to change — use `spyOn` for surgical mocking
15
+ - Relying on test execution order — each test must set up and tear down its own state independently
16
+ - Using `done` callback pattern for async tests — use `async/await` or return a Promise instead
17
+ <!-- JEST:END -->
@@ -0,0 +1,17 @@
1
+ <!-- NESTJS:START -->
2
+ # NestJS Rules
3
+
4
+ ## Conventions
5
+ - Use constructor injection for all dependencies — never instantiate services manually inside other services
6
+ - Validate all incoming DTOs with `class-validator` decorators and enable `ValidationPipe` globally with `whitelist: true, forbidNonWhitelisted: true`
7
+ - Use `@nestjs/config` with a typed `ConfigService` — never read `process.env` directly outside of config factories
8
+ - Scope providers explicitly: default (singleton) for stateless services; `REQUEST` scope only when truly per-request state is needed
9
+ - Use `@nestjs/swagger` decorators (`@ApiProperty`, `@ApiResponse`) on DTOs and controllers to keep OpenAPI spec in sync with code
10
+ - Handle async lifecycle with `OnModuleInit` and `OnApplicationShutdown` hooks — not ad-hoc timeouts
11
+
12
+ ## Avoid
13
+ - Using `@Inject(TOKEN)` with string tokens for services that can be injected by class reference — string tokens lose type safety
14
+ - Throwing raw `Error` objects — use NestJS built-in exceptions (`NotFoundException`, `BadRequestException`, etc.)
15
+ - Circular module imports — restructure with a shared module or `forwardRef()` only as a last resort
16
+ - Putting business logic in controllers — controllers are thin; all logic belongs in services
17
+ <!-- NESTJS:END -->
@@ -0,0 +1,18 @@
1
+ <!-- NEXT:START -->
2
+ # Next.js Rules
3
+
4
+ ## Conventions
5
+ - Use the App Router (`app/`) for all new projects; Pages Router is legacy
6
+ - Mark components `"use client"` only when they require browser APIs or interactivity; keep the default server-component boundary
7
+ - Fetch data in Server Components using `async/await` directly — avoid `useEffect` data fetching
8
+ - Use `next/image` for all images with explicit `width`/`height` or `fill` to avoid layout shift
9
+ - Colocate route-specific logic in `app/<segment>/page.tsx`; share layouts via `layout.tsx`
10
+ - Use `next/font` to load fonts — never load external font URLs in `<head>` manually
11
+ - Type `searchParams` and `params` as `Promise<...>` in Next.js 15+ page/layout props
12
+
13
+ ## Avoid
14
+ - Importing server-only modules into Client Components (triggers runtime errors)
15
+ - Using `getServerSideProps` or `getStaticProps` in the App Router — they don't exist there
16
+ - Wrapping the entire app in `"use client"` — it defeats server rendering
17
+ - Hardcoding `localhost` URLs; use environment variables for all API base URLs
18
+ <!-- NEXT:END -->
@@ -0,0 +1,16 @@
1
+ <!-- PRISMA:START -->
2
+ # Prisma Rules
3
+
4
+ ## Conventions
5
+ - Instantiate `PrismaClient` once as a singleton and export it — never instantiate per-request (especially in Next.js dev with hot-reload)
6
+ - Use `prisma.$transaction([...])` for multi-step writes that must be atomic; use the interactive transaction callback form for reads-then-writes
7
+ - Always select only the fields you need with `select` or omit sensitive fields with `omit` — never return full records containing passwords/tokens
8
+ - Use `include` for eager-loading relations; use nested `select` inside `include` to avoid over-fetching
9
+ - Run `prisma migrate dev` in development and `prisma migrate deploy` in CI/production — never use `db push` in production
10
+ - Type query results with `Prisma.UserGetPayload<{ select: { ... } }>` for precise return types
11
+
12
+ ## Avoid
13
+ - Calling `prisma.$disconnect()` in serverless/edge functions per-invocation — let the connection pool manage lifecycle
14
+ - Using raw `prisma.$queryRaw` without `Prisma.sql` tagged template — SQL injection risk
15
+ - Checking `prisma.model.findFirst` for existence checks in a loop — use `findMany` with `where` or `count`
16
+ <!-- PRISMA:END -->
@@ -0,0 +1,16 @@
1
+ <!-- RADIX:START -->
2
+ # Radix UI Rules
3
+
4
+ ## Conventions
5
+ - Install individual `@radix-ui/react-<primitive>` packages — never install the entire `@radix-ui/react` meta-package
6
+ - Compose primitives using the compound-component pattern (`Dialog.Root`, `Dialog.Trigger`, `Dialog.Content`, etc.) — never use internal sub-components directly
7
+ - Always provide accessible labels: use `VisuallyHidden` with `DialogTitle` / `AlertDialogTitle` to satisfy screen-reader requirements even when visually hidden
8
+ - Forward refs through custom wrappers using `React.forwardRef` so Radix can attach behavior correctly
9
+ - Control open state externally (`open` + `onOpenChange`) for dialogs and popovers that need lifecycle hooks (e.g., analytics, focus management)
10
+ - Use `asChild` to delegate rendering to your own element without adding extra DOM nodes
11
+
12
+ ## Avoid
13
+ - Styling Radix components by targeting generated class names — use `data-*` attribute selectors (`data-state="open"`)
14
+ - Mixing multiple open-state sources (both `defaultOpen` and `open`) on the same component
15
+ - Removing `Dialog.Overlay` to skip the backdrop — it handles focus-trap and pointer-event blocking
16
+ <!-- RADIX:END -->
@@ -0,0 +1,18 @@
1
+ <!-- REACT:START -->
2
+ # React Rules
3
+
4
+ ## Conventions
5
+ - Use function components with hooks exclusively; never write class components in new code
6
+ - Co-locate state as close to the consumer as possible; lift only when two or more siblings need it
7
+ - Derive computed values inline or with `useMemo` — avoid storing derived state in `useState`
8
+ - Stabilize callbacks passed to children with `useCallback` to prevent unnecessary re-renders
9
+ - Use the `key` prop on list items with stable, unique IDs — never array indices for dynamic lists
10
+ - Prefer `useReducer` over multiple `useState` calls when state transitions have logic dependencies
11
+ - Type component props with explicit interfaces; avoid `React.FC` — declare return type as `React.ReactElement` when needed
12
+
13
+ ## Avoid
14
+ - Mutating state directly — always return a new reference from `setState` / reducer
15
+ - Triggering side effects during render (network calls, subscriptions outside `useEffect`)
16
+ - Overusing `useEffect` for data that can be derived synchronously
17
+ - Reading stale closure values — include all referenced variables in the `useEffect` dependency array
18
+ <!-- REACT:END -->
@@ -0,0 +1,16 @@
1
+ <!-- SHADCN:START -->
2
+ # shadcn/ui Rules
3
+
4
+ ## Conventions
5
+ - Add components with `npx shadcn@latest add <component>` — components are copied into `components/ui/` and owned by your repo
6
+ - Customize component source directly in `components/ui/` — shadcn/ui components are not a dependency, they are source code
7
+ - Use the `cn()` utility (auto-generated in `lib/utils.ts`) for all className merging within component files
8
+ - Keep shadcn/ui components as thin wrappers — add domain logic in separate consumer components, not inside `components/ui/`
9
+ - Re-run `npx shadcn@latest add <component>` to pull upstream changes; review the diff before accepting
10
+ - Use the `variant` and `size` props from `cva` variants instead of ad-hoc conditional classes
11
+
12
+ ## Avoid
13
+ - Editing generated component files and then expecting `shadcn add` updates to merge cleanly — commit your customizations clearly
14
+ - Importing directly from `@radix-ui/*` inside application code when a shadcn wrapper already exists
15
+ - Adding business logic or data-fetching inside `components/ui/` files
16
+ <!-- SHADCN:END -->
@@ -0,0 +1,16 @@
1
+ <!-- SVELTE:START -->
2
+ # Svelte Rules
3
+
4
+ ## Conventions
5
+ - Use Svelte 5 runes (`$state`, `$derived`, `$effect`, `$props`) for all new code; legacy reactive declarations (`$:`) are deprecated
6
+ - Declare component props with `let { propName } = $props()` and type them with TypeScript interfaces
7
+ - Use `$derived` for computed values instead of `$effect` with an intermediate variable
8
+ - Scope side effects that depend on reactive state inside `$effect`; clean up by returning a teardown function
9
+ - Use `{#each items as item (item.id)}` with a key expression to enable efficient DOM reconciliation
10
+ - Prefer Svelte stores (`writable`, `readable`, `derived`) for cross-component shared state
11
+
12
+ ## Avoid
13
+ - Using `$effect` to synchronize two pieces of state — use `$derived` instead
14
+ - Directly mutating arrays/objects in `$state` without reassignment when deep reactivity is needed — use `$state` with structural replacement or `SvelteMap`/`SvelteSet`
15
+ - Importing browser globals at module level — guard with `if (browser)` from `$app/environment`
16
+ <!-- SVELTE:END -->
@@ -0,0 +1,16 @@
1
+ <!-- TAILWIND:START -->
2
+ # Tailwind CSS Rules
3
+
4
+ ## Conventions
5
+ - Compose utilities directly in markup; extract to components or `@apply` only for highly repeated multi-class patterns
6
+ - Use the `cn()` helper (clsx + tailwind-merge) to merge conditional classes — avoids specificity conflicts
7
+ - Configure custom design tokens in `tailwind.config.ts` under `theme.extend` — never override the default scale unless intentional
8
+ - Use `dark:` variant classes for dark mode; configure `darkMode: "class"` for manual toggle control
9
+ - Prefer responsive prefixes (`sm:`, `md:`, `lg:`) on the variant side rather than writing separate media queries
10
+ - Use `group` and `peer` utilities for parent-driven and sibling-driven state styling
11
+
12
+ ## Avoid
13
+ - Mixing arbitrary values (`w-[347px]`) for dimensions that belong in the design token scale
14
+ - Writing long `className` strings inline without `cn()` — order-dependent merges produce hard-to-debug styles
15
+ - Using `!important` modifiers (`!text-red-500`) to override conflicts — fix the specificity root cause instead
16
+ <!-- TAILWIND:END -->
@@ -0,0 +1,16 @@
1
+ <!-- TRPC:START -->
2
+ # tRPC Rules
3
+
4
+ ## Conventions
5
+ - Define all procedures in a router tree and export the `AppRouter` type — this is the contract shared with the client
6
+ - Validate all inputs with Zod schemas passed to `input()` — never trust raw input inside procedure handlers
7
+ - Use `protectedProcedure` (a middleware-wrapped base procedure) to enforce authentication — never check session ad-hoc inside handlers
8
+ - Use `useUtils()` (tRPC v11) for cache invalidation after mutations — call `utils.<router>.<procedure>.invalidate()`
9
+ - Co-locate server-side router files under `server/routers/`; keep the client-side `trpc` init in a single `lib/trpc.ts`
10
+ - Use `createCallerFactory` for server-side tRPC calls within Server Components or server actions — avoids HTTP round-trips
11
+
12
+ ## Avoid
13
+ - Exposing the server router object to the client bundle — only the `AppRouter` type should cross the boundary
14
+ - Returning raw database models from procedures — map to response DTOs to avoid leaking sensitive fields
15
+ - Fetching data with `useQuery` inside event handlers — use `utils.<procedure>.fetch()` for imperative calls
16
+ <!-- TRPC:END -->
@@ -0,0 +1,17 @@
1
+ <!-- VITEST:START -->
2
+ # Vitest Rules
3
+
4
+ ## Conventions
5
+ - Configure Vitest in `vitest.config.ts` (not inside `vite.config.ts`) for clarity — use `defineConfig` from `vitest/config`
6
+ - Use `vi.mock()` at the top of the file (hoisted automatically); use `vi.importMock()` for dynamic mocks
7
+ - Reset mocks between tests with `vi.clearAllMocks()` in `afterEach` or set `clearMocks: true` globally in config
8
+ - Use `expect.assertions(n)` in async tests that must reach a callback to prevent silent false-positives
9
+ - Use `vi.useFakeTimers()` + `vi.runAllTimersAsync()` for testing debounce, throttle, and setTimeout logic
10
+ - Type spy return values: `vi.spyOn(service, "method").mockResolvedValue(typed value)` — avoids `any` leaking into assertions
11
+
12
+ ## Avoid
13
+ - Using `test.only` or `describe.only` — remove before committing; they silently skip all other tests
14
+ - Importing from `vitest` and `jest` in the same file — pick one globals source
15
+ - Asserting on implementation details (internal function call counts) when behavior tests suffice
16
+ - Using `setTimeout` with real delays in tests — always fake timers for time-dependent logic
17
+ <!-- VITEST:END -->
@@ -0,0 +1,17 @@
1
+ <!-- VUE:START -->
2
+ # Vue Rules
3
+
4
+ ## Conventions
5
+ - Use the Composition API with `<script setup>` for all new components; Options API is legacy
6
+ - Declare reactive state with `ref()` for primitives and `reactive()` for objects; unwrap refs in templates automatically
7
+ - Use `computed()` for derived state — never compute values inside templates beyond simple expressions
8
+ - Define component props with `defineProps<{ ... }>()` using TypeScript generics for full type safety
9
+ - Use `defineEmits<{ ... }>()` to type emitted events explicitly
10
+ - Prefer `watch` with `{ immediate: true }` over duplicating logic in `onMounted` + `watch`
11
+
12
+ ## Avoid
13
+ - Mutating props directly — emit an event and let the parent update state
14
+ - Using `$refs` to imperatively manipulate child component internals
15
+ - Mixing Composition API and Options API in the same component
16
+ - Relying on `v-html` with unsanitized user input — XSS risk
17
+ <!-- VUE:END -->
@@ -0,0 +1,17 @@
1
+ <!-- ZOD:START -->
2
+ # Zod Rules
3
+
4
+ ## Conventions
5
+ - Define schemas once and derive TypeScript types with `z.infer<typeof schema>` — never duplicate types manually
6
+ - Use `.parse()` at trust boundaries (API routes, form submissions, env vars); use `.safeParse()` when you need to handle errors without throwing
7
+ - Coerce external string inputs (query params, form fields) with `z.coerce.number()` / `z.coerce.boolean()` instead of manual casting
8
+ - Validate environment variables at startup with a Zod schema and export the typed result — fail fast on misconfiguration
9
+ - Use `.transform()` to normalize data (e.g., trim strings, lowercase emails) in the same schema that validates it
10
+ - Use `z.discriminatedUnion("type", [...])` for tagged union types — faster and produces better error messages than `z.union`
11
+
12
+ ## Avoid
13
+ - Using `.optional()` on fields that should always be present — it widens the type unnecessarily
14
+ - Calling `.parse()` on already-validated internal data — validate once at the boundary, pass typed values inward
15
+ - Building complex conditional logic with `.superRefine()` when `.refine()` covers the case
16
+ - Catching Zod errors generically — use `err instanceof ZodError` and inspect `err.errors` for structured messages
17
+ <!-- ZOD:END -->