tribunal-kit 4.5.0 → 4.6.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 (217) hide show
  1. package/.agent/.shared/ui-ux-pro-max/README.md +4 -4
  2. package/.agent/ARCHITECTURE.md +279 -277
  3. package/.agent/GEMINI.md +127 -121
  4. package/.agent/agents/accessibility-reviewer.md +187 -187
  5. package/.agent/agents/ai-code-reviewer.md +199 -199
  6. package/.agent/agents/api-architect.md +71 -66
  7. package/.agent/agents/backend-specialist.md +219 -215
  8. package/.agent/agents/cloud-engineer.md +98 -0
  9. package/.agent/agents/code-archaeologist.md +168 -161
  10. package/.agent/agents/database-architect.md +184 -184
  11. package/.agent/agents/db-latency-auditor.md +213 -216
  12. package/.agent/agents/debugger.md +198 -191
  13. package/.agent/agents/dependency-reviewer.md +106 -103
  14. package/.agent/agents/devops-engineer.md +218 -218
  15. package/.agent/agents/documentation-writer.md +209 -201
  16. package/.agent/agents/explorer-agent.md +167 -160
  17. package/.agent/agents/frontend-reviewer.md +162 -160
  18. package/.agent/agents/frontend-specialist.md +257 -248
  19. package/.agent/agents/game-developer.md +48 -48
  20. package/.agent/agents/logic-reviewer.md +118 -116
  21. package/.agent/agents/mobile-developer.md +197 -200
  22. package/.agent/agents/mobile-reviewer.md +159 -162
  23. package/.agent/agents/orchestrator.md +187 -181
  24. package/.agent/agents/penetration-tester.md +160 -157
  25. package/.agent/agents/performance-optimizer.md +183 -183
  26. package/.agent/agents/performance-reviewer.md +178 -178
  27. package/.agent/agents/precedence-reviewer.md +251 -250
  28. package/.agent/agents/product-manager.md +149 -142
  29. package/.agent/agents/product-owner.md +81 -80
  30. package/.agent/agents/project-planner.md +152 -142
  31. package/.agent/agents/qa-automation-engineer.md +216 -225
  32. package/.agent/agents/resilience-reviewer.md +88 -88
  33. package/.agent/agents/schema-reviewer.md +67 -67
  34. package/.agent/agents/security-auditor.md +180 -174
  35. package/.agent/agents/seo-specialist.md +188 -193
  36. package/.agent/agents/sql-reviewer.md +159 -161
  37. package/.agent/agents/supervisor-agent.md +173 -184
  38. package/.agent/agents/swarm-worker-contracts.md +170 -166
  39. package/.agent/agents/swarm-worker-registry.md +92 -92
  40. package/.agent/agents/system-architect.md +85 -0
  41. package/.agent/agents/test-coverage-reviewer.md +158 -160
  42. package/.agent/agents/test-engineer.md +118 -118
  43. package/.agent/agents/throughput-optimizer.md +291 -299
  44. package/.agent/agents/type-safety-reviewer.md +182 -175
  45. package/.agent/agents/ui-ux-auditor.md +300 -292
  46. package/.agent/agents/vitals-reviewer.md +223 -223
  47. package/.agent/mcp_config.json +37 -40
  48. package/.agent/patterns/generator.md +11 -9
  49. package/.agent/patterns/inversion.md +14 -12
  50. package/.agent/patterns/pipeline.md +11 -9
  51. package/.agent/patterns/reviewer.md +15 -13
  52. package/.agent/patterns/tool-wrapper.md +11 -9
  53. package/.agent/routing_index.json +654 -0
  54. package/.agent/rules/GEMINI.md +358 -352
  55. package/.agent/scripts/compile_router.py +112 -0
  56. package/.agent/scripts/migrate_skills_frontmatter.py +64 -0
  57. package/.agent/scripts/strengthen_skills.js +1 -1
  58. package/.agent/skills/advanced-rag-pipelines/SKILL.md +56 -0
  59. package/.agent/skills/agent-organizer/SKILL.md +156 -150
  60. package/.agent/skills/agentic-patterns/SKILL.md +313 -315
  61. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +190 -184
  62. package/.agent/skills/api-patterns/SKILL.md +253 -247
  63. package/.agent/skills/api-security-auditor/SKILL.md +195 -193
  64. package/.agent/skills/app-builder/SKILL.md +573 -572
  65. package/.agent/skills/app-builder/templates/SKILL.md +108 -115
  66. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
  67. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
  68. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
  69. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
  70. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
  71. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
  72. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
  73. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -122
  74. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -122
  75. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -169
  76. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -134
  77. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
  78. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -119
  79. package/.agent/skills/appflow-wireframe/SKILL.md +146 -145
  80. package/.agent/skills/architecture/SKILL.md +226 -219
  81. package/.agent/skills/authentication-best-practices/SKILL.md +197 -189
  82. package/.agent/skills/backend-security-expert/SKILL.md +16 -2
  83. package/.agent/skills/bash-linux/SKILL.md +179 -179
  84. package/.agent/skills/behavioral-modes/SKILL.md +239 -223
  85. package/.agent/skills/brainstorming/SKILL.md +498 -486
  86. package/.agent/skills/browser-native-ai/SKILL.md +57 -4
  87. package/.agent/skills/building-native-ui/SKILL.md +202 -202
  88. package/.agent/skills/cicd-pro/SKILL.md +442 -0
  89. package/.agent/skills/clean-code/SKILL.md +400 -381
  90. package/.agent/skills/cloud-architect/SKILL.md +439 -0
  91. package/.agent/skills/code-review-checklist/SKILL.md +203 -194
  92. package/.agent/skills/config-validator/SKILL.md +165 -165
  93. package/.agent/skills/containerization-pro/SKILL.md +452 -0
  94. package/.agent/skills/csharp-developer/SKILL.md +518 -518
  95. package/.agent/skills/data-validation-schemas/SKILL.md +333 -328
  96. package/.agent/skills/database-design/SKILL.md +247 -240
  97. package/.agent/skills/deployment-procedures/SKILL.md +172 -169
  98. package/.agent/skills/devops-engineer/SKILL.md +345 -345
  99. package/.agent/skills/devops-incident-responder/SKILL.md +143 -137
  100. package/.agent/skills/doc.md +209 -177
  101. package/.agent/skills/documentation-templates/SKILL.md +291 -279
  102. package/.agent/skills/edge-computing/SKILL.md +183 -181
  103. package/.agent/skills/error-resilience/SKILL.md +411 -428
  104. package/.agent/skills/extract-design-system/SKILL.md +160 -158
  105. package/.agent/skills/framer-motion-expert/SKILL.md +253 -244
  106. package/.agent/skills/frontend-design/SKILL.md +208 -201
  107. package/.agent/skills/frontend-security-expert/SKILL.md +16 -3
  108. package/.agent/skills/game-design-expert/SKILL.md +132 -129
  109. package/.agent/skills/game-engineering-expert/SKILL.md +148 -146
  110. package/.agent/skills/generative-ui-expert/SKILL.md +57 -1
  111. package/.agent/skills/geo-fundamentals/SKILL.md +148 -147
  112. package/.agent/skills/git-pro/SKILL.md +435 -0
  113. package/.agent/skills/github-operations/SKILL.md +335 -329
  114. package/.agent/skills/gsap-core/SKILL.md +319 -308
  115. package/.agent/skills/gsap-frameworks/SKILL.md +213 -207
  116. package/.agent/skills/gsap-performance/SKILL.md +139 -133
  117. package/.agent/skills/gsap-plugins/SKILL.md +486 -480
  118. package/.agent/skills/gsap-react/SKILL.md +202 -189
  119. package/.agent/skills/gsap-scrolltrigger/SKILL.md +357 -350
  120. package/.agent/skills/gsap-timeline/SKILL.md +165 -161
  121. package/.agent/skills/gsap-utils/SKILL.md +344 -338
  122. package/.agent/skills/harness-protocol/SKILL.md +48 -0
  123. package/.agent/skills/i18n-localization/SKILL.md +174 -163
  124. package/.agent/skills/intelligent-routing/SKILL.md +202 -246
  125. package/.agent/skills/knowledge-graph/SKILL.md +60 -52
  126. package/.agent/skills/lint-and-validate/SKILL.md +261 -261
  127. package/.agent/skills/llm-engineering/SKILL.md +400 -394
  128. package/.agent/skills/local-first/SKILL.md +178 -178
  129. package/.agent/skills/mcp-builder/SKILL.md +143 -142
  130. package/.agent/skills/mobile-design/SKILL.md +272 -263
  131. package/.agent/skills/monorepo-management/SKILL.md +335 -334
  132. package/.agent/skills/motion-engineering/SKILL.md +266 -234
  133. package/.agent/skills/nextjs-react-expert/SKILL.md +236 -234
  134. package/.agent/skills/nodejs-best-practices/SKILL.md +547 -548
  135. package/.agent/skills/observability/SKILL.md +343 -343
  136. package/.agent/skills/parallel-agents/SKILL.md +143 -146
  137. package/.agent/skills/performance-profiling/SKILL.md +259 -267
  138. package/.agent/skills/plan-writing/SKILL.md +150 -142
  139. package/.agent/skills/platform-engineer/SKILL.md +148 -147
  140. package/.agent/skills/playwright-best-practices/SKILL.md +188 -187
  141. package/.agent/skills/powershell-windows/SKILL.md +162 -162
  142. package/.agent/skills/project-idioms/SKILL.md +137 -137
  143. package/.agent/skills/python-patterns/SKILL.md +260 -259
  144. package/.agent/skills/python-pro/SKILL.md +324 -323
  145. package/.agent/skills/react-specialist/SKILL.md +305 -277
  146. package/.agent/skills/readme-builder/SKILL.md +310 -300
  147. package/.agent/skills/realtime-patterns/SKILL.md +323 -319
  148. package/.agent/skills/red-team-tactics/SKILL.md +231 -218
  149. package/.agent/skills/rust-pro/SKILL.md +671 -673
  150. package/.agent/skills/seo-fundamentals/SKILL.md +179 -179
  151. package/.agent/skills/server-management/SKILL.md +218 -214
  152. package/.agent/skills/shadcn-ui-expert/SKILL.md +231 -231
  153. package/.agent/skills/skill-creator/SKILL.md +87 -86
  154. package/.agent/skills/sql-pro/SKILL.md +629 -629
  155. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +97 -97
  156. package/.agent/skills/swiftui-expert/SKILL.md +204 -201
  157. package/.agent/skills/system-design-pro/SKILL.md +345 -0
  158. package/.agent/skills/systematic-debugging/SKILL.md +153 -142
  159. package/.agent/skills/tailwind-patterns/SKILL.md +610 -566
  160. package/.agent/skills/tdd-workflow/SKILL.md +169 -161
  161. package/.agent/skills/test-result-analyzer/SKILL.md +313 -309
  162. package/.agent/skills/testing-patterns/SKILL.md +566 -579
  163. package/.agent/skills/trend-researcher/SKILL.md +243 -237
  164. package/.agent/skills/typescript-advanced/SKILL.md +336 -335
  165. package/.agent/skills/ui-ux-pro-max/SKILL.md +590 -562
  166. package/.agent/skills/ui-ux-researcher/SKILL.md +244 -244
  167. package/.agent/skills/vue-expert/SKILL.md +294 -275
  168. package/.agent/skills/vulnerability-scanner/SKILL.md +416 -404
  169. package/.agent/skills/web-accessibility-auditor/SKILL.md +219 -218
  170. package/.agent/skills/web-design-guidelines/SKILL.md +192 -186
  171. package/.agent/skills/webapp-testing/SKILL.md +167 -169
  172. package/.agent/skills/webgpu-performance/SKILL.md +56 -2
  173. package/.agent/skills/whimsy-injector/SKILL.md +346 -325
  174. package/.agent/skills/workflow-optimizer/SKILL.md +231 -229
  175. package/.agent/workflows/acf.md +141 -0
  176. package/.agent/workflows/api-tester.md +176 -151
  177. package/.agent/workflows/audit.md +150 -127
  178. package/.agent/workflows/brainstorm.md +134 -110
  179. package/.agent/workflows/changelog.md +140 -112
  180. package/.agent/workflows/create.md +168 -124
  181. package/.agent/workflows/debug.md +190 -165
  182. package/.agent/workflows/deploy.md +201 -180
  183. package/.agent/workflows/enhance.md +154 -128
  184. package/.agent/workflows/fix.md +136 -114
  185. package/.agent/workflows/generate.md +198 -183
  186. package/.agent/workflows/marathon.md +37 -11
  187. package/.agent/workflows/migrate.md +184 -160
  188. package/.agent/workflows/orchestrate.md +192 -168
  189. package/.agent/workflows/performance-benchmarker.md +135 -114
  190. package/.agent/workflows/plan.md +196 -173
  191. package/.agent/workflows/preview.md +103 -80
  192. package/.agent/workflows/refactor.md +192 -161
  193. package/.agent/workflows/review-ai.md +125 -101
  194. package/.agent/workflows/review.md +141 -116
  195. package/.agent/workflows/session.md +122 -94
  196. package/.agent/workflows/status.md +101 -79
  197. package/.agent/workflows/strengthen-skills.md +164 -138
  198. package/.agent/workflows/super-prompt.md +24 -0
  199. package/.agent/workflows/swarm.md +193 -179
  200. package/.agent/workflows/test.md +211 -189
  201. package/.agent/workflows/tribunal-backend.md +136 -105
  202. package/.agent/workflows/tribunal-database.md +122 -95
  203. package/.agent/workflows/tribunal-frontend.md +221 -96
  204. package/.agent/workflows/tribunal-full.md +129 -100
  205. package/.agent/workflows/tribunal-mobile.md +122 -95
  206. package/.agent/workflows/tribunal-performance.md +136 -110
  207. package/.agent/workflows/tribunal-speed.md +209 -183
  208. package/.agent/workflows/ui-ux-pro-max.md +145 -122
  209. package/README.md +107 -55
  210. package/bin/mcp-server.js +159 -0
  211. package/bin/tribunal-kit.js +105 -29
  212. package/bin/wrapper.js +16 -7
  213. package/mcp_config.json +9 -0
  214. package/package.json +94 -86
  215. package/scripts/changelog.js +4 -3
  216. package/scripts/validate-payload.js +6 -1
  217. package/scripts/postinstall.js +0 -127
