@hivehub/rulebook 5.1.2 → 5.1.3

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 (406) hide show
  1. package/.claude/commands/continue.md +33 -33
  2. package/.claude/commands/ralph-config.md +112 -112
  3. package/.claude/commands/ralph-history.md +110 -110
  4. package/.claude/commands/ralph-init.md +72 -72
  5. package/.claude/commands/ralph-pause-resume.md +105 -105
  6. package/.claude/commands/ralph-run.md +101 -101
  7. package/.claude/commands/ralph-status.md +76 -76
  8. package/.claude/commands/rulebook-decision-create.md +55 -55
  9. package/.claude/commands/rulebook-decision-list.md +15 -15
  10. package/.claude/commands/rulebook-knowledge-add.md +41 -41
  11. package/.claude/commands/rulebook-knowledge-list.md +15 -15
  12. package/.claude/commands/rulebook-learn-capture.md +48 -48
  13. package/.claude/commands/rulebook-learn-list.md +13 -13
  14. package/.claude/commands/rulebook-memory-save.md +48 -48
  15. package/.claude/commands/rulebook-memory-search.md +47 -47
  16. package/.claude/commands/rulebook-task-apply.md +67 -67
  17. package/.claude/commands/rulebook-task-archive.md +94 -94
  18. package/.claude/commands/rulebook-task-create.md +93 -93
  19. package/.claude/commands/rulebook-task-list.md +42 -42
  20. package/.claude/commands/rulebook-task-show.md +52 -52
  21. package/.claude/commands/rulebook-task-validate.md +53 -53
  22. package/.claude-plugin/marketplace.json +28 -28
  23. package/.claude-plugin/plugin.json +8 -8
  24. package/README.md +4 -0
  25. package/dist/cli/commands.d.ts.map +1 -1
  26. package/dist/cli/commands.js +39 -8
  27. package/dist/cli/commands.js.map +1 -1
  28. package/dist/core/agent-template-engine.d.ts.map +1 -1
  29. package/dist/core/agent-template-engine.js +36 -30
  30. package/dist/core/agent-template-engine.js.map +1 -1
  31. package/dist/core/complexity-detector.d.ts.map +1 -1
  32. package/dist/core/complexity-detector.js +109 -29
  33. package/dist/core/complexity-detector.js.map +1 -1
  34. package/dist/core/decision-manager.d.ts.map +1 -1
  35. package/dist/core/decision-manager.js +2 -7
  36. package/dist/core/decision-manager.js.map +1 -1
  37. package/dist/core/generator.d.ts.map +1 -1
  38. package/dist/core/generator.js +28 -28
  39. package/dist/core/generator.js.map +1 -1
  40. package/dist/core/indexer/background-indexer.d.ts +1 -0
  41. package/dist/core/indexer/background-indexer.d.ts.map +1 -1
  42. package/dist/core/indexer/background-indexer.js +107 -19
  43. package/dist/core/indexer/background-indexer.js.map +1 -1
  44. package/dist/core/indexer/indexer-types.d.ts +2 -0
  45. package/dist/core/indexer/indexer-types.d.ts.map +1 -1
  46. package/dist/core/knowledge-manager.d.ts.map +1 -1
  47. package/dist/core/knowledge-manager.js +1 -1
  48. package/dist/core/knowledge-manager.js.map +1 -1
  49. package/dist/core/learn-manager.d.ts.map +1 -1
  50. package/dist/core/learn-manager.js +1 -1
  51. package/dist/core/learn-manager.js.map +1 -1
  52. package/dist/core/rule-engine.d.ts.map +1 -1
  53. package/dist/core/rule-engine.js +1 -3
  54. package/dist/core/rule-engine.js.map +1 -1
  55. package/dist/core/task-manager.d.ts.map +1 -1
  56. package/dist/core/task-manager.js +24 -24
  57. package/dist/core/task-manager.js.map +1 -1
  58. package/dist/index.js +23 -7
  59. package/dist/index.js.map +1 -1
  60. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  61. package/dist/mcp/rulebook-server.js +18 -6
  62. package/dist/mcp/rulebook-server.js.map +1 -1
  63. package/dist/memory/hnsw-index.d.ts.map +1 -1
  64. package/dist/memory/hnsw-index.js +12 -4
  65. package/dist/memory/hnsw-index.js.map +1 -1
  66. package/dist/memory/memory-store.d.ts.map +1 -1
  67. package/dist/memory/memory-store.js +136 -107
  68. package/dist/memory/memory-store.js.map +1 -1
  69. package/dist/types.d.ts +7 -0
  70. package/dist/types.d.ts.map +1 -1
  71. package/package.json +22 -21
  72. package/templates/agents/accessibility-reviewer.md +43 -43
  73. package/templates/agents/api-designer.md +42 -42
  74. package/templates/agents/architect.md +51 -51
  75. package/templates/agents/build-engineer.md +36 -36
  76. package/templates/agents/code-reviewer.md +47 -47
  77. package/templates/agents/compiler/codegen-debugger.md +34 -34
  78. package/templates/agents/compiler/stdlib-engineer.md +28 -28
  79. package/templates/agents/compiler/test-coverage-guardian.md +31 -31
  80. package/templates/agents/context-intelligence.md +52 -52
  81. package/templates/agents/database-architect.md +41 -41
  82. package/templates/agents/devops-engineer.md +42 -42
  83. package/templates/agents/docs-writer.md +38 -38
  84. package/templates/agents/game-engine/cpp-core-expert.md +35 -35
  85. package/templates/agents/game-engine/render-engineer.md +22 -22
  86. package/templates/agents/game-engine/shader-engineer.md +38 -38
  87. package/templates/agents/game-engine/systems-integration.md +43 -43
  88. package/templates/agents/generic/code-reviewer.md +41 -41
  89. package/templates/agents/generic/docs-writer.md +25 -25
  90. package/templates/agents/generic/project-manager.md +36 -36
  91. package/templates/agents/generic/researcher.md +34 -34
  92. package/templates/agents/generic/test-engineer.md +41 -41
  93. package/templates/agents/i18n-engineer.md +42 -42
  94. package/templates/agents/implementer.md +42 -42
  95. package/templates/agents/migration-engineer.md +42 -42
  96. package/templates/agents/mobile/platform-specialist.md +22 -22
  97. package/templates/agents/mobile/ui-engineer.md +22 -22
  98. package/templates/agents/performance-engineer.md +49 -49
  99. package/templates/agents/refactoring-agent.md +41 -41
  100. package/templates/agents/researcher.md +38 -38
  101. package/templates/agents/security-reviewer.md +40 -40
  102. package/templates/agents/team-lead.md +37 -37
  103. package/templates/agents/tester.md +48 -48
  104. package/templates/agents/ux-reviewer.md +43 -43
  105. package/templates/agents/web-app/api-designer.md +22 -22
  106. package/templates/agents/web-app/backend-engineer.md +30 -30
  107. package/templates/agents/web-app/database-engineer.md +22 -22
  108. package/templates/agents/web-app/frontend-engineer.md +29 -29
  109. package/templates/agents/web-app/security-reviewer.md +32 -32
  110. package/templates/ci/rulebook-review.yml +26 -26
  111. package/templates/cli/AIDER.md +49 -49
  112. package/templates/cli/AMAZON_Q.md +25 -25
  113. package/templates/cli/AUGGIE.md +32 -32
  114. package/templates/cli/CLAUDE.md +117 -117
  115. package/templates/cli/CLINE.md +99 -99
  116. package/templates/cli/CODEBUDDY.md +20 -20
  117. package/templates/cli/CODEIUM.md +20 -20
  118. package/templates/cli/CODEX.md +21 -21
  119. package/templates/cli/CONTINUE.md +34 -34
  120. package/templates/cli/CURSOR_CLI.md +62 -62
  121. package/templates/cli/FACTORY.md +18 -18
  122. package/templates/cli/GEMINI.md +35 -35
  123. package/templates/cli/KILOCODE.md +18 -18
  124. package/templates/cli/OPENCODE.md +18 -18
  125. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  126. package/templates/commands/rulebook-decision-create.md +55 -55
  127. package/templates/commands/rulebook-decision-list.md +15 -15
  128. package/templates/commands/rulebook-knowledge-add.md +41 -41
  129. package/templates/commands/rulebook-knowledge-list.md +15 -15
  130. package/templates/commands/rulebook-learn-capture.md +48 -48
  131. package/templates/commands/rulebook-learn-list.md +13 -13
  132. package/templates/commands/rulebook-memory-save.md +48 -48
  133. package/templates/commands/rulebook-memory-search.md +47 -47
  134. package/templates/commands/rulebook-task-apply.md +67 -67
  135. package/templates/commands/rulebook-task-archive.md +94 -94
  136. package/templates/commands/rulebook-task-create.md +93 -93
  137. package/templates/commands/rulebook-task-list.md +42 -42
  138. package/templates/commands/rulebook-task-show.md +52 -52
  139. package/templates/commands/rulebook-task-validate.md +53 -53
  140. package/templates/core/AGENTS_LEAN.md +25 -25
  141. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  142. package/templates/core/AGENT_AUTOMATION.md +296 -296
  143. package/templates/core/DAG.md +304 -304
  144. package/templates/core/DECISIONS.md +38 -38
  145. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  146. package/templates/core/KNOWLEDGE.md +49 -49
  147. package/templates/core/MULTI_AGENT.md +74 -74
  148. package/templates/core/PLANS.md +28 -28
  149. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  150. package/templates/core/RALPH.md +471 -471
  151. package/templates/core/RULEBOOK.md +1947 -1947
  152. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  153. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  154. package/templates/frameworks/ANGULAR.md +36 -36
  155. package/templates/frameworks/DJANGO.md +83 -83
  156. package/templates/frameworks/ELECTRON.md +147 -147
  157. package/templates/frameworks/FLASK.md +38 -38
  158. package/templates/frameworks/FLUTTER.md +55 -55
  159. package/templates/frameworks/JQUERY.md +32 -32
  160. package/templates/frameworks/LARAVEL.md +38 -38
  161. package/templates/frameworks/NESTJS.md +43 -43
  162. package/templates/frameworks/NEXTJS.md +127 -127
  163. package/templates/frameworks/NUXT.md +40 -40
  164. package/templates/frameworks/RAILS.md +66 -66
  165. package/templates/frameworks/REACT.md +38 -38
  166. package/templates/frameworks/REACT_NATIVE.md +47 -47
  167. package/templates/frameworks/SPRING.md +39 -39
  168. package/templates/frameworks/SYMFONY.md +36 -36
  169. package/templates/frameworks/VUE.md +36 -36
  170. package/templates/frameworks/ZEND.md +35 -35
  171. package/templates/git/CI_CD_PATTERNS.md +661 -661
  172. package/templates/git/GITHUB_ACTIONS.md +728 -728
  173. package/templates/git/GITLAB_CI.md +730 -730
  174. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  175. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  176. package/templates/hooks/COMMIT_MSG.md +530 -530
  177. package/templates/hooks/POST_CHECKOUT.md +546 -546
  178. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  179. package/templates/hooks/PRE_COMMIT.md +414 -414
  180. package/templates/hooks/PRE_PUSH.md +601 -601
  181. package/templates/ides/CONTINUE_RULES.md +16 -16
  182. package/templates/ides/COPILOT.md +37 -37
  183. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
  184. package/templates/ides/CURSOR.md +43 -43
  185. package/templates/ides/GEMINI_RULES.md +17 -17
  186. package/templates/ides/JETBRAINS_AI.md +35 -35
  187. package/templates/ides/REPLIT.md +36 -36
  188. package/templates/ides/TABNINE.md +29 -29
  189. package/templates/ides/VSCODE.md +40 -40
  190. package/templates/ides/WINDSURF.md +36 -36
  191. package/templates/ides/WINDSURF_RULES.md +14 -14
  192. package/templates/ides/ZED.md +32 -32
  193. package/templates/ides/cursor-mdc/go.mdc +24 -24
  194. package/templates/ides/cursor-mdc/python.mdc +24 -24
  195. package/templates/ides/cursor-mdc/quality.mdc +25 -25
  196. package/templates/ides/cursor-mdc/ralph.mdc +39 -39
  197. package/templates/ides/cursor-mdc/rulebook.mdc +38 -38
  198. package/templates/ides/cursor-mdc/rust.mdc +24 -24
  199. package/templates/ides/cursor-mdc/typescript.mdc +25 -25
  200. package/templates/languages/C.md +333 -333
  201. package/templates/languages/CPP.md +743 -743
  202. package/templates/languages/CSHARP.md +417 -417
  203. package/templates/languages/ELIXIR.md +454 -454
  204. package/templates/languages/ERLANG.md +361 -361
  205. package/templates/languages/GO.md +645 -645
  206. package/templates/languages/HASKELL.md +177 -177
  207. package/templates/languages/JAVA.md +607 -607
  208. package/templates/languages/JAVASCRIPT.md +631 -631
  209. package/templates/languages/JULIA.md +97 -97
  210. package/templates/languages/KOTLIN.md +511 -511
  211. package/templates/languages/LISP.md +100 -100
  212. package/templates/languages/LUA.md +74 -74
  213. package/templates/languages/OBJECTIVEC.md +90 -90
  214. package/templates/languages/PHP.md +416 -416
  215. package/templates/languages/PYTHON.md +682 -682
  216. package/templates/languages/RUBY.md +421 -421
  217. package/templates/languages/RUST.md +477 -477
  218. package/templates/languages/SAS.md +73 -73
  219. package/templates/languages/SCALA.md +348 -348
  220. package/templates/languages/SOLIDITY.md +580 -580
  221. package/templates/languages/SQL.md +137 -137
  222. package/templates/languages/SWIFT.md +466 -466
  223. package/templates/languages/TYPESCRIPT.md +591 -591
  224. package/templates/languages/ZIG.md +265 -265
  225. package/templates/modules/ATLASSIAN.md +255 -255
  226. package/templates/modules/CONTEXT7.md +54 -54
  227. package/templates/modules/FIGMA.md +267 -267
  228. package/templates/modules/GITHUB_MCP.md +64 -64
  229. package/templates/modules/GRAFANA.md +328 -328
  230. package/templates/modules/MEMORY.md +126 -126
  231. package/templates/modules/NOTION.md +247 -247
  232. package/templates/modules/PLAYWRIGHT.md +90 -90
  233. package/templates/modules/RULEBOOK_MCP.md +156 -156
  234. package/templates/modules/SERENA.md +337 -337
  235. package/templates/modules/SUPABASE.md +223 -223
  236. package/templates/modules/SYNAP.md +69 -69
  237. package/templates/modules/VECTORIZER.md +63 -63
  238. package/templates/modules/sequential-thinking.md +42 -42
  239. package/templates/ralph/ralph-history.bat +4 -4
  240. package/templates/ralph/ralph-history.sh +5 -5
  241. package/templates/ralph/ralph-init.bat +5 -5
  242. package/templates/ralph/ralph-init.sh +5 -5
  243. package/templates/ralph/ralph-pause.bat +5 -5
  244. package/templates/ralph/ralph-pause.sh +5 -5
  245. package/templates/ralph/ralph-run.bat +5 -5
  246. package/templates/ralph/ralph-run.sh +5 -5
  247. package/templates/ralph/ralph-status.bat +4 -4
  248. package/templates/ralph/ralph-status.sh +5 -5
  249. package/templates/rules/follow-task-sequence.md +36 -36
  250. package/templates/rules/git-safety.md +29 -29
  251. package/templates/rules/incremental-tests.md +29 -29
  252. package/templates/rules/no-deferred.md +31 -31
  253. package/templates/rules/no-shortcuts.md +30 -30
  254. package/templates/rules/research-first.md +30 -30
  255. package/templates/rules/sequential-editing.md +21 -21
  256. package/templates/rules/session-workflow.md +24 -24
  257. package/templates/rules/task-decomposition.md +32 -32
  258. package/templates/services/AZURE_BLOB.md +184 -184
  259. package/templates/services/CASSANDRA.md +239 -239
  260. package/templates/services/DATADOG.md +26 -26
  261. package/templates/services/DOCKER.md +124 -124
  262. package/templates/services/DOCKER_COMPOSE.md +168 -168
  263. package/templates/services/DYNAMODB.md +308 -308
  264. package/templates/services/ELASTICSEARCH.md +347 -347
  265. package/templates/services/GCS.md +178 -178
  266. package/templates/services/HELM.md +194 -194
  267. package/templates/services/INFLUXDB.md +265 -265
  268. package/templates/services/KAFKA.md +341 -341
  269. package/templates/services/KUBERNETES.md +208 -208
  270. package/templates/services/MARIADB.md +183 -183
  271. package/templates/services/MEMCACHED.md +242 -242
  272. package/templates/services/MINIO.md +201 -201
  273. package/templates/services/MONGODB.md +268 -268
  274. package/templates/services/MYSQL.md +358 -358
  275. package/templates/services/NEO4J.md +247 -247
  276. package/templates/services/OPENTELEMETRY.md +25 -25
  277. package/templates/services/ORACLE.md +290 -290
  278. package/templates/services/PINO.md +24 -24
  279. package/templates/services/POSTGRESQL.md +326 -326
  280. package/templates/services/PROMETHEUS.md +33 -33
  281. package/templates/services/RABBITMQ.md +286 -286
  282. package/templates/services/REDIS.md +292 -292
  283. package/templates/services/S3.md +298 -298
  284. package/templates/services/SENTRY.md +23 -23
  285. package/templates/services/SQLITE.md +294 -294
  286. package/templates/services/SQLSERVER.md +294 -294
  287. package/templates/services/WINSTON.md +30 -30
  288. package/templates/skills/cli/aider/SKILL.md +59 -59
  289. package/templates/skills/cli/amazon-q/SKILL.md +35 -35
  290. package/templates/skills/cli/auggie/SKILL.md +42 -42
  291. package/templates/skills/cli/claude/SKILL.md +42 -42
  292. package/templates/skills/cli/cline/SKILL.md +42 -42
  293. package/templates/skills/cli/codebuddy/SKILL.md +30 -30
  294. package/templates/skills/cli/codeium/SKILL.md +30 -30
  295. package/templates/skills/cli/codex/SKILL.md +31 -31
  296. package/templates/skills/cli/continue/SKILL.md +44 -44
  297. package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
  298. package/templates/skills/cli/factory/SKILL.md +28 -28
  299. package/templates/skills/cli/gemini/SKILL.md +45 -45
  300. package/templates/skills/cli/kilocode/SKILL.md +28 -28
  301. package/templates/skills/cli/opencode/SKILL.md +28 -28
  302. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  303. package/templates/skills/core/dag/SKILL.md +314 -314
  304. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  305. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  306. package/templates/skills/core/rulebook/SKILL.md +176 -176
  307. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  308. package/templates/skills/dev/api-design/SKILL.md +15 -15
  309. package/templates/skills/dev/architect/SKILL.md +17 -17
  310. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  311. package/templates/skills/dev/db-design/SKILL.md +15 -15
  312. package/templates/skills/dev/debug/SKILL.md +16 -16
  313. package/templates/skills/dev/deploy/SKILL.md +17 -17
  314. package/templates/skills/dev/docs/SKILL.md +17 -17
  315. package/templates/skills/dev/migrate/SKILL.md +15 -15
  316. package/templates/skills/dev/perf/SKILL.md +17 -17
  317. package/templates/skills/dev/refactor/SKILL.md +17 -17
  318. package/templates/skills/dev/research/SKILL.md +14 -14
  319. package/templates/skills/dev/review/SKILL.md +18 -18
  320. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  321. package/templates/skills/frameworks/angular/SKILL.md +46 -46
  322. package/templates/skills/frameworks/django/SKILL.md +93 -93
  323. package/templates/skills/frameworks/electron/SKILL.md +157 -157
  324. package/templates/skills/frameworks/flask/SKILL.md +48 -48
  325. package/templates/skills/frameworks/flutter/SKILL.md +65 -65
  326. package/templates/skills/frameworks/jquery/SKILL.md +42 -42
  327. package/templates/skills/frameworks/laravel/SKILL.md +48 -48
  328. package/templates/skills/frameworks/nestjs/SKILL.md +53 -53
  329. package/templates/skills/frameworks/nextjs/SKILL.md +137 -137
  330. package/templates/skills/frameworks/nuxt/SKILL.md +50 -50
  331. package/templates/skills/frameworks/rails/SKILL.md +76 -76
  332. package/templates/skills/frameworks/react/SKILL.md +48 -48
  333. package/templates/skills/frameworks/react-native/SKILL.md +57 -57
  334. package/templates/skills/frameworks/spring/SKILL.md +49 -49
  335. package/templates/skills/frameworks/symfony/SKILL.md +46 -46
  336. package/templates/skills/frameworks/vue/SKILL.md +46 -46
  337. package/templates/skills/frameworks/zend/SKILL.md +45 -45
  338. package/templates/skills/ides/copilot/SKILL.md +47 -47
  339. package/templates/skills/ides/cursor/SKILL.md +53 -53
  340. package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
  341. package/templates/skills/ides/replit/SKILL.md +46 -46
  342. package/templates/skills/ides/tabnine/SKILL.md +39 -39
  343. package/templates/skills/ides/vscode/SKILL.md +50 -50
  344. package/templates/skills/ides/windsurf/SKILL.md +46 -46
  345. package/templates/skills/ides/zed/SKILL.md +42 -42
  346. package/templates/skills/languages/c/SKILL.md +343 -343
  347. package/templates/skills/languages/cpp/SKILL.md +753 -753
  348. package/templates/skills/languages/csharp/SKILL.md +427 -427
  349. package/templates/skills/languages/elixir/SKILL.md +464 -464
  350. package/templates/skills/languages/erlang/SKILL.md +371 -371
  351. package/templates/skills/languages/go/SKILL.md +655 -655
  352. package/templates/skills/languages/haskell/SKILL.md +187 -187
  353. package/templates/skills/languages/java/SKILL.md +617 -617
  354. package/templates/skills/languages/javascript/SKILL.md +641 -641
  355. package/templates/skills/languages/julia/SKILL.md +107 -107
  356. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  357. package/templates/skills/languages/lisp/SKILL.md +110 -110
  358. package/templates/skills/languages/lua/SKILL.md +84 -84
  359. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  360. package/templates/skills/languages/php/SKILL.md +426 -426
  361. package/templates/skills/languages/python/SKILL.md +692 -692
  362. package/templates/skills/languages/ruby/SKILL.md +431 -431
  363. package/templates/skills/languages/rust/SKILL.md +487 -487
  364. package/templates/skills/languages/sas/SKILL.md +83 -83
  365. package/templates/skills/languages/scala/SKILL.md +358 -358
  366. package/templates/skills/languages/solidity/SKILL.md +590 -590
  367. package/templates/skills/languages/sql/SKILL.md +147 -147
  368. package/templates/skills/languages/swift/SKILL.md +476 -476
  369. package/templates/skills/languages/typescript/SKILL.md +302 -302
  370. package/templates/skills/languages/zig/SKILL.md +275 -275
  371. package/templates/skills/modules/atlassian/SKILL.md +265 -265
  372. package/templates/skills/modules/context7/SKILL.md +64 -64
  373. package/templates/skills/modules/figma/SKILL.md +277 -277
  374. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  375. package/templates/skills/modules/grafana/SKILL.md +338 -338
  376. package/templates/skills/modules/memory/SKILL.md +73 -73
  377. package/templates/skills/modules/notion/SKILL.md +257 -257
  378. package/templates/skills/modules/playwright/SKILL.md +100 -100
  379. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  380. package/templates/skills/modules/serena/SKILL.md +347 -347
  381. package/templates/skills/modules/supabase/SKILL.md +233 -233
  382. package/templates/skills/modules/synap/SKILL.md +79 -79
  383. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  384. package/templates/skills/services/azure-blob/SKILL.md +194 -194
  385. package/templates/skills/services/cassandra/SKILL.md +249 -249
  386. package/templates/skills/services/dynamodb/SKILL.md +318 -318
  387. package/templates/skills/services/elasticsearch/SKILL.md +357 -357
  388. package/templates/skills/services/gcs/SKILL.md +188 -188
  389. package/templates/skills/services/influxdb/SKILL.md +275 -275
  390. package/templates/skills/services/kafka/SKILL.md +351 -351
  391. package/templates/skills/services/mariadb/SKILL.md +193 -193
  392. package/templates/skills/services/memcached/SKILL.md +252 -252
  393. package/templates/skills/services/minio/SKILL.md +211 -211
  394. package/templates/skills/services/mongodb/SKILL.md +278 -278
  395. package/templates/skills/services/mysql/SKILL.md +368 -368
  396. package/templates/skills/services/neo4j/SKILL.md +257 -257
  397. package/templates/skills/services/oracle/SKILL.md +300 -300
  398. package/templates/skills/services/postgresql/SKILL.md +336 -336
  399. package/templates/skills/services/rabbitmq/SKILL.md +296 -296
  400. package/templates/skills/services/redis/SKILL.md +302 -302
  401. package/templates/skills/services/s3/SKILL.md +308 -308
  402. package/templates/skills/services/sqlite/SKILL.md +304 -304
  403. package/templates/skills/services/sqlserver/SKILL.md +304 -304
  404. package/templates/skills/workflows/ralph/SKILL.md +309 -309
  405. package/templates/skills/workflows/ralph/install.sh +87 -87
  406. package/templates/skills/workflows/ralph/manifest.json +158 -158
