@hivehub/rulebook 5.8.1 → 6.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (514) hide show
  1. package/README.md +86 -216
  2. package/dist/cli/commands/claude.d.ts.map +1 -1
  3. package/dist/cli/commands/claude.js +10 -4
  4. package/dist/cli/commands/claude.js.map +1 -1
  5. package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
  6. package/dist/cli/commands/context-intelligence.js.map +1 -1
  7. package/dist/cli/commands/index.d.ts +1 -2
  8. package/dist/cli/commands/index.d.ts.map +1 -1
  9. package/dist/cli/commands/index.js +1 -2
  10. package/dist/cli/commands/index.js.map +1 -1
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +16 -91
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/commands/mcp.d.ts.map +1 -1
  15. package/dist/cli/commands/mcp.js.map +1 -1
  16. package/dist/cli/commands/misc.d.ts +0 -1
  17. package/dist/cli/commands/misc.d.ts.map +1 -1
  18. package/dist/cli/commands/misc.js +0 -76
  19. package/dist/cli/commands/misc.js.map +1 -1
  20. package/dist/cli/commands/plans.d.ts.map +1 -1
  21. package/dist/cli/commands/plans.js.map +1 -1
  22. package/dist/cli/commands/skills.d.ts.map +1 -1
  23. package/dist/cli/commands/skills.js +6 -2
  24. package/dist/cli/commands/skills.js.map +1 -1
  25. package/dist/cli/commands/task.d.ts.map +1 -1
  26. package/dist/cli/commands/task.js +3 -1
  27. package/dist/cli/commands/task.js.map +1 -1
  28. package/dist/cli/commands/update.d.ts +7 -0
  29. package/dist/cli/commands/update.d.ts.map +1 -1
  30. package/dist/cli/commands/update.js +61 -165
  31. package/dist/cli/commands/update.js.map +1 -1
  32. package/dist/cli/commands/workspace.d.ts.map +1 -1
  33. package/dist/cli/commands/workspace.js +4 -3
  34. package/dist/cli/commands/workspace.js.map +1 -1
  35. package/dist/cli/prompts.d.ts.map +1 -1
  36. package/dist/cli/prompts.js +0 -40
  37. package/dist/cli/prompts.js.map +1 -1
  38. package/dist/core/claude/claude-mcp.d.ts.map +1 -1
  39. package/dist/core/claude/claude-mcp.js +1 -1
  40. package/dist/core/claude/claude-mcp.js.map +1 -1
  41. package/dist/core/claude/claude-md-generator.d.ts.map +1 -1
  42. package/dist/core/claude/claude-md-generator.js.map +1 -1
  43. package/dist/core/claude/claude-settings-manager.d.ts.map +1 -1
  44. package/dist/core/claude/claude-settings-manager.js +9 -6
  45. package/dist/core/claude/claude-settings-manager.js.map +1 -1
  46. package/dist/core/custom-templates.d.ts.map +1 -1
  47. package/dist/core/custom-templates.js.map +1 -1
  48. package/dist/core/detect/detector.d.ts +0 -28
  49. package/dist/core/detect/detector.d.ts.map +1 -1
  50. package/dist/core/detect/detector.js +5 -84
  51. package/dist/core/detect/detector.js.map +1 -1
  52. package/dist/core/detect/library-registry.d.ts.map +1 -1
  53. package/dist/core/detect/library-registry.js.map +1 -1
  54. package/dist/core/docs/docs-generator.d.ts.map +1 -1
  55. package/dist/core/docs/docs-generator.js.map +1 -1
  56. package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -1
  57. package/dist/core/docs/mcp-reference-generator.js.map +1 -1
  58. package/dist/core/generators/generator.d.ts.map +1 -1
  59. package/dist/core/generators/generator.js +0 -72
  60. package/dist/core/generators/generator.js.map +1 -1
  61. package/dist/core/generators/gitignore-generator.d.ts.map +1 -1
  62. package/dist/core/generators/gitignore-generator.js +12 -1
  63. package/dist/core/generators/gitignore-generator.js.map +1 -1
  64. package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -1
  65. package/dist/core/generators/minimal-scaffolder.js.map +1 -1
  66. package/dist/core/generators/rules-generator.d.ts.map +1 -1
  67. package/dist/core/generators/rules-generator.js.map +1 -1
  68. package/dist/core/generators/workflow-generator.d.ts +0 -10
  69. package/dist/core/generators/workflow-generator.d.ts.map +1 -1
  70. package/dist/core/generators/workflow-generator.js +0 -307
  71. package/dist/core/generators/workflow-generator.js.map +1 -1
  72. package/dist/core/logger.d.ts.map +1 -1
  73. package/dist/core/logger.js.map +1 -1
  74. package/dist/core/merger.d.ts.map +1 -1
  75. package/dist/core/merger.js.map +1 -1
  76. package/dist/core/migrator.d.ts.map +1 -1
  77. package/dist/core/migrator.js +2 -1
  78. package/dist/core/migrator.js.map +1 -1
  79. package/dist/core/quality/coverage-checker.d.ts.map +1 -1
  80. package/dist/core/quality/coverage-checker.js.map +1 -1
  81. package/dist/core/quality/dependency-checker.d.ts.map +1 -1
  82. package/dist/core/quality/dependency-checker.js +3 -1
  83. package/dist/core/quality/dependency-checker.js.map +1 -1
  84. package/dist/core/quality/doctor.d.ts.map +1 -1
  85. package/dist/core/quality/doctor.js.map +1 -1
  86. package/dist/core/quality/validator.d.ts.map +1 -1
  87. package/dist/core/quality/validator.js.map +1 -1
  88. package/dist/core/rule-engine.d.ts +5 -21
  89. package/dist/core/rule-engine.d.ts.map +1 -1
  90. package/dist/core/rule-engine.js +9 -191
  91. package/dist/core/rule-engine.js.map +1 -1
  92. package/dist/core/skills/skills-manager.d.ts.map +1 -1
  93. package/dist/core/skills/skills-manager.js.map +1 -1
  94. package/dist/core/state/config-manager.d.ts.map +1 -1
  95. package/dist/core/state/config-manager.js +6 -50
  96. package/dist/core/state/config-manager.js.map +1 -1
  97. package/dist/core/state/override-manager.js.map +1 -1
  98. package/dist/core/state/state-writer.d.ts.map +1 -1
  99. package/dist/core/state/state-writer.js.map +1 -1
  100. package/dist/core/state/version-bumper.d.ts.map +1 -1
  101. package/dist/core/state/version-bumper.js.map +1 -1
  102. package/dist/core/tasks/decision-manager.d.ts.map +1 -1
  103. package/dist/core/tasks/decision-manager.js +6 -1
  104. package/dist/core/tasks/decision-manager.js.map +1 -1
  105. package/dist/core/tasks/knowledge-manager.d.ts.map +1 -1
  106. package/dist/core/tasks/knowledge-manager.js.map +1 -1
  107. package/dist/core/tasks/learn-manager.d.ts.map +1 -1
  108. package/dist/core/tasks/learn-manager.js.map +1 -1
  109. package/dist/core/tasks/plans-manager.d.ts.map +1 -1
  110. package/dist/core/tasks/plans-manager.js.map +1 -1
  111. package/dist/core/tasks/task-manager.d.ts.map +1 -1
  112. package/dist/core/tasks/task-manager.js.map +1 -1
  113. package/dist/core/workspace/legacy-migrator.d.ts.map +1 -1
  114. package/dist/core/workspace/legacy-migrator.js.map +1 -1
  115. package/dist/core/workspace/project-worker.d.ts +0 -4
  116. package/dist/core/workspace/project-worker.d.ts.map +1 -1
  117. package/dist/core/workspace/project-worker.js +0 -28
  118. package/dist/core/workspace/project-worker.js.map +1 -1
  119. package/dist/core/workspace/workspace-manager.d.ts +0 -11
  120. package/dist/core/workspace/workspace-manager.d.ts.map +1 -1
  121. package/dist/core/workspace/workspace-manager.js +6 -30
  122. package/dist/core/workspace/workspace-manager.js.map +1 -1
  123. package/dist/core/workspace/workspace-types.d.ts +0 -1
  124. package/dist/core/workspace/workspace-types.d.ts.map +1 -1
  125. package/dist/hooks/safe-flag-io.js.map +1 -1
  126. package/dist/index.d.ts +1 -1
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +3 -82
  129. package/dist/index.js.map +1 -1
  130. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  131. package/dist/mcp/rulebook-server.js +55 -1634
  132. package/dist/mcp/rulebook-server.js.map +1 -1
  133. package/dist/mcp/tools/context.d.ts +23 -0
  134. package/dist/mcp/tools/context.d.ts.map +1 -0
  135. package/dist/mcp/tools/context.js +2 -0
  136. package/dist/mcp/tools/context.js.map +1 -0
  137. package/dist/mcp/tools/decision-tools.d.ts +5 -0
  138. package/dist/mcp/tools/decision-tools.d.ts.map +1 -0
  139. package/dist/mcp/tools/decision-tools.js +220 -0
  140. package/dist/mcp/tools/decision-tools.js.map +1 -0
  141. package/dist/mcp/tools/knowledge-tools.d.ts +5 -0
  142. package/dist/mcp/tools/knowledge-tools.d.ts.map +1 -0
  143. package/dist/mcp/tools/knowledge-tools.js +157 -0
  144. package/dist/mcp/tools/knowledge-tools.js.map +1 -0
  145. package/dist/mcp/tools/learn-tools.d.ts +5 -0
  146. package/dist/mcp/tools/learn-tools.d.ts.map +1 -0
  147. package/dist/mcp/tools/learn-tools.js +150 -0
  148. package/dist/mcp/tools/learn-tools.js.map +1 -0
  149. package/dist/mcp/tools/rules-tools.d.ts +4 -0
  150. package/dist/mcp/tools/rules-tools.d.ts.map +1 -0
  151. package/dist/mcp/tools/rules-tools.js +47 -0
  152. package/dist/mcp/tools/rules-tools.js.map +1 -0
  153. package/dist/mcp/tools/skill-tools.d.ts +5 -0
  154. package/dist/mcp/tools/skill-tools.d.ts.map +1 -0
  155. package/dist/mcp/tools/skill-tools.js +330 -0
  156. package/dist/mcp/tools/skill-tools.js.map +1 -0
  157. package/dist/mcp/tools/task-tools.d.ts +5 -0
  158. package/dist/mcp/tools/task-tools.d.ts.map +1 -0
  159. package/dist/mcp/tools/task-tools.js +185 -0
  160. package/dist/mcp/tools/task-tools.js.map +1 -0
  161. package/dist/mcp/tools/workspace-tools.d.ts +6 -0
  162. package/dist/mcp/tools/workspace-tools.d.ts.map +1 -0
  163. package/dist/mcp/tools/workspace-tools.js +118 -0
  164. package/dist/mcp/tools/workspace-tools.js.map +1 -0
  165. package/dist/types.d.ts +1 -46
  166. package/dist/types.d.ts.map +1 -1
  167. package/dist/utils/file-system.d.ts.map +1 -1
  168. package/dist/utils/file-system.js.map +1 -1
  169. package/dist/utils/git-hooks.d.ts.map +1 -1
  170. package/dist/utils/git-hooks.js.map +1 -1
  171. package/dist/utils/gitignore.d.ts.map +1 -1
  172. package/dist/utils/gitignore.js.map +1 -1
  173. package/dist/utils/rulesignore.d.ts.map +1 -1
  174. package/dist/utils/rulesignore.js.map +1 -1
  175. package/package.json +25 -27
  176. package/templates/agents/architect.md +51 -51
  177. package/templates/agents/build-engineer.md +36 -36
  178. package/templates/agents/code-reviewer.md +47 -47
  179. package/templates/agents/docs-writer.md +38 -38
  180. package/templates/agents/implementer.md +42 -42
  181. package/templates/agents/performance-engineer.md +49 -49
  182. package/templates/agents/researcher.md +38 -38
  183. package/templates/agents/security-reviewer.md +40 -40
  184. package/templates/agents/team-lead.md +37 -37
  185. package/templates/agents/tester.md +48 -48
  186. package/templates/ci/rulebook-review.yml +26 -26
  187. package/templates/claude-workflows/review-fanout.js +2 -2
  188. package/templates/claude-workflows/rulebook-driver.js +16 -4
  189. package/templates/cli/CLAUDE.md +102 -117
  190. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  191. package/templates/commands/rulebook-decision-create.md +55 -55
  192. package/templates/commands/rulebook-decision-list.md +15 -15
  193. package/templates/commands/rulebook-knowledge-add.md +41 -41
  194. package/templates/commands/rulebook-knowledge-list.md +15 -15
  195. package/templates/commands/rulebook-learn-capture.md +1 -2
  196. package/templates/commands/rulebook-task-apply.md +67 -67
  197. package/templates/commands/rulebook-task-archive.md +94 -94
  198. package/templates/commands/rulebook-task-create.md +93 -93
  199. package/templates/commands/rulebook-task-list.md +42 -42
  200. package/templates/commands/rulebook-task-show.md +52 -52
  201. package/templates/commands/rulebook-task-validate.md +53 -53
  202. package/templates/compact-context/_default.md +23 -23
  203. package/templates/compact-context/cpp.md +26 -26
  204. package/templates/compact-context/go.md +26 -26
  205. package/templates/compact-context/python.md +26 -26
  206. package/templates/compact-context/rust.md +28 -28
  207. package/templates/compact-context/typescript.md +29 -29
  208. package/templates/core/AGENTS_LEAN.md +4 -9
  209. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  210. package/templates/core/AGENT_AUTOMATION.md +273 -296
  211. package/templates/core/CLAUDE_MD_v2.md +85 -90
  212. package/templates/core/DAG.md +304 -304
  213. package/templates/core/DECISIONS.md +38 -38
  214. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  215. package/templates/core/KNOWLEDGE.md +49 -49
  216. package/templates/core/MULTI_AGENT.md +74 -74
  217. package/templates/core/PLANS.md +28 -28
  218. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  219. package/templates/core/RULEBOOK.md +1936 -1947
  220. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  221. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  222. package/templates/core/WORKSPACE.md +4 -8
  223. package/templates/git/CI_CD_PATTERNS.md +661 -661
  224. package/templates/git/GITHUB_ACTIONS.md +728 -728
  225. package/templates/git/GITLAB_CI.md +730 -730
  226. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  227. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  228. package/templates/hooks/COMMIT_MSG.md +530 -530
  229. package/templates/hooks/POST_CHECKOUT.md +546 -546
  230. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  231. package/templates/hooks/PRE_COMMIT.md +414 -414
  232. package/templates/hooks/PRE_PUSH.md +601 -601
  233. package/templates/hooks/enforce-pre-tool.sh +26 -9
  234. package/templates/hooks/update-check.ps1 +84 -84
  235. package/templates/hooks/update-check.sh +45 -21
  236. package/templates/languages/C.md +333 -333
  237. package/templates/languages/CPP.md +743 -743
  238. package/templates/languages/CSHARP.md +417 -417
  239. package/templates/languages/ELIXIR.md +454 -454
  240. package/templates/languages/ERLANG.md +361 -361
  241. package/templates/languages/GO.md +645 -645
  242. package/templates/languages/HASKELL.md +177 -177
  243. package/templates/languages/JAVA.md +607 -607
  244. package/templates/languages/JAVASCRIPT.md +631 -631
  245. package/templates/languages/JULIA.md +97 -97
  246. package/templates/languages/KOTLIN.md +511 -511
  247. package/templates/languages/LISP.md +100 -100
  248. package/templates/languages/LUA.md +74 -74
  249. package/templates/languages/OBJECTIVEC.md +90 -90
  250. package/templates/languages/PHP.md +416 -416
  251. package/templates/languages/PYTHON.md +682 -682
  252. package/templates/languages/RUBY.md +421 -421
  253. package/templates/languages/RUST.md +477 -477
  254. package/templates/languages/SAS.md +73 -73
  255. package/templates/languages/SCALA.md +348 -348
  256. package/templates/languages/SOLIDITY.md +580 -580
  257. package/templates/languages/SQL.md +137 -137
  258. package/templates/languages/SWIFT.md +466 -466
  259. package/templates/languages/TYPESCRIPT.md +591 -591
  260. package/templates/languages/ZIG.md +265 -265
  261. package/templates/modules/CONTEXT7.md +54 -54
  262. package/templates/modules/GITHUB_MCP.md +64 -64
  263. package/templates/modules/PLAYWRIGHT.md +90 -90
  264. package/templates/modules/RULEBOOK_MCP.md +208 -208
  265. package/templates/modules/SERENA.md +337 -337
  266. package/templates/modules/SUPABASE.md +223 -223
  267. package/templates/modules/SYNAP.md +69 -69
  268. package/templates/modules/VECTORIZER.md +63 -63
  269. package/templates/modules/sequential-thinking.md +42 -42
  270. package/templates/rules/consult-analysis-before-implementing.md +21 -23
  271. package/templates/rules/cpp.md +46 -46
  272. package/templates/rules/csharp.md +44 -44
  273. package/templates/rules/diagnostic-first.md +39 -39
  274. package/templates/rules/fail-twice-escalate.md +46 -46
  275. package/templates/rules/follow-task-sequence.md +36 -36
  276. package/templates/rules/git-safety.md +29 -29
  277. package/templates/rules/go.md +40 -40
  278. package/templates/rules/incremental-implementation.md +56 -56
  279. package/templates/rules/incremental-tests.md +29 -29
  280. package/templates/rules/java.md +43 -43
  281. package/templates/rules/javascript.md +39 -39
  282. package/templates/rules/knowledge-base-usage.md +41 -41
  283. package/templates/rules/multi-agent-teams.md +75 -75
  284. package/templates/rules/no-deferred.md +31 -31
  285. package/templates/rules/no-shortcuts.md +30 -30
  286. package/templates/rules/python.md +43 -43
  287. package/templates/rules/research-first.md +30 -30
  288. package/templates/rules/respect-handoff-trigger.md +41 -41
  289. package/templates/rules/rust.md +40 -40
  290. package/templates/rules/sequential-editing.md +21 -21
  291. package/templates/rules/session-workflow.md +24 -24
  292. package/templates/rules/task-decomposition.md +32 -32
  293. package/templates/rules/typescript.md +40 -40
  294. package/templates/skills/cli/claude/SKILL.md +42 -42
  295. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  296. package/templates/skills/core/dag/SKILL.md +314 -314
  297. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  298. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  299. package/templates/skills/core/rulebook/SKILL.md +176 -176
  300. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  301. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  302. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  303. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  304. package/templates/skills/dev/analysis/SKILL.md +19 -19
  305. package/templates/skills/dev/api-design/SKILL.md +15 -15
  306. package/templates/skills/dev/architect/SKILL.md +17 -17
  307. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  308. package/templates/skills/dev/db-design/SKILL.md +15 -15
  309. package/templates/skills/dev/debug/SKILL.md +16 -16
  310. package/templates/skills/dev/deploy/SKILL.md +17 -17
  311. package/templates/skills/dev/docs/SKILL.md +17 -17
  312. package/templates/skills/dev/handoff/SKILL.md +27 -27
  313. package/templates/skills/dev/migrate/SKILL.md +15 -15
  314. package/templates/skills/dev/perf/SKILL.md +17 -17
  315. package/templates/skills/dev/refactor/SKILL.md +17 -17
  316. package/templates/skills/dev/research/SKILL.md +14 -14
  317. package/templates/skills/dev/review/SKILL.md +18 -18
  318. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  319. package/templates/skills/languages/c/SKILL.md +343 -343
  320. package/templates/skills/languages/cpp/SKILL.md +753 -753
  321. package/templates/skills/languages/csharp/SKILL.md +427 -427
  322. package/templates/skills/languages/elixir/SKILL.md +464 -464
  323. package/templates/skills/languages/erlang/SKILL.md +371 -371
  324. package/templates/skills/languages/go/SKILL.md +655 -655
  325. package/templates/skills/languages/haskell/SKILL.md +187 -187
  326. package/templates/skills/languages/java/SKILL.md +617 -617
  327. package/templates/skills/languages/javascript/SKILL.md +641 -641
  328. package/templates/skills/languages/julia/SKILL.md +107 -107
  329. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  330. package/templates/skills/languages/lisp/SKILL.md +110 -110
  331. package/templates/skills/languages/lua/SKILL.md +84 -84
  332. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  333. package/templates/skills/languages/php/SKILL.md +426 -426
  334. package/templates/skills/languages/python/SKILL.md +692 -692
  335. package/templates/skills/languages/ruby/SKILL.md +431 -431
  336. package/templates/skills/languages/rust/SKILL.md +487 -487
  337. package/templates/skills/languages/sas/SKILL.md +83 -83
  338. package/templates/skills/languages/scala/SKILL.md +358 -358
  339. package/templates/skills/languages/solidity/SKILL.md +590 -590
  340. package/templates/skills/languages/sql/SKILL.md +147 -147
  341. package/templates/skills/languages/swift/SKILL.md +476 -476
  342. package/templates/skills/languages/typescript/SKILL.md +302 -302
  343. package/templates/skills/languages/zig/SKILL.md +275 -275
  344. package/templates/skills/modules/context7/SKILL.md +64 -64
  345. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  346. package/templates/skills/modules/playwright/SKILL.md +100 -100
  347. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  348. package/templates/skills/modules/serena/SKILL.md +347 -347
  349. package/templates/skills/modules/supabase/SKILL.md +233 -233
  350. package/templates/skills/modules/synap/SKILL.md +79 -79
  351. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  352. package/.claude/commands/analysis.md +0 -35
  353. package/.claude/commands/continue.md +0 -33
  354. package/.claude/commands/rulebook-decision-create.md +0 -55
  355. package/.claude/commands/rulebook-decision-list.md +0 -15
  356. package/.claude/commands/rulebook-knowledge-add.md +0 -41
  357. package/.claude/commands/rulebook-knowledge-list.md +0 -15
  358. package/.claude/commands/rulebook-learn-capture.md +0 -41
  359. package/.claude/commands/rulebook-learn-list.md +0 -13
  360. package/.claude/commands/rulebook-memory-save.md +0 -48
  361. package/.claude/commands/rulebook-memory-search.md +0 -47
  362. package/.claude/commands/rulebook-task-apply.md +0 -67
  363. package/.claude/commands/rulebook-task-archive.md +0 -94
  364. package/.claude/commands/rulebook-task-create.md +0 -93
  365. package/.claude/commands/rulebook-task-list.md +0 -42
  366. package/.claude/commands/rulebook-task-show.md +0 -52
  367. package/.claude/commands/rulebook-task-validate.md +0 -53
  368. package/.claude-plugin/marketplace.json +0 -28
  369. package/.claude-plugin/plugin.json +0 -8
  370. package/dist/agents/claude-code.d.ts +0 -69
  371. package/dist/agents/claude-code.d.ts.map +0 -1
  372. package/dist/agents/claude-code.js +0 -180
  373. package/dist/agents/claude-code.js.map +0 -1
  374. package/dist/agents/cursor-agent.d.ts +0 -184
  375. package/dist/agents/cursor-agent.d.ts.map +0 -1
  376. package/dist/agents/cursor-agent.js +0 -299
  377. package/dist/agents/cursor-agent.js.map +0 -1
  378. package/dist/agents/gemini-cli.d.ts +0 -69
  379. package/dist/agents/gemini-cli.d.ts.map +0 -1
  380. package/dist/agents/gemini-cli.js +0 -180
  381. package/dist/agents/gemini-cli.js.map +0 -1
  382. package/dist/cli/commands/memory.d.ts +0 -30
  383. package/dist/cli/commands/memory.d.ts.map +0 -1
  384. package/dist/cli/commands/memory.js +0 -259
  385. package/dist/cli/commands/memory.js.map +0 -1
  386. package/dist/core/console/cli-bridge.d.ts +0 -113
  387. package/dist/core/console/cli-bridge.d.ts.map +0 -1
  388. package/dist/core/console/cli-bridge.js +0 -1094
  389. package/dist/core/console/cli-bridge.js.map +0 -1
  390. package/dist/core/ide/multi-tool-generator.d.ts +0 -59
  391. package/dist/core/ide/multi-tool-generator.d.ts.map +0 -1
  392. package/dist/core/ide/multi-tool-generator.js +0 -157
  393. package/dist/core/ide/multi-tool-generator.js.map +0 -1
  394. package/dist/core/ide/opencode-generator.d.ts +0 -72
  395. package/dist/core/ide/opencode-generator.d.ts.map +0 -1
  396. package/dist/core/ide/opencode-generator.js +0 -450
  397. package/dist/core/ide/opencode-generator.js.map +0 -1
  398. package/dist/core/indexer/background-indexer.d.ts +0 -35
  399. package/dist/core/indexer/background-indexer.d.ts.map +0 -1
  400. package/dist/core/indexer/background-indexer.js +0 -267
  401. package/dist/core/indexer/background-indexer.js.map +0 -1
  402. package/dist/core/indexer/file-parser.d.ts +0 -28
  403. package/dist/core/indexer/file-parser.d.ts.map +0 -1
  404. package/dist/core/indexer/file-parser.js +0 -171
  405. package/dist/core/indexer/file-parser.js.map +0 -1
  406. package/dist/core/indexer/indexer-types.d.ts +0 -37
  407. package/dist/core/indexer/indexer-types.d.ts.map +0 -1
  408. package/dist/core/indexer/indexer-types.js +0 -8
  409. package/dist/core/indexer/indexer-types.js.map +0 -1
  410. package/dist/memory/file-search.d.ts +0 -43
  411. package/dist/memory/file-search.d.ts.map +0 -1
  412. package/dist/memory/file-search.js +0 -228
  413. package/dist/memory/file-search.js.map +0 -1
  414. package/dist/memory/file-store.d.ts +0 -99
  415. package/dist/memory/file-store.d.ts.map +0 -1
  416. package/dist/memory/file-store.js +0 -615
  417. package/dist/memory/file-store.js.map +0 -1
  418. package/dist/memory/legacy-migrator.d.ts +0 -27
  419. package/dist/memory/legacy-migrator.d.ts.map +0 -1
  420. package/dist/memory/legacy-migrator.js +0 -185
  421. package/dist/memory/legacy-migrator.js.map +0 -1
  422. package/dist/memory/memory-hooks.d.ts +0 -48
  423. package/dist/memory/memory-hooks.d.ts.map +0 -1
  424. package/dist/memory/memory-hooks.js +0 -248
  425. package/dist/memory/memory-hooks.js.map +0 -1
  426. package/dist/memory/memory-manager.d.ts +0 -65
  427. package/dist/memory/memory-manager.d.ts.map +0 -1
  428. package/dist/memory/memory-manager.js +0 -223
  429. package/dist/memory/memory-manager.js.map +0 -1
  430. package/dist/memory/memory-types.d.ts +0 -85
  431. package/dist/memory/memory-types.d.ts.map +0 -1
  432. package/dist/memory/memory-types.js +0 -7
  433. package/dist/memory/memory-types.js.map +0 -1
  434. package/templates/agents/accessibility-reviewer.md +0 -43
  435. package/templates/agents/api-designer.md +0 -42
  436. package/templates/agents/compiler/codegen-debugger.md +0 -34
  437. package/templates/agents/compiler/stdlib-engineer.md +0 -28
  438. package/templates/agents/compiler/test-coverage-guardian.md +0 -31
  439. package/templates/agents/context-intelligence.md +0 -50
  440. package/templates/agents/database-architect.md +0 -41
  441. package/templates/agents/devops-engineer.md +0 -42
  442. package/templates/agents/game-engine/cpp-core-expert.md +0 -35
  443. package/templates/agents/game-engine/render-engineer.md +0 -22
  444. package/templates/agents/game-engine/shader-engineer.md +0 -38
  445. package/templates/agents/game-engine/systems-integration.md +0 -43
  446. package/templates/agents/generic/code-reviewer.md +0 -41
  447. package/templates/agents/generic/docs-writer.md +0 -25
  448. package/templates/agents/generic/project-manager.md +0 -36
  449. package/templates/agents/generic/researcher.md +0 -34
  450. package/templates/agents/generic/test-engineer.md +0 -41
  451. package/templates/agents/i18n-engineer.md +0 -42
  452. package/templates/agents/migration-engineer.md +0 -42
  453. package/templates/agents/mobile/platform-specialist.md +0 -22
  454. package/templates/agents/mobile/ui-engineer.md +0 -22
  455. package/templates/agents/project-manager.md +0 -217
  456. package/templates/agents/refactoring-agent.md +0 -41
  457. package/templates/agents/ux-reviewer.md +0 -43
  458. package/templates/agents/web-app/api-designer.md +0 -22
  459. package/templates/agents/web-app/backend-engineer.md +0 -30
  460. package/templates/agents/web-app/database-engineer.md +0 -22
  461. package/templates/agents/web-app/frontend-engineer.md +0 -29
  462. package/templates/agents/web-app/security-reviewer.md +0 -32
  463. package/templates/cli/AIDER.md +0 -49
  464. package/templates/cli/AMAZON_Q.md +0 -25
  465. package/templates/cli/AUGGIE.md +0 -32
  466. package/templates/cli/CLINE.md +0 -99
  467. package/templates/cli/CODEBUDDY.md +0 -20
  468. package/templates/cli/CODEIUM.md +0 -20
  469. package/templates/cli/CODEX.md +0 -21
  470. package/templates/cli/CONTINUE.md +0 -34
  471. package/templates/cli/CURSOR_CLI.md +0 -62
  472. package/templates/cli/FACTORY.md +0 -18
  473. package/templates/cli/GEMINI.md +0 -35
  474. package/templates/cli/KILOCODE.md +0 -18
  475. package/templates/cli/OPENCODE.md +0 -85
  476. package/templates/cli/gemini-extension.json +0 -77
  477. package/templates/commands/rulebook-memory-save.md +0 -48
  478. package/templates/commands/rulebook-memory-search.md +0 -47
  479. package/templates/ides/CONTINUE_RULES.md +0 -16
  480. package/templates/ides/COPILOT_INSTRUCTIONS.md +0 -23
  481. package/templates/ides/GEMINI_RULES.md +0 -17
  482. package/templates/ides/OPENCODE.md +0 -63
  483. package/templates/ides/WINDSURF_RULES.md +0 -14
  484. package/templates/modules/ATLASSIAN.md +0 -255
  485. package/templates/modules/FIGMA.md +0 -267
  486. package/templates/modules/GRAFANA.md +0 -328
  487. package/templates/modules/MEMORY.md +0 -126
  488. package/templates/modules/NOTION.md +0 -247
  489. package/templates/skills/cli/aider/SKILL.md +0 -59
  490. package/templates/skills/cli/amazon-q/SKILL.md +0 -35
  491. package/templates/skills/cli/auggie/SKILL.md +0 -42
  492. package/templates/skills/cli/cline/SKILL.md +0 -42
  493. package/templates/skills/cli/codebuddy/SKILL.md +0 -30
  494. package/templates/skills/cli/codeium/SKILL.md +0 -30
  495. package/templates/skills/cli/codex/SKILL.md +0 -31
  496. package/templates/skills/cli/continue/SKILL.md +0 -44
  497. package/templates/skills/cli/cursor-cli/SKILL.md +0 -38
  498. package/templates/skills/cli/factory/SKILL.md +0 -28
  499. package/templates/skills/cli/gemini/SKILL.md +0 -45
  500. package/templates/skills/cli/kilocode/SKILL.md +0 -28
  501. package/templates/skills/cli/opencode/SKILL.md +0 -82
  502. package/templates/skills/ides/copilot/SKILL.md +0 -47
  503. package/templates/skills/ides/cursor/SKILL.md +0 -53
  504. package/templates/skills/ides/jetbrains-ai/SKILL.md +0 -45
  505. package/templates/skills/ides/replit/SKILL.md +0 -46
  506. package/templates/skills/ides/tabnine/SKILL.md +0 -39
  507. package/templates/skills/ides/vscode/SKILL.md +0 -50
  508. package/templates/skills/ides/windsurf/SKILL.md +0 -46
  509. package/templates/skills/ides/zed/SKILL.md +0 -42
  510. package/templates/skills/modules/atlassian/SKILL.md +0 -265
  511. package/templates/skills/modules/figma/SKILL.md +0 -277
  512. package/templates/skills/modules/grafana/SKILL.md +0 -338
  513. package/templates/skills/modules/memory/SKILL.md +0 -73
  514. package/templates/skills/modules/notion/SKILL.md +0 -257