@@ -0,0 +1,452 @@
1
+ ---
2
+ name: containerization-pro
3
+ description: Production-grade containerization mastery. Multi-stage Dockerfiles for Node.js/Python/Rust/Go, image hardening (non-root, distroless, read-only FS), BuildKit layer caching, multi-platform builds (docker buildx), Docker Compose for local dev, container security scanning (Trivy/Grype), and AWS ECR workflows. Use when containerizing applications, optimizing Docker builds, or setting up container registries.
4
+ allowed-tools: Read, Write, Edit, Glob, Grep
5
+ version: 1.0.0
6
+ last-updated: 2026-06-21
7
+ applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
8
+ routing:
9
+ domain: devops
10
+ tier: pro
11
+ co-requires: [cicd-pro]
12
+ trigger-signals:
13
+ strong: [multi-stage build, BuildKit, ECR, Trivy, image hardening, Docker Compose]
14
+ ---
15
+
16
+ ## Hallucination Traps (Read First)
17
+
18
+ - ❌ `FROM node:22` → ✅ `FROM node:22-alpine` (1GB+ vs ~150MB). Always use slim/alpine variants.
19
+ - ❌ `RUN npm install` → ✅ `RUN npm ci --omit=dev` (deterministic, no devDeps, respects lockfile)
20
+ - ❌ `COPY . .` without `.dockerignore` → ✅ Always create `.dockerignore` first. Copies `node_modules`, `.env`, `.git` otherwise.
21
+ - ❌ Running container as root → ✅ Always create and switch to a non-root user. Root in container = root on host if container escapes.
22
+ - ❌ Single-stage Dockerfile → ✅ Multi-stage builds for any compiled/built application. Final image should contain ONLY runtime artifacts.
23
+ - ❌ `docker build` without `--platform` for CI → ✅ CI often runs on `amd64`; target hosts may be `arm64`. Always specify platform or use multi-platform builds.
24
+
25
+ ---
26
+
27
+ # Containerization Pro — Production-Grade Docker Mastery
28
+
29
+ ## 1. The .dockerignore (Write This First)
30
+
31
+ ```
32
+ # .dockerignore — always create before writing Dockerfile
33
+ node_modules
34
+ npm-debug.log*
35
+ .npm
36
+ .git
37
+ .gitignore
38
+ .env
39
+ .env.*
40
+ *.md
41
+ README*
42
+ .github
43
+ .vscode
44
+ coverage
45
+ .nyc_output
46
+ dist # will be rebuilt in container
47
+ build # will be rebuilt in container
48
+ __pycache__
49
+ *.pyc
50
+ *.pyo
51
+ .pytest_cache
52
+ target # Rust build artifacts
53
+ ```
54
+
55
+ ---
56
+
57
+ ## 2. Multi-Stage Dockerfiles
58
+
59
+ ### Node.js (Production-Ready)
60
+
61
+ ```dockerfile
62
+ # ✅ Multi-stage — builder produces artifacts, runner is minimal
63
+ FROM node:22-alpine AS base
64
+ WORKDIR /app
65
+
66
+ # Install deps in isolation for better caching
67
+ FROM base AS deps
68
+ COPY package.json package-lock.json ./
69
+ RUN npm ci
70
+
71
+ # Build stage
72
+ FROM base AS builder
73
+ COPY --from=deps /app/node_modules ./node_modules
74
+ COPY . .
75
+ RUN npm run build
76
+
77
+ # ──── Runtime (final) stage ────
78
+ FROM node:22-alpine AS runner
79
+ WORKDIR /app
80
+
81
+ # Security: create non-root user
82
+ RUN addgroup --system --gid 1001 appgroup && \
83
+ adduser --system --uid 1001 --ingroup appgroup appuser
84
+
85
+ # Copy only production artifacts
86
+ COPY --from=builder --chown=appuser:appgroup /app/dist ./dist
87
+ COPY --from=builder --chown=appuser:appgroup /app/node_modules ./node_modules
88
+ COPY --from=builder --chown=appuser:appgroup /app/package.json ./
89
+
90
+ USER appuser
91
+
92
+ ENV NODE_ENV=production
93
+ ENV PORT=3000
94
+ EXPOSE 3000
95
+
96
+ # Health check — required for orchestration (ECS, Kubernetes)
97
+ HEALTHCHECK --interval=30s --timeout=5s --start-period=10s --retries=3 \
98
+ CMD wget --quiet --tries=1 --spider http://localhost:3000/health || exit 1
99
+
100
+ CMD ["node", "dist/index.js"]
101
+ ```
102
+
103
+ ### Python (FastAPI)
104
+
105
+ ```dockerfile
106
+ FROM python:3.12-slim AS builder
107
+ WORKDIR /app
108
+
109
+ # Install build tools (needed for some packages, discarded in final image)
110
+ RUN apt-get update && apt-get install -y --no-install-recommends gcc && \
111
+ rm -rf /var/lib/apt/lists/*
112
+
113
+ COPY requirements.txt .
114
+ RUN pip install --user --no-cache-dir -r requirements.txt
115
+
116
+ # ──── Runtime stage ────
117
+ FROM python:3.12-slim AS runner
118
+ WORKDIR /app
119
+
120
+ # Security: non-root user
121
+ RUN addgroup --system --gid 1001 appgroup && \
122
+ adduser --system --uid 1001 --gid 1001 appuser
123
+
124
+ # Copy installed packages from builder
125
+ COPY --from=builder --chown=appuser:appgroup /root/.local /home/appuser/.local
126
+ COPY --chown=appuser:appgroup . .
127
+
128
+ USER appuser
129
+
130
+ ENV PATH=/home/appuser/.local/bin:$PATH
131
+ ENV PYTHONUNBUFFERED=1
132
+
133
+ EXPOSE 8000
134
+
135
+ HEALTHCHECK --interval=30s --timeout=5s --retries=3 \
136
+ CMD python -c "import urllib.request; urllib.request.urlopen('http://localhost:8000/health')"
137
+
138
+ CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8000"]
139
+ ```
140
+
141
+ ### Rust (Distroless Final Image)
142
+
143
+ ```dockerfile
144
+ FROM rust:1.78-slim AS builder
145
+ WORKDIR /app
146
+
147
+ # Cache dependencies separately for fast rebuilds
148
+ COPY Cargo.toml Cargo.lock ./
149
+ RUN mkdir src && echo "fn main() {}" > src/main.rs
150
+ RUN cargo build --release
151
+ RUN rm src/main.rs
152
+
153
+ # Build actual application
154
+ COPY src ./src
155
+ RUN touch src/main.rs && cargo build --release
156
+
157
+ # ──── Distroless runtime (no shell, no package manager, minimal attack surface) ────
158
+ FROM gcr.io/distroless/cc-debian12 AS runner
159
+ WORKDIR /app
160
+
161
+ COPY --from=builder /app/target/release/myapp ./myapp
162
+
163
+ USER nonroot:nonroot
164
+ EXPOSE 8080
165
+
166
+ CMD ["/app/myapp"]
167
+ ```
168
+
169
+ ### Go
170
+
171
+ ```dockerfile
172
+ FROM golang:1.22-alpine AS builder
173
+ WORKDIR /app
174
+
175
+ COPY go.mod go.sum ./
176
+ RUN go mod download
177
+
178
+ COPY . .
179
+ RUN CGO_ENABLED=0 GOOS=linux go build -ldflags="-w -s" -o server ./cmd/server
180
+
181
+ # ──── Scratch (smallest possible image) ────
182
+ FROM scratch AS runner
183
+ COPY --from=builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
184
+ COPY --from=builder /app/server /server
185
+
186
+ EXPOSE 8080
187
+ ENTRYPOINT ["/server"]
188
+ ```
189
+
190
+ ---
191
+
192
+ ## 3. BuildKit Layer Caching (CI Speed)
193
+
194
+ ```dockerfile
195
+ # syntax=docker/dockerfile:1.6
196
+ FROM node:22-alpine AS builder
197
+ WORKDIR /app
198
+
199
+ # Mount npm cache — persists between builds (dramatic speed improvement in CI)
200
+ COPY package.json package-lock.json ./
201
+ RUN --mount=type=cache,target=/root/.npm \
202
+ npm ci
203
+
204
+ # Mount build cache (Next.js / webpack)
205
+ COPY . .
206
+ RUN --mount=type=cache,target=/app/.next/cache \
207
+ npm run build
208
+ ```
209
+
210
+ ```yaml
211
+ # GitHub Actions — enable BuildKit with caching
212
+ - name: Build and push Docker image
213
+ uses: docker/build-push-action@v5
214
+ with:
215
+ context: .
216
+ push: true
217
+ tags: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ github.sha }}
218
+ cache-from: type=gha # GitHub Actions cache
219
+ cache-to: type=gha,mode=max # Cache all layers
220
+ build-args: |
221
+ BUILDKIT_INLINE_CACHE=1
222
+ ```
223
+
224
+ ---
225
+
226
+ ## 4. Multi-Platform Builds
227
+
228
+ ```bash
229
+ # Build for both amd64 (x86) and arm64 (Apple Silicon, AWS Graviton)
230
+ docker buildx create --name mybuilder --use
231
+ docker buildx build \
232
+ --platform linux/amd64,linux/arm64 \
233
+ --tag myapp:latest \
234
+ --push \
235
+ .
236
+ ```
237
+
238
+ ```yaml
239
+ # GitHub Actions — multi-platform
240
+ - name: Set up QEMU
241
+ uses: docker/setup-qemu-action@v3
242
+
243
+ - name: Set up Docker Buildx
244
+ uses: docker/setup-buildx-action@v3
245
+
246
+ - name: Build multi-platform image
247
+ uses: docker/build-push-action@v5
248
+ with:
249
+ platforms: linux/amd64,linux/arm64
250
+ push: true
251
+ tags: ${{ steps.meta.outputs.tags }}
252
+ ```
253
+
254
+ ---
255
+
256
+ ## 5. Docker Compose (Local Development)
257
+
258
+ ```yaml
259
+ # docker-compose.yml
260
+ services:
261
+ api:
262
+ build:
263
+ context: .
264
+ target: builder # use builder stage locally (includes devtools)
265
+ dockerfile: Dockerfile
266
+ ports:
267
+ - "3000:3000"
268
+ environment:
269
+ NODE_ENV: development
270
+ DATABASE_URL: postgres://postgres:postgres@db:5432/myapp_dev
271
+ REDIS_URL: redis://redis:6379
272
+ volumes:
273
+ - .:/app # mount source for hot-reload
274
+ - /app/node_modules # anonymous volume prevents host node_modules overwrite
275
+ depends_on:
276
+ db:
277
+ condition: service_healthy
278
+ redis:
279
+ condition: service_started
280
+ restart: unless-stopped
281
+
282
+ db:
283
+ image: postgres:16-alpine
284
+ environment:
285
+ POSTGRES_DB: myapp_dev
286
+ POSTGRES_USER: postgres
287
+ POSTGRES_PASSWORD: postgres
288
+ volumes:
289
+ - pgdata:/var/lib/postgresql/data
290
+ healthcheck:
291
+ test: ["CMD-SHELL", "pg_isready -U postgres"]
292
+ interval: 5s
293
+ timeout: 3s
294
+ retries: 5
295
+ ports:
296
+ - "5432:5432" # expose for local DB clients
297
+
298
+ redis:
299
+ image: redis:7-alpine
300
+ volumes:
301
+ - redisdata:/data
302
+ ports:
303
+ - "6379:6379"
304
+
305
+ volumes:
306
+ pgdata:
307
+ redisdata:
308
+ ```
309
+
310
+ ---
311
+
312
+ ## 6. Container Security Scanning
313
+
314
+ ```yaml
315
+ # GitHub Actions — Trivy vulnerability scan
316
+ - name: Run Trivy vulnerability scanner
317
+ uses: aquasecurity/trivy-action@master
318
+ with:
319
+ image-ref: ${{ env.ECR_REGISTRY }}/${{ env.ECR_REPOSITORY }}:${{ github.sha }}
320
+ format: sarif
321
+ output: trivy-results.sarif
322
+ severity: CRITICAL,HIGH
323
+ exit-code: "1" # fail pipeline on CRITICAL/HIGH vulnerabilities
324
+
325
+ - name: Upload Trivy scan results to GitHub Security tab
326
+ uses: github/codeql-action/upload-sarif@v3
327
+ if: always()
328
+ with:
329
+ sarif_file: trivy-results.sarif
330
+ ```
331
+
332
+ ```bash
333
+ # Local scanning
334
+ trivy image myapp:latest
335
+
336
+ # Scan Dockerfile for misconfigurations before building
337
+ trivy config Dockerfile
338
+ ```
339
+
340
+ ---
341
+
342
+ ## 7. AWS ECR Workflow
343
+
344
+ ```yaml
345
+ # Complete ECR push workflow
346
+ jobs:
347
+ build-and-push:
348
+ runs-on: ubuntu-latest
349
+ permissions:
350
+ id-token: write
351
+ contents: read
352
+ outputs:
353
+ image: ${{ steps.build.outputs.image }}
354
+
355
+ steps:
356
+ - uses: actions/checkout@v4
357
+
358
+ - name: Configure AWS credentials (OIDC — no static keys)
359
+ uses: aws-actions/configure-aws-credentials@v4
360
+ with:
361
+ role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
362
+ aws-region: us-east-1
363
+
364
+ - name: Login to Amazon ECR
365
+ id: login-ecr
366
+ uses: aws-actions/amazon-ecr-login@v2
367
+
368
+ - name: Set up Docker Buildx
369
+ uses: docker/setup-buildx-action@v3
370
+
371
+ - name: Build, tag, and push image
372
+ id: build
373
+ uses: docker/build-push-action@v5
374
+ with:
375
+ context: .
376
+ push: true
377
+ tags: |
378
+ ${{ steps.login-ecr.outputs.registry }}/myapp:${{ github.sha }}
379
+ ${{ steps.login-ecr.outputs.registry }}/myapp:latest
380
+ cache-from: type=gha
381
+ cache-to: type=gha,mode=max
382
+
383
+ - name: Output image URI
384
+ run: echo "image=${{ steps.login-ecr.outputs.registry }}/myapp:${{ github.sha }}" >> $GITHUB_OUTPUT
385
+ ```
386
+
387
+ ### ECR Lifecycle Policy (Cost Control)
388
+
389
+ ```json
390
+ {
391
+ "rules": [
392
+ {
393
+ "rulePriority": 1,
394
+ "description": "Keep last 10 production images",
395
+ "selection": {
396
+ "tagStatus": "tagged",
397
+ "tagPrefixList": ["v"],
398
+ "countType": "imageCountMoreThan",
399
+ "countNumber": 10
400
+ },
401
+ "action": { "type": "expire" }
402
+ },
403
+ {
404
+ "rulePriority": 2,
405
+ "description": "Expire untagged images after 1 day",
406
+ "selection": {
407
+ "tagStatus": "untagged",
408
+ "countType": "sinceImagePushed",
409
+ "countUnit": "days",
410
+ "countNumber": 1
411
+ },
412
+ "action": { "type": "expire" }
413
+ }
414
+ ]
415
+ }
416
+ ```
417
+
418
+ ---
419
+
420
+ ## 🤖 LLM-Specific Traps
421
+
422
+ 1. **`FROM node:latest`**: Never use `latest` tag in production Dockerfiles. Tags are mutable. Pin to a specific version (`node:22.3.0-alpine`).
423
+ 2. **Missing HEALTHCHECK**: Orchestrators (ECS, Kubernetes) use HEALTHCHECK to know when a container is ready. Without it, traffic is sent before the app is ready.
424
+ 3. **Secrets as build args**: `ARG SECRET_KEY` bakes secrets into the image history. Use `--secret` flag with BuildKit or runtime environment variables.
425
+ 4. **`docker-compose up` in production**: Docker Compose is for development. Use ECS, Kubernetes, or similar for production.
426
+ 5. **Wrong COPY source path**: `COPY --from=builder` paths are relative to the builder WORKDIR. Always verify the exact output path.
427
+
428
+ ---
429
+
430
+ ## 🏛️ Tribunal Integration (Anti-Hallucination)
431
+
432
+ **Slash command: `/review` or `/tribunal-full`**
433
+ **Active reviewers: `logic-reviewer` · `security-auditor` · `devops-engineer`**
434
+
435
+ ### ✅ Pre-Flight Self-Audit
436
+
437
+ ```
438
+ ✅ Does the Dockerfile use a non-root user?
439
+ ✅ Is there a .dockerignore file?
440
+ ✅ Is the final stage minimal (alpine/distroless, no build tools)?
441
+ ✅ Are secrets passed as runtime env vars, not build args?
442
+ ✅ Is there a HEALTHCHECK instruction?
443
+ ✅ Are image tags pinned (not :latest)?
444
+ ✅ Is multi-stage build used for compiled/built artifacts?
445
+ ```
446
+
447
+ ### 🛑 Verification-Before-Completion (VBC) Protocol
448
+
449
+ **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
450
+
451
+ - ❌ **Forbidden**: Declaring a Dockerfile correct because it "looks valid."
452
+ - ✅ **Required**: Run `docker build .` successfully AND `docker run` the image to verify the health endpoint responds before declaring complete.