@hivehub/rulebook 5.8.2 → 6.0.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 (512) hide show
  1. package/README.md +86 -216
  2. package/dist/cli/commands/claude.d.ts.map +1 -1
  3. package/dist/cli/commands/claude.js +10 -4
  4. package/dist/cli/commands/claude.js.map +1 -1
  5. package/dist/cli/commands/context-intelligence.d.ts.map +1 -1
  6. package/dist/cli/commands/context-intelligence.js.map +1 -1
  7. package/dist/cli/commands/index.d.ts +1 -2
  8. package/dist/cli/commands/index.d.ts.map +1 -1
  9. package/dist/cli/commands/index.js +1 -2
  10. package/dist/cli/commands/index.js.map +1 -1
  11. package/dist/cli/commands/init.d.ts.map +1 -1
  12. package/dist/cli/commands/init.js +16 -91
  13. package/dist/cli/commands/init.js.map +1 -1
  14. package/dist/cli/commands/mcp.d.ts.map +1 -1
  15. package/dist/cli/commands/mcp.js.map +1 -1
  16. package/dist/cli/commands/misc.d.ts +0 -1
  17. package/dist/cli/commands/misc.d.ts.map +1 -1
  18. package/dist/cli/commands/misc.js +0 -76
  19. package/dist/cli/commands/misc.js.map +1 -1
  20. package/dist/cli/commands/plans.d.ts.map +1 -1
  21. package/dist/cli/commands/plans.js.map +1 -1
  22. package/dist/cli/commands/skills.d.ts.map +1 -1
  23. package/dist/cli/commands/skills.js +6 -2
  24. package/dist/cli/commands/skills.js.map +1 -1
  25. package/dist/cli/commands/task.d.ts.map +1 -1
  26. package/dist/cli/commands/task.js +3 -1
  27. package/dist/cli/commands/task.js.map +1 -1
  28. package/dist/cli/commands/update.d.ts +7 -0
  29. package/dist/cli/commands/update.d.ts.map +1 -1
  30. package/dist/cli/commands/update.js +61 -165
  31. package/dist/cli/commands/update.js.map +1 -1
  32. package/dist/cli/commands/workspace.d.ts.map +1 -1
  33. package/dist/cli/commands/workspace.js +4 -3
  34. package/dist/cli/commands/workspace.js.map +1 -1
  35. package/dist/cli/prompts.d.ts.map +1 -1
  36. package/dist/cli/prompts.js +0 -40
  37. package/dist/cli/prompts.js.map +1 -1
  38. package/dist/core/claude/claude-mcp.d.ts.map +1 -1
  39. package/dist/core/claude/claude-mcp.js +1 -1
  40. package/dist/core/claude/claude-mcp.js.map +1 -1
  41. package/dist/core/claude/claude-md-generator.d.ts.map +1 -1
  42. package/dist/core/claude/claude-md-generator.js.map +1 -1
  43. package/dist/core/claude/claude-settings-manager.d.ts.map +1 -1
  44. package/dist/core/claude/claude-settings-manager.js +9 -6
  45. package/dist/core/claude/claude-settings-manager.js.map +1 -1
  46. package/dist/core/custom-templates.d.ts.map +1 -1
  47. package/dist/core/custom-templates.js.map +1 -1
  48. package/dist/core/detect/detector.d.ts +0 -28
  49. package/dist/core/detect/detector.d.ts.map +1 -1
  50. package/dist/core/detect/detector.js +5 -84
  51. package/dist/core/detect/detector.js.map +1 -1
  52. package/dist/core/detect/library-registry.d.ts.map +1 -1
  53. package/dist/core/detect/library-registry.js.map +1 -1
  54. package/dist/core/docs/docs-generator.d.ts.map +1 -1
  55. package/dist/core/docs/docs-generator.js.map +1 -1
  56. package/dist/core/docs/mcp-reference-generator.d.ts.map +1 -1
  57. package/dist/core/docs/mcp-reference-generator.js.map +1 -1
  58. package/dist/core/generators/generator.d.ts.map +1 -1
  59. package/dist/core/generators/generator.js +0 -72
  60. package/dist/core/generators/generator.js.map +1 -1
  61. package/dist/core/generators/gitignore-generator.d.ts.map +1 -1
  62. package/dist/core/generators/gitignore-generator.js +12 -1
  63. package/dist/core/generators/gitignore-generator.js.map +1 -1
  64. package/dist/core/generators/minimal-scaffolder.d.ts.map +1 -1
  65. package/dist/core/generators/minimal-scaffolder.js.map +1 -1
  66. package/dist/core/generators/rules-generator.d.ts.map +1 -1
  67. package/dist/core/generators/rules-generator.js.map +1 -1
  68. package/dist/core/generators/workflow-generator.d.ts +0 -10
  69. package/dist/core/generators/workflow-generator.d.ts.map +1 -1
  70. package/dist/core/generators/workflow-generator.js +0 -307
  71. package/dist/core/generators/workflow-generator.js.map +1 -1
  72. package/dist/core/logger.d.ts.map +1 -1
  73. package/dist/core/logger.js.map +1 -1
  74. package/dist/core/merger.d.ts.map +1 -1
  75. package/dist/core/merger.js.map +1 -1
  76. package/dist/core/migrator.d.ts.map +1 -1
  77. package/dist/core/migrator.js +2 -1
  78. package/dist/core/migrator.js.map +1 -1
  79. package/dist/core/quality/coverage-checker.d.ts.map +1 -1
  80. package/dist/core/quality/coverage-checker.js.map +1 -1
  81. package/dist/core/quality/dependency-checker.d.ts.map +1 -1
  82. package/dist/core/quality/dependency-checker.js +3 -1
  83. package/dist/core/quality/dependency-checker.js.map +1 -1
  84. package/dist/core/quality/doctor.d.ts.map +1 -1
  85. package/dist/core/quality/doctor.js.map +1 -1
  86. package/dist/core/quality/validator.d.ts.map +1 -1
  87. package/dist/core/quality/validator.js.map +1 -1
  88. package/dist/core/rule-engine.d.ts +5 -21
  89. package/dist/core/rule-engine.d.ts.map +1 -1
  90. package/dist/core/rule-engine.js +9 -191
  91. package/dist/core/rule-engine.js.map +1 -1
  92. package/dist/core/skills/skills-manager.d.ts.map +1 -1
  93. package/dist/core/skills/skills-manager.js.map +1 -1
  94. package/dist/core/state/config-manager.d.ts.map +1 -1
  95. package/dist/core/state/config-manager.js +6 -50
  96. package/dist/core/state/config-manager.js.map +1 -1
  97. package/dist/core/state/override-manager.js.map +1 -1
  98. package/dist/core/state/state-writer.d.ts.map +1 -1
  99. package/dist/core/state/state-writer.js.map +1 -1
  100. package/dist/core/state/version-bumper.d.ts.map +1 -1
  101. package/dist/core/state/version-bumper.js.map +1 -1
  102. package/dist/core/tasks/decision-manager.d.ts.map +1 -1
  103. package/dist/core/tasks/decision-manager.js +6 -1
  104. package/dist/core/tasks/decision-manager.js.map +1 -1
  105. package/dist/core/tasks/knowledge-manager.d.ts.map +1 -1
  106. package/dist/core/tasks/knowledge-manager.js.map +1 -1
  107. package/dist/core/tasks/learn-manager.d.ts.map +1 -1
  108. package/dist/core/tasks/learn-manager.js.map +1 -1
  109. package/dist/core/tasks/plans-manager.d.ts.map +1 -1
  110. package/dist/core/tasks/plans-manager.js.map +1 -1
  111. package/dist/core/tasks/task-manager.d.ts.map +1 -1
  112. package/dist/core/tasks/task-manager.js.map +1 -1
  113. package/dist/core/workspace/legacy-migrator.d.ts.map +1 -1
  114. package/dist/core/workspace/legacy-migrator.js.map +1 -1
  115. package/dist/core/workspace/project-worker.d.ts +0 -4
  116. package/dist/core/workspace/project-worker.d.ts.map +1 -1
  117. package/dist/core/workspace/project-worker.js +0 -28
  118. package/dist/core/workspace/project-worker.js.map +1 -1
  119. package/dist/core/workspace/workspace-manager.d.ts +0 -11
  120. package/dist/core/workspace/workspace-manager.d.ts.map +1 -1
  121. package/dist/core/workspace/workspace-manager.js +6 -30
  122. package/dist/core/workspace/workspace-manager.js.map +1 -1
  123. package/dist/core/workspace/workspace-types.d.ts +0 -1
  124. package/dist/core/workspace/workspace-types.d.ts.map +1 -1
  125. package/dist/hooks/safe-flag-io.js.map +1 -1
  126. package/dist/index.d.ts +1 -1
  127. package/dist/index.d.ts.map +1 -1
  128. package/dist/index.js +3 -82
  129. package/dist/index.js.map +1 -1
  130. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  131. package/dist/mcp/rulebook-server.js +55 -1634
  132. package/dist/mcp/rulebook-server.js.map +1 -1
  133. package/dist/mcp/tools/context.d.ts +23 -0
  134. package/dist/mcp/tools/context.d.ts.map +1 -0
  135. package/dist/mcp/tools/context.js +2 -0
  136. package/dist/mcp/tools/context.js.map +1 -0
  137. package/dist/mcp/tools/decision-tools.d.ts +5 -0
  138. package/dist/mcp/tools/decision-tools.d.ts.map +1 -0
  139. package/dist/mcp/tools/decision-tools.js +220 -0
  140. package/dist/mcp/tools/decision-tools.js.map +1 -0
  141. package/dist/mcp/tools/knowledge-tools.d.ts +5 -0
  142. package/dist/mcp/tools/knowledge-tools.d.ts.map +1 -0
  143. package/dist/mcp/tools/knowledge-tools.js +157 -0
  144. package/dist/mcp/tools/knowledge-tools.js.map +1 -0
  145. package/dist/mcp/tools/learn-tools.d.ts +5 -0
  146. package/dist/mcp/tools/learn-tools.d.ts.map +1 -0
  147. package/dist/mcp/tools/learn-tools.js +150 -0
  148. package/dist/mcp/tools/learn-tools.js.map +1 -0
  149. package/dist/mcp/tools/rules-tools.d.ts +4 -0
  150. package/dist/mcp/tools/rules-tools.d.ts.map +1 -0
  151. package/dist/mcp/tools/rules-tools.js +47 -0
  152. package/dist/mcp/tools/rules-tools.js.map +1 -0
  153. package/dist/mcp/tools/skill-tools.d.ts +5 -0
  154. package/dist/mcp/tools/skill-tools.d.ts.map +1 -0
  155. package/dist/mcp/tools/skill-tools.js +330 -0
  156. package/dist/mcp/tools/skill-tools.js.map +1 -0
  157. package/dist/mcp/tools/task-tools.d.ts +5 -0
  158. package/dist/mcp/tools/task-tools.d.ts.map +1 -0
  159. package/dist/mcp/tools/task-tools.js +185 -0
  160. package/dist/mcp/tools/task-tools.js.map +1 -0
  161. package/dist/mcp/tools/workspace-tools.d.ts +6 -0
  162. package/dist/mcp/tools/workspace-tools.d.ts.map +1 -0
  163. package/dist/mcp/tools/workspace-tools.js +118 -0
  164. package/dist/mcp/tools/workspace-tools.js.map +1 -0
  165. package/dist/types.d.ts +1 -46
  166. package/dist/types.d.ts.map +1 -1
  167. package/dist/utils/file-system.d.ts.map +1 -1
  168. package/dist/utils/file-system.js.map +1 -1
  169. package/dist/utils/git-hooks.d.ts.map +1 -1
  170. package/dist/utils/git-hooks.js.map +1 -1
  171. package/dist/utils/gitignore.d.ts.map +1 -1
  172. package/dist/utils/gitignore.js.map +1 -1
  173. package/dist/utils/rulesignore.d.ts.map +1 -1
  174. package/dist/utils/rulesignore.js.map +1 -1
  175. package/package.json +25 -27
  176. package/templates/agents/architect.md +51 -51
  177. package/templates/agents/build-engineer.md +36 -36
  178. package/templates/agents/code-reviewer.md +47 -47
  179. package/templates/agents/docs-writer.md +38 -38
  180. package/templates/agents/implementer.md +42 -42
  181. package/templates/agents/performance-engineer.md +49 -49
  182. package/templates/agents/researcher.md +38 -38
  183. package/templates/agents/security-reviewer.md +40 -40
  184. package/templates/agents/team-lead.md +37 -37
  185. package/templates/agents/tester.md +48 -48
  186. package/templates/ci/rulebook-review.yml +26 -26
  187. package/templates/cli/CLAUDE.md +102 -117
  188. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  189. package/templates/commands/rulebook-decision-create.md +55 -55
  190. package/templates/commands/rulebook-decision-list.md +15 -15
  191. package/templates/commands/rulebook-knowledge-add.md +41 -41
  192. package/templates/commands/rulebook-knowledge-list.md +15 -15
  193. package/templates/commands/rulebook-learn-capture.md +1 -2
  194. package/templates/commands/rulebook-task-apply.md +67 -67
  195. package/templates/commands/rulebook-task-archive.md +94 -94
  196. package/templates/commands/rulebook-task-create.md +93 -93
  197. package/templates/commands/rulebook-task-list.md +42 -42
  198. package/templates/commands/rulebook-task-show.md +52 -52
  199. package/templates/commands/rulebook-task-validate.md +53 -53
  200. package/templates/compact-context/_default.md +23 -23
  201. package/templates/compact-context/cpp.md +26 -26
  202. package/templates/compact-context/go.md +26 -26
  203. package/templates/compact-context/python.md +26 -26
  204. package/templates/compact-context/rust.md +28 -28
  205. package/templates/compact-context/typescript.md +29 -29
  206. package/templates/core/AGENTS_LEAN.md +4 -9
  207. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  208. package/templates/core/AGENT_AUTOMATION.md +273 -296
  209. package/templates/core/CLAUDE_MD_v2.md +85 -90
  210. package/templates/core/DAG.md +304 -304
  211. package/templates/core/DECISIONS.md +38 -38
  212. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  213. package/templates/core/KNOWLEDGE.md +49 -49
  214. package/templates/core/MULTI_AGENT.md +74 -74
  215. package/templates/core/PLANS.md +28 -28
  216. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  217. package/templates/core/RULEBOOK.md +1936 -1947
  218. package/templates/core/TIER1_PROHIBITIONS.md +154 -154
  219. package/templates/core/TOKEN_OPTIMIZATION.md +49 -49
  220. package/templates/core/WORKSPACE.md +4 -8
  221. package/templates/git/CI_CD_PATTERNS.md +661 -661
  222. package/templates/git/GITHUB_ACTIONS.md +728 -728
  223. package/templates/git/GITLAB_CI.md +730 -730
  224. package/templates/git/GIT_WORKFLOW.md +1192 -1192
  225. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  226. package/templates/hooks/COMMIT_MSG.md +530 -530
  227. package/templates/hooks/POST_CHECKOUT.md +546 -546
  228. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  229. package/templates/hooks/PRE_COMMIT.md +414 -414
  230. package/templates/hooks/PRE_PUSH.md +601 -601
  231. package/templates/hooks/enforce-pre-tool.sh +26 -9
  232. package/templates/hooks/update-check.ps1 +84 -84
  233. package/templates/hooks/update-check.sh +45 -21
  234. package/templates/languages/C.md +333 -333
  235. package/templates/languages/CPP.md +743 -743
  236. package/templates/languages/CSHARP.md +417 -417
  237. package/templates/languages/ELIXIR.md +454 -454
  238. package/templates/languages/ERLANG.md +361 -361
  239. package/templates/languages/GO.md +645 -645
  240. package/templates/languages/HASKELL.md +177 -177
  241. package/templates/languages/JAVA.md +607 -607
  242. package/templates/languages/JAVASCRIPT.md +631 -631
  243. package/templates/languages/JULIA.md +97 -97
  244. package/templates/languages/KOTLIN.md +511 -511
  245. package/templates/languages/LISP.md +100 -100
  246. package/templates/languages/LUA.md +74 -74
  247. package/templates/languages/OBJECTIVEC.md +90 -90
  248. package/templates/languages/PHP.md +416 -416
  249. package/templates/languages/PYTHON.md +682 -682
  250. package/templates/languages/RUBY.md +421 -421
  251. package/templates/languages/RUST.md +477 -477
  252. package/templates/languages/SAS.md +73 -73
  253. package/templates/languages/SCALA.md +348 -348
  254. package/templates/languages/SOLIDITY.md +580 -580
  255. package/templates/languages/SQL.md +137 -137
  256. package/templates/languages/SWIFT.md +466 -466
  257. package/templates/languages/TYPESCRIPT.md +591 -591
  258. package/templates/languages/ZIG.md +265 -265
  259. package/templates/modules/CONTEXT7.md +54 -54
  260. package/templates/modules/GITHUB_MCP.md +64 -64
  261. package/templates/modules/PLAYWRIGHT.md +90 -90
  262. package/templates/modules/RULEBOOK_MCP.md +208 -208
  263. package/templates/modules/SERENA.md +337 -337
  264. package/templates/modules/SUPABASE.md +223 -223
  265. package/templates/modules/SYNAP.md +69 -69
  266. package/templates/modules/VECTORIZER.md +63 -63
  267. package/templates/modules/sequential-thinking.md +42 -42
  268. package/templates/rules/consult-analysis-before-implementing.md +21 -23
  269. package/templates/rules/cpp.md +46 -46
  270. package/templates/rules/csharp.md +44 -44
  271. package/templates/rules/diagnostic-first.md +39 -39
  272. package/templates/rules/fail-twice-escalate.md +46 -46
  273. package/templates/rules/follow-task-sequence.md +36 -36
  274. package/templates/rules/git-safety.md +29 -29
  275. package/templates/rules/go.md +40 -40
  276. package/templates/rules/incremental-implementation.md +56 -56
  277. package/templates/rules/incremental-tests.md +29 -29
  278. package/templates/rules/java.md +43 -43
  279. package/templates/rules/javascript.md +39 -39
  280. package/templates/rules/knowledge-base-usage.md +41 -41
  281. package/templates/rules/multi-agent-teams.md +75 -75
  282. package/templates/rules/no-deferred.md +31 -31
  283. package/templates/rules/no-shortcuts.md +30 -30
  284. package/templates/rules/python.md +43 -43
  285. package/templates/rules/research-first.md +30 -30
  286. package/templates/rules/respect-handoff-trigger.md +41 -41
  287. package/templates/rules/rust.md +40 -40
  288. package/templates/rules/sequential-editing.md +21 -21
  289. package/templates/rules/session-workflow.md +24 -24
  290. package/templates/rules/task-decomposition.md +32 -32
  291. package/templates/rules/typescript.md +40 -40
  292. package/templates/skills/cli/claude/SKILL.md +42 -42
  293. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  294. package/templates/skills/core/dag/SKILL.md +314 -314
  295. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  296. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  297. package/templates/skills/core/rulebook/SKILL.md +176 -176
  298. package/templates/skills/core/rulebook-terse/SKILL.md +116 -116
  299. package/templates/skills/core/rulebook-terse-commit/SKILL.md +96 -96
  300. package/templates/skills/core/rulebook-terse-review/SKILL.md +112 -112
  301. package/templates/skills/dev/accessibility/SKILL.md +17 -17
  302. package/templates/skills/dev/analysis/SKILL.md +19 -19
  303. package/templates/skills/dev/api-design/SKILL.md +15 -15
  304. package/templates/skills/dev/architect/SKILL.md +17 -17
  305. package/templates/skills/dev/build-fix/SKILL.md +17 -17
  306. package/templates/skills/dev/db-design/SKILL.md +15 -15
  307. package/templates/skills/dev/debug/SKILL.md +16 -16
  308. package/templates/skills/dev/deploy/SKILL.md +17 -17
  309. package/templates/skills/dev/docs/SKILL.md +17 -17
  310. package/templates/skills/dev/handoff/SKILL.md +27 -27
  311. package/templates/skills/dev/migrate/SKILL.md +15 -15
  312. package/templates/skills/dev/perf/SKILL.md +17 -17
  313. package/templates/skills/dev/refactor/SKILL.md +17 -17
  314. package/templates/skills/dev/research/SKILL.md +14 -14
  315. package/templates/skills/dev/review/SKILL.md +18 -18
  316. package/templates/skills/dev/security-audit/SKILL.md +17 -17
  317. package/templates/skills/languages/c/SKILL.md +343 -343
  318. package/templates/skills/languages/cpp/SKILL.md +753 -753
  319. package/templates/skills/languages/csharp/SKILL.md +427 -427
  320. package/templates/skills/languages/elixir/SKILL.md +464 -464
  321. package/templates/skills/languages/erlang/SKILL.md +371 -371
  322. package/templates/skills/languages/go/SKILL.md +655 -655
  323. package/templates/skills/languages/haskell/SKILL.md +187 -187
  324. package/templates/skills/languages/java/SKILL.md +617 -617
  325. package/templates/skills/languages/javascript/SKILL.md +641 -641
  326. package/templates/skills/languages/julia/SKILL.md +107 -107
  327. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  328. package/templates/skills/languages/lisp/SKILL.md +110 -110
  329. package/templates/skills/languages/lua/SKILL.md +84 -84
  330. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  331. package/templates/skills/languages/php/SKILL.md +426 -426
  332. package/templates/skills/languages/python/SKILL.md +692 -692
  333. package/templates/skills/languages/ruby/SKILL.md +431 -431
  334. package/templates/skills/languages/rust/SKILL.md +487 -487
  335. package/templates/skills/languages/sas/SKILL.md +83 -83
  336. package/templates/skills/languages/scala/SKILL.md +358 -358
  337. package/templates/skills/languages/solidity/SKILL.md +590 -590
  338. package/templates/skills/languages/sql/SKILL.md +147 -147
  339. package/templates/skills/languages/swift/SKILL.md +476 -476
  340. package/templates/skills/languages/typescript/SKILL.md +302 -302
  341. package/templates/skills/languages/zig/SKILL.md +275 -275
  342. package/templates/skills/modules/context7/SKILL.md +64 -64
  343. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  344. package/templates/skills/modules/playwright/SKILL.md +100 -100
  345. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  346. package/templates/skills/modules/serena/SKILL.md +347 -347
  347. package/templates/skills/modules/supabase/SKILL.md +233 -233
  348. package/templates/skills/modules/synap/SKILL.md +79 -79
  349. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  350. package/.claude/commands/analysis.md +0 -35
  351. package/.claude/commands/continue.md +0 -33
  352. package/.claude/commands/rulebook-decision-create.md +0 -55
  353. package/.claude/commands/rulebook-decision-list.md +0 -15
  354. package/.claude/commands/rulebook-knowledge-add.md +0 -41
  355. package/.claude/commands/rulebook-knowledge-list.md +0 -15
  356. package/.claude/commands/rulebook-learn-capture.md +0 -41
  357. package/.claude/commands/rulebook-learn-list.md +0 -13
  358. package/.claude/commands/rulebook-memory-save.md +0 -48
  359. package/.claude/commands/rulebook-memory-search.md +0 -47
  360. package/.claude/commands/rulebook-task-apply.md +0 -67
  361. package/.claude/commands/rulebook-task-archive.md +0 -94
  362. package/.claude/commands/rulebook-task-create.md +0 -93
  363. package/.claude/commands/rulebook-task-list.md +0 -42
  364. package/.claude/commands/rulebook-task-show.md +0 -52
  365. package/.claude/commands/rulebook-task-validate.md +0 -53
  366. package/.claude-plugin/marketplace.json +0 -28
  367. package/.claude-plugin/plugin.json +0 -8
  368. package/dist/agents/claude-code.d.ts +0 -69
  369. package/dist/agents/claude-code.d.ts.map +0 -1
  370. package/dist/agents/claude-code.js +0 -180
  371. package/dist/agents/claude-code.js.map +0 -1
  372. package/dist/agents/cursor-agent.d.ts +0 -184
  373. package/dist/agents/cursor-agent.d.ts.map +0 -1
  374. package/dist/agents/cursor-agent.js +0 -299
  375. package/dist/agents/cursor-agent.js.map +0 -1
  376. package/dist/agents/gemini-cli.d.ts +0 -69
  377. package/dist/agents/gemini-cli.d.ts.map +0 -1
  378. package/dist/agents/gemini-cli.js +0 -180
  379. package/dist/agents/gemini-cli.js.map +0 -1
  380. package/dist/cli/commands/memory.d.ts +0 -30
  381. package/dist/cli/commands/memory.d.ts.map +0 -1
  382. package/dist/cli/commands/memory.js +0 -259
  383. package/dist/cli/commands/memory.js.map +0 -1
  384. package/dist/core/console/cli-bridge.d.ts +0 -113
  385. package/dist/core/console/cli-bridge.d.ts.map +0 -1
  386. package/dist/core/console/cli-bridge.js +0 -1094
  387. package/dist/core/console/cli-bridge.js.map +0 -1
  388. package/dist/core/ide/multi-tool-generator.d.ts +0 -59
  389. package/dist/core/ide/multi-tool-generator.d.ts.map +0 -1
  390. package/dist/core/ide/multi-tool-generator.js +0 -157
  391. package/dist/core/ide/multi-tool-generator.js.map +0 -1
  392. package/dist/core/ide/opencode-generator.d.ts +0 -72
  393. package/dist/core/ide/opencode-generator.d.ts.map +0 -1
  394. package/dist/core/ide/opencode-generator.js +0 -450
  395. package/dist/core/ide/opencode-generator.js.map +0 -1
  396. package/dist/core/indexer/background-indexer.d.ts +0 -35
  397. package/dist/core/indexer/background-indexer.d.ts.map +0 -1
  398. package/dist/core/indexer/background-indexer.js +0 -267
  399. package/dist/core/indexer/background-indexer.js.map +0 -1
  400. package/dist/core/indexer/file-parser.d.ts +0 -28
  401. package/dist/core/indexer/file-parser.d.ts.map +0 -1
  402. package/dist/core/indexer/file-parser.js +0 -171
  403. package/dist/core/indexer/file-parser.js.map +0 -1
  404. package/dist/core/indexer/indexer-types.d.ts +0 -37
  405. package/dist/core/indexer/indexer-types.d.ts.map +0 -1
  406. package/dist/core/indexer/indexer-types.js +0 -8
  407. package/dist/core/indexer/indexer-types.js.map +0 -1
  408. package/dist/memory/file-search.d.ts +0 -43
  409. package/dist/memory/file-search.d.ts.map +0 -1
  410. package/dist/memory/file-search.js +0 -228
  411. package/dist/memory/file-search.js.map +0 -1
  412. package/dist/memory/file-store.d.ts +0 -99
  413. package/dist/memory/file-store.d.ts.map +0 -1
  414. package/dist/memory/file-store.js +0 -615
  415. package/dist/memory/file-store.js.map +0 -1
  416. package/dist/memory/legacy-migrator.d.ts +0 -27
  417. package/dist/memory/legacy-migrator.d.ts.map +0 -1
  418. package/dist/memory/legacy-migrator.js +0 -185
  419. package/dist/memory/legacy-migrator.js.map +0 -1
  420. package/dist/memory/memory-hooks.d.ts +0 -48
  421. package/dist/memory/memory-hooks.d.ts.map +0 -1
  422. package/dist/memory/memory-hooks.js +0 -248
  423. package/dist/memory/memory-hooks.js.map +0 -1
  424. package/dist/memory/memory-manager.d.ts +0 -65
  425. package/dist/memory/memory-manager.d.ts.map +0 -1
  426. package/dist/memory/memory-manager.js +0 -223
  427. package/dist/memory/memory-manager.js.map +0 -1
  428. package/dist/memory/memory-types.d.ts +0 -85
  429. package/dist/memory/memory-types.d.ts.map +0 -1
  430. package/dist/memory/memory-types.js +0 -7
  431. package/dist/memory/memory-types.js.map +0 -1
  432. package/templates/agents/accessibility-reviewer.md +0 -43
  433. package/templates/agents/api-designer.md +0 -42
  434. package/templates/agents/compiler/codegen-debugger.md +0 -34
  435. package/templates/agents/compiler/stdlib-engineer.md +0 -28
  436. package/templates/agents/compiler/test-coverage-guardian.md +0 -31
  437. package/templates/agents/context-intelligence.md +0 -50
  438. package/templates/agents/database-architect.md +0 -41
  439. package/templates/agents/devops-engineer.md +0 -42
  440. package/templates/agents/game-engine/cpp-core-expert.md +0 -35
  441. package/templates/agents/game-engine/render-engineer.md +0 -22
  442. package/templates/agents/game-engine/shader-engineer.md +0 -38
  443. package/templates/agents/game-engine/systems-integration.md +0 -43
  444. package/templates/agents/generic/code-reviewer.md +0 -41
  445. package/templates/agents/generic/docs-writer.md +0 -25
  446. package/templates/agents/generic/project-manager.md +0 -36
  447. package/templates/agents/generic/researcher.md +0 -34
  448. package/templates/agents/generic/test-engineer.md +0 -41
  449. package/templates/agents/i18n-engineer.md +0 -42
  450. package/templates/agents/migration-engineer.md +0 -42
  451. package/templates/agents/mobile/platform-specialist.md +0 -22
  452. package/templates/agents/mobile/ui-engineer.md +0 -22
  453. package/templates/agents/project-manager.md +0 -217
  454. package/templates/agents/refactoring-agent.md +0 -41
  455. package/templates/agents/ux-reviewer.md +0 -43
  456. package/templates/agents/web-app/api-designer.md +0 -22
  457. package/templates/agents/web-app/backend-engineer.md +0 -30
  458. package/templates/agents/web-app/database-engineer.md +0 -22
  459. package/templates/agents/web-app/frontend-engineer.md +0 -29
  460. package/templates/agents/web-app/security-reviewer.md +0 -32
  461. package/templates/cli/AIDER.md +0 -49
  462. package/templates/cli/AMAZON_Q.md +0 -25
  463. package/templates/cli/AUGGIE.md +0 -32
  464. package/templates/cli/CLINE.md +0 -99
  465. package/templates/cli/CODEBUDDY.md +0 -20
  466. package/templates/cli/CODEIUM.md +0 -20
  467. package/templates/cli/CODEX.md +0 -21
  468. package/templates/cli/CONTINUE.md +0 -34
  469. package/templates/cli/CURSOR_CLI.md +0 -62
  470. package/templates/cli/FACTORY.md +0 -18
  471. package/templates/cli/GEMINI.md +0 -35
  472. package/templates/cli/KILOCODE.md +0 -18
  473. package/templates/cli/OPENCODE.md +0 -85
  474. package/templates/cli/gemini-extension.json +0 -77
  475. package/templates/commands/rulebook-memory-save.md +0 -48
  476. package/templates/commands/rulebook-memory-search.md +0 -47
  477. package/templates/ides/CONTINUE_RULES.md +0 -16
  478. package/templates/ides/COPILOT_INSTRUCTIONS.md +0 -23
  479. package/templates/ides/GEMINI_RULES.md +0 -17
  480. package/templates/ides/OPENCODE.md +0 -63
  481. package/templates/ides/WINDSURF_RULES.md +0 -14
  482. package/templates/modules/ATLASSIAN.md +0 -255
  483. package/templates/modules/FIGMA.md +0 -267
  484. package/templates/modules/GRAFANA.md +0 -328
  485. package/templates/modules/MEMORY.md +0 -126
  486. package/templates/modules/NOTION.md +0 -247
  487. package/templates/skills/cli/aider/SKILL.md +0 -59
  488. package/templates/skills/cli/amazon-q/SKILL.md +0 -35
  489. package/templates/skills/cli/auggie/SKILL.md +0 -42
  490. package/templates/skills/cli/cline/SKILL.md +0 -42
  491. package/templates/skills/cli/codebuddy/SKILL.md +0 -30
  492. package/templates/skills/cli/codeium/SKILL.md +0 -30
  493. package/templates/skills/cli/codex/SKILL.md +0 -31
  494. package/templates/skills/cli/continue/SKILL.md +0 -44
  495. package/templates/skills/cli/cursor-cli/SKILL.md +0 -38
  496. package/templates/skills/cli/factory/SKILL.md +0 -28
  497. package/templates/skills/cli/gemini/SKILL.md +0 -45
  498. package/templates/skills/cli/kilocode/SKILL.md +0 -28
  499. package/templates/skills/cli/opencode/SKILL.md +0 -82
  500. package/templates/skills/ides/copilot/SKILL.md +0 -47
  501. package/templates/skills/ides/cursor/SKILL.md +0 -53
  502. package/templates/skills/ides/jetbrains-ai/SKILL.md +0 -45
  503. package/templates/skills/ides/replit/SKILL.md +0 -46
  504. package/templates/skills/ides/tabnine/SKILL.md +0 -39
  505. package/templates/skills/ides/vscode/SKILL.md +0 -50
  506. package/templates/skills/ides/windsurf/SKILL.md +0 -46
  507. package/templates/skills/ides/zed/SKILL.md +0 -42
  508. package/templates/skills/modules/atlassian/SKILL.md +0 -265
  509. package/templates/skills/modules/figma/SKILL.md +0 -277
  510. package/templates/skills/modules/grafana/SKILL.md +0 -338
  511. package/templates/skills/modules/memory/SKILL.md +0 -73
  512. package/templates/skills/modules/notion/SKILL.md +0 -257
