tribunal-kit 3.0.0 → 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.
Files changed (226) hide show
  1. package/.agent/ARCHITECTURE.md +99 -99
  2. package/.agent/GEMINI.md +52 -52
  3. package/.agent/agents/accessibility-reviewer.md +187 -220
  4. package/.agent/agents/ai-code-reviewer.md +199 -233
  5. package/.agent/agents/backend-specialist.md +215 -238
  6. package/.agent/agents/code-archaeologist.md +161 -181
  7. package/.agent/agents/database-architect.md +184 -207
  8. package/.agent/agents/debugger.md +191 -218
  9. package/.agent/agents/dependency-reviewer.md +103 -136
  10. package/.agent/agents/devops-engineer.md +218 -238
  11. package/.agent/agents/documentation-writer.md +201 -221
  12. package/.agent/agents/explorer-agent.md +160 -180
  13. package/.agent/agents/frontend-reviewer.md +160 -194
  14. package/.agent/agents/frontend-specialist.md +248 -237
  15. package/.agent/agents/game-developer.md +48 -52
  16. package/.agent/agents/logic-reviewer.md +116 -149
  17. package/.agent/agents/mobile-developer.md +200 -223
  18. package/.agent/agents/mobile-reviewer.md +162 -195
  19. package/.agent/agents/orchestrator.md +181 -211
  20. package/.agent/agents/penetration-tester.md +157 -174
  21. package/.agent/agents/performance-optimizer.md +183 -203
  22. package/.agent/agents/performance-reviewer.md +178 -211
  23. package/.agent/agents/product-manager.md +142 -162
  24. package/.agent/agents/product-owner.md +6 -25
  25. package/.agent/agents/project-planner.md +142 -162
  26. package/.agent/agents/qa-automation-engineer.md +225 -242
  27. package/.agent/agents/security-auditor.md +174 -194
  28. package/.agent/agents/seo-specialist.md +193 -213
  29. package/.agent/agents/sql-reviewer.md +161 -194
  30. package/.agent/agents/supervisor-agent.md +184 -203
  31. package/.agent/agents/swarm-worker-contracts.md +17 -17
  32. package/.agent/agents/swarm-worker-registry.md +46 -46
  33. package/.agent/agents/test-coverage-reviewer.md +160 -193
  34. package/.agent/agents/test-engineer.md +0 -21
  35. package/.agent/agents/type-safety-reviewer.md +175 -208
  36. package/.agent/patterns/generator.md +9 -9
  37. package/.agent/patterns/inversion.md +12 -12
  38. package/.agent/patterns/pipeline.md +9 -9
  39. package/.agent/patterns/reviewer.md +13 -13
  40. package/.agent/patterns/tool-wrapper.md +9 -9
  41. package/.agent/rules/GEMINI.md +63 -63
  42. package/.agent/scripts/compress_skills.py +167 -0
  43. package/.agent/scripts/consolidate_skills.py +173 -0
  44. package/.agent/scripts/deep_compress.py +202 -0
  45. package/.agent/scripts/minify_context.py +80 -0
  46. package/.agent/scripts/security_scan.py +1 -1
  47. package/.agent/scripts/strip_tribunal.py +41 -0
  48. package/.agent/skills/agent-organizer/SKILL.md +92 -126
  49. package/.agent/skills/agentic-patterns/SKILL.md +0 -70
  50. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +126 -160
  51. package/.agent/skills/api-patterns/SKILL.md +123 -215
  52. package/.agent/skills/api-security-auditor/SKILL.md +143 -177
  53. package/.agent/skills/app-builder/SKILL.md +326 -50
  54. package/.agent/skills/app-builder/templates/SKILL.md +13 -15
  55. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +16 -16
  56. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +22 -22
  57. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +18 -18
  58. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +20 -20
  59. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +17 -17
  60. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +18 -18
  61. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +21 -21
  62. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +19 -19
  63. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +26 -26
  64. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +26 -26
  65. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +19 -19
  66. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +18 -18
  67. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +20 -20
  68. package/.agent/skills/appflow-wireframe/SKILL.md +87 -121
  69. package/.agent/skills/architecture/SKILL.md +82 -252
  70. package/.agent/skills/authentication-best-practices/SKILL.md +139 -173
  71. package/.agent/skills/bash-linux/SKILL.md +120 -154
  72. package/.agent/skills/behavioral-modes/SKILL.md +8 -69
  73. package/.agent/skills/brainstorming/SKILL.md +428 -104
  74. package/.agent/skills/building-native-ui/SKILL.md +143 -174
  75. package/.agent/skills/clean-code/SKILL.md +323 -360
  76. package/.agent/skills/code-review-checklist/SKILL.md +0 -62
  77. package/.agent/skills/config-validator/SKILL.md +107 -141
  78. package/.agent/skills/csharp-developer/SKILL.md +468 -528
  79. package/.agent/skills/database-design/SKILL.md +104 -369
  80. package/.agent/skills/deployment-procedures/SKILL.md +111 -145
  81. package/.agent/skills/devops-engineer/SKILL.md +295 -332
  82. package/.agent/skills/devops-incident-responder/SKILL.md +79 -113
  83. package/.agent/skills/doc.md +5 -5
  84. package/.agent/skills/documentation-templates/SKILL.md +19 -63
  85. package/.agent/skills/edge-computing/SKILL.md +123 -157
  86. package/.agent/skills/extract-design-system/SKILL.md +100 -134
  87. package/.agent/skills/framer-motion-expert/SKILL.md +111 -855
  88. package/.agent/skills/frontend-design/SKILL.md +151 -499
  89. package/.agent/skills/game-design-expert/SKILL.md +71 -105
  90. package/.agent/skills/game-engineering-expert/SKILL.md +88 -122
  91. package/.agent/skills/geo-fundamentals/SKILL.md +89 -124
  92. package/.agent/skills/github-operations/SKILL.md +279 -314
  93. package/.agent/skills/gsap-expert/SKILL.md +119 -826
  94. package/.agent/skills/i18n-localization/SKILL.md +104 -138
  95. package/.agent/skills/intelligent-routing/SKILL.md +159 -127
  96. package/.agent/skills/lint-and-validate/SKILL.md +8 -52
  97. package/.agent/skills/llm-engineering/SKILL.md +344 -357
  98. package/.agent/skills/local-first/SKILL.md +120 -154
  99. package/.agent/skills/mcp-builder/SKILL.md +84 -118
  100. package/.agent/skills/mobile-design/SKILL.md +213 -219
  101. package/.agent/skills/motion-engineering/SKILL.md +184 -0
  102. package/.agent/skills/nextjs-react-expert/SKILL.md +99 -698
  103. package/.agent/skills/nodejs-best-practices/SKILL.md +498 -559
  104. package/.agent/skills/observability/SKILL.md +293 -330
  105. package/.agent/skills/parallel-agents/SKILL.md +88 -122
  106. package/.agent/skills/performance-profiling/SKILL.md +217 -254
  107. package/.agent/skills/plan-writing/SKILL.md +84 -118
  108. package/.agent/skills/platform-engineer/SKILL.md +89 -123
  109. package/.agent/skills/playwright-best-practices/SKILL.md +128 -162
  110. package/.agent/skills/powershell-windows/SKILL.md +112 -146
  111. package/.agent/skills/python-patterns/SKILL.md +7 -35
  112. package/.agent/skills/python-pro/SKILL.md +148 -754
  113. package/.agent/skills/react-specialist/SKILL.md +123 -827
  114. package/.agent/skills/readme-builder/SKILL.md +15 -85
  115. package/.agent/skills/realtime-patterns/SKILL.md +269 -304
  116. package/.agent/skills/red-team-tactics/SKILL.md +10 -51
  117. package/.agent/skills/rust-pro/SKILL.md +623 -701
  118. package/.agent/skills/seo-fundamentals/SKILL.md +120 -154
  119. package/.agent/skills/server-management/SKILL.md +156 -190
  120. package/.agent/skills/shadcn-ui-expert/SKILL.md +172 -206
  121. package/.agent/skills/skill-creator/SKILL.md +18 -58
  122. package/.agent/skills/sql-pro/SKILL.md +579 -633
  123. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +28 -68
  124. package/.agent/skills/swiftui-expert/SKILL.md +142 -176
  125. package/.agent/skills/systematic-debugging/SKILL.md +84 -118
  126. package/.agent/skills/tailwind-patterns/SKILL.md +516 -576
  127. package/.agent/skills/tdd-workflow/SKILL.md +103 -137
  128. package/.agent/skills/test-result-analyzer/SKILL.md +33 -73
  129. package/.agent/skills/testing-patterns/SKILL.md +512 -573
  130. package/.agent/skills/trend-researcher/SKILL.md +30 -71
  131. package/.agent/skills/ui-ux-pro-max/SKILL.md +0 -41
  132. package/.agent/skills/ui-ux-researcher/SKILL.md +51 -91
  133. package/.agent/skills/vue-expert/SKILL.md +127 -866
  134. package/.agent/skills/vulnerability-scanner/SKILL.md +354 -269
  135. package/.agent/skills/web-accessibility-auditor/SKILL.md +159 -193
  136. package/.agent/skills/web-design-guidelines/SKILL.md +17 -61
  137. package/.agent/skills/webapp-testing/SKILL.md +111 -145
  138. package/.agent/skills/whimsy-injector/SKILL.md +58 -132
  139. package/.agent/skills/workflow-optimizer/SKILL.md +28 -68
  140. package/.agent/workflows/api-tester.md +151 -151
  141. package/.agent/workflows/audit.md +127 -138
  142. package/.agent/workflows/brainstorm.md +110 -110
  143. package/.agent/workflows/changelog.md +112 -112
  144. package/.agent/workflows/create.md +124 -124
  145. package/.agent/workflows/debug.md +165 -189
  146. package/.agent/workflows/deploy.md +180 -189
  147. package/.agent/workflows/enhance.md +128 -151
  148. package/.agent/workflows/fix.md +114 -135
  149. package/.agent/workflows/generate.md +12 -4
  150. package/.agent/workflows/migrate.md +160 -160
  151. package/.agent/workflows/orchestrate.md +168 -168
  152. package/.agent/workflows/performance-benchmarker.md +114 -123
  153. package/.agent/workflows/plan.md +173 -173
  154. package/.agent/workflows/preview.md +80 -80
  155. package/.agent/workflows/refactor.md +161 -183
  156. package/.agent/workflows/review-ai.md +101 -129
  157. package/.agent/workflows/review.md +116 -116
  158. package/.agent/workflows/session.md +94 -94
  159. package/.agent/workflows/status.md +79 -79
  160. package/.agent/workflows/strengthen-skills.md +138 -139
  161. package/.agent/workflows/swarm.md +179 -179
  162. package/.agent/workflows/test.md +189 -211
  163. package/.agent/workflows/tribunal-backend.md +93 -113
  164. package/.agent/workflows/tribunal-database.md +94 -115
  165. package/.agent/workflows/tribunal-frontend.md +95 -118
  166. package/.agent/workflows/tribunal-full.md +92 -133
  167. package/.agent/workflows/tribunal-mobile.md +94 -119
  168. package/.agent/workflows/tribunal-performance.md +109 -133
  169. package/.agent/workflows/ui-ux-pro-max.md +122 -143
  170. package/package.json +1 -1
  171. package/.agent/skills/api-patterns/api-style.md +0 -42
  172. package/.agent/skills/api-patterns/auth.md +0 -24
  173. package/.agent/skills/api-patterns/documentation.md +0 -26
  174. package/.agent/skills/api-patterns/graphql.md +0 -41
  175. package/.agent/skills/api-patterns/rate-limiting.md +0 -31
  176. package/.agent/skills/api-patterns/response.md +0 -37
  177. package/.agent/skills/api-patterns/rest.md +0 -40
  178. package/.agent/skills/api-patterns/security-testing.md +0 -122
  179. package/.agent/skills/api-patterns/trpc.md +0 -41
  180. package/.agent/skills/api-patterns/versioning.md +0 -22
  181. package/.agent/skills/app-builder/agent-coordination.md +0 -71
  182. package/.agent/skills/app-builder/feature-building.md +0 -53
  183. package/.agent/skills/app-builder/project-detection.md +0 -34
  184. package/.agent/skills/app-builder/scaffolding.md +0 -118
  185. package/.agent/skills/app-builder/tech-stack.md +0 -40
  186. package/.agent/skills/architecture/context-discovery.md +0 -43
  187. package/.agent/skills/architecture/examples.md +0 -94
  188. package/.agent/skills/architecture/pattern-selection.md +0 -68
  189. package/.agent/skills/architecture/patterns-reference.md +0 -50
  190. package/.agent/skills/architecture/trade-off-analysis.md +0 -77
  191. package/.agent/skills/brainstorming/dynamic-questioning.md +0 -360
  192. package/.agent/skills/database-design/database-selection.md +0 -43
  193. package/.agent/skills/database-design/indexing.md +0 -39
  194. package/.agent/skills/database-design/migrations.md +0 -48
  195. package/.agent/skills/database-design/optimization.md +0 -36
  196. package/.agent/skills/database-design/orm-selection.md +0 -30
  197. package/.agent/skills/database-design/schema-design.md +0 -56
  198. package/.agent/skills/frontend-design/animation-guide.md +0 -331
  199. package/.agent/skills/frontend-design/color-system.md +0 -329
  200. package/.agent/skills/frontend-design/decision-trees.md +0 -418
  201. package/.agent/skills/frontend-design/motion-graphics.md +0 -306
  202. package/.agent/skills/frontend-design/typography-system.md +0 -363
  203. package/.agent/skills/frontend-design/ux-psychology.md +0 -1116
  204. package/.agent/skills/frontend-design/visual-effects.md +0 -383
  205. package/.agent/skills/intelligent-routing/router-manifest.md +0 -65
  206. package/.agent/skills/mobile-design/decision-trees.md +0 -516
  207. package/.agent/skills/mobile-design/mobile-backend.md +0 -491
  208. package/.agent/skills/mobile-design/mobile-color-system.md +0 -420
  209. package/.agent/skills/mobile-design/mobile-debugging.md +0 -122
  210. package/.agent/skills/mobile-design/mobile-design-thinking.md +0 -357
  211. package/.agent/skills/mobile-design/mobile-navigation.md +0 -458
  212. package/.agent/skills/mobile-design/mobile-performance.md +0 -767
  213. package/.agent/skills/mobile-design/mobile-testing.md +0 -356
  214. package/.agent/skills/mobile-design/mobile-typography.md +0 -433
  215. package/.agent/skills/mobile-design/platform-android.md +0 -666
  216. package/.agent/skills/mobile-design/platform-ios.md +0 -561
  217. package/.agent/skills/mobile-design/touch-psychology.md +0 -537
  218. package/.agent/skills/nextjs-react-expert/1-async-eliminating-waterfalls.md +0 -312
  219. package/.agent/skills/nextjs-react-expert/2-bundle-bundle-size-optimization.md +0 -240
  220. package/.agent/skills/nextjs-react-expert/3-server-server-side-performance.md +0 -490
  221. package/.agent/skills/nextjs-react-expert/4-client-client-side-data-fetching.md +0 -264
  222. package/.agent/skills/nextjs-react-expert/5-rerender-re-render-optimization.md +0 -581
  223. package/.agent/skills/nextjs-react-expert/6-rendering-rendering-performance.md +0 -432
  224. package/.agent/skills/nextjs-react-expert/7-js-javascript-performance.md +0 -684
  225. package/.agent/skills/nextjs-react-expert/8-advanced-advanced-patterns.md +0 -150
  226. package/.agent/skills/vulnerability-scanner/checklists.md +0 -121
