@hivehub/rulebook 5.8.2 → 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 (512) 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/cli/CLAUDE.md +102 -117
  188. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  189. package/templates/commands/rulebook-decision-create.md +55 -55
  190. package/templates/commands/rulebook-decision-list.md +15 -15
  191. package/templates/commands/rulebook-knowledge-add.md +41 -41
  192. package/templates/commands/rulebook-knowledge-list.md +15 -15
  193. package/templates/commands/rulebook-learn-capture.md +1 -2
  194. package/templates/commands/rulebook-task-apply.md +67 -67
  195. package/templates/commands/rulebook-task-archive.md +94 -94
  196. package/templates/commands/rulebook-task-create.md +93 -93
  197. package/templates/commands/rulebook-task-list.md +42 -42
  198. package/templates/commands/rulebook-task-show.md +52 -52
  199. package/templates/commands/rulebook-task-validate.md +53 -53
  200. package/templates/compact-context/_default.md +23 -23
  201. package/templates/compact-context/cpp.md +26 -26
  202. package/templates/compact-context/go.md +26 -26
  203. package/templates/compact-context/python.md +26 -26
  204. package/templates/compact-context/rust.md +28 -28
  205. package/templates/compact-context/typescript.md +29 -29
  206. package/templates/core/AGENTS_LEAN.md +4 -9
  207. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  208. package/templates/core/AGENT_AUTOMATION.md +273 -296
  209. package/templates/core/CLAUDE_MD_v2.md +85 -90
  210. package/templates/core/DAG.md +304 -304
  211. package/templates/core/DECISIONS.md +38 -38
  212. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  213. package/templates/core/KNOWLEDGE.md +49 -49
  214. package/templates/core/MULTI_AGENT.md +74 -74
  215. package/templates/core/PLANS.md +28 -28
  216. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  217. package/templates/core/RULEBOOK.md +1936 -1947
  218. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  219. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  220. package/templates/core/WORKSPACE.md +4 -8
  221. package/templates/git/CI_CD_PATTERNS.md +661 -661
  222. package/templates/git/GITHUB_ACTIONS.md +728 -728
  223. package/templates/git/GITLAB_CI.md +730 -730
  224. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  225. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  226. package/templates/hooks/COMMIT_MSG.md +530 -530
  227. package/templates/hooks/POST_CHECKOUT.md +546 -546
  228. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  229. package/templates/hooks/PRE_COMMIT.md +414 -414
  230. package/templates/hooks/PRE_PUSH.md +601 -601
  231. package/templates/hooks/enforce-pre-tool.sh +26 -9
  232. package/templates/hooks/update-check.ps1 +84 -84
  233. package/templates/hooks/update-check.sh +45 -21
  234. package/templates/languages/C.md +333 -333
  235. package/templates/languages/CPP.md +743 -743
  236. package/templates/languages/CSHARP.md +417 -417
  237. package/templates/languages/ELIXIR.md +454 -454
  238. package/templates/languages/ERLANG.md +361 -361
  239. package/templates/languages/GO.md +645 -645
  240. package/templates/languages/HASKELL.md +177 -177
  241. package/templates/languages/JAVA.md +607 -607
  242. package/templates/languages/JAVASCRIPT.md +631 -631
  243. package/templates/languages/JULIA.md +97 -97
  244. package/templates/languages/KOTLIN.md +511 -511
  245. package/templates/languages/LISP.md +100 -100
  246. package/templates/languages/LUA.md +74 -74
  247. package/templates/languages/OBJECTIVEC.md +90 -90
  248. package/templates/languages/PHP.md +416 -416
  249. package/templates/languages/PYTHON.md +682 -682
  250. package/templates/languages/RUBY.md +421 -421
  251. package/templates/languages/RUST.md +477 -477
  252. package/templates/languages/SAS.md +73 -73
  253. package/templates/languages/SCALA.md +348 -348
  254. package/templates/languages/SOLIDITY.md +580 -580
  255. package/templates/languages/SQL.md +137 -137
  256. package/templates/languages/SWIFT.md +466 -466
  257. package/templates/languages/TYPESCRIPT.md +591 -591
  258. package/templates/languages/ZIG.md +265 -265
  259. package/templates/modules/CONTEXT7.md +54 -54
  260. package/templates/modules/GITHUB_MCP.md +64 -64
  261. package/templates/modules/PLAYWRIGHT.md +90 -90
  262. package/templates/modules/RULEBOOK_MCP.md +208 -208
  263. package/templates/modules/SERENA.md +337 -337
  264. package/templates/modules/SUPABASE.md +223 -223
  265. package/templates/modules/SYNAP.md +69 -69
  266. package/templates/modules/VECTORIZER.md +63 -63
  267. package/templates/modules/sequential-thinking.md +42 -42
  268. package/templates/rules/consult-analysis-before-implementing.md +21 -23
  269. package/templates/rules/cpp.md +46 -46
  270. package/templates/rules/csharp.md +44 -44
  271. package/templates/rules/diagnostic-first.md +39 -39
  272. package/templates/rules/fail-twice-escalate.md +46 -46
  273. package/templates/rules/follow-task-sequence.md +36 -36
  274. package/templates/rules/git-safety.md +29 -29
  275. package/templates/rules/go.md +40 -40
  276. package/templates/rules/incremental-implementation.md +56 -56
  277. package/templates/rules/incremental-tests.md +29 -29
  278. package/templates/rules/java.md +43 -43
  279. package/templates/rules/javascript.md +39 -39
  280. package/templates/rules/knowledge-base-usage.md +41 -41
  281. package/templates/rules/multi-agent-teams.md +75 -75
  282. package/templates/rules/no-deferred.md +31 -31
  283. package/templates/rules/no-shortcuts.md +30 -30
  284. package/templates/rules/python.md +43 -43
  285. package/templates/rules/research-first.md +30 -30
  286. package/templates/rules/respect-handoff-trigger.md +41 -41
  287. package/templates/rules/rust.md +40 -40
  288. package/templates/rules/sequential-editing.md +21 -21
  289. package/templates/rules/session-workflow.md +24 -24
  290. package/templates/rules/task-decomposition.md +32 -32
  291. package/templates/rules/typescript.md +40 -40
  292. package/templates/skills/cli/claude/SKILL.md +42 -42
  293. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  294. package/templates/skills/core/dag/SKILL.md +314 -314
  295. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  296. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  297. package/templates/skills/core/rulebook/SKILL.md +176 -176
  298. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  299. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  300. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  301. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  302. package/templates/skills/dev/analysis/SKILL.md +19 -19
  303. package/templates/skills/dev/api-design/SKILL.md +15 -15
  304. package/templates/skills/dev/architect/SKILL.md +17 -17
  305. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  306. package/templates/skills/dev/db-design/SKILL.md +15 -15
  307. package/templates/skills/dev/debug/SKILL.md +16 -16
  308. package/templates/skills/dev/deploy/SKILL.md +17 -17
  309. package/templates/skills/dev/docs/SKILL.md +17 -17
  310. package/templates/skills/dev/handoff/SKILL.md +27 -27
  311. package/templates/skills/dev/migrate/SKILL.md +15 -15
  312. package/templates/skills/dev/perf/SKILL.md +17 -17
  313. package/templates/skills/dev/refactor/SKILL.md +17 -17
  314. package/templates/skills/dev/research/SKILL.md +14 -14
  315. package/templates/skills/dev/review/SKILL.md +18 -18
  316. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  317. package/templates/skills/languages/c/SKILL.md +343 -343
  318. package/templates/skills/languages/cpp/SKILL.md +753 -753
  319. package/templates/skills/languages/csharp/SKILL.md +427 -427
  320. package/templates/skills/languages/elixir/SKILL.md +464 -464
  321. package/templates/skills/languages/erlang/SKILL.md +371 -371
  322. package/templates/skills/languages/go/SKILL.md +655 -655
  323. package/templates/skills/languages/haskell/SKILL.md +187 -187
  324. package/templates/skills/languages/java/SKILL.md +617 -617
  325. package/templates/skills/languages/javascript/SKILL.md +641 -641
  326. package/templates/skills/languages/julia/SKILL.md +107 -107
  327. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  328. package/templates/skills/languages/lisp/SKILL.md +110 -110
  329. package/templates/skills/languages/lua/SKILL.md +84 -84
  330. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  331. package/templates/skills/languages/php/SKILL.md +426 -426
  332. package/templates/skills/languages/python/SKILL.md +692 -692
  333. package/templates/skills/languages/ruby/SKILL.md +431 -431
  334. package/templates/skills/languages/rust/SKILL.md +487 -487
  335. package/templates/skills/languages/sas/SKILL.md +83 -83
  336. package/templates/skills/languages/scala/SKILL.md +358 -358
  337. package/templates/skills/languages/solidity/SKILL.md +590 -590
  338. package/templates/skills/languages/sql/SKILL.md +147 -147
  339. package/templates/skills/languages/swift/SKILL.md +476 -476
  340. package/templates/skills/languages/typescript/SKILL.md +302 -302
  341. package/templates/skills/languages/zig/SKILL.md +275 -275
  342. package/templates/skills/modules/context7/SKILL.md +64 -64
  343. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  344. package/templates/skills/modules/playwright/SKILL.md +100 -100
  345. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  346. package/templates/skills/modules/serena/SKILL.md +347 -347
  347. package/templates/skills/modules/supabase/SKILL.md +233 -233
  348. package/templates/skills/modules/synap/SKILL.md +79 -79
  349. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  350. package/.claude/commands/analysis.md +0 -35
  351. package/.claude/commands/continue.md +0 -33
  352. package/.claude/commands/rulebook-decision-create.md +0 -55
  353. package/.claude/commands/rulebook-decision-list.md +0 -15
  354. package/.claude/commands/rulebook-knowledge-add.md +0 -41
  355. package/.claude/commands/rulebook-knowledge-list.md +0 -15
  356. package/.claude/commands/rulebook-learn-capture.md +0 -41
  357. package/.claude/commands/rulebook-learn-list.md +0 -13
  358. package/.claude/commands/rulebook-memory-save.md +0 -48
  359. package/.claude/commands/rulebook-memory-search.md +0 -47
  360. package/.claude/commands/rulebook-task-apply.md +0 -67
  361. package/.claude/commands/rulebook-task-archive.md +0 -94
  362. package/.claude/commands/rulebook-task-create.md +0 -93
  363. package/.claude/commands/rulebook-task-list.md +0 -42
  364. package/.claude/commands/rulebook-task-show.md +0 -52
  365. package/.claude/commands/rulebook-task-validate.md +0 -53
  366. package/.claude-plugin/marketplace.json +0 -28
  367. package/.claude-plugin/plugin.json +0 -8
  368. package/dist/agents/claude-code.d.ts +0 -69
  369. package/dist/agents/claude-code.d.ts.map +0 -1
  370. package/dist/agents/claude-code.js +0 -180
  371. package/dist/agents/claude-code.js.map +0 -1
  372. package/dist/agents/cursor-agent.d.ts +0 -184
  373. package/dist/agents/cursor-agent.d.ts.map +0 -1
  374. package/dist/agents/cursor-agent.js +0 -299
  375. package/dist/agents/cursor-agent.js.map +0 -1
  376. package/dist/agents/gemini-cli.d.ts +0 -69
  377. package/dist/agents/gemini-cli.d.ts.map +0 -1
  378. package/dist/agents/gemini-cli.js +0 -180
  379. package/dist/agents/gemini-cli.js.map +0 -1
  380. package/dist/cli/commands/memory.d.ts +0 -30
  381. package/dist/cli/commands/memory.d.ts.map +0 -1
  382. package/dist/cli/commands/memory.js +0 -259
  383. package/dist/cli/commands/memory.js.map +0 -1
  384. package/dist/core/console/cli-bridge.d.ts +0 -113
  385. package/dist/core/console/cli-bridge.d.ts.map +0 -1
  386. package/dist/core/console/cli-bridge.js +0 -1094
  387. package/dist/core/console/cli-bridge.js.map +0 -1
  388. package/dist/core/ide/multi-tool-generator.d.ts +0 -59
  389. package/dist/core/ide/multi-tool-generator.d.ts.map +0 -1
  390. package/dist/core/ide/multi-tool-generator.js +0 -157
  391. package/dist/core/ide/multi-tool-generator.js.map +0 -1
  392. package/dist/core/ide/opencode-generator.d.ts +0 -72
  393. package/dist/core/ide/opencode-generator.d.ts.map +0 -1
  394. package/dist/core/ide/opencode-generator.js +0 -450
  395. package/dist/core/ide/opencode-generator.js.map +0 -1
  396. package/dist/core/indexer/background-indexer.d.ts +0 -35
  397. package/dist/core/indexer/background-indexer.d.ts.map +0 -1
  398. package/dist/core/indexer/background-indexer.js +0 -267
  399. package/dist/core/indexer/background-indexer.js.map +0 -1
  400. package/dist/core/indexer/file-parser.d.ts +0 -28
  401. package/dist/core/indexer/file-parser.d.ts.map +0 -1
  402. package/dist/core/indexer/file-parser.js +0 -171
  403. package/dist/core/indexer/file-parser.js.map +0 -1
  404. package/dist/core/indexer/indexer-types.d.ts +0 -37
  405. package/dist/core/indexer/indexer-types.d.ts.map +0 -1
  406. package/dist/core/indexer/indexer-types.js +0 -8
  407. package/dist/core/indexer/indexer-types.js.map +0 -1
  408. package/dist/memory/file-search.d.ts +0 -43
  409. package/dist/memory/file-search.d.ts.map +0 -1
  410. package/dist/memory/file-search.js +0 -228
  411. package/dist/memory/file-search.js.map +0 -1
  412. package/dist/memory/file-store.d.ts +0 -99
  413. package/dist/memory/file-store.d.ts.map +0 -1
  414. package/dist/memory/file-store.js +0 -615
  415. package/dist/memory/file-store.js.map +0 -1
  416. package/dist/memory/legacy-migrator.d.ts +0 -27
  417. package/dist/memory/legacy-migrator.d.ts.map +0 -1
  418. package/dist/memory/legacy-migrator.js +0 -185
  419. package/dist/memory/legacy-migrator.js.map +0 -1
  420. package/dist/memory/memory-hooks.d.ts +0 -48
  421. package/dist/memory/memory-hooks.d.ts.map +0 -1
  422. package/dist/memory/memory-hooks.js +0 -248
  423. package/dist/memory/memory-hooks.js.map +0 -1
  424. package/dist/memory/memory-manager.d.ts +0 -65
  425. package/dist/memory/memory-manager.d.ts.map +0 -1
  426. package/dist/memory/memory-manager.js +0 -223
  427. package/dist/memory/memory-manager.js.map +0 -1
  428. package/dist/memory/memory-types.d.ts +0 -85
  429. package/dist/memory/memory-types.d.ts.map +0 -1
  430. package/dist/memory/memory-types.js +0 -7
  431. package/dist/memory/memory-types.js.map +0 -1
  432. package/templates/agents/accessibility-reviewer.md +0 -43
  433. package/templates/agents/api-designer.md +0 -42
  434. package/templates/agents/compiler/codegen-debugger.md +0 -34
  435. package/templates/agents/compiler/stdlib-engineer.md +0 -28
  436. package/templates/agents/compiler/test-coverage-guardian.md +0 -31
  437. package/templates/agents/context-intelligence.md +0 -50
  438. package/templates/agents/database-architect.md +0 -41
  439. package/templates/agents/devops-engineer.md +0 -42
  440. package/templates/agents/game-engine/cpp-core-expert.md +0 -35
  441. package/templates/agents/game-engine/render-engineer.md +0 -22
  442. package/templates/agents/game-engine/shader-engineer.md +0 -38
  443. package/templates/agents/game-engine/systems-integration.md +0 -43
  444. package/templates/agents/generic/code-reviewer.md +0 -41
  445. package/templates/agents/generic/docs-writer.md +0 -25
  446. package/templates/agents/generic/project-manager.md +0 -36
  447. package/templates/agents/generic/researcher.md +0 -34
  448. package/templates/agents/generic/test-engineer.md +0 -41
  449. package/templates/agents/i18n-engineer.md +0 -42
  450. package/templates/agents/migration-engineer.md +0 -42
  451. package/templates/agents/mobile/platform-specialist.md +0 -22
  452. package/templates/agents/mobile/ui-engineer.md +0 -22
  453. package/templates/agents/project-manager.md +0 -217
  454. package/templates/agents/refactoring-agent.md +0 -41
  455. package/templates/agents/ux-reviewer.md +0 -43
  456. package/templates/agents/web-app/api-designer.md +0 -22
  457. package/templates/agents/web-app/backend-engineer.md +0 -30
  458. package/templates/agents/web-app/database-engineer.md +0 -22
  459. package/templates/agents/web-app/frontend-engineer.md +0 -29
  460. package/templates/agents/web-app/security-reviewer.md +0 -32
  461. package/templates/cli/AIDER.md +0 -49
  462. package/templates/cli/AMAZON_Q.md +0 -25
  463. package/templates/cli/AUGGIE.md +0 -32
  464. package/templates/cli/CLINE.md +0 -99
  465. package/templates/cli/CODEBUDDY.md +0 -20
  466. package/templates/cli/CODEIUM.md +0 -20
  467. package/templates/cli/CODEX.md +0 -21
  468. package/templates/cli/CONTINUE.md +0 -34
  469. package/templates/cli/CURSOR_CLI.md +0 -62
  470. package/templates/cli/FACTORY.md +0 -18
  471. package/templates/cli/GEMINI.md +0 -35
  472. package/templates/cli/KILOCODE.md +0 -18
  473. package/templates/cli/OPENCODE.md +0 -85
  474. package/templates/cli/gemini-extension.json +0 -77
  475. package/templates/commands/rulebook-memory-save.md +0 -48
  476. package/templates/commands/rulebook-memory-search.md +0 -47
  477. package/templates/ides/CONTINUE_RULES.md +0 -16
  478. package/templates/ides/COPILOT_INSTRUCTIONS.md +0 -23
  479. package/templates/ides/GEMINI_RULES.md +0 -17
  480. package/templates/ides/OPENCODE.md +0 -63
  481. package/templates/ides/WINDSURF_RULES.md +0 -14
  482. package/templates/modules/ATLASSIAN.md +0 -255
  483. package/templates/modules/FIGMA.md +0 -267
  484. package/templates/modules/GRAFANA.md +0 -328
  485. package/templates/modules/MEMORY.md +0 -126
  486. package/templates/modules/NOTION.md +0 -247
  487. package/templates/skills/cli/aider/SKILL.md +0 -59
  488. package/templates/skills/cli/amazon-q/SKILL.md +0 -35
  489. package/templates/skills/cli/auggie/SKILL.md +0 -42
  490. package/templates/skills/cli/cline/SKILL.md +0 -42
  491. package/templates/skills/cli/codebuddy/SKILL.md +0 -30
  492. package/templates/skills/cli/codeium/SKILL.md +0 -30
  493. package/templates/skills/cli/codex/SKILL.md +0 -31
  494. package/templates/skills/cli/continue/SKILL.md +0 -44
  495. package/templates/skills/cli/cursor-cli/SKILL.md +0 -38
  496. package/templates/skills/cli/factory/SKILL.md +0 -28
  497. package/templates/skills/cli/gemini/SKILL.md +0 -45
  498. package/templates/skills/cli/kilocode/SKILL.md +0 -28
  499. package/templates/skills/cli/opencode/SKILL.md +0 -82
  500. package/templates/skills/ides/copilot/SKILL.md +0 -47
  501. package/templates/skills/ides/cursor/SKILL.md +0 -53
  502. package/templates/skills/ides/jetbrains-ai/SKILL.md +0 -45
  503. package/templates/skills/ides/replit/SKILL.md +0 -46
  504. package/templates/skills/ides/tabnine/SKILL.md +0 -39
  505. package/templates/skills/ides/vscode/SKILL.md +0 -50
  506. package/templates/skills/ides/windsurf/SKILL.md +0 -46
  507. package/templates/skills/ides/zed/SKILL.md +0 -42
  508. package/templates/skills/modules/atlassian/SKILL.md +0 -265
  509. package/templates/skills/modules/figma/SKILL.md +0 -277
  510. package/templates/skills/modules/grafana/SKILL.md +0 -338
  511. package/templates/skills/modules/memory/SKILL.md +0 -73
  512. 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