@hivehub/rulebook 4.2.2 → 4.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (340) hide show
  1. package/.claude/commands/continue.md +33 -33
  2. package/.claude/commands/ralph-config.md +112 -112
  3. package/.claude/commands/ralph-history.md +110 -110
  4. package/.claude/commands/ralph-init.md +72 -72
  5. package/.claude/commands/ralph-pause-resume.md +105 -105
  6. package/.claude/commands/ralph-run.md +101 -101
  7. package/.claude/commands/ralph-status.md +76 -76
  8. package/.claude/commands/rulebook-memory-save.md +48 -48
  9. package/.claude/commands/rulebook-memory-search.md +47 -47
  10. package/.claude/commands/rulebook-task-apply.md +67 -67
  11. package/.claude/commands/rulebook-task-archive.md +70 -70
  12. package/.claude/commands/rulebook-task-create.md +93 -93
  13. package/.claude/commands/rulebook-task-list.md +42 -42
  14. package/.claude/commands/rulebook-task-show.md +52 -52
  15. package/.claude/commands/rulebook-task-validate.md +53 -53
  16. package/.claude-plugin/marketplace.json +28 -28
  17. package/.claude-plugin/plugin.json +8 -8
  18. package/README.md +15 -1
  19. package/dist/cli/commands.d.ts.map +1 -1
  20. package/dist/cli/commands.js +43 -18
  21. package/dist/cli/commands.js.map +1 -1
  22. package/dist/core/claude-mcp.d.ts +10 -2
  23. package/dist/core/claude-mcp.d.ts.map +1 -1
  24. package/dist/core/claude-mcp.js +48 -9
  25. package/dist/core/claude-mcp.js.map +1 -1
  26. package/dist/core/config-manager.d.ts.map +1 -1
  27. package/dist/core/config-manager.js +1 -2
  28. package/dist/core/config-manager.js.map +1 -1
  29. package/dist/core/generator.d.ts +13 -0
  30. package/dist/core/generator.d.ts.map +1 -1
  31. package/dist/core/generator.js +283 -28
  32. package/dist/core/generator.js.map +1 -1
  33. package/dist/core/indexer/background-indexer.d.ts.map +1 -1
  34. package/dist/core/indexer/background-indexer.js +10 -3
  35. package/dist/core/indexer/background-indexer.js.map +1 -1
  36. package/dist/core/workspace/workspace-manager.d.ts.map +1 -1
  37. package/dist/core/workspace/workspace-manager.js +2 -6
  38. package/dist/core/workspace/workspace-manager.js.map +1 -1
  39. package/dist/index.js +1 -3
  40. package/dist/index.js.map +1 -1
  41. package/dist/mcp/rulebook-server.d.ts.map +1 -1
  42. package/dist/mcp/rulebook-server.js +23 -10
  43. package/dist/mcp/rulebook-server.js.map +1 -1
  44. package/package.json +21 -22
  45. package/templates/agents/accessibility-reviewer.md +43 -0
  46. package/templates/agents/api-designer.md +42 -0
  47. package/templates/agents/architect.md +51 -0
  48. package/templates/agents/build-engineer.md +36 -0
  49. package/templates/agents/code-reviewer.md +47 -0
  50. package/templates/agents/database-architect.md +41 -0
  51. package/templates/agents/devops-engineer.md +42 -0
  52. package/templates/agents/docs-writer.md +38 -0
  53. package/templates/agents/i18n-engineer.md +42 -0
  54. package/templates/agents/implementer.md +38 -35
  55. package/templates/agents/migration-engineer.md +42 -0
  56. package/templates/agents/performance-engineer.md +49 -0
  57. package/templates/agents/refactoring-agent.md +41 -0
  58. package/templates/agents/researcher.md +38 -34
  59. package/templates/agents/security-reviewer.md +40 -0
  60. package/templates/agents/team-lead.md +37 -34
  61. package/templates/agents/tester.md +45 -42
  62. package/templates/agents/ux-reviewer.md +43 -0
  63. package/templates/ci/rulebook-review.yml +26 -26
  64. package/templates/cli/AIDER.md +49 -49
  65. package/templates/cli/AMAZON_Q.md +25 -25
  66. package/templates/cli/AUGGIE.md +32 -32
  67. package/templates/cli/CLAUDE.md +117 -117
  68. package/templates/cli/CLINE.md +99 -99
  69. package/templates/cli/CODEBUDDY.md +20 -20
  70. package/templates/cli/CODEIUM.md +20 -20
  71. package/templates/cli/CODEX.md +21 -21
  72. package/templates/cli/CONTINUE.md +34 -34
  73. package/templates/cli/CURSOR_CLI.md +62 -62
  74. package/templates/cli/FACTORY.md +18 -18
  75. package/templates/cli/GEMINI.md +35 -35
  76. package/templates/cli/KILOCODE.md +18 -18
  77. package/templates/cli/OPENCODE.md +18 -18
  78. package/templates/cli/_GENERIC_TEMPLATE.md +29 -29
  79. package/templates/commands/rulebook-memory-save.md +48 -48
  80. package/templates/commands/rulebook-memory-search.md +47 -47
  81. package/templates/commands/rulebook-task-apply.md +67 -67
  82. package/templates/commands/rulebook-task-archive.md +94 -94
  83. package/templates/commands/rulebook-task-create.md +93 -93
  84. package/templates/commands/rulebook-task-list.md +42 -42
  85. package/templates/commands/rulebook-task-show.md +52 -52
  86. package/templates/commands/rulebook-task-validate.md +53 -53
  87. package/templates/core/AGENTS_LEAN.md +25 -25
  88. package/templates/core/AGENTS_OVERRIDE.md +16 -16
  89. package/templates/core/AGENT_AUTOMATION.md +288 -288
  90. package/templates/core/DAG.md +304 -304
  91. package/templates/core/DOCUMENTATION_RULES.md +36 -36
  92. package/templates/core/MULTI_AGENT.md +74 -74
  93. package/templates/core/PLANS.md +28 -28
  94. package/templates/core/QUALITY_ENFORCEMENT.md +68 -68
  95. package/templates/core/RALPH.md +471 -471
  96. package/templates/core/RULEBOOK.md +1935 -1935
  97. package/templates/frameworks/ANGULAR.md +36 -36
  98. package/templates/frameworks/DJANGO.md +83 -83
  99. package/templates/frameworks/ELECTRON.md +147 -147
  100. package/templates/frameworks/FLASK.md +38 -38
  101. package/templates/frameworks/FLUTTER.md +55 -55
  102. package/templates/frameworks/JQUERY.md +32 -32
  103. package/templates/frameworks/LARAVEL.md +38 -38
  104. package/templates/frameworks/NESTJS.md +43 -43
  105. package/templates/frameworks/NEXTJS.md +127 -127
  106. package/templates/frameworks/NUXT.md +40 -40
  107. package/templates/frameworks/RAILS.md +66 -66
  108. package/templates/frameworks/REACT.md +38 -38
  109. package/templates/frameworks/REACT_NATIVE.md +47 -47
  110. package/templates/frameworks/SPRING.md +39 -39
  111. package/templates/frameworks/SYMFONY.md +36 -36
  112. package/templates/frameworks/VUE.md +36 -36
  113. package/templates/frameworks/ZEND.md +35 -35
  114. package/templates/git/CI_CD_PATTERNS.md +661 -661
  115. package/templates/git/GITHUB_ACTIONS.md +728 -728
  116. package/templates/git/GITLAB_CI.md +730 -730
  117. package/templates/git/GIT_WORKFLOW.md +1157 -1157
  118. package/templates/git/SECRETS_MANAGEMENT.md +585 -585
  119. package/templates/hooks/COMMIT_MSG.md +530 -530
  120. package/templates/hooks/POST_CHECKOUT.md +546 -546
  121. package/templates/hooks/PREPARE_COMMIT_MSG.md +619 -619
  122. package/templates/hooks/PRE_COMMIT.md +414 -414
  123. package/templates/hooks/PRE_PUSH.md +601 -601
  124. package/templates/ides/CONTINUE_RULES.md +16 -16
  125. package/templates/ides/COPILOT.md +37 -37
  126. package/templates/ides/COPILOT_INSTRUCTIONS.md +23 -23
  127. package/templates/ides/CURSOR.md +43 -43
  128. package/templates/ides/GEMINI_RULES.md +17 -17
  129. package/templates/ides/JETBRAINS_AI.md +35 -35
  130. package/templates/ides/REPLIT.md +36 -36
  131. package/templates/ides/TABNINE.md +29 -29
  132. package/templates/ides/VSCODE.md +40 -40
  133. package/templates/ides/WINDSURF.md +36 -36
  134. package/templates/ides/WINDSURF_RULES.md +14 -14
  135. package/templates/ides/ZED.md +32 -32
  136. package/templates/ides/cursor-mdc/go.mdc +24 -24
  137. package/templates/ides/cursor-mdc/python.mdc +24 -24
  138. package/templates/ides/cursor-mdc/quality.mdc +25 -25
  139. package/templates/ides/cursor-mdc/ralph.mdc +39 -39
  140. package/templates/ides/cursor-mdc/rulebook.mdc +38 -38
  141. package/templates/ides/cursor-mdc/rust.mdc +24 -24
  142. package/templates/ides/cursor-mdc/typescript.mdc +25 -25
  143. package/templates/languages/C.md +333 -333
  144. package/templates/languages/CPP.md +743 -743
  145. package/templates/languages/CSHARP.md +417 -417
  146. package/templates/languages/ELIXIR.md +454 -454
  147. package/templates/languages/ERLANG.md +361 -361
  148. package/templates/languages/GO.md +645 -645
  149. package/templates/languages/HASKELL.md +177 -177
  150. package/templates/languages/JAVA.md +607 -607
  151. package/templates/languages/JAVASCRIPT.md +631 -631
  152. package/templates/languages/JULIA.md +97 -97
  153. package/templates/languages/KOTLIN.md +511 -511
  154. package/templates/languages/LISP.md +100 -100
  155. package/templates/languages/LUA.md +74 -74
  156. package/templates/languages/OBJECTIVEC.md +90 -90
  157. package/templates/languages/PHP.md +416 -416
  158. package/templates/languages/PYTHON.md +682 -682
  159. package/templates/languages/RUBY.md +421 -421
  160. package/templates/languages/RUST.md +477 -477
  161. package/templates/languages/SAS.md +73 -73
  162. package/templates/languages/SCALA.md +348 -348
  163. package/templates/languages/SOLIDITY.md +580 -580
  164. package/templates/languages/SQL.md +137 -137
  165. package/templates/languages/SWIFT.md +466 -466
  166. package/templates/languages/TYPESCRIPT.md +591 -591
  167. package/templates/languages/ZIG.md +265 -265
  168. package/templates/modules/ATLASSIAN.md +255 -255
  169. package/templates/modules/CONTEXT7.md +54 -54
  170. package/templates/modules/FIGMA.md +267 -267
  171. package/templates/modules/GITHUB_MCP.md +64 -64
  172. package/templates/modules/GRAFANA.md +328 -328
  173. package/templates/modules/MEMORY.md +126 -126
  174. package/templates/modules/NOTION.md +247 -247
  175. package/templates/modules/PLAYWRIGHT.md +90 -90
  176. package/templates/modules/RULEBOOK_MCP.md +156 -156
  177. package/templates/modules/SERENA.md +337 -337
  178. package/templates/modules/SUPABASE.md +223 -223
  179. package/templates/modules/SYNAP.md +69 -69
  180. package/templates/modules/VECTORIZER.md +63 -63
  181. package/templates/modules/sequential-thinking.md +42 -42
  182. package/templates/ralph/ralph-history.bat +4 -4
  183. package/templates/ralph/ralph-history.sh +5 -5
  184. package/templates/ralph/ralph-init.bat +5 -5
  185. package/templates/ralph/ralph-init.sh +5 -5
  186. package/templates/ralph/ralph-pause.bat +5 -5
  187. package/templates/ralph/ralph-pause.sh +5 -5
  188. package/templates/ralph/ralph-run.bat +5 -5
  189. package/templates/ralph/ralph-run.sh +5 -5
  190. package/templates/ralph/ralph-status.bat +4 -4
  191. package/templates/ralph/ralph-status.sh +5 -5
  192. package/templates/services/AZURE_BLOB.md +184 -184
  193. package/templates/services/CASSANDRA.md +239 -239
  194. package/templates/services/DATADOG.md +26 -26
  195. package/templates/services/DOCKER.md +124 -124
  196. package/templates/services/DOCKER_COMPOSE.md +168 -168
  197. package/templates/services/DYNAMODB.md +308 -308
  198. package/templates/services/ELASTICSEARCH.md +347 -347
  199. package/templates/services/GCS.md +178 -178
  200. package/templates/services/HELM.md +194 -194
  201. package/templates/services/INFLUXDB.md +265 -265
  202. package/templates/services/KAFKA.md +341 -341
  203. package/templates/services/KUBERNETES.md +208 -208
  204. package/templates/services/MARIADB.md +183 -183
  205. package/templates/services/MEMCACHED.md +242 -242
  206. package/templates/services/MINIO.md +201 -201
  207. package/templates/services/MONGODB.md +268 -268
  208. package/templates/services/MYSQL.md +358 -358
  209. package/templates/services/NEO4J.md +247 -247
  210. package/templates/services/OPENTELEMETRY.md +25 -25
  211. package/templates/services/ORACLE.md +290 -290
  212. package/templates/services/PINO.md +24 -24
  213. package/templates/services/POSTGRESQL.md +326 -326
  214. package/templates/services/PROMETHEUS.md +33 -33
  215. package/templates/services/RABBITMQ.md +286 -286
  216. package/templates/services/REDIS.md +292 -292
  217. package/templates/services/S3.md +298 -298
  218. package/templates/services/SENTRY.md +23 -23
  219. package/templates/services/SQLITE.md +294 -294
  220. package/templates/services/SQLSERVER.md +294 -294
  221. package/templates/services/WINSTON.md +30 -30
  222. package/templates/skills/cli/aider/SKILL.md +59 -59
  223. package/templates/skills/cli/amazon-q/SKILL.md +35 -35
  224. package/templates/skills/cli/auggie/SKILL.md +42 -42
  225. package/templates/skills/cli/claude/SKILL.md +42 -42
  226. package/templates/skills/cli/cline/SKILL.md +42 -42
  227. package/templates/skills/cli/codebuddy/SKILL.md +30 -30
  228. package/templates/skills/cli/codeium/SKILL.md +30 -30
  229. package/templates/skills/cli/codex/SKILL.md +31 -31
  230. package/templates/skills/cli/continue/SKILL.md +44 -44
  231. package/templates/skills/cli/cursor-cli/SKILL.md +38 -38
  232. package/templates/skills/cli/factory/SKILL.md +28 -28
  233. package/templates/skills/cli/gemini/SKILL.md +45 -45
  234. package/templates/skills/cli/kilocode/SKILL.md +28 -28
  235. package/templates/skills/cli/opencode/SKILL.md +28 -28
  236. package/templates/skills/core/agent-automation/SKILL.md +194 -194
  237. package/templates/skills/core/dag/SKILL.md +314 -314
  238. package/templates/skills/core/documentation-rules/SKILL.md +46 -46
  239. package/templates/skills/core/quality-enforcement/SKILL.md +78 -78
  240. package/templates/skills/core/rulebook/SKILL.md +176 -176
  241. package/templates/skills/dev/accessibility/SKILL.md +17 -0
  242. package/templates/skills/dev/api-design/SKILL.md +15 -0
  243. package/templates/skills/dev/architect/SKILL.md +17 -0
  244. package/templates/skills/dev/build-fix/SKILL.md +17 -0
  245. package/templates/skills/dev/db-design/SKILL.md +15 -0
  246. package/templates/skills/dev/debug/SKILL.md +16 -0
  247. package/templates/skills/dev/deploy/SKILL.md +17 -0
  248. package/templates/skills/dev/docs/SKILL.md +17 -0
  249. package/templates/skills/dev/migrate/SKILL.md +15 -0
  250. package/templates/skills/dev/perf/SKILL.md +17 -0
  251. package/templates/skills/dev/refactor/SKILL.md +17 -0
  252. package/templates/skills/dev/research/SKILL.md +14 -0
  253. package/templates/skills/dev/review/SKILL.md +18 -0
  254. package/templates/skills/dev/security-audit/SKILL.md +17 -0
  255. package/templates/skills/frameworks/angular/SKILL.md +46 -46
  256. package/templates/skills/frameworks/django/SKILL.md +93 -93
  257. package/templates/skills/frameworks/electron/SKILL.md +157 -157
  258. package/templates/skills/frameworks/flask/SKILL.md +48 -48
  259. package/templates/skills/frameworks/flutter/SKILL.md +65 -65
  260. package/templates/skills/frameworks/jquery/SKILL.md +42 -42
  261. package/templates/skills/frameworks/laravel/SKILL.md +48 -48
  262. package/templates/skills/frameworks/nestjs/SKILL.md +53 -53
  263. package/templates/skills/frameworks/nextjs/SKILL.md +137 -137
  264. package/templates/skills/frameworks/nuxt/SKILL.md +50 -50
  265. package/templates/skills/frameworks/rails/SKILL.md +76 -76
  266. package/templates/skills/frameworks/react/SKILL.md +48 -48
  267. package/templates/skills/frameworks/react-native/SKILL.md +57 -57
  268. package/templates/skills/frameworks/spring/SKILL.md +49 -49
  269. package/templates/skills/frameworks/symfony/SKILL.md +46 -46
  270. package/templates/skills/frameworks/vue/SKILL.md +46 -46
  271. package/templates/skills/frameworks/zend/SKILL.md +45 -45
  272. package/templates/skills/ides/copilot/SKILL.md +47 -47
  273. package/templates/skills/ides/cursor/SKILL.md +53 -53
  274. package/templates/skills/ides/jetbrains-ai/SKILL.md +45 -45
  275. package/templates/skills/ides/replit/SKILL.md +46 -46
  276. package/templates/skills/ides/tabnine/SKILL.md +39 -39
  277. package/templates/skills/ides/vscode/SKILL.md +50 -50
  278. package/templates/skills/ides/windsurf/SKILL.md +46 -46
  279. package/templates/skills/ides/zed/SKILL.md +42 -42
  280. package/templates/skills/languages/c/SKILL.md +343 -343
  281. package/templates/skills/languages/cpp/SKILL.md +753 -753
  282. package/templates/skills/languages/csharp/SKILL.md +427 -427
  283. package/templates/skills/languages/elixir/SKILL.md +464 -464
  284. package/templates/skills/languages/erlang/SKILL.md +371 -371
  285. package/templates/skills/languages/go/SKILL.md +655 -655
  286. package/templates/skills/languages/haskell/SKILL.md +187 -187
  287. package/templates/skills/languages/java/SKILL.md +617 -617
  288. package/templates/skills/languages/javascript/SKILL.md +641 -641
  289. package/templates/skills/languages/julia/SKILL.md +107 -107
  290. package/templates/skills/languages/kotlin/SKILL.md +521 -521
  291. package/templates/skills/languages/lisp/SKILL.md +110 -110
  292. package/templates/skills/languages/lua/SKILL.md +84 -84
  293. package/templates/skills/languages/objectivec/SKILL.md +100 -100
  294. package/templates/skills/languages/php/SKILL.md +426 -426
  295. package/templates/skills/languages/python/SKILL.md +692 -692
  296. package/templates/skills/languages/ruby/SKILL.md +431 -431
  297. package/templates/skills/languages/rust/SKILL.md +487 -487
  298. package/templates/skills/languages/sas/SKILL.md +83 -83
  299. package/templates/skills/languages/scala/SKILL.md +358 -358
  300. package/templates/skills/languages/solidity/SKILL.md +590 -590
  301. package/templates/skills/languages/sql/SKILL.md +147 -147
  302. package/templates/skills/languages/swift/SKILL.md +476 -476
  303. package/templates/skills/languages/typescript/SKILL.md +302 -302
  304. package/templates/skills/languages/zig/SKILL.md +275 -275
  305. package/templates/skills/modules/atlassian/SKILL.md +265 -265
  306. package/templates/skills/modules/context7/SKILL.md +64 -64
  307. package/templates/skills/modules/figma/SKILL.md +277 -277
  308. package/templates/skills/modules/github-mcp/SKILL.md +74 -74
  309. package/templates/skills/modules/grafana/SKILL.md +338 -338
  310. package/templates/skills/modules/memory/SKILL.md +73 -73
  311. package/templates/skills/modules/notion/SKILL.md +257 -257
  312. package/templates/skills/modules/playwright/SKILL.md +100 -100
  313. package/templates/skills/modules/rulebook-mcp/SKILL.md +166 -166
  314. package/templates/skills/modules/serena/SKILL.md +347 -347
  315. package/templates/skills/modules/supabase/SKILL.md +233 -233
  316. package/templates/skills/modules/synap/SKILL.md +79 -79
  317. package/templates/skills/modules/vectorizer/SKILL.md +73 -73
  318. package/templates/skills/services/azure-blob/SKILL.md +194 -194
  319. package/templates/skills/services/cassandra/SKILL.md +249 -249
  320. package/templates/skills/services/dynamodb/SKILL.md +318 -318
  321. package/templates/skills/services/elasticsearch/SKILL.md +357 -357
  322. package/templates/skills/services/gcs/SKILL.md +188 -188
  323. package/templates/skills/services/influxdb/SKILL.md +275 -275
  324. package/templates/skills/services/kafka/SKILL.md +351 -351
  325. package/templates/skills/services/mariadb/SKILL.md +193 -193
  326. package/templates/skills/services/memcached/SKILL.md +252 -252
  327. package/templates/skills/services/minio/SKILL.md +211 -211
  328. package/templates/skills/services/mongodb/SKILL.md +278 -278
  329. package/templates/skills/services/mysql/SKILL.md +368 -368
  330. package/templates/skills/services/neo4j/SKILL.md +257 -257
  331. package/templates/skills/services/oracle/SKILL.md +300 -300
  332. package/templates/skills/services/postgresql/SKILL.md +336 -336
  333. package/templates/skills/services/rabbitmq/SKILL.md +296 -296
  334. package/templates/skills/services/redis/SKILL.md +302 -302
  335. package/templates/skills/services/s3/SKILL.md +308 -308
  336. package/templates/skills/services/sqlite/SKILL.md +304 -304
  337. package/templates/skills/services/sqlserver/SKILL.md +304 -304
  338. package/templates/skills/workflows/ralph/SKILL.md +309 -309
  339. package/templates/skills/workflows/ralph/install.sh +87 -87
  340. package/templates/skills/workflows/ralph/manifest.json +158 -158