@@ -1,113 +1,79 @@
1
- ---
2
- name: devops-incident-responder
3
- description: Production incident response mastery. MTTR (Mean Time to Recovery) reduction, blameless post-mortems, rapid triaging, halting systemic cascading failures, isolating problematic deployments, and evidence-based forensic analysis. Use when stabilizing broken systems, fighting active production fires, or conducting root-cause post-mortems.
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
- # Incident Responder — Production Stabilization Mastery
11
-
12
- > Time is blood. The goal of an incident response is Mitigation first, Resolution second.
13
- > DO NOT investigate the root cause while the building is burning. Put out the fire (Rollback), then investigate the ashes.
14
-
15
- ---
16
-
17
- ## 1. The Prime Directive (Stop the Bleeding)
18
-
19
- When an outage is declared (e.g., 502 Bad Gateway across the entire primary cluster), do not ask the developer to check the database logs to figure out why the code crashed.
20
-
21
- **Immediate Action Pipeline:**
22
- 1. **Identify the Trigger:** What changed in the last 15 minutes? (90% of outages are caused by deployments).
23
- 2. **Revert the Change:** Execute the emergency rollback pipeline instantly. Revert the Git commit, swap the Docker tag, or disable the Feature Flag.
24
- 3. **Verify Stabilization:** Ensure metrics return to healthy thresholds.
25
- 4. **Communicate:** "Mitigation complete. Services restored. Root cause investigation underway."
26
-
27
- ---
28
-
29
- ## 2. Isolating Cascading Failures
30
-
31
- A cascading failure occurs when Service A dies, causing Service B to overload with retries, which kills Service B, which kills the database.
32
-
33
- **The Circuit Breaker Protocol:**
34
- If a downstream dependency is dead, sever it immediately to save the rest of the ecosystem.
35
-
36
- ```javascript
37
- // VULNERABLE: Infinite Retry Death Spiral
38
- async function fetchUser(id) {
39
- while(true) {
40
- try { return await api.get(`/user/${id}`); }
41
- catch { await sleep(100); } // Hundreds of containers doing this will execute a DDoSing attack on the API
42
- }
43
- }
44
-
45
- // RESILIENT: Circuit Breaking / Fallbacks
46
- const breaker = new CircuitBreaker(fetchUser, {
47
- errorThresholdPercentage: 50, // If 50% of requests fail...
48
- resetTimeout: 30000 // Open the circuit (stop sending requests) for 30s
49
- });
50
-
51
- breaker.fallback(() => ({ id: "cached-user", status: "degraded" }));
52
- ```
53
-
54
- **Heavy Mitigation Tactics:**
55
- - **Shed Load:** Aggressively drop non-critical traffic (e.g., disable background syncs, temporarily ban aggressive scraping IPs).
56
- - **Scale Out (Band-Aid):** If the memory leak is crashing nodes every 10 minutes, scale the nodes up 3x to buy yourself 30 minutes of runway to find the actual bug.
57
-
58
- ---
59
-
60
- ## 3. The Investigative Triage Routine
61
-
62
- Once the bleeding is stopped (or if you are investigating a non-fatal anomaly), follow the data strictly:
63
-
64
- 1. **Metrics (The "What"):** Look at the Dashboards. Did latency spike? Did CPU pin at 100%? Did Database active connections max out?
65
- 2. **Traces (The "Where"):** Look at OpenTelemetry/Datadog traces. Which specific microservice is the bottleneck?
66
- 3. **Logs (The "Why"):** Query the centralized logs (Splunk/Elastic/CloudWatch) exactly around the timestamp the trace spiked.
67
-
68
- ---
69
-
70
- ## 4. The Blameless Post-Mortem
71
-
72
- Incident response does not end when the system recovers. It ends when the system is architected to survive the same failure tomorrow automatically.
73
-
74
- **A Professional Post-Mortem Must Include:**
75
- 1. **The Timeline:** Chronological factual representation of the event to the minute.
76
- 2. **Root Cause Analysis (The 5 Whys):**
77
- - *Why did the site go down?* DB exhausted connections.
78
- - *Why did it exhaust?* The new background worker didn't pool connections.
79
- - *Why did the worker deploy?* It bypassed CI tests for speed.
80
- 3. **Action Items:** Tangible Jira tickets preventing recurrence (e.g., "Implement PgBouncer connection limits", "Enforce CI checks block on all branches").
81
-
82
- ---
83
-
84
- ## 🤖 LLM-Specific Traps (Incident Response)
85
-
86
- 1. **Investigating the Fire:** Identifying a crash and immediately demanding the user rewrite the deeply nested API logic while the site remains completely offline to customers. Always prescribe an instant Rollback first.
87
- 2. **Shotgun Reboots:** Telling the user to just restart all the servers blindly. This destroys all volatile memory evidence (Heap Dumps, core dumps) required to actually solve the root cause.
88
- 3. **Restart Loops:** The AI identifies an OOM (Out Of Memory) crash and writes a bash loop to infinitely restart the system every time it crashes, actively masking the fatal memory leak from architectural review.
89
- 4. **Ignoring Network Geometries:** Trying to debug an API failure for 20 minutes by analyzing Node.js code, while totally forgetting to check if the AWS Security Group / Firewall simply blocked the port.
90
- 5. **Assuming Code is Flawless:** Recommending complex database re-indexing strategies because queries got slow, without recognizing that the recent Git Commit deployed an N+1 query loop. Assume recent deployments are guilty until proven innocent.
91
- 6. **No Circuit Breakers:** Fixing a timeout bug by suggesting the user increase the global HTTP timeout from 10s to 60s, guaranteeing the entire thread pool becomes exhausted instantly during the next network fluctuation.
92
- 7. **The Blame Game:** Writing analysis reports that focus heavily on the individual developer who pushed the bad code, rather than identifying the systemic CI/CD pipeline failure that *allowed* the bad code to merge.
93
- 8. **Logging in Production:** Advising the user to `console.log` massive payloads to track an error in production environments, massively polluting logs and potentially leaking PII compliance data.
94
- 9. **Tunnel Vision:** Debugging Application A intensely, failing to realize Application A failed because the underlying global Redis cache failed completely, affecting all services simultaneously. Focus on shared infrastructure metrics first.
95
- 10. **The Unverifiable Fix:** Proposing an intricate solution and skipping the final critical step: "How will we prove this actually fixed the problem under load?". Deploy without telemetry monitoring is flying blind.
96
-
97
- ---
98
-
99
- ## 🏛️ Tribunal Integration
100
-
101
- ### ✅ Pre-Flight Self-Audit
102
- ```
103
- ✅ Was immediate Mitigation/Rollback explicitly ordered prior to initiating Root Cause Analysis?
104
- ✅ Did I enforce strategies to break cascading failures (e.g., Circuit Breakers, load shedding)?
105
- ✅ Are diagnostic analyses tracing specific metrics to explicit log anomalies?
106
- ✅ Ensure that system reboots did not intentionally destroy critical volatile diagnostic evidence.
107
- ✅ Have recent deployments/git-commits been flagged as the primary initial vector of suspicion?
108
- ✅ Did I avoid masking problems by extending timeout thresholds, opting instead to fix blocking execution?
109
- ✅ Is the incident Post-Mortem methodology completely focused on systemic flaws rather than human error?
110
- ✅ Were cross-service infrastructure layers (DBs, Redis, Load Balancers) cleared before deep-diving into local code?
111
- ✅ Has an action item been established verifying how future iterations of this failure will be programmatically blocked?
112
- ✅ Are there explicit mechanisms checking for PII leakage before increasing diagnostic logging verbosity in production?
113
- ```
1
+ ---
2
+ name: devops-incident-responder
3
+ description: Production incident response mastery. MTTR (Mean Time to Recovery) reduction, blameless post-mortems, rapid triaging, halting systemic cascading failures, isolating problematic deployments, and evidence-based forensic analysis. Use when stabilizing broken systems, fighting active production fires, or conducting root-cause post-mortems.
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
+ # Incident Responder — Production Stabilization Mastery
11
+
12
+ ---
13
+
14
+ ## 1. The Prime Directive (Stop the Bleeding)
15
+
16
+ When an outage is declared (e.g., 502 Bad Gateway across the entire primary cluster), do not ask the developer to check the database logs to figure out why the code crashed.
17
+
18
+ **Immediate Action Pipeline:**
19
+ 1. **Identify the Trigger:** What changed in the last 15 minutes? (90% of outages are caused by deployments).
20
+ 2. **Revert the Change:** Execute the emergency rollback pipeline instantly. Revert the Git commit, swap the Docker tag, or disable the Feature Flag.
21
+ 3. **Verify Stabilization:** Ensure metrics return to healthy thresholds.
22
+ 4. **Communicate:** "Mitigation complete. Services restored. Root cause investigation underway."
23
+
24
+ ---
25
+
26
+ ## 2. Isolating Cascading Failures
27
+
28
+ A cascading failure occurs when Service A dies, causing Service B to overload with retries, which kills Service B, which kills the database.
29
+
30
+ **The Circuit Breaker Protocol:**
31
+ If a downstream dependency is dead, sever it immediately to save the rest of the ecosystem.
32
+
33
+ ```javascript
34
+ // VULNERABLE: Infinite Retry Death Spiral
35
+ async function fetchUser(id) {
36
+ while(true) {
37
+ try { return await api.get(`/user/${id}`); }
38
+ catch { await sleep(100); } // Hundreds of containers doing this will execute a DDoSing attack on the API
39
+ }
40
+ }
41
+
42
+ // ✅ RESILIENT: Circuit Breaking / Fallbacks
43
+ const breaker = new CircuitBreaker(fetchUser, {
44
+ errorThresholdPercentage: 50, // If 50% of requests fail...
45
+ resetTimeout: 30000 // Open the circuit (stop sending requests) for 30s
46
+ });
47
+
48
+ breaker.fallback(() => ({ id: "cached-user", status: "degraded" }));
49
+ ```
50
+
51
+ **Heavy Mitigation Tactics:**
52
+ - **Shed Load:** Aggressively drop non-critical traffic (e.g., disable background syncs, temporarily ban aggressive scraping IPs).
53
+ - **Scale Out (Band-Aid):** If the memory leak is crashing nodes every 10 minutes, scale the nodes up 3x to buy yourself 30 minutes of runway to find the actual bug.
54
+
55
+ ---
56
+
57
+ ## 3. The Investigative Triage Routine
58
+
59
+ Once the bleeding is stopped (or if you are investigating a non-fatal anomaly), follow the data strictly:
60
+
61
+ 1. **Metrics (The "What"):** Look at the Dashboards. Did latency spike? Did CPU pin at 100%? Did Database active connections max out?
62
+ 2. **Traces (The "Where"):** Look at OpenTelemetry/Datadog traces. Which specific microservice is the bottleneck?
63
+ 3. **Logs (The "Why"):** Query the centralized logs (Splunk/Elastic/CloudWatch) exactly around the timestamp the trace spiked.
64
+
65
+ ---
66
+
67
+ ## 4. The Blameless Post-Mortem
68
+
69
+ Incident response does not end when the system recovers. It ends when the system is architected to survive the same failure tomorrow automatically.
70
+
71
+ **A Professional Post-Mortem Must Include:**
72
+ 1. **The Timeline:** Chronological factual representation of the event to the minute.
73
+ 2. **Root Cause Analysis (The 5 Whys):**
74
+ - *Why did the site go down?* DB exhausted connections.
75
+ - *Why did it exhaust?* The new background worker didn't pool connections.
76
+ - *Why did the worker deploy?* It bypassed CI tests for speed.
77
+ 3. **Action Items:** Tangible Jira tickets preventing recurrence (e.g., "Implement PgBouncer connection limits", "Enforce CI checks block on all branches").
78
+
79
+ ---
@@ -1,6 +1,6 @@
1
1
  # Antigravity Skills