@@ -1,302 +1,302 @@
1
- ---
2
- name: "Redis"
3
- description: "Use Redis for high-performance caching, session storage, pub/sub messaging, and real-time features."
4
- version: "1.0.0"
5
- category: "services"
6
- author: "Rulebook"
7
- tags: ["services", "caching"]
8
- dependencies: []
9
- conflicts: []
10
- ---
11
- <!-- REDIS:START -->
12
- # Redis Cache Instructions
13
-
14
- **CRITICAL**: Use Redis for high-performance caching, session storage, pub/sub messaging, and real-time features.
15
-
16
- ## Core Features
17
-
18
- ### Connection
19
- ```typescript
20
- // Using redis (Node.js)
21
- import { createClient } from 'redis'
22
-
23
- const client = createClient({
24
- url: process.env.REDIS_URL || 'redis://localhost:6379',
25
- socket: {
26
- reconnectStrategy: (retries) => {
27
- if (retries > 10) {
28
- return new Error('Too many reconnection attempts')
29
- }
30
- return Math.min(retries * 100, 3000)
31
- },
32
- },
33
- })
34
-
35
- await client.connect()
36
-
37
- // Using ioredis
38
- import Redis from 'ioredis'
39
-
40
- const redis = new Redis({
41
- host: process.env.REDIS_HOST || 'localhost',
42
- port: parseInt(process.env.REDIS_PORT || '6379'),
43
- password: process.env.REDIS_PASSWORD,
44
- retryStrategy: (times) => Math.min(times * 50, 2000),
45
- maxRetriesPerRequest: 3,
46
- })
47
- ```
48
-
49
- ### Basic Operations
50
- ```typescript
51
- // String operations
52
- await client.set('user:1', JSON.stringify({ name: 'John', email: 'john@example.com' }))
53
- await client.set('user:1', 'value', { EX: 3600 }) // Expire in 1 hour
54
- const user = await client.get('user:1')
55
- await client.del('user:1')
56
-
57
- // Multiple operations
58
- await client.mSet({
59
- 'key1': 'value1',
60
- 'key2': 'value2',
61
- })
62
- const values = await client.mGet(['key1', 'key2'])
63
-
64
- // Increment/Decrement
65
- await client.incr('counter')
66
- await client.incrBy('counter', 5)
67
- await client.decr('counter')
68
- ```
69
-
70
- ### Data Structures
71
- ```typescript
72
- // Lists
73
- await client.lPush('tasks', 'task1', 'task2')
74
- await client.rPush('tasks', 'task3')
75
- const task = await client.lPop('tasks')
76
- const tasks = await client.lRange('tasks', 0, -1)
77
-
78
- // Sets
79
- await client.sAdd('tags', 'javascript', 'typescript', 'nodejs')
80
- const tags = await client.sMembers('tags')
81
- const exists = await client.sIsMember('tags', 'javascript')
82
- await client.sRem('tags', 'javascript')
83
-
84
- // Sorted Sets
85
- await client.zAdd('leaderboard', {
86
- score: 100,
87
- value: 'player1',
88
- })
89
- const topPlayers = await client.zRange('leaderboard', 0, 9, { REV: true })
90
-
91
- // Hashes
92
- await client.hSet('user:1', {
93
- name: 'John',
94
- email: 'john@example.com',
95
- age: '30',
96
- })
97
- const user = await client.hGetAll('user:1')
98
- await client.hIncrBy('user:1', 'age', 1)
99
- ```
100
-
101
- ### Advanced Features
102
- ```typescript
103
- // Pub/Sub
104
- const publisher = client.duplicate()
105
- await publisher.connect()
106
-
107
- const subscriber = client.duplicate()
108
- await subscriber.connect()
109
-
110
- await subscriber.subscribe('notifications', (message) => {
111
- console.log('Received:', message)
112
- })
113
-
114
- await publisher.publish('notifications', JSON.stringify({ type: 'alert', message: 'Hello' }))
115
-
116
- // Streams
117
- await client.xAdd('events', '*', {
118
- type: 'user_login',
119
- userId: '123',
120
- timestamp: Date.now().toString(),
121
- })
122
-
123
- const events = await client.xRead({
124
- key: 'events',
125
- id: '0',
126
- }, {
127
- COUNT: 10,
128
- BLOCK: 1000,
129
- })
130
-
131
- // Transactions
132
- const multi = client.multi()
133
- multi.set('key1', 'value1')
134
- multi.set('key2', 'value2')
135
- multi.incr('counter')
136
- await multi.exec()
137
- ```
138
-
139
- ## Common Patterns
140
-
141
- ### Caching
142
- ```typescript
143
- async function getCachedUser(userId: string) {
144
- const cached = await client.get(`user:${userId}`)
145
- if (cached) {
146
- return JSON.parse(cached)
147
- }
148
-
149
- const user = await fetchUserFromDatabase(userId)
150
- await client.set(`user:${userId}`, JSON.stringify(user), { EX: 3600 })
151
- return user
152
- }
153
-
154
- // Cache with tags (for invalidation)
155
- async function cacheWithTags(key: string, value: any, tags: string[], ttl: number) {
156
- await client.set(key, JSON.stringify(value), { EX: ttl })
157
- for (const tag of tags) {
158
- await client.sAdd(`tag:${tag}`, key)
159
- }
160
- }
161
-
162
- async function invalidateByTag(tag: string) {
163
- const keys = await client.sMembers(`tag:${tag}`)
164
- if (keys.length > 0) {
165
- await client.del(...keys)
166
- }
167
- await client.del(`tag:${tag}`)
168
- }
169
- ```
170
-
171
- ### Rate Limiting
172
- ```typescript
173
- async function checkRateLimit(userId: string, limit: number, window: number): Promise<boolean> {
174
- const key = `ratelimit:${userId}`
175
- const current = await client.incr(key)
176
-
177
- if (current === 1) {
178
- await client.expire(key, window)
179
- }
180
-
181
- return current <= limit
182
- }
183
- ```
184
-
185
- ### Session Storage
186
- ```typescript
187
- async function setSession(sessionId: string, data: any, ttl: number) {
188
- await client.set(`session:${sessionId}`, JSON.stringify(data), { EX: ttl })
189
- }
190
-
191
- async function getSession(sessionId: string) {
192
- const data = await client.get(`session:${sessionId}`)
193
- return data ? JSON.parse(data) : null
194
- }
195
-
196
- async function deleteSession(sessionId: string) {
197
- await client.del(`session:${sessionId}`)
198
- }
199
- ```
200
-
201
- ### Distributed Locks
202
- ```typescript
203
- async function acquireLock(key: string, ttl: number): Promise<boolean> {
204
- const result = await client.set(key, 'locked', {
205
- EX: ttl,
206
- NX: true, // Only set if not exists
207
- })
208
- return result === 'OK'
209
- }
210
-
211
- async function releaseLock(key: string) {
212
- await client.del(key)
213
- }
214
- ```
215
-
216
- ## Best Practices
217
-
218
- ✅ **DO:**
219
- - Use connection pooling
220
- - Set appropriate TTL for cached data
221
- - Use pipelining for multiple operations
222
- - Use transactions (MULTI/EXEC) for atomic operations
223
- - Monitor memory usage
224
- - Use appropriate data structures (hash for objects, set for unique values)
225
- - Implement cache invalidation strategies
226
- - Use Redis Cluster for high availability
227
- - Enable persistence (RDB or AOF) for production
228
- - Use Redis Sentinel for failover
229
-
230
- ❌ **DON'T:**
231
- - Store large values (> 100KB, use compression or external storage)
232
- - Use Redis as primary database (it's a cache)
233
- - Skip error handling
234
- - Ignore memory limits
235
- - Hardcode connection strings
236
- - Use KEYS command in production (use SCAN instead)
237
- - Store sensitive data without encryption
238
- - Skip connection retry logic
239
- - Ignore eviction policies
240
- - Use blocking operations without timeouts
241
-
242
- ## Configuration
243
-
244
- ### Environment Variables
245
- ```bash
246
- REDIS_URL=redis://localhost:6379
247
- REDIS_URL=redis://:password@host:6379
248
- REDIS_URL=rediss://host:6380 # SSL
249
- REDIS_HOST=localhost
250
- REDIS_PORT=6379
251
- REDIS_PASSWORD=securepassword
252
- ```
253
-
254
- ### Docker Compose
255
- ```yaml
256
- services:
257
- redis:
258
- image: redis:7-alpine
259
- ports:
260
- - "6379:6379"
261
- command: redis-server --requirepass securepassword --appendonly yes
262
- volumes:
263
- - redis_data:/data
264
- healthcheck:
265
- test: ["CMD", "redis-cli", "ping"]
266
- interval: 10s
267
- timeout: 5s
268
- retries: 5
269
-
270
- volumes:
271
- redis_data:
272
- ```
273
-
274
- ## Integration with Development
275
-
276
- ### Testing
277
- ```typescript
278
- // Use test Redis instance
279
- const testClient = createClient({
280
- url: 'redis://localhost:6380', // Different port for tests
281
- })
282
-
283
- // Clean up after tests
284
- afterEach(async () => {
285
- await testClient.flushDb()
286
- })
287
- ```
288
-
289
- ### Health Checks
290
- ```typescript
291
- async function checkRedisHealth(): Promise<boolean> {
292
- try {
293
- await client.ping()
294
- return true
295
- } catch {
296
- return false
297
- }
298
- }
299
- ```
300
-
301
- <!-- REDIS:END -->
302
-
1
+ ---
2
+ name: "Redis"
3
+ description: "Use Redis for high-performance caching, session storage, pub/sub messaging, and real-time features."
4
+ version: "1.0.0"
5
+ category: "services"
6
+ author: "Rulebook"
7
+ tags: ["services", "caching"]
8
+ dependencies: []
9
+ conflicts: []
10
+ ---
11
+ <!-- REDIS:START -->
12
+ # Redis Cache Instructions
13
+
14
+ **CRITICAL**: Use Redis for high-performance caching, session storage, pub/sub messaging, and real-time features.
15
+
16
+ ## Core Features
17
+
18
+ ### Connection
19
+ ```typescript
20
+ // Using redis (Node.js)
21
+ import { createClient } from 'redis'
22
+
23
+ const client = createClient({
24
+ url: process.env.REDIS_URL || 'redis://localhost:6379',
25
+ socket: {
26
+ reconnectStrategy: (retries) => {
27
+ if (retries > 10) {
28
+ return new Error('Too many reconnection attempts')
29
+ }
30
+ return Math.min(retries * 100, 3000)
31
+ },
32
+ },
33
+ })
34
+
35
+ await client.connect()
36
+
37
+ // Using ioredis
38
+ import Redis from 'ioredis'
39
+
40
+ const redis = new Redis({
41
+ host: process.env.REDIS_HOST || 'localhost',
42
+ port: parseInt(process.env.REDIS_PORT || '6379'),
43
+ password: process.env.REDIS_PASSWORD,
44
+ retryStrategy: (times) => Math.min(times * 50, 2000),
45
+ maxRetriesPerRequest: 3,
46
+ })
47
+ ```
48
+
49
+ ### Basic Operations
50
+ ```typescript
51
+ // String operations
52
+ await client.set('user:1', JSON.stringify({ name: 'John', email: 'john@example.com' }))
53
+ await client.set('user:1', 'value', { EX: 3600 }) // Expire in 1 hour
54
+ const user = await client.get('user:1')
55
+ await client.del('user:1')
56
+
57
+ // Multiple operations
58
+ await client.mSet({
59
+ 'key1': 'value1',
60
+ 'key2': 'value2',
61
+ })
62
+ const values = await client.mGet(['key1', 'key2'])
63
+
64
+ // Increment/Decrement
65
+ await client.incr('counter')
66
+ await client.incrBy('counter', 5)
67
+ await client.decr('counter')
68
+ ```
69
+
70
+ ### Data Structures
71
+ ```typescript
72
+ // Lists
73
+ await client.lPush('tasks', 'task1', 'task2')
74
+ await client.rPush('tasks', 'task3')
75
+ const task = await client.lPop('tasks')
76
+ const tasks = await client.lRange('tasks', 0, -1)
77
+
78
+ // Sets
79
+ await client.sAdd('tags', 'javascript', 'typescript', 'nodejs')
80
+ const tags = await client.sMembers('tags')
81
+ const exists = await client.sIsMember('tags', 'javascript')
82
+ await client.sRem('tags', 'javascript')
83
+
84
+ // Sorted Sets
85
+ await client.zAdd('leaderboard', {
86
+ score: 100,
87
+ value: 'player1',
88
+ })
89
+ const topPlayers = await client.zRange('leaderboard', 0, 9, { REV: true })
90
+
91
+ // Hashes
92
+ await client.hSet('user:1', {
93
+ name: 'John',
94
+ email: 'john@example.com',
95
+ age: '30',
96
+ })
97
+ const user = await client.hGetAll('user:1')
98
+ await client.hIncrBy('user:1', 'age', 1)
99
+ ```
100
+
101
+ ### Advanced Features
102
+ ```typescript
103
+ // Pub/Sub
104
+ const publisher = client.duplicate()
105
+ await publisher.connect()
106
+
107
+ const subscriber = client.duplicate()
108
+ await subscriber.connect()
109
+
110
+ await subscriber.subscribe('notifications', (message) => {
111
+ console.log('Received:', message)
112
+ })
113
+
114
+ await publisher.publish('notifications', JSON.stringify({ type: 'alert', message: 'Hello' }))
115
+
116
+ // Streams
117
+ await client.xAdd('events', '*', {
118
+ type: 'user_login',
119
+ userId: '123',
120
+ timestamp: Date.now().toString(),
121
+ })
122
+
123
+ const events = await client.xRead({
124
+ key: 'events',
125
+ id: '0',
126
+ }, {
127
+ COUNT: 10,
128
+ BLOCK: 1000,
129
+ })
130
+
131
+ // Transactions
132
+ const multi = client.multi()
133
+ multi.set('key1', 'value1')
134
+ multi.set('key2', 'value2')
135
+ multi.incr('counter')
136
+ await multi.exec()
137
+ ```
138
+
139
+ ## Common Patterns
140
+
141
+ ### Caching
142
+ ```typescript
143
+ async function getCachedUser(userId: string) {
144
+ const cached = await client.get(`user:${userId}`)
145
+ if (cached) {
146
+ return JSON.parse(cached)
147
+ }
148
+
149
+ const user = await fetchUserFromDatabase(userId)
150
+ await client.set(`user:${userId}`, JSON.stringify(user), { EX: 3600 })
151
+ return user
152
+ }
153
+
154
+ // Cache with tags (for invalidation)
155
+ async function cacheWithTags(key: string, value: any, tags: string[], ttl: number) {
156
+ await client.set(key, JSON.stringify(value), { EX: ttl })
157
+ for (const tag of tags) {
158
+ await client.sAdd(`tag:${tag}`, key)
159
+ }
160
+ }
161
+
162
+ async function invalidateByTag(tag: string) {
163
+ const keys = await client.sMembers(`tag:${tag}`)
164
+ if (keys.length > 0) {
165
+ await client.del(...keys)
166
+ }
167
+ await client.del(`tag:${tag}`)
168
+ }
169
+ ```
170
+
171
+ ### Rate Limiting
172
+ ```typescript
173
+ async function checkRateLimit(userId: string, limit: number, window: number): Promise<boolean> {
174
+ const key = `ratelimit:${userId}`
175
+ const current = await client.incr(key)
176
+
177
+ if (current === 1) {
178
+ await client.expire(key, window)
179
+ }
180
+
181
+ return current <= limit
182
+ }
183
+ ```
184
+
185
+ ### Session Storage
186
+ ```typescript
187
+ async function setSession(sessionId: string, data: any, ttl: number) {
188
+ await client.set(`session:${sessionId}`, JSON.stringify(data), { EX: ttl })
189
+ }
190
+
191
+ async function getSession(sessionId: string) {
192
+ const data = await client.get(`session:${sessionId}`)
193
+ return data ? JSON.parse(data) : null
194
+ }
195
+
196
+ async function deleteSession(sessionId: string) {
197
+ await client.del(`session:${sessionId}`)
198
+ }
199
+ ```
200
+
201
+ ### Distributed Locks
202
+ ```typescript
203
+ async function acquireLock(key: string, ttl: number): Promise<boolean> {
204
+ const result = await client.set(key, 'locked', {
205
+ EX: ttl,
206
+ NX: true, // Only set if not exists
207
+ })
208
+ return result === 'OK'
209
+ }
210
+
211
+ async function releaseLock(key: string) {
212
+ await client.del(key)
213
+ }
214
+ ```
215
+
216
+ ## Best Practices
217
+
218
+ ✅ **DO:**
219
+ - Use connection pooling
220
+ - Set appropriate TTL for cached data
221
+ - Use pipelining for multiple operations
222
+ - Use transactions (MULTI/EXEC) for atomic operations
223
+ - Monitor memory usage
224
+ - Use appropriate data structures (hash for objects, set for unique values)
225
+ - Implement cache invalidation strategies
226
+ - Use Redis Cluster for high availability
227
+ - Enable persistence (RDB or AOF) for production
228
+ - Use Redis Sentinel for failover
229
+
230
+ ❌ **DON'T:**
231
+ - Store large values (> 100KB, use compression or external storage)
232
+ - Use Redis as primary database (it's a cache)
233
+ - Skip error handling
234
+ - Ignore memory limits
235
+ - Hardcode connection strings
236
+ - Use KEYS command in production (use SCAN instead)
237
+ - Store sensitive data without encryption
238
+ - Skip connection retry logic
239
+ - Ignore eviction policies
240
+ - Use blocking operations without timeouts
241
+
242
+ ## Configuration
243
+
244
+ ### Environment Variables
245
+ ```bash
246
+ REDIS_URL=redis://localhost:6379
247
+ REDIS_URL=redis://:password@host:6379
248
+ REDIS_URL=rediss://host:6380 # SSL
249
+ REDIS_HOST=localhost
250
+ REDIS_PORT=6379
251
+ REDIS_PASSWORD=securepassword
252
+ ```
253
+
254
+ ### Docker Compose
255
+ ```yaml
256
+ services:
257
+ redis:
258
+ image: redis:7-alpine
259
+ ports:
260
+ - "6379:6379"
261
+ command: redis-server --requirepass securepassword --appendonly yes
262
+ volumes:
263
+ - redis_data:/data
264
+ healthcheck:
265
+ test: ["CMD", "redis-cli", "ping"]
266
+ interval: 10s
267
+ timeout: 5s
268
+ retries: 5
269
+
270
+ volumes:
271
+ redis_data:
272
+ ```
273
+
274
+ ## Integration with Development
275
+
276
+ ### Testing
277
+ ```typescript
278
+ // Use test Redis instance
279
+ const testClient = createClient({
280
+ url: 'redis://localhost:6380', // Different port for tests
281
+ })
282
+
283
+ // Clean up after tests
284
+ afterEach(async () => {
285
+ await testClient.flushDb()
286
+ })
287
+ ```
288
+
289
+ ### Health Checks
290
+ ```typescript
291
+ async function checkRedisHealth(): Promise<boolean> {
292
+ try {
293
+ await client.ping()
294
+ return true
295
+ } catch {
296
+ return false
297
+ }
298
+ }
299
+ ```
300
+
301
+ <!-- REDIS:END -->
302
+