@@ -1,585 +1,585 @@
1
- # Secrets Management in CI/CD
2
-
3
- This template provides best practices for securely managing secrets, API keys, tokens, and sensitive configuration in CI/CD pipelines.
4
-
5
- ## Purpose
6
-
7
- Secure secrets management ensures:
8
- - No hardcoded credentials in code
9
- - Encrypted storage of sensitive data
10
- - Least-privilege access control
11
- - Audit trail of secret usage
12
- - Easy secret rotation
13
-
14
- ## Core Principles
15
-
16
- ### 1. **Never Commit Secrets to Version Control**
17
-
18
- **❌ Bad**:
19
- ```javascript
20
- // NEVER do this
21
- const API_KEY = 'sk_live_abc123xyz';
22
- const DATABASE_URL = 'postgres://user:password@host/db';
23
- ```
24
-
25
- **✅ Good**:
26
- ```javascript
27
- // Use environment variables
28
- const API_KEY = process.env.API_KEY;
29
- const DATABASE_URL = process.env.DATABASE_URL;
30
- ```
31
-
32
- ### 2. **Use Platform Secret Stores**
33
-
34
- **Platforms**:
35
- - GitHub Actions: Repository/Organization secrets
36
- - GitLab CI: CI/CD variables
37
- - CircleCI: Environment variables (Project/Context)
38
- - Azure DevOps: Variable groups
39
- - AWS: Secrets Manager / Parameter Store
40
-
41
- ### 3. **Apply Least Privilege**
42
-
43
- **Principle**: Grant minimum necessary access
44
-
45
- ```yaml
46
- # Good: Environment-specific secrets
47
- production:
48
- env:
49
- API_KEY: ${{ secrets.PROD_API_KEY }}
50
-
51
- development:
52
- env:
53
- API_KEY: ${{ secrets.DEV_API_KEY }}
54
- ```
55
-
56
- ### 4. **Rotate Secrets Regularly**
57
-
58
- **Schedule**:
59
- - API keys: Every 90 days
60
- - Access tokens: Every 90 days
61
- - SSH keys: Every 180 days
62
- - Database passwords: Every 90 days
63
-
64
- ## Platform-Specific Implementation
65
-
66
- ### GitHub Actions
67
-
68
- #### Repository Secrets
69
-
70
- **Add via UI**:
71
- 1. Repository → Settings → Secrets and variables → Actions
72
- 2. New repository secret
73
- 3. Name: `API_KEY`
74
- 4. Value: `sk_live_abc123xyz`
75
-
76
- **Add via CLI**:
77
- ```bash
78
- gh secret set API_KEY < api_key.txt
79
-
80
- # Or inline
81
- gh secret set API_KEY --body "sk_live_abc123xyz"
82
- ```
83
-
84
- **Usage in Workflow**:
85
- ```yaml
86
- jobs:
87
- deploy:
88
- steps:
89
- - name: Deploy
90
- run: ./deploy.sh
91
- env:
92
- API_KEY: ${{ secrets.API_KEY }}
93
- DATABASE_URL: ${{ secrets.DATABASE_URL }}
94
- ```
95
-
96
- #### Organization Secrets
97
-
98
- **When to use**: Shared across multiple repositories
99
-
100
- ```yaml
101
- # Available to all repos in org
102
- - name: Use org secret
103
- env:
104
- NPM_TOKEN: ${{ secrets.NPM_TOKEN }} # Org-level secret
105
- ```
106
-
107
- #### Environment Secrets
108
-
109
- **When to use**: Environment-specific secrets (production, staging)
110
-
111
- ```yaml
112
- jobs:
113
- deploy:production:
114
- environment: production # Uses production environment secrets
115
- steps:
116
- - run: deploy.sh
117
- env:
118
- API_KEY: ${{ secrets.API_KEY }} # production-specific value
119
- ```
120
-
121
- ### GitLab CI
122
-
123
- #### CI/CD Variables
124
-
125
- **Add via UI**:
126
- 1. Project → Settings → CI/CD → Variables
127
- 2. Add variable
128
- 3. Key: `API_KEY`
129
- 4. Value: `sk_live_abc123xyz`
130
- 5. Flags: ✓ Protect variable (main branch only), ✓ Mask variable
131
-
132
- **Usage in Pipeline**:
133
- ```yaml
134
- deploy:
135
- script:
136
- - deploy.sh
137
- variables:
138
- API_KEY: ${{ secrets.API_KEY }}
139
- only:
140
- - main
141
- ```
142
-
143
- #### File Variables
144
-
145
- **For multi-line secrets** (certificates, keys):
146
- ```yaml
147
- deploy:
148
- before_script:
149
- - echo "$SSL_CERTIFICATE" > cert.pem
150
- - chmod 600 cert.pem
151
- script:
152
- - use-certificate cert.pem
153
- ```
154
-
155
- ### CircleCI
156
-
157
- #### Project Environment Variables
158
-
159
- **Add via UI**:
160
- 1. Project Settings → Environment Variables
161
- 2. Add Variable
162
- 3. Name: `API_KEY`, Value: `sk_live_abc123xyz`
163
-
164
- **Usage in Config**:
165
- ```yaml
166
- jobs:
167
- deploy:
168
- steps:
169
- - run:
170
- command: deploy.sh
171
- environment:
172
- API_KEY: $API_KEY
173
- ```
174
-
175
- #### Contexts (Organization Secrets)
176
-
177
- ```yaml
178
- workflows:
179
- deploy:
180
- jobs:
181
- - deploy:
182
- context: production-secrets # Shared secrets
183
- ```
184
-
185
- ## Secret Types and Patterns
186
-
187
- ### 1. API Keys
188
-
189
- **Pattern**: Use environment-specific keys
190
-
191
- ```yaml
192
- # development
193
- env:
194
- STRIPE_KEY: ${{ secrets.STRIPE_TEST_KEY }}
195
-
196
- # production
197
- env:
198
- STRIPE_KEY: ${{ secrets.STRIPE_LIVE_KEY }}
199
- ```
200
-
201
- ### 2. Database Credentials
202
-
203
- **Pattern**: Use connection strings with secrets
204
-
205
- ```yaml
206
- env:
207
- # Store entire connection string
208
- DATABASE_URL: ${{ secrets.DATABASE_URL }}
209
-
210
- # Or compose from parts
211
- DB_HOST: ${{ secrets.DB_HOST }}
212
- DB_USER: ${{ secrets.DB_USER }}
213
- DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
214
- DB_NAME: ${{ secrets.DB_NAME }}
215
- ```
216
-
217
- **Script usage**:
218
- ```bash
219
- # Use DATABASE_URL directly
220
- psql "$DATABASE_URL" -c "SELECT 1"
221
-
222
- # Or construct connection string
223
- psql "postgres://$DB_USER:$DB_PASSWORD@$DB_HOST/$DB_NAME"
224
- ```
225
-
226
- ### 3. SSH Keys
227
-
228
- **Pattern**: Add SSH key for deployments
229
-
230
- ```yaml
231
- - name: Setup SSH key
232
- run: |
233
- mkdir -p ~/.ssh
234
- echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
235
- chmod 600 ~/.ssh/id_rsa
236
- ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
237
- ```
238
-
239
- ### 4. Service Account Keys (JSON)
240
-
241
- **Pattern**: Store JSON credentials as secret
242
-
243
- ```yaml
244
- - name: Authenticate with GCP
245
- run: |
246
- echo '${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}' > key.json
247
- gcloud auth activate-service-account --key-file=key.json
248
- rm key.json # Clean up
249
- ```
250
-
251
- ### 5. Certificates (PEM/CRT)
252
-
253
- **Pattern**: Multi-line secret as file
254
-
255
- ```yaml
256
- - name: Setup certificate
257
- run: |
258
- echo "${{ secrets.SSL_CERTIFICATE }}" > cert.pem
259
- echo "${{ secrets.SSL_PRIVATE_KEY }}" > key.pem
260
- chmod 600 *.pem
261
- ```
262
-
263
- ### 6. Signing Keys
264
-
265
- **Pattern**: Sign artifacts with secret key
266
-
267
- ```yaml
268
- - name: Sign package
269
- run: |
270
- echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --import
271
- gpg --sign package.tar.gz
272
- ```
273
-
274
- ## Advanced Patterns
275
-
276
- ### Pattern 1: Dynamic Secrets from Vault
277
-
278
- **Use Vault for dynamic, short-lived secrets**:
279
-
280
- ```yaml
281
- - name: Get secrets from Vault
282
- run: |
283
- # Login to Vault
284
- vault login -method=github token=${{ secrets.VAULT_TOKEN }}
285
-
286
- # Get dynamic database credentials (expires in 1 hour)
287
- export DB_USER=$(vault read -field=username database/creds/app)
288
- export DB_PASSWORD=$(vault read -field=password database/creds/app)
289
-
290
- # Use credentials
291
- psql "postgres://$DB_USER:$DB_PASSWORD@$DB_HOST/$DB_NAME"
292
- ```
293
-
294
- ### Pattern 2: AWS Secrets Manager
295
-
296
- **Retrieve secrets at runtime**:
297
-
298
- ```yaml
299
- - name: Configure AWS credentials
300
- uses: aws-actions/configure-aws-credentials@v4
301
- with:
302
- role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
303
-
304
- - name: Get secrets from AWS Secrets Manager
305
- run: |
306
- export API_KEY=$(aws secretsmanager get-secret-value \
307
- --secret-id production/api-key \
308
- --query SecretString \
309
- --output text)
310
-
311
- # Use API_KEY
312
- curl -H "Authorization: Bearer $API_KEY" https://api.example.com
313
- ```
314
-
315
- ### Pattern 3: Google Secret Manager
316
-
317
- ```yaml
318
- - name: Authenticate with GCP
319
- uses: google-github-actions/auth@v2
320
- with:
321
- credentials_json: ${{ secrets.GCP_CREDENTIALS }}
322
-
323
- - name: Get secrets
324
- run: |
325
- export DATABASE_URL=$(gcloud secrets versions access latest \
326
- --secret="database-url")
327
- ```
328
-
329
- ### Pattern 4: OIDC/Federated Authentication
330
-
331
- **Passwordless authentication using OIDC** (GitHub Actions → AWS):
332
-
333
- ```yaml
334
- - name: Configure AWS Credentials
335
- uses: aws-actions/configure-aws-credentials@v4
336
- with:
337
- role-to-assume: arn:aws:iam::123456789:role/GitHubActionsRole
338
- aws-region: us-east-1
339
- # No secrets needed! Uses OIDC token
340
- ```
341
-
342
- **Benefits**:
343
- - No long-lived credentials
344
- - Automatic rotation
345
- - Fine-grained permissions
346
-
347
- ## Security Best Practices
348
-
349
- ### ✅ DO
350
-
351
- 1. **Use Secret Scanning**
352
- ```yaml
353
- # Enable in GitHub: Settings → Code security and analysis
354
- # Automatically detects committed secrets
355
- ```
356
-
357
- 2. **Mask Secrets in Logs**
358
- ```yaml
359
- # Secrets automatically masked in GitHub Actions logs
360
- # Manually mask custom values:
361
- - run: echo "::add-mask::$CUSTOM_VALUE"
362
- ```
363
-
364
- 3. **Use Separate Secrets Per Environment**
365
- ```yaml
366
- production:
367
- env:
368
- API_KEY: ${{ secrets.PROD_API_KEY }}
369
-
370
- staging:
371
- env:
372
- API_KEY: ${{ secrets.STAGING_API_KEY }}
373
- ```
374
-
375
- 4. **Limit Secret Scope**
376
- ```yaml
377
- # GitHub: Only available to protected branches
378
- # Settings → Secrets → Environment secrets → production
379
- # ✓ Required reviewers
380
- # ✓ Wait timer
381
- ```
382
-
383
- 5. **Audit Secret Usage**
384
- ```yaml
385
- # GitHub audit log shows:
386
- # - Who accessed secrets
387
- # - When secrets were used
388
- # - Which workflows used secrets
389
- ```
390
-
391
- 6. **Rotate Secrets Regularly**
392
- ```bash
393
- # Automate rotation with cron job
394
- 0 0 1 * * rotate-secrets.sh # Monthly
395
- ```
396
-
397
- ### ❌ DON'T
398
-
399
- 1. **Don't Echo Secrets**
400
- ```yaml
401
- # Bad
402
- - run: echo "API key is ${{ secrets.API_KEY }}"
403
-
404
- # Good
405
- - run: echo "API key configured"
406
- ```
407
-
408
- 2. **Don't Store Secrets in Code**
409
- ```javascript
410
- // Bad
411
- const key = 'sk_live_abc123';
412
-
413
- // Good
414
- const key = process.env.API_KEY;
415
- ```
416
-
417
- 3. **Don't Use Secrets in PR Builds**
418
- ```yaml
419
- # Bad - secrets exposed to forks
420
- on: pull_request
421
-
422
- # Good - use pull_request_target with care
423
- on:
424
- pull_request_target:
425
- types: [labeled]
426
-
427
- jobs:
428
- test:
429
- if: github.event.label.name == 'safe-to-test'
430
- ```
431
-
432
- 4. **Don't Share Secrets Across Teams**
433
- ```yaml
434
- # Bad - everyone has prod access
435
- env:
436
- PROD_KEY: ${{ secrets.PROD_KEY }}
437
-
438
- # Good - separate secrets per team/environment
439
- ```
440
-
441
- 5. **Don't Commit `.env` Files**
442
- ```bash
443
- # .gitignore
444
- .env
445
- .env.local
446
- .env.*.local
447
- **/.env
448
- ```
449
-
450
- ## Secret Rotation Strategy
451
-
452
- ### Automated Rotation Process
453
-
454
- **1. Generate New Secret**:
455
- ```bash
456
- # Script: rotate-api-key.sh
457
- NEW_KEY=$(generate-api-key.sh)
458
-
459
- # Update in secret store
460
- gh secret set API_KEY --body "$NEW_KEY"
461
-
462
- # Update in application
463
- update-application-config.sh "$NEW_KEY"
464
- ```
465
-
466
- **2. Test New Secret**:
467
- ```yaml
468
- - name: Test new secret
469
- run: |
470
- curl -H "Authorization: Bearer ${{ secrets.API_KEY }}" \
471
- https://api.example.com/health
472
- ```
473
-
474
- **3. Deactivate Old Secret**:
475
- ```bash
476
- # After confirming new secret works
477
- deactivate-old-api-key.sh "$OLD_KEY"
478
- ```
479
-
480
- ### Rotation Checklist
481
-
482
- - [ ] Generate new secret
483
- - [ ] Update in CI/CD platform
484
- - [ ] Deploy with new secret
485
- - [ ] Verify functionality
486
- - [ ] Revoke old secret
487
- - [ ] Update documentation
488
-
489
- ## Troubleshooting
490
-
491
- ### Secret Not Available
492
-
493
- **Issue**: Workflow can't access secret
494
-
495
- **Solutions**:
496
- 1. Check secret name matches exactly (case-sensitive)
497
- 2. Verify workflow has permission to access secret
498
- 3. Check if secret is environment-specific
499
- 4. Ensure secret is not expired/deleted
500
-
501
- ### Secret Masked Incorrectly
502
-
503
- **Issue**: Secret visible in logs
504
-
505
- **Solutions**:
506
- ```yaml
507
- # Explicitly mask value
508
- - run: echo "::add-mask::$VALUE"
509
-
510
- # Check if secret contains special characters
511
- # - Secrets with spaces may not mask correctly
512
- # - Use quotes: echo "::add-mask::$SECRET"
513
- ```
514
-
515
- ### Secret Too Large
516
-
517
- **Issue**: Secret exceeds size limit
518
-
519
- **GitHub Limits**:
520
- - Secret value: 64 KB
521
- - Repository: 100 secrets
522
- - Organization: 1000 secrets
523
-
524
- **Solutions**:
525
- 1. Split large secrets into multiple parts
526
- 2. Store in external secret manager (Vault, AWS Secrets Manager)
527
- 3. Use base64 encoding for binary data
528
-
529
- ### Secret Rotation Breaks Deployment
530
-
531
- **Issue**: Old secret revoked before new one deployed
532
-
533
- **Solution**:
534
- ```bash
535
- # Grace period approach
536
- 1. Deploy new secret to CI/CD
537
- 2. Deploy application with new secret
538
- 3. Wait 24 hours (grace period)
539
- 4. Revoke old secret
540
- ```
541
-
542
- ## Common Pitfalls
543
-
544
- 1. **❌ Hardcoding secrets**: Always use environment variables
545
- 2. **❌ Committing `.env`**: Add to `.gitignore`
546
- 3. **❌ Using same secret everywhere**: Separate dev/staging/prod
547
- 4. **❌ Never rotating secrets**: Set up automated rotation
548
- 5. **❌ Logging secrets**: Mask sensitive values
549
- 6. **❌ Sharing secrets insecurely**: Use secret management platform
550
- 7. **❌ No audit trail**: Enable secret access logging
551
-
552
- ## Integration with Rulebook
553
-
554
- If using `@hivehub/rulebook`, secret management patterns are enforced:
555
-
556
- ```bash
557
- # Initialize with secret management best practices
558
- npx @hivehub/rulebook init
559
-
560
- # Creates:
561
- # - .env.example (template)
562
- # - .gitignore (excludes .env)
563
- # - Documentation on secret management
564
- ```
565
-
566
- **`.env.example`**:
567
- ```bash
568
- # API Keys
569
- API_KEY=your-api-key-here
570
- DATABASE_URL=postgres://user:password@localhost/db
571
-
572
- # AWS Credentials
573
- AWS_ACCESS_KEY_ID=your-access-key
574
- AWS_SECRET_ACCESS_KEY=your-secret-key
575
-
576
- # Note: Copy to .env and fill with actual values
577
- # .env is gitignored and should NEVER be committed
578
- ```
579
-
580
- ## Related Templates
581
-
582
- - See `/.rulebook/specs/GITHUB_ACTIONS.md` for GitHub Actions secrets
583
- - See `/.rulebook/specs/GITLAB_CI.md` for GitLab CI secrets
584
- - See `/.rulebook/specs/CI_CD_PATTERNS.md` for deployment patterns
585
- - See `/.rulebook/specs/GIT.md` for .gitignore patterns
1
+ # Secrets Management in CI/CD
2
+
3
+ This template provides best practices for securely managing secrets, API keys, tokens, and sensitive configuration in CI/CD pipelines.
4
+
5
+ ## Purpose
6
+
7
+ Secure secrets management ensures:
8
+ - No hardcoded credentials in code
9
+ - Encrypted storage of sensitive data
10
+ - Least-privilege access control
11
+ - Audit trail of secret usage
12
+ - Easy secret rotation
13
+
14
+ ## Core Principles
15
+
16
+ ### 1. **Never Commit Secrets to Version Control**
17
+
18
+ **❌ Bad**:
19
+ ```javascript
20
+ // NEVER do this
21
+ const API_KEY = 'sk_live_abc123xyz';
22
+ const DATABASE_URL = 'postgres://user:password@host/db';
23
+ ```
24
+
25
+ **✅ Good**:
26
+ ```javascript
27
+ // Use environment variables
28
+ const API_KEY = process.env.API_KEY;
29
+ const DATABASE_URL = process.env.DATABASE_URL;
30
+ ```
31
+
32
+ ### 2. **Use Platform Secret Stores**
33
+
34
+ **Platforms**:
35
+ - GitHub Actions: Repository/Organization secrets
36
+ - GitLab CI: CI/CD variables
37
+ - CircleCI: Environment variables (Project/Context)
38
+ - Azure DevOps: Variable groups
39
+ - AWS: Secrets Manager / Parameter Store
40
+
41
+ ### 3. **Apply Least Privilege**
42
+
43
+ **Principle**: Grant minimum necessary access
44
+
45
+ ```yaml
46
+ # Good: Environment-specific secrets
47
+ production:
48
+ env:
49
+ API_KEY: ${{ secrets.PROD_API_KEY }}
50
+
51
+ development:
52
+ env:
53
+ API_KEY: ${{ secrets.DEV_API_KEY }}
54
+ ```
55
+
56
+ ### 4. **Rotate Secrets Regularly**
57
+
58
+ **Schedule**:
59
+ - API keys: Every 90 days
60
+ - Access tokens: Every 90 days
61
+ - SSH keys: Every 180 days
62
+ - Database passwords: Every 90 days
63
+
64
+ ## Platform-Specific Implementation
65
+
66
+ ### GitHub Actions
67
+
68
+ #### Repository Secrets
69
+
70
+ **Add via UI**:
71
+ 1. Repository → Settings → Secrets and variables → Actions
72
+ 2. New repository secret
73
+ 3. Name: `API_KEY`
74
+ 4. Value: `sk_live_abc123xyz`
75
+
76
+ **Add via CLI**:
77
+ ```bash
78
+ gh secret set API_KEY < api_key.txt
79
+
80
+ # Or inline
81
+ gh secret set API_KEY --body "sk_live_abc123xyz"
82
+ ```
83
+
84
+ **Usage in Workflow**:
85
+ ```yaml
86
+ jobs:
87
+ deploy:
88
+ steps:
89
+ - name: Deploy
90
+ run: ./deploy.sh
91
+ env:
92
+ API_KEY: ${{ secrets.API_KEY }}
93
+ DATABASE_URL: ${{ secrets.DATABASE_URL }}
94
+ ```
95
+
96
+ #### Organization Secrets
97
+
98
+ **When to use**: Shared across multiple repositories
99
+
100
+ ```yaml
101
+ # Available to all repos in org
102
+ - name: Use org secret
103
+ env:
104
+ NPM_TOKEN: ${{ secrets.NPM_TOKEN }} # Org-level secret
105
+ ```
106
+
107
+ #### Environment Secrets
108
+
109
+ **When to use**: Environment-specific secrets (production, staging)
110
+
111
+ ```yaml
112
+ jobs:
113
+ deploy:production:
114
+ environment: production # Uses production environment secrets
115
+ steps:
116
+ - run: deploy.sh
117
+ env:
118
+ API_KEY: ${{ secrets.API_KEY }} # production-specific value
119
+ ```
120
+
121
+ ### GitLab CI
122
+
123
+ #### CI/CD Variables
124
+
125
+ **Add via UI**:
126
+ 1. Project → Settings → CI/CD → Variables
127
+ 2. Add variable
128
+ 3. Key: `API_KEY`
129
+ 4. Value: `sk_live_abc123xyz`
130
+ 5. Flags: ✓ Protect variable (main branch only), ✓ Mask variable
131
+
132
+ **Usage in Pipeline**:
133
+ ```yaml
134
+ deploy:
135
+ script:
136
+ - deploy.sh
137
+ variables:
138
+ API_KEY: ${{ secrets.API_KEY }}
139
+ only:
140
+ - main
141
+ ```
142
+
143
+ #### File Variables
144
+
145
+ **For multi-line secrets** (certificates, keys):
146
+ ```yaml
147
+ deploy:
148
+ before_script:
149
+ - echo "$SSL_CERTIFICATE" > cert.pem
150
+ - chmod 600 cert.pem
151
+ script:
152
+ - use-certificate cert.pem
153
+ ```
154
+
155
+ ### CircleCI
156
+
157
+ #### Project Environment Variables
158
+
159
+ **Add via UI**:
160
+ 1. Project Settings → Environment Variables
161
+ 2. Add Variable
162
+ 3. Name: `API_KEY`, Value: `sk_live_abc123xyz`
163
+
164
+ **Usage in Config**:
165
+ ```yaml
166
+ jobs:
167
+ deploy:
168
+ steps:
169
+ - run:
170
+ command: deploy.sh
171
+ environment:
172
+ API_KEY: $API_KEY
173
+ ```
174
+
175
+ #### Contexts (Organization Secrets)
176
+
177
+ ```yaml
178
+ workflows:
179
+ deploy:
180
+ jobs:
181
+ - deploy:
182
+ context: production-secrets # Shared secrets
183
+ ```
184
+
185
+ ## Secret Types and Patterns
186
+
187
+ ### 1. API Keys
188
+
189
+ **Pattern**: Use environment-specific keys
190
+
191
+ ```yaml
192
+ # development
193
+ env:
194
+ STRIPE_KEY: ${{ secrets.STRIPE_TEST_KEY }}
195
+
196
+ # production
197
+ env:
198
+ STRIPE_KEY: ${{ secrets.STRIPE_LIVE_KEY }}
199
+ ```
200
+
201
+ ### 2. Database Credentials
202
+
203
+ **Pattern**: Use connection strings with secrets
204
+
205
+ ```yaml
206
+ env:
207
+ # Store entire connection string
208
+ DATABASE_URL: ${{ secrets.DATABASE_URL }}
209
+
210
+ # Or compose from parts
211
+ DB_HOST: ${{ secrets.DB_HOST }}
212
+ DB_USER: ${{ secrets.DB_USER }}
213
+ DB_PASSWORD: ${{ secrets.DB_PASSWORD }}
214
+ DB_NAME: ${{ secrets.DB_NAME }}
215
+ ```
216
+
217
+ **Script usage**:
218
+ ```bash
219
+ # Use DATABASE_URL directly
220
+ psql "$DATABASE_URL" -c "SELECT 1"
221
+
222
+ # Or construct connection string
223
+ psql "postgres://$DB_USER:$DB_PASSWORD@$DB_HOST/$DB_NAME"
224
+ ```
225
+
226
+ ### 3. SSH Keys
227
+
228
+ **Pattern**: Add SSH key for deployments
229
+
230
+ ```yaml
231
+ - name: Setup SSH key
232
+ run: |
233
+ mkdir -p ~/.ssh
234
+ echo "${{ secrets.SSH_PRIVATE_KEY }}" > ~/.ssh/id_rsa
235
+ chmod 600 ~/.ssh/id_rsa
236
+ ssh-keyscan ${{ secrets.SSH_HOST }} >> ~/.ssh/known_hosts
237
+ ```
238
+
239
+ ### 4. Service Account Keys (JSON)
240
+
241
+ **Pattern**: Store JSON credentials as secret
242
+
243
+ ```yaml
244
+ - name: Authenticate with GCP
245
+ run: |
246
+ echo '${{ secrets.GCP_SERVICE_ACCOUNT_KEY }}' > key.json
247
+ gcloud auth activate-service-account --key-file=key.json
248
+ rm key.json # Clean up
249
+ ```
250
+
251
+ ### 5. Certificates (PEM/CRT)
252
+
253
+ **Pattern**: Multi-line secret as file
254
+
255
+ ```yaml
256
+ - name: Setup certificate
257
+ run: |
258
+ echo "${{ secrets.SSL_CERTIFICATE }}" > cert.pem
259
+ echo "${{ secrets.SSL_PRIVATE_KEY }}" > key.pem
260
+ chmod 600 *.pem
261
+ ```
262
+
263
+ ### 6. Signing Keys
264
+
265
+ **Pattern**: Sign artifacts with secret key
266
+
267
+ ```yaml
268
+ - name: Sign package
269
+ run: |
270
+ echo "${{ secrets.GPG_PRIVATE_KEY }}" | gpg --import
271
+ gpg --sign package.tar.gz
272
+ ```
273
+
274
+ ## Advanced Patterns
275
+
276
+ ### Pattern 1: Dynamic Secrets from Vault
277
+
278
+ **Use Vault for dynamic, short-lived secrets**:
279
+
280
+ ```yaml
281
+ - name: Get secrets from Vault
282
+ run: |
283
+ # Login to Vault
284
+ vault login -method=github token=${{ secrets.VAULT_TOKEN }}
285
+
286
+ # Get dynamic database credentials (expires in 1 hour)
287
+ export DB_USER=$(vault read -field=username database/creds/app)
288
+ export DB_PASSWORD=$(vault read -field=password database/creds/app)
289
+
290
+ # Use credentials
291
+ psql "postgres://$DB_USER:$DB_PASSWORD@$DB_HOST/$DB_NAME"
292
+ ```
293
+
294
+ ### Pattern 2: AWS Secrets Manager
295
+
296
+ **Retrieve secrets at runtime**:
297
+
298
+ ```yaml
299
+ - name: Configure AWS credentials
300
+ uses: aws-actions/configure-aws-credentials@v4
301
+ with:
302
+ role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
303
+
304
+ - name: Get secrets from AWS Secrets Manager
305
+ run: |
306
+ export API_KEY=$(aws secretsmanager get-secret-value \
307
+ --secret-id production/api-key \
308
+ --query SecretString \
309
+ --output text)
310
+
311
+ # Use API_KEY
312
+ curl -H "Authorization: Bearer $API_KEY" https://api.example.com
313
+ ```
314
+
315
+ ### Pattern 3: Google Secret Manager
316
+
317
+ ```yaml
318
+ - name: Authenticate with GCP
319
+ uses: google-github-actions/auth@v2
320
+ with:
321
+ credentials_json: ${{ secrets.GCP_CREDENTIALS }}
322
+
323
+ - name: Get secrets
324
+ run: |
325
+ export DATABASE_URL=$(gcloud secrets versions access latest \
326
+ --secret="database-url")
327
+ ```
328
+
329
+ ### Pattern 4: OIDC/Federated Authentication
330
+
331
+ **Passwordless authentication using OIDC** (GitHub Actions → AWS):
332
+
333
+ ```yaml
334
+ - name: Configure AWS Credentials
335
+ uses: aws-actions/configure-aws-credentials@v4
336
+ with:
337
+ role-to-assume: arn:aws:iam::123456789:role/GitHubActionsRole
338
+ aws-region: us-east-1
339
+ # No secrets needed! Uses OIDC token
340
+ ```
341
+
342
+ **Benefits**:
343
+ - No long-lived credentials
344
+ - Automatic rotation
345
+ - Fine-grained permissions
346
+
347
+ ## Security Best Practices
348
+
349
+ ### ✅ DO
350
+
351
+ 1. **Use Secret Scanning**
352
+ ```yaml
353
+ # Enable in GitHub: Settings → Code security and analysis
354
+ # Automatically detects committed secrets
355
+ ```
356
+
357
+ 2. **Mask Secrets in Logs**
358
+ ```yaml
359
+ # Secrets automatically masked in GitHub Actions logs
360
+ # Manually mask custom values:
361
+ - run: echo "::add-mask::$CUSTOM_VALUE"
362
+ ```
363
+
364
+ 3. **Use Separate Secrets Per Environment**
365
+ ```yaml
366
+ production:
367
+ env:
368
+ API_KEY: ${{ secrets.PROD_API_KEY }}
369
+
370
+ staging:
371
+ env:
372
+ API_KEY: ${{ secrets.STAGING_API_KEY }}
373
+ ```
374
+
375
+ 4. **Limit Secret Scope**
376
+ ```yaml
377
+ # GitHub: Only available to protected branches
378
+ # Settings → Secrets → Environment secrets → production
379
+ # ✓ Required reviewers
380
+ # ✓ Wait timer
381
+ ```
382
+
383
+ 5. **Audit Secret Usage**
384
+ ```yaml
385
+ # GitHub audit log shows:
386
+ # - Who accessed secrets
387
+ # - When secrets were used
388
+ # - Which workflows used secrets
389
+ ```
390
+
391
+ 6. **Rotate Secrets Regularly**
392
+ ```bash
393
+ # Automate rotation with cron job
394
+ 0 0 1 * * rotate-secrets.sh # Monthly
395
+ ```
396
+
397
+ ### ❌ DON'T
398
+
399
+ 1. **Don't Echo Secrets**
400
+ ```yaml
401
+ # Bad
402
+ - run: echo "API key is ${{ secrets.API_KEY }}"
403
+
404
+ # Good
405
+ - run: echo "API key configured"
406
+ ```
407
+
408
+ 2. **Don't Store Secrets in Code**
409
+ ```javascript
410
+ // Bad
411
+ const key = 'sk_live_abc123';
412
+
413
+ // Good
414
+ const key = process.env.API_KEY;
415
+ ```
416
+
417
+ 3. **Don't Use Secrets in PR Builds**
418
+ ```yaml
419
+ # Bad - secrets exposed to forks
420
+ on: pull_request
421
+
422
+ # Good - use pull_request_target with care
423
+ on:
424
+ pull_request_target:
425
+ types: [labeled]
426
+
427
+ jobs:
428
+ test:
429
+ if: github.event.label.name == 'safe-to-test'
430
+ ```
431
+
432
+ 4. **Don't Share Secrets Across Teams**
433
+ ```yaml
434
+ # Bad - everyone has prod access
435
+ env:
436
+ PROD_KEY: ${{ secrets.PROD_KEY }}
437
+
438
+ # Good - separate secrets per team/environment
439
+ ```
440
+
441
+ 5. **Don't Commit `.env` Files**
442
+ ```bash
443
+ # .gitignore
444
+ .env
445
+ .env.local
446
+ .env.*.local
447
+ **/.env
448
+ ```
449
+
450
+ ## Secret Rotation Strategy
451
+
452
+ ### Automated Rotation Process
453
+
454
+ **1. Generate New Secret**:
455
+ ```bash
456
+ # Script: rotate-api-key.sh
457
+ NEW_KEY=$(generate-api-key.sh)
458
+
459
+ # Update in secret store
460
+ gh secret set API_KEY --body "$NEW_KEY"
461
+
462
+ # Update in application
463
+ update-application-config.sh "$NEW_KEY"
464
+ ```
465
+
466
+ **2. Test New Secret**:
467
+ ```yaml
468
+ - name: Test new secret
469
+ run: |
470
+ curl -H "Authorization: Bearer ${{ secrets.API_KEY }}" \
471
+ https://api.example.com/health
472
+ ```
473
+
474
+ **3. Deactivate Old Secret**:
475
+ ```bash
476
+ # After confirming new secret works
477
+ deactivate-old-api-key.sh "$OLD_KEY"
478
+ ```
479
+
480
+ ### Rotation Checklist
481
+
482
+ - [ ] Generate new secret
483
+ - [ ] Update in CI/CD platform
484
+ - [ ] Deploy with new secret
485
+ - [ ] Verify functionality
486
+ - [ ] Revoke old secret
487
+ - [ ] Update documentation
488
+
489
+ ## Troubleshooting
490
+
491
+ ### Secret Not Available
492
+
493
+ **Issue**: Workflow can't access secret
494
+
495
+ **Solutions**:
496
+ 1. Check secret name matches exactly (case-sensitive)
497
+ 2. Verify workflow has permission to access secret
498
+ 3. Check if secret is environment-specific
499
+ 4. Ensure secret is not expired/deleted
500
+
501
+ ### Secret Masked Incorrectly
502
+
503
+ **Issue**: Secret visible in logs
504
+
505
+ **Solutions**:
506
+ ```yaml
507
+ # Explicitly mask value
508
+ - run: echo "::add-mask::$VALUE"
509
+
510
+ # Check if secret contains special characters
511
+ # - Secrets with spaces may not mask correctly
512
+ # - Use quotes: echo "::add-mask::$SECRET"
513
+ ```
514
+
515
+ ### Secret Too Large
516
+
517
+ **Issue**: Secret exceeds size limit
518
+
519
+ **GitHub Limits**:
520
+ - Secret value: 64 KB
521
+ - Repository: 100 secrets
522
+ - Organization: 1000 secrets
523
+
524
+ **Solutions**:
525
+ 1. Split large secrets into multiple parts
526
+ 2. Store in external secret manager (Vault, AWS Secrets Manager)
527
+ 3. Use base64 encoding for binary data
528
+
529
+ ### Secret Rotation Breaks Deployment
530
+
531
+ **Issue**: Old secret revoked before new one deployed
532
+
533
+ **Solution**:
534
+ ```bash
535
+ # Grace period approach
536
+ 1. Deploy new secret to CI/CD
537
+ 2. Deploy application with new secret
538
+ 3. Wait 24 hours (grace period)
539
+ 4. Revoke old secret
540
+ ```
541
+
542
+ ## Common Pitfalls
543
+
544
+ 1. **❌ Hardcoding secrets**: Always use environment variables
545
+ 2. **❌ Committing `.env`**: Add to `.gitignore`
546
+ 3. **❌ Using same secret everywhere**: Separate dev/staging/prod
547
+ 4. **❌ Never rotating secrets**: Set up automated rotation
548
+ 5. **❌ Logging secrets**: Mask sensitive values
549
+ 6. **❌ Sharing secrets insecurely**: Use secret management platform
550
+ 7. **❌ No audit trail**: Enable secret access logging
551
+
552
+ ## Integration with Rulebook
553
+
554
+ If using `@hivehub/rulebook`, secret management patterns are enforced:
555
+
556
+ ```bash
557
+ # Initialize with secret management best practices
558
+ npx @hivehub/rulebook init
559
+
560
+ # Creates:
561
+ # - .env.example (template)
562
+ # - .gitignore (excludes .env)
563
+ # - Documentation on secret management
564
+ ```
565
+
566
+ **`.env.example`**:
567
+ ```bash
568
+ # API Keys
569
+ API_KEY=your-api-key-here
570
+ DATABASE_URL=postgres://user:password@localhost/db
571
+
572
+ # AWS Credentials
573
+ AWS_ACCESS_KEY_ID=your-access-key
574
+ AWS_SECRET_ACCESS_KEY=your-secret-key
575
+
576
+ # Note: Copy to .env and fill with actual values
577
+ # .env is gitignored and should NEVER be committed
578
+ ```
579
+
580
+ ## Related Templates
581
+
582
+ - See `/.rulebook/specs/GITHUB_ACTIONS.md` for GitHub Actions secrets
583
+ - See `/.rulebook/specs/GITLAB_CI.md` for GitLab CI secrets
584
+ - See `/.rulebook/specs/CI_CD_PATTERNS.md` for deployment patterns
585
+ - See `/.rulebook/specs/GIT.md` for .gitignore patterns