@hivehub/rulebook 5.5.2 → 5.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (834) 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-learn-capture.md +41 -48
  8. package/.claude/commands/rulebook-learn-list.md +13 -13
  9. package/.claude/commands/rulebook-memory-save.md +48 -48
  10. package/.claude/commands/rulebook-memory-search.md +47 -47
  11. package/.claude/commands/rulebook-task-apply.md +67 -67
  12. package/.claude/commands/rulebook-task-archive.md +94 -94
  13. package/.claude/commands/rulebook-task-create.md +93 -93
  14. package/.claude/commands/rulebook-task-list.md +42 -42
  15. package/.claude/commands/rulebook-task-show.md +52 -52
  16. package/.claude/commands/rulebook-task-validate.md +53 -53
  17. package/.claude-plugin/marketplace.json +28 -28
  18. package/.claude-plugin/plugin.json +8 -8
  19. package/README.md +418 -394
  20. package/dist/cli/commands/claude.d.ts +17 -0
  21. package/dist/cli/commands/claude.d.ts.map +1 -0
  22. package/dist/cli/commands/claude.js +56 -0
  23. package/dist/cli/commands/claude.js.map +1 -0
  24. package/dist/cli/commands/context-intelligence.d.ts +0 -1
  25. package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
  26. package/dist/cli/commands/context-intelligence.js +12 -33
  27. package/dist/cli/commands/context-intelligence.js.map +1 -1
  28. package/dist/cli/commands/index.d.ts +4 -7
  29. package/dist/cli/commands/index.d.ts.map +1 -1
  30. package/dist/cli/commands/index.js +4 -7
  31. package/dist/cli/commands/index.js.map +1 -1
  32. package/dist/cli/commands/init.d.ts.map +1 -1
  33. package/dist/cli/commands/init.js +58 -83
  34. package/dist/cli/commands/init.js.map +1 -1
  35. package/dist/cli/commands/mcp.d.ts +0 -1
  36. package/dist/cli/commands/mcp.d.ts.map +1 -1
  37. package/dist/cli/commands/mcp.js +1 -7
  38. package/dist/cli/commands/mcp.js.map +1 -1
  39. package/dist/cli/commands/memory.d.ts +7 -1
  40. package/dist/cli/commands/memory.d.ts.map +1 -1
  41. package/dist/cli/commands/memory.js +51 -57
  42. package/dist/cli/commands/memory.js.map +1 -1
  43. package/dist/cli/commands/misc.d.ts +1 -15
  44. package/dist/cli/commands/misc.d.ts.map +1 -1
  45. package/dist/cli/commands/misc.js +36 -215
  46. package/dist/cli/commands/misc.js.map +1 -1
  47. package/dist/cli/commands/plans.d.ts +0 -6
  48. package/dist/cli/commands/plans.d.ts.map +1 -1
  49. package/dist/cli/commands/plans.js +9 -77
  50. package/dist/cli/commands/plans.js.map +1 -1
  51. package/dist/cli/commands/skills.js +6 -6
  52. package/dist/cli/commands/skills.js.map +1 -1
  53. package/dist/cli/commands/task.js +4 -4
  54. package/dist/cli/commands/task.js.map +1 -1
  55. package/dist/cli/commands/update.d.ts.map +1 -1
  56. package/dist/cli/commands/update.js +128 -53
  57. package/dist/cli/commands/update.js.map +1 -1
  58. package/dist/cli/prompts.d.ts +13 -0
  59. package/dist/cli/prompts.d.ts.map +1 -1
  60. package/dist/cli/prompts.js +107 -78
  61. package/dist/cli/prompts.js.map +1 -1
  62. package/dist/core/{claude-mcp.d.ts → claude/claude-mcp.d.ts} +9 -0
  63. package/dist/core/claude/claude-mcp.d.ts.map +1 -0
  64. package/dist/core/{claude-mcp.js → claude/claude-mcp.js} +33 -3
  65. package/dist/core/claude/claude-mcp.js.map +1 -0
  66. package/dist/core/claude/claude-md-generator.d.ts.map +1 -0
  67. package/dist/core/{claude-md-generator.js → claude/claude-md-generator.js} +2 -2
  68. package/dist/core/claude/claude-md-generator.js.map +1 -0
  69. package/dist/core/{claude-settings-manager.d.ts → claude/claude-settings-manager.d.ts} +12 -0
  70. package/dist/core/claude/claude-settings-manager.d.ts.map +1 -0
  71. package/dist/core/{claude-settings-manager.js → claude/claude-settings-manager.js} +81 -22
  72. package/dist/core/claude/claude-settings-manager.js.map +1 -0
  73. package/dist/core/{cli-bridge.d.ts → console/cli-bridge.d.ts} +2 -2
  74. package/dist/core/console/cli-bridge.d.ts.map +1 -0
  75. package/dist/core/{cli-bridge.js → console/cli-bridge.js} +3 -3
  76. package/dist/core/console/cli-bridge.js.map +1 -0
  77. package/dist/core/{detector.d.ts → detect/detector.d.ts} +16 -1
  78. package/dist/core/detect/detector.d.ts.map +1 -0
  79. package/dist/core/detect/detector.js +766 -0
  80. package/dist/core/detect/detector.js.map +1 -0
  81. package/dist/core/detect/library-registry.d.ts +40 -0
  82. package/dist/core/detect/library-registry.d.ts.map +1 -0
  83. package/dist/core/detect/library-registry.js +239 -0
  84. package/dist/core/detect/library-registry.js.map +1 -0
  85. package/dist/core/docs/docs-generator.d.ts.map +1 -0
  86. package/dist/core/{docs-generator.js → docs/docs-generator.js} +1 -1
  87. package/dist/core/docs/docs-generator.js.map +1 -0
  88. package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -0
  89. package/dist/core/{mcp-reference-generator.js → docs/mcp-reference-generator.js} +2 -2
  90. package/dist/core/docs/mcp-reference-generator.js.map +1 -0
  91. package/dist/core/{generator.d.ts → generators/generator.d.ts} +3 -4
  92. package/dist/core/generators/generator.d.ts.map +1 -0
  93. package/dist/core/{generator.js → generators/generator.js} +42 -157
  94. package/dist/core/generators/generator.js.map +1 -0
  95. package/dist/core/{gitignore-generator.d.ts → generators/gitignore-generator.d.ts} +1 -1
  96. package/dist/core/generators/gitignore-generator.d.ts.map +1 -0
  97. package/dist/core/{gitignore-generator.js → generators/gitignore-generator.js} +1 -1
  98. package/dist/core/generators/gitignore-generator.js.map +1 -0
  99. package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -0
  100. package/dist/core/{minimal-scaffolder.js → generators/minimal-scaffolder.js} +2 -2
  101. package/dist/core/generators/minimal-scaffolder.js.map +1 -0
  102. package/dist/core/{rules-generator.d.ts → generators/rules-generator.d.ts} +2 -6
  103. package/dist/core/generators/rules-generator.d.ts.map +1 -0
  104. package/dist/core/{rules-generator.js → generators/rules-generator.js} +41 -2
  105. package/dist/core/generators/rules-generator.js.map +1 -0
  106. package/dist/core/{workflow-generator.d.ts → generators/workflow-generator.d.ts} +1 -1
  107. package/dist/core/generators/workflow-generator.d.ts.map +1 -0
  108. package/dist/core/{workflow-generator.js → generators/workflow-generator.js} +2 -3
  109. package/dist/core/generators/workflow-generator.js.map +1 -0
  110. package/dist/core/{multi-tool-generator.d.ts → ide/multi-tool-generator.d.ts} +1 -1
  111. package/dist/core/ide/multi-tool-generator.d.ts.map +1 -0
  112. package/dist/core/{multi-tool-generator.js → ide/multi-tool-generator.js} +1 -1
  113. package/dist/core/ide/multi-tool-generator.js.map +1 -0
  114. package/dist/core/ide/opencode-generator.d.ts +72 -0
  115. package/dist/core/ide/opencode-generator.d.ts.map +1 -0
  116. package/dist/core/ide/opencode-generator.js +450 -0
  117. package/dist/core/ide/opencode-generator.js.map +1 -0
  118. package/dist/core/merger.d.ts +1 -1
  119. package/dist/core/merger.d.ts.map +1 -1
  120. package/dist/core/merger.js +5 -5
  121. package/dist/core/merger.js.map +1 -1
  122. package/dist/core/migrator.d.ts +0 -1
  123. package/dist/core/migrator.d.ts.map +1 -1
  124. package/dist/core/migrator.js +4 -29
  125. package/dist/core/migrator.js.map +1 -1
  126. package/dist/core/quality/coverage-checker.d.ts.map +1 -0
  127. package/dist/core/{coverage-checker.js → quality/coverage-checker.js} +2 -2
  128. package/dist/core/quality/coverage-checker.js.map +1 -0
  129. package/dist/core/quality/dependency-checker.d.ts.map +1 -0
  130. package/dist/core/{dependency-checker.js → quality/dependency-checker.js} +1 -1
  131. package/dist/core/quality/dependency-checker.js.map +1 -0
  132. package/dist/core/quality/doctor.d.ts.map +1 -0
  133. package/dist/core/{doctor.js → quality/doctor.js} +1 -67
  134. package/dist/core/quality/doctor.js.map +1 -0
  135. package/dist/core/quality/validator.d.ts.map +1 -0
  136. package/dist/core/{validator.js → quality/validator.js} +1 -1
  137. package/dist/core/quality/validator.js.map +1 -0
  138. package/dist/core/{skills-manager.d.ts → skills/skills-manager.d.ts} +1 -1
  139. package/dist/core/skills/skills-manager.d.ts.map +1 -0
  140. package/dist/core/{skills-manager.js → skills/skills-manager.js} +1 -25
  141. package/dist/core/skills/skills-manager.js.map +1 -0
  142. package/dist/core/{config-manager.d.ts → state/config-manager.d.ts} +1 -1
  143. package/dist/core/state/config-manager.d.ts.map +1 -0
  144. package/dist/core/{config-manager.js → state/config-manager.js} +2 -61
  145. package/dist/core/state/config-manager.js.map +1 -0
  146. package/dist/core/state/override-manager.d.ts.map +1 -0
  147. package/dist/core/{override-manager.js → state/override-manager.js} +1 -1
  148. package/dist/core/state/override-manager.js.map +1 -0
  149. package/dist/core/{state-writer.d.ts → state/state-writer.d.ts} +2 -3
  150. package/dist/core/state/state-writer.d.ts.map +1 -0
  151. package/dist/core/{state-writer.js → state/state-writer.js} +6 -9
  152. package/dist/core/state/state-writer.js.map +1 -0
  153. package/dist/core/state/version-bumper.d.ts.map +1 -0
  154. package/dist/core/{version-bumper.js → state/version-bumper.js} +1 -1
  155. package/dist/core/state/version-bumper.js.map +1 -0
  156. package/dist/core/{decision-manager.d.ts → tasks/decision-manager.d.ts} +1 -1
  157. package/dist/core/tasks/decision-manager.d.ts.map +1 -0
  158. package/dist/core/{decision-manager.js → tasks/decision-manager.js} +1 -1
  159. package/dist/core/tasks/decision-manager.js.map +1 -0
  160. package/dist/core/{knowledge-manager.d.ts → tasks/knowledge-manager.d.ts} +1 -1
  161. package/dist/core/tasks/knowledge-manager.d.ts.map +1 -0
  162. package/dist/core/{knowledge-manager.js → tasks/knowledge-manager.js} +1 -1
  163. package/dist/core/tasks/knowledge-manager.js.map +1 -0
  164. package/dist/core/{learn-manager.d.ts → tasks/learn-manager.d.ts} +1 -3
  165. package/dist/core/tasks/learn-manager.d.ts.map +1 -0
  166. package/dist/core/{learn-manager.js → tasks/learn-manager.js} +1 -39
  167. package/dist/core/tasks/learn-manager.js.map +1 -0
  168. package/dist/core/tasks/plans-manager.d.ts.map +1 -0
  169. package/dist/core/{plans-manager.js → tasks/plans-manager.js} +1 -1
  170. package/dist/core/tasks/plans-manager.js.map +1 -0
  171. package/dist/core/tasks/task-manager.d.ts.map +1 -0
  172. package/dist/core/{task-manager.js → tasks/task-manager.js} +2 -2
  173. package/dist/core/tasks/task-manager.js.map +1 -0
  174. package/dist/core/workspace/project-worker.d.ts +6 -6
  175. package/dist/core/workspace/project-worker.d.ts.map +1 -1
  176. package/dist/core/workspace/project-worker.js +6 -6
  177. package/dist/core/workspace/project-worker.js.map +1 -1
  178. package/dist/index.d.ts +1 -1
  179. package/dist/index.d.ts.map +1 -1
  180. package/dist/index.js +31 -176
  181. package/dist/index.js.map +1 -1
  182. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  183. package/dist/mcp/rulebook-server.js +16 -960
  184. package/dist/mcp/rulebook-server.js.map +1 -1
  185. package/dist/memory/file-search.d.ts +43 -0
  186. package/dist/memory/file-search.d.ts.map +1 -0
  187. package/dist/memory/file-search.js +228 -0
  188. package/dist/memory/file-search.js.map +1 -0
  189. package/dist/memory/file-store.d.ts +99 -0
  190. package/dist/memory/file-store.d.ts.map +1 -0
  191. package/dist/memory/file-store.js +615 -0
  192. package/dist/memory/file-store.js.map +1 -0
  193. package/dist/memory/legacy-migrator.d.ts +27 -0
  194. package/dist/memory/legacy-migrator.d.ts.map +1 -0
  195. package/dist/memory/legacy-migrator.js +185 -0
  196. package/dist/memory/legacy-migrator.js.map +1 -0
  197. package/dist/memory/memory-manager.d.ts +25 -24
  198. package/dist/memory/memory-manager.d.ts.map +1 -1
  199. package/dist/memory/memory-manager.js +97 -140
  200. package/dist/memory/memory-manager.js.map +1 -1
  201. package/dist/memory/memory-types.d.ts +1 -1
  202. package/dist/memory/memory-types.d.ts.map +1 -1
  203. package/dist/types.d.ts +20 -118
  204. package/dist/types.d.ts.map +1 -1
  205. package/package.json +23 -27
  206. package/templates/agents/accessibility-reviewer.md +43 -43
  207. package/templates/agents/api-designer.md +42 -42
  208. package/templates/agents/architect.md +51 -51
  209. package/templates/agents/build-engineer.md +36 -36
  210. package/templates/agents/code-reviewer.md +47 -47
  211. package/templates/agents/compiler/codegen-debugger.md +34 -34
  212. package/templates/agents/compiler/stdlib-engineer.md +28 -28
  213. package/templates/agents/compiler/test-coverage-guardian.md +31 -31
  214. package/templates/agents/context-intelligence.md +50 -52
  215. package/templates/agents/database-architect.md +41 -41
  216. package/templates/agents/devops-engineer.md +42 -42
  217. package/templates/agents/docs-writer.md +38 -38
  218. package/templates/agents/game-engine/cpp-core-expert.md +35 -35
  219. package/templates/agents/game-engine/render-engineer.md +22 -22
  220. package/templates/agents/game-engine/shader-engineer.md +38 -38
  221. package/templates/agents/game-engine/systems-integration.md +43 -43
  222. package/templates/agents/generic/code-reviewer.md +41 -41
  223. package/templates/agents/generic/docs-writer.md +25 -25
  224. package/templates/agents/generic/project-manager.md +36 -36
  225. package/templates/agents/generic/researcher.md +34 -34
  226. package/templates/agents/generic/test-engineer.md +41 -41
  227. package/templates/agents/i18n-engineer.md +42 -42
  228. package/templates/agents/implementer.md +42 -42
  229. package/templates/agents/migration-engineer.md +42 -42
  230. package/templates/agents/mobile/platform-specialist.md +22 -22
  231. package/templates/agents/mobile/ui-engineer.md +22 -22
  232. package/templates/agents/performance-engineer.md +49 -49
  233. package/templates/agents/project-manager.md +215 -0
  234. package/templates/agents/quality-gatekeeper.md +205 -0
  235. package/templates/agents/refactoring-agent.md +41 -41
  236. package/templates/agents/researcher.md +38 -38
  237. package/templates/agents/security-reviewer.md +40 -40
  238. package/templates/agents/team-lead.md +37 -37
  239. package/templates/agents/tester.md +48 -48
  240. package/templates/agents/ux-reviewer.md +43 -43
  241. package/templates/agents/web-app/api-designer.md +22 -22
  242. package/templates/agents/web-app/backend-engineer.md +30 -30
  243. package/templates/agents/web-app/database-engineer.md +22 -22
  244. package/templates/agents/web-app/frontend-engineer.md +29 -29
  245. package/templates/agents/web-app/security-reviewer.md +32 -32
  246. package/templates/ci/rulebook-review.yml +26 -26
  247. package/templates/claude-workflows/bugfix.js +94 -0
  248. package/templates/claude-workflows/feature-pipeline.js +88 -0
  249. package/templates/claude-workflows/release-gate.js +64 -0
  250. package/templates/claude-workflows/review-fanout.js +118 -0
  251. package/templates/claude-workflows/rulebook-driver.js +343 -0
  252. package/templates/claude-workflows/spec-author.js +133 -0
  253. package/templates/cli/AIDER.md +49 -49
  254. package/templates/cli/AMAZON_Q.md +25 -25
  255. package/templates/cli/AUGGIE.md +32 -32
  256. package/templates/cli/CLAUDE.md +117 -117
  257. package/templates/cli/CLINE.md +99 -99
  258. package/templates/cli/CODEBUDDY.md +20 -20
  259. package/templates/cli/CODEIUM.md +20 -20
  260. package/templates/cli/CODEX.md +21 -21
  261. package/templates/cli/CONTINUE.md +34 -34
  262. package/templates/cli/CURSOR_CLI.md +62 -62
  263. package/templates/cli/FACTORY.md +18 -18
  264. package/templates/cli/GEMINI.md +35 -35
  265. package/templates/cli/KILOCODE.md +18 -18
  266. package/templates/cli/OPENCODE.md +85 -18
  267. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  268. package/templates/commands/rulebook-decision-create.md +55 -55
  269. package/templates/commands/rulebook-decision-list.md +15 -15
  270. package/templates/commands/rulebook-knowledge-add.md +41 -41
  271. package/templates/commands/rulebook-knowledge-list.md +15 -15
  272. package/templates/commands/rulebook-learn-capture.md +41 -48
  273. package/templates/commands/rulebook-learn-list.md +13 -13
  274. package/templates/commands/rulebook-memory-save.md +48 -48
  275. package/templates/commands/rulebook-memory-search.md +47 -47
  276. package/templates/commands/rulebook-task-apply.md +67 -67
  277. package/templates/commands/rulebook-task-archive.md +94 -94
  278. package/templates/commands/rulebook-task-create.md +93 -93
  279. package/templates/commands/rulebook-task-list.md +42 -42
  280. package/templates/commands/rulebook-task-show.md +52 -52
  281. package/templates/commands/rulebook-task-validate.md +53 -53
  282. package/templates/compact-context/_default.md +23 -23
  283. package/templates/compact-context/cpp.md +26 -26
  284. package/templates/compact-context/go.md +26 -26
  285. package/templates/compact-context/python.md +26 -26
  286. package/templates/compact-context/rust.md +28 -28
  287. package/templates/compact-context/typescript.md +29 -29
  288. package/templates/core/AGENTS_LEAN.md +0 -14
  289. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  290. package/templates/core/AGENT_AUTOMATION.md +296 -296
  291. package/templates/core/CLAUDE_MD_v2.md +90 -90
  292. package/templates/core/DAG.md +304 -304
  293. package/templates/core/DECISIONS.md +38 -38
  294. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  295. package/templates/core/KNOWLEDGE.md +49 -49
  296. package/templates/core/MULTI_AGENT.md +74 -74
  297. package/templates/core/PLANS.md +28 -28
  298. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  299. package/templates/core/RULEBOOK.md +1947 -1947
  300. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  301. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  302. package/templates/git/CI_CD_PATTERNS.md +661 -661
  303. package/templates/git/GITHUB_ACTIONS.md +728 -728
  304. package/templates/git/GITLAB_CI.md +730 -730
  305. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  306. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  307. package/templates/hooks/COMMIT_MSG.md +530 -530
  308. package/templates/hooks/POST_CHECKOUT.md +546 -546
  309. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  310. package/templates/hooks/PRE_COMMIT.md +414 -414
  311. package/templates/hooks/PRE_PUSH.md +601 -601
  312. package/templates/hooks/check-context-and-handoff.sh +24 -16
  313. package/templates/hooks/enforce-pre-tool.sh +70 -0
  314. package/templates/hooks/terse-mode-tracker.sh +146 -143
  315. package/templates/hooks/update-check.ps1 +84 -0
  316. package/templates/hooks/update-check.sh +103 -0
  317. package/templates/ides/CONTINUE_RULES.md +16 -16
  318. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
  319. package/templates/ides/GEMINI_RULES.md +17 -17
  320. package/templates/ides/OPENCODE.md +63 -0
  321. package/templates/ides/WINDSURF_RULES.md +14 -14
  322. package/templates/languages/C.md +333 -333
  323. package/templates/languages/CPP.md +743 -743
  324. package/templates/languages/CSHARP.md +417 -417
  325. package/templates/languages/ELIXIR.md +454 -454
  326. package/templates/languages/ERLANG.md +361 -361
  327. package/templates/languages/GO.md +645 -645
  328. package/templates/languages/HASKELL.md +177 -177
  329. package/templates/languages/JAVA.md +607 -607
  330. package/templates/languages/JAVASCRIPT.md +631 -631
  331. package/templates/languages/JULIA.md +97 -97
  332. package/templates/languages/KOTLIN.md +511 -511
  333. package/templates/languages/LISP.md +100 -100
  334. package/templates/languages/LUA.md +74 -74
  335. package/templates/languages/OBJECTIVEC.md +90 -90
  336. package/templates/languages/PHP.md +416 -416
  337. package/templates/languages/PYTHON.md +682 -682
  338. package/templates/languages/RUBY.md +421 -421
  339. package/templates/languages/RUST.md +477 -477
  340. package/templates/languages/SAS.md +73 -73
  341. package/templates/languages/SCALA.md +348 -348
  342. package/templates/languages/SOLIDITY.md +580 -580
  343. package/templates/languages/SQL.md +137 -137
  344. package/templates/languages/SWIFT.md +466 -466
  345. package/templates/languages/TYPESCRIPT.md +591 -591
  346. package/templates/languages/ZIG.md +265 -265
  347. package/templates/libraries/go/ECHO.md +18 -0
  348. package/templates/libraries/go/GIN.md +18 -0
  349. package/templates/libraries/go/GORM.md +18 -0
  350. package/templates/libraries/python/DJANGO.md +18 -0
  351. package/templates/libraries/python/FASTAPI.md +18 -0
  352. package/templates/libraries/python/FLASK.md +17 -0
  353. package/templates/libraries/python/PYDANTIC.md +17 -0
  354. package/templates/libraries/python/PYTEST.md +17 -0
  355. package/templates/libraries/python/SQLALCHEMY.md +17 -0
  356. package/templates/libraries/rust/ACTIX.md +17 -0
  357. package/templates/libraries/rust/AXUM.md +18 -0
  358. package/templates/libraries/rust/SERDE.md +16 -0
  359. package/templates/libraries/rust/SQLX.md +17 -0
  360. package/templates/libraries/rust/TOKIO.md +16 -0
  361. package/templates/libraries/typescript/ANGULAR.md +17 -0
  362. package/templates/libraries/typescript/DRIZZLE.md +16 -0
  363. package/templates/libraries/typescript/EXPRESS.md +17 -0
  364. package/templates/libraries/typescript/HEROUI.md +16 -0
  365. package/templates/libraries/typescript/JEST.md +17 -0
  366. package/templates/libraries/typescript/NESTJS.md +17 -0
  367. package/templates/libraries/typescript/NEXT.md +18 -0
  368. package/templates/libraries/typescript/PRISMA.md +16 -0
  369. package/templates/libraries/typescript/RADIX.md +16 -0
  370. package/templates/libraries/typescript/REACT.md +18 -0
  371. package/templates/libraries/typescript/SHADCN.md +16 -0
  372. package/templates/libraries/typescript/SVELTE.md +16 -0
  373. package/templates/libraries/typescript/TAILWIND.md +16 -0
  374. package/templates/libraries/typescript/TRPC.md +16 -0
  375. package/templates/libraries/typescript/VITEST.md +17 -0
  376. package/templates/libraries/typescript/VUE.md +17 -0
  377. package/templates/libraries/typescript/ZOD.md +17 -0
  378. package/templates/modules/ATLASSIAN.md +255 -255
  379. package/templates/modules/CONTEXT7.md +54 -54
  380. package/templates/modules/FIGMA.md +267 -267
  381. package/templates/modules/GITHUB_MCP.md +64 -64
  382. package/templates/modules/GRAFANA.md +328 -328
  383. package/templates/modules/MEMORY.md +126 -126
  384. package/templates/modules/NOTION.md +247 -247
  385. package/templates/modules/PLAYWRIGHT.md +90 -90
  386. package/templates/modules/RULEBOOK_MCP.md +208 -208
  387. package/templates/modules/SERENA.md +337 -337
  388. package/templates/modules/SUPABASE.md +223 -223
  389. package/templates/modules/SYNAP.md +69 -69
  390. package/templates/modules/VECTORIZER.md +63 -63
  391. package/templates/modules/sequential-thinking.md +42 -42
  392. package/templates/rules/consult-analysis-before-implementing.md +23 -23
  393. package/templates/rules/cpp.md +46 -46
  394. package/templates/rules/csharp.md +44 -44
  395. package/templates/rules/diagnostic-first.md +39 -39
  396. package/templates/rules/fail-twice-escalate.md +46 -46
  397. package/templates/rules/follow-task-sequence.md +36 -36
  398. package/templates/rules/git-safety.md +29 -29
  399. package/templates/rules/go.md +40 -40
  400. package/templates/rules/incremental-implementation.md +56 -56
  401. package/templates/rules/incremental-tests.md +29 -29
  402. package/templates/rules/java.md +43 -43
  403. package/templates/rules/javascript.md +39 -39
  404. package/templates/rules/knowledge-base-usage.md +41 -41
  405. package/templates/rules/multi-agent-teams.md +75 -75
  406. package/templates/rules/no-deferred.md +31 -31
  407. package/templates/rules/no-shortcuts.md +30 -30
  408. package/templates/rules/python.md +43 -43
  409. package/templates/rules/research-first.md +30 -30
  410. package/templates/rules/respect-handoff-trigger.md +41 -41
  411. package/templates/rules/rust.md +40 -40
  412. package/templates/rules/sequential-editing.md +21 -21
  413. package/templates/rules/session-workflow.md +24 -24
  414. package/templates/rules/task-decomposition.md +32 -32
  415. package/templates/rules/typescript.md +40 -40
  416. package/templates/skills/cli/aider/SKILL.md +59 -59
  417. package/templates/skills/cli/amazon-q/SKILL.md +35 -35
  418. package/templates/skills/cli/auggie/SKILL.md +42 -42
  419. package/templates/skills/cli/claude/SKILL.md +42 -42
  420. package/templates/skills/cli/cline/SKILL.md +42 -42
  421. package/templates/skills/cli/codebuddy/SKILL.md +30 -30
  422. package/templates/skills/cli/codeium/SKILL.md +30 -30
  423. package/templates/skills/cli/codex/SKILL.md +31 -31
  424. package/templates/skills/cli/continue/SKILL.md +44 -44
  425. package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
  426. package/templates/skills/cli/factory/SKILL.md +28 -28
  427. package/templates/skills/cli/gemini/SKILL.md +45 -45
  428. package/templates/skills/cli/kilocode/SKILL.md +28 -28
  429. package/templates/skills/cli/opencode/SKILL.md +82 -28
  430. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  431. package/templates/skills/core/dag/SKILL.md +314 -314
  432. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  433. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  434. package/templates/skills/core/rulebook/SKILL.md +176 -176
  435. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  436. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  437. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  438. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  439. package/templates/skills/dev/analysis/SKILL.md +19 -19
  440. package/templates/skills/dev/api-design/SKILL.md +15 -15
  441. package/templates/skills/dev/architect/SKILL.md +17 -17
  442. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  443. package/templates/skills/dev/db-design/SKILL.md +15 -15
  444. package/templates/skills/dev/debug/SKILL.md +16 -16
  445. package/templates/skills/dev/deploy/SKILL.md +17 -17
  446. package/templates/skills/dev/docs/SKILL.md +17 -17
  447. package/templates/skills/dev/handoff/SKILL.md +27 -27
  448. package/templates/skills/dev/migrate/SKILL.md +15 -15
  449. package/templates/skills/dev/perf/SKILL.md +17 -17
  450. package/templates/skills/dev/refactor/SKILL.md +17 -17
  451. package/templates/skills/dev/research/SKILL.md +14 -14
  452. package/templates/skills/dev/review/SKILL.md +18 -18
  453. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  454. package/templates/skills/dev/spec/SKILL.md +65 -0
  455. package/templates/skills/ides/copilot/SKILL.md +47 -47
  456. package/templates/skills/ides/cursor/SKILL.md +53 -53
  457. package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
  458. package/templates/skills/ides/replit/SKILL.md +46 -46
  459. package/templates/skills/ides/tabnine/SKILL.md +39 -39
  460. package/templates/skills/ides/vscode/SKILL.md +50 -50
  461. package/templates/skills/ides/windsurf/SKILL.md +46 -46
  462. package/templates/skills/ides/zed/SKILL.md +42 -42
  463. package/templates/skills/languages/c/SKILL.md +343 -343
  464. package/templates/skills/languages/cpp/SKILL.md +753 -753
  465. package/templates/skills/languages/csharp/SKILL.md +427 -427
  466. package/templates/skills/languages/elixir/SKILL.md +464 -464
  467. package/templates/skills/languages/erlang/SKILL.md +371 -371
  468. package/templates/skills/languages/go/SKILL.md +655 -655
  469. package/templates/skills/languages/haskell/SKILL.md +187 -187
  470. package/templates/skills/languages/java/SKILL.md +617 -617
  471. package/templates/skills/languages/javascript/SKILL.md +641 -641
  472. package/templates/skills/languages/julia/SKILL.md +107 -107
  473. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  474. package/templates/skills/languages/lisp/SKILL.md +110 -110
  475. package/templates/skills/languages/lua/SKILL.md +84 -84
  476. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  477. package/templates/skills/languages/php/SKILL.md +426 -426
  478. package/templates/skills/languages/python/SKILL.md +692 -692
  479. package/templates/skills/languages/ruby/SKILL.md +431 -431
  480. package/templates/skills/languages/rust/SKILL.md +487 -487
  481. package/templates/skills/languages/sas/SKILL.md +83 -83
  482. package/templates/skills/languages/scala/SKILL.md +358 -358
  483. package/templates/skills/languages/solidity/SKILL.md +590 -590
  484. package/templates/skills/languages/sql/SKILL.md +147 -147
  485. package/templates/skills/languages/swift/SKILL.md +476 -476
  486. package/templates/skills/languages/typescript/SKILL.md +302 -302
  487. package/templates/skills/languages/zig/SKILL.md +275 -275
  488. package/templates/skills/modules/atlassian/SKILL.md +265 -265
  489. package/templates/skills/modules/context7/SKILL.md +64 -64
  490. package/templates/skills/modules/figma/SKILL.md +277 -277
  491. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  492. package/templates/skills/modules/grafana/SKILL.md +338 -338
  493. package/templates/skills/modules/memory/SKILL.md +73 -73
  494. package/templates/skills/modules/notion/SKILL.md +257 -257
  495. package/templates/skills/modules/playwright/SKILL.md +100 -100
  496. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  497. package/templates/skills/modules/serena/SKILL.md +347 -347
  498. package/templates/skills/modules/supabase/SKILL.md +233 -233
  499. package/templates/skills/modules/synap/SKILL.md +79 -79
  500. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  501. package/.claude/commands/ralph-config.md +0 -112
  502. package/.claude/commands/ralph-history.md +0 -110
  503. package/.claude/commands/ralph-init.md +0 -72
  504. package/.claude/commands/ralph-pause-resume.md +0 -105
  505. package/.claude/commands/ralph-run.md +0 -101
  506. package/.claude/commands/ralph-status.md +0 -76
  507. package/dist/agents/ralph-parser.d.ts +0 -91
  508. package/dist/agents/ralph-parser.d.ts.map +0 -1
  509. package/dist/agents/ralph-parser.js +0 -415
  510. package/dist/agents/ralph-parser.js.map +0 -1
  511. package/dist/cli/commands/analysis.d.ts +0 -8
  512. package/dist/cli/commands/analysis.d.ts.map +0 -1
  513. package/dist/cli/commands/analysis.js +0 -78
  514. package/dist/cli/commands/analysis.js.map +0 -1
  515. package/dist/cli/commands/compress.d.ts +0 -18
  516. package/dist/cli/commands/compress.d.ts.map +0 -1
  517. package/dist/cli/commands/compress.js +0 -100
  518. package/dist/cli/commands/compress.js.map +0 -1
  519. package/dist/cli/commands/ralph.d.ts +0 -45
  520. package/dist/cli/commands/ralph.d.ts.map +0 -1
  521. package/dist/cli/commands/ralph.js +0 -694
  522. package/dist/cli/commands/ralph.js.map +0 -1
  523. package/dist/cli/docs-prompts.d.ts +0 -3
  524. package/dist/cli/docs-prompts.d.ts.map +0 -1
  525. package/dist/cli/docs-prompts.js +0 -45
  526. package/dist/cli/docs-prompts.js.map +0 -1
  527. package/dist/core/agent-manager.d.ts +0 -69
  528. package/dist/core/agent-manager.d.ts.map +0 -1
  529. package/dist/core/agent-manager.js +0 -476
  530. package/dist/core/agent-manager.js.map +0 -1
  531. package/dist/core/agent-template-engine.d.ts +0 -51
  532. package/dist/core/agent-template-engine.d.ts.map +0 -1
  533. package/dist/core/agent-template-engine.js +0 -291
  534. package/dist/core/agent-template-engine.js.map +0 -1
  535. package/dist/core/analysis-manager.d.ts +0 -56
  536. package/dist/core/analysis-manager.d.ts.map +0 -1
  537. package/dist/core/analysis-manager.js +0 -218
  538. package/dist/core/analysis-manager.js.map +0 -1
  539. package/dist/core/auto-fixer.d.ts +0 -14
  540. package/dist/core/auto-fixer.d.ts.map +0 -1
  541. package/dist/core/auto-fixer.js +0 -207
  542. package/dist/core/auto-fixer.js.map +0 -1
  543. package/dist/core/changelog-generator.d.ts +0 -44
  544. package/dist/core/changelog-generator.d.ts.map +0 -1
  545. package/dist/core/changelog-generator.js +0 -222
  546. package/dist/core/changelog-generator.js.map +0 -1
  547. package/dist/core/claude-mcp.d.ts.map +0 -1
  548. package/dist/core/claude-mcp.js.map +0 -1
  549. package/dist/core/claude-md-generator.d.ts.map +0 -1
  550. package/dist/core/claude-md-generator.js.map +0 -1
  551. package/dist/core/claude-settings-manager.d.ts.map +0 -1
  552. package/dist/core/claude-settings-manager.js.map +0 -1
  553. package/dist/core/cli-bridge.d.ts.map +0 -1
  554. package/dist/core/cli-bridge.js.map +0 -1
  555. package/dist/core/compact-context-manager.d.ts +0 -34
  556. package/dist/core/compact-context-manager.d.ts.map +0 -1
  557. package/dist/core/compact-context-manager.js +0 -60
  558. package/dist/core/compact-context-manager.js.map +0 -1
  559. package/dist/core/complexity-detector.d.ts +0 -36
  560. package/dist/core/complexity-detector.d.ts.map +0 -1
  561. package/dist/core/complexity-detector.js +0 -334
  562. package/dist/core/complexity-detector.js.map +0 -1
  563. package/dist/core/compress/compressor.d.ts +0 -60
  564. package/dist/core/compress/compressor.d.ts.map +0 -1
  565. package/dist/core/compress/compressor.js +0 -232
  566. package/dist/core/compress/compressor.js.map +0 -1
  567. package/dist/core/compress/discover.d.ts +0 -19
  568. package/dist/core/compress/discover.d.ts.map +0 -1
  569. package/dist/core/compress/discover.js +0 -100
  570. package/dist/core/compress/discover.js.map +0 -1
  571. package/dist/core/compress/validator.d.ts +0 -47
  572. package/dist/core/compress/validator.d.ts.map +0 -1
  573. package/dist/core/compress/validator.js +0 -131
  574. package/dist/core/compress/validator.js.map +0 -1
  575. package/dist/core/config-manager.d.ts.map +0 -1
  576. package/dist/core/config-manager.js.map +0 -1
  577. package/dist/core/coverage-checker.d.ts.map +0 -1
  578. package/dist/core/coverage-checker.js.map +0 -1
  579. package/dist/core/cursor-mdc-generator.d.ts +0 -30
  580. package/dist/core/cursor-mdc-generator.d.ts.map +0 -1
  581. package/dist/core/cursor-mdc-generator.js +0 -98
  582. package/dist/core/cursor-mdc-generator.js.map +0 -1
  583. package/dist/core/decision-manager.d.ts.map +0 -1
  584. package/dist/core/decision-manager.js.map +0 -1
  585. package/dist/core/dependency-checker.d.ts.map +0 -1
  586. package/dist/core/dependency-checker.js.map +0 -1
  587. package/dist/core/detector.d.ts.map +0 -1
  588. package/dist/core/detector.js +0 -1763
  589. package/dist/core/detector.js.map +0 -1
  590. package/dist/core/docs-generator.d.ts.map +0 -1
  591. package/dist/core/docs-generator.js.map +0 -1
  592. package/dist/core/doctor.d.ts.map +0 -1
  593. package/dist/core/doctor.js.map +0 -1
  594. package/dist/core/generator.d.ts.map +0 -1
  595. package/dist/core/generator.js.map +0 -1
  596. package/dist/core/github-issues-importer.d.ts +0 -82
  597. package/dist/core/github-issues-importer.d.ts.map +0 -1
  598. package/dist/core/github-issues-importer.js +0 -161
  599. package/dist/core/github-issues-importer.js.map +0 -1
  600. package/dist/core/gitignore-generator.d.ts.map +0 -1
  601. package/dist/core/gitignore-generator.js.map +0 -1
  602. package/dist/core/health-scorer.d.ts +0 -61
  603. package/dist/core/health-scorer.d.ts.map +0 -1
  604. package/dist/core/health-scorer.js +0 -638
  605. package/dist/core/health-scorer.js.map +0 -1
  606. package/dist/core/iteration-tracker.d.ts +0 -85
  607. package/dist/core/iteration-tracker.d.ts.map +0 -1
  608. package/dist/core/iteration-tracker.js +0 -295
  609. package/dist/core/iteration-tracker.js.map +0 -1
  610. package/dist/core/knowledge-manager.d.ts.map +0 -1
  611. package/dist/core/knowledge-manager.js.map +0 -1
  612. package/dist/core/learn-manager.d.ts.map +0 -1
  613. package/dist/core/learn-manager.js.map +0 -1
  614. package/dist/core/mcp-reference-generator.d.ts.map +0 -1
  615. package/dist/core/mcp-reference-generator.js.map +0 -1
  616. package/dist/core/minimal-scaffolder.d.ts.map +0 -1
  617. package/dist/core/minimal-scaffolder.js.map +0 -1
  618. package/dist/core/modern-console.d.ts +0 -98
  619. package/dist/core/modern-console.d.ts.map +0 -1
  620. package/dist/core/modern-console.js +0 -556
  621. package/dist/core/modern-console.js.map +0 -1
  622. package/dist/core/multi-tool-generator.d.ts.map +0 -1
  623. package/dist/core/multi-tool-generator.js.map +0 -1
  624. package/dist/core/override-manager.d.ts.map +0 -1
  625. package/dist/core/override-manager.js.map +0 -1
  626. package/dist/core/plans-manager.d.ts.map +0 -1
  627. package/dist/core/plans-manager.js.map +0 -1
  628. package/dist/core/prd-generator.d.ts +0 -48
  629. package/dist/core/prd-generator.d.ts.map +0 -1
  630. package/dist/core/prd-generator.js +0 -233
  631. package/dist/core/prd-generator.js.map +0 -1
  632. package/dist/core/ralph-manager.d.ts +0 -163
  633. package/dist/core/ralph-manager.d.ts.map +0 -1
  634. package/dist/core/ralph-manager.js +0 -555
  635. package/dist/core/ralph-manager.js.map +0 -1
  636. package/dist/core/ralph-parallel.d.ts +0 -55
  637. package/dist/core/ralph-parallel.d.ts.map +0 -1
  638. package/dist/core/ralph-parallel.js +0 -201
  639. package/dist/core/ralph-parallel.js.map +0 -1
  640. package/dist/core/ralph-plan-checkpoint.d.ts +0 -58
  641. package/dist/core/ralph-plan-checkpoint.d.ts.map +0 -1
  642. package/dist/core/ralph-plan-checkpoint.js +0 -154
  643. package/dist/core/ralph-plan-checkpoint.js.map +0 -1
  644. package/dist/core/ralph-scripts.d.ts +0 -12
  645. package/dist/core/ralph-scripts.d.ts.map +0 -1
  646. package/dist/core/ralph-scripts.js +0 -50
  647. package/dist/core/ralph-scripts.js.map +0 -1
  648. package/dist/core/review-manager.d.ts +0 -74
  649. package/dist/core/review-manager.d.ts.map +0 -1
  650. package/dist/core/review-manager.js +0 -371
  651. package/dist/core/review-manager.js.map +0 -1
  652. package/dist/core/rules-generator.d.ts.map +0 -1
  653. package/dist/core/rules-generator.js.map +0 -1
  654. package/dist/core/skills-manager.d.ts.map +0 -1
  655. package/dist/core/skills-manager.js.map +0 -1
  656. package/dist/core/state-writer.d.ts.map +0 -1
  657. package/dist/core/state-writer.js.map +0 -1
  658. package/dist/core/task-manager.d.ts.map +0 -1
  659. package/dist/core/task-manager.js.map +0 -1
  660. package/dist/core/telemetry.d.ts +0 -29
  661. package/dist/core/telemetry.d.ts.map +0 -1
  662. package/dist/core/telemetry.js +0 -57
  663. package/dist/core/telemetry.js.map +0 -1
  664. package/dist/core/validator.d.ts.map +0 -1
  665. package/dist/core/validator.js.map +0 -1
  666. package/dist/core/version-bumper.d.ts.map +0 -1
  667. package/dist/core/version-bumper.js.map +0 -1
  668. package/dist/core/watcher.d.ts +0 -9
  669. package/dist/core/watcher.d.ts.map +0 -1
  670. package/dist/core/watcher.js +0 -22
  671. package/dist/core/watcher.js.map +0 -1
  672. package/dist/core/workflow-generator.d.ts.map +0 -1
  673. package/dist/core/workflow-generator.js.map +0 -1
  674. package/dist/hooks/terse-activate.d.ts +0 -59
  675. package/dist/hooks/terse-activate.d.ts.map +0 -1
  676. package/dist/hooks/terse-activate.js +0 -149
  677. package/dist/hooks/terse-activate.js.map +0 -1
  678. package/dist/hooks/terse-config.d.ts +0 -51
  679. package/dist/hooks/terse-config.d.ts.map +0 -1
  680. package/dist/hooks/terse-config.js +0 -130
  681. package/dist/hooks/terse-config.js.map +0 -1
  682. package/dist/hooks/terse-mode-tracker.d.ts +0 -78
  683. package/dist/hooks/terse-mode-tracker.d.ts.map +0 -1
  684. package/dist/hooks/terse-mode-tracker.js +0 -213
  685. package/dist/hooks/terse-mode-tracker.js.map +0 -1
  686. package/dist/memory/hnsw-index.d.ts +0 -68
  687. package/dist/memory/hnsw-index.d.ts.map +0 -1
  688. package/dist/memory/hnsw-index.js +0 -544
  689. package/dist/memory/hnsw-index.js.map +0 -1
  690. package/dist/memory/memory-cache.d.ts +0 -33
  691. package/dist/memory/memory-cache.d.ts.map +0 -1
  692. package/dist/memory/memory-cache.js +0 -85
  693. package/dist/memory/memory-cache.js.map +0 -1
  694. package/dist/memory/memory-search.d.ts +0 -42
  695. package/dist/memory/memory-search.d.ts.map +0 -1
  696. package/dist/memory/memory-search.js +0 -180
  697. package/dist/memory/memory-search.js.map +0 -1
  698. package/dist/memory/memory-store.d.ts +0 -84
  699. package/dist/memory/memory-store.d.ts.map +0 -1
  700. package/dist/memory/memory-store.js +0 -566
  701. package/dist/memory/memory-store.js.map +0 -1
  702. package/dist/memory/memory-vectorizer.d.ts +0 -29
  703. package/dist/memory/memory-vectorizer.d.ts.map +0 -1
  704. package/dist/memory/memory-vectorizer.js +0 -199
  705. package/dist/memory/memory-vectorizer.js.map +0 -1
  706. package/templates/core/RALPH.md +0 -471
  707. package/templates/frameworks/ANGULAR.md +0 -36
  708. package/templates/frameworks/DJANGO.md +0 -83
  709. package/templates/frameworks/ELECTRON.md +0 -147
  710. package/templates/frameworks/FLASK.md +0 -38
  711. package/templates/frameworks/FLUTTER.md +0 -55
  712. package/templates/frameworks/JQUERY.md +0 -32
  713. package/templates/frameworks/LARAVEL.md +0 -38
  714. package/templates/frameworks/NESTJS.md +0 -43
  715. package/templates/frameworks/NEXTJS.md +0 -127
  716. package/templates/frameworks/NUXT.md +0 -40
  717. package/templates/frameworks/RAILS.md +0 -66
  718. package/templates/frameworks/REACT.md +0 -38
  719. package/templates/frameworks/REACT_NATIVE.md +0 -47
  720. package/templates/frameworks/SPRING.md +0 -39
  721. package/templates/frameworks/SYMFONY.md +0 -36
  722. package/templates/frameworks/VUE.md +0 -36
  723. package/templates/frameworks/ZEND.md +0 -35
  724. package/templates/hooks/enforce-mcp-for-tasks.sh +0 -31
  725. package/templates/hooks/enforce-no-deferred.sh +0 -21
  726. package/templates/hooks/enforce-no-shortcuts.sh +0 -31
  727. package/templates/ides/COPILOT.md +0 -37
  728. package/templates/ides/CURSOR.md +0 -43
  729. package/templates/ides/JETBRAINS_AI.md +0 -35
  730. package/templates/ides/REPLIT.md +0 -36
  731. package/templates/ides/TABNINE.md +0 -29
  732. package/templates/ides/VSCODE.md +0 -40
  733. package/templates/ides/WINDSURF.md +0 -36
  734. package/templates/ides/ZED.md +0 -32
  735. package/templates/ides/cursor-mdc/go.mdc +0 -24
  736. package/templates/ides/cursor-mdc/python.mdc +0 -24
  737. package/templates/ides/cursor-mdc/quality.mdc +0 -25
  738. package/templates/ides/cursor-mdc/ralph.mdc +0 -39
  739. package/templates/ides/cursor-mdc/rulebook.mdc +0 -38
  740. package/templates/ides/cursor-mdc/rust.mdc +0 -24
  741. package/templates/ides/cursor-mdc/typescript.mdc +0 -25
  742. package/templates/ralph/ralph-history.bat +0 -4
  743. package/templates/ralph/ralph-history.sh +0 -5
  744. package/templates/ralph/ralph-init.bat +0 -5
  745. package/templates/ralph/ralph-init.sh +0 -5
  746. package/templates/ralph/ralph-pause.bat +0 -5
  747. package/templates/ralph/ralph-pause.sh +0 -5
  748. package/templates/ralph/ralph-run.bat +0 -5
  749. package/templates/ralph/ralph-run.sh +0 -5
  750. package/templates/ralph/ralph-status.bat +0 -4
  751. package/templates/ralph/ralph-status.sh +0 -5
  752. package/templates/services/AZURE_BLOB.md +0 -184
  753. package/templates/services/CASSANDRA.md +0 -239
  754. package/templates/services/DATADOG.md +0 -26
  755. package/templates/services/DOCKER.md +0 -124
  756. package/templates/services/DOCKER_COMPOSE.md +0 -168
  757. package/templates/services/DYNAMODB.md +0 -308
  758. package/templates/services/ELASTICSEARCH.md +0 -347
  759. package/templates/services/GCS.md +0 -178
  760. package/templates/services/HELM.md +0 -194
  761. package/templates/services/INFLUXDB.md +0 -265
  762. package/templates/services/KAFKA.md +0 -341
  763. package/templates/services/KUBERNETES.md +0 -208
  764. package/templates/services/MARIADB.md +0 -183
  765. package/templates/services/MEMCACHED.md +0 -242
  766. package/templates/services/MINIO.md +0 -201
  767. package/templates/services/MONGODB.md +0 -268
  768. package/templates/services/MYSQL.md +0 -358
  769. package/templates/services/NEO4J.md +0 -247
  770. package/templates/services/OPENTELEMETRY.md +0 -25
  771. package/templates/services/ORACLE.md +0 -290
  772. package/templates/services/PINO.md +0 -24
  773. package/templates/services/POSTGRESQL.md +0 -326
  774. package/templates/services/PROMETHEUS.md +0 -33
  775. package/templates/services/RABBITMQ.md +0 -286
  776. package/templates/services/REDIS.md +0 -292
  777. package/templates/services/S3.md +0 -298
  778. package/templates/services/SENTRY.md +0 -23
  779. package/templates/services/SQLITE.md +0 -294
  780. package/templates/services/SQLSERVER.md +0 -294
  781. package/templates/services/WINSTON.md +0 -30
  782. package/templates/skills/frameworks/angular/SKILL.md +0 -46
  783. package/templates/skills/frameworks/django/SKILL.md +0 -93
  784. package/templates/skills/frameworks/electron/SKILL.md +0 -157
  785. package/templates/skills/frameworks/flask/SKILL.md +0 -48
  786. package/templates/skills/frameworks/flutter/SKILL.md +0 -65
  787. package/templates/skills/frameworks/jquery/SKILL.md +0 -42
  788. package/templates/skills/frameworks/laravel/SKILL.md +0 -48
  789. package/templates/skills/frameworks/nestjs/SKILL.md +0 -53
  790. package/templates/skills/frameworks/nextjs/SKILL.md +0 -137
  791. package/templates/skills/frameworks/nuxt/SKILL.md +0 -50
  792. package/templates/skills/frameworks/rails/SKILL.md +0 -76
  793. package/templates/skills/frameworks/react/SKILL.md +0 -48
  794. package/templates/skills/frameworks/react-native/SKILL.md +0 -57
  795. package/templates/skills/frameworks/spring/SKILL.md +0 -49
  796. package/templates/skills/frameworks/symfony/SKILL.md +0 -46
  797. package/templates/skills/frameworks/vue/SKILL.md +0 -46
  798. package/templates/skills/frameworks/zend/SKILL.md +0 -45
  799. package/templates/skills/services/azure-blob/SKILL.md +0 -194
  800. package/templates/skills/services/cassandra/SKILL.md +0 -249
  801. package/templates/skills/services/dynamodb/SKILL.md +0 -318
  802. package/templates/skills/services/elasticsearch/SKILL.md +0 -357
  803. package/templates/skills/services/gcs/SKILL.md +0 -188
  804. package/templates/skills/services/influxdb/SKILL.md +0 -275
  805. package/templates/skills/services/kafka/SKILL.md +0 -351
  806. package/templates/skills/services/mariadb/SKILL.md +0 -193
  807. package/templates/skills/services/memcached/SKILL.md +0 -252
  808. package/templates/skills/services/minio/SKILL.md +0 -211
  809. package/templates/skills/services/mongodb/SKILL.md +0 -278
  810. package/templates/skills/services/mysql/SKILL.md +0 -368
  811. package/templates/skills/services/neo4j/SKILL.md +0 -257
  812. package/templates/skills/services/oracle/SKILL.md +0 -300
  813. package/templates/skills/services/postgresql/SKILL.md +0 -336
  814. package/templates/skills/services/rabbitmq/SKILL.md +0 -296
  815. package/templates/skills/services/redis/SKILL.md +0 -302
  816. package/templates/skills/services/s3/SKILL.md +0 -308
  817. package/templates/skills/services/sqlite/SKILL.md +0 -304
  818. package/templates/skills/services/sqlserver/SKILL.md +0 -304
  819. package/templates/skills/workflows/ralph/SETUP.md +0 -228
  820. package/templates/skills/workflows/ralph/SKILL.md +0 -309
  821. package/templates/skills/workflows/ralph/install.sh +0 -87
  822. package/templates/skills/workflows/ralph/manifest.json +0 -158
  823. /package/dist/core/{claude-md-generator.d.ts → claude/claude-md-generator.d.ts} +0 -0
  824. /package/dist/core/{docs-generator.d.ts → docs/docs-generator.d.ts} +0 -0
  825. /package/dist/core/{mcp-reference-generator.d.ts → docs/mcp-reference-generator.d.ts} +0 -0
  826. /package/dist/core/{minimal-scaffolder.d.ts → generators/minimal-scaffolder.d.ts} +0 -0
  827. /package/dist/core/{coverage-checker.d.ts → quality/coverage-checker.d.ts} +0 -0
  828. /package/dist/core/{dependency-checker.d.ts → quality/dependency-checker.d.ts} +0 -0
  829. /package/dist/core/{doctor.d.ts → quality/doctor.d.ts} +0 -0
  830. /package/dist/core/{validator.d.ts → quality/validator.d.ts} +0 -0
  831. /package/dist/core/{override-manager.d.ts → state/override-manager.d.ts} +0 -0
  832. /package/dist/core/{version-bumper.d.ts → state/version-bumper.d.ts} +0 -0
  833. /package/dist/core/{plans-manager.d.ts → tasks/plans-manager.d.ts} +0 -0
  834. /package/dist/core/{task-manager.d.ts → tasks/task-manager.d.ts} +0 -0