@@ -1,20 +1,40 @@
1
1
  #!/usr/bin/env bash
2
- # PreToolUse hook (v5.6.0): consolidated deny rules.
2
+ # PreToolUse hook (v5.9.0): consolidated deny rules — perf-optimized.
3
3
  #
4
- # Replaces three legacy hooks (enforce-no-deferred / enforce-no-shortcuts /
5
- # enforce-mcp-for-tasks) with a single bash + node invocation. Each rule's
6
- # permissionDecisionReason is preserved verbatim so existing user guidance
7
- # is unchanged.
4
+ # Matcher is Edit|Write only (Bash excluded) so it never fires on the
5
+ # most frequent tool. A pure-bash trigger pre-filter short-circuits to
6
+ # "allow" without spawning node for the overwhelming majority of edits;
7
+ # node is only invoked when the raw payload contains a suspicious token,
8
+ # keeping per-call cost at ~one bash spawn for normal work.
9
+ #
10
+ # Rules enforced (unchanged semantics):
11
+ # mcp-for-tasks — block manual creation of task proposal.md/.metadata.json
12
+ # no-deferred — tasks.md must not contain deferred/skip/later/TODO
13
+ # no-shortcuts — source files must not contain TODO/FIXME/HACK or stub/placeholder
8
14
  set -euo pipefail
