tribunal-kit 2.4.6 → 3.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.
- package/.agent/agents/accessibility-reviewer.md +220 -134
- package/.agent/agents/ai-code-reviewer.md +233 -129
- package/.agent/agents/backend-specialist.md +238 -178
- package/.agent/agents/code-archaeologist.md +181 -119
- package/.agent/agents/database-architect.md +207 -164
- package/.agent/agents/debugger.md +218 -151
- package/.agent/agents/dependency-reviewer.md +136 -55
- package/.agent/agents/devops-engineer.md +238 -175
- package/.agent/agents/documentation-writer.md +221 -137
- package/.agent/agents/explorer-agent.md +180 -142
- package/.agent/agents/frontend-reviewer.md +194 -80
- package/.agent/agents/frontend-specialist.md +237 -188
- package/.agent/agents/game-developer.md +52 -184
- package/.agent/agents/logic-reviewer.md +149 -78
- package/.agent/agents/mobile-developer.md +223 -152
- package/.agent/agents/mobile-reviewer.md +195 -79
- package/.agent/agents/orchestrator.md +211 -170
- package/.agent/agents/penetration-tester.md +174 -131
- package/.agent/agents/performance-optimizer.md +203 -139
- package/.agent/agents/performance-reviewer.md +211 -108
- package/.agent/agents/product-manager.md +162 -108
- package/.agent/agents/project-planner.md +162 -142
- package/.agent/agents/qa-automation-engineer.md +242 -138
- package/.agent/agents/security-auditor.md +194 -170
- package/.agent/agents/seo-specialist.md +213 -132
- package/.agent/agents/sql-reviewer.md +194 -73
- package/.agent/agents/supervisor-agent.md +203 -156
- package/.agent/agents/test-coverage-reviewer.md +193 -81
- package/.agent/agents/type-safety-reviewer.md +208 -65
- package/.agent/scripts/__pycache__/auto_preview.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/bundle_analyzer.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/checklist.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/dependency_analyzer.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/security_scan.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/session_manager.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/skill_integrator.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/swarm_dispatcher.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/test_runner.cpython-311.pyc +0 -0
- package/.agent/scripts/__pycache__/verify_all.cpython-311.pyc +0 -0
- package/.agent/skills/agent-organizer/SKILL.md +126 -132
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +155 -66
- package/.agent/skills/api-patterns/SKILL.md +289 -257
- package/.agent/skills/api-security-auditor/SKILL.md +172 -70
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +1 -1
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +1 -1
- package/.agent/skills/appflow-wireframe/SKILL.md +107 -100
- package/.agent/skills/architecture/SKILL.md +331 -200
- package/.agent/skills/authentication-best-practices/SKILL.md +168 -67
- package/.agent/skills/bash-linux/SKILL.md +154 -215
- package/.agent/skills/brainstorming/SKILL.md +104 -210
- package/.agent/skills/building-native-ui/SKILL.md +169 -70
- package/.agent/skills/clean-code/SKILL.md +360 -206
- package/.agent/skills/config-validator/SKILL.md +141 -165
- package/.agent/skills/csharp-developer/SKILL.md +528 -107
- package/.agent/skills/database-design/SKILL.md +455 -275
- package/.agent/skills/deployment-procedures/SKILL.md +145 -188
- package/.agent/skills/devops-engineer/SKILL.md +332 -134
- package/.agent/skills/devops-incident-responder/SKILL.md +113 -98
- package/.agent/skills/edge-computing/SKILL.md +157 -213
- package/.agent/skills/extract-design-system/SKILL.md +129 -69
- package/.agent/skills/framer-motion-expert/SKILL.md +939 -0
- package/.agent/skills/game-design-expert/SKILL.md +105 -0
- package/.agent/skills/game-engineering-expert/SKILL.md +122 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +124 -215
- package/.agent/skills/github-operations/SKILL.md +314 -354
- package/.agent/skills/gsap-expert/SKILL.md +901 -0
- package/.agent/skills/i18n-localization/SKILL.md +138 -216
- package/.agent/skills/intelligent-routing/SKILL.md +127 -139
- package/.agent/skills/llm-engineering/SKILL.md +357 -258
- package/.agent/skills/local-first/SKILL.md +154 -203
- package/.agent/skills/mcp-builder/SKILL.md +118 -224
- package/.agent/skills/nextjs-react-expert/SKILL.md +783 -203
- package/.agent/skills/nodejs-best-practices/SKILL.md +559 -280
- package/.agent/skills/observability/SKILL.md +330 -285
- package/.agent/skills/parallel-agents/SKILL.md +122 -181
- package/.agent/skills/performance-profiling/SKILL.md +254 -197
- package/.agent/skills/plan-writing/SKILL.md +118 -188
- package/.agent/skills/platform-engineer/SKILL.md +123 -135
- package/.agent/skills/playwright-best-practices/SKILL.md +157 -76
- package/.agent/skills/powershell-windows/SKILL.md +146 -230
- package/.agent/skills/python-pro/SKILL.md +879 -114
- package/.agent/skills/react-specialist/SKILL.md +931 -108
- package/.agent/skills/realtime-patterns/SKILL.md +304 -296
- package/.agent/skills/rust-pro/SKILL.md +701 -240
- package/.agent/skills/seo-fundamentals/SKILL.md +154 -181
- package/.agent/skills/server-management/SKILL.md +190 -212
- package/.agent/skills/shadcn-ui-expert/SKILL.md +201 -68
- package/.agent/skills/sql-pro/SKILL.md +633 -104
- package/.agent/skills/swiftui-expert/SKILL.md +171 -70
- package/.agent/skills/systematic-debugging/SKILL.md +118 -186
- package/.agent/skills/tailwind-patterns/SKILL.md +576 -232
- package/.agent/skills/tdd-workflow/SKILL.md +137 -209
- package/.agent/skills/testing-patterns/SKILL.md +573 -205
- package/.agent/skills/vue-expert/SKILL.md +964 -119
- package/.agent/skills/vulnerability-scanner/SKILL.md +269 -316
- package/.agent/skills/web-accessibility-auditor/SKILL.md +188 -71
- package/.agent/skills/webapp-testing/SKILL.md +145 -236
- package/.agent/workflows/api-tester.md +151 -279
- package/.agent/workflows/audit.md +138 -168
- package/.agent/workflows/brainstorm.md +110 -146
- package/.agent/workflows/changelog.md +112 -144
- package/.agent/workflows/create.md +124 -139
- package/.agent/workflows/debug.md +189 -196
- package/.agent/workflows/deploy.md +189 -153
- package/.agent/workflows/enhance.md +151 -139
- package/.agent/workflows/fix.md +135 -143
- package/.agent/workflows/generate.md +157 -164
- package/.agent/workflows/migrate.md +160 -163
- package/.agent/workflows/orchestrate.md +168 -151
- package/.agent/workflows/performance-benchmarker.md +123 -305
- package/.agent/workflows/plan.md +173 -151
- package/.agent/workflows/preview.md +80 -137
- package/.agent/workflows/refactor.md +183 -153
- package/.agent/workflows/review-ai.md +129 -140
- package/.agent/workflows/review.md +116 -155
- package/.agent/workflows/session.md +94 -154
- package/.agent/workflows/status.md +79 -125
- package/.agent/workflows/strengthen-skills.md +139 -99
- package/.agent/workflows/swarm.md +179 -194
- package/.agent/workflows/test.md +211 -166
- package/.agent/workflows/tribunal-backend.md +113 -111
- package/.agent/workflows/tribunal-database.md +115 -132
- package/.agent/workflows/tribunal-frontend.md +118 -115
- package/.agent/workflows/tribunal-full.md +133 -136
- package/.agent/workflows/tribunal-mobile.md +119 -123
- package/.agent/workflows/tribunal-performance.md +133 -152
- package/.agent/workflows/ui-ux-pro-max.md +143 -171
- package/README.md +11 -15
- package/package.json +1 -1
- package/.agent/skills/dotnet-core-expert/SKILL.md +0 -103
- package/.agent/skills/framer-motion-animations/SKILL.md +0 -74
- package/.agent/skills/game-development/2d-games/SKILL.md +0 -119
- package/.agent/skills/game-development/3d-games/SKILL.md +0 -135
- package/.agent/skills/game-development/SKILL.md +0 -236
- package/.agent/skills/game-development/game-art/SKILL.md +0 -185
- package/.agent/skills/game-development/game-audio/SKILL.md +0 -190
- package/.agent/skills/game-development/game-design/SKILL.md +0 -129
- package/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
- package/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
- package/.agent/skills/game-development/pc-games/SKILL.md +0 -144
- package/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
- package/.agent/skills/game-development/web-games/SKILL.md +0 -150
|
@@ -1,134 +1,332 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: devops-engineer
|
|
3
|
-
description:
|
|
4
|
-
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
-
version:
|
|
6
|
-
last-updated: 2026-
|
|
7
|
-
applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
#
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
```
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
###
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
1
|
+
---
|
|
2
|
+
name: devops-engineer
|
|
3
|
+
description: DevOps engineering mastery. Docker containerization, Docker Compose, CI/CD with GitHub Actions, Kubernetes basics, infrastructure as code (Terraform), monitoring/alerting, deployment strategies (blue/green, canary, rolling), secrets management, and production readiness checklists. Use when building CI/CD pipelines, containerizing apps, or managing infrastructure.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
+
version: 2.0.0
|
|
6
|
+
last-updated: 2026-04-01
|
|
7
|
+
applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# DevOps Engineer — CI/CD & Infrastructure Mastery
|
|
11
|
+
|
|
12
|
+
> Infrastructure is code. Deployments are automated. Rollbacks are instant.
|
|
13
|
+
> If you can't deploy on Friday afternoon with confidence, your pipeline is broken.
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## Docker
|
|
18
|
+
|
|
19
|
+
### Dockerfile (Production-Ready)
|
|
20
|
+
|
|
21
|
+
```dockerfile
|
|
22
|
+
# ✅ Multi-stage build — minimal final image
|
|
23
|
+
FROM node:22-alpine AS builder
|
|
24
|
+
WORKDIR /app
|
|
25
|
+
|
|
26
|
+
# Install deps first (cache layer)
|
|
27
|
+
COPY package.json package-lock.json ./
|
|
28
|
+
RUN npm ci --ignore-scripts
|
|
29
|
+
|
|
30
|
+
# Build
|
|
31
|
+
COPY . .
|
|
32
|
+
RUN npm run build
|
|
33
|
+
|
|
34
|
+
# ──── Production stage ────
|
|
35
|
+
FROM node:22-alpine AS runner
|
|
36
|
+
WORKDIR /app
|
|
37
|
+
|
|
38
|
+
# Security: non-root user
|
|
39
|
+
RUN addgroup --system --gid 1001 appgroup && \
|
|
40
|
+
adduser --system --uid 1001 appuser
|
|
41
|
+
|
|
42
|
+
# Copy only production artifacts
|
|
43
|
+
COPY --from=builder /app/dist ./dist
|
|
44
|
+
COPY --from=builder /app/node_modules ./node_modules
|
|
45
|
+
COPY --from=builder /app/package.json ./
|
|
46
|
+
|
|
47
|
+
USER appuser
|
|
48
|
+
EXPOSE 3000
|
|
49
|
+
ENV NODE_ENV=production
|
|
50
|
+
|
|
51
|
+
HEALTHCHECK --interval=30s --timeout=3s --retries=3 \
|
|
52
|
+
CMD wget --quiet --tries=1 --spider http://localhost:3000/health || exit 1
|
|
53
|
+
|
|
54
|
+
CMD ["node", "dist/index.js"]
|
|
55
|
+
```
|
|
56
|
+
|
|
57
|
+
```dockerfile
|
|
58
|
+
# ❌ HALLUCINATION TRAP: Common Dockerfile mistakes
|
|
59
|
+
# ❌ FROM node:22 ← 1GB+ image (use alpine: ~150MB)
|
|
60
|
+
# ❌ RUN npm install ← installs devDependencies, no lockfile
|
|
61
|
+
# ✅ RUN npm ci ← deterministic, production-only
|
|
62
|
+
# ❌ COPY . . ← copies node_modules, .git, secrets
|
|
63
|
+
# ✅ Use .dockerignore ← exclude node_modules, .env, .git
|
|
64
|
+
# ❌ Running as root ← security vulnerability
|
|
65
|
+
# ✅ USER appuser ← non-root user
|
|
66
|
+
```
|
|
67
|
+
|
|
68
|
+
### .dockerignore
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
node_modules
|
|
72
|
+
.git
|
|
73
|
+
.env
|
|
74
|
+
.env.*
|
|
75
|
+
*.md
|
|
76
|
+
.github
|
|
77
|
+
coverage
|
|
78
|
+
dist
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
### Docker Compose
|
|
82
|
+
|
|
83
|
+
```yaml
|
|
84
|
+
# docker-compose.yml
|
|
85
|
+
services:
|
|
86
|
+
app:
|
|
87
|
+
build:
|
|
88
|
+
context: .
|
|
89
|
+
target: runner
|
|
90
|
+
ports:
|
|
91
|
+
- "3000:3000"
|
|
92
|
+
environment:
|
|
93
|
+
- DATABASE_URL=postgres://postgres:postgres@db:5432/myapp
|
|
94
|
+
- REDIS_URL=redis://redis:6379
|
|
95
|
+
depends_on:
|
|
96
|
+
db:
|
|
97
|
+
condition: service_healthy
|
|
98
|
+
redis:
|
|
99
|
+
condition: service_started
|
|
100
|
+
restart: unless-stopped
|
|
101
|
+
|
|
102
|
+
db:
|
|
103
|
+
image: postgres:16-alpine
|
|
104
|
+
environment:
|
|
105
|
+
POSTGRES_DB: myapp
|
|
106
|
+
POSTGRES_USER: postgres
|
|
107
|
+
POSTGRES_PASSWORD: postgres
|
|
108
|
+
volumes:
|
|
109
|
+
- pgdata:/var/lib/postgresql/data
|
|
110
|
+
healthcheck:
|
|
111
|
+
test: ["CMD-SHELL", "pg_isready -U postgres"]
|
|
112
|
+
interval: 5s
|
|
113
|
+
timeout: 3s
|
|
114
|
+
retries: 5
|
|
115
|
+
|
|
116
|
+
redis:
|
|
117
|
+
image: redis:7-alpine
|
|
118
|
+
volumes:
|
|
119
|
+
- redisdata:/data
|
|
120
|
+
|
|
121
|
+
volumes:
|
|
122
|
+
pgdata:
|
|
123
|
+
redisdata:
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
---
|
|
127
|
+
|
|
128
|
+
## CI/CD with GitHub Actions
|
|
129
|
+
|
|
130
|
+
### Standard Pipeline
|
|
131
|
+
|
|
132
|
+
```yaml
|
|
133
|
+
# .github/workflows/ci.yml
|
|
134
|
+
name: CI
|
|
135
|
+
|
|
136
|
+
on:
|
|
137
|
+
push:
|
|
138
|
+
branches: [main]
|
|
139
|
+
pull_request:
|
|
140
|
+
branches: [main]
|
|
141
|
+
|
|
142
|
+
concurrency:
|
|
143
|
+
group: ${{ github.workflow }}-${{ github.ref }}
|
|
144
|
+
cancel-in-progress: true # cancel stale runs on same PR
|
|
145
|
+
|
|
146
|
+
jobs:
|
|
147
|
+
lint-and-test:
|
|
148
|
+
runs-on: ubuntu-latest
|
|
149
|
+
steps:
|
|
150
|
+
- uses: actions/checkout@v4
|
|
151
|
+
|
|
152
|
+
- uses: actions/setup-node@v4
|
|
153
|
+
with:
|
|
154
|
+
node-version: 22
|
|
155
|
+
cache: npm
|
|
156
|
+
|
|
157
|
+
- run: npm ci
|
|
158
|
+
- run: npm run lint
|
|
159
|
+
- run: npm run typecheck
|
|
160
|
+
- run: npm run test -- --coverage
|
|
161
|
+
|
|
162
|
+
- uses: actions/upload-artifact@v4
|
|
163
|
+
if: always()
|
|
164
|
+
with:
|
|
165
|
+
name: coverage
|
|
166
|
+
path: coverage/
|
|
167
|
+
|
|
168
|
+
build:
|
|
169
|
+
runs-on: ubuntu-latest
|
|
170
|
+
needs: lint-and-test
|
|
171
|
+
steps:
|
|
172
|
+
- uses: actions/checkout@v4
|
|
173
|
+
- uses: actions/setup-node@v4
|
|
174
|
+
with:
|
|
175
|
+
node-version: 22
|
|
176
|
+
cache: npm
|
|
177
|
+
- run: npm ci
|
|
178
|
+
- run: npm run build
|
|
179
|
+
|
|
180
|
+
deploy:
|
|
181
|
+
runs-on: ubuntu-latest
|
|
182
|
+
needs: build
|
|
183
|
+
if: github.ref == 'refs/heads/main'
|
|
184
|
+
environment: production
|
|
185
|
+
steps:
|
|
186
|
+
- uses: actions/checkout@v4
|
|
187
|
+
|
|
188
|
+
# Deploy to your platform (Vercel, Railway, Fly.io, etc.)
|
|
189
|
+
- run: npx vercel deploy --prod --token=${{ secrets.VERCEL_TOKEN }}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### Security Scanning
|
|
193
|
+
|
|
194
|
+
```yaml
|
|
195
|
+
security:
|
|
196
|
+
runs-on: ubuntu-latest
|
|
197
|
+
steps:
|
|
198
|
+
- uses: actions/checkout@v4
|
|
199
|
+
- run: npm audit --audit-level=high
|
|
200
|
+
- uses: github/codeql-action/analyze@v3
|
|
201
|
+
with:
|
|
202
|
+
languages: javascript-typescript
|
|
203
|
+
```
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## Deployment Strategies
|
|
208
|
+
|
|
209
|
+
```
|
|
210
|
+
Rolling Update (default):
|
|
211
|
+
Old ████████ → ██████░░ → ████░░░░ → ░░░░░░░░
|
|
212
|
+
New ░░░░░░░░ → ░░██████ → ░░░░████ → ████████
|
|
213
|
+
- Gradual replacement, zero downtime
|
|
214
|
+
- Rollback: redeploy previous version
|
|
215
|
+
|
|
216
|
+
Blue/Green:
|
|
217
|
+
Blue ████████ (live) → ░░░░░░░░ (idle)
|
|
218
|
+
Green ░░░░░░░░ (staging) → ████████ (live)
|
|
219
|
+
- Instant switch via load balancer
|
|
220
|
+
- Instant rollback (switch back)
|
|
221
|
+
- Requires 2x infrastructure
|
|
222
|
+
|
|
223
|
+
Canary:
|
|
224
|
+
Stable ████████ (95%) → ████████ (90%) → ████████ (0%)
|
|
225
|
+
Canary ░░░░░░░░ (5%) → ░░░░░░░░ (10%) → ████████ (100%)
|
|
226
|
+
- Gradual traffic shift
|
|
227
|
+
- Monitor error rates/latency at each stage
|
|
228
|
+
- Rollback: stop canary traffic
|
|
229
|
+
|
|
230
|
+
Feature Flags:
|
|
231
|
+
- Deploy code, control activation separately
|
|
232
|
+
- Risk-free deploys — flag is off by default
|
|
233
|
+
- A/B testing capability
|
|
234
|
+
```
|
|
235
|
+
|
|
236
|
+
---
|
|
237
|
+
|
|
238
|
+
## Secrets Management
|
|
239
|
+
|
|
240
|
+
```yaml
|
|
241
|
+
# ❌ NEVER:
|
|
242
|
+
# - Hardcode secrets in code
|
|
243
|
+
# - Commit .env files to git
|
|
244
|
+
# - Use plain text in CI/CD configs
|
|
245
|
+
# - Share secrets via Slack/email
|
|
246
|
+
|
|
247
|
+
# ✅ ALWAYS:
|
|
248
|
+
# GitHub Actions: Repository Secrets
|
|
249
|
+
# - Settings → Secrets → Actions → New repository secret
|
|
250
|
+
# - Reference: ${{ secrets.MY_SECRET }}
|
|
251
|
+
|
|
252
|
+
# Production: Use your platform's secret manager
|
|
253
|
+
# - AWS Secrets Manager / SSM Parameter Store
|
|
254
|
+
# - GCP Secret Manager
|
|
255
|
+
# - Azure Key Vault
|
|
256
|
+
# - Doppler / Infisical (cross-platform)
|
|
257
|
+
|
|
258
|
+
# .env management:
|
|
259
|
+
# .env → git-ignored, local development
|
|
260
|
+
# .env.example → committed, shows required keys (no values)
|
|
261
|
+
```
|
|
262
|
+
|
|
263
|
+
---
|
|
264
|
+
|
|
265
|
+
## Production Readiness Checklist
|
|
266
|
+
|
|
267
|
+
```
|
|
268
|
+
Pre-Deploy:
|
|
269
|
+
□ All tests passing (unit, integration, E2E)
|
|
270
|
+
□ Security scan clean (npm audit, CodeQL)
|
|
271
|
+
□ Build succeeds in CI (not just locally)
|
|
272
|
+
□ Database migrations tested against production-size data
|
|
273
|
+
□ Environment variables verified in target environment
|
|
274
|
+
□ Rollback plan documented
|
|
275
|
+
|
|
276
|
+
Monitoring:
|
|
277
|
+
□ Health check endpoint (/health)
|
|
278
|
+
□ Structured logging (JSON, not console.log)
|
|
279
|
+
□ Error tracking (Sentry, Datadog)
|
|
280
|
+
□ Uptime monitoring (external)
|
|
281
|
+
□ Alerting configured (PagerDuty, OpsGenie)
|
|
282
|
+
|
|
283
|
+
Performance:
|
|
284
|
+
□ Response time P95 < 500ms
|
|
285
|
+
□ Error rate < 0.1%
|
|
286
|
+
□ Database connection pooling configured
|
|
287
|
+
□ CDN for static assets
|
|
288
|
+
□ Compression enabled (gzip/brotli)
|
|
289
|
+
|
|
290
|
+
Security:
|
|
291
|
+
□ HTTPS only (HSTS enabled)
|
|
292
|
+
□ Rate limiting on all public endpoints
|
|
293
|
+
□ CORS configured (not wildcard *)
|
|
294
|
+
□ Security headers (helmet)
|
|
295
|
+
□ No secrets in code or logs
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
---
|
|
299
|
+
|
|
300
|
+
## 🤖 LLM-Specific Traps
|
|
301
|
+
|
|
302
|
+
1. **`FROM node:22` (Not Alpine):** Base Node image is 1GB+. Use `node:22-alpine` (~150MB).
|
|
303
|
+
2. **`npm install` in Docker:** Use `npm ci` for deterministic, lockfile-based installs.
|
|
304
|
+
3. **Running as Root:** Containers must run as non-root user. Add `USER appuser`.
|
|
305
|
+
4. **Missing `.dockerignore`:** Without it, `COPY . .` includes `node_modules`, `.git`, `.env`.
|
|
306
|
+
5. **Secrets in Docker ENV:** Don't bake secrets into Docker images. Use runtime environment variables.
|
|
307
|
+
6. **Missing `concurrency` in CI:** Without `cancel-in-progress`, every push queues a new CI run.
|
|
308
|
+
7. **`npm audit` Without Level:** `npm audit` returns non-zero for ANY vulnerability. Use `--audit-level=high`.
|
|
309
|
+
8. **No Health Check:** Containers without HEALTHCHECK are assumed healthy even when crashed.
|
|
310
|
+
9. **Deploying Without Rollback Plan:** Every deploy must have a documented rollback procedure.
|
|
311
|
+
10. **Direct Production Database Access:** Never give CI/CD direct production DB access. Use migration-specific credentials.
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
## 🏛️ Tribunal Integration
|
|
316
|
+
|
|
317
|
+
**Slash command: `/tribunal-backend`**
|
|
318
|
+
|
|
319
|
+
### ✅ Pre-Flight Self-Audit
|
|
320
|
+
|
|
321
|
+
```
|
|
322
|
+
✅ Is the Dockerfile multi-stage with alpine base?
|
|
323
|
+
✅ Does the container run as non-root?
|
|
324
|
+
✅ Is .dockerignore configured?
|
|
325
|
+
✅ Does CI run lint, typecheck, test, and build?
|
|
326
|
+
✅ Are secrets in GitHub Secrets (not hardcoded)?
|
|
327
|
+
✅ Is there a health check endpoint?
|
|
328
|
+
✅ Is there a rollback plan?
|
|
329
|
+
✅ Are database migrations tested before deploy?
|
|
330
|
+
✅ Is concurrency configured in CI (cancel stale runs)?
|
|
331
|
+
✅ Is there monitoring and alerting in production?
|
|
332
|
+
```
|