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.
- package/.agent/.shared/ui-ux-pro-max/README.md +4 -4
- package/.agent/ARCHITECTURE.md +279 -277
- package/.agent/GEMINI.md +127 -121
- package/.agent/agents/accessibility-reviewer.md +187 -187
- package/.agent/agents/ai-code-reviewer.md +199 -199
- package/.agent/agents/api-architect.md +71 -66
- package/.agent/agents/backend-specialist.md +219 -215
- package/.agent/agents/cloud-engineer.md +98 -0
- package/.agent/agents/code-archaeologist.md +168 -161
- package/.agent/agents/database-architect.md +184 -184
- package/.agent/agents/db-latency-auditor.md +213 -216
- package/.agent/agents/debugger.md +198 -191
- package/.agent/agents/dependency-reviewer.md +106 -103
- package/.agent/agents/devops-engineer.md +218 -218
- package/.agent/agents/documentation-writer.md +209 -201
- package/.agent/agents/explorer-agent.md +167 -160
- package/.agent/agents/frontend-reviewer.md +162 -160
- package/.agent/agents/frontend-specialist.md +257 -248
- package/.agent/agents/game-developer.md +48 -48
- package/.agent/agents/logic-reviewer.md +118 -116
- package/.agent/agents/mobile-developer.md +197 -200
- package/.agent/agents/mobile-reviewer.md +159 -162
- package/.agent/agents/orchestrator.md +187 -181
- package/.agent/agents/penetration-tester.md +160 -157
- package/.agent/agents/performance-optimizer.md +183 -183
- package/.agent/agents/performance-reviewer.md +178 -178
- package/.agent/agents/precedence-reviewer.md +251 -250
- package/.agent/agents/product-manager.md +149 -142
- package/.agent/agents/product-owner.md +81 -80
- package/.agent/agents/project-planner.md +152 -142
- package/.agent/agents/qa-automation-engineer.md +216 -225
- package/.agent/agents/resilience-reviewer.md +88 -88
- package/.agent/agents/schema-reviewer.md +67 -67
- package/.agent/agents/security-auditor.md +180 -174
- package/.agent/agents/seo-specialist.md +188 -193
- package/.agent/agents/sql-reviewer.md +159 -161
- package/.agent/agents/supervisor-agent.md +173 -184
- package/.agent/agents/swarm-worker-contracts.md +170 -166
- package/.agent/agents/swarm-worker-registry.md +92 -92
- package/.agent/agents/system-architect.md +85 -0
- package/.agent/agents/test-coverage-reviewer.md +158 -160
- package/.agent/agents/test-engineer.md +118 -118
- package/.agent/agents/throughput-optimizer.md +291 -299
- package/.agent/agents/type-safety-reviewer.md +182 -175
- package/.agent/agents/ui-ux-auditor.md +300 -292
- package/.agent/agents/vitals-reviewer.md +223 -223
- package/.agent/mcp_config.json +37 -40
- package/.agent/patterns/generator.md +11 -9
- package/.agent/patterns/inversion.md +14 -12
- package/.agent/patterns/pipeline.md +11 -9
- package/.agent/patterns/reviewer.md +15 -13
- package/.agent/patterns/tool-wrapper.md +11 -9
- package/.agent/routing_index.json +654 -0
- package/.agent/rules/GEMINI.md +358 -352
- package/.agent/scripts/compile_router.py +112 -0
- package/.agent/scripts/migrate_skills_frontmatter.py +64 -0
- package/.agent/scripts/strengthen_skills.js +1 -1
- package/.agent/skills/advanced-rag-pipelines/SKILL.md +56 -0
- package/.agent/skills/agent-organizer/SKILL.md +156 -150
- package/.agent/skills/agentic-patterns/SKILL.md +313 -315
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +190 -184
- package/.agent/skills/api-patterns/SKILL.md +253 -247
- package/.agent/skills/api-security-auditor/SKILL.md +195 -193
- package/.agent/skills/app-builder/SKILL.md +573 -572
- package/.agent/skills/app-builder/templates/SKILL.md +108 -115
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -122
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -122
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -169
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -134
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -119
- package/.agent/skills/appflow-wireframe/SKILL.md +146 -145
- package/.agent/skills/architecture/SKILL.md +226 -219
- package/.agent/skills/authentication-best-practices/SKILL.md +197 -189
- package/.agent/skills/backend-security-expert/SKILL.md +16 -2
- package/.agent/skills/bash-linux/SKILL.md +179 -179
- package/.agent/skills/behavioral-modes/SKILL.md +239 -223
- package/.agent/skills/brainstorming/SKILL.md +498 -486
- package/.agent/skills/browser-native-ai/SKILL.md +57 -4
- package/.agent/skills/building-native-ui/SKILL.md +202 -202
- package/.agent/skills/cicd-pro/SKILL.md +442 -0
- package/.agent/skills/clean-code/SKILL.md +400 -381
- package/.agent/skills/cloud-architect/SKILL.md +439 -0
- package/.agent/skills/code-review-checklist/SKILL.md +203 -194
- package/.agent/skills/config-validator/SKILL.md +165 -165
- package/.agent/skills/containerization-pro/SKILL.md +452 -0
- package/.agent/skills/csharp-developer/SKILL.md +518 -518
- package/.agent/skills/data-validation-schemas/SKILL.md +333 -328
- package/.agent/skills/database-design/SKILL.md +247 -240
- package/.agent/skills/deployment-procedures/SKILL.md +172 -169
- package/.agent/skills/devops-engineer/SKILL.md +345 -345
- package/.agent/skills/devops-incident-responder/SKILL.md +143 -137
- package/.agent/skills/doc.md +209 -177
- package/.agent/skills/documentation-templates/SKILL.md +291 -279
- package/.agent/skills/edge-computing/SKILL.md +183 -181
- package/.agent/skills/error-resilience/SKILL.md +411 -428
- package/.agent/skills/extract-design-system/SKILL.md +160 -158
- package/.agent/skills/framer-motion-expert/SKILL.md +253 -244
- package/.agent/skills/frontend-design/SKILL.md +208 -201
- package/.agent/skills/frontend-security-expert/SKILL.md +16 -3
- package/.agent/skills/game-design-expert/SKILL.md +132 -129
- package/.agent/skills/game-engineering-expert/SKILL.md +148 -146
- package/.agent/skills/generative-ui-expert/SKILL.md +57 -1
- package/.agent/skills/geo-fundamentals/SKILL.md +148 -147
- package/.agent/skills/git-pro/SKILL.md +435 -0
- package/.agent/skills/github-operations/SKILL.md +335 -329
- package/.agent/skills/gsap-core/SKILL.md +319 -308
- package/.agent/skills/gsap-frameworks/SKILL.md +213 -207
- package/.agent/skills/gsap-performance/SKILL.md +139 -133
- package/.agent/skills/gsap-plugins/SKILL.md +486 -480
- package/.agent/skills/gsap-react/SKILL.md +202 -189
- package/.agent/skills/gsap-scrolltrigger/SKILL.md +357 -350
- package/.agent/skills/gsap-timeline/SKILL.md +165 -161
- package/.agent/skills/gsap-utils/SKILL.md +344 -338
- package/.agent/skills/harness-protocol/SKILL.md +48 -0
- package/.agent/skills/i18n-localization/SKILL.md +174 -163
- package/.agent/skills/intelligent-routing/SKILL.md +202 -246
- package/.agent/skills/knowledge-graph/SKILL.md +60 -52
- package/.agent/skills/lint-and-validate/SKILL.md +261 -261
- package/.agent/skills/llm-engineering/SKILL.md +400 -394
- package/.agent/skills/local-first/SKILL.md +178 -178
- package/.agent/skills/mcp-builder/SKILL.md +143 -142
- package/.agent/skills/mobile-design/SKILL.md +272 -263
- package/.agent/skills/monorepo-management/SKILL.md +335 -334
- package/.agent/skills/motion-engineering/SKILL.md +266 -234
- package/.agent/skills/nextjs-react-expert/SKILL.md +236 -234
- package/.agent/skills/nodejs-best-practices/SKILL.md +547 -548
- package/.agent/skills/observability/SKILL.md +343 -343
- package/.agent/skills/parallel-agents/SKILL.md +143 -146
- package/.agent/skills/performance-profiling/SKILL.md +259 -267
- package/.agent/skills/plan-writing/SKILL.md +150 -142
- package/.agent/skills/platform-engineer/SKILL.md +148 -147
- package/.agent/skills/playwright-best-practices/SKILL.md +188 -187
- package/.agent/skills/powershell-windows/SKILL.md +162 -162
- package/.agent/skills/project-idioms/SKILL.md +137 -137
- package/.agent/skills/python-patterns/SKILL.md +260 -259
- package/.agent/skills/python-pro/SKILL.md +324 -323
- package/.agent/skills/react-specialist/SKILL.md +305 -277
- package/.agent/skills/readme-builder/SKILL.md +310 -300
- package/.agent/skills/realtime-patterns/SKILL.md +323 -319
- package/.agent/skills/red-team-tactics/SKILL.md +231 -218
- package/.agent/skills/rust-pro/SKILL.md +671 -673
- package/.agent/skills/seo-fundamentals/SKILL.md +179 -179
- package/.agent/skills/server-management/SKILL.md +218 -214
- package/.agent/skills/shadcn-ui-expert/SKILL.md +231 -231
- package/.agent/skills/skill-creator/SKILL.md +87 -86
- package/.agent/skills/sql-pro/SKILL.md +629 -629
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +97 -97
- package/.agent/skills/swiftui-expert/SKILL.md +204 -201
- package/.agent/skills/system-design-pro/SKILL.md +345 -0
- package/.agent/skills/systematic-debugging/SKILL.md +153 -142
- package/.agent/skills/tailwind-patterns/SKILL.md +610 -566
- package/.agent/skills/tdd-workflow/SKILL.md +169 -161
- package/.agent/skills/test-result-analyzer/SKILL.md +313 -309
- package/.agent/skills/testing-patterns/SKILL.md +566 -579
- package/.agent/skills/trend-researcher/SKILL.md +243 -237
- package/.agent/skills/typescript-advanced/SKILL.md +336 -335
- package/.agent/skills/ui-ux-pro-max/SKILL.md +590 -562
- package/.agent/skills/ui-ux-researcher/SKILL.md +244 -244
- package/.agent/skills/vue-expert/SKILL.md +294 -275
- package/.agent/skills/vulnerability-scanner/SKILL.md +416 -404
- package/.agent/skills/web-accessibility-auditor/SKILL.md +219 -218
- package/.agent/skills/web-design-guidelines/SKILL.md +192 -186
- package/.agent/skills/webapp-testing/SKILL.md +167 -169
- package/.agent/skills/webgpu-performance/SKILL.md +56 -2
- package/.agent/skills/whimsy-injector/SKILL.md +346 -325
- package/.agent/skills/workflow-optimizer/SKILL.md +231 -229
- package/.agent/workflows/acf.md +141 -0
- package/.agent/workflows/api-tester.md +176 -151
- package/.agent/workflows/audit.md +150 -127
- package/.agent/workflows/brainstorm.md +134 -110
- package/.agent/workflows/changelog.md +140 -112
- package/.agent/workflows/create.md +168 -124
- package/.agent/workflows/debug.md +190 -165
- package/.agent/workflows/deploy.md +201 -180
- package/.agent/workflows/enhance.md +154 -128
- package/.agent/workflows/fix.md +136 -114
- package/.agent/workflows/generate.md +198 -183
- package/.agent/workflows/marathon.md +37 -11
- package/.agent/workflows/migrate.md +184 -160
- package/.agent/workflows/orchestrate.md +192 -168
- package/.agent/workflows/performance-benchmarker.md +135 -114
- package/.agent/workflows/plan.md +196 -173
- package/.agent/workflows/preview.md +103 -80
- package/.agent/workflows/refactor.md +192 -161
- package/.agent/workflows/review-ai.md +125 -101
- package/.agent/workflows/review.md +141 -116
- package/.agent/workflows/session.md +122 -94
- package/.agent/workflows/status.md +101 -79
- package/.agent/workflows/strengthen-skills.md +164 -138
- package/.agent/workflows/super-prompt.md +24 -0
- package/.agent/workflows/swarm.md +193 -179
- package/.agent/workflows/test.md +211 -189
- package/.agent/workflows/tribunal-backend.md +136 -105
- package/.agent/workflows/tribunal-database.md +122 -95
- package/.agent/workflows/tribunal-frontend.md +221 -96
- package/.agent/workflows/tribunal-full.md +129 -100
- package/.agent/workflows/tribunal-mobile.md +122 -95
- package/.agent/workflows/tribunal-performance.md +136 -110
- package/.agent/workflows/tribunal-speed.md +209 -183
- package/.agent/workflows/ui-ux-pro-max.md +145 -122
- package/README.md +107 -55
- package/bin/mcp-server.js +159 -0
- package/bin/tribunal-kit.js +105 -29
- package/bin/wrapper.js +16 -7
- package/mcp_config.json +9 -0
- package/package.json +94 -86
- package/scripts/changelog.js +4 -3
- package/scripts/validate-payload.js +6 -1
- package/scripts/postinstall.js +0 -127
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: git-pro
|
|
3
|
+
description: Industry-level Git & GitHub mastery. Advanced Git internals (bisect, worktrees, reflog), monorepo strategies (Turborepo/Nx), semantic-release, OIDC-based GitHub Actions auth (no static AWS secrets), CODEOWNERS, matrix builds, reusable workflows, and release engineering. Use when advanced Git operations, complex branching strategies, or production-grade CI/CD workflow authoring is required.
|
|
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
|
+
supersedes: github-operations
|
|
12
|
+
trigger-signals:
|
|
13
|
+
strong: [monorepo, bisect, reflog, OIDC, semantic-release, CODEOWNERS]
|
|
14
|
+
---
|
|
15
|
+
|
|
16
|
+
## Hallucination Traps (Read First)
|
|
17
|
+
|
|
18
|
+
- ❌ `git push --force` on shared branches → ✅ Always use `git push --force-with-lease` (fails if remote has new commits you haven't seen)
|
|
19
|
+
- ❌ Rebasing already-pushed commits → ✅ Only rebase LOCAL, un-pushed commits. Rebasing rewrites history and breaks teammates.
|
|
20
|
+
- ❌ `git pull` (default merge) on feature branches → ✅ Use `git pull --rebase` to maintain linear history
|
|
21
|
+
- ❌ Using `${{ secrets.GITHUB_TOKEN }}` for cross-repo operations → ✅ Use a GitHub App token or PAT with correct scopes
|
|
22
|
+
- ❌ `git reset --hard` without confirming you want to discard work → ✅ Always `git stash` first as a safety net
|
|
23
|
+
|
|
24
|
+
---
|
|
25
|
+
|
|
26
|
+
# Git Pro — Industry-Level Mastery
|
|
27
|
+
|
|
28
|
+
## 1. Advanced Git Internals
|
|
29
|
+
|
|
30
|
+
### Reflog Recovery (Your Safety Net)
|
|
31
|
+
|
|
32
|
+
The reflog records every HEAD movement for 90 days. Nothing is truly lost.
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
# See all recent HEAD movements
|
|
36
|
+
git reflog
|
|
37
|
+
|
|
38
|
+
# Output:
|
|
39
|
+
# abc1234 HEAD@{0}: commit: feat(auth): add OAuth login
|
|
40
|
+
# def5678 HEAD@{1}: reset: moving to HEAD~1
|
|
41
|
+
# ghi9012 HEAD@{2}: commit: fix(api): handle null user
|
|
42
|
+
|
|
43
|
+
# Recover a "lost" commit after bad reset
|
|
44
|
+
git checkout -b recovery-branch HEAD@{2}
|
|
45
|
+
|
|
46
|
+
# Or cherry-pick just that commit
|
|
47
|
+
git cherry-pick ghi9012
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Git Bisect (Automated Bug Hunting)
|
|
51
|
+
|
|
52
|
+
Find the exact commit that introduced a bug using binary search — O(log n) instead of manual investigation.
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# Start bisect
|
|
56
|
+
git bisect start
|
|
57
|
+
|
|
58
|
+
# Mark current state as bad
|
|
59
|
+
git bisect bad
|
|
60
|
+
|
|
61
|
+
# Mark last known good state
|
|
62
|
+
git bisect good v2.3.0
|
|
63
|
+
|
|
64
|
+
# Git automatically checks out midpoint commits
|
|
65
|
+
# After each checkout, test your app, then:
|
|
66
|
+
git bisect good # if this commit is fine
|
|
67
|
+
git bisect bad # if this commit has the bug
|
|
68
|
+
|
|
69
|
+
# Git narrows down and reports the culprit commit
|
|
70
|
+
# When done:
|
|
71
|
+
git bisect reset
|
|
72
|
+
|
|
73
|
+
# Automate with a test script
|
|
74
|
+
git bisect run npm test -- --testPathPattern=auth.test.ts
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
### Git Worktrees (Parallel Work Without Stashing)
|
|
78
|
+
|
|
79
|
+
Work on multiple branches simultaneously without switching contexts.
|
|
80
|
+
|
|
81
|
+
```bash
|
|
82
|
+
# Create a worktree for a hotfix while working on a feature
|
|
83
|
+
git worktree add ../hotfix-v2.3.1 hotfix/v2.3.1
|
|
84
|
+
|
|
85
|
+
# Now you have two checkouts:
|
|
86
|
+
# /my-project → your feature branch
|
|
87
|
+
# /hotfix-v2.3.1 → the hotfix branch
|
|
88
|
+
|
|
89
|
+
# List worktrees
|
|
90
|
+
git worktree list
|
|
91
|
+
|
|
92
|
+
# Remove when done
|
|
93
|
+
git worktree remove ../hotfix-v2.3.1
|
|
94
|
+
```
|
|
95
|
+
|
|
96
|
+
---
|
|
97
|
+
|
|
98
|
+
## 2. Monorepo Strategies
|
|
99
|
+
|
|
100
|
+
### Turborepo (Node.js Monorepos)
|
|
101
|
+
|
|
102
|
+
```json
|
|
103
|
+
// turbo.json — task pipeline definition
|
|
104
|
+
{
|
|
105
|
+
"$schema": "https://turbo.build/schema.json",
|
|
106
|
+
"pipeline": {
|
|
107
|
+
"build": {
|
|
108
|
+
"dependsOn": ["^build"], // ← ^ means "build dependencies first"
|
|
109
|
+
"outputs": ["dist/**", ".next/**"]
|
|
110
|
+
},
|
|
111
|
+
"test": {
|
|
112
|
+
"dependsOn": ["build"],
|
|
113
|
+
"inputs": ["src/**/*.ts", "tests/**/*.ts"]
|
|
114
|
+
},
|
|
115
|
+
"lint": {
|
|
116
|
+
"outputs": []
|
|
117
|
+
},
|
|
118
|
+
"dev": {
|
|
119
|
+
"cache": false,
|
|
120
|
+
"persistent": true
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
# Build only packages affected by recent changes
|
|
128
|
+
turbo build --filter=[HEAD^1]
|
|
129
|
+
|
|
130
|
+
# Build specific package and its dependencies
|
|
131
|
+
turbo build --filter=@myapp/web...
|
|
132
|
+
|
|
133
|
+
# Run tests in parallel across all packages
|
|
134
|
+
turbo test --parallel
|
|
135
|
+
```
|
|
136
|
+
|
|
137
|
+
### Sparse Checkouts (Large Monorepos)
|
|
138
|
+
|
|
139
|
+
Only checkout the packages you need — dramatically reduces clone time on large repos.
|
|
140
|
+
|
|
141
|
+
```bash
|
|
142
|
+
git clone --no-checkout https://github.com/org/monorepo.git
|
|
143
|
+
cd monorepo
|
|
144
|
+
git sparse-checkout init --cone
|
|
145
|
+
git sparse-checkout set packages/api packages/shared
|
|
146
|
+
git checkout main
|
|
147
|
+
```
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
## 3. Release Engineering
|
|
152
|
+
|
|
153
|
+
### Semantic Release (Automated Versioning)
|
|
154
|
+
|
|
155
|
+
```javascript
|
|
156
|
+
// release.config.js
|
|
157
|
+
export default {
|
|
158
|
+
branches: ["main", { name: "beta", prerelease: true }],
|
|
159
|
+
plugins: [
|
|
160
|
+
"@semantic-release/commit-analyzer", // reads conventional commits
|
|
161
|
+
"@semantic-release/release-notes-generator",
|
|
162
|
+
"@semantic-release/changelog", // updates CHANGELOG.md
|
|
163
|
+
"@semantic-release/npm", // bumps package.json version
|
|
164
|
+
"@semantic-release/github", // creates GitHub Release
|
|
165
|
+
[
|
|
166
|
+
"@semantic-release/git",
|
|
167
|
+
{
|
|
168
|
+
assets: ["CHANGELOG.md", "package.json"],
|
|
169
|
+
message: "chore(release): ${nextRelease.version} [skip ci]",
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
],
|
|
173
|
+
};
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
```yaml
|
|
177
|
+
# .github/workflows/release.yml
|
|
178
|
+
name: Release
|
|
179
|
+
on:
|
|
180
|
+
push:
|
|
181
|
+
branches: [main]
|
|
182
|
+
jobs:
|
|
183
|
+
release:
|
|
184
|
+
runs-on: ubuntu-latest
|
|
185
|
+
permissions:
|
|
186
|
+
contents: write # create GitHub releases
|
|
187
|
+
issues: write # comment on released issues
|
|
188
|
+
pull-requests: write # comment on released PRs
|
|
189
|
+
steps:
|
|
190
|
+
- uses: actions/checkout@v4
|
|
191
|
+
with:
|
|
192
|
+
fetch-depth: 0 # full history required for semantic-release
|
|
193
|
+
persist-credentials: false
|
|
194
|
+
- uses: actions/setup-node@v4
|
|
195
|
+
with:
|
|
196
|
+
node-version: 22
|
|
197
|
+
- run: npm ci
|
|
198
|
+
- run: npx semantic-release
|
|
199
|
+
env:
|
|
200
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
|
201
|
+
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
|
|
202
|
+
```
|
|
203
|
+
|
|
204
|
+
---
|
|
205
|
+
|
|
206
|
+
## 4. Advanced GitHub Actions
|
|
207
|
+
|
|
208
|
+
### OIDC-Based AWS Auth (Zero Static Secrets)
|
|
209
|
+
|
|
210
|
+
Never store `AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY` as GitHub secrets. Use OIDC tokens instead.
|
|
211
|
+
|
|
212
|
+
```yaml
|
|
213
|
+
# Step 1: Create IAM Role in AWS (Terraform)
|
|
214
|
+
# resources.tf
|
|
215
|
+
resource "aws_iam_role" "github_actions" {
|
|
216
|
+
name = "github-actions-deploy"
|
|
217
|
+
|
|
218
|
+
assume_role_policy = jsonencode({
|
|
219
|
+
Version = "2012-10-17"
|
|
220
|
+
Statement = [{
|
|
221
|
+
Effect = "Allow"
|
|
222
|
+
Principal = {
|
|
223
|
+
Federated = "arn:aws:iam::${data.aws_caller_identity.current.account_id}:oidc-provider/token.actions.githubusercontent.com"
|
|
224
|
+
}
|
|
225
|
+
Action = "sts:AssumeRoleWithWebIdentity"
|
|
226
|
+
Condition = {
|
|
227
|
+
StringEquals = {
|
|
228
|
+
"token.actions.githubusercontent.com:aud" = "sts.amazonaws.com"
|
|
229
|
+
}
|
|
230
|
+
StringLike = {
|
|
231
|
+
"token.actions.githubusercontent.com:sub" = "repo:MyOrg/my-repo:*"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}]
|
|
235
|
+
})
|
|
236
|
+
}
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
```yaml
|
|
240
|
+
# Step 2: Use in GitHub Actions workflow
|
|
241
|
+
jobs:
|
|
242
|
+
deploy:
|
|
243
|
+
runs-on: ubuntu-latest
|
|
244
|
+
permissions:
|
|
245
|
+
id-token: write # REQUIRED for OIDC
|
|
246
|
+
contents: read
|
|
247
|
+
steps:
|
|
248
|
+
- uses: actions/checkout@v4
|
|
249
|
+
|
|
250
|
+
- name: Configure AWS credentials (OIDC)
|
|
251
|
+
uses: aws-actions/configure-aws-credentials@v4
|
|
252
|
+
with:
|
|
253
|
+
role-to-assume: arn:aws:iam::123456789:role/github-actions-deploy
|
|
254
|
+
aws-region: us-east-1
|
|
255
|
+
# No AWS_ACCESS_KEY_ID needed!
|
|
256
|
+
|
|
257
|
+
- name: Deploy
|
|
258
|
+
run: aws ecs update-service --cluster prod --service api --force-new-deployment
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
### Reusable Workflows
|
|
262
|
+
|
|
263
|
+
```yaml
|
|
264
|
+
# .github/workflows/_deploy.yml (reusable — note leading underscore convention)
|
|
265
|
+
name: Deploy (Reusable)
|
|
266
|
+
on:
|
|
267
|
+
workflow_call:
|
|
268
|
+
inputs:
|
|
269
|
+
environment:
|
|
270
|
+
required: true
|
|
271
|
+
type: string
|
|
272
|
+
image-tag:
|
|
273
|
+
required: true
|
|
274
|
+
type: string
|
|
275
|
+
secrets:
|
|
276
|
+
AWS_ROLE_ARN:
|
|
277
|
+
required: true
|
|
278
|
+
|
|
279
|
+
jobs:
|
|
280
|
+
deploy:
|
|
281
|
+
runs-on: ubuntu-latest
|
|
282
|
+
environment: ${{ inputs.environment }}
|
|
283
|
+
permissions:
|
|
284
|
+
id-token: write
|
|
285
|
+
contents: read
|
|
286
|
+
steps:
|
|
287
|
+
- uses: aws-actions/configure-aws-credentials@v4
|
|
288
|
+
with:
|
|
289
|
+
role-to-assume: ${{ secrets.AWS_ROLE_ARN }}
|
|
290
|
+
aws-region: us-east-1
|
|
291
|
+
- name: Update ECS service
|
|
292
|
+
run: |
|
|
293
|
+
aws ecs update-service \
|
|
294
|
+
--cluster ${{ inputs.environment }} \
|
|
295
|
+
--service api \
|
|
296
|
+
--force-new-deployment
|
|
297
|
+
```
|
|
298
|
+
|
|
299
|
+
```yaml
|
|
300
|
+
# .github/workflows/cd.yml (caller)
|
|
301
|
+
name: CD
|
|
302
|
+
on:
|
|
303
|
+
push:
|
|
304
|
+
branches: [main]
|
|
305
|
+
jobs:
|
|
306
|
+
deploy-staging:
|
|
307
|
+
uses: ./.github/workflows/_deploy.yml
|
|
308
|
+
with:
|
|
309
|
+
environment: staging
|
|
310
|
+
image-tag: ${{ github.sha }}
|
|
311
|
+
secrets:
|
|
312
|
+
AWS_ROLE_ARN: ${{ secrets.STAGING_AWS_ROLE_ARN }}
|
|
313
|
+
|
|
314
|
+
deploy-production:
|
|
315
|
+
needs: deploy-staging
|
|
316
|
+
uses: ./.github/workflows/_deploy.yml
|
|
317
|
+
with:
|
|
318
|
+
environment: production
|
|
319
|
+
image-tag: ${{ github.sha }}
|
|
320
|
+
secrets:
|
|
321
|
+
AWS_ROLE_ARN: ${{ secrets.PROD_AWS_ROLE_ARN }}
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
### Matrix Builds
|
|
325
|
+
|
|
326
|
+
```yaml
|
|
327
|
+
jobs:
|
|
328
|
+
test:
|
|
329
|
+
strategy:
|
|
330
|
+
fail-fast: false # ← don't cancel other matrix jobs on first failure
|
|
331
|
+
matrix:
|
|
332
|
+
os: [ubuntu-latest, windows-latest, macos-latest]
|
|
333
|
+
node: [20, 22]
|
|
334
|
+
exclude:
|
|
335
|
+
- os: windows-latest
|
|
336
|
+
node: 20 # skip this combination
|
|
337
|
+
runs-on: ${{ matrix.os }}
|
|
338
|
+
steps:
|
|
339
|
+
- uses: actions/checkout@v4
|
|
340
|
+
- uses: actions/setup-node@v4
|
|
341
|
+
with:
|
|
342
|
+
node-version: ${{ matrix.node }}
|
|
343
|
+
- run: npm ci && npm test
|
|
344
|
+
```
|
|
345
|
+
|
|
346
|
+
---
|
|
347
|
+
|
|
348
|
+
## 5. Security Hardening
|
|
349
|
+
|
|
350
|
+
### CODEOWNERS
|
|
351
|
+
|
|
352
|
+
```
|
|
353
|
+
# .github/CODEOWNERS
|
|
354
|
+
# Global owners (required reviewers on all PRs)
|
|
355
|
+
* @org/core-team
|
|
356
|
+
|
|
357
|
+
# Infrastructure changes require DevOps approval
|
|
358
|
+
.github/workflows/ @org/devops
|
|
359
|
+
terraform/ @org/devops
|
|
360
|
+
Dockerfile* @org/devops
|
|
361
|
+
|
|
362
|
+
# API security-sensitive files
|
|
363
|
+
src/auth/ @org/security-team
|
|
364
|
+
src/middleware/ @org/security-team
|
|
365
|
+
|
|
366
|
+
# Frontend team owns UI
|
|
367
|
+
apps/web/ @org/frontend-team
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
### Branch Protection Rules (via Terraform)
|
|
371
|
+
|
|
372
|
+
```hcl
|
|
373
|
+
resource "github_branch_protection" "main" {
|
|
374
|
+
repository_id = github_repository.app.node_id
|
|
375
|
+
pattern = "main"
|
|
376
|
+
|
|
377
|
+
required_status_checks {
|
|
378
|
+
strict = true # branch must be up to date before merging
|
|
379
|
+
contexts = ["CI / lint-and-test", "CI / build"]
|
|
380
|
+
}
|
|
381
|
+
|
|
382
|
+
required_pull_request_reviews {
|
|
383
|
+
required_approving_review_count = 1
|
|
384
|
+
dismiss_stale_reviews = true
|
|
385
|
+
require_code_owner_reviews = true
|
|
386
|
+
}
|
|
387
|
+
|
|
388
|
+
restrict_pushes {
|
|
389
|
+
push_allowances = [] # nobody can push directly — PR only
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
require_signed_commits = true
|
|
393
|
+
require_linear_history = true # squash merge only
|
|
394
|
+
}
|
|
395
|
+
```
|
|
396
|
+
|
|
397
|
+
---
|
|
398
|
+
|
|
399
|
+
## 🤖 LLM-Specific Traps
|
|
400
|
+
|
|
401
|
+
1. **`--force` without `--force-with-lease`**: Always use `--force-with-lease`. It fails safely if the remote has new commits, preventing accidental overwrite of teammates' work.
|
|
402
|
+
2. **Rebasing public history**: Never rebase commits already pushed to a shared branch. Use `git revert` to safely undo public commits.
|
|
403
|
+
3. **`GITHUB_TOKEN` scope confusion**: `secrets.GITHUB_TOKEN` cannot trigger other workflows and has limited cross-repo access. Use a GitHub App token for automation.
|
|
404
|
+
4. **Missing `fetch-depth: 0`**: `semantic-release` and `git describe` require full history. Shallow clones (`fetch-depth: 1`) will cause failures.
|
|
405
|
+
5. **Hardcoded branch names in workflows**: Use `github.event.repository.default_branch` or `vars.` instead of hardcoding `main`.
|
|
406
|
+
|
|
407
|
+
---
|
|
408
|
+
|
|
409
|
+
## 🏛️ Tribunal Integration (Anti-Hallucination)
|
|
410
|
+
|
|
411
|
+
**Slash command: `/review` or `/tribunal-full`**
|
|
412
|
+
**Active reviewers: `logic-reviewer` · `security-auditor` · `devops-engineer`**
|
|
413
|
+
|
|
414
|
+
### ❌ Forbidden AI Tropes
|
|
415
|
+
|
|
416
|
+
1. **Blind Assumptions**: Never assume AWS account IDs, role ARNs, or org names. Always use variables/inputs.
|
|
417
|
+
2. **Static Secrets**: Never suggest `AWS_ACCESS_KEY_ID` in GitHub Actions. Always use OIDC.
|
|
418
|
+
3. **`git push --force`**: Never suggest force pushing to shared/protected branches without `--force-with-lease`.
|
|
419
|
+
|
|
420
|
+
### ✅ Pre-Flight Self-Audit
|
|
421
|
+
|
|
422
|
+
```
|
|
423
|
+
✅ Are all AWS credentials using OIDC (not static keys)?
|
|
424
|
+
✅ Are all branch operations checked for public/shared status first?
|
|
425
|
+
✅ Did I verify `semantic-release` plugins are in package.json?
|
|
426
|
+
✅ Are CODEOWNERS paths relative to repository root?
|
|
427
|
+
✅ Did I include `fetch-depth: 0` where git history is required?
|
|
428
|
+
```
|
|
429
|
+
|
|
430
|
+
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
431
|
+
|
|
432
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
433
|
+
|
|
434
|
+
- ❌ **Forbidden**: Declaring a workflow correct because the YAML "looks right."
|
|
435
|
+
- ✅ **Required**: Verify with `act` locally or confirm CI run passes before declaring success.
|