9
15
  input="$(cat)"
10
16
 
17
+ allow() {
18
+ echo '{"hookSpecificOutput":{"hookEventName":"PreToolUse","permissionDecision":"allow"}}'
19
+ exit 0
20
+ }
21
+
22
+ # Fast path: if the raw payload contains no trigger token at all, allow
23
+ # immediately without spawning node. deferred/skip/later only matter inside
24
+ # tasks.md, which is already caught by the "tasks.md" path token below.
25
+ shopt -s nocasematch
26
+ case "$input" in
27
+ *TODO*|*FIXME*|*HACK*|*placeholder*|*stub*|*tasks.md*|*proposal.md*|*.metadata.json*) ;;
28
+ *) allow ;;
29
+ esac
30
+ shopt -u nocasematch
31
+
11
32
  result="$(node -e "
12
33
  const input = JSON.parse(process.argv[1]);
13
34
  const tool = input.tool_name || '';
14
35
  const ti = input.tool_input || {};
15
36
  const file = (ti.file_path || ti.filePath || '').replace(/\\\\/g, '/');
16
37
  const content = ti.new_string || ti.content || '';
17
- const cmd = ti.command || '';
18
38
 
19
39
  // Rule: mcp-for-tasks — manual creation of task scaffolding is forbidden.
