@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
@@ -0,0 +1,766 @@
1
+ import path from 'path';
2
+ import { existsSync } from 'fs';
3
+ import { readdir } from 'fs/promises';
4
+ import { fileExists, findFiles, readFile, readJsonFile } from '../../utils/file-system.js';
5
+ import { LIBRARY_REGISTRY } from './library-registry.js';
6
+ export async function detectProject(cwd = process.cwd()) {
7
+ const languages = await detectLanguages(cwd);
8
+ const libraries = await detectLibraries(cwd);
9
+ const modules = await detectModules(cwd);
10
+ const existingAgents = await detectExistingAgents(cwd);
11
+ const gitHooks = await detectGitHooks(cwd);
12
+ const monorepo = await detectMonorepo(cwd);
13
+ const cursor = await detectCursor(cwd);
14
+ const geminiCli = await detectGeminiCli(cwd);
15
+ const continueDev = await detectContinueDev(cwd);
16
+ const windsurf = await detectWindsurf(cwd);
17
+ const githubCopilot = await detectGithubCopilot(cwd);
18
+ const opencode = await detectOpencode(cwd);
19
+ return {
20
+ languages,
21
+ libraries,
22
+ modules,
23
+ existingAgents,
24
+ gitHooks,
25
+ monorepo,
26
+ cursor,
27
+ geminiCli,
28
+ continueDev,
29
+ windsurf,
30
+ githubCopilot,
31
+ opencode,
32
+ };
33
+ }
34
+ /**
35
+ * Detect OpenCode CLI presence by checking the project for `opencode.json`,
36
+ * `opencode.jsonc`, or a `.opencode/` directory. The PATH-level binary probe
37
+ * is handled by `ConfigManager.detectCLITools()` (which adds `'opencode'`
38
+ * to the cliTools list) so that this detector stays pure and deterministic
39
+ * for tests.
40
+ */
41
+ export async function detectOpencode(cwd) {
42
+ const hasConfigJson = existsSync(path.join(cwd, 'opencode.json')) || existsSync(path.join(cwd, 'opencode.jsonc'));
43
+ const hasOpencodeDir = existsSync(path.join(cwd, '.opencode'));
44
+ return {
45
+ detected: hasConfigJson || hasOpencodeDir,
46
+ hasConfigJson,
47
+ hasOpencodeDir,
48
+ };
49
+ }
50
+ /**
51
+ * Detect Cursor IDE presence and configuration status.
52
+ */
53
+ export async function detectCursor(cwd) {
54
+ const cursorDir = path.join(cwd, '.cursor');
55
+ const cursorrules = path.join(cwd, '.cursorrules');
56
+ const rulesDir = path.join(cursorDir, 'rules');
57
+ const hasCursorDir = existsSync(cursorDir);
58
+ const hasCursorrules = existsSync(cursorrules);
59
+ const detected = hasCursorDir || hasCursorrules;
60
+ let hasMdcRules = false;
61
+ if (existsSync(rulesDir)) {
62
+ try {
63
+ const files = await readdir(rulesDir);
64
+ hasMdcRules = files.some((f) => f.endsWith('.mdc'));
65
+ }
66
+ catch {
67
+ // ignore
68
+ }
69
+ }
70
+ return { detected, hasCursorrules, hasMdcRules };
71
+ }
72
+ /**
73
+ * Detect Gemini CLI presence by checking for GEMINI.md in the project root.
74
+ */
75
+ export async function detectGeminiCli(cwd) {
76
+ const geminiMd = path.join(cwd, 'GEMINI.md');
77
+ const detected = existsSync(geminiMd);
78
+ return { detected };
79
+ }
80
+ /**
81
+ * Detect Continue.dev IDE extension by checking for the .continue/ directory.
82
+ */
83
+ export async function detectContinueDev(cwd) {
84
+ const continueDir = path.join(cwd, '.continue');
85
+ const rulesDir = path.join(continueDir, 'rules');
86
+ const detected = existsSync(continueDir);
87
+ return { detected, rulesDir };
88
+ }
89
+ /**
90
+ * Detect Windsurf IDE by checking for .windsurfrules in the project root.
91
+ */
92
+ export async function detectWindsurf(cwd) {
93
+ const windsurfrules = path.join(cwd, '.windsurfrules');
94
+ const detected = existsSync(windsurfrules);
95
+ return { detected };
96
+ }
97
+ /**
98
+ * Detect GitHub Copilot by checking for .github/copilot-instructions.md.
99
+ */
100
+ export async function detectGithubCopilot(cwd) {
101
+ const copilotInstructions = path.join(cwd, '.github', 'copilot-instructions.md');
102
+ const detected = existsSync(copilotInstructions);
103
+ return { detected };
104
+ }
105
+ /**
106
+ * Detect monorepo structure: Turborepo, Nx, pnpm workspaces, Lerna, or manual.
107
+ */
108
+ export async function detectMonorepo(cwd) {
109
+ // Turborepo
110
+ if (existsSync(path.join(cwd, 'turbo.json'))) {
111
+ const packages = await discoverPackages(cwd);
112
+ return { detected: true, tool: 'turborepo', packages };
113
+ }
114
+ // Nx
115
+ if (existsSync(path.join(cwd, 'nx.json'))) {
116
+ const packages = await discoverPackages(cwd);
117
+ return { detected: true, tool: 'nx', packages };
118
+ }
119
+ // pnpm workspaces
120
+ if (existsSync(path.join(cwd, 'pnpm-workspace.yaml'))) {
121
+ const packages = await discoverPackages(cwd);
122
+ return { detected: true, tool: 'pnpm', packages };
123
+ }
124
+ // Lerna
125
+ if (existsSync(path.join(cwd, 'lerna.json'))) {
126
+ const packages = await discoverPackages(cwd);
127
+ return { detected: true, tool: 'lerna', packages };
128
+ }
129
+ // Manual monorepo — packages/ or apps/ directory with multiple package.json files
130
+ const packages = await discoverPackages(cwd);
131
+ if (packages.length >= 2) {
132
+ return { detected: true, tool: 'manual', packages };
133
+ }
134
+ return { detected: false, tool: null, packages: [] };
135
+ }
136
+ /**
137
+ * Discover package directories by looking for package.json in packages/ and apps/.
138
+ */
139
+ async function discoverPackages(cwd) {
140
+ const packageDirs = [];
141
+ const searchDirs = ['packages', 'apps', 'libs', 'services'];
142
+ for (const searchDir of searchDirs) {
143
+ const absDir = path.join(cwd, searchDir);
144
+ if (!existsSync(absDir))
145
+ continue;
146
+ try {
147
+ const entries = await readdir(absDir, { withFileTypes: true });
148
+ for (const entry of entries) {
149
+ if (!entry.isDirectory())
150
+ continue;
151
+ const pkgJson = path.join(absDir, entry.name, 'package.json');
152
+ if (existsSync(pkgJson)) {
153
+ packageDirs.push(`${searchDir}/${entry.name}`);
154
+ }
155
+ }
156
+ }
157
+ catch {
158
+ // ignore unreadable dirs
159
+ }
160
+ }
161
+ return packageDirs;
162
+ }
163
+ async function detectLanguages(cwd) {
164
+ const detections = [];
165
+ // Detect Rust
166
+ const cargoToml = path.join(cwd, 'Cargo.toml');
167
+ if (await fileExists(cargoToml)) {
168
+ const rsFiles = await findFiles('**/*.rs', cwd);
169
+ detections.push({
170
+ language: 'rust',
171
+ confidence: rsFiles.length > 0 ? 1.0 : 0.8,
172
+ indicators: ['Cargo.toml', `${rsFiles.length} .rs files`],
173
+ });
174
+ }
175
+ // Detect TypeScript
176
+ const packageJson = path.join(cwd, 'package.json');
177
+ const tsConfig = path.join(cwd, 'tsconfig.json');
178
+ if ((await fileExists(packageJson)) || (await fileExists(tsConfig))) {
179
+ const tsFiles = await findFiles('**/*.ts', cwd);
180
+ detections.push({
181
+ language: 'typescript',
182
+ confidence: tsFiles.length > 0 ? 1.0 : 0.7,
183
+ indicators: [
184
+ (await fileExists(packageJson)) ? 'package.json' : '',
185
+ (await fileExists(tsConfig)) ? 'tsconfig.json' : '',
186
+ `${tsFiles.length} .ts files`,
187
+ ].filter(Boolean),
188
+ });
189
+ }
190
+ // Detect Python
191
+ const pyprojectToml = path.join(cwd, 'pyproject.toml');
192
+ const requirementsTxt = path.join(cwd, 'requirements.txt');
193
+ const setupPy = path.join(cwd, 'setup.py');
194
+ if ((await fileExists(pyprojectToml)) ||
195
+ (await fileExists(requirementsTxt)) ||
196
+ (await fileExists(setupPy))) {
197
+ const pyFiles = await findFiles('**/*.py', cwd);
198
+ detections.push({
199
+ language: 'python',
200
+ confidence: pyFiles.length > 0 ? 1.0 : 0.7,
201
+ indicators: [
202
+ (await fileExists(pyprojectToml)) ? 'pyproject.toml' : '',
203
+ (await fileExists(requirementsTxt)) ? 'requirements.txt' : '',
204
+ (await fileExists(setupPy)) ? 'setup.py' : '',
205
+ `${pyFiles.length} .py files`,
206
+ ].filter(Boolean),
207
+ });
208
+ }
209
+ // Detect Go
210
+ const goMod = path.join(cwd, 'go.mod');
211
+ if (await fileExists(goMod)) {
212
+ const goFiles = await findFiles('**/*.go', cwd);
213
+ detections.push({
214
+ language: 'go',
215
+ confidence: goFiles.length > 0 ? 1.0 : 0.8,
216
+ indicators: ['go.mod', `${goFiles.length} .go files`],
217
+ });
218
+ }
219
+ // Detect Java
220
+ const pomXml = path.join(cwd, 'pom.xml');
221
+ const buildGradle = path.join(cwd, 'build.gradle');
222
+ const buildGradleKts = path.join(cwd, 'build.gradle.kts');
223
+ if ((await fileExists(pomXml)) ||
224
+ (await fileExists(buildGradle)) ||
225
+ (await fileExists(buildGradleKts))) {
226
+ const javaFiles = await findFiles('**/*.java', cwd);
227
+ detections.push({
228
+ language: 'java',
229
+ confidence: javaFiles.length > 0 ? 1.0 : 0.7,
230
+ indicators: [
231
+ (await fileExists(pomXml)) ? 'pom.xml' : '',
232
+ (await fileExists(buildGradle)) ? 'build.gradle' : '',
233
+ (await fileExists(buildGradleKts)) ? 'build.gradle.kts' : '',
234
+ `${javaFiles.length} .java files`,
235
+ ].filter(Boolean),
236
+ });
237
+ }
238
+ // Detect C/C++
239
+ const cmakeLists = path.join(cwd, 'CMakeLists.txt');
240
+ const makeFile = path.join(cwd, 'Makefile');
241
+ if ((await fileExists(cmakeLists)) || (await fileExists(makeFile))) {
242
+ const cppFiles = await findFiles('**/*.{cpp,hpp,cc,h,c}', cwd);
243
+ detections.push({
244
+ language: 'cpp',
245
+ confidence: cppFiles.length > 0 ? 1.0 : 0.8,
246
+ indicators: [
247
+ (await fileExists(cmakeLists)) ? 'CMakeLists.txt' : '',
248
+ (await fileExists(makeFile)) ? 'Makefile' : '',
249
+ `${cppFiles.length} C/C++ files`,
250
+ ].filter(Boolean),
251
+ });
252
+ }
253
+ // Detect Solidity
254
+ const hardhatConfig = path.join(cwd, 'hardhat.config.js');
255
+ const foundryToml = path.join(cwd, 'foundry.toml');
256
+ if ((await fileExists(hardhatConfig)) || (await fileExists(foundryToml))) {
257
+ const solFiles = await findFiles('**/*.sol', cwd);
258
+ detections.push({
259
+ language: 'solidity',
260
+ confidence: solFiles.length > 0 ? 1.0 : 0.8,
261
+ indicators: [
262
+ (await fileExists(hardhatConfig)) ? 'hardhat.config.js' : '',
263
+ (await fileExists(foundryToml)) ? 'foundry.toml' : '',
264
+ `${solFiles.length} .sol files`,
265
+ ].filter(Boolean),
266
+ });
267
+ }
268
+ // Detect Zig
269
+ const buildZig = path.join(cwd, 'build.zig');
270
+ if (await fileExists(buildZig)) {
271
+ const zigFiles = await findFiles('**/*.zig', cwd);
272
+ detections.push({
273
+ language: 'zig',
274
+ confidence: zigFiles.length > 0 ? 1.0 : 0.9,
275
+ indicators: ['build.zig', `${zigFiles.length} .zig files`],
276
+ });
277
+ }
278
+ // Detect Erlang
279
+ const rebarConfig = path.join(cwd, 'rebar.config');
280
+ if (await fileExists(rebarConfig)) {
281
+ const erlFiles = await findFiles('**/*.erl', cwd);
282
+ detections.push({
283
+ language: 'erlang',
284
+ confidence: erlFiles.length > 0 ? 1.0 : 0.8,
285
+ indicators: ['rebar.config', `${erlFiles.length} .erl files`],
286
+ });
287
+ }
288
+ // Detect JavaScript (pure, not TypeScript)
289
+ if (await fileExists(packageJson)) {
290
+ const jsFiles = await findFiles('**/*.js', cwd);
291
+ const hasTS = detections.some((d) => d.language === 'typescript');
292
+ if (!hasTS && jsFiles.length > 0) {
293
+ const pkg = await readJsonFile(packageJson);
294
+ detections.push({
295
+ language: 'javascript',
296
+ confidence: 0.9,
297
+ indicators: [
298
+ 'package.json',
299
+ `${jsFiles.length} .js files`,
300
+ pkg?.type === 'module' ? 'ESM' : '',
301
+ ].filter(Boolean),
302
+ });
303
+ }
304
+ }
305
+ // Detect Dart
306
+ const pubspecYaml = path.join(cwd, 'pubspec.yaml');
307
+ if (await fileExists(pubspecYaml)) {
308
+ const dartFiles = await findFiles('**/*.dart', cwd);
309
+ detections.push({
310
+ language: 'dart',
311
+ confidence: dartFiles.length > 0 ? 1.0 : 0.8,
312
+ indicators: ['pubspec.yaml', `${dartFiles.length} .dart files`],
313
+ });
314
+ }
315
+ // Detect Ruby
316
+ const gemfile = path.join(cwd, 'Gemfile');
317
+ const gemspec = await findFiles('**/*.gemspec', cwd);
318
+ if ((await fileExists(gemfile)) || gemspec.length > 0) {
319
+ const rbFiles = await findFiles('**/*.rb', cwd);
320
+ detections.push({
321
+ language: 'ruby',
322
+ confidence: rbFiles.length > 0 ? 1.0 : 0.7,
323
+ indicators: [
324
+ (await fileExists(gemfile)) ? 'Gemfile' : '',
325
+ gemspec.length > 0 ? `${gemspec.length} .gemspec` : '',
326
+ `${rbFiles.length} .rb files`,
327
+ ].filter(Boolean),
328
+ });
329
+ }
330
+ // Detect Scala
331
+ const buildSbt = path.join(cwd, 'build.sbt');
332
+ if (await fileExists(buildSbt)) {
333
+ const scalaFiles = await findFiles('**/*.scala', cwd);
334
+ detections.push({
335
+ language: 'scala',
336
+ confidence: scalaFiles.length > 0 ? 1.0 : 0.8,
337
+ indicators: ['build.sbt', `${scalaFiles.length} .scala files`],
338
+ });
339
+ }
340
+ // Detect R
341
+ const descriptionFile = path.join(cwd, 'DESCRIPTION');
342
+ if (await fileExists(descriptionFile)) {
343
+ const rFiles = await findFiles('**/*.R', cwd);
344
+ detections.push({
345
+ language: 'r',
346
+ confidence: rFiles.length > 0 ? 1.0 : 0.8,
347
+ indicators: ['DESCRIPTION', `${rFiles.length} .R files`],
348
+ });
349
+ }
350
+ // Detect Haskell
351
+ const stackYaml = path.join(cwd, 'stack.yaml');
352
+ const cabalFiles = await findFiles('**/*.cabal', cwd);
353
+ if ((await fileExists(stackYaml)) || cabalFiles.length > 0) {
354
+ const hsFiles = await findFiles('**/*.hs', cwd);
355
+ detections.push({
356
+ language: 'haskell',
357
+ confidence: hsFiles.length > 0 ? 1.0 : 0.8,
358
+ indicators: [
359
+ (await fileExists(stackYaml)) ? 'stack.yaml' : '',
360
+ cabalFiles.length > 0 ? `${cabalFiles.length} .cabal` : '',
361
+ `${hsFiles.length} .hs files`,
362
+ ].filter(Boolean),
363
+ });
364
+ }
365
+ // Detect Julia
366
+ const projectToml = path.join(cwd, 'Project.toml');
367
+ if (await fileExists(projectToml)) {
368
+ const jlFiles = await findFiles('**/*.jl', cwd);
369
+ detections.push({
370
+ language: 'julia',
371
+ confidence: jlFiles.length > 0 ? 1.0 : 0.8,
372
+ indicators: ['Project.toml', `${jlFiles.length} .jl files`],
373
+ });
374
+ }
375
+ // Detect Lua
376
+ const luaFiles = await findFiles('**/*.lua', cwd);
377
+ if (luaFiles.length > 5) {
378
+ detections.push({
379
+ language: 'lua',
380
+ confidence: 0.9,
381
+ indicators: [`${luaFiles.length} .lua files`],
382
+ });
383
+ }
384
+ // Sort by confidence
385
+ return detections.sort((a, b) => b.confidence - a.confidence);
386
+ }
387
+ async function detectModules(cwd) {
388
+ const modules = [];
389
+ // Check for MCP configuration files
390
+ const mcpConfigPaths = [
391
+ path.join(cwd, 'mcp.json'),
392
+ path.join(cwd, 'mcp-config.json'),
393
+ path.join(cwd, '.cursor', 'mcp.json'),
394
+ ];
395
+ for (const mcpPath of mcpConfigPaths) {
396
+ if (await fileExists(mcpPath)) {
397
+ try {
398
+ const config = await readJsonFile(mcpPath);
399
+ if (config) {
400
+ // Check for Vectorizer
401
+ if (config.mcpServers?.vectorizer || config.servers?.vectorizer) {
402
+ modules.push({
403
+ module: 'vectorizer',
404
+ detected: true,
405
+ source: mcpPath,
406
+ });
407
+ }
408
+ // Check for Synap
409
+ if (config.mcpServers?.synap || config.servers?.synap) {
410
+ modules.push({
411
+ module: 'synap',
412
+ detected: true,
413
+ source: mcpPath,
414
+ });
415
+ }
416
+ // Check for Context7
417
+ if (config.mcpServers?.context7 || config.servers?.context7) {
418
+ modules.push({
419
+ module: 'context7',
420
+ detected: true,
421
+ source: mcpPath,
422
+ });
423
+ }
424
+ // Check for GitHub MCP Server
425
+ if (config.mcpServers?.github || config.servers?.github) {
426
+ modules.push({
427
+ module: 'github',
428
+ detected: true,
429
+ source: mcpPath,
430
+ });
431
+ }
432
+ // Check for Playwright MCP Server
433
+ if (config.mcpServers?.playwright || config.servers?.playwright) {
434
+ modules.push({
435
+ module: 'playwright',
436
+ detected: true,
437
+ source: mcpPath,
438
+ });
439
+ }
440
+ // Check for Rulebook MCP Server
441
+ if (config.mcpServers?.rulebook || config.servers?.rulebook) {
442
+ modules.push({
443
+ module: 'rulebook_mcp',
444
+ detected: true,
445
+ source: mcpPath,
446
+ });
447
+ }
448
+ // Check for Sequential Thinking MCP Server (various key names)
449
+ const seqKeys = ['sequential-thinking', 'sequential_thinking', 'sequentialThinking'];
450
+ const hasSeqThinking = seqKeys.some((k) => config.mcpServers?.[k] || config.servers?.[k]) ||
451
+ Object.entries(config.mcpServers ?? {}).some(([, v]) => typeof v === 'object' &&
452
+ v !== null &&
453
+ 'args' in v &&
454
+ Array.isArray(v.args) &&
455
+ v.args.some((a) => typeof a === 'string' && a.includes('sequential-thinking')));
456
+ if (hasSeqThinking) {
457
+ modules.push({
458
+ module: 'sequential_thinking',
459
+ detected: true,
460
+ source: mcpPath,
461
+ });
462
+ }
463
+ }
464
+ }
465
+ catch {
466
+ // Ignore JSON parse errors
467
+ }
468
+ }
469
+ }
470
+ // Add undetected modules
471
+ const detectedModules = new Set(modules.map((m) => m.module));
472
+ const allModules = [
473
+ 'vectorizer',
474
+ 'synap',
475
+ 'context7',
476
+ 'github',
477
+ 'playwright',
478
+ 'rulebook_mcp',
479
+ 'sequential_thinking',
480
+ ];
481
+ for (const module of allModules) {
482
+ if (!detectedModules.has(module)) {
483
+ modules.push({
484
+ module,
485
+ detected: false,
486
+ });
487
+ }
488
+ }
489
+ return modules;
490
+ }
491
+ async function detectExistingAgents(cwd) {
492
+ const agentsPath = path.join(cwd, 'AGENTS.md');
493
+ if (!(await fileExists(agentsPath))) {
494
+ return null;
495
+ }
496
+ const content = await readFile(agentsPath);
497
+ const blocks = parseAgentBlocks(content);
498
+ return {
499
+ exists: true,
500
+ path: agentsPath,
501
+ content,
502
+ blocks,
503
+ };
504
+ }
505
+ function parseAgentBlocks(content) {
506
+ const blocks = [];
507
+ const lines = content.split('\n');
508
+ let currentBlock = null;
509
+ for (let i = 0; i < lines.length; i++) {
510
+ const line = lines[i];
511
+ const startMatch = line.match(/<!--\s*([A-Z_]+):START\s*-->/);
512
+ const endMatch = line.match(/<!--\s*([A-Z_]+):END\s*-->/);
513
+ if (startMatch) {
514
+ currentBlock = {
515
+ name: startMatch[1],
516
+ startLine: i,
517
+ content: [line],
518
+ };
519
+ }
520
+ else if (endMatch && currentBlock) {
521
+ currentBlock.content.push(line);
522
+ blocks.push({
523
+ name: currentBlock.name,
524
+ startLine: currentBlock.startLine,
525
+ endLine: i,
526
+ content: currentBlock.content.join('\n'),
527
+ });
528
+ currentBlock = null;
529
+ }
530
+ else if (currentBlock) {
531
+ currentBlock.content.push(line);
532
+ }
533
+ }
534
+ return blocks;
535
+ }
536
+ async function detectGitHooks(cwd) {
537
+ const preCommitPath = path.join(cwd, '.git', 'hooks', 'pre-commit');
538
+ const prePushPath = path.join(cwd, '.git', 'hooks', 'pre-push');
539
+ return {
540
+ preCommitExists: await fileExists(preCommitPath),
541
+ prePushExists: await fileExists(prePushPath),
542
+ };
543
+ }
544
+ /** Read direct npm dependency names (dependencies + devDependencies) from package.json. */
545
+ async function readNpmDeps(cwd) {
546
+ const pkg = await readJsonFile(path.join(cwd, 'package.json'));
547
+ if (!pkg)
548
+ return new Set();
549
+ return new Set([
550
+ ...Object.keys(pkg.dependencies ?? {}),
551
+ ...Object.keys(pkg.devDependencies ?? {}),
552
+ ]);
553
+ }
554
+ /**
555
+ * Read direct crate names from the [dependencies], [dev-dependencies], and
556
+ * [build-dependencies] tables of Cargo.toml. Only top-level keys are considered.
557
+ */
558
+ async function readCargoDeps(cwd) {
559
+ const file = path.join(cwd, 'Cargo.toml');
560
+ if (!(await fileExists(file)))
561
+ return new Set();
562
+ let content = '';
563
+ try {
564
+ content = await readFile(file);
565
+ }
566
+ catch {
567
+ return new Set();
568
+ }
569
+ const deps = new Set();
570
+ let inDeps = false;
571
+ for (const raw of content.split('\n')) {
572
+ const line = raw.trim();
573
+ if (line.startsWith('[')) {
574
+ inDeps = /^\[(dependencies|dev-dependencies|build-dependencies)\]$/.test(line);
575
+ continue;
576
+ }
577
+ if (!inDeps || line === '' || line.startsWith('#'))
578
+ continue;
579
+ const match = line.match(/^([A-Za-z0-9_-]+)\s*(=|\.)/);
580
+ if (match)
581
+ deps.add(match[1]);
582
+ }
583
+ return deps;
584
+ }
585
+ /** Normalize a Python distribution name for case- and separator-insensitive matching. */
586
+ function normalizePyName(name) {
587
+ return name.toLowerCase().replace(/_/g, '-');
588
+ }
589
+ /**
590
+ * Read direct Python dependency names from pyproject.toml ([project].dependencies and
591
+ * [tool.poetry.dependencies]) and requirements.txt.
592
+ */
593
+ async function readPipDeps(cwd) {
594
+ const deps = new Set();
595
+ const pyproject = path.join(cwd, 'pyproject.toml');
596
+ if (await fileExists(pyproject)) {
597
+ let content = '';
598
+ try {
599
+ content = await readFile(pyproject);
600
+ }
601
+ catch {
602
+ content = '';
603
+ }
604
+ const arrayMatch = content.match(/dependencies\s*=\s*\[([^\]]*)\]/s);
605
+ if (arrayMatch) {
606
+ for (const item of arrayMatch[1].split(',')) {
607
+ const name = item
608
+ .replace(/['"]/g, '')
609
+ .trim()
610
+ .split(/[<>=!~ ;[]/)[0];
611
+ if (name)
612
+ deps.add(normalizePyName(name));
613
+ }
614
+ }
615
+ let inPoetry = false;
616
+ for (const raw of content.split('\n')) {
617
+ const line = raw.trim();
618
+ if (line.startsWith('[')) {
619
+ inPoetry = line === '[tool.poetry.dependencies]';
620
+ continue;
621
+ }
622
+ if (!inPoetry || line === '' || line.startsWith('#'))
623
+ continue;
624
+ const match = line.match(/^([A-Za-z0-9_.-]+)\s*=/);
625
+ if (match && match[1].toLowerCase() !== 'python')
626
+ deps.add(normalizePyName(match[1]));
627
+ }
628
+ }
629
+ const requirements = path.join(cwd, 'requirements.txt');
630
+ if (await fileExists(requirements)) {
631
+ let content = '';
632
+ try {
633
+ content = await readFile(requirements);
634
+ }
635
+ catch {
636
+ content = '';
637
+ }
638
+ for (const raw of content.split('\n')) {
639
+ const line = raw.trim();
640
+ if (line === '' || line.startsWith('#') || line.startsWith('-'))
641
+ continue;
642
+ const name = line.split(/[<>=!~ ;[]/)[0];
643
+ if (name)
644
+ deps.add(normalizePyName(name));
645
+ }
646
+ }
647
+ return deps;
648
+ }
649
+ /** Read required module paths from go.mod (both single-line and require-block forms). */
650
+ async function readGoDeps(cwd) {
651
+ const file = path.join(cwd, 'go.mod');
652
+ if (!(await fileExists(file)))
653
+ return new Set();
654
+ let content = '';
655
+ try {
656
+ content = await readFile(file);
657
+ }
658
+ catch {
659
+ return new Set();
660
+ }
661
+ const mods = new Set();
662
+ let inBlock = false;
663
+ for (const raw of content.split('\n')) {
664
+ const line = raw.trim();
665
+ if (line.startsWith('require (')) {
666
+ inBlock = true;
667
+ continue;
668
+ }
669
+ if (inBlock && line === ')') {
670
+ inBlock = false;
671
+ continue;
672
+ }
673
+ if (inBlock) {
674
+ const match = line.match(/^(\S+)\s+v/);
675
+ if (match)
676
+ mods.add(match[1]);
677
+ continue;
678
+ }
679
+ const single = line.match(/^require\s+(\S+)\s+v/);
680
+ if (single)
681
+ mods.add(single[1]);
682
+ }
683
+ return mods;
684
+ }
685
+ /** Map a library's language to the manifest filename used as its detection source. */
686
+ function manifestForLanguage(language) {
687
+ switch (language) {
688
+ case 'rust':
689
+ return 'Cargo.toml';
690
+ case 'python':
691
+ return 'pyproject.toml';
692
+ case 'go':
693
+ return 'go.mod';
694
+ default:
695
+ return 'package.json';
696
+ }
697
+ }
698
+ /**
699
+ * Detect libraries/frameworks by matching project manifests against the library
700
+ * registry. Only direct dependencies are considered; transitive dependencies are
701
+ * ignored. Marker files raise detection even without a manifest dependency. Results
702
+ * are sorted by descending confidence.
703
+ */
704
+ export async function detectLibraries(cwd) {
705
+ const [npm, cargo, pip, gomod] = await Promise.all([
706
+ readNpmDeps(cwd),
707
+ readCargoDeps(cwd),
708
+ readPipDeps(cwd),
709
+ readGoDeps(cwd),
710
+ ]);
711
+ const detections = [];
712
+ for (const def of LIBRARY_REGISTRY) {
713
+ const indicators = [];
714
+ let depMatch = false;
715
+ for (const p of def.detect.npm ?? []) {
716
+ if (p.endsWith('*')) {
717
+ const prefix = p.slice(0, -1);
718
+ for (const dep of npm) {
719
+ if (dep.startsWith(prefix)) {
720
+ indicators.push(`npm:${dep}`);
721
+ depMatch = true;
722
+ }
723
+ }
724
+ }
725
+ else if (npm.has(p)) {
726
+ indicators.push(`npm:${p}`);
727
+ depMatch = true;
728
+ }
729
+ }
730
+ for (const p of def.detect.cargo ?? []) {
731
+ if (cargo.has(p)) {
732
+ indicators.push(`cargo:${p}`);
733
+ depMatch = true;
734
+ }
735
+ }
736
+ for (const p of def.detect.pip ?? []) {
737
+ if (pip.has(normalizePyName(p))) {
738
+ indicators.push(`pip:${p}`);
739
+ depMatch = true;
740
+ }
741
+ }
742
+ for (const p of def.detect.gomod ?? []) {
743
+ for (const mod of gomod) {
744
+ if (mod === p || mod.startsWith(`${p}/`)) {
745
+ indicators.push(`gomod:${p}`);
746
+ depMatch = true;
747
+ break;
748
+ }
749
+ }
750
+ }
751
+ for (const f of def.detect.files ?? []) {
752
+ if (await fileExists(path.join(cwd, f)))
753
+ indicators.push(`file:${f}`);
754
+ }
755
+ if (indicators.length === 0)
756
+ continue;
757
+ detections.push({
758
+ library: def.id,
759
+ confidence: depMatch ? 1.0 : 0.8,
760
+ indicators,
761
+ source: manifestForLanguage(def.language),
762
+ });
763
+ }
764
+ return detections.sort((a, b) => b.confidence - a.confidence);
765
+ }
766
+ //# sourceMappingURL=detector.js.map