@@ -1,124 +1,124 @@
1
- <!-- DOCKER:START -->
2
- # Docker Instructions
3
-
4
- **CRITICAL**: Follow these Docker best practices for all container builds.
5
-
6
- ## Build Patterns
7
-
8
- ### Multi-Stage Builds
9
- Use multi-stage builds to minimize final image size and separate build-time dependencies from runtime:
10
-
11
- ```dockerfile
12
- FROM node:20-alpine AS builder
13
- WORKDIR /app
14
- COPY package*.json ./
15
- RUN npm ci
16
- COPY . .
17
- RUN npm run build
18
-
19
- FROM node:20-alpine AS runtime
20
- RUN adduser -D appuser
21
- USER appuser
22
- WORKDIR /app
23
- COPY --from=builder /app/dist ./dist
24
- COPY --from=builder /app/node_modules ./node_modules
25
- COPY --from=builder /app/package.json ./
26
- HEALTHCHECK --interval=30s --timeout=3s CMD node -e "require('http').get('http://localhost:3000/health', (r) => { process.exit(r.statusCode === 200 ? 0 : 1) })"
27
- CMD ["node", "dist/index.js"]
28
- ```
29
-
30
- ### Base Image Selection
31
- - Pin base image versions: `node:20-alpine` not `node:latest`
32
- - Prefer `-alpine` or `-slim` variants for smaller images
33
- - Use official images from Docker Hub verified publishers
34
-
35
- ## Security Requirements
36
-
37
- ### Non-Root User
38
- ALL containers MUST run as a non-root user:
39
- ```dockerfile
40
- RUN adduser -D appuser
41
- USER appuser
42
- ```
43
-
44
- ### Secrets
45
- - NEVER copy secrets (`.env`, credentials, keys) into image layers
46
- - Use Docker secrets or runtime environment variables instead
47
- - Scan images with `docker scout cves` or `trivy image` before pushing
48
- - Add `--no-cache` to package install commands to reduce attack surface
49
-
50
- ### Image Scanning
51
- ```bash
52
- # Docker Scout (built-in)
53
- docker scout cves <image>
54
-
55
- # Trivy
56
- trivy image <image>
57
- ```
58
-
59
- ## Required Instructions
60
-
61
- ### HEALTHCHECK
62
- ALL production images MUST include a HEALTHCHECK:
63
- ```dockerfile
64
- HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
65
- CMD curl -f http://localhost:3000/health || exit 1
66
- ```
67
-
68
- ### .dockerignore Requirements
69
- Every Docker project MUST have a `.dockerignore` file containing at minimum:
70
- ```
71
- .git
72
- node_modules
73
- dist
74
- coverage
75
- *.log
76
- .env*
77
- .DS_Store
78
- *.md
79
- .vscode
80
- .idea
81
- ```
82
-
83
- ## Common Patterns
84
-
85
- ### Layer Caching
86
- Order Dockerfile instructions from least-changing to most-changing:
87
- ```dockerfile
88
- # 1. Base image (rarely changes)
89
- FROM node:20-alpine
90
-
91
- # 2. System dependencies (changes rarely)
92
- RUN apk add --no-cache curl
93
-
94
- # 3. Package files (changes when deps change)
95
- COPY package*.json ./
96
- RUN npm ci --only=production
97
-
98
- # 4. Application code (changes frequently)
99
- COPY . .
100
- ```
101
-
102
- ### Production Optimization
103
- ```dockerfile
104
- # Use npm ci for deterministic installs
105
- RUN npm ci --only=production
106
-
107
- # Remove unnecessary files
108
- RUN rm -rf /tmp/* /var/cache/apk/*
109
-
110
- # Set NODE_ENV
111
- ENV NODE_ENV=production
112
- ```
113
-
114
- ## Best Practices
115
-
116
- - Use `.dockerignore` to exclude unnecessary files from build context
117
- - One process per container (do not run multiple services in one container)
118
- - Use `COPY` over `ADD` unless extracting archives
119
- - Combine RUN commands to reduce layers: `RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*`
120
- - Set explicit `WORKDIR` instead of `RUN cd`
121
- - Use `EXPOSE` to document listening ports
122
- - Tag images with semantic versions, not just `latest`
123
-
124
- <!-- DOCKER:END -->
1
+ <!-- DOCKER:START -->
2
+ # Docker Instructions
3
+
4
+ **CRITICAL**: Follow these Docker best practices for all container builds.
5
+
6
+ ## Build Patterns
7
+
8
+ ### Multi-Stage Builds
9
+ Use multi-stage builds to minimize final image size and separate build-time dependencies from runtime:
10
+
11
+ ```dockerfile
12
+ FROM node:20-alpine AS builder
13
+ WORKDIR /app
14
+ COPY package*.json ./
15
+ RUN npm ci
16
+ COPY . .
17
+ RUN npm run build
18
+
19
+ FROM node:20-alpine AS runtime
20
+ RUN adduser -D appuser
21
+ USER appuser
22
+ WORKDIR /app
23
+ COPY --from=builder /app/dist ./dist
24
+ COPY --from=builder /app/node_modules ./node_modules
25
+ COPY --from=builder /app/package.json ./
26
+ HEALTHCHECK --interval=30s --timeout=3s CMD node -e "require('http').get('http://localhost:3000/health', (r) => { process.exit(r.statusCode === 200 ? 0 : 1) })"
27
+ CMD ["node", "dist/index.js"]
28
+ ```
29
+
30
+ ### Base Image Selection
31
+ - Pin base image versions: `node:20-alpine` not `node:latest`
32
+ - Prefer `-alpine` or `-slim` variants for smaller images
33
+ - Use official images from Docker Hub verified publishers
34
+
35
+ ## Security Requirements
36
+
37
+ ### Non-Root User
38
+ ALL containers MUST run as a non-root user:
39
+ ```dockerfile
40
+ RUN adduser -D appuser
41
+ USER appuser
42
+ ```
43
+
44
+ ### Secrets
45
+ - NEVER copy secrets (`.env`, credentials, keys) into image layers
46
+ - Use Docker secrets or runtime environment variables instead
47
+ - Scan images with `docker scout cves` or `trivy image` before pushing
48
+ - Add `--no-cache` to package install commands to reduce attack surface
49
+
50
+ ### Image Scanning
51
+ ```bash
52
+ # Docker Scout (built-in)
53
+ docker scout cves <image>
54
+
55
+ # Trivy
56
+ trivy image <image>
57
+ ```
58
+
59
+ ## Required Instructions
60
+
61
+ ### HEALTHCHECK
62
+ ALL production images MUST include a HEALTHCHECK:
63
+ ```dockerfile
64
+ HEALTHCHECK --interval=30s --timeout=3s --start-period=10s --retries=3 \
65
+ CMD curl -f http://localhost:3000/health || exit 1
66
+ ```
67
+
68
+ ### .dockerignore Requirements
69
+ Every Docker project MUST have a `.dockerignore` file containing at minimum:
70
+ ```
71
+ .git
72
+ node_modules
73
+ dist
74
+ coverage
75
+ *.log
76
+ .env*
77
+ .DS_Store
78
+ *.md
79
+ .vscode
80
+ .idea
81
+ ```
82
+
83
+ ## Common Patterns
84
+
85
+ ### Layer Caching
86
+ Order Dockerfile instructions from least-changing to most-changing:
87
+ ```dockerfile
88
+ # 1. Base image (rarely changes)
89
+ FROM node:20-alpine
90
+
91
+ # 2. System dependencies (changes rarely)
92
+ RUN apk add --no-cache curl
93
+
94
+ # 3. Package files (changes when deps change)
95
+ COPY package*.json ./
96
+ RUN npm ci --only=production
97
+
98
+ # 4. Application code (changes frequently)
99
+ COPY . .
100
+ ```
101
+
102
+ ### Production Optimization
103
+ ```dockerfile
104
+ # Use npm ci for deterministic installs
105
+ RUN npm ci --only=production
106
+
107
+ # Remove unnecessary files
108
+ RUN rm -rf /tmp/* /var/cache/apk/*
109
+
110
+ # Set NODE_ENV
111
+ ENV NODE_ENV=production
112
+ ```
113
+
114
+ ## Best Practices
115
+
116
+ - Use `.dockerignore` to exclude unnecessary files from build context
117
+ - One process per container (do not run multiple services in one container)
118
+ - Use `COPY` over `ADD` unless extracting archives
119
+ - Combine RUN commands to reduce layers: `RUN apt-get update && apt-get install -y curl && rm -rf /var/lib/apt/lists/*`
120
+ - Set explicit `WORKDIR` instead of `RUN cd`
121
+ - Use `EXPOSE` to document listening ports
122
+ - Tag images with semantic versions, not just `latest`
123
+
124
+ <!-- DOCKER:END -->
@@ -1,168 +1,168 @@
1
- <!-- DOCKER_COMPOSE:START -->
2
- # Docker Compose Instructions
3
-
4
- **CRITICAL**: Follow these Docker Compose best practices for local development and multi-container orchestration.
5
-
6
- ## Version and Structure
7
-
8
- ### File Organization
9
- - Use `docker-compose.yml` for base configuration
10
- - Use `docker-compose.override.yml` for local development overrides
11
- - Use `docker-compose.prod.yml` for production-specific settings
12
- - Do NOT commit secrets in `docker-compose.yml` — use `.env` files
13
-
14
- ### Compose File
15
- ```yaml
16
- services:
17
- app:
18
- build:
19
- context: .
20
- dockerfile: Dockerfile
21
- target: runtime
22
- env_file: [.env]
23
- ports:
24
- - "3000:3000"
25
- depends_on:
26
- db:
27
- condition: service_healthy
28
- healthcheck:
29
- test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
30
- interval: 30s
31
- timeout: 3s
32
- retries: 3
33
- start_period: 10s
34
- deploy:
35
- resources:
36
- limits:
37
- memory: 512M
38
- cpus: "0.5"
39
- restart: unless-stopped
40
- ```
41
-
42
- ## Required Fields Per Service
43
-
44
- ### Health Checks
45
- ALL services MUST define a healthcheck:
46
- ```yaml
47
- healthcheck:
48
- test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
49
- interval: 30s
50
- timeout: 3s
51
- retries: 3
52
- ```
53
-
54
- ### Resource Limits
55
- ALL services SHOULD define resource limits for production-like environments:
56
- ```yaml
57
- deploy:
58
- resources:
59
- limits:
60
- memory: 512M
61
- cpus: "0.5"
62
- reservations:
63
- memory: 128M
64
- cpus: "0.25"
65
- ```
66
-
67
- ### Restart Policy
68
- ```yaml
69
- restart: unless-stopped
70
- ```
71
-
72
- ### Named Volumes
73
- Use named volumes (not bind mounts) for persistent data:
74
- ```yaml
75
- volumes:
76
- postgres_data:
77
- redis_data:
78
-
79
- services:
80
- db:
81
- volumes:
82
- - postgres_data:/var/lib/postgresql/data
83
- ```
84
-
85
- ## Environment Variables
86
-
87
- ### Configuration
88
- - Use `.env` file: `env_file: [.env]`
89
- - Never hardcode credentials in docker-compose.yml
90
- - Document all required environment variables in README or `.env.example`
91
-
92
- ### .env.example Pattern
93
- ```bash
94
- # Database
95
- DB_HOST=localhost
96
- DB_PORT=5432
97
- DB_NAME=myapp
98
- DB_USER=myuser
99
- DB_PASSWORD=changeme
100
-
101
- # Redis
102
- REDIS_URL=redis://localhost:6379
103
-
104
- # Application
105
- NODE_ENV=development
106
- PORT=3000
107
- ```
108
-
109
- ## Networking
110
-
111
- ### Service Communication
112
- - Services on the same network communicate by service name
113
- - Use explicit networks for isolation:
114
- ```yaml
115
- networks:
116
- frontend:
117
- backend:
118
-
119
- services:
120
- app:
121
- networks: [frontend, backend]
122
- db:
123
- networks: [backend]
124
- ```
125
-
126
- ## Common Patterns
127
-
128
- ### Development Setup
129
- ```yaml
130
- services:
131
- app:
132
- build: .
133
- volumes:
134
- - .:/app
135
- - /app/node_modules
136
- environment:
137
- - NODE_ENV=development
138
- command: npm run dev
139
- ```
140
-
141
- ### Database with Init Scripts
142
- ```yaml
143
- services:
144
- db:
145
- image: postgres:16-alpine
146
- environment:
147
- POSTGRES_DB: myapp
148
- POSTGRES_USER: myuser
149
- POSTGRES_PASSWORD: ${DB_PASSWORD}
150
- volumes:
151
- - postgres_data:/var/lib/postgresql/data
152
- - ./init.sql:/docker-entrypoint-initdb.d/init.sql
153
- healthcheck:
154
- test: ["CMD-SHELL", "pg_isready -U myuser"]
155
- interval: 10s
156
- retries: 5
157
- ```
158
-
159
- ## Best Practices
160
-
161
- - Use `depends_on` with `condition: service_healthy` for startup ordering
162
- - Pin image versions (e.g., `postgres:16-alpine`, not `postgres:latest`)
163
- - Keep compose files DRY with YAML anchors or extension fields (`x-common`)
164
- - Use `docker compose up --build` to rebuild images after code changes
165
- - Run `docker compose down -v` to clean up volumes during development
166
- - Separate concerns: one service per container
167
-
168
- <!-- DOCKER_COMPOSE:END -->
1
+ <!-- DOCKER_COMPOSE:START -->
2
+ # Docker Compose Instructions
3
+
4
+ **CRITICAL**: Follow these Docker Compose best practices for local development and multi-container orchestration.
5
+
6
+ ## Version and Structure
7
+
8
+ ### File Organization
9
+ - Use `docker-compose.yml` for base configuration
10
+ - Use `docker-compose.override.yml` for local development overrides
11
+ - Use `docker-compose.prod.yml` for production-specific settings
12
+ - Do NOT commit secrets in `docker-compose.yml` — use `.env` files
13
+
14
+ ### Compose File
15
+ ```yaml
16
+ services:
17
+ app:
18
+ build:
19
+ context: .
20
+ dockerfile: Dockerfile
21
+ target: runtime
22
+ env_file: [.env]
23
+ ports:
24
+ - "3000:3000"
25
+ depends_on:
26
+ db:
27
+ condition: service_healthy
28
+ healthcheck:
29
+ test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
30
+ interval: 30s
31
+ timeout: 3s
32
+ retries: 3
33
+ start_period: 10s
34
+ deploy:
35
+ resources:
36
+ limits:
37
+ memory: 512M
38
+ cpus: "0.5"
39
+ restart: unless-stopped
40
+ ```
41
+
42
+ ## Required Fields Per Service
43
+
44
+ ### Health Checks
45
+ ALL services MUST define a healthcheck:
46
+ ```yaml
47
+ healthcheck:
48
+ test: ["CMD", "curl", "-f", "http://localhost:3000/health"]
49
+ interval: 30s
50
+ timeout: 3s
51
+ retries: 3
52
+ ```
53
+
54
+ ### Resource Limits
55
+ ALL services SHOULD define resource limits for production-like environments:
56
+ ```yaml
57
+ deploy:
58
+ resources:
59
+ limits:
60
+ memory: 512M
61
+ cpus: "0.5"
62
+ reservations:
63
+ memory: 128M
64
+ cpus: "0.25"
65
+ ```
66
+
67
+ ### Restart Policy
68
+ ```yaml
69
+ restart: unless-stopped
70
+ ```
71
+
72
+ ### Named Volumes
73
+ Use named volumes (not bind mounts) for persistent data:
74
+ ```yaml
75
+ volumes:
76
+ postgres_data:
77
+ redis_data:
78
+
79
+ services:
80
+ db:
81
+ volumes:
82
+ - postgres_data:/var/lib/postgresql/data
83
+ ```
84
+
85
+ ## Environment Variables
86
+
87
+ ### Configuration
88
+ - Use `.env` file: `env_file: [.env]`
89
+ - Never hardcode credentials in docker-compose.yml
90
+ - Document all required environment variables in README or `.env.example`
91
+
92
+ ### .env.example Pattern
93
+ ```bash
94
+ # Database
95
+ DB_HOST=localhost
96
+ DB_PORT=5432
97
+ DB_NAME=myapp
98
+ DB_USER=myuser
99
+ DB_PASSWORD=changeme
100
+
101
+ # Redis
102
+ REDIS_URL=redis://localhost:6379
103
+
104
+ # Application
105
+ NODE_ENV=development
106
+ PORT=3000
107
+ ```
108
+
109
+ ## Networking
110
+
111
+ ### Service Communication
112
+ - Services on the same network communicate by service name
113
+ - Use explicit networks for isolation:
114
+ ```yaml
115
+ networks:
116
+ frontend:
117
+ backend:
118
+
119
+ services:
120
+ app:
121
+ networks: [frontend, backend]
122
+ db:
123
+ networks: [backend]
124
+ ```
125
+
126
+ ## Common Patterns
127
+
128
+ ### Development Setup
129
+ ```yaml
130
+ services:
131
+ app:
132
+ build: .
133
+ volumes:
134
+ - .:/app
135
+ - /app/node_modules
136
+ environment:
137
+ - NODE_ENV=development
138
+ command: npm run dev
139
+ ```
140
+
141
+ ### Database with Init Scripts
142
+ ```yaml
143
+ services:
144
+ db:
145
+ image: postgres:16-alpine
146
+ environment:
147
+ POSTGRES_DB: myapp
148
+ POSTGRES_USER: myuser
149
+ POSTGRES_PASSWORD: ${DB_PASSWORD}
150
+ volumes:
151
+ - postgres_data:/var/lib/postgresql/data
152
+ - ./init.sql:/docker-entrypoint-initdb.d/init.sql
153
+ healthcheck:
154
+ test: ["CMD-SHELL", "pg_isready -U myuser"]
155
+ interval: 10s
156
+ retries: 5
157
+ ```
158
+
159
+ ## Best Practices
160
+
161
+ - Use `depends_on` with `condition: service_healthy` for startup ordering
162
+ - Pin image versions (e.g., `postgres:16-alpine`, not `postgres:latest`)
163
+ - Keep compose files DRY with YAML anchors or extension fields (`x-common`)
164
+ - Use `docker compose up --build` to rebuild images after code changes
165
+ - Run `docker compose down -v` to clean up volumes during development
166
+ - Separate concerns: one service per container
167
+
168
+ <!-- DOCKER_COMPOSE:END -->