@hivehub/rulebook 5.4.0 → 5.4.1

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