20
40
  if (tool === 'Write' || tool === 'Edit') {
@@ -24,9 +44,6 @@ if (tool === 'Write' || tool === 'Edit') {
24
44
  catch { console.log('DENY_MCP'); process.exit(0); }
25
45
  }
26
46
  }
27
- if (tool === 'Bash' && /mkdir.*\\.rulebook\\/tasks\\//.test(cmd)) {
28
- console.log('DENY_MCP'); process.exit(0);
29
- }
30
47
 
31
48
  // Rule: no-deferred — tasks.md must not contain deferred / skip / later / TODO.
32
49
  if ((tool === 'Edit' || tool === 'Write') && file.endsWith('tasks.md')) {
@@ -1,84 +1,84 @@
1
- # Claude Code SessionStart hook — rulebook update check (Windows).
2
- #
3
- # Mirrors templates/hooks/update-check.sh: compares the project's installed
4
- # rulebook version (.rulebook/rulebook.json -> version) against the latest
5
- # @hivehub/rulebook on npm, cached 24h in .rulebook/.update-check. Emits an
6
- # additionalContext advisory when a newer version exists, else `{}`.
7
-
8
- $ErrorActionPreference = 'SilentlyContinue'
9
-
10
- function Emit-None { Write-Output '{}'; exit 0 }
11
-
12
- # Resolve project root from stdin JSON cwd, else env, else pwd.
13
- $inputRaw = $null
14
- if ([Console]::IsInputRedirected) { try { $inputRaw = [Console]::In.ReadToEnd() } catch { } }
15
- $projectRoot = $null
16
- if ($inputRaw) { try { $projectRoot = (ConvertFrom-Json $inputRaw).cwd } catch { } }
17
- if (-not $projectRoot) {
18
- if ($env:CLAUDE_PROJECT_DIR) { $projectRoot = $env:CLAUDE_PROJECT_DIR }
19
- else { $projectRoot = (Get-Location).Path }
20
- }
21
-
22
- $configFile = Join-Path $projectRoot '.rulebook/rulebook.json'
23
- $cacheFile = Join-Path $projectRoot '.rulebook/.update-check'
24
- $pkg = '@hivehub/rulebook'
25
- $cacheTtl = 86400
26
-
27
- if (-not (Test-Path $configFile)) { Emit-None }
28
-
29
- $config = $null
30
- try { $config = Get-Content -Raw $configFile | ConvertFrom-Json } catch { Emit-None }
31
- $installed = $config.version
32
- if (-not $installed) { Emit-None }
33
- if ($config.updateCheck -and $config.updateCheck.enabled -eq $false) { Emit-None }
34
-
35
- $now = [int][double]::Parse((Get-Date -UFormat %s))
36
- $latest = $null
37
- $cacheTs = 0
38
- if (Test-Path $cacheFile) {
39
- try {
40
- $cache = Get-Content -Raw $cacheFile | ConvertFrom-Json
41
- $cacheTs = [int]$cache.checkedAt
42
- $latest = $cache.latest
43
- } catch { }
44
- }
45
-
46
- $age = $now - $cacheTs
47
- if (-not $latest -or $age -ge $cacheTtl) {
48
- $fetched = $null
49
- try {
50
- $job = Start-Job { param($p) npm view $p version 2>$null } -ArgumentList $pkg
51
- if (Wait-Job $job -Timeout 5) { $fetched = (Receive-Job $job) }
52
- Remove-Job $job -Force
53
- } catch { }
54
- if ($fetched) {
55
- $latest = ("$fetched").Trim()
56
- try {
57
- [IO.File]::WriteAllText($cacheFile, (@{ latest = $latest; checkedAt = $now } | ConvertTo-Json -Compress))
58
- } catch { }
59
- }
60
- }
61
-
62
- if (-not $latest) { Emit-None }
63
-
64
- function Ver-Gt([string]$a, [string]$b) {
65
- $aa = ($a -split '-')[0]; $bb = ($b -split '-')[0]
66
- $A = $aa -split '\.'; $B = $bb -split '\.'
67
- for ($i = 0; $i -lt 3; $i++) {
68
- $ai = 0; $bi = 0
69
- if ($A[$i]) { [int]::TryParse(($A[$i] -replace '[^0-9]', ''), [ref]$ai) | Out-Null }
70
- if ($B[$i]) { [int]::TryParse(($B[$i] -replace '[^0-9]', ''), [ref]$bi) | Out-Null }
71
- if ($ai -gt $bi) { return $true }
72
- if ($ai -lt $bi) { return $false }
73
- }
74
- return $false
75
- }
76
-
77
- if (Ver-Gt $latest $installed) {
78
- $ctx = "## Rulebook update available`n`nThis project is on rulebook **$installed**, but **$latest** is published on npm.`n`nAsk the user whether they want to update. If they agree, run ``rulebook update`` (or ``npx $pkg@latest update``) to regenerate the rules to the latest version, then review the diff before committing. Do not update without the user's confirmation."
79
- $out = @{ hookSpecificOutput = @{ hookEventName = 'SessionStart'; additionalContext = $ctx } }
80
- Write-Output ($out | ConvertTo-Json -Compress -Depth 4)
81
- exit 0
82
- }
83
-
84
- Emit-None
1
+ # Claude Code SessionStart hook — rulebook update check (Windows).
2
+ #
3
+ # Mirrors templates/hooks/update-check.sh: compares the project's installed
4
+ # rulebook version (.rulebook/rulebook.json -> version) against the latest
5
+ # @hivehub/rulebook on npm, cached 24h in .rulebook/.update-check. Emits an
6
+ # additionalContext advisory when a newer version exists, else `{}`.
7
+
8
+ $ErrorActionPreference = 'SilentlyContinue'
9
+
10
+ function Emit-None { Write-Output '{}'; exit 0 }
11
+
12
+ # Resolve project root from stdin JSON cwd, else env, else pwd.
13
+ $inputRaw = $null
14
+ if ([Console]::IsInputRedirected) { try { $inputRaw = [Console]::In.ReadToEnd() } catch { } }
15
+ $projectRoot = $null
16
+ if ($inputRaw) { try { $projectRoot = (ConvertFrom-Json $inputRaw).cwd } catch { } }
17
+ if (-not $projectRoot) {
18
+ if ($env:CLAUDE_PROJECT_DIR) { $projectRoot = $env:CLAUDE_PROJECT_DIR }
19
+ else { $projectRoot = (Get-Location).Path }
20
+ }
21
+
22
+ $configFile = Join-Path $projectRoot '.rulebook/rulebook.json'
23
+ $cacheFile = Join-Path $projectRoot '.rulebook/.update-check'
24
+ $pkg = '@hivehub/rulebook'
25
+ $cacheTtl = 86400
26
+
27
+ if (-not (Test-Path $configFile)) { Emit-None }
28
+
29
+ $config = $null
30
+ try { $config = Get-Content -Raw $configFile | ConvertFrom-Json } catch { Emit-None }
31
+ $installed = $config.version
32
+ if (-not $installed) { Emit-None }
33
+ if ($config.updateCheck -and $config.updateCheck.enabled -eq $false) { Emit-None }
34
+
35
+ $now = [int][double]::Parse((Get-Date -UFormat %s))
36
+ $latest = $null
37
+ $cacheTs = 0
38
+ if (Test-Path $cacheFile) {
39
+ try {
40
+ $cache = Get-Content -Raw $cacheFile | ConvertFrom-Json
41
+ $cacheTs = [int]$cache.checkedAt
42
+ $latest = $cache.latest
43
+ } catch { }
44
+ }
45
+
46
+ $age = $now - $cacheTs
47
+ if (-not $latest -or $age -ge $cacheTtl) {
48
+ $fetched = $null
49
+ try {
50
+ $job = Start-Job { param($p) npm view $p version 2>$null } -ArgumentList $pkg
51
+ if (Wait-Job $job -Timeout 5) { $fetched = (Receive-Job $job) }
52
+ Remove-Job $job -Force
53
+ } catch { }
54
+ if ($fetched) {
55
+ $latest = ("$fetched").Trim()
56
+ try {
57
+ [IO.File]::WriteAllText($cacheFile, (@{ latest = $latest; checkedAt = $now } | ConvertTo-Json -Compress))
58
+ } catch { }
59
+ }
60
+ }
61
+
62
+ if (-not $latest) { Emit-None }
63
+
64
+ function Ver-Gt([string]$a, [string]$b) {
65
+ $aa = ($a -split '-')[0]; $bb = ($b -split '-')[0]
66
+ $A = $aa -split '\.'; $B = $bb -split '\.'
67
+ for ($i = 0; $i -lt 3; $i++) {
68
+ $ai = 0; $bi = 0
69
+ if ($A[$i]) { [int]::TryParse(($A[$i] -replace '[^0-9]', ''), [ref]$ai) | Out-Null }
70
+ if ($B[$i]) { [int]::TryParse(($B[$i] -replace '[^0-9]', ''), [ref]$bi) | Out-Null }
71
+ if ($ai -gt $bi) { return $true }
72
+ if ($ai -lt $bi) { return $false }
73
+ }
74
+ return $false
75
+ }
76
+
77
+ if (Ver-Gt $latest $installed) {
78
+ $ctx = "## Rulebook update available`n`nThis project is on rulebook **$installed**, but **$latest** is published on npm.`n`nAsk the user whether they want to update. If they agree, run ``rulebook update`` (or ``npx $pkg@latest update``) to regenerate the rules to the latest version, then review the diff before committing. Do not update without the user's confirmation."
79
+ $out = @{ hookSpecificOutput = @{ hookEventName = 'SessionStart'; additionalContext = $ctx } }
80
+ Write-Output ($out | ConvertTo-Json -Compress -Depth 4)
81
+ exit 0
82
+ }
83
+
84
+ Emit-None
@@ -9,14 +9,42 @@
9
9
  #
10
10
  # Emits `{}` (no-op) on any of: no config, no network/npm, already current,
11
11
  # cache still fresh with no known update, or any error. Never blocks startup.
12
+ #
13
+ # JSON is parsed/emitted with `node` (always present for a node CLI tool) so
14
+ # the hook does not depend on `jq` being installed.
12
15
 
13
16
  set -euo pipefail
14
17
 
18
+ emit_none() { printf '%s' '{}'; exit 0; }
19
+
20
+ # node is required for JSON handling; without it, no-op gracefully.
21
+ command -v node &>/dev/null || emit_none
22
+
23
+ # Read a dotted field from a JSON file via node. Prints empty string on any
24
+ # error / missing key. Booleans print as `true`/`false`.
25
+ json_get() {
26
+ node -e '
27
+ const fs = require("fs");
28
+ let raw = "";
29
+ try { raw = fs.readFileSync(process.argv[1], "utf8"); } catch { process.exit(0); }
30
+ try {
31
+ let v = JSON.parse(raw);
32
+ for (const k of process.argv[2].split(".")) v = v == null ? undefined : v[k];
33
+ if (v !== undefined && v !== null) process.stdout.write(String(v));
34
+ } catch {}
35
+ ' "$1" "$2"
36
+ }
37
+
15
38
  # --- Resolve project root (from stdin JSON cwd, else env, else pwd) ----------
16
39
  input="$(cat || true)"
17
40
  PROJECT_ROOT=""
18
- if [[ -n "$input" ]] && command -v jq &>/dev/null; then
19
- PROJECT_ROOT="$(printf '%s' "$input" | jq -r '.cwd // empty' 2>/dev/null || true)"
41
+ if [[ -n "$input" ]]; then
42
+ PROJECT_ROOT="$(printf '%s' "$input" | node -e '
43
+ let d = "";
44
+ process.stdin.on("data", (c) => (d += c)).on("end", () => {
45
+ try { process.stdout.write(JSON.parse(d).cwd || ""); } catch {}
46
+ });
47
+ ' 2>/dev/null || true)"
20
48
  fi
21
49
  [[ -z "$PROJECT_ROOT" ]] && PROJECT_ROOT="${CLAUDE_PROJECT_DIR:-$(pwd)}"
22
50
 
@@ -25,28 +53,21 @@ CACHE_FILE="${PROJECT_ROOT}/.rulebook/.update-check"
25
53
  PKG="@hivehub/rulebook"
26
54
  CACHE_TTL=86400 # 24h in seconds
27
55
 
28
- emit_none() { printf '%s' '{}'; exit 0; }
29
-
30
- # Need jq + a config to do anything useful.
31
- command -v jq &>/dev/null || emit_none
32
56
  [[ -f "$CONFIG_FILE" ]] || emit_none
33
57
 
34
- installed="$(jq -r '.version // empty' "$CONFIG_FILE" 2>/dev/null || true)"
58
+ installed="$(json_get "$CONFIG_FILE" version)"
35
59
  [[ -z "$installed" ]] && emit_none
36
60
 
37
61
  # Allow opt-out via config: { "updateCheck": { "enabled": false } }.
38
- # Note: jq's `//` treats `false` as empty, so `.updateCheck.enabled // true`
39
- # would wrongly yield true when explicitly disabled — test the value directly.
40
- enabled="$(jq -r 'if .updateCheck.enabled == false then "false" else "true" end' "$CONFIG_FILE" 2>/dev/null || echo true)"
41
- [[ "$enabled" == "false" ]] && emit_none
62
+ [[ "$(json_get "$CONFIG_FILE" updateCheck.enabled)" == "false" ]] && emit_none
42
63
 
43
64
  # --- Determine latest version (cache-first) ---------------------------------
44
65
  now="$(date -u +%s)"
45
66
  latest=""
46
67
  cache_ts=0
47
68
  if [[ -f "$CACHE_FILE" ]]; then
48
- cache_ts="$(jq -r '.checkedAt // 0' "$CACHE_FILE" 2>/dev/null || echo 0)"
49
- latest="$(jq -r '.latest // empty' "$CACHE_FILE" 2>/dev/null || true)"
69
+ cache_ts="$(json_get "$CACHE_FILE" checkedAt)"; cache_ts="${cache_ts:-0}"
70
+ latest="$(json_get "$CACHE_FILE" latest)"
50
71
  fi
51
72
 
52
73
  age=$(( now - cache_ts ))
@@ -63,8 +84,12 @@ if [[ -z "$latest" || "$age" -ge "$CACHE_TTL" ]]; then
63
84
  if [[ -n "$fetched" ]]; then
64
85
  latest="$fetched"
65
86
  # Refresh cache (best-effort; ignore write failures).
66
- jq -nc --arg l "$latest" --argjson t "$now" \
67
- '{latest: $l, checkedAt: $t}' > "$CACHE_FILE" 2>/dev/null || true
87
+ node -e '
88
+ const fs = require("fs");
89
+ try {
90
+ fs.writeFileSync(process.argv[1], JSON.stringify({ latest: process.argv[2], checkedAt: Number(process.argv[3]) }));
91
+ } catch {}
92
+ ' "$CACHE_FILE" "$latest" "$now" 2>/dev/null || true
68
93
  fi
69
94
  fi
70
95
 
@@ -91,12 +116,11 @@ ver_gt() {
91
116
 
92
117
  if ver_gt "$latest" "$installed"; then
93
118
  ctx="## Rulebook update available\n\nThis project is on rulebook **${installed}**, but **${latest}** is published on npm.\n\nAsk the user whether they want to update. If they agree, run \`rulebook update\` (or \`npx ${PKG}@latest update\`) to regenerate the rules to the latest version, then review the diff before committing. Do not update without the user's confirmation."
94
- jq -nc --arg ctx "$ctx" '{
95
- hookSpecificOutput: {
96
- hookEventName: "SessionStart",
97
- additionalContext: $ctx
98
- }
99
- }'
119
+ node -e '
120
+ console.log(JSON.stringify({
121
+ hookSpecificOutput: { hookEventName: "SessionStart", additionalContext: process.argv[1] },
122
+ }));
123
+ ' "$ctx"
100
124
  exit 0
101
125
  fi
102
126