@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,730 +1,730 @@
1
- # GitLab CI/CD
2
-
3
- This template provides guidance for implementing GitLab CI/CD pipelines with best practices for multi-stage pipelines, caching, and artifacts.
4
-
5
- ## Purpose
6
-
7
- GitLab CI/CD enables:
8
- - Automated testing and building
9
- - Continuous deployment
10
- - Container registry integration
11
- - Built-in security scanning
12
- - Kubernetes deployment
13
-
14
- ## Agent Automation Commands
15
-
16
- When implementing or modifying GitLab CI pipelines:
17
-
18
- ### Local Testing
19
- ```bash
20
- # Validate .gitlab-ci.yml syntax
21
- gitlab-ci-lint .gitlab-ci.yml
22
-
23
- # Or via API
24
- curl --header "Content-Type: application/json" \
25
- --data @.gitlab-ci.yml \
26
- https://gitlab.com/api/v4/ci/lint
27
- ```
28
-
29
- ### Pipeline Management
30
- ```bash
31
- # Trigger pipeline
32
- gitlab-runner exec shell build
33
-
34
- # View pipeline status
35
- git lab pipeline status
36
-
37
- # View pipeline logs
38
- gitlab-runner exec shell test --debug
39
- ```
40
-
41
- ## Basic Pipeline Structure
42
-
43
- ### Minimal CI Pipeline
44
-
45
- **`.gitlab-ci.yml`**:
46
- ```yaml
47
- image: node:20
48
-
49
- stages:
50
- - test
51
- - build
52
- - deploy
53
-
54
- test:
55
- stage: test
56
- script:
57
- - npm ci
58
- - npm test
59
-
60
- build:
61
- stage: build
62
- script:
63
- - npm run build
64
- artifacts:
65
- paths:
66
- - dist/
67
- expire_in: 1 week
68
-
69
- deploy:
70
- stage: deploy
71
- script:
72
- - echo "Deploying to production"
73
- environment:
74
- name: production
75
- url: https://example.com
76
- only:
77
- - main
78
- ```
79
-
80
- ### Complete CI/CD Pipeline
81
-
82
- **`.gitlab-ci.yml`**:
83
- ```yaml
84
- image: node:20
85
-
86
- variables:
87
- NPM_CONFIG_CACHE: "$CI_PROJECT_DIR/.npm"
88
- CYPRESS_CACHE_FOLDER: "$CI_PROJECT_DIR/.cypress"
89
-
90
- stages:
91
- - validate
92
- - build
93
- - test
94
- - security
95
- - deploy
96
-
97
- # Template for node jobs
98
- .node-template:
99
- before_script:
100
- - npm ci --prefer-offline
101
- cache:
102
- key:
103
- files:
104
- - package-lock.json
105
- paths:
106
- - .npm/
107
- - node_modules/
108
-
109
- lint:
110
- extends: .node-template
111
- stage: validate
112
- script:
113
- - npm run lint
114
- - npm run format:check
115
-
116
- typecheck:
117
- extends: .node-template
118
- stage: validate
119
- script:
120
- - npm run type-check
121
-
122
- build:
123
- extends: .node-template
124
- stage: build
125
- script:
126
- - npm run build
127
- artifacts:
128
- paths:
129
- - dist/
130
- expire_in: 1 week
131
-
132
- test:unit:
133
- extends: .node-template
134
- stage: test
135
- parallel:
136
- matrix:
137
- - NODE_VERSION: ['18', '20', '22']
138
- image: node:$NODE_VERSION
139
- script:
140
- - npm test
141
- coverage: '/Statements\s*:\s*(\d+\.\d+)%/'
142
- artifacts:
143
- reports:
144
- junit: junit.xml
145
- coverage_report:
146
- coverage_format: cobertura
147
- path: coverage/cobertura-coverage.xml
148
-
149
- test:e2e:
150
- extends: .node-template
151
- stage: test
152
- script:
153
- - npm run test:e2e
154
- artifacts:
155
- when: on_failure
156
- paths:
157
- - cypress/screenshots/
158
- - cypress/videos/
159
- expire_in: 1 week
160
-
161
- security:dependencies:
162
- stage: security
163
- script:
164
- - npm audit --audit-level=high
165
- allow_failure: true
166
-
167
- security:sast:
168
- stage: security
169
- image: registry.gitlab.com/gitlab-org/security-products/analyzers/semgrep:latest
170
- script:
171
- - /analyzer run
172
- artifacts:
173
- reports:
174
- sast: gl-sast-report.json
175
-
176
- deploy:staging:
177
- stage: deploy
178
- script:
179
- - npm run deploy:staging
180
- environment:
181
- name: staging
182
- url: https://staging.example.com
183
- only:
184
- - develop
185
-
186
- deploy:production:
187
- stage: deploy
188
- script:
189
- - npm run deploy:production
190
- environment:
191
- name: production
192
- url: https://example.com
193
- when: manual
194
- only:
195
- - main
196
- ```
197
-
198
- ## Best Practices
199
-
200
- ### ✅ DO
201
-
202
- 1. **Use Caching**
203
- ```yaml
204
- cache:
205
- key:
206
- files:
207
- - package-lock.json
208
- paths:
209
- - node_modules/
210
- - .npm/
211
- ```
212
-
213
- 2. **Use Job Templates (DRY)**
214
- ```yaml
215
- .deploy-template:
216
- stage: deploy
217
- script:
218
- - deploy.sh $ENVIRONMENT
219
- only:
220
- - main
221
-
222
- deploy:staging:
223
- extends: .deploy-template
224
- variables:
225
- ENVIRONMENT: staging
226
-
227
- deploy:production:
228
- extends: .deploy-template
229
- variables:
230
- ENVIRONMENT: production
231
- ```
232
-
233
- 3. **Use Parallel Matrix**
234
- ```yaml
235
- test:
236
- parallel:
237
- matrix:
238
- - NODE_VERSION: ['18', '20', '22']
239
- OS: ['ubuntu', 'alpine']
240
- image: node:$NODE_VERSION-$OS
241
- ```
242
-
243
- 4. **Use Pipeline-Specific Variables**
244
- ```yaml
245
- variables:
246
- DEPLOY_ENV: "production"
247
- API_ENDPOINT: "https://api.example.com"
248
- ```
249
-
250
- 5. **Use Artifacts for Build Outputs**
251
- ```yaml
252
- build:
253
- artifacts:
254
- paths:
255
- - dist/
256
- expire_in: 1 week
257
- ```
258
-
259
- ### ❌ DON'T
260
-
261
- 1. **Don't hardcode secrets**
262
- ```yaml
263
- # Bad
264
- script:
265
- - export API_KEY="sk_live_abc123"
266
-
267
- # Good
268
- script:
269
- - export API_KEY="$API_KEY" # From CI/CD variables
270
- ```
271
-
272
- 2. **Don't use `latest` tags**
273
- ```yaml
274
- # Bad
275
- image: node:latest
276
-
277
- # Good
278
- image: node:20.11.0
279
- ```
280
-
281
- 3. **Don't run unnecessary jobs**
282
- ```yaml
283
- # Good - only run on specific branches
284
- deploy:
285
- only:
286
- - main
287
- except:
288
- - schedules
289
- ```
290
-
291
- ## Caching Strategies
292
-
293
- ### Global Cache
294
-
295
- ```yaml
296
- # Apply to all jobs
297
- cache:
298
- key: ${CI_COMMIT_REF_SLUG}
299
- paths:
300
- - node_modules/
301
- - .npm/
302
- ```
303
-
304
- ### Job-Specific Cache
305
-
306
- ```yaml
307
- test:
308
- cache:
309
- key: test-cache
310
- paths:
311
- - node_modules/
312
- - .cache/
313
-
314
- build:
315
- cache:
316
- key: build-cache
317
- paths:
318
- - dist/
319
- - .webpack-cache/
320
- ```
321
-
322
- ### Cache with Fallback
323
-
324
- ```yaml
325
- cache:
326
- key: ${CI_COMMIT_REF_SLUG}
327
- paths:
328
- - node_modules/
329
- policy: pull # Only pull, don't push
330
-
331
- build:
332
- cache:
333
- key: ${CI_COMMIT_REF_SLUG}
334
- paths:
335
- - node_modules/
336
- policy: pull-push # Pull and push cache
337
- ```
338
-
339
- ## Artifacts and Dependencies
340
-
341
- ### Uploading Artifacts
342
-
343
- ```yaml
344
- build:
345
- script:
346
- - npm run build
347
- artifacts:
348
- name: "dist-$CI_COMMIT_SHORT_SHA"
349
- paths:
350
- - dist/
351
- expire_in: 1 week
352
- when: on_success # or always, on_failure
353
- ```
354
-
355
- ### Downloading Artifacts
356
-
357
- ```yaml
358
- deploy:
359
- dependencies:
360
- - build # Downloads artifacts from 'build' job
361
- script:
362
- - ls dist/ # Artifact available
363
- - deploy.sh
364
- ```
365
-
366
- ### Artifact Reports
367
-
368
- ```yaml
369
- test:
370
- script:
371
- - npm test
372
- artifacts:
373
- reports:
374
- junit: junit.xml
375
- coverage_report:
376
- coverage_format: cobertura
377
- path: coverage/cobertura-coverage.xml
378
- dotenv: build.env # Export variables to other jobs
379
- ```
380
-
381
- ## Multi-Project Pipelines
382
-
383
- ### Parent Pipeline
384
-
385
- ```yaml
386
- # .gitlab-ci.yml
387
- trigger:frontend:
388
- stage: deploy
389
- trigger:
390
- project: mygroup/frontend
391
- strategy: depend
392
-
393
- trigger:backend:
394
- stage: deploy
395
- trigger:
396
- project: mygroup/backend
397
- strategy: depend
398
- ```
399
-
400
- ### Child Pipelines
401
-
402
- ```yaml
403
- # Parent pipeline
404
- generate-config:
405
- script:
406
- - generate-dynamic-config.sh > dynamic.yml
407
- artifacts:
408
- paths:
409
- - dynamic.yml
410
-
411
- trigger-child:
412
- trigger:
413
- include:
414
- - artifact: dynamic.yml
415
- job: generate-config
416
- strategy: depend
417
- ```
418
-
419
- ## Docker Integration
420
-
421
- ### Build and Push Docker Image
422
-
423
- ```yaml
424
- docker-build:
425
- image: docker:latest
426
- services:
427
- - docker:dind
428
- variables:
429
- DOCKER_DRIVER: overlay2
430
- DOCKER_TLS_CERTDIR: "/certs"
431
- before_script:
432
- - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
433
- script:
434
- - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .
435
- - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
436
- ```
437
-
438
- ### Use GitLab Container Registry
439
-
440
- ```yaml
441
- build:
442
- image: docker:latest
443
- services:
444
- - docker:dind
445
- script:
446
- # Login to GitLab Container Registry
447
- - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
448
-
449
- # Build and tag
450
- - docker build -t $CI_REGISTRY_IMAGE:latest .
451
- - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG .
452
-
453
- # Push
454
- - docker push $CI_REGISTRY_IMAGE:latest
455
- - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
456
- ```
457
-
458
- ## Kubernetes Deployment
459
-
460
- ### Deploy to Kubernetes
461
-
462
- ```yaml
463
- deploy:k8s:
464
- image: bitnami/kubectl:latest
465
- stage: deploy
466
- script:
467
- # Configure kubectl
468
- - kubectl config set-cluster k8s --server="$KUBE_URL" --insecure-skip-tls-verify=true
469
- - kubectl config set-credentials admin --token="$KUBE_TOKEN"
470
- - kubectl config set-context default --cluster=k8s --user=admin
471
- - kubectl config use-context default
472
-
473
- # Deploy
474
- - kubectl set image deployment/app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
475
- - kubectl rollout status deployment/app
476
- environment:
477
- name: production
478
- kubernetes:
479
- namespace: production
480
- ```
481
-
482
- ### Helm Deployment
483
-
484
- ```yaml
485
- deploy:helm:
486
- image: alpine/helm:latest
487
- stage: deploy
488
- script:
489
- - helm upgrade --install myapp ./charts/myapp \
490
- --set image.tag=$CI_COMMIT_SHORT_SHA \
491
- --namespace production
492
- environment:
493
- name: production
494
- ```
495
-
496
- ## Rules and Conditions
497
-
498
- ### Complex Rules
499
-
500
- ```yaml
501
- test:
502
- script:
503
- - npm test
504
- rules:
505
- # Run on main branch
506
- - if: $CI_COMMIT_BRANCH == "main"
507
- when: always
508
-
509
- # Run on merge requests
510
- - if: $CI_PIPELINE_SOURCE == "merge_request_event"
511
- when: always
512
-
513
- # Run on tags starting with 'v'
514
- - if: $CI_COMMIT_TAG =~ /^v/
515
- when: always
516
-
517
- # Skip on schedules
518
- - if: $CI_PIPELINE_SOURCE == "schedule"
519
- when: never
520
-
521
- # Manual for feature branches
522
- - if: $CI_COMMIT_BRANCH =~ /^feature\//
523
- when: manual
524
-
525
- # Otherwise skip
526
- - when: never
527
- ```
528
-
529
- ### Changes-Based Execution
530
-
531
- ```yaml
532
- test:backend:
533
- script:
534
- - cd backend && npm test
535
- rules:
536
- - changes:
537
- - backend/**/*
538
- when: always
539
-
540
- test:frontend:
541
- script:
542
- - cd frontend && npm test
543
- rules:
544
- - changes:
545
- - frontend/**/*
546
- when: always
547
- ```
548
-
549
- ## Security Scanning
550
-
551
- ### SAST (Static Application Security Testing)
552
-
553
- ```yaml
554
- include:
555
- - template: Security/SAST.gitlab-ci.yml
556
-
557
- sast:
558
- stage: security
559
- variables:
560
- SAST_EXCLUDED_PATHS: "spec, test, tests, tmp, node_modules"
561
- ```
562
-
563
- ### Dependency Scanning
564
-
565
- ```yaml
566
- include:
567
- - template: Security/Dependency-Scanning.gitlab-ci.yml
568
-
569
- dependency_scanning:
570
- stage: security
571
- ```
572
-
573
- ### Container Scanning
574
-
575
- ```yaml
576
- include:
577
- - template: Security/Container-Scanning.gitlab-ci.yml
578
-
579
- container_scanning:
580
- stage: security
581
- variables:
582
- CS_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
583
- ```
584
-
585
- ## Optimization Patterns
586
-
587
- ### Skip Pipeline for Docs
588
-
589
- ```yaml
590
- # Skip pipeline if only docs changed
591
- workflow:
592
- rules:
593
- - if: $CI_PIPELINE_SOURCE == "push"
594
- changes:
595
- - "**/*.md"
596
- - "docs/**/*"
597
- when: never
598
- - when: always
599
- ```
600
-
601
- ### Interruptible Jobs
602
-
603
- ```yaml
604
- test:
605
- interruptible: true # Cancel if new pipeline starts
606
- script:
607
- - npm test
608
- ```
609
-
610
- ### Retry Failed Jobs
611
-
612
- ```yaml
613
- test:
614
- script:
615
- - npm test
616
- retry:
617
- max: 2
618
- when:
619
- - runner_system_failure
620
- - stuck_or_timeout_failure
621
- ```
622
-
623
- ## CI/CD Variables
624
-
625
- ### Predefined Variables
626
-
627
- ```yaml
628
- test:
629
- script:
630
- - echo "Pipeline ID: $CI_PIPELINE_ID"
631
- - echo "Commit SHA: $CI_COMMIT_SHA"
632
- - echo "Commit Branch: $CI_COMMIT_BRANCH"
633
- - echo "Commit Tag: $CI_COMMIT_TAG"
634
- - echo "Project Name: $CI_PROJECT_NAME"
635
- - echo "Registry: $CI_REGISTRY_IMAGE"
636
- ```
637
-
638
- ### Custom Variables
639
-
640
- ```yaml
641
- variables:
642
- ENVIRONMENT: "production"
643
- API_ENDPOINT: "https://api.example.com"
644
-
645
- deploy:
646
- script:
647
- - deploy.sh --env $ENVIRONMENT --api $API_ENDPOINT
648
- ```
649
-
650
- ### Protected Variables
651
-
652
- **Add via UI**: Settings → CI/CD → Variables
653
-
654
- ```yaml
655
- deploy:
656
- script:
657
- - echo "Deploying with token: $DEPLOY_TOKEN"
658
- only:
659
- - main # Protected variables only available on protected branches
660
- ```
661
-
662
- ## Troubleshooting
663
-
664
- ### Pipeline Not Triggered
665
-
666
- **Check**:
667
- 1. `.gitlab-ci.yml` syntax valid
668
- 2. Rules/only/except conditions met
669
- 3. CI/CD enabled for project
670
- 4. GitLab Runner available
671
-
672
- ### Cache Not Working
673
-
674
- **Solutions**:
675
- ```yaml
676
- # Use specific cache key
677
- cache:
678
- key:
679
- files:
680
- - package-lock.json
681
- paths:
682
- - node_modules/
683
-
684
- # Clear cache if corrupted
685
- # Settings → CI/CD → Clear runner caches
686
- ```
687
-
688
- ### Artifacts Not Available
689
-
690
- **Check**:
691
- 1. Artifact expiration not exceeded
692
- 2. Job succeeded (artifacts only uploaded on success by default)
693
- 3. Dependencies declared correctly
694
-
695
- ```yaml
696
- deploy:
697
- dependencies:
698
- - build # Must match job name exactly
699
- ```
700
-
701
- ## Common Pitfalls
702
-
703
- 1. **❌ No caching**: Slow pipelines
704
- 2. **❌ Not using templates**: Duplication
705
- 3. **❌ Artifacts too large**: Slow uploads/downloads
706
- 4. **❌ No retry logic**: Flaky tests fail pipeline
707
- 5. **❌ Running all jobs always**: Wasted resources
708
- 6. **❌ No manual gates for production**: Risky deployments
709
-
710
- ## Integration with Rulebook
711
-
712
- If using `@hivehub/rulebook`, GitLab CI pipelines are generated automatically:
713
-
714
- ```bash
715
- # Generate GitLab CI pipeline
716
- npx @hivehub/rulebook workflows
717
-
718
- # Creates .gitlab-ci.yml with:
719
- # - Language-specific stages
720
- # - Caching configured
721
- # - Artifacts management
722
- # - Security scanning
723
- ```
724
-
725
- ## Related Templates
726
-
727
- - See `/.rulebook/specs/GITHUB_ACTIONS.md` for GitHub Actions comparison
728
- - See `/.rulebook/specs/CI_CD_PATTERNS.md` for general CI/CD patterns
729
- - See `/.rulebook/specs/SECRETS_MANAGEMENT.md` for secrets handling
730
- - See `/.rulebook/specs/QUALITY_ENFORCEMENT.md` for quality gates
1
+ # GitLab CI/CD
2
+
3
+ This template provides guidance for implementing GitLab CI/CD pipelines with best practices for multi-stage pipelines, caching, and artifacts.
4
+
5
+ ## Purpose
6
+
7
+ GitLab CI/CD enables:
8
+ - Automated testing and building
9
+ - Continuous deployment
10
+ - Container registry integration
11
+ - Built-in security scanning
12
+ - Kubernetes deployment
13
+
14
+ ## Agent Automation Commands
15
+
16
+ When implementing or modifying GitLab CI pipelines:
17
+
18
+ ### Local Testing
19
+ ```bash
20
+ # Validate .gitlab-ci.yml syntax
21
+ gitlab-ci-lint .gitlab-ci.yml
22
+
23
+ # Or via API
24
+ curl --header "Content-Type: application/json" \
25
+ --data @.gitlab-ci.yml \
26
+ https://gitlab.com/api/v4/ci/lint
27
+ ```
28
+
29
+ ### Pipeline Management
30
+ ```bash
31
+ # Trigger pipeline
32
+ gitlab-runner exec shell build
33
+
34
+ # View pipeline status
35
+ git lab pipeline status
36
+
37
+ # View pipeline logs
38
+ gitlab-runner exec shell test --debug
39
+ ```
40
+
41
+ ## Basic Pipeline Structure
42
+
43
+ ### Minimal CI Pipeline
44
+
45
+ **`.gitlab-ci.yml`**:
46
+ ```yaml
47
+ image: node:20
48
+
49
+ stages:
50
+ - test
51
+ - build
52
+ - deploy
53
+
54
+ test:
55
+ stage: test
56
+ script:
57
+ - npm ci
58
+ - npm test
59
+
60
+ build:
61
+ stage: build
62
+ script:
63
+ - npm run build
64
+ artifacts:
65
+ paths:
66
+ - dist/
67
+ expire_in: 1 week
68
+
69
+ deploy:
70
+ stage: deploy
71
+ script:
72
+ - echo "Deploying to production"
73
+ environment:
74
+ name: production
75
+ url: https://example.com
76
+ only:
77
+ - main
78
+ ```
79
+
80
+ ### Complete CI/CD Pipeline
81
+
82
+ **`.gitlab-ci.yml`**:
83
+ ```yaml
84
+ image: node:20
85
+
86
+ variables:
87
+ NPM_CONFIG_CACHE: "$CI_PROJECT_DIR/.npm"
88
+ CYPRESS_CACHE_FOLDER: "$CI_PROJECT_DIR/.cypress"
89
+
90
+ stages:
91
+ - validate
92
+ - build
93
+ - test
94
+ - security
95
+ - deploy
96
+
97
+ # Template for node jobs
98
+ .node-template:
99
+ before_script:
100
+ - npm ci --prefer-offline
101
+ cache:
102
+ key:
103
+ files:
104
+ - package-lock.json
105
+ paths:
106
+ - .npm/
107
+ - node_modules/
108
+
109
+ lint:
110
+ extends: .node-template
111
+ stage: validate
112
+ script:
113
+ - npm run lint
114
+ - npm run format:check
115
+
116
+ typecheck:
117
+ extends: .node-template
118
+ stage: validate
119
+ script:
120
+ - npm run type-check
121
+
122
+ build:
123
+ extends: .node-template
124
+ stage: build
125
+ script:
126
+ - npm run build
127
+ artifacts:
128
+ paths:
129
+ - dist/
130
+ expire_in: 1 week
131
+
132
+ test:unit:
133
+ extends: .node-template
134
+ stage: test
135
+ parallel:
136
+ matrix:
137
+ - NODE_VERSION: ['18', '20', '22']
138
+ image: node:$NODE_VERSION
139
+ script:
140
+ - npm test
141
+ coverage: '/Statements\s*:\s*(\d+\.\d+)%/'
142
+ artifacts:
143
+ reports:
144
+ junit: junit.xml
145
+ coverage_report:
146
+ coverage_format: cobertura
147
+ path: coverage/cobertura-coverage.xml
148
+
149
+ test:e2e:
150
+ extends: .node-template
151
+ stage: test
152
+ script:
153
+ - npm run test:e2e
154
+ artifacts:
155
+ when: on_failure
156
+ paths:
157
+ - cypress/screenshots/
158
+ - cypress/videos/
159
+ expire_in: 1 week
160
+
161
+ security:dependencies:
162
+ stage: security
163
+ script:
164
+ - npm audit --audit-level=high
165
+ allow_failure: true
166
+
167
+ security:sast:
168
+ stage: security
169
+ image: registry.gitlab.com/gitlab-org/security-products/analyzers/semgrep:latest
170
+ script:
171
+ - /analyzer run
172
+ artifacts:
173
+ reports:
174
+ sast: gl-sast-report.json
175
+
176
+ deploy:staging:
177
+ stage: deploy
178
+ script:
179
+ - npm run deploy:staging
180
+ environment:
181
+ name: staging
182
+ url: https://staging.example.com
183
+ only:
184
+ - develop
185
+
186
+ deploy:production:
187
+ stage: deploy
188
+ script:
189
+ - npm run deploy:production
190
+ environment:
191
+ name: production
192
+ url: https://example.com
193
+ when: manual
194
+ only:
195
+ - main
196
+ ```
197
+
198
+ ## Best Practices
199
+
200
+ ### ✅ DO
201
+
202
+ 1. **Use Caching**
203
+ ```yaml
204
+ cache:
205
+ key:
206
+ files:
207
+ - package-lock.json
208
+ paths:
209
+ - node_modules/
210
+ - .npm/
211
+ ```
212
+
213
+ 2. **Use Job Templates (DRY)**
214
+ ```yaml
215
+ .deploy-template:
216
+ stage: deploy
217
+ script:
218
+ - deploy.sh $ENVIRONMENT
219
+ only:
220
+ - main
221
+
222
+ deploy:staging:
223
+ extends: .deploy-template
224
+ variables:
225
+ ENVIRONMENT: staging
226
+
227
+ deploy:production:
228
+ extends: .deploy-template
229
+ variables:
230
+ ENVIRONMENT: production
231
+ ```
232
+
233
+ 3. **Use Parallel Matrix**
234
+ ```yaml
235
+ test:
236
+ parallel:
237
+ matrix:
238
+ - NODE_VERSION: ['18', '20', '22']
239
+ OS: ['ubuntu', 'alpine']
240
+ image: node:$NODE_VERSION-$OS
241
+ ```
242
+
243
+ 4. **Use Pipeline-Specific Variables**
244
+ ```yaml
245
+ variables:
246
+ DEPLOY_ENV: "production"
247
+ API_ENDPOINT: "https://api.example.com"
248
+ ```
249
+
250
+ 5. **Use Artifacts for Build Outputs**
251
+ ```yaml
252
+ build:
253
+ artifacts:
254
+ paths:
255
+ - dist/
256
+ expire_in: 1 week
257
+ ```
258
+
259
+ ### ❌ DON'T
260
+
261
+ 1. **Don't hardcode secrets**
262
+ ```yaml
263
+ # Bad
264
+ script:
265
+ - export API_KEY="sk_live_abc123"
266
+
267
+ # Good
268
+ script:
269
+ - export API_KEY="$API_KEY" # From CI/CD variables
270
+ ```
271
+
272
+ 2. **Don't use `latest` tags**
273
+ ```yaml
274
+ # Bad
275
+ image: node:latest
276
+
277
+ # Good
278
+ image: node:20.11.0
279
+ ```
280
+
281
+ 3. **Don't run unnecessary jobs**
282
+ ```yaml
283
+ # Good - only run on specific branches
284
+ deploy:
285
+ only:
286
+ - main
287
+ except:
288
+ - schedules
289
+ ```
290
+
291
+ ## Caching Strategies
292
+
293
+ ### Global Cache
294
+
295
+ ```yaml
296
+ # Apply to all jobs
297
+ cache:
298
+ key: ${CI_COMMIT_REF_SLUG}
299
+ paths:
300
+ - node_modules/
301
+ - .npm/
302
+ ```
303
+
304
+ ### Job-Specific Cache
305
+
306
+ ```yaml
307
+ test:
308
+ cache:
309
+ key: test-cache
310
+ paths:
311
+ - node_modules/
312
+ - .cache/
313
+
314
+ build:
315
+ cache:
316
+ key: build-cache
317
+ paths:
318
+ - dist/
319
+ - .webpack-cache/
320
+ ```
321
+
322
+ ### Cache with Fallback
323
+
324
+ ```yaml
325
+ cache:
326
+ key: ${CI_COMMIT_REF_SLUG}
327
+ paths:
328
+ - node_modules/
329
+ policy: pull # Only pull, don't push
330
+
331
+ build:
332
+ cache:
333
+ key: ${CI_COMMIT_REF_SLUG}
334
+ paths:
335
+ - node_modules/
336
+ policy: pull-push # Pull and push cache
337
+ ```
338
+
339
+ ## Artifacts and Dependencies
340
+
341
+ ### Uploading Artifacts
342
+
343
+ ```yaml
344
+ build:
345
+ script:
346
+ - npm run build
347
+ artifacts:
348
+ name: "dist-$CI_COMMIT_SHORT_SHA"
349
+ paths:
350
+ - dist/
351
+ expire_in: 1 week
352
+ when: on_success # or always, on_failure
353
+ ```
354
+
355
+ ### Downloading Artifacts
356
+
357
+ ```yaml
358
+ deploy:
359
+ dependencies:
360
+ - build # Downloads artifacts from 'build' job
361
+ script:
362
+ - ls dist/ # Artifact available
363
+ - deploy.sh
364
+ ```
365
+
366
+ ### Artifact Reports
367
+
368
+ ```yaml
369
+ test:
370
+ script:
371
+ - npm test
372
+ artifacts:
373
+ reports:
374
+ junit: junit.xml
375
+ coverage_report:
376
+ coverage_format: cobertura
377
+ path: coverage/cobertura-coverage.xml
378
+ dotenv: build.env # Export variables to other jobs
379
+ ```
380
+
381
+ ## Multi-Project Pipelines
382
+
383
+ ### Parent Pipeline
384
+
385
+ ```yaml
386
+ # .gitlab-ci.yml
387
+ trigger:frontend:
388
+ stage: deploy
389
+ trigger:
390
+ project: mygroup/frontend
391
+ strategy: depend
392
+
393
+ trigger:backend:
394
+ stage: deploy
395
+ trigger:
396
+ project: mygroup/backend
397
+ strategy: depend
398
+ ```
399
+
400
+ ### Child Pipelines
401
+
402
+ ```yaml
403
+ # Parent pipeline
404
+ generate-config:
405
+ script:
406
+ - generate-dynamic-config.sh > dynamic.yml
407
+ artifacts:
408
+ paths:
409
+ - dynamic.yml
410
+
411
+ trigger-child:
412
+ trigger:
413
+ include:
414
+ - artifact: dynamic.yml
415
+ job: generate-config
416
+ strategy: depend
417
+ ```
418
+
419
+ ## Docker Integration
420
+
421
+ ### Build and Push Docker Image
422
+
423
+ ```yaml
424
+ docker-build:
425
+ image: docker:latest
426
+ services:
427
+ - docker:dind
428
+ variables:
429
+ DOCKER_DRIVER: overlay2
430
+ DOCKER_TLS_CERTDIR: "/certs"
431
+ before_script:
432
+ - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
433
+ script:
434
+ - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA .
435
+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
436
+ ```
437
+
438
+ ### Use GitLab Container Registry
439
+
440
+ ```yaml
441
+ build:
442
+ image: docker:latest
443
+ services:
444
+ - docker:dind
445
+ script:
446
+ # Login to GitLab Container Registry
447
+ - docker login -u $CI_REGISTRY_USER -p $CI_REGISTRY_PASSWORD $CI_REGISTRY
448
+
449
+ # Build and tag
450
+ - docker build -t $CI_REGISTRY_IMAGE:latest .
451
+ - docker build -t $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG .
452
+
453
+ # Push
454
+ - docker push $CI_REGISTRY_IMAGE:latest
455
+ - docker push $CI_REGISTRY_IMAGE:$CI_COMMIT_TAG
456
+ ```
457
+
458
+ ## Kubernetes Deployment
459
+
460
+ ### Deploy to Kubernetes
461
+
462
+ ```yaml
463
+ deploy:k8s:
464
+ image: bitnami/kubectl:latest
465
+ stage: deploy
466
+ script:
467
+ # Configure kubectl
468
+ - kubectl config set-cluster k8s --server="$KUBE_URL" --insecure-skip-tls-verify=true
469
+ - kubectl config set-credentials admin --token="$KUBE_TOKEN"
470
+ - kubectl config set-context default --cluster=k8s --user=admin
471
+ - kubectl config use-context default
472
+
473
+ # Deploy
474
+ - kubectl set image deployment/app app=$CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
475
+ - kubectl rollout status deployment/app
476
+ environment:
477
+ name: production
478
+ kubernetes:
479
+ namespace: production
480
+ ```
481
+
482
+ ### Helm Deployment
483
+
484
+ ```yaml
485
+ deploy:helm:
486
+ image: alpine/helm:latest
487
+ stage: deploy
488
+ script:
489
+ - helm upgrade --install myapp ./charts/myapp \
490
+ --set image.tag=$CI_COMMIT_SHORT_SHA \
491
+ --namespace production
492
+ environment:
493
+ name: production
494
+ ```
495
+
496
+ ## Rules and Conditions
497
+
498
+ ### Complex Rules
499
+
500
+ ```yaml
501
+ test:
502
+ script:
503
+ - npm test
504
+ rules:
505
+ # Run on main branch
506
+ - if: $CI_COMMIT_BRANCH == "main"
507
+ when: always
508
+
509
+ # Run on merge requests
510
+ - if: $CI_PIPELINE_SOURCE == "merge_request_event"
511
+ when: always
512
+
513
+ # Run on tags starting with 'v'
514
+ - if: $CI_COMMIT_TAG =~ /^v/
515
+ when: always
516
+
517
+ # Skip on schedules
518
+ - if: $CI_PIPELINE_SOURCE == "schedule"
519
+ when: never
520
+
521
+ # Manual for feature branches
522
+ - if: $CI_COMMIT_BRANCH =~ /^feature\//
523
+ when: manual
524
+
525
+ # Otherwise skip
526
+ - when: never
527
+ ```
528
+
529
+ ### Changes-Based Execution
530
+
531
+ ```yaml
532
+ test:backend:
533
+ script:
534
+ - cd backend && npm test
535
+ rules:
536
+ - changes:
537
+ - backend/**/*
538
+ when: always
539
+
540
+ test:frontend:
541
+ script:
542
+ - cd frontend && npm test
543
+ rules:
544
+ - changes:
545
+ - frontend/**/*
546
+ when: always
547
+ ```
548
+
549
+ ## Security Scanning
550
+
551
+ ### SAST (Static Application Security Testing)
552
+
553
+ ```yaml
554
+ include:
555
+ - template: Security/SAST.gitlab-ci.yml
556
+
557
+ sast:
558
+ stage: security
559
+ variables:
560
+ SAST_EXCLUDED_PATHS: "spec, test, tests, tmp, node_modules"
561
+ ```
562
+
563
+ ### Dependency Scanning
564
+
565
+ ```yaml
566
+ include:
567
+ - template: Security/Dependency-Scanning.gitlab-ci.yml
568
+
569
+ dependency_scanning:
570
+ stage: security
571
+ ```
572
+
573
+ ### Container Scanning
574
+
575
+ ```yaml
576
+ include:
577
+ - template: Security/Container-Scanning.gitlab-ci.yml
578
+
579
+ container_scanning:
580
+ stage: security
581
+ variables:
582
+ CS_IMAGE: $CI_REGISTRY_IMAGE:$CI_COMMIT_SHORT_SHA
583
+ ```
584
+
585
+ ## Optimization Patterns
586
+
587
+ ### Skip Pipeline for Docs
588
+
589
+ ```yaml
590
+ # Skip pipeline if only docs changed
591
+ workflow:
592
+ rules:
593
+ - if: $CI_PIPELINE_SOURCE == "push"
594
+ changes:
595
+ - "**/*.md"
596
+ - "docs/**/*"
597
+ when: never
598
+ - when: always
599
+ ```
600
+
601
+ ### Interruptible Jobs
602
+
603
+ ```yaml
604
+ test:
605
+ interruptible: true # Cancel if new pipeline starts
606
+ script:
607
+ - npm test
608
+ ```
609
+
610
+ ### Retry Failed Jobs
611
+
612
+ ```yaml
613
+ test:
614
+ script:
615
+ - npm test
616
+ retry:
617
+ max: 2
618
+ when:
619
+ - runner_system_failure
620
+ - stuck_or_timeout_failure
621
+ ```
622
+
623
+ ## CI/CD Variables
624
+
625
+ ### Predefined Variables
626
+
627
+ ```yaml
628
+ test:
629
+ script:
630
+ - echo "Pipeline ID: $CI_PIPELINE_ID"
631
+ - echo "Commit SHA: $CI_COMMIT_SHA"
632
+ - echo "Commit Branch: $CI_COMMIT_BRANCH"
633
+ - echo "Commit Tag: $CI_COMMIT_TAG"
634
+ - echo "Project Name: $CI_PROJECT_NAME"
635
+ - echo "Registry: $CI_REGISTRY_IMAGE"
636
+ ```
637
+
638
+ ### Custom Variables
639
+
640
+ ```yaml
641
+ variables:
642
+ ENVIRONMENT: "production"
643
+ API_ENDPOINT: "https://api.example.com"
644
+
645
+ deploy:
646
+ script:
647
+ - deploy.sh --env $ENVIRONMENT --api $API_ENDPOINT
648
+ ```
649
+
650
+ ### Protected Variables
651
+
652
+ **Add via UI**: Settings → CI/CD → Variables
653
+
654
+ ```yaml
655
+ deploy:
656
+ script:
657
+ - echo "Deploying with token: $DEPLOY_TOKEN"
658
+ only:
659
+ - main # Protected variables only available on protected branches
660
+ ```
661
+
662
+ ## Troubleshooting
663
+
664
+ ### Pipeline Not Triggered
665
+
666
+ **Check**:
667
+ 1. `.gitlab-ci.yml` syntax valid
668
+ 2. Rules/only/except conditions met
669
+ 3. CI/CD enabled for project
670
+ 4. GitLab Runner available
671
+
672
+ ### Cache Not Working
673
+
674
+ **Solutions**:
675
+ ```yaml
676
+ # Use specific cache key
677
+ cache:
678
+ key:
679
+ files:
680
+ - package-lock.json
681
+ paths:
682
+ - node_modules/
683
+
684
+ # Clear cache if corrupted
685
+ # Settings → CI/CD → Clear runner caches
686
+ ```
687
+
688
+ ### Artifacts Not Available
689
+
690
+ **Check**:
691
+ 1. Artifact expiration not exceeded
692
+ 2. Job succeeded (artifacts only uploaded on success by default)
693
+ 3. Dependencies declared correctly
694
+
695
+ ```yaml
696
+ deploy:
697
+ dependencies:
698
+ - build # Must match job name exactly
699
+ ```
700
+
701
+ ## Common Pitfalls
702
+
703
+ 1. **❌ No caching**: Slow pipelines
704
+ 2. **❌ Not using templates**: Duplication
705
+ 3. **❌ Artifacts too large**: Slow uploads/downloads
706
+ 4. **❌ No retry logic**: Flaky tests fail pipeline
707
+ 5. **❌ Running all jobs always**: Wasted resources
708
+ 6. **❌ No manual gates for production**: Risky deployments
709
+
710
+ ## Integration with Rulebook
711
+
712
+ If using `@hivehub/rulebook`, GitLab CI pipelines are generated automatically:
713
+
714
+ ```bash
715
+ # Generate GitLab CI pipeline
716
+ npx @hivehub/rulebook workflows
717
+
718
+ # Creates .gitlab-ci.yml with:
719
+ # - Language-specific stages
720
+ # - Caching configured
721
+ # - Artifacts management
722
+ # - Security scanning
723
+ ```
724
+
725
+ ## Related Templates
726
+
727
+ - See `/.rulebook/specs/GITHUB_ACTIONS.md` for GitHub Actions comparison
728
+ - See `/.rulebook/specs/CI_CD_PATTERNS.md` for general CI/CD patterns
729
+ - See `/.rulebook/specs/SECRETS_MANAGEMENT.md` for secrets handling
730
+ - See `/.rulebook/specs/QUALITY_ENFORCEMENT.md` for quality gates