@hivehub/rulebook 1.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (379) hide show
  1. package/LICENSE +191 -0
  2. package/README.md +539 -0
  3. package/dist/agents/claude-code.d.ts +69 -0
  4. package/dist/agents/claude-code.d.ts.map +1 -0
  5. package/dist/agents/claude-code.js +180 -0
  6. package/dist/agents/claude-code.js.map +1 -0
  7. package/dist/agents/cursor-agent.d.ts +184 -0
  8. package/dist/agents/cursor-agent.d.ts.map +1 -0
  9. package/dist/agents/cursor-agent.js +299 -0
  10. package/dist/agents/cursor-agent.js.map +1 -0
  11. package/dist/agents/gemini-cli.d.ts +69 -0
  12. package/dist/agents/gemini-cli.d.ts.map +1 -0
  13. package/dist/agents/gemini-cli.js +180 -0
  14. package/dist/agents/gemini-cli.js.map +1 -0
  15. package/dist/cli/commands.d.ts +57 -0
  16. package/dist/cli/commands.d.ts.map +1 -0
  17. package/dist/cli/commands.js +1370 -0
  18. package/dist/cli/commands.js.map +1 -0
  19. package/dist/cli/docs-prompts.d.ts +3 -0
  20. package/dist/cli/docs-prompts.d.ts.map +1 -0
  21. package/dist/cli/docs-prompts.js +45 -0
  22. package/dist/cli/docs-prompts.js.map +1 -0
  23. package/dist/cli/prompts.d.ts +6 -0
  24. package/dist/cli/prompts.d.ts.map +1 -0
  25. package/dist/cli/prompts.js +376 -0
  26. package/dist/cli/prompts.js.map +1 -0
  27. package/dist/core/agent-manager.d.ts +89 -0
  28. package/dist/core/agent-manager.d.ts.map +1 -0
  29. package/dist/core/agent-manager.js +546 -0
  30. package/dist/core/agent-manager.js.map +1 -0
  31. package/dist/core/auto-fixer.d.ts +14 -0
  32. package/dist/core/auto-fixer.d.ts.map +1 -0
  33. package/dist/core/auto-fixer.js +207 -0
  34. package/dist/core/auto-fixer.js.map +1 -0
  35. package/dist/core/changelog-generator.d.ts +44 -0
  36. package/dist/core/changelog-generator.d.ts.map +1 -0
  37. package/dist/core/changelog-generator.js +222 -0
  38. package/dist/core/changelog-generator.js.map +1 -0
  39. package/dist/core/cli-bridge.d.ts +113 -0
  40. package/dist/core/cli-bridge.d.ts.map +1 -0
  41. package/dist/core/cli-bridge.js +1094 -0
  42. package/dist/core/cli-bridge.js.map +1 -0
  43. package/dist/core/config-manager.d.ts +65 -0
  44. package/dist/core/config-manager.d.ts.map +1 -0
  45. package/dist/core/config-manager.js +266 -0
  46. package/dist/core/config-manager.js.map +1 -0
  47. package/dist/core/coverage-checker.d.ts +14 -0
  48. package/dist/core/coverage-checker.d.ts.map +1 -0
  49. package/dist/core/coverage-checker.js +176 -0
  50. package/dist/core/coverage-checker.js.map +1 -0
  51. package/dist/core/custom-templates.d.ts +27 -0
  52. package/dist/core/custom-templates.d.ts.map +1 -0
  53. package/dist/core/custom-templates.js +122 -0
  54. package/dist/core/custom-templates.js.map +1 -0
  55. package/dist/core/dependency-checker.d.ts +21 -0
  56. package/dist/core/dependency-checker.d.ts.map +1 -0
  57. package/dist/core/dependency-checker.js +247 -0
  58. package/dist/core/dependency-checker.js.map +1 -0
  59. package/dist/core/detector.d.ts +3 -0
  60. package/dist/core/detector.d.ts.map +1 -0
  61. package/dist/core/detector.js +1443 -0
  62. package/dist/core/detector.js.map +1 -0
  63. package/dist/core/docs-generator.d.ts +9 -0
  64. package/dist/core/docs-generator.d.ts.map +1 -0
  65. package/dist/core/docs-generator.js +531 -0
  66. package/dist/core/docs-generator.js.map +1 -0
  67. package/dist/core/generator.d.ts +16 -0
  68. package/dist/core/generator.d.ts.map +1 -0
  69. package/dist/core/generator.js +561 -0
  70. package/dist/core/generator.js.map +1 -0
  71. package/dist/core/gitignore-generator.d.ts +13 -0
  72. package/dist/core/gitignore-generator.d.ts.map +1 -0
  73. package/dist/core/gitignore-generator.js +307 -0
  74. package/dist/core/gitignore-generator.js.map +1 -0
  75. package/dist/core/health-scorer.d.ts +22 -0
  76. package/dist/core/health-scorer.d.ts.map +1 -0
  77. package/dist/core/health-scorer.js +395 -0
  78. package/dist/core/health-scorer.js.map +1 -0
  79. package/dist/core/logger.d.ts +116 -0
  80. package/dist/core/logger.d.ts.map +1 -0
  81. package/dist/core/logger.js +289 -0
  82. package/dist/core/logger.js.map +1 -0
  83. package/dist/core/merger.d.ts +6 -0
  84. package/dist/core/merger.d.ts.map +1 -0
  85. package/dist/core/merger.js +131 -0
  86. package/dist/core/merger.js.map +1 -0
  87. package/dist/core/migrator.d.ts +19 -0
  88. package/dist/core/migrator.d.ts.map +1 -0
  89. package/dist/core/migrator.js +102 -0
  90. package/dist/core/migrator.js.map +1 -0
  91. package/dist/core/minimal-scaffolder.d.ts +8 -0
  92. package/dist/core/minimal-scaffolder.d.ts.map +1 -0
  93. package/dist/core/minimal-scaffolder.js +51 -0
  94. package/dist/core/minimal-scaffolder.js.map +1 -0
  95. package/dist/core/modern-console-new.d.ts +81 -0
  96. package/dist/core/modern-console-new.d.ts.map +1 -0
  97. package/dist/core/modern-console-new.js +340 -0
  98. package/dist/core/modern-console-new.js.map +1 -0
  99. package/dist/core/modern-console.d.ts +99 -0
  100. package/dist/core/modern-console.d.ts.map +1 -0
  101. package/dist/core/modern-console.js +568 -0
  102. package/dist/core/modern-console.js.map +1 -0
  103. package/dist/core/openspec-manager.d.ts +133 -0
  104. package/dist/core/openspec-manager.d.ts.map +1 -0
  105. package/dist/core/openspec-manager.js +605 -0
  106. package/dist/core/openspec-manager.js.map +1 -0
  107. package/dist/core/openspec-migrator.d.ts +27 -0
  108. package/dist/core/openspec-migrator.d.ts.map +1 -0
  109. package/dist/core/openspec-migrator.js +255 -0
  110. package/dist/core/openspec-migrator.js.map +1 -0
  111. package/dist/core/task-manager.d.ts +65 -0
  112. package/dist/core/task-manager.d.ts.map +1 -0
  113. package/dist/core/task-manager.js +318 -0
  114. package/dist/core/task-manager.js.map +1 -0
  115. package/dist/core/test-task-manager.d.ts +49 -0
  116. package/dist/core/test-task-manager.d.ts.map +1 -0
  117. package/dist/core/test-task-manager.js +121 -0
  118. package/dist/core/test-task-manager.js.map +1 -0
  119. package/dist/core/validator.d.ts +21 -0
  120. package/dist/core/validator.d.ts.map +1 -0
  121. package/dist/core/validator.js +177 -0
  122. package/dist/core/validator.js.map +1 -0
  123. package/dist/core/version-bumper.d.ts +19 -0
  124. package/dist/core/version-bumper.d.ts.map +1 -0
  125. package/dist/core/version-bumper.js +180 -0
  126. package/dist/core/version-bumper.js.map +1 -0
  127. package/dist/core/watcher.d.ts +9 -0
  128. package/dist/core/watcher.d.ts.map +1 -0
  129. package/dist/core/watcher.js +22 -0
  130. package/dist/core/watcher.js.map +1 -0
  131. package/dist/core/workflow-generator.d.ts +10 -0
  132. package/dist/core/workflow-generator.d.ts.map +1 -0
  133. package/dist/core/workflow-generator.js +279 -0
  134. package/dist/core/workflow-generator.js.map +1 -0
  135. package/dist/index.d.ts +3 -0
  136. package/dist/index.d.ts.map +1 -0
  137. package/dist/index.js +159 -0
  138. package/dist/index.js.map +1 -0
  139. package/dist/mcp/handlers/archive-task.d.ts +17 -0
  140. package/dist/mcp/handlers/archive-task.d.ts.map +1 -0
  141. package/dist/mcp/handlers/archive-task.js +36 -0
  142. package/dist/mcp/handlers/archive-task.js.map +1 -0
  143. package/dist/mcp/handlers/create-task.d.ts +17 -0
  144. package/dist/mcp/handlers/create-task.d.ts.map +1 -0
  145. package/dist/mcp/handlers/create-task.js +56 -0
  146. package/dist/mcp/handlers/create-task.js.map +1 -0
  147. package/dist/mcp/handlers/list-tasks.d.ts +22 -0
  148. package/dist/mcp/handlers/list-tasks.d.ts.map +1 -0
  149. package/dist/mcp/handlers/list-tasks.js +42 -0
  150. package/dist/mcp/handlers/list-tasks.js.map +1 -0
  151. package/dist/mcp/handlers/show-task.d.ts +25 -0
  152. package/dist/mcp/handlers/show-task.d.ts.map +1 -0
  153. package/dist/mcp/handlers/show-task.js +43 -0
  154. package/dist/mcp/handlers/show-task.js.map +1 -0
  155. package/dist/mcp/handlers/update-task.d.ts +17 -0
  156. package/dist/mcp/handlers/update-task.d.ts.map +1 -0
  157. package/dist/mcp/handlers/update-task.js +35 -0
  158. package/dist/mcp/handlers/update-task.js.map +1 -0
  159. package/dist/mcp/handlers/validate-task.d.ts +15 -0
  160. package/dist/mcp/handlers/validate-task.d.ts.map +1 -0
  161. package/dist/mcp/handlers/validate-task.js +27 -0
  162. package/dist/mcp/handlers/validate-task.js.map +1 -0
  163. package/dist/mcp/rulebook-config.d.ts +22 -0
  164. package/dist/mcp/rulebook-config.d.ts.map +1 -0
  165. package/dist/mcp/rulebook-config.js +65 -0
  166. package/dist/mcp/rulebook-config.js.map +1 -0
  167. package/dist/mcp/rulebook-server.d.ts +4 -0
  168. package/dist/mcp/rulebook-server.d.ts.map +1 -0
  169. package/dist/mcp/rulebook-server.js +246 -0
  170. package/dist/mcp/rulebook-server.js.map +1 -0
  171. package/dist/types.d.ts +190 -0
  172. package/dist/types.d.ts.map +1 -0
  173. package/dist/types.js +2 -0
  174. package/dist/types.js.map +1 -0
  175. package/dist/utils/file-system.d.ts +9 -0
  176. package/dist/utils/file-system.d.ts.map +1 -0
  177. package/dist/utils/file-system.js +51 -0
  178. package/dist/utils/file-system.js.map +1 -0
  179. package/dist/utils/git-hooks.d.ts +8 -0
  180. package/dist/utils/git-hooks.d.ts.map +1 -0
  181. package/dist/utils/git-hooks.js +440 -0
  182. package/dist/utils/git-hooks.js.map +1 -0
  183. package/dist/utils/rulesignore.d.ts +9 -0
  184. package/dist/utils/rulesignore.d.ts.map +1 -0
  185. package/dist/utils/rulesignore.js +42 -0
  186. package/dist/utils/rulesignore.js.map +1 -0
  187. package/package.json +106 -0
  188. package/templates/cli/AIDER.md +49 -0
  189. package/templates/cli/AMAZON_Q.md +25 -0
  190. package/templates/cli/AUGGIE.md +32 -0
  191. package/templates/cli/CLAUDE.md +32 -0
  192. package/templates/cli/CLAUDE_CODE.md +35 -0
  193. package/templates/cli/CLINE.md +32 -0
  194. package/templates/cli/CODEBUDDY.md +20 -0
  195. package/templates/cli/CODEIUM.md +20 -0
  196. package/templates/cli/CODEX.md +21 -0
  197. package/templates/cli/CONTINUE.md +34 -0
  198. package/templates/cli/CURSOR_CLI.md +28 -0
  199. package/templates/cli/FACTORY.md +18 -0
  200. package/templates/cli/GEMINI.md +35 -0
  201. package/templates/cli/KILOCODE.md +18 -0
  202. package/templates/cli/OPENCODE.md +18 -0
  203. package/templates/cli/_GENERIC_TEMPLATE.md +29 -0
  204. package/templates/commands/rulebook-task-apply.md +67 -0
  205. package/templates/commands/rulebook-task-archive.md +70 -0
  206. package/templates/commands/rulebook-task-create.md +93 -0
  207. package/templates/commands/rulebook-task-list.md +42 -0
  208. package/templates/commands/rulebook-task-show.md +52 -0
  209. package/templates/commands/rulebook-task-validate.md +53 -0
  210. package/templates/core/AGENT_AUTOMATION.md +184 -0
  211. package/templates/core/DAG.md +304 -0
  212. package/templates/core/DOCUMENTATION_RULES.md +37 -0
  213. package/templates/core/QUALITY_ENFORCEMENT.md +68 -0
  214. package/templates/core/RULEBOOK.md +1874 -0
  215. package/templates/frameworks/ANGULAR.md +36 -0
  216. package/templates/frameworks/DJANGO.md +83 -0
  217. package/templates/frameworks/ELECTRON.md +147 -0
  218. package/templates/frameworks/FLASK.md +38 -0
  219. package/templates/frameworks/FLUTTER.md +55 -0
  220. package/templates/frameworks/JQUERY.md +32 -0
  221. package/templates/frameworks/LARAVEL.md +38 -0
  222. package/templates/frameworks/NESTJS.md +43 -0
  223. package/templates/frameworks/NEXTJS.md +127 -0
  224. package/templates/frameworks/NUXT.md +40 -0
  225. package/templates/frameworks/RAILS.md +66 -0
  226. package/templates/frameworks/REACT.md +38 -0
  227. package/templates/frameworks/REACT_NATIVE.md +47 -0
  228. package/templates/frameworks/SPRING.md +39 -0
  229. package/templates/frameworks/SYMFONY.md +36 -0
  230. package/templates/frameworks/VUE.md +36 -0
  231. package/templates/frameworks/ZEND.md +35 -0
  232. package/templates/git/CI_CD_PATTERNS.md +661 -0
  233. package/templates/git/GITHUB_ACTIONS.md +728 -0
  234. package/templates/git/GITLAB_CI.md +730 -0
  235. package/templates/git/GIT_WORKFLOW.md +1157 -0
  236. package/templates/git/SECRETS_MANAGEMENT.md +585 -0
  237. package/templates/hooks/COMMIT_MSG.md +530 -0
  238. package/templates/hooks/POST_CHECKOUT.md +546 -0
  239. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -0
  240. package/templates/hooks/PRE_COMMIT.md +414 -0
  241. package/templates/hooks/PRE_PUSH.md +601 -0
  242. package/templates/hooks/csharp-pre-commit.sh +23 -0
  243. package/templates/hooks/csharp-pre-push.sh +23 -0
  244. package/templates/hooks/dart-pre-commit.sh +30 -0
  245. package/templates/hooks/dart-pre-push.sh +25 -0
  246. package/templates/hooks/elixir-pre-commit.sh +32 -0
  247. package/templates/hooks/elixir-pre-push.sh +31 -0
  248. package/templates/hooks/erlang-pre-commit.sh +30 -0
  249. package/templates/hooks/erlang-pre-push.sh +37 -0
  250. package/templates/hooks/go-pre-commit.sh +40 -0
  251. package/templates/hooks/go-pre-push.sh +31 -0
  252. package/templates/hooks/haskell-pre-commit.sh +41 -0
  253. package/templates/hooks/haskell-pre-push.sh +37 -0
  254. package/templates/hooks/java-pre-commit.sh +34 -0
  255. package/templates/hooks/java-pre-push.sh +24 -0
  256. package/templates/hooks/kotlin-pre-commit.sh +32 -0
  257. package/templates/hooks/kotlin-pre-push.sh +16 -0
  258. package/templates/hooks/php-pre-commit.sh +36 -0
  259. package/templates/hooks/php-pre-push.sh +26 -0
  260. package/templates/hooks/python-pre-commit.sh +51 -0
  261. package/templates/hooks/python-pre-push.sh +25 -0
  262. package/templates/hooks/ruby-pre-commit.sh +33 -0
  263. package/templates/hooks/ruby-pre-push.sh +32 -0
  264. package/templates/hooks/rust-pre-commit.sh +30 -0
  265. package/templates/hooks/rust-pre-push.sh +30 -0
  266. package/templates/hooks/scala-pre-commit.sh +32 -0
  267. package/templates/hooks/scala-pre-push.sh +24 -0
  268. package/templates/hooks/swift-pre-commit.sh +25 -0
  269. package/templates/hooks/swift-pre-push.sh +23 -0
  270. package/templates/hooks/typescript-pre-commit.sh +37 -0
  271. package/templates/hooks/typescript-pre-push.sh +36 -0
  272. package/templates/ides/COPILOT.md +37 -0
  273. package/templates/ides/CURSOR.md +43 -0
  274. package/templates/ides/JETBRAINS_AI.md +35 -0
  275. package/templates/ides/REPLIT.md +36 -0
  276. package/templates/ides/TABNINE.md +29 -0
  277. package/templates/ides/VSCODE.md +40 -0
  278. package/templates/ides/WINDSURF.md +36 -0
  279. package/templates/ides/ZED.md +32 -0
  280. package/templates/languages/ADA.md +58 -0
  281. package/templates/languages/C.md +333 -0
  282. package/templates/languages/CPP.md +743 -0
  283. package/templates/languages/CSHARP.md +417 -0
  284. package/templates/languages/DART.md +332 -0
  285. package/templates/languages/ELIXIR.md +454 -0
  286. package/templates/languages/ERLANG.md +361 -0
  287. package/templates/languages/GO.md +645 -0
  288. package/templates/languages/HASKELL.md +177 -0
  289. package/templates/languages/JAVA.md +607 -0
  290. package/templates/languages/JAVASCRIPT.md +631 -0
  291. package/templates/languages/JULIA.md +97 -0
  292. package/templates/languages/KOTLIN.md +511 -0
  293. package/templates/languages/LISP.md +100 -0
  294. package/templates/languages/LUA.md +74 -0
  295. package/templates/languages/OBJECTIVEC.md +90 -0
  296. package/templates/languages/PHP.md +416 -0
  297. package/templates/languages/PYTHON.md +682 -0
  298. package/templates/languages/R.md +350 -0
  299. package/templates/languages/RUBY.md +421 -0
  300. package/templates/languages/RUST.md +477 -0
  301. package/templates/languages/SAS.md +73 -0
  302. package/templates/languages/SCALA.md +348 -0
  303. package/templates/languages/SOLIDITY.md +580 -0
  304. package/templates/languages/SQL.md +137 -0
  305. package/templates/languages/SWIFT.md +466 -0
  306. package/templates/languages/TYPESCRIPT.md +591 -0
  307. package/templates/languages/ZIG.md +265 -0
  308. package/templates/modules/ATLASSIAN.md +255 -0
  309. package/templates/modules/CONTEXT7.md +54 -0
  310. package/templates/modules/FIGMA.md +267 -0
  311. package/templates/modules/GITHUB_MCP.md +64 -0
  312. package/templates/modules/GRAFANA.md +328 -0
  313. package/templates/modules/NOTION.md +247 -0
  314. package/templates/modules/PLAYWRIGHT.md +90 -0
  315. package/templates/modules/RULEBOOK_MCP.md +156 -0
  316. package/templates/modules/SERENA.md +337 -0
  317. package/templates/modules/SUPABASE.md +223 -0
  318. package/templates/modules/SYNAP.md +69 -0
  319. package/templates/modules/VECTORIZER.md +63 -0
  320. package/templates/services/AZURE_BLOB.md +184 -0
  321. package/templates/services/CASSANDRA.md +239 -0
  322. package/templates/services/DYNAMODB.md +308 -0
  323. package/templates/services/ELASTICSEARCH.md +347 -0
  324. package/templates/services/GCS.md +178 -0
  325. package/templates/services/INFLUXDB.md +265 -0
  326. package/templates/services/KAFKA.md +341 -0
  327. package/templates/services/MARIADB.md +183 -0
  328. package/templates/services/MEMCACHED.md +242 -0
  329. package/templates/services/MINIO.md +201 -0
  330. package/templates/services/MONGODB.md +268 -0
  331. package/templates/services/MYSQL.md +358 -0
  332. package/templates/services/NEO4J.md +247 -0
  333. package/templates/services/ORACLE.md +290 -0
  334. package/templates/services/POSTGRESQL.md +326 -0
  335. package/templates/services/RABBITMQ.md +286 -0
  336. package/templates/services/REDIS.md +292 -0
  337. package/templates/services/S3.md +298 -0
  338. package/templates/services/SQLITE.md +294 -0
  339. package/templates/services/SQLSERVER.md +294 -0
  340. package/templates/workflows/codespell.yml +31 -0
  341. package/templates/workflows/cpp-lint.yml +47 -0
  342. package/templates/workflows/cpp-publish.yml +119 -0
  343. package/templates/workflows/cpp-test.yml +77 -0
  344. package/templates/workflows/dotnet-lint.yml +29 -0
  345. package/templates/workflows/dotnet-publish.yml +40 -0
  346. package/templates/workflows/dotnet-test.yml +41 -0
  347. package/templates/workflows/elixir-lint.yml +45 -0
  348. package/templates/workflows/elixir-publish.yml +49 -0
  349. package/templates/workflows/elixir-test.yml +54 -0
  350. package/templates/workflows/erlang-lint.yml +47 -0
  351. package/templates/workflows/erlang-test.yml +62 -0
  352. package/templates/workflows/go-lint.yml +39 -0
  353. package/templates/workflows/go-publish.yml +95 -0
  354. package/templates/workflows/go-test.yml +59 -0
  355. package/templates/workflows/java-lint.yml +60 -0
  356. package/templates/workflows/java-publish.yml +120 -0
  357. package/templates/workflows/java-test.yml +85 -0
  358. package/templates/workflows/kotlin-lint.yml +34 -0
  359. package/templates/workflows/kotlin-publish.yml +56 -0
  360. package/templates/workflows/kotlin-test.yml +48 -0
  361. package/templates/workflows/php-lint.yml +39 -0
  362. package/templates/workflows/php-publish.yml +50 -0
  363. package/templates/workflows/php-test.yml +54 -0
  364. package/templates/workflows/python-lint.yml +47 -0
  365. package/templates/workflows/python-publish.yml +91 -0
  366. package/templates/workflows/python-test.yml +59 -0
  367. package/templates/workflows/rust-lint.yml +54 -0
  368. package/templates/workflows/rust-publish.yml +66 -0
  369. package/templates/workflows/rust-test.yml +75 -0
  370. package/templates/workflows/solidity-lint.yml +41 -0
  371. package/templates/workflows/solidity-test.yml +47 -0
  372. package/templates/workflows/swift-lint.yml +32 -0
  373. package/templates/workflows/swift-publish.yml +58 -0
  374. package/templates/workflows/swift-test.yml +44 -0
  375. package/templates/workflows/typescript-lint.yml +61 -0
  376. package/templates/workflows/typescript-publish.yml +60 -0
  377. package/templates/workflows/typescript-test.yml +73 -0
  378. package/templates/workflows/zig-lint.yml +27 -0
  379. package/templates/workflows/zig-test.yml +40 -0
@@ -0,0 +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/GITHUB_ACTIONS.md` for GitHub Actions comparison
728
+ - See `/rulebook/CI_CD_PATTERNS.md` for general CI/CD patterns
729
+ - See `/rulebook/SECRETS_MANAGEMENT.md` for secrets handling
730
+ - See `/rulebook/QUALITY_ENFORCEMENT.md` for quality gates