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
|
@@ -1,185 +1,185 @@
|
|
|
1
|
-
---
|
|
2
|
-
name: edge-computing
|
|
3
|
-
description: Edge computing mastery. Cloudflare Workers, Vercel Edge Functions, Durable Objects, edge-compatible data patterns, cold start elimination, caching policies (Stale-While-Revalidate), and global data locality. Use when designing globally distributed, extreme low-latency applications architectures.
|
|
4
|
-
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
-
version: 2.0.0
|
|
6
|
-
last-updated: 2026-04-02
|
|
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
|
-
response = new Response(response.body, response);
|
|
64
|
-
response.headers.set('Cache-Control', 's-maxage=60, stale-while-revalidate=86400');
|
|
65
|
-
|
|
66
|
-
// 4. Store in Cache asynchronously (do not block the user response)
|
|
67
|
-
ctx.waitUntil(cache.put(request, response.clone()));
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
return response;
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
---
|
|
76
|
-
|
|
77
|
-
## 3. Edge Data Locality (The Database Problem)
|
|
78
|
-
|
|
79
|
-
Running logic globally while querying a monolithic database in `us-east-1` is counter-productive. The latency of establishing a connection across the Atlantic will negate any Edge benefits.
|
|
80
|
-
|
|
81
|
-
### Solutions:
|
|
82
|
-
1. **Edge KV Stores**: (Cloudflare KV, Vercel KV) Eventually consistent, highly localized read-latency configs suitable for configuration routing, user sessions, or feature flags.
|
|
83
|
-
2. **Distributed SQLite**: (Cloudflare D1, Turso) Replicas distributed to edge nodes automatically.
|
|
84
|
-
3. **Connection Pooling**: Use an HTTP/Connection Pool proxy strictly (e.g., Prisma Accelerate, Supabase Edge Pooler). You cannot establish TCP `pg://` connections directly from millions of spinning V8 isolates, you will OOM crash the database.
|
|
85
|
-
|
|
86
|
-
```typescript
|
|
87
|
-
// ✅ Turso / LibSQL (Distributed Edge DB) usage:
|
|
88
|
-
import { createClient } from "@libsql/client/web";
|
|
89
|
-
|
|
90
|
-
const client = createClient({
|
|
91
|
-
url: env.TURSO_DATABASE_URL,
|
|
92
|
-
authToken: env.TURSO_AUTH_TOKEN,
|
|
93
|
-
});
|
|
94
|
-
|
|
95
|
-
const result = await client.execute("SELECT * FROM users WHERE id = ?", [userId]);
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
---
|
|
99
|
-
|
|
100
|
-
## 4. WebSockets at the Edge (Durable Objects)
|
|
101
|
-
|
|
102
|
-
Standard Edge functions are stateless. To hold persistent state (like a live multiplayer gaming room, or a chat room's WebSocket connections across multiple users), you must funnel those connections into a single point of state: a Durable Object.
|
|
103
|
-
|
|
104
|
-
```typescript
|
|
105
|
-
// A Durable Object serves as a single source of truth that users globally connect into
|
|
106
|
-
export class ChatRoom {
|
|
107
|
-
constructor(state, env) {
|
|
108
|
-
this.state = state;
|
|
109
|
-
this.sessions = [];
|
|
110
|
-
}
|
|
111
|
-
|
|
112
|
-
async fetch(request) {
|
|
113
|
-
// Upgrade standard HTTP to WebSocket
|
|
114
|
-
const pair = new WebSocketPair();
|
|
115
|
-
|
|
116
|
-
// Accept connection, store it globally
|
|
117
|
-
this.sessions.push(pair.server);
|
|
118
|
-
pair.server.accept();
|
|
119
|
-
|
|
120
|
-
// Handle incoming Chat messages
|
|
121
|
-
pair.server.addEventListener("message", msg => {
|
|
122
|
-
// Broadcast to all other connected edge users
|
|
123
|
-
this.sessions.forEach(session => session.send(msg.data));
|
|
124
|
-
});
|
|
125
|
-
|
|
126
|
-
return new Response(null, { status: 101, webSocket: pair.client });
|
|
127
|
-
}
|
|
128
|
-
}
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
---
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
---
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
139
|
-
|
|
140
|
-
1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
|
|
141
|
-
2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
|
|
142
|
-
3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
|
|
143
|
-
4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
144
|
-
5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
**Slash command: `/review` or `/tribunal-full`**
|
|
151
|
-
**Active reviewers: `logic-reviewer` · `security-auditor`**
|
|
152
|
-
|
|
153
|
-
### ❌ Forbidden AI Tropes
|
|
154
|
-
|
|
155
|
-
1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
|
|
156
|
-
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
157
|
-
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
Review these questions before confirming output:
|
|
162
|
-
```
|
|
163
|
-
✅ Did I rely ONLY on real, verified tools and methods?
|
|
164
|
-
✅ Is this solution appropriately scoped to the user's constraints?
|
|
165
|
-
✅ Did I handle potential failure modes and edge cases?
|
|
166
|
-
✅ Have I avoided generic boilerplate that doesn't add value?
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
170
|
-
|
|
171
|
-
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
172
|
-
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
173
|
-
- ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
## Pre-Flight Checklist
|
|
177
|
-
- [ ] Have I reviewed the user's specific constraints and requests?
|
|
178
|
-
- [ ] Have I checked the environment for relevant existing implementations?
|
|
179
|
-
|
|
180
|
-
## VBC Protocol (Verification-Before-Completion)
|
|
181
|
-
You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
|
|
1
|
+
---
|
|
2
|
+
name: edge-computing
|
|
3
|
+
description: Edge computing mastery. Cloudflare Workers, Vercel Edge Functions, Durable Objects, edge-compatible data patterns, cold start elimination, caching policies (Stale-While-Revalidate), and global data locality. Use when designing globally distributed, extreme low-latency applications architectures.
|
|
4
|
+
allowed-tools: Read, Write, Edit, Glob, Grep
|
|
5
|
+
version: 2.0.0
|
|
6
|
+
last-updated: 2026-04-02
|
|
7
|
+
applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
|
|
8
|
+
routing:
|
|
9
|
+
domain: general
|
|
10
|
+
tier: basic
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## Hallucination Traps (Read First)
|
|
14
|
+
|
|
15
|
+
- ❌ Importing Node.js-only APIs (fs, net, child_process) in edge functions -> ✅ Edge runtime has NO Node.js APIs; use Web APIs only
|
|
16
|
+
- ❌ Using `global` or module-level mutable state in edge -> ✅ Edge functions are stateless across requests; use KV/Durable Objects for state
|
|
17
|
+
- ❌ Assuming edge functions have unlimited execution time -> ✅ Cloudflare Workers: 30s, Vercel Edge: 25s; design for millisecond responses
|
|
18
|
+
|
|
19
|
+
---
|
|
20
|
+
|
|
21
|
+
# Edge Computing — Global Latency Mastery
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 1. The Edge Model (V8 Isolates vs Node.js)
|
|
26
|
+
|
|
27
|
+
Edge functions (Cloudflare Workers, Vercel Edge) run on V8 Isolates, NOT standard Node.js environments.
|
|
28
|
+
|
|
29
|
+
**What This Means:**
|
|
30
|
+
|
|
31
|
+
1. Extremely fast cold starts (< 5ms) because there is no underlying OS process bootup.
|
|
32
|
+
2. Hard memory/time limits per request (e.g., 50ms CPU time max).
|
|
33
|
+
3. **NO NATIVE NODE MODULES.** You cannot use `fs`, `child_process`, or heavy native C++ binaries (e.g., standard `bcrypt`, `sharp`).
|
|
34
|
+
|
|
35
|
+
```typescript
|
|
36
|
+
// ❌ BAD: Attempting to use Node native core modules
|
|
37
|
+
import fs from "fs";
|
|
38
|
+
import bcrypt from "bcrypt"; // Has C++ bindings, will instantly crash on V8 edge
|
|
39
|
+
|
|
40
|
+
// ✅ GOOD: Utilizing standard Web APIs (Fetch, CryptoKey)
|
|
41
|
+
const hashBuffer = await crypto.subtle.digest("SHA-256", new TextEncoder().encode(password));
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
---
|
|
45
|
+
|
|
46
|
+
## 2. Advanced Route Caching (Stale-While-Revalidate)
|
|
47
|
+
|
|
48
|
+
The highest value proposition of the edge is intercepting requests _before_ they cross the ocean.
|
|
49
|
+
|
|
50
|
+
```typescript
|
|
51
|
+
// Standard Edge Proxy request handling
|
|
52
|
+
export default {
|
|
53
|
+
async fetch(request, env, ctx) {
|
|
54
|
+
const url = new URL(request.url);
|
|
55
|
+
|
|
56
|
+
// 1. Cache API responses at the edge
|
|
57
|
+
const cache = caches.default;
|
|
58
|
+
let response = await cache.match(request);
|
|
59
|
+
|
|
60
|
+
if (!response) {
|
|
61
|
+
// 2. Fetch Origin (The real server in Virginia)
|
|
62
|
+
response = await fetch(request);
|
|
182
63
|
|
|
64
|
+
// 3. Mutate Headers for SWR (Stale-While-Revalidate)
|
|
65
|
+
// Instructs the Edge CDN: Serve the stale version instantly to the user,
|
|
66
|
+
// but fire an async request in the background to update the cache for the next user.
|
|
67
|
+
response = new Response(response.body, response);
|
|
68
|
+
response.headers.set("Cache-Control", "s-maxage=60, stale-while-revalidate=86400");
|
|
69
|
+
|
|
70
|
+
// 4. Store in Cache asynchronously (do not block the user response)
|
|
71
|
+
ctx.waitUntil(cache.put(request, response.clone()));
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
return response;
|
|
75
|
+
},
|
|
76
|
+
};
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
---
|
|
80
|
+
|
|
81
|
+
## 3. Edge Data Locality (The Database Problem)
|
|
82
|
+
|
|
83
|
+
Running logic globally while querying a monolithic database in `us-east-1` is counter-productive. The latency of establishing a connection across the Atlantic will negate any Edge benefits.
|
|
84
|
+
|
|
85
|
+
### Solutions:
|
|
86
|
+
|
|
87
|
+
1. **Edge KV Stores**: (Cloudflare KV, Vercel KV) Eventually consistent, highly localized read-latency configs suitable for configuration routing, user sessions, or feature flags.
|
|
88
|
+
2. **Distributed SQLite**: (Cloudflare D1, Turso) Replicas distributed to edge nodes automatically.
|
|
89
|
+
3. **Connection Pooling**: Use an HTTP/Connection Pool proxy strictly (e.g., Prisma Accelerate, Supabase Edge Pooler). You cannot establish TCP `pg://` connections directly from millions of spinning V8 isolates, you will OOM crash the database.
|
|
90
|
+
|
|
91
|
+
```typescript
|
|
92
|
+
// ✅ Turso / LibSQL (Distributed Edge DB) usage:
|
|
93
|
+
import { createClient } from "@libsql/client/web";
|
|
94
|
+
|
|
95
|
+
const client = createClient({
|
|
96
|
+
url: env.TURSO_DATABASE_URL,
|
|
97
|
+
authToken: env.TURSO_AUTH_TOKEN,
|
|
98
|
+
});
|
|
99
|
+
|
|
100
|
+
const result = await client.execute("SELECT * FROM users WHERE id = ?", [userId]);
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
---
|
|
104
|
+
|
|
105
|
+
## 4. WebSockets at the Edge (Durable Objects)
|
|
106
|
+
|
|
107
|
+
Standard Edge functions are stateless. To hold persistent state (like a live multiplayer gaming room, or a chat room's WebSocket connections across multiple users), you must funnel those connections into a single point of state: a Durable Object.
|
|
108
|
+
|
|
109
|
+
```typescript
|
|
110
|
+
// A Durable Object serves as a single source of truth that users globally connect into
|
|
111
|
+
export class ChatRoom {
|
|
112
|
+
constructor(state, env) {
|
|
113
|
+
this.state = state;
|
|
114
|
+
this.sessions = [];
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
async fetch(request) {
|
|
118
|
+
// Upgrade standard HTTP to WebSocket
|
|
119
|
+
const pair = new WebSocketPair();
|
|
120
|
+
|
|
121
|
+
// Accept connection, store it globally
|
|
122
|
+
this.sessions.push(pair.server);
|
|
123
|
+
pair.server.accept();
|
|
124
|
+
|
|
125
|
+
// Handle incoming Chat messages
|
|
126
|
+
pair.server.addEventListener("message", (msg) => {
|
|
127
|
+
// Broadcast to all other connected edge users
|
|
128
|
+
this.sessions.forEach((session) => session.send(msg.data));
|
|
129
|
+
});
|
|
130
|
+
|
|
131
|
+
return new Response(null, { status: 101, webSocket: pair.client });
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
---
|
|
137
|
+
|
|
138
|
+
---
|
|
139
|
+
|
|
140
|
+
AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
|
|
141
|
+
|
|
142
|
+
1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
|
|
143
|
+
2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
|
|
144
|
+
3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
|
|
145
|
+
4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
146
|
+
5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
**Slash command: `/review` or `/tribunal-full`**
|
|
151
|
+
**Active reviewers: `logic-reviewer` · `security-auditor`**
|
|
152
|
+
|
|
153
|
+
### ❌ Forbidden AI Tropes
|
|
154
|
+
|
|
155
|
+
1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
|
|
156
|
+
2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
|
|
157
|
+
3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
|
|
158
|
+
|
|
159
|
+
Review these questions before confirming output:
|
|
160
|
+
|
|
161
|
+
```
|
|
162
|
+
✅ Did I rely ONLY on real, verified tools and methods?
|
|
163
|
+
✅ Is this solution appropriately scoped to the user's constraints?
|
|
164
|
+
✅ Did I handle potential failure modes and edge cases?
|
|
165
|
+
✅ Have I avoided generic boilerplate that doesn't add value?
|
|
166
|
+
```
|
|
167
|
+
|
|
168
|
+
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
169
|
+
|
|
170
|
+
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
171
|
+
|
|
172
|
+
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
173
|
+
- ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|
|
174
|
+
|
|
175
|
+
## Pre-Flight Checklist
|
|
176
|
+
|
|
177
|
+
- [ ] Have I reviewed the user's specific constraints and requests?
|
|
178
|
+
- [ ] Have I checked the environment for relevant existing implementations?
|
|
179
|
+
|
|
180
|
+
## VBC Protocol (Verification-Before-Completion)
|
|
181
|
+
|
|
182
|
+
You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
|
|
183
183
|
|
|
184
184
|
---
|
|
185
185
|
|
|
@@ -209,6 +209,7 @@ AI coding assistants often fall into specific bad habits when dealing with this
|
|
|
209
209
|
### ✅ Pre-Flight Self-Audit
|
|
210
210
|
|
|
211
211
|
Review these questions before confirming output:
|
|
212
|
+
|
|
212
213
|
```
|
|
213
214
|
✅ Did I rely ONLY on real, verified tools and methods?
|
|
214
215
|
✅ Is this solution appropriately scoped to the user's constraints?
|
|
@@ -219,5 +220,6 @@ Review these questions before confirming output:
|
|
|
219
220
|
### 🛑 Verification-Before-Completion (VBC) Protocol
|
|
220
221
|
|
|
221
222
|
**CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
|
|
223
|
+
|
|
222
224
|
- ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
|
|
223
225
|
- ✅ **Required:** You are explicitly forbidden from finalizing any task without providing **concrete evidence** (terminal output, passing tests, compile success, or equivalent proof) that your output works as intended.
|