2
2
 
3
- > **Guide to creating and using Skills in the Antigravity Kit**
3
+ **Guide to creating and using Skills in the Antigravity Kit**
4
4
 
5
5
  ---
6
6
 
@@ -16,9 +16,9 @@ While Antigravity's base models (like Gemini) are powerful generalists, they don
16
16
 
17
17
  Skills are folder-based packages. You can define these scopes based on your needs:
18
18
 
19
- | Scope | Path | Description |
20
- | ------------- | --------------------------------- | ------------------------------------ |
21
- | **Workspace** | `<workspace-root>/.agent/skills/` | Available only in a specific project |
19
+ |Scope|Path|Description|
20
+ |-------------|---------------------------------|------------------------------------|
21
+ |**Workspace**|`<workspace-root>/.agent/skills/`|Available only in a specific project|
22
22
 
23
23
  ### Skill Directory Structure
24
24
 
@@ -68,7 +68,7 @@ When reviewing code, follow these steps:
68
68
  - Suggest alternatives when possible
69
69
  ```
70
70
 
71
- > **Note**: The `SKILL.md` file contains metadata (name, description) at the top, followed by the instructions. The agent will only read the metadata and load the full instructions only when needed.
71
+ **Note**: The `SKILL.md` file contains metadata (name, description) at the top, followed by the instructions. The agent will only read the metadata and load the full instructions only when needed.
72
72
 
73
73
  ### Try it out
74
74
 
@@ -9,20 +9,17 @@ applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
9
9
 
10
10
  # Documentation Standards
11
11
 
12
- > Documentation is a product. It has users. Those users are often future-you,
13
- > three months from now, having completely forgotten how this works.
14
-
15
12
  ---
16
13
 
17
14
  ## Documentation Types and Their Audiences
18
15
 
19
- | Type | Audience | Goal |
16
+ |Type|Audience|Goal|
20
17
  |---|---|---|
21
- | README | New developer joining the project | "Get me running in 10 minutes" |
22
- | API docs | External integrator or frontend dev | "Tell me exactly what I can call and what I'll get back" |
23
- | Architecture decision (ADR) | Future engineer inheriting the codebase | "Tell me why it works this way, not just how" |
24
- | Code comment | Reviewer, maintainer | "Explain the non-obvious; skip the obvious" |
25
- | Runbook | On-call engineer at 2am | "Tell me what to do, not what to think about" |
18
+ |README|New developer joining the project|"Get me running in 10 minutes"|
19
+ |API docs|External integrator or frontend dev|"Tell me exactly what I can call and what I'll get back"|
20
+ |Architecture decision (ADR)|Future engineer inheriting the codebase|"Tell me why it works this way, not just how"|
21
+ |Code comment|Reviewer, maintainer|"Explain the non-obvious; skip the obvious"|
22
+ |Runbook|On-call engineer at 2am|"Tell me what to do, not what to think about"|
26
23
 
27
24
  ---
28
25
 
@@ -31,13 +28,13 @@ applies-to-model: gemini-2.5-pro, claude-3-7-sonnet
31
28
  The Tribunal Agent Kit supports 5 standard Agent Design Kit (ADK) base patterns.
32
29
  To build a skill using a robust, tested agent behavior model, add `pattern: [pattern-name]` to the YAML frontmatter of your `SKILL.md`.
33
30
 
34
- | Pattern | Value | When to use |
31
+ |Pattern|Value|When to use|
35
32
  |---|---|---|
36
- | **Inversion** | `pattern: inversion` | Forces the agent to interview the user (Socratic Gate) before acting. |
37
- | **Reviewer** | `pattern: reviewer` | Evaluates artifacts against a checklist and severity levels. |
38
- | **Tool Wrapper** | `pattern: tool-wrapper` | Strictly executes external CLI tools via provided documentation without guessing. |
39
- | **Generator** | `pattern: generator` | Produces structured output (docs, boilerplate) by filling a rigid template. |
40
- | **Pipeline** | `pattern: pipeline` | Executes sequential tasks with strict halting gates between steps. |
33
+ |**Inversion**|`pattern: inversion`|Forces the agent to interview the user (Socratic Gate) before acting.|
34
+ |**Reviewer**|`pattern: reviewer`|Evaluates artifacts against a checklist and severity levels.|
35
+ |**Tool Wrapper**|`pattern: tool-wrapper`|Strictly executes external CLI tools via provided documentation without guessing.|
36
+ |**Generator**|`pattern: generator`|Produces structured output (docs, boilerplate) by filling a rigid template.|
37
+ |**Pipeline**|`pattern: pipeline`|Executes sequential tasks with strict halting gates between steps.|
41
38
 
42
39
  *Templates defining the specific rules for these patterns live in `.agent/patterns/`.*
43
40
 
@@ -79,10 +76,10 @@ src/
79
76
 
80
77
  ## Environment Variables
81
78
 
82
- | Variable | Required | Description |
79
+ |Variable|Required|Description|
83
80
  |---|---|---|
84
- | DATABASE_URL | Yes | PostgreSQL connection string |
85
- | JWT_SECRET | Yes | Secret for signing JWTs |
81
+ |DATABASE_URL|Yes|PostgreSQL connection string|
82
+ |JWT_SECRET|Yes|Secret for signing JWTs|
86
83
 
87
84
  ## Running Tests
88
85
 
@@ -118,11 +115,11 @@ Creates a new user account.
118
115
 
119
116
  **Responses**
120
117
 
121
- | Status | Meaning | Body |
118
+ |Status|Meaning|Body|
122
119
  |---|---|---|
123
- | 201 | User created | `{ data: User }` |
124
- | 400 | Validation failed | `{ error: string, details: string[] }` |
125
- | 409 | Email already exists | `{ error: string }` |
120
+ |201|User created|`{ data: User }`|
121
+ |400|Validation failed|`{ error: string, details: string[] }`|
122
+ |409|Email already exists|`{ error: string }`|
126
123
 
127
124
  **Example**
128
125
  \`\`\`bash
@@ -221,45 +218,4 @@ VBC status: PENDING → VERIFIED
221
218
  Evidence: [link to terminal output, test result, or file diff]
222
219
  ```
