@hivehub/rulebook 5.4.1 → 5.5.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 (418) hide show
  1. package/.claude/commands/analysis.md +35 -35
  2. package/.claude/commands/continue.md +33 -33
  3. package/.claude/commands/ralph-config.md +112 -112
  4. package/.claude/commands/ralph-history.md +110 -110
  5. package/.claude/commands/ralph-init.md +72 -72
  6. package/.claude/commands/ralph-pause-resume.md +105 -105
  7. package/.claude/commands/ralph-run.md +101 -101
  8. package/.claude/commands/ralph-status.md +76 -76
  9. package/.claude/commands/rulebook-decision-create.md +55 -55
  10. package/.claude/commands/rulebook-decision-list.md +15 -15
  11. package/.claude/commands/rulebook-knowledge-add.md +41 -41
  12. package/.claude/commands/rulebook-knowledge-list.md +15 -15
  13. package/.claude/commands/rulebook-learn-capture.md +48 -48
  14. package/.claude/commands/rulebook-learn-list.md +13 -13
  15. package/.claude/commands/rulebook-memory-save.md +48 -48
  16. package/.claude/commands/rulebook-memory-search.md +47 -47
  17. package/.claude/commands/rulebook-task-apply.md +67 -67
  18. package/.claude/commands/rulebook-task-archive.md +94 -94
  19. package/.claude/commands/rulebook-task-create.md +93 -93
  20. package/.claude/commands/rulebook-task-list.md +42 -42
  21. package/.claude/commands/rulebook-task-show.md +52 -52
  22. package/.claude/commands/rulebook-task-validate.md +53 -53
  23. package/.claude-plugin/marketplace.json +28 -28
  24. package/.claude-plugin/plugin.json +8 -8
  25. package/README.md +394 -393
  26. package/dist/core/generator.d.ts +1 -1
  27. package/dist/core/generator.d.ts.map +1 -1
  28. package/dist/core/generator.js +1 -0
  29. package/dist/core/generator.js.map +1 -1
  30. package/dist/hooks/terse-activate.d.ts +59 -0
  31. package/dist/hooks/terse-activate.d.ts.map +1 -0
  32. package/dist/hooks/terse-activate.js +149 -0
  33. package/dist/hooks/terse-activate.js.map +1 -0
  34. package/dist/hooks/terse-config.d.ts +51 -0
  35. package/dist/hooks/terse-config.d.ts.map +1 -0
  36. package/dist/hooks/terse-config.js +130 -0
  37. package/dist/hooks/terse-config.js.map +1 -0
  38. package/dist/hooks/terse-mode-tracker.d.ts +78 -0
  39. package/dist/hooks/terse-mode-tracker.d.ts.map +1 -0
  40. package/dist/hooks/terse-mode-tracker.js +213 -0
  41. package/dist/hooks/terse-mode-tracker.js.map +1 -0
  42. package/dist/index.js +0 -0
  43. package/dist/mcp/rulebook-server.js +0 -0
  44. package/package.json +21 -22
  45. package/templates/agents/accessibility-reviewer.md +43 -43
  46. package/templates/agents/api-designer.md +42 -42
  47. package/templates/agents/architect.md +51 -51
  48. package/templates/agents/build-engineer.md +36 -36
  49. package/templates/agents/code-reviewer.md +47 -47
  50. package/templates/agents/compiler/codegen-debugger.md +34 -34
  51. package/templates/agents/compiler/stdlib-engineer.md +28 -28
  52. package/templates/agents/compiler/test-coverage-guardian.md +31 -31
  53. package/templates/agents/context-intelligence.md +52 -52
  54. package/templates/agents/database-architect.md +41 -41
  55. package/templates/agents/devops-engineer.md +42 -42
  56. package/templates/agents/docs-writer.md +38 -38
  57. package/templates/agents/game-engine/cpp-core-expert.md +35 -35
  58. package/templates/agents/game-engine/render-engineer.md +22 -22
  59. package/templates/agents/game-engine/shader-engineer.md +38 -38
  60. package/templates/agents/game-engine/systems-integration.md +43 -43
  61. package/templates/agents/generic/code-reviewer.md +41 -41
  62. package/templates/agents/generic/docs-writer.md +25 -25
  63. package/templates/agents/generic/project-manager.md +36 -36
  64. package/templates/agents/generic/researcher.md +34 -34
  65. package/templates/agents/generic/test-engineer.md +41 -41
  66. package/templates/agents/i18n-engineer.md +42 -42
  67. package/templates/agents/implementer.md +42 -42
  68. package/templates/agents/migration-engineer.md +42 -42
  69. package/templates/agents/mobile/platform-specialist.md +22 -22
  70. package/templates/agents/mobile/ui-engineer.md +22 -22
  71. package/templates/agents/performance-engineer.md +49 -49
  72. package/templates/agents/refactoring-agent.md +41 -41
  73. package/templates/agents/researcher.md +38 -38
  74. package/templates/agents/security-reviewer.md +40 -40
  75. package/templates/agents/team-lead.md +37 -37
  76. package/templates/agents/tester.md +48 -48
  77. package/templates/agents/ux-reviewer.md +43 -43
  78. package/templates/agents/web-app/api-designer.md +22 -22
  79. package/templates/agents/web-app/backend-engineer.md +30 -30
  80. package/templates/agents/web-app/database-engineer.md +22 -22
  81. package/templates/agents/web-app/frontend-engineer.md +29 -29
  82. package/templates/agents/web-app/security-reviewer.md +32 -32
  83. package/templates/ci/rulebook-review.yml +26 -26
  84. package/templates/cli/AIDER.md +49 -49
  85. package/templates/cli/AMAZON_Q.md +25 -25
  86. package/templates/cli/AUGGIE.md +32 -32
  87. package/templates/cli/CLAUDE.md +117 -117
  88. package/templates/cli/CLINE.md +99 -99
  89. package/templates/cli/CODEBUDDY.md +20 -20
  90. package/templates/cli/CODEIUM.md +20 -20
  91. package/templates/cli/CODEX.md +21 -21
  92. package/templates/cli/CONTINUE.md +34 -34
  93. package/templates/cli/CURSOR_CLI.md +62 -62
  94. package/templates/cli/FACTORY.md +18 -18
  95. package/templates/cli/GEMINI.md +35 -35
  96. package/templates/cli/KILOCODE.md +18 -18
  97. package/templates/cli/OPENCODE.md +18 -18
  98. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  99. package/templates/commands/rulebook-decision-create.md +55 -55
  100. package/templates/commands/rulebook-decision-list.md +15 -15
  101. package/templates/commands/rulebook-knowledge-add.md +41 -41
  102. package/templates/commands/rulebook-knowledge-list.md +15 -15
  103. package/templates/commands/rulebook-learn-capture.md +48 -48
  104. package/templates/commands/rulebook-learn-list.md +13 -13
  105. package/templates/commands/rulebook-memory-save.md +48 -48
  106. package/templates/commands/rulebook-memory-search.md +47 -47
  107. package/templates/commands/rulebook-task-apply.md +67 -67
  108. package/templates/commands/rulebook-task-archive.md +94 -94
  109. package/templates/commands/rulebook-task-create.md +93 -93
  110. package/templates/commands/rulebook-task-list.md +42 -42
  111. package/templates/commands/rulebook-task-show.md +52 -52
  112. package/templates/commands/rulebook-task-validate.md +53 -53
  113. package/templates/compact-context/_default.md +23 -23
  114. package/templates/compact-context/cpp.md +26 -26
  115. package/templates/compact-context/go.md +26 -26
  116. package/templates/compact-context/python.md +26 -26
  117. package/templates/compact-context/rust.md +28 -28
  118. package/templates/compact-context/typescript.md +29 -29
  119. package/templates/core/AGENTS_LEAN.md +9 -0
  120. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  121. package/templates/core/AGENT_AUTOMATION.md +296 -296
  122. package/templates/core/CLAUDE_MD_v2.md +80 -71
  123. package/templates/core/DAG.md +304 -304
  124. package/templates/core/DECISIONS.md +38 -38
  125. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  126. package/templates/core/KNOWLEDGE.md +49 -49
  127. package/templates/core/MULTI_AGENT.md +74 -74
  128. package/templates/core/PLANS.md +28 -28
  129. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  130. package/templates/core/RALPH.md +471 -471
  131. package/templates/core/RULEBOOK.md +1947 -1947
  132. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  133. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  134. package/templates/frameworks/ANGULAR.md +36 -36
  135. package/templates/frameworks/DJANGO.md +83 -83
  136. package/templates/frameworks/ELECTRON.md +147 -147
  137. package/templates/frameworks/FLASK.md +38 -38
  138. package/templates/frameworks/FLUTTER.md +55 -55
  139. package/templates/frameworks/JQUERY.md +32 -32
  140. package/templates/frameworks/LARAVEL.md +38 -38
  141. package/templates/frameworks/NESTJS.md +43 -43
  142. package/templates/frameworks/NEXTJS.md +127 -127
  143. package/templates/frameworks/NUXT.md +40 -40
  144. package/templates/frameworks/RAILS.md +66 -66
  145. package/templates/frameworks/REACT.md +38 -38
  146. package/templates/frameworks/REACT_NATIVE.md +47 -47
  147. package/templates/frameworks/SPRING.md +39 -39
  148. package/templates/frameworks/SYMFONY.md +36 -36
  149. package/templates/frameworks/VUE.md +36 -36
  150. package/templates/frameworks/ZEND.md +35 -35
  151. package/templates/git/CI_CD_PATTERNS.md +661 -661
  152. package/templates/git/GITHUB_ACTIONS.md +728 -728
  153. package/templates/git/GITLAB_CI.md +730 -730
  154. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  155. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  156. package/templates/hooks/COMMIT_MSG.md +530 -530
  157. package/templates/hooks/POST_CHECKOUT.md +546 -546
  158. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  159. package/templates/hooks/PRE_COMMIT.md +414 -414
  160. package/templates/hooks/PRE_PUSH.md +601 -601
  161. package/templates/hooks/check-context-and-handoff.ps1 +58 -58
  162. package/templates/hooks/check-context-and-handoff.sh +76 -76
  163. package/templates/hooks/enforce-team-for-background-agents.ps1 +63 -63
  164. package/templates/hooks/enforce-team-for-background-agents.sh +55 -55
  165. package/templates/hooks/on-compact-reinject.sh +34 -34
  166. package/templates/hooks/resume-from-handoff.ps1 +40 -40
  167. package/templates/hooks/resume-from-handoff.sh +61 -61
  168. package/templates/hooks/terse-activate.ps1 +143 -143
  169. package/templates/hooks/terse-activate.sh +197 -197
  170. package/templates/hooks/terse-mode-tracker.ps1 +153 -153
  171. package/templates/hooks/terse-mode-tracker.sh +187 -187
  172. package/templates/ides/CONTINUE_RULES.md +16 -16
  173. package/templates/ides/COPILOT.md +37 -37
  174. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
  175. package/templates/ides/CURSOR.md +43 -43
  176. package/templates/ides/GEMINI_RULES.md +17 -17
  177. package/templates/ides/JETBRAINS_AI.md +35 -35
  178. package/templates/ides/REPLIT.md +36 -36
  179. package/templates/ides/TABNINE.md +29 -29
  180. package/templates/ides/VSCODE.md +40 -40
  181. package/templates/ides/WINDSURF.md +36 -36
  182. package/templates/ides/WINDSURF_RULES.md +14 -14
  183. package/templates/ides/ZED.md +32 -32
  184. package/templates/ides/cursor-mdc/go.mdc +24 -24
  185. package/templates/ides/cursor-mdc/python.mdc +24 -24
  186. package/templates/ides/cursor-mdc/quality.mdc +25 -25
  187. package/templates/ides/cursor-mdc/ralph.mdc +39 -39
  188. package/templates/ides/cursor-mdc/rulebook.mdc +38 -38
  189. package/templates/ides/cursor-mdc/rust.mdc +24 -24
  190. package/templates/ides/cursor-mdc/typescript.mdc +25 -25
  191. package/templates/languages/C.md +333 -333
  192. package/templates/languages/CPP.md +743 -743
  193. package/templates/languages/CSHARP.md +417 -417
  194. package/templates/languages/ELIXIR.md +454 -454
  195. package/templates/languages/ERLANG.md +361 -361
  196. package/templates/languages/GO.md +645 -645
  197. package/templates/languages/HASKELL.md +177 -177
  198. package/templates/languages/JAVA.md +607 -607
  199. package/templates/languages/JAVASCRIPT.md +631 -631
  200. package/templates/languages/JULIA.md +97 -97
  201. package/templates/languages/KOTLIN.md +511 -511
  202. package/templates/languages/LISP.md +100 -100
  203. package/templates/languages/LUA.md +74 -74
  204. package/templates/languages/OBJECTIVEC.md +90 -90
  205. package/templates/languages/PHP.md +416 -416
  206. package/templates/languages/PYTHON.md +682 -682
  207. package/templates/languages/RUBY.md +421 -421
  208. package/templates/languages/RUST.md +477 -477
  209. package/templates/languages/SAS.md +73 -73
  210. package/templates/languages/SCALA.md +348 -348
  211. package/templates/languages/SOLIDITY.md +580 -580
  212. package/templates/languages/SQL.md +137 -137
  213. package/templates/languages/SWIFT.md +466 -466
  214. package/templates/languages/TYPESCRIPT.md +591 -591
  215. package/templates/languages/ZIG.md +265 -265
  216. package/templates/modules/ATLASSIAN.md +255 -255
  217. package/templates/modules/CONTEXT7.md +54 -54
  218. package/templates/modules/FIGMA.md +267 -267
  219. package/templates/modules/GITHUB_MCP.md +64 -64
  220. package/templates/modules/GRAFANA.md +328 -328
  221. package/templates/modules/MEMORY.md +126 -126
  222. package/templates/modules/NOTION.md +247 -247
  223. package/templates/modules/PLAYWRIGHT.md +90 -90
  224. package/templates/modules/RULEBOOK_MCP.md +208 -208
  225. package/templates/modules/SERENA.md +337 -337
  226. package/templates/modules/SUPABASE.md +223 -223
  227. package/templates/modules/SYNAP.md +69 -69
  228. package/templates/modules/VECTORIZER.md +63 -63
  229. package/templates/modules/sequential-thinking.md +42 -42
  230. package/templates/ralph/ralph-history.bat +4 -4
  231. package/templates/ralph/ralph-history.sh +5 -5
  232. package/templates/ralph/ralph-init.bat +5 -5
  233. package/templates/ralph/ralph-init.sh +5 -5
  234. package/templates/ralph/ralph-pause.bat +5 -5
  235. package/templates/ralph/ralph-pause.sh +5 -5
  236. package/templates/ralph/ralph-run.bat +5 -5
  237. package/templates/ralph/ralph-run.sh +5 -5
  238. package/templates/ralph/ralph-status.bat +4 -4
  239. package/templates/ralph/ralph-status.sh +5 -5
  240. package/templates/rules/consult-analysis-before-implementing.md +23 -23
  241. package/templates/rules/cpp.md +46 -46
  242. package/templates/rules/csharp.md +44 -44
  243. package/templates/rules/diagnostic-first.md +39 -39
  244. package/templates/rules/fail-twice-escalate.md +46 -46
  245. package/templates/rules/follow-task-sequence.md +36 -36
  246. package/templates/rules/git-safety.md +29 -29
  247. package/templates/rules/go.md +40 -40
  248. package/templates/rules/incremental-implementation.md +56 -56
  249. package/templates/rules/incremental-tests.md +29 -29
  250. package/templates/rules/java.md +43 -43
  251. package/templates/rules/javascript.md +39 -39
  252. package/templates/rules/knowledge-base-usage.md +41 -41
  253. package/templates/rules/multi-agent-teams.md +75 -75
  254. package/templates/rules/no-deferred.md +31 -31
  255. package/templates/rules/no-shortcuts.md +30 -30
  256. package/templates/rules/python.md +43 -43
  257. package/templates/rules/research-first.md +30 -30
  258. package/templates/rules/respect-handoff-trigger.md +41 -41
  259. package/templates/rules/rust.md +40 -40
  260. package/templates/rules/sequential-editing.md +21 -21
  261. package/templates/rules/session-workflow.md +24 -24
  262. package/templates/rules/task-decomposition.md +32 -32
  263. package/templates/rules/typescript.md +40 -40
  264. package/templates/services/AZURE_BLOB.md +184 -184
  265. package/templates/services/CASSANDRA.md +239 -239
  266. package/templates/services/DATADOG.md +26 -26
  267. package/templates/services/DOCKER.md +124 -124
  268. package/templates/services/DOCKER_COMPOSE.md +168 -168
  269. package/templates/services/DYNAMODB.md +308 -308
  270. package/templates/services/ELASTICSEARCH.md +347 -347
  271. package/templates/services/GCS.md +178 -178
  272. package/templates/services/HELM.md +194 -194
  273. package/templates/services/INFLUXDB.md +265 -265
  274. package/templates/services/KAFKA.md +341 -341
  275. package/templates/services/KUBERNETES.md +208 -208
  276. package/templates/services/MARIADB.md +183 -183
  277. package/templates/services/MEMCACHED.md +242 -242
  278. package/templates/services/MINIO.md +201 -201
  279. package/templates/services/MONGODB.md +268 -268
  280. package/templates/services/MYSQL.md +358 -358
  281. package/templates/services/NEO4J.md +247 -247
  282. package/templates/services/OPENTELEMETRY.md +25 -25
  283. package/templates/services/ORACLE.md +290 -290
  284. package/templates/services/PINO.md +24 -24
  285. package/templates/services/POSTGRESQL.md +326 -326
  286. package/templates/services/PROMETHEUS.md +33 -33
  287. package/templates/services/RABBITMQ.md +286 -286
  288. package/templates/services/REDIS.md +292 -292
  289. package/templates/services/S3.md +298 -298
  290. package/templates/services/SENTRY.md +23 -23
  291. package/templates/services/SQLITE.md +294 -294
  292. package/templates/services/SQLSERVER.md +294 -294
  293. package/templates/services/WINSTON.md +30 -30
  294. package/templates/skills/cli/aider/SKILL.md +59 -59
  295. package/templates/skills/cli/amazon-q/SKILL.md +35 -35
  296. package/templates/skills/cli/auggie/SKILL.md +42 -42
  297. package/templates/skills/cli/claude/SKILL.md +42 -42
  298. package/templates/skills/cli/cline/SKILL.md +42 -42
  299. package/templates/skills/cli/codebuddy/SKILL.md +30 -30
  300. package/templates/skills/cli/codeium/SKILL.md +30 -30
  301. package/templates/skills/cli/codex/SKILL.md +31 -31
  302. package/templates/skills/cli/continue/SKILL.md +44 -44
  303. package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
  304. package/templates/skills/cli/factory/SKILL.md +28 -28
  305. package/templates/skills/cli/gemini/SKILL.md +45 -45
  306. package/templates/skills/cli/kilocode/SKILL.md +28 -28
  307. package/templates/skills/cli/opencode/SKILL.md +28 -28
  308. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  309. package/templates/skills/core/dag/SKILL.md +314 -314
  310. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  311. package/templates/skills/core/karpathy-guidelines/SKILL.md +93 -0
  312. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  313. package/templates/skills/core/rulebook/SKILL.md +176 -176
  314. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  315. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  316. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  317. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  318. package/templates/skills/dev/analysis/SKILL.md +19 -19
  319. package/templates/skills/dev/api-design/SKILL.md +15 -15
  320. package/templates/skills/dev/architect/SKILL.md +17 -17
  321. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  322. package/templates/skills/dev/db-design/SKILL.md +15 -15
  323. package/templates/skills/dev/debug/SKILL.md +16 -16
  324. package/templates/skills/dev/deploy/SKILL.md +17 -17
  325. package/templates/skills/dev/docs/SKILL.md +17 -17
  326. package/templates/skills/dev/handoff/SKILL.md +27 -27
  327. package/templates/skills/dev/migrate/SKILL.md +15 -15
  328. package/templates/skills/dev/perf/SKILL.md +17 -17
  329. package/templates/skills/dev/refactor/SKILL.md +17 -17
  330. package/templates/skills/dev/research/SKILL.md +14 -14
  331. package/templates/skills/dev/review/SKILL.md +18 -18
  332. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  333. package/templates/skills/frameworks/angular/SKILL.md +46 -46
  334. package/templates/skills/frameworks/django/SKILL.md +93 -93
  335. package/templates/skills/frameworks/electron/SKILL.md +157 -157
  336. package/templates/skills/frameworks/flask/SKILL.md +48 -48
  337. package/templates/skills/frameworks/flutter/SKILL.md +65 -65
  338. package/templates/skills/frameworks/jquery/SKILL.md +42 -42
  339. package/templates/skills/frameworks/laravel/SKILL.md +48 -48
  340. package/templates/skills/frameworks/nestjs/SKILL.md +53 -53
  341. package/templates/skills/frameworks/nextjs/SKILL.md +137 -137
  342. package/templates/skills/frameworks/nuxt/SKILL.md +50 -50
  343. package/templates/skills/frameworks/rails/SKILL.md +76 -76
  344. package/templates/skills/frameworks/react/SKILL.md +48 -48
  345. package/templates/skills/frameworks/react-native/SKILL.md +57 -57
  346. package/templates/skills/frameworks/spring/SKILL.md +49 -49
  347. package/templates/skills/frameworks/symfony/SKILL.md +46 -46
  348. package/templates/skills/frameworks/vue/SKILL.md +46 -46
  349. package/templates/skills/frameworks/zend/SKILL.md +45 -45
  350. package/templates/skills/ides/copilot/SKILL.md +47 -47
  351. package/templates/skills/ides/cursor/SKILL.md +53 -53
  352. package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
  353. package/templates/skills/ides/replit/SKILL.md +46 -46
  354. package/templates/skills/ides/tabnine/SKILL.md +39 -39
  355. package/templates/skills/ides/vscode/SKILL.md +50 -50
  356. package/templates/skills/ides/windsurf/SKILL.md +46 -46
  357. package/templates/skills/ides/zed/SKILL.md +42 -42
  358. package/templates/skills/languages/c/SKILL.md +343 -343
  359. package/templates/skills/languages/cpp/SKILL.md +753 -753
  360. package/templates/skills/languages/csharp/SKILL.md +427 -427
  361. package/templates/skills/languages/elixir/SKILL.md +464 -464
  362. package/templates/skills/languages/erlang/SKILL.md +371 -371
  363. package/templates/skills/languages/go/SKILL.md +655 -655
  364. package/templates/skills/languages/haskell/SKILL.md +187 -187
  365. package/templates/skills/languages/java/SKILL.md +617 -617
  366. package/templates/skills/languages/javascript/SKILL.md +641 -641
  367. package/templates/skills/languages/julia/SKILL.md +107 -107
  368. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  369. package/templates/skills/languages/lisp/SKILL.md +110 -110
  370. package/templates/skills/languages/lua/SKILL.md +84 -84
  371. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  372. package/templates/skills/languages/php/SKILL.md +426 -426
  373. package/templates/skills/languages/python/SKILL.md +692 -692
  374. package/templates/skills/languages/ruby/SKILL.md +431 -431
  375. package/templates/skills/languages/rust/SKILL.md +487 -487
  376. package/templates/skills/languages/sas/SKILL.md +83 -83
  377. package/templates/skills/languages/scala/SKILL.md +358 -358
  378. package/templates/skills/languages/solidity/SKILL.md +590 -590
  379. package/templates/skills/languages/sql/SKILL.md +147 -147
  380. package/templates/skills/languages/swift/SKILL.md +476 -476
  381. package/templates/skills/languages/typescript/SKILL.md +302 -302
  382. package/templates/skills/languages/zig/SKILL.md +275 -275
  383. package/templates/skills/modules/atlassian/SKILL.md +265 -265
  384. package/templates/skills/modules/context7/SKILL.md +64 -64
  385. package/templates/skills/modules/figma/SKILL.md +277 -277
  386. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  387. package/templates/skills/modules/grafana/SKILL.md +338 -338
  388. package/templates/skills/modules/memory/SKILL.md +73 -73
  389. package/templates/skills/modules/notion/SKILL.md +257 -257
  390. package/templates/skills/modules/playwright/SKILL.md +100 -100
  391. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  392. package/templates/skills/modules/serena/SKILL.md +347 -347
  393. package/templates/skills/modules/supabase/SKILL.md +233 -233
  394. package/templates/skills/modules/synap/SKILL.md +79 -79
  395. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  396. package/templates/skills/services/azure-blob/SKILL.md +194 -194
  397. package/templates/skills/services/cassandra/SKILL.md +249 -249
  398. package/templates/skills/services/dynamodb/SKILL.md +318 -318
  399. package/templates/skills/services/elasticsearch/SKILL.md +357 -357
  400. package/templates/skills/services/gcs/SKILL.md +188 -188
  401. package/templates/skills/services/influxdb/SKILL.md +275 -275
  402. package/templates/skills/services/kafka/SKILL.md +351 -351
  403. package/templates/skills/services/mariadb/SKILL.md +193 -193
  404. package/templates/skills/services/memcached/SKILL.md +252 -252
  405. package/templates/skills/services/minio/SKILL.md +211 -211
  406. package/templates/skills/services/mongodb/SKILL.md +278 -278
  407. package/templates/skills/services/mysql/SKILL.md +368 -368
  408. package/templates/skills/services/neo4j/SKILL.md +257 -257
  409. package/templates/skills/services/oracle/SKILL.md +300 -300
  410. package/templates/skills/services/postgresql/SKILL.md +336 -336
  411. package/templates/skills/services/rabbitmq/SKILL.md +296 -296
  412. package/templates/skills/services/redis/SKILL.md +302 -302
  413. package/templates/skills/services/s3/SKILL.md +308 -308
  414. package/templates/skills/services/sqlite/SKILL.md +304 -304
  415. package/templates/skills/services/sqlserver/SKILL.md +304 -304
  416. package/templates/skills/workflows/ralph/SKILL.md +309 -309
  417. package/templates/skills/workflows/ralph/install.sh +87 -87
  418. 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
+