@@ -1,511 +1,511 @@
1
- <!-- KOTLIN:START -->
2
- # Kotlin Project Rules
3
-
4
- ## Agent Automation Commands
5
-
6
- **CRITICAL**: Execute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow).
7
-
8
- ```bash
9
- # Complete quality check sequence (Gradle):
10
- ./gradlew ktlintCheck # Format check
11
- ./gradlew detekt # Linting
12
- ./gradlew test # All tests (100% pass)
13
- ./gradlew build # Build verification
14
- ./gradlew koverVerify # Coverage (95%+ required)
15
-
16
- # Security audit:
17
- ./gradlew dependencyCheckAnalyze # Vulnerability scan
18
- ./gradlew dependencyUpdates # Check outdated deps
19
- ```
20
-
21
- ## Kotlin Configuration
22
-
23
- **CRITICAL**: Use Kotlin 2.0+ with strict null safety.
24
-
25
- - **Version**: Kotlin 2.0+
26
- - **JVM Target**: 17+
27
- - **Language Features**: All enabled
28
- - **Compiler**: K2 compiler
29
- - **Null Safety**: Strict
30
-
31
- ### build.gradle.kts Requirements
32
-
33
- ```kotlin
34
- plugins {
35
- kotlin("jvm") version "2.0.0"
36
- id("org.jetbrains.dokka") version "1.9.20"
37
- id("io.gitlab.arturbosch.detekt") version "1.23.5"
38
- id("org.jlleitschuh.gradle.ktlint") version "12.1.0"
39
- `maven-publish`
40
- signing
41
- }
42
-
43
- group = "io.github.your-username"
44
- version = "1.0.0"
45
-
46
- repositories {
47
- mavenCentral()
48
- }
49
-
50
- dependencies {
51
- implementation(kotlin("stdlib"))
52
- implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
53
-
54
- testImplementation(kotlin("test"))
55
- testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0")
56
- testImplementation("io.mockk:mockk:1.13.9")
57
- }
58
-
59
- kotlin {
60
- jvmToolchain(17)
61
-
62
- compilerOptions {
63
- freeCompilerArgs.add("-Xjsr305=strict")
64
- freeCompilerArgs.add("-Xcontext-receivers")
65
- allWarningsAsErrors.set(true)
66
- }
67
- }
68
-
69
- tasks.test {
70
- useJUnitPlatform()
71
- }
72
-
73
- tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
74
- kotlinOptions {
75
- jvmTarget = "17"
76
- freeCompilerArgs = listOf(
77
- "-Xjsr305=strict",
78
- "-Xcontext-receivers"
79
- )
80
- allWarningsAsErrors = true
81
- }
82
- }
83
-
84
- detekt {
85
- config.setFrom(files("$rootDir/detekt.yml"))
86
- buildUponDefaultConfig = true
87
- allRules = false
88
- }
89
-
90
- ktlint {
91
- version.set("1.1.0")
92
- android.set(false)
93
- ignoreFailures.set(false)
94
- }
95
- ```
96
-
97
- ## Code Quality Standards
98
-
99
- ### Mandatory Quality Checks
100
-
101
- **CRITICAL**: After implementing ANY feature, you MUST run these commands in order.
102
-
103
- **IMPORTANT**: These commands MUST match your GitHub Actions workflows to prevent CI/CD failures!
104
-
105
- ```bash
106
- # Pre-Commit Checklist (MUST match .github/workflows/*.yml)
107
-
108
- # 1. Format check (matches workflow - use Check, not Format!)
109
- ./gradlew ktlintCheck
110
-
111
- # 2. Lint (matches workflow)
112
- ./gradlew detekt
113
-
114
- # 3. Build (MUST pass with no warnings - matches workflow)
115
- ./gradlew build -x test
116
-
117
- # 4. Run all tests (MUST pass 100% - matches workflow)
118
- ./gradlew test
119
-
120
- # 5. Check coverage (MUST meet threshold)
121
- ./gradlew koverVerify
122
-
123
- # If ANY fails: ❌ DO NOT COMMIT - Fix first!
124
- ```
125
-
126
- **If ANY of these fail, you MUST fix the issues before committing.**
127
-
128
- **Why This Matters:**
129
- - CI/CD failures happen when local commands differ from workflows
130
- - Example: Using `ktlintFormat` locally but `ktlintCheck` in CI = failure
131
- - Example: Using `koverHtmlReport` locally but `koverVerify` in CI = coverage failures
132
-
133
- ### Code Style
134
-
135
- Use ktlint with `.editorconfig`:
136
-
137
- ```ini
138
- root = true
139
-
140
- [*]
141
- charset = utf-8
142
- end_of_line = lf
143
- indent_size = 4
144
- indent_style = space
145
- insert_final_newline = true
146
- max_line_length = 120
147
- tab_width = 4
148
-
149
- [*.{kt,kts}]
150
- ij_kotlin_allow_trailing_comma = true
151
- ij_kotlin_allow_trailing_comma_on_call_site = true
152
-
153
- # Imports
154
- ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^
155
-
156
- # Wrapping
157
- ij_kotlin_line_break_after_multiline_when_entry = true
158
- ij_kotlin_wrap_expression_body_functions = 1
159
- ij_kotlin_wrap_first_method_in_call_chain = false
160
-
161
- # Spacing
162
- ij_kotlin_space_after_type_colon = true
163
- ij_kotlin_space_before_type_colon = false
164
- ```
165
-
166
- ### Static Analysis
167
-
168
- Use Detekt. Configuration in `detekt.yml`:
169
-
170
- ```yaml
171
- build:
172
- maxIssues: 0
173
- weights:
174
- complexity: 2
175
- LongParameterList: 1
176
- style: 1
177
- comments: 1
178
-
179
- complexity:
180
- active: true
181
- ComplexMethod:
182
- threshold: 15
183
- LongMethod:
184
- threshold: 60
185
- LongParameterList:
186
- functionThreshold: 6
187
- TooManyFunctions:
188
- thresholdInFiles: 15
189
-
190
- naming:
191
- active: true
192
- FunctionNaming:
193
- active: true
194
- ClassNaming:
195
- active: true
196
- VariableNaming:
197
- active: true
198
-
199
- style:
200
- active: true
201
- MagicNumber:
202
- active: true
203
- ReturnCount:
204
- max: 3
205
-
206
- coroutines:
207
- active: true
208
- GlobalCoroutineUsage:
209
- active: true
210
- SuspendFunWithFlowReturnType:
211
- active: true
212
- ```
213
-
214
- ### Testing
215
-
216
- - **Framework**: JUnit 5 (Jupiter)
217
- - **Mocking**: MockK
218
- - **Coroutines**: kotlinx-coroutines-test
219
- - **Coverage**: Kover
220
- - **Coverage Threshold**: 95%+
221
-
222
- Example test:
223
-
224
- ```kotlin
225
- import io.mockk.*
226
- import kotlinx.coroutines.test.runTest
227
- import org.junit.jupiter.api.Test
228
- import org.junit.jupiter.api.assertThrows
229
- import kotlin.test.assertEquals
230
-
231
- class DataProcessorTest {
232
-
233
- @Test
234
- fun `process valid input returns uppercase`() {
235
- val processor = DataProcessor()
236
- val result = processor.process("hello")
237
-
238
- assertEquals("HELLO", result)
239
- }
240
-
241
- @Test
242
- fun `process empty input throws exception`() {
243
- val processor = DataProcessor()
244
-
245
- assertThrows<IllegalArgumentException> {
246
- processor.process("")
247
- }
248
- }
249
-
250
- @Test
251
- fun `processAsync works correctly`() = runTest {
252
- val processor = DataProcessor()
253
- val result = processor.processAsync("test")
254
-
255
- assertEquals("TEST", result)
256
- }
257
-
258
- @Test
259
- fun `test with mocking`() {
260
- val repository = mockk<UserRepository>()
261
- every { repository.findById(1) } returns User(1, "John")
262
-
263
- val service = UserService(repository)
264
- val user = service.getUser(1)
265
-
266
- assertEquals("John", user?.name)
267
- verify { repository.findById(1) }
268
- }
269
- }
270
- ```
271
-
272
- ### Null Safety
273
-
274
- - Use non-null types by default
275
- - Use `?` for nullable types
276
- - Use safe calls `?.` and Elvis operator `?:`
277
- - Avoid `!!` operator (use only when absolutely necessary)
278
-
279
- Example:
280
-
281
- ```kotlin
282
- data class User(
283
- val id: Int,
284
- val name: String,
285
- val email: String?,
286
- val phone: String? = null
287
- )
288
-
289
- class UserService(private val repository: UserRepository) {
290
-
291
- fun findUser(id: Int): User? {
292
- return repository.findById(id)
293
- }
294
-
295
- fun getUserName(id: Int): String {
296
- val user = findUser(id) ?: throw UserNotFoundException(id)
297
- return user.name
298
- }
299
-
300
- fun getUserEmail(id: Int): String {
301
- val user = findUser(id) ?: return "unknown@example.com"
302
- return user.email ?: "no-email@example.com"
303
- }
304
-
305
- fun processUsers(ids: List<Int>): List<String> {
306
- return ids.mapNotNull { id ->
307
- findUser(id)?.name
308
- }
309
- }
310
- }
311
- ```
312
-
313
- ### Coroutines
314
-
315
- - Use structured concurrency
316
- - Prefer `suspend` functions over callbacks
317
- - Use `Flow` for reactive streams
318
- - Handle cancellation properly
319
-
320
- Example:
321
-
322
- ```kotlin
323
- import kotlinx.coroutines.*
324
- import kotlinx.coroutines.flow.*
325
-
326
- class DataService(private val api: ApiClient) {
327
-
328
- suspend fun fetchData(id: Int): Result<Data> = withContext(Dispatchers.IO) {
329
- try {
330
- val data = api.getData(id)
331
- Result.success(data)
332
- } catch (e: Exception) {
333
- Result.failure(e)
334
- }
335
- }
336
-
337
- fun observeData(id: Int): Flow<Data> = flow {
338
- while (currentCoroutineContext().isActive) {
339
- val data = api.getData(id)
340
- emit(data)
341
- delay(1000)
342
- }
343
- }.flowOn(Dispatchers.IO)
344
-
345
- suspend fun fetchMultiple(ids: List<Int>): List<Data> = coroutineScope {
346
- ids.map { id ->
347
- async { fetchData(id).getOrNull() }
348
- }.awaitAll().filterNotNull()
349
- }
350
- }
351
- ```
352
-
353
- ### Data Classes & Sealed Classes
354
-
355
- - Use `data class` for value objects
356
- - Use `sealed class`/`sealed interface` for restricted hierarchies
357
- - Use `value class` for single-property wrappers
358
-
359
- Example:
360
-
361
- ```kotlin
362
- // Data class for DTOs
363
- data class User(
364
- val id: Int,
365
- val name: String,
366
- val email: String
367
- )
368
-
369
- // Sealed hierarchy for results
370
- sealed interface Result<out T> {
371
- data class Success<T>(val data: T) : Result<T>
372
- data class Error(val exception: Exception) : Result<Nothing>
373
- data object Loading : Result<Nothing>
374
- }
375
-
376
- // Value class for type safety
377
- @JvmInline
378
- value class UserId(val value: Int)
379
-
380
- @JvmInline
381
- value class Email(val value: String) {
382
- init {
383
- require(value.contains("@")) { "Invalid email format" }
384
- }
385
- }
386
- ```
387
-
388
- ### Documentation
389
-
390
- - Use KDoc for documentation
391
- - Document all public APIs
392
- - Include examples with `@sample`
393
-
394
- Example:
395
-
396
- ```kotlin
397
- /**
398
- * A processor that transforms input data.
399
- *
400
- * This class provides methods for processing strings synchronously and asynchronously.
401
- * All processing is done in a thread-safe manner.
402
- *
403
- * @property config Configuration for the processor
404
- * @constructor Creates a processor with the given configuration
405
- */
406
- class DataProcessor(private val config: ProcessorConfig = ProcessorConfig()) {
407
-
408
- /**
409
- * Processes the input string synchronously.
410
- *
411
- * @param input The string to process. Must not be empty.
412
- * @return The processed string in uppercase.
413
- * @throws IllegalArgumentException if [input] is empty.
414
- * @sample samples.DataProcessorSamples.processExample
415
- */
416
- fun process(input: String): String {
417
- require(input.isNotEmpty()) { "Input cannot be empty" }
418
- return input.uppercase()
419
- }
420
-
421
- /**
422
- * Processes the input string asynchronously.
423
- *
424
- * This is a suspending function that can be called from a coroutine.
425
- *
426
- * @param input The string to process.
427
- * @return The processed string in uppercase.
428
- */
429
- suspend fun processAsync(input: String): String = withContext(Dispatchers.Default) {
430
- process(input)
431
- }
432
- }
433
-
434
- // Sample code for documentation
435
- object samples {
436
- object DataProcessorSamples {
437
- fun processExample() {
438
- val processor = DataProcessor()
439
- val result = processor.process("hello")
440
- println(result) // Prints: HELLO
441
- }
442
- }
443
- }
444
- ```
445
-
446
- ## Project Structure
447
-
448
- ```
449
- project/
450
- ├── build.gradle.kts # Gradle build configuration
451
- ├── settings.gradle.kts # Gradle settings
452
- ├── detekt.yml # Detekt configuration
453
- ├── .editorconfig # EditorConfig for ktlint
454
- ├── README.md # Project overview (allowed in root)
455
- ├── CHANGELOG.md # Version history (allowed in root)
456
- ├── LICENSE # Project license (allowed in root)
457
- ├── src/
458
- │ ├── main/
459
- │ │ └── kotlin/
460
- │ │ └── com/yourorg/yourproject/
461
- │ │ └── YourClass.kt
462
- │ └── test/
463
- │ └── kotlin/
464
- │ └── com/yourorg/yourproject/
465
- │ └── YourClassTest.kt
466
- └── docs/ # Project documentation
467
- ```
468
-
469
- ## CI/CD Requirements
470
-
471
- Must include GitHub Actions workflows for:
472
-
473
- 1. **Testing** (`kotlin-test.yml`):
474
- - Test on ubuntu-latest, windows-latest
475
- - Test on Java 17, 21
476
- - Upload coverage reports
477
-
478
- 2. **Linting** (`kotlin-lint.yml`):
479
- - Detekt: `./gradlew detekt`
480
- - ktlint: `./gradlew ktlintCheck`
481
- - Build with warnings as errors
482
-
483
- ## Package Publication
484
-
485
- ### Publishing to Maven Central
486
-
487
- Same process as Java (see JAVA.md), but with Kotlin-specific configuration.
488
-
489
- **Publishing Checklist:**
490
-
491
- - ✅ All tests passing
492
- - ✅ Detekt passes
493
- - ✅ ktlint passes
494
- - ✅ Build succeeds with warnings as errors
495
- - ✅ Version updated in build.gradle.kts
496
- - ✅ CHANGELOG.md updated
497
- - ✅ README.md up to date
498
- - ✅ LICENSE file present
499
- - ✅ Dokka documentation generated
500
- - ✅ Artifacts signed with GPG
501
-
502
- **Dokka Documentation:**
503
-
504
- ```kotlin
505
- tasks.dokkaHtml.configure {
506
- outputDirectory.set(buildDir.resolve("dokka"))
507
- }
508
- ```
509
-
510
- <!-- KOTLIN:END -->
511
-
1
+ <!-- KOTLIN:START -->
2
+ # Kotlin Project Rules
3
+
4
+ ## Agent Automation Commands
5
+
6
+ **CRITICAL**: Execute these commands after EVERY implementation (see AGENT_AUTOMATION module for full workflow).
7
+
8
+ ```bash
9
+ # Complete quality check sequence (Gradle):
10
+ ./gradlew ktlintCheck # Format check
11
+ ./gradlew detekt # Linting
12
+ ./gradlew test # All tests (100% pass)
13
+ ./gradlew build # Build verification
14
+ ./gradlew koverVerify # Coverage (95%+ required)
15
+
16
+ # Security audit:
17
+ ./gradlew dependencyCheckAnalyze # Vulnerability scan
18
+ ./gradlew dependencyUpdates # Check outdated deps
19
+ ```
20
+
21
+ ## Kotlin Configuration
22
+
23
+ **CRITICAL**: Use Kotlin 2.0+ with strict null safety.
24
+
25
+ - **Version**: Kotlin 2.0+
26
+ - **JVM Target**: 17+
27
+ - **Language Features**: All enabled
28
+ - **Compiler**: K2 compiler
29
+ - **Null Safety**: Strict
30
+
31
+ ### build.gradle.kts Requirements
32
+
33
+ ```kotlin
34
+ plugins {
35
+ kotlin("jvm") version "2.0.0"
36
+ id("org.jetbrains.dokka") version "1.9.20"
37
+ id("io.gitlab.arturbosch.detekt") version "1.23.5"
38
+ id("org.jlleitschuh.gradle.ktlint") version "12.1.0"
39
+ `maven-publish`
40
+ signing
41
+ }
42
+
43
+ group = "io.github.your-username"
44
+ version = "1.0.0"
45
+
46
+ repositories {
47
+ mavenCentral()
48
+ }
49
+
50
+ dependencies {
51
+ implementation(kotlin("stdlib"))
52
+ implementation("org.jetbrains.kotlinx:kotlinx-coroutines-core:1.8.0")
53
+
54
+ testImplementation(kotlin("test"))
55
+ testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0")
56
+ testImplementation("io.mockk:mockk:1.13.9")
57
+ }
58
+
59
+ kotlin {
60
+ jvmToolchain(17)
61
+
62
+ compilerOptions {
63
+ freeCompilerArgs.add("-Xjsr305=strict")
64
+ freeCompilerArgs.add("-Xcontext-receivers")
65
+ allWarningsAsErrors.set(true)
66
+ }
67
+ }
68
+
69
+ tasks.test {
70
+ useJUnitPlatform()
71
+ }
72
+
73
+ tasks.withType<org.jetbrains.kotlin.gradle.tasks.KotlinCompile> {
74
+ kotlinOptions {
75
+ jvmTarget = "17"
76
+ freeCompilerArgs = listOf(
77
+ "-Xjsr305=strict",
78
+ "-Xcontext-receivers"
79
+ )
80
+ allWarningsAsErrors = true
81
+ }
82
+ }
83
+
84
+ detekt {
85
+ config.setFrom(files("$rootDir/detekt.yml"))
86
+ buildUponDefaultConfig = true
87
+ allRules = false
88
+ }
89
+
90
+ ktlint {
91
+ version.set("1.1.0")
92
+ android.set(false)
93
+ ignoreFailures.set(false)
94
+ }
95
+ ```
96
+
97
+ ## Code Quality Standards
98
+
99
+ ### Mandatory Quality Checks
100
+
101
+ **CRITICAL**: After implementing ANY feature, you MUST run these commands in order.
102
+
103
+ **IMPORTANT**: These commands MUST match your GitHub Actions workflows to prevent CI/CD failures!
104
+
105
+ ```bash
106
+ # Pre-Commit Checklist (MUST match .github/workflows/*.yml)
107
+
108
+ # 1. Format check (matches workflow - use Check, not Format!)
109
+ ./gradlew ktlintCheck
110
+
111
+ # 2. Lint (matches workflow)
112
+ ./gradlew detekt
113
+
114
+ # 3. Build (MUST pass with no warnings - matches workflow)
115
+ ./gradlew build -x test
116
+
117
+ # 4. Run all tests (MUST pass 100% - matches workflow)
118
+ ./gradlew test
119
+
120
+ # 5. Check coverage (MUST meet threshold)
121
+ ./gradlew koverVerify
122
+
123
+ # If ANY fails: ❌ DO NOT COMMIT - Fix first!
124
+ ```
125
+
126
+ **If ANY of these fail, you MUST fix the issues before committing.**
127
+
128
+ **Why This Matters:**
129
+ - CI/CD failures happen when local commands differ from workflows
130
+ - Example: Using `ktlintFormat` locally but `ktlintCheck` in CI = failure
131
+ - Example: Using `koverHtmlReport` locally but `koverVerify` in CI = coverage failures
132
+
133
+ ### Code Style
134
+
135
+ Use ktlint with `.editorconfig`:
136
+
137
+ ```ini
138
+ root = true
139
+
140
+ [*]
141
+ charset = utf-8
142
+ end_of_line = lf
143
+ indent_size = 4
144
+ indent_style = space
145
+ insert_final_newline = true
146
+ max_line_length = 120
147
+ tab_width = 4
148
+
149
+ [*.{kt,kts}]
150
+ ij_kotlin_allow_trailing_comma = true
151
+ ij_kotlin_allow_trailing_comma_on_call_site = true
152
+
153
+ # Imports
154
+ ij_kotlin_imports_layout = *,java.**,javax.**,kotlin.**,^
155
+
156
+ # Wrapping
157
+ ij_kotlin_line_break_after_multiline_when_entry = true
158
+ ij_kotlin_wrap_expression_body_functions = 1
159
+ ij_kotlin_wrap_first_method_in_call_chain = false
160
+
161
+ # Spacing
162
+ ij_kotlin_space_after_type_colon = true
163
+ ij_kotlin_space_before_type_colon = false
164
+ ```
165
+
166
+ ### Static Analysis
167
+
168
+ Use Detekt. Configuration in `detekt.yml`:
169
+
170
+ ```yaml
171
+ build:
172
+ maxIssues: 0
173
+ weights:
174
+ complexity: 2
175
+ LongParameterList: 1
176
+ style: 1
177
+ comments: 1
178
+
179
+ complexity:
180
+ active: true
181
+ ComplexMethod:
182
+ threshold: 15
183
+ LongMethod:
184
+ threshold: 60
185
+ LongParameterList:
186
+ functionThreshold: 6
187
+ TooManyFunctions:
188
+ thresholdInFiles: 15
189
+
190
+ naming:
191
+ active: true
192
+ FunctionNaming:
193
+ active: true
194
+ ClassNaming:
195
+ active: true
196
+ VariableNaming:
197
+ active: true
198
+
199
+ style:
200
+ active: true
201
+ MagicNumber:
202
+ active: true
203
+ ReturnCount:
204
+ max: 3
205
+
206
+ coroutines:
207
+ active: true
208
+ GlobalCoroutineUsage:
209
+ active: true
210
+ SuspendFunWithFlowReturnType:
211
+ active: true
212
+ ```
213
+
214
+ ### Testing
215
+
216
+ - **Framework**: JUnit 5 (Jupiter)
217
+ - **Mocking**: MockK
218
+ - **Coroutines**: kotlinx-coroutines-test
219
+ - **Coverage**: Kover
220
+ - **Coverage Threshold**: 95%+
221
+
222
+ Example test:
223
+
224
+ ```kotlin
225
+ import io.mockk.*
226
+ import kotlinx.coroutines.test.runTest
227
+ import org.junit.jupiter.api.Test
228
+ import org.junit.jupiter.api.assertThrows
229
+ import kotlin.test.assertEquals
230
+
231
+ class DataProcessorTest {
232
+
233
+ @Test
234
+ fun `process valid input returns uppercase`() {
235
+ val processor = DataProcessor()
236
+ val result = processor.process("hello")
237
+
238
+ assertEquals("HELLO", result)
239
+ }
240
+
241
+ @Test
242
+ fun `process empty input throws exception`() {
243
+ val processor = DataProcessor()
244
+
245
+ assertThrows<IllegalArgumentException> {
246
+ processor.process("")
247
+ }
248
+ }
249
+
250
+ @Test
251
+ fun `processAsync works correctly`() = runTest {
252
+ val processor = DataProcessor()
253
+ val result = processor.processAsync("test")
254
+
255
+ assertEquals("TEST", result)
256
+ }
257
+
258
+ @Test
259
+ fun `test with mocking`() {
260
+ val repository = mockk<UserRepository>()
261
+ every { repository.findById(1) } returns User(1, "John")
262
+
263
+ val service = UserService(repository)
264
+ val user = service.getUser(1)
265
+
266
+ assertEquals("John", user?.name)
267
+ verify { repository.findById(1) }
268
+ }
269
+ }
270
+ ```
271
+
272
+ ### Null Safety
273
+
274
+ - Use non-null types by default
275
+ - Use `?` for nullable types
276
+ - Use safe calls `?.` and Elvis operator `?:`
277
+ - Avoid `!!` operator (use only when absolutely necessary)
278
+
279
+ Example:
280
+
281
+ ```kotlin
282
+ data class User(
283
+ val id: Int,
284
+ val name: String,
285
+ val email: String?,
286
+ val phone: String? = null
287
+ )
288
+
289
+ class UserService(private val repository: UserRepository) {
290
+
291
+ fun findUser(id: Int): User? {
292
+ return repository.findById(id)
293
+ }
294
+
295
+ fun getUserName(id: Int): String {
296
+ val user = findUser(id) ?: throw UserNotFoundException(id)
297
+ return user.name
298
+ }
299
+
300
+ fun getUserEmail(id: Int): String {
301
+ val user = findUser(id) ?: return "unknown@example.com"
302
+ return user.email ?: "no-email@example.com"
303
+ }
304
+
305
+ fun processUsers(ids: List<Int>): List<String> {
306
+ return ids.mapNotNull { id ->
307
+ findUser(id)?.name
308
+ }
309
+ }
310
+ }
311
+ ```
312
+
313
+ ### Coroutines
314
+
315
+ - Use structured concurrency
316
+ - Prefer `suspend` functions over callbacks
317
+ - Use `Flow` for reactive streams
318
+ - Handle cancellation properly
319
+
320
+ Example:
321
+
322
+ ```kotlin
323
+ import kotlinx.coroutines.*
324
+ import kotlinx.coroutines.flow.*
325
+
326
+ class DataService(private val api: ApiClient) {
327
+
328
+ suspend fun fetchData(id: Int): Result<Data> = withContext(Dispatchers.IO) {
329
+ try {
330
+ val data = api.getData(id)
331
+ Result.success(data)
332
+ } catch (e: Exception) {
333
+ Result.failure(e)
334
+ }
335
+ }
336
+
337
+ fun observeData(id: Int): Flow<Data> = flow {
338
+ while (currentCoroutineContext().isActive) {
339
+ val data = api.getData(id)
340
+ emit(data)
341
+ delay(1000)
342
+ }
343
+ }.flowOn(Dispatchers.IO)
344
+
345
+ suspend fun fetchMultiple(ids: List<Int>): List<Data> = coroutineScope {
346
+ ids.map { id ->
347
+ async { fetchData(id).getOrNull() }
348
+ }.awaitAll().filterNotNull()
349
+ }
350
+ }
351
+ ```
352
+
353
+ ### Data Classes & Sealed Classes
354
+
355
+ - Use `data class` for value objects
356
+ - Use `sealed class`/`sealed interface` for restricted hierarchies
357
+ - Use `value class` for single-property wrappers
358
+
359
+ Example:
360
+
361
+ ```kotlin
362
+ // Data class for DTOs
363
+ data class User(
364
+ val id: Int,
365
+ val name: String,
366
+ val email: String
367
+ )
368
+
369
+ // Sealed hierarchy for results
370
+ sealed interface Result<out T> {
371
+ data class Success<T>(val data: T) : Result<T>
372
+ data class Error(val exception: Exception) : Result<Nothing>
373
+ data object Loading : Result<Nothing>
374
+ }
375
+
376
+ // Value class for type safety
377
+ @JvmInline
378
+ value class UserId(val value: Int)
379
+
380
+ @JvmInline
381
+ value class Email(val value: String) {
382
+ init {
383
+ require(value.contains("@")) { "Invalid email format" }
384
+ }
385
+ }
386
+ ```
387
+
388
+ ### Documentation
389
+
390
+ - Use KDoc for documentation
391
+ - Document all public APIs
392
+ - Include examples with `@sample`
393
+
394
+ Example:
395
+
396
+ ```kotlin
397
+ /**
398
+ * A processor that transforms input data.
399
+ *
400
+ * This class provides methods for processing strings synchronously and asynchronously.
401
+ * All processing is done in a thread-safe manner.
402
+ *
403
+ * @property config Configuration for the processor
404
+ * @constructor Creates a processor with the given configuration
405
+ */
406
+ class DataProcessor(private val config: ProcessorConfig = ProcessorConfig()) {
407
+
408
+ /**
409
+ * Processes the input string synchronously.
410
+ *
411
+ * @param input The string to process. Must not be empty.
412
+ * @return The processed string in uppercase.
413
+ * @throws IllegalArgumentException if [input] is empty.
414
+ * @sample samples.DataProcessorSamples.processExample
415
+ */
416
+ fun process(input: String): String {
417
+ require(input.isNotEmpty()) { "Input cannot be empty" }
418
+ return input.uppercase()
419
+ }
420
+
421
+ /**
422
+ * Processes the input string asynchronously.
423
+ *
424
+ * This is a suspending function that can be called from a coroutine.
425
+ *
426
+ * @param input The string to process.
427
+ * @return The processed string in uppercase.
428
+ */
429
+ suspend fun processAsync(input: String): String = withContext(Dispatchers.Default) {
430
+ process(input)
431
+ }
432
+ }
433
+
434
+ // Sample code for documentation
435
+ object samples {
436
+ object DataProcessorSamples {
437
+ fun processExample() {
438
+ val processor = DataProcessor()
439
+ val result = processor.process("hello")
440
+ println(result) // Prints: HELLO
441
+ }
442
+ }
443
+ }
444
+ ```
445
+
446
+ ## Project Structure
447
+
448
+ ```
449
+ project/
450
+ ├── build.gradle.kts # Gradle build configuration
451
+ ├── settings.gradle.kts # Gradle settings
452
+ ├── detekt.yml # Detekt configuration
453
+ ├── .editorconfig # EditorConfig for ktlint
454
+ ├── README.md # Project overview (allowed in root)
455
+ ├── CHANGELOG.md # Version history (allowed in root)
456
+ ├── LICENSE # Project license (allowed in root)
457
+ ├── src/
458
+ │ ├── main/
459
+ │ │ └── kotlin/
460
+ │ │ └── com/yourorg/yourproject/
461
+ │ │ └── YourClass.kt
462
+ │ └── test/
463
+ │ └── kotlin/
464
+ │ └── com/yourorg/yourproject/
465
+ │ └── YourClassTest.kt
466
+ └── docs/ # Project documentation
467
+ ```
468
+
469
+ ## CI/CD Requirements
470
+
471
+ Must include GitHub Actions workflows for:
472
+
473
+ 1. **Testing** (`kotlin-test.yml`):
474
+ - Test on ubuntu-latest, windows-latest
475
+ - Test on Java 17, 21
476
+ - Upload coverage reports
477
+
478
+ 2. **Linting** (`kotlin-lint.yml`):
479
+ - Detekt: `./gradlew detekt`
480
+ - ktlint: `./gradlew ktlintCheck`
481
+ - Build with warnings as errors
482
+
483
+ ## Package Publication
484
+
485
+ ### Publishing to Maven Central
486
+
487
+ Same process as Java (see JAVA.md), but with Kotlin-specific configuration.
488
+
489
+ **Publishing Checklist:**
490
+
491
+ - ✅ All tests passing
492
+ - ✅ Detekt passes
493
+ - ✅ ktlint passes
494
+ - ✅ Build succeeds with warnings as errors
495
+ - ✅ Version updated in build.gradle.kts
496
+ - ✅ CHANGELOG.md updated
497
+ - ✅ README.md up to date
498
+ - ✅ LICENSE file present
499
+ - ✅ Dokka documentation generated
500
+ - ✅ Artifacts signed with GPG
501
+
502
+ **Dokka Documentation:**
503
+
504
+ ```kotlin
505
+ tasks.dokkaHtml.configure {
506
+ outputDirectory.set(buildDir.resolve("dokka"))
507
+ }
508
+ ```
509
+
510
+ <!-- KOTLIN:END -->
511
+