223
220
 
224
-
225
-
226
221
  ---
227
-
228
- ## 🤖 LLM-Specific Traps
229
-
230
- AI coding assistants often fall into specific bad habits when dealing with this domain. These are strictly forbidden:
231
-
232
- 1. **Over-engineering:** Proposing complex abstractions or distributed systems when a simpler approach suffices.
233
- 2. **Hallucinated Libraries/Methods:** Using non-existent methods or packages. Always `// VERIFY` or check `package.json` / `requirements.txt`.
234
- 3. **Skipping Edge Cases:** Writing the "happy path" and ignoring error handling, timeouts, or data validation.
235
- 4. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
236
- 5. **Silent Degradation:** Catching and suppressing errors without logging or re-raising.
237
-
238
- ---
239
-
240
- ## 🏛️ Tribunal Integration (Anti-Hallucination)
241
-
242
- **Slash command: `/review` or `/tribunal-full`**
243
- **Active reviewers: `logic-reviewer` · `security-auditor`**
244
-
245
- ### ❌ Forbidden AI Tropes
246
-
247
- 1. **Blind Assumptions:** Never make an assumption without documenting it clearly with `// VERIFY: [reason]`.
248
- 2. **Silent Degradation:** Catching and suppressing errors without logging or handling.
249
- 3. **Context Amnesia:** Forgetting the user's constraints and offering generic advice instead of tailored solutions.
250
-
251
- ### ✅ Pre-Flight Self-Audit
252
-
253
- Review these questions before confirming output:
254
- ```
255
- ✅ Did I rely ONLY on real, verified tools and methods?
256
- ✅ Is this solution appropriately scoped to the user's constraints?
257
- ✅ Did I handle potential failure modes and edge cases?
258
- ✅ Have I avoided generic boilerplate that doesn't add value?
259
- ```
260
-
261
- ### 🛑 Verification-Before-Completion (VBC) Protocol
262
-
263
- **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
264
- - ❌ **Forbidden:** Declaring a task complete because the output "looks correct."
265
- - ✅ **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.
@@ -1,157 +1,123 @@
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
- # Edge Computing — Global Latency Mastery
11
-
12
- > The Edge is not just a faster server. It fundamentally changes the computing model.
13
- > You cannot put compute on the Edge and leave the database in Virginia. V8 isolates enforce new rules.
14
-
15
- ---
16
-
17
- ## 1. The Edge Model (V8 Isolates vs Node.js)
18
-
19
- Edge functions (Cloudflare Workers, Vercel Edge) run on V8 Isolates, NOT standard Node.js environments.
20
-
21
- **What This Means:**
22
- 1. Extremely fast cold starts (< 5ms) because there is no underlying OS process bootup.
23
- 2. Hard memory/time limits per request (e.g., 50ms CPU time max).
24
- 3. **NO NATIVE NODE MODULES.** You cannot use `fs`, `child_process`, or heavy native C++ binaries (e.g., standard `bcrypt`, `sharp`).
25
-
26
- ```typescript
27
- // ❌ BAD: Attempting to use Node native core modules
28
- import fs from "fs";
29
- import bcrypt from "bcrypt"; // Has C++ bindings, will instantly crash on V8 edge
30
-
31
- // ✅ GOOD: Utilizing standard Web APIs (Fetch, CryptoKey)
32
- const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(password));
33
- ```
34
-
35
- ---
36
-
37
- ## 2. Advanced Route Caching (Stale-While-Revalidate)
38
-
39
- The highest value proposition of the edge is intercepting requests *before* they cross the ocean.
40
-
41
- ```typescript
42
- // Standard Edge Proxy request handling
43
- export default {
44
- async fetch(request, env, ctx) {
45
- const url = new URL(request.url);
46
-
47
- // 1. Cache API responses at the edge
48
- const cache = caches.default;
49
- let response = await cache.match(request);
50
-
51
- if (!response) {
52
- // 2. Fetch Origin (The real server in Virginia)
53
- response = await fetch(request);
54
-
55
- // 3. Mutate Headers for SWR (Stale-While-Revalidate)
56
- // Instructs the Edge CDN: Serve the stale version instantly to the user,
57
- // but fire an async request in the background to update the cache for the next user.
58
- response = new Response(response.body, response);
59
- response.headers.set('Cache-Control', 's-maxage=60, stale-while-revalidate=86400');
60
-
61
- // 4. Store in Cache asynchronously (do not block the user response)
62
- ctx.waitUntil(cache.put(request, response.clone()));
63
- }
64
-
65
- return response;
66
- }
67
- };
68
- ```
69
-
70
- ---
71
-
72
- ## 3. Edge Data Locality (The Database Problem)
73
-
74
- 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.
75
-
76
- ### Solutions:
77
- 1. **Edge KV Stores**: (Cloudflare KV, Vercel KV) Eventually consistent, highly localized read-latency configs suitable for configuration routing, user sessions, or feature flags.
78
- 2. **Distributed SQLite**: (Cloudflare D1, Turso) Replicas distributed to edge nodes automatically.
79
- 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.
80
-
81
- ```typescript
82
- // Turso / LibSQL (Distributed Edge DB) usage:
83
- import { createClient } from "@libsql/client/web";
84
-
85
- const client = createClient({
86
- url: env.TURSO_DATABASE_URL,
87
- authToken: env.TURSO_AUTH_TOKEN,
88
- });
89
-
90
- const result = await client.execute("SELECT * FROM users WHERE id = ?", [userId]);
91
- ```
92
-
93
- ---
94
-
95
- ## 4. WebSockets at the Edge (Durable Objects)
96
-
97
- 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.
98
-
99
- ```typescript
100
- // A Durable Object serves as a single source of truth that users globally connect into
101
- export class ChatRoom {
102
- constructor(state, env) {
103
- this.state = state;
104
- this.sessions = [];
105
- }
106
-
107
- async fetch(request) {
108
- // Upgrade standard HTTP to WebSocket
109
- const pair = new WebSocketPair();
110
-
111
- // Accept connection, store it globally
112
- this.sessions.push(pair.server);
113
- pair.server.accept();
114
-
115
- // Handle incoming Chat messages
116
- pair.server.addEventListener("message", msg => {
117
- // Broadcast to all other connected edge users
118
- this.sessions.forEach(session => session.send(msg.data));
119
- });
120
-
121
- return new Response(null, { status: 101, webSocket: pair.client });
122
- }
123
- }
124
- ```
125
-
126
- ---
127
-
128
- ## 🤖 LLM-Specific Traps (Edge Computing)
129
-
130
- 1. **Node Core Assumption:** The AI imports `fs`, `path`, or `child_process` directly into Cloudflare Workers / Next.js Edge Middleware. V8 isolates lack file system access. Use native Web APIs (`ReadableStream`, `Blob`).
131
- 2. **Heavy Dependency Usage:** The AI imports massive NPM libraries (like `lodash` or `moment`) which crush the 1MB Edge script-size limits. Code for the Edge must be micro-optimized.
132
- 3. **TCP Database Connections:** Generating `const client = new Client({ connectionString: "postgres://..." })` inside an Edge runtime. The edge requires HTTP/WebSocket driven database architectures, or a managed connection pooler to prevent TCP exhaustion.
133
- 4. **State Fallacy:** Designing a global variable `let activeUsers = 0` inside an edge script and assuming it will sync. V8 Isolates boot and die globally in milliseconds. They share no memory.
134
- 5. **Ignoring `ctx.waitUntil`:** Mutating databases or logging metrics synchronously before returning the web response, slowing down the user. All side-effects on the Edge must be deferred via `ctx.waitUntil(promise)`.
135
- 6. **Non-Web Crypto:** Trying to use Node's `crypto` module. Standardize on the universally browser-compatible `crypto.subtle` Web Crypto API.
136
- 7. **Environment Variable Bleed:** Using `process.env.SECRET` instead of passing the standard `env` injection parameter into the V8 fetch handler.
137
- 8. **Missing CORS Origins:** Forgetting to dynamically append heavy CORS allow headers on the outgoing Edge proxy response manipulation.
138
- 9. **Synchronous Loops:** Designing a large `forEach` data map inside the worker request block, tripping the strict 50ms CPU execution limits resulting in generic 1102 Worker Errors.
139
- 10. **WebSocket Orphanages:** Opening a WebSocket inside a standard Edge function without bridging it into a Durable Object, causing the WS connection to terminate immediately when the isolate tears down.
140
-
141
- ---
142
-
143
- ## 🏛️ Tribunal Integration
144
-
145
- ### ✅ Pre-Flight Self-Audit
146
- ```
147
- ✅ Have I completely avoided using native Node.js core modules (`fs`, `path`, `crypto`)?
148
- ✅ Am I leveraging standard Web APIs (Fetch, Streams, Web Crypto)?
149
- ✅ Have database interactions utilized HTTP clients (or connection poolers) instead of direct TCP?
150
- ✅ Has `ctx.waitUntil()` been used for all background analytics/caching updates?
151
- ✅ Are environment variables injected via `env.VAR` rather than `process.env`?
152
- ✅ Is localized global state (chat rooms, live editing) explicitly deferred to Durable Objects?
153
- ✅ Did I define strict `s-maxage` and `stale-while-revalidate` directives for caching performance?
154
- ✅ Are third-party library imports audited for their V8 isolate compatibility footprint?
155
- ✅ Is JSON parsing happening inside `try/catch` to avoid 500ing early isolates?
156
- ✅ Did I avoid deploying massive >1MB bundle payloads to the Edge routing layer?
157
- ```
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
+ # Edge Computing — Global Latency Mastery
11
+
12
+ ---
13
+
14
+ ## 1. The Edge Model (V8 Isolates vs Node.js)
15
+
16
+ Edge functions (Cloudflare Workers, Vercel Edge) run on V8 Isolates, NOT standard Node.js environments.
17
+
18
+ **What This Means:**
19
+ 1. Extremely fast cold starts (< 5ms) because there is no underlying OS process bootup.
20
+ 2. Hard memory/time limits per request (e.g., 50ms CPU time max).
21
+ 3. **NO NATIVE NODE MODULES.** You cannot use `fs`, `child_process`, or heavy native C++ binaries (e.g., standard `bcrypt`, `sharp`).
22
+
23
+ ```typescript
24
+ // BAD: Attempting to use Node native core modules
25
+ import fs from "fs";
26
+ import bcrypt from "bcrypt"; // Has C++ bindings, will instantly crash on V8 edge
27
+
28
+ // GOOD: Utilizing standard Web APIs (Fetch, CryptoKey)
29
+ const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(password));
30
+ ```
31
+
32
+ ---
33
+
34
+ ## 2. Advanced Route Caching (Stale-While-Revalidate)
35
+
36
+ The highest value proposition of the edge is intercepting requests *before* they cross the ocean.
37
+
38
+ ```typescript
39
+ // Standard Edge Proxy request handling
40
+ export default {
41
+ async fetch(request, env, ctx) {
42
+ const url = new URL(request.url);
43
+
44
+ // 1. Cache API responses at the edge
45
+ const cache = caches.default;
46
+ let response = await cache.match(request);
47
+
48
+ if (!response) {
49
+ // 2. Fetch Origin (The real server in Virginia)
50
+ response = await fetch(request);
51
+
52
+ // 3. Mutate Headers for SWR (Stale-While-Revalidate)
53
+ // Instructs the Edge CDN: Serve the stale version instantly to the user,
54
+ // but fire an async request in the background to update the cache for the next user.
55
+ response = new Response(response.body, response);
56
+ response.headers.set('Cache-Control', 's-maxage=60, stale-while-revalidate=86400');
57
+
58
+ // 4. Store in Cache asynchronously (do not block the user response)
59
+ ctx.waitUntil(cache.put(request, response.clone()));
60
+ }
61
+
62
+ return response;
63
+ }
64
+ };
65
+ ```
66
+
67
+ ---
68
+
69
+ ## 3. Edge Data Locality (The Database Problem)
70
+
71
+ 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.
72
+
73
+ ### Solutions:
74
+ 1. **Edge KV Stores**: (Cloudflare KV, Vercel KV) Eventually consistent, highly localized read-latency configs suitable for configuration routing, user sessions, or feature flags.
75
+ 2. **Distributed SQLite**: (Cloudflare D1, Turso) Replicas distributed to edge nodes automatically.
76
+ 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.
77
+
78
+ ```typescript
79
+ // Turso / LibSQL (Distributed Edge DB) usage:
80
+ import { createClient } from "@libsql/client/web";
81
+
82
+ const client = createClient({
83
+ url: env.TURSO_DATABASE_URL,
84
+ authToken: env.TURSO_AUTH_TOKEN,
85
+ });
86
+
87
+ const result = await client.execute("SELECT * FROM users WHERE id = ?", [userId]);
88
+ ```
89
+
90
+ ---
91
+
92
+ ## 4. WebSockets at the Edge (Durable Objects)
93
+
94
+ 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.
95
+
96
+ ```typescript
97
+ // A Durable Object serves as a single source of truth that users globally connect into
98
+ export class ChatRoom {
99
+ constructor(state, env) {
100
+ this.state = state;
101
+ this.sessions = [];
102
+ }
103
+
104
+ async fetch(request) {
105
+ // Upgrade standard HTTP to WebSocket
106
+ const pair = new WebSocketPair();
107
+
108
+ // Accept connection, store it globally
109
+ this.sessions.push(pair.server);
110
+ pair.server.accept();
111
+
112
+ // Handle incoming Chat messages
113
+ pair.server.addEventListener("message", msg => {
114
+ // Broadcast to all other connected edge users
115
+ this.sessions.forEach(session => session.send(msg.data));
116
+ });
117
+
118
+ return new Response(null, { status: 101, webSocket: pair.client });
119
+ }
120
+ }
121
+ ```
122
+
123
+ ---