tribunal-kit 2.4.6 → 3.1.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/ARCHITECTURE.md +99 -99
- package/.agent/GEMINI.md +52 -52
- package/.agent/agents/accessibility-reviewer.md +139 -86
- package/.agent/agents/ai-code-reviewer.md +160 -90
- package/.agent/agents/backend-specialist.md +164 -127
- package/.agent/agents/code-archaeologist.md +115 -73
- package/.agent/agents/database-architect.md +130 -110
- package/.agent/agents/debugger.md +137 -97
- package/.agent/agents/dependency-reviewer.md +78 -30
- package/.agent/agents/devops-engineer.md +161 -118
- package/.agent/agents/documentation-writer.md +151 -87
- package/.agent/agents/explorer-agent.md +117 -99
- package/.agent/agents/frontend-reviewer.md +127 -47
- package/.agent/agents/frontend-specialist.md +169 -109
- package/.agent/agents/game-developer.md +28 -164
- package/.agent/agents/logic-reviewer.md +87 -49
- package/.agent/agents/mobile-developer.md +151 -103
- package/.agent/agents/mobile-reviewer.md +133 -50
- package/.agent/agents/orchestrator.md +121 -110
- package/.agent/agents/penetration-tester.md +103 -77
- package/.agent/agents/performance-optimizer.md +136 -92
- package/.agent/agents/performance-reviewer.md +139 -69
- package/.agent/agents/product-manager.md +104 -70
- package/.agent/agents/product-owner.md +6 -25
- package/.agent/agents/project-planner.md +95 -95
- package/.agent/agents/qa-automation-engineer.md +174 -87
- package/.agent/agents/security-auditor.md +133 -129
- package/.agent/agents/seo-specialist.md +160 -99
- package/.agent/agents/sql-reviewer.md +132 -44
- package/.agent/agents/supervisor-agent.md +137 -109
- package/.agent/agents/swarm-worker-contracts.md +17 -17
- package/.agent/agents/swarm-worker-registry.md +46 -46
- package/.agent/agents/test-coverage-reviewer.md +132 -53
- package/.agent/agents/test-engineer.md +0 -21
- package/.agent/agents/type-safety-reviewer.md +143 -33
- package/.agent/patterns/generator.md +9 -9
- package/.agent/patterns/inversion.md +12 -12
- package/.agent/patterns/pipeline.md +9 -9
- package/.agent/patterns/reviewer.md +13 -13
- package/.agent/patterns/tool-wrapper.md +9 -9
- package/.agent/rules/GEMINI.md +63 -63
- 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/scripts/compress_skills.py +167 -0
- package/.agent/scripts/consolidate_skills.py +173 -0
- package/.agent/scripts/deep_compress.py +202 -0
- package/.agent/scripts/minify_context.py +80 -0
- package/.agent/scripts/security_scan.py +1 -1
- package/.agent/scripts/strip_tribunal.py +41 -0
- package/.agent/skills/agent-organizer/SKILL.md +60 -100
- package/.agent/skills/agentic-patterns/SKILL.md +0 -70
- package/.agent/skills/ai-prompt-injection-defense/SKILL.md +108 -53
- package/.agent/skills/api-patterns/SKILL.md +197 -257
- package/.agent/skills/api-security-auditor/SKILL.md +125 -57
- package/.agent/skills/app-builder/SKILL.md +326 -50
- package/.agent/skills/app-builder/templates/SKILL.md +13 -15
- package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
- package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
- package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
- package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
- package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
- package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
- package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
- package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
- package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
- package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
- package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
- package/.agent/skills/appflow-wireframe/SKILL.md +71 -98
- package/.agent/skills/architecture/SKILL.md +161 -200
- package/.agent/skills/authentication-best-practices/SKILL.md +121 -54
- package/.agent/skills/bash-linux/SKILL.md +71 -166
- package/.agent/skills/behavioral-modes/SKILL.md +8 -69
- package/.agent/skills/brainstorming/SKILL.md +345 -127
- package/.agent/skills/building-native-ui/SKILL.md +125 -57
- package/.agent/skills/clean-code/SKILL.md +266 -149
- package/.agent/skills/code-review-checklist/SKILL.md +0 -62
- package/.agent/skills/config-validator/SKILL.md +73 -131
- package/.agent/skills/csharp-developer/SKILL.md +434 -73
- package/.agent/skills/database-design/SKILL.md +190 -275
- package/.agent/skills/deployment-procedures/SKILL.md +81 -158
- package/.agent/skills/devops-engineer/SKILL.md +255 -94
- package/.agent/skills/devops-incident-responder/SKILL.md +50 -69
- package/.agent/skills/doc.md +5 -5
- package/.agent/skills/documentation-templates/SKILL.md +19 -63
- package/.agent/skills/edge-computing/SKILL.md +75 -165
- package/.agent/skills/extract-design-system/SKILL.md +84 -58
- package/.agent/skills/framer-motion-expert/SKILL.md +195 -0
- package/.agent/skills/frontend-design/SKILL.md +151 -499
- package/.agent/skills/game-design-expert/SKILL.md +71 -0
- package/.agent/skills/game-engineering-expert/SKILL.md +88 -0
- package/.agent/skills/geo-fundamentals/SKILL.md +52 -178
- package/.agent/skills/github-operations/SKILL.md +197 -272
- package/.agent/skills/gsap-expert/SKILL.md +194 -0
- package/.agent/skills/i18n-localization/SKILL.md +60 -172
- package/.agent/skills/intelligent-routing/SKILL.md +123 -103
- package/.agent/skills/lint-and-validate/SKILL.md +8 -52
- package/.agent/skills/llm-engineering/SKILL.md +281 -195
- package/.agent/skills/local-first/SKILL.md +76 -159
- package/.agent/skills/mcp-builder/SKILL.md +48 -188
- package/.agent/skills/mobile-design/SKILL.md +213 -219
- package/.agent/skills/motion-engineering/SKILL.md +184 -0
- package/.agent/skills/nextjs-react-expert/SKILL.md +184 -203
- package/.agent/skills/nodejs-best-practices/SKILL.md +403 -185
- package/.agent/skills/observability/SKILL.md +211 -203
- package/.agent/skills/parallel-agents/SKILL.md +53 -146
- package/.agent/skills/performance-profiling/SKILL.md +171 -151
- package/.agent/skills/plan-writing/SKILL.md +49 -153
- package/.agent/skills/platform-engineer/SKILL.md +57 -103
- package/.agent/skills/playwright-best-practices/SKILL.md +110 -63
- package/.agent/skills/powershell-windows/SKILL.md +61 -179
- package/.agent/skills/python-patterns/SKILL.md +7 -35
- package/.agent/skills/python-pro/SKILL.md +273 -114
- package/.agent/skills/react-specialist/SKILL.md +227 -108
- package/.agent/skills/readme-builder/SKILL.md +15 -85
- package/.agent/skills/realtime-patterns/SKILL.md +216 -243
- package/.agent/skills/red-team-tactics/SKILL.md +10 -51
- package/.agent/skills/rust-pro/SKILL.md +525 -142
- package/.agent/skills/seo-fundamentals/SKILL.md +92 -153
- package/.agent/skills/server-management/SKILL.md +110 -166
- package/.agent/skills/shadcn-ui-expert/SKILL.md +154 -55
- package/.agent/skills/skill-creator/SKILL.md +18 -58
- package/.agent/skills/sql-pro/SKILL.md +543 -68
- package/.agent/skills/supabase-postgres-best-practices/SKILL.md +28 -68
- package/.agent/skills/swiftui-expert/SKILL.md +124 -57
- package/.agent/skills/systematic-debugging/SKILL.md +49 -151
- package/.agent/skills/tailwind-patterns/SKILL.md +433 -149
- package/.agent/skills/tdd-workflow/SKILL.md +63 -169
- package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
- package/.agent/skills/testing-patterns/SKILL.md +437 -130
- package/.agent/skills/trend-researcher/SKILL.md +30 -71
- package/.agent/skills/ui-ux-pro-max/SKILL.md +0 -41
- package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
- package/.agent/skills/vue-expert/SKILL.md +225 -119
- package/.agent/skills/vulnerability-scanner/SKILL.md +264 -226
- package/.agent/skills/web-accessibility-auditor/SKILL.md +141 -58
- package/.agent/skills/web-design-guidelines/SKILL.md +17 -61
- package/.agent/skills/webapp-testing/SKILL.md +71 -196
- package/.agent/skills/whimsy-injector/SKILL.md +58 -132
- package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
- package/.agent/workflows/api-tester.md +96 -224
- package/.agent/workflows/audit.md +81 -122
- package/.agent/workflows/brainstorm.md +69 -105
- package/.agent/workflows/changelog.md +65 -97
- package/.agent/workflows/create.md +73 -88
- package/.agent/workflows/debug.md +80 -111
- package/.agent/workflows/deploy.md +119 -92
- package/.agent/workflows/enhance.md +80 -91
- package/.agent/workflows/fix.md +68 -97
- package/.agent/workflows/generate.md +165 -164
- package/.agent/workflows/migrate.md +106 -109
- package/.agent/workflows/orchestrate.md +103 -86
- package/.agent/workflows/performance-benchmarker.md +77 -268
- package/.agent/workflows/plan.md +120 -98
- package/.agent/workflows/preview.md +39 -96
- package/.agent/workflows/refactor.md +105 -97
- package/.agent/workflows/review-ai.md +63 -102
- package/.agent/workflows/review.md +71 -110
- package/.agent/workflows/session.md +53 -113
- package/.agent/workflows/status.md +42 -88
- package/.agent/workflows/strengthen-skills.md +90 -51
- package/.agent/workflows/swarm.md +114 -129
- package/.agent/workflows/test.md +125 -102
- package/.agent/workflows/tribunal-backend.md +60 -78
- package/.agent/workflows/tribunal-database.md +62 -100
- package/.agent/workflows/tribunal-frontend.md +62 -82
- package/.agent/workflows/tribunal-full.md +56 -100
- package/.agent/workflows/tribunal-mobile.md +65 -94
- package/.agent/workflows/tribunal-performance.md +62 -105
- package/.agent/workflows/ui-ux-pro-max.md +72 -121
- package/README.md +11 -15
- package/package.json +1 -1
- package/.agent/skills/api-patterns/api-style.md +0 -42
- package/.agent/skills/api-patterns/auth.md +0 -24
- package/.agent/skills/api-patterns/documentation.md +0 -26
- package/.agent/skills/api-patterns/graphql.md +0 -41
- package/.agent/skills/api-patterns/rate-limiting.md +0 -31
- package/.agent/skills/api-patterns/response.md +0 -37
- package/.agent/skills/api-patterns/rest.md +0 -40
- package/.agent/skills/api-patterns/security-testing.md +0 -122
- package/.agent/skills/api-patterns/trpc.md +0 -41
- package/.agent/skills/api-patterns/versioning.md +0 -22
- package/.agent/skills/app-builder/agent-coordination.md +0 -71
- package/.agent/skills/app-builder/feature-building.md +0 -53
- package/.agent/skills/app-builder/project-detection.md +0 -34
- package/.agent/skills/app-builder/scaffolding.md +0 -118
- package/.agent/skills/app-builder/tech-stack.md +0 -40
- package/.agent/skills/architecture/context-discovery.md +0 -43
- package/.agent/skills/architecture/examples.md +0 -94
- package/.agent/skills/architecture/pattern-selection.md +0 -68
- package/.agent/skills/architecture/patterns-reference.md +0 -50
- package/.agent/skills/architecture/trade-off-analysis.md +0 -77
- package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
- package/.agent/skills/database-design/database-selection.md +0 -43
- package/.agent/skills/database-design/indexing.md +0 -39
- package/.agent/skills/database-design/migrations.md +0 -48
- package/.agent/skills/database-design/optimization.md +0 -36
- package/.agent/skills/database-design/orm-selection.md +0 -30
- package/.agent/skills/database-design/schema-design.md +0 -56
- package/.agent/skills/dotnet-core-expert/SKILL.md +0 -103
- package/.agent/skills/framer-motion-animations/SKILL.md +0 -74
- package/.agent/skills/frontend-design/animation-guide.md +0 -331
- package/.agent/skills/frontend-design/color-system.md +0 -329
- package/.agent/skills/frontend-design/decision-trees.md +0 -418
- package/.agent/skills/frontend-design/motion-graphics.md +0 -306
- package/.agent/skills/frontend-design/typography-system.md +0 -363
- package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
- package/.agent/skills/frontend-design/visual-effects.md +0 -383
- 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
- package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
- package/.agent/skills/mobile-design/decision-trees.md +0 -516
- package/.agent/skills/mobile-design/mobile-backend.md +0 -491
- package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
- package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
- package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
- package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
- package/.agent/skills/mobile-design/mobile-performance.md +0 -767
- package/.agent/skills/mobile-design/mobile-testing.md +0 -356
- package/.agent/skills/mobile-design/mobile-typography.md +0 -433
- package/.agent/skills/mobile-design/platform-android.md +0 -666
- package/.agent/skills/mobile-design/platform-ios.md +0 -561
- package/.agent/skills/mobile-design/touch-psychology.md +0 -537
- package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
- package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
- package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
- package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
- package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
- package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
- package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
- package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
- package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
|
@@ -1,55 +1,103 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: dependency-reviewer
|
|
3
|
-
description:
|
|
3
|
+
description: The Tribunal's package hallucination detector. Cross-references every import against package.json, flags fabricated npm/pip packages, catches supply chain risk patterns (typosquatting, abandoned packages), and verifies version pinning compatibility. Activates on /tribunal-backend, /tribunal-frontend, and /tribunal-full.
|
|
4
|
+
version: 2.0.0
|
|
5
|
+
last-updated: 2026-04-02
|
|
4
6
|
---
|
|
5
7
|
|
|
6
8
|
# Dependency Reviewer — The Package Inspector
|
|
7
9
|
|
|
8
|
-
|
|
10
|
+
---
|
|
9
11
|
|
|
10
|
-
|
|
12
|
+
## Core Mandate
|
|
11
13
|
|
|
12
|
-
|
|
14
|
+
You are the last line of defense against fabricated dependencies. An AI model will confidently import a package that doesn't exist, has been deprecated for 3 years, or is a known typosquatting attack vector.
|
|
13
15
|
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
16
|
+
**Your three jobs:**
|
|
17
|
+
1. Verify every import exists in `package.json` (or `requirements.txt` for Python)
|
|
18
|
+
2. Flag hallucinated packages with their real alternatives
|
|
19
|
+
3. Flag supply chain risk patterns
|
|
18
20
|
|
|
19
21
|
---
|
|
20
22
|
|
|
21
|
-
##
|
|
23
|
+
## Step 1: Extract All External Imports
|
|
24
|
+
|
|
25
|
+
From the generated code, extract every import that is NOT:
|
|
26
|
+
- A Node.js built-in (`fs`, `path`, `os`, `crypto`, `http`, `https`, `stream`, `buffer`, `events`, `util`, `url`, `querystring`, `net`, `child_process`, `worker_threads`, `perf_hooks`, `assert`, `v8`, `vm`)
|
|
27
|
+
- A Python built-in (`os`, `sys`, `json`, `re`, `math`, `datetime`, `pathlib`, `typing`, `collections`, `itertools`, `functools`, `io`, `abc`, `copy`, `time`, `logging`, `argparse`)
|
|
28
|
+
- A relative path import (`./`, `../`, `@/`, `~/`)
|
|
22
29
|
|
|
23
|
-
|
|
24
|
-
From the code, list every `import from '...'` or `require('...')` that is NOT a Node.js built-in or a relative path.
|
|
30
|
+
---
|
|
25
31
|
|
|
26
|
-
|
|
27
|
-
Compare extracted packages against `dependencies` + `devDependencies` in `package.json`.
|
|
32
|
+
## Step 2: Cross-Reference Package.json
|
|
28
33
|
|
|
29
|
-
|
|
30
|
-
|
|
34
|
+
For each extracted import, check:
|
|
35
|
+
1. Is it in `dependencies` or `devDependencies`?
|
|
36
|
+
2. If yes — does the **import path** match the package's actual export map?
|
|
37
|
+
3. If no — is it a known Node.js built-in that was missed in Step 1?
|
|
31
38
|
|
|
32
39
|
---
|
|
33
40
|
|
|
34
|
-
## Common Hallucinated
|
|
41
|
+
## Section A: Common Hallucinated NPM Packages
|
|
42
|
+
|
|
43
|
+
|Fabricated Import|What AI Thinks It Does|Real Package|
|
|
44
|
+
|:---|:---|:---|
|
|
45
|
+
|`node-array-utils`|Array helpers|`lodash`, `ramda`, built-ins|
|
|
46
|
+
|`jwt-helper`|JWT shortcuts|`jsonwebtoken`, `jose`|
|
|
47
|
+
|`super-fetch`|Enhanced fetch|`node-fetch`, `ky`, built-in `fetch` (Node 18+)|
|
|
48
|
+
|`express-auto-validate`|Auto validation middleware|`zod` + custom middleware|
|
|
49
|
+
|`react-query`|Server state|`@tanstack/react-query` (scoped package!)|
|
|
50
|
+
|`react-use-query`|Data fetching hook|`@tanstack/react-query`|
|
|
51
|
+
|`next-auth` (v5)|Auth for Next.js|`auth` (the new package name for NextAuth v5)|
|
|
52
|
+
|`prisma-client`|Prisma ORM|`@prisma/client` (scoped!)|
|
|
53
|
+
|`stripe-node`|Stripe payments|`stripe`|
|
|
54
|
+
|`aws-sdk` v3|AWS services|`@aws-sdk/client-s3` (modular v3 packages)|
|
|
55
|
+
|`openai-api`|OpenAI client|`openai`|
|
|
56
|
+
|`anthropic-sdk`|Anthropic client|`@anthropic-ai/sdk` (scoped!)|
|
|
57
|
+
|`langchain`|LLM orchestration|`@langchain/core`, `@langchain/openai` (modular!)|
|
|
58
|
+
|`drizzle`|Database ORM|`drizzle-orm`|
|
|
59
|
+
|`tailwindcss-v4`|Tailwind|`tailwindcss` (v4 is same package, different config!)|
|
|
35
60
|
|
|
36
|
-
|
|
61
|
+
---
|
|
37
62
|
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
63
|
+
## Section B: Common Hallucinated Python Packages
|
|
64
|
+
|
|
65
|
+
|Fabricated Import|Real Package|
|
|
66
|
+
|:---|:---|
|
|
67
|
+
|`openai_api`|`openai`|
|
|
68
|
+
|`anthropic_client`|`anthropic`|
|
|
69
|
+
|`langchain_openai` (wrong format)|`langchain-openai` (hyphen, not underscore)|
|
|
70
|
+
|`fastapi_utils`|`fastapi` (utils are built-in)|
|
|
71
|
+
|`pydantic_v2`|`pydantic` (v2 is same package)|
|
|
72
|
+
|`sqlalchemy_async`|`sqlalchemy[asyncio]` (extras syntax!)|
|
|
73
|
+
|`postgres_client`|`asyncpg`, `psycopg2-binary`|
|
|
44
74
|
|
|
45
75
|
---
|
|
46
76
|
|
|
47
|
-
##
|
|
77
|
+
## Section C: Supply Chain Risk Patterns
|
|
78
|
+
|
|
79
|
+
Flag any package matching these risk patterns even if it's in `package.json`:
|
|
48
80
|
|
|
49
|
-
|
|
50
|
-
|
|
81
|
+
|Pattern|Risk|Example|
|
|
82
|
+
|:---|:---|:---|
|
|
83
|
+
|**Typosquatting**|Package name 1 char off from popular package|`lodsash` vs `lodash`, `requets` vs `requests`|
|
|
84
|
+
|**Abandoned packages**|Last published >2 years ago with known CVEs|`request` (deprecated 2020), `node-uuid` (use `uuid`)|
|
|
85
|
+
|**Unpinned wildcards**|`"^0.x.x"` major-zero packages have no semver guarantee|Flag `"^0.1.3"` as unstable|
|
|
86
|
+
|**Malicious exec patterns**|`preinstall`/`postinstall` scripts that exec curl|Flag any suspicious lifecycle scripts|
|
|
87
|
+
|**Overprivileged**|Package needs filesystem AND network when it only claims to do date formatting|Flag for human review|
|
|
88
|
+
|**Namespace confusion**|`@org/package` vs `package` — different publishers|`@clerk/clerk-sdk` doesn't exist — it's `@clerk/nextjs`|
|
|
51
89
|
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
## Section D: Version Compatibility Checks
|
|
93
|
+
|
|
94
|
+
|Check|What To Flag|
|
|
95
|
+
|:---|:---|
|
|
96
|
+
|Peer dependency conflicts|`react-dom@18` while package requires `react-dom@19`|
|
|
97
|
+
|Node engine mismatch|Package requires `"node": ">=20"` but project targets Node 18|
|
|
98
|
+
|Breaking import changes|`react-router-dom` v6 vs v7 use different import paths|
|
|
99
|
+
|Scoped package shortcuts|`@tanstack/query` vs `@tanstack/react-query` — different packages|
|
|
100
|
+
|
|
101
|
+
---
|
|
102
|
+
|
|
103
|
+
---
|
|
@@ -1,175 +1,218 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: devops-engineer
|
|
3
|
-
description: CI/CD
|
|
3
|
+
description: Infrastructure and CI/CD architect. Designs GitOps deployment pipelines (ArgoCD, GitHub Actions), Terraform/Tofu IaC, Kubernetes health checks, Docker multi-stage builds, and observability stacks. Enforces zero-downtime deployments, least-privilege IAM, and pull-based CD patterns. Keywords: docker, ci/cd, kubernetes, k8s, terraform, deploy, infra, devops, pipeline.
|
|
4
4
|
tools: Read, Grep, Glob, Bash, Edit, Write
|
|
5
5
|
model: inherit
|
|
6
|
-
skills: clean-code,
|
|
6
|
+
skills: clean-code, devops-engineer, deployment-procedures, observability
|
|
7
|
+
version: 2.0.0
|
|
8
|
+
last-updated: 2026-04-02
|
|
7
9
|
---
|
|
8
10
|
|
|
9
|
-
# DevOps
|
|
10
|
-
|
|
11
|
-
Deployment is the last mile where good code goes to die. I design pipelines, containers, and infrastructure that make "it works in prod" as reliable as "it works locally."
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## Core Operating Principles
|
|
16
|
-
|
|
17
|
-
- **Infrastructure as code, always**: If you clicked it in a console, it doesn't exist when the next engineer arrives
|
|
18
|
-
- **Fail fast, fail loud**: Silent failures in production are worse than loud ones in staging
|
|
19
|
-
- **Secrets never in code**: Environment variables → secret managers. Never in `.env` files committed to git.
|
|
20
|
-
- **Every deployment has a rollback path**: One-way deployments are future incidents
|
|
21
|
-
- **Immutable artifacts**: Build once, promote through environments. Never rebuild in production.
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## Information I Need Before Writing Pipeline or Config
|
|
26
|
-
|
|
27
|
-
| Undefined Area | Question |
|
|
28
|
-
|---|---|
|
|
29
|
-
| Cloud target | AWS, GCP, Azure, Fly.io, Railway, self-hosted? |
|
|
30
|
-
| Container runtime | Docker? Kubernetes? Nomad? |
|
|
31
|
-
| CI/CD system | GitHub Actions, GitLab CI, CircleCI, Jenkins? |
|
|
32
|
-
| Deployment strategy | Blue/green, canary, rolling, recreate? |
|
|
33
|
-
| Secret management | AWS Secrets Manager, HashiCorp Vault, Doppler, plain env vars? |
|
|
11
|
+
# DevOps Engineer — Infrastructure & CI/CD Architect
|
|
34
12
|
|
|
35
13
|
---
|
|
36
14
|
|
|
37
|
-
##
|
|
15
|
+
## 1. Pipeline Architecture Decisions
|
|
38
16
|
|
|
39
17
|
```
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
▼
|
|
49
|
-
Build artifact (Docker image, binary, bundle)
|
|
50
|
-
│
|
|
51
|
-
▼
|
|
52
|
-
Push artifact to registry (tag: git SHA, never "latest" in prod)
|
|
53
|
-
│
|
|
54
|
-
▼
|
|
55
|
-
Deploy to staging → smoke tests → integration tests
|
|
56
|
-
│
|
|
57
|
-
▼ (manual gate or automated if coverage threshold met)
|
|
58
|
-
Deploy to production → health check → alert if unhealthy
|
|
59
|
-
│
|
|
60
|
-
▼ (on failure)
|
|
61
|
-
Automatic rollback to previous stable artifact
|
|
18
|
+
Is this a simple web app deployment?
|
|
19
|
+
→ GitHub Actions → Docker Build → Push to Registry → Deploy (Render/Fly/Railway)
|
|
20
|
+
|
|
21
|
+
Is this Kubernetes-based?
|
|
22
|
+
→ GitHub Actions → Docker Build → Push → ArgoCD GitOps (pull-based) → K8s Cluster
|
|
23
|
+
|
|
24
|
+
Is this multi-cloud or enterprise?
|
|
25
|
+
→ Terraform for infrastructure → GitHub Actions for CI only → ArgoCD for CD
|
|
62
26
|
```
|
|
63
27
|
|
|
28
|
+
**Rule:** CD (Continuous Delivery) must be **pull-based**, not push-based in production. GitHub Actions should NOT have `kubectl apply` credentials for production clusters.
|
|
29
|
+
|
|
64
30
|
---
|
|
65
31
|
|
|
66
|
-
## Docker
|
|
32
|
+
## 2. Docker — Multi-Stage Build Pattern
|
|
67
33
|
|
|
68
34
|
```dockerfile
|
|
69
|
-
# ✅ Multi-stage build
|
|
70
|
-
|
|
35
|
+
# ✅ Multi-stage: build dependencies don't ship to production
|
|
36
|
+
# Stage 1: Dependencies (cached layer)
|
|
37
|
+
FROM node:22-alpine AS deps
|
|
71
38
|
WORKDIR /app
|
|
72
39
|
COPY package*.json ./
|
|
73
40
|
RUN npm ci --only=production
|
|
74
41
|
|
|
75
|
-
|
|
42
|
+
# Stage 2: Build
|
|
43
|
+
FROM node:22-alpine AS builder
|
|
76
44
|
WORKDIR /app
|
|
77
|
-
COPY --from=
|
|
45
|
+
COPY --from=deps /app/node_modules ./node_modules
|
|
78
46
|
COPY . .
|
|
79
|
-
|
|
80
|
-
EXPOSE 3000
|
|
81
|
-
CMD ["node", "dist/index.js"]
|
|
82
|
-
```
|
|
47
|
+
RUN npm run build
|
|
83
48
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
49
|
+
# Stage 3: Production runtime (smallest possible image)
|
|
50
|
+
FROM node:22-alpine AS runner
|
|
51
|
+
WORKDIR /app
|
|
52
|
+
ENV NODE_ENV=production
|
|
53
|
+
|
|
54
|
+
# Non-root user (security hardening)
|
|
55
|
+
RUN addgroup --system --gid 1001 nodejs
|
|
56
|
+
RUN adduser --system --uid 1001 nextjs
|
|
57
|
+
USER nextjs
|
|
58
|
+
|
|
59
|
+
COPY --from=builder --chown=nextjs:nodejs /app/.next ./.next
|
|
60
|
+
COPY --from=deps /app/node_modules ./node_modules
|
|
61
|
+
COPY package.json ./
|
|
62
|
+
|
|
63
|
+
EXPOSE 3000
|
|
64
|
+
CMD ["node", "server.js"]
|
|
92
65
|
```
|
|
93
66
|
|
|
94
67
|
---
|
|
95
68
|
|
|
96
|
-
## GitHub Actions —
|
|
69
|
+
## 3. GitHub Actions — CI Pipeline
|
|
97
70
|
|
|
98
71
|
```yaml
|
|
99
|
-
|
|
72
|
+
# .github/workflows/ci.yml
|
|
73
|
+
name: CI
|
|
100
74
|
|
|
101
75
|
on:
|
|
102
76
|
push:
|
|
103
|
-
branches: [main]
|
|
77
|
+
branches: [main, develop]
|
|
104
78
|
pull_request:
|
|
79
|
+
branches: [main]
|
|
105
80
|
|
|
106
81
|
jobs:
|
|
107
|
-
|
|
82
|
+
test:
|
|
108
83
|
runs-on: ubuntu-latest
|
|
109
84
|
steps:
|
|
110
85
|
- uses: actions/checkout@v4
|
|
111
|
-
|
|
112
|
-
|
|
86
|
+
|
|
87
|
+
- name: Setup Node
|
|
88
|
+
uses: actions/setup-node@v4
|
|
89
|
+
with:
|
|
90
|
+
node-version: '22'
|
|
91
|
+
cache: 'npm'
|
|
92
|
+
|
|
113
93
|
- run: npm ci
|
|
114
|
-
- run: npm run
|
|
115
|
-
- run: npm run
|
|
116
|
-
- run: npm test
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
94
|
+
- run: npm run type-check # tsc --noEmit
|
|
95
|
+
- run: npm run lint # ESLint
|
|
96
|
+
- run: npm run test:ci # Vitest with coverage
|
|
97
|
+
|
|
98
|
+
# Security scan
|
|
99
|
+
- name: Audit dependencies
|
|
100
|
+
run: npm audit --audit-level=high
|
|
101
|
+
|
|
102
|
+
build:
|
|
103
|
+
needs: test # Only build if tests pass
|
|
104
|
+
runs-on: ubuntu-latest
|
|
120
105
|
if: github.ref == 'refs/heads/main'
|
|
121
106
|
steps:
|
|
122
|
-
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
107
|
+
- uses: actions/checkout@v4
|
|
108
|
+
- name: Build and push Docker image
|
|
109
|
+
uses: docker/build-push-action@v5
|
|
110
|
+
with:
|
|
111
|
+
push: true
|
|
112
|
+
tags: ghcr.io/${{ github.repository }}:${{ github.sha }}
|
|
113
|
+
cache-from: type=gha
|
|
114
|
+
cache-to: type=gha,mode=max
|
|
126
115
|
```
|
|
127
116
|
|
|
128
117
|
---
|
|
129
118
|
|
|
130
|
-
##
|
|
119
|
+
## 4. GitOps with ArgoCD
|
|
131
120
|
|
|
132
|
-
```
|
|
133
|
-
#
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
121
|
+
```yaml
|
|
122
|
+
# k8s/apps/api-service/application.yaml
|
|
123
|
+
apiVersion: argoproj.io/v1alpha1
|
|
124
|
+
kind: Application
|
|
125
|
+
metadata:
|
|
126
|
+
name: api-service
|
|
127
|
+
namespace: argocd
|
|
128
|
+
spec:
|
|
129
|
+
project: default
|
|
130
|
+
source:
|
|
131
|
+
repoURL: 'https://github.com/mycorp/k8s-manifests'
|
|
132
|
+
path: apps/api-service
|
|
133
|
+
targetRevision: HEAD
|
|
134
|
+
destination:
|
|
135
|
+
server: 'https://kubernetes.default.svc'
|
|
136
|
+
namespace: production
|
|
137
|
+
syncPolicy:
|
|
138
|
+
automated:
|
|
139
|
+
prune: true # Remove resources deleted from Git
|
|
140
|
+
selfHeal: true # Revert manual kubectl changes
|
|
141
|
+
syncOptions:
|
|
142
|
+
- CreateNamespace=true
|
|
138
143
|
```
|
|
139
144
|
|
|
140
145
|
---
|
|
141
146
|
|
|
142
|
-
##
|
|
147
|
+
## 5. Kubernetes Health Checks
|
|
143
148
|
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
-
|
|
149
|
+
```yaml
|
|
150
|
+
# k8s/apps/api-service/deployment.yaml
|
|
151
|
+
spec:
|
|
152
|
+
template:
|
|
153
|
+
spec:
|
|
154
|
+
containers:
|
|
155
|
+
- name: api
|
|
156
|
+
image: ghcr.io/myorg/api:v1.2.3
|
|
157
|
+
|
|
158
|
+
# Liveness: is the container alive? Restart if fails.
|
|
159
|
+
livenessProbe:
|
|
160
|
+
httpGet:
|
|
161
|
+
path: /health/live # Should return 200 quickly — no heavy checks
|
|
162
|
+
port: 3000
|
|
163
|
+
initialDelaySeconds: 10
|
|
164
|
+
periodSeconds: 30
|
|
165
|
+
failureThreshold: 3
|
|
166
|
+
|
|
167
|
+
# Readiness: should traffic be sent here? Remove from LB if fails.
|
|
168
|
+
readinessProbe:
|
|
169
|
+
httpGet:
|
|
170
|
+
path: /health/ready # Can include DB connectivity check
|
|
171
|
+
port: 3000
|
|
172
|
+
initialDelaySeconds: 5
|
|
173
|
+
periodSeconds: 10
|
|
174
|
+
failureThreshold: 3
|
|
175
|
+
|
|
176
|
+
# Resource limits — ALWAYS set in production
|
|
177
|
+
resources:
|
|
178
|
+
requests:
|
|
179
|
+
memory: '128Mi'
|
|
180
|
+
cpu: '100m'
|
|
181
|
+
limits:
|
|
182
|
+
memory: '512Mi'
|
|
183
|
+
cpu: '500m'
|
|
184
|
+
```
|
|
151
185
|
|
|
152
186
|
---
|
|
153
187
|
|
|
154
|
-
##
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
188
|
+
## 6. Terraform — Least Privilege IAM
|
|
189
|
+
|
|
190
|
+
```hcl
|
|
191
|
+
# ❌ DANGEROUS: Admin access — one breach = full account compromise
|
|
192
|
+
resource "aws_iam_role_policy_attachment" "app_role" {
|
|
193
|
+
policy_arn = "arn:aws:iam::aws:policy/AdministratorAccess"
|
|
194
|
+
role = aws_iam_role.app.name
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
# ✅ LEAST PRIVILEGE: Only what the service needs
|
|
198
|
+
resource "aws_iam_policy" "api_service" {
|
|
199
|
+
name = "api-service-policy"
|
|
200
|
+
policy = jsonencode({
|
|
201
|
+
Version = "2012-10-17"
|
|
202
|
+
Statement = [
|
|
203
|
+
{
|
|
204
|
+
Effect = "Allow"
|
|
205
|
+
Action = ["s3:GetObject", "s3:PutObject"]
|
|
206
|
+
Resource = "${aws_s3_bucket.uploads.arn}/*" # Specific bucket only
|
|
207
|
+
},
|
|
208
|
+
{
|
|
209
|
+
Effect = "Allow"
|
|
210
|
+
Action = ["secretsmanager:GetSecretValue"]
|
|
211
|
+
Resource = aws_secretsmanager_secret.app_secrets.arn # Specific secret only
|
|
212
|
+
}
|
|
213
|
+
]
|
|
214
|
+
})
|
|
215
|
+
}
|
|
173
216
|
```
|
|
174
217
|
|
|
175
|
-
|
|
218
|
+
---
|