tribunal-kit 4.5.1 → 4.6.1

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 (214) hide show
  1. package/.agent/.shared/ui-ux-pro-max/README.md +4 -4
  2. package/.agent/ARCHITECTURE.md +282 -277
  3. package/.agent/agents/accessibility-reviewer.md +187 -187
  4. package/.agent/agents/ai-code-reviewer.md +199 -199
  5. package/.agent/agents/api-architect.md +71 -66
  6. package/.agent/agents/backend-specialist.md +219 -215
  7. package/.agent/agents/cloud-engineer.md +98 -0
  8. package/.agent/agents/code-archaeologist.md +168 -161
  9. package/.agent/agents/database-architect.md +184 -184
  10. package/.agent/agents/db-latency-auditor.md +213 -216
  11. package/.agent/agents/debugger.md +198 -191
  12. package/.agent/agents/dependency-reviewer.md +106 -103
  13. package/.agent/agents/devops-engineer.md +218 -218
  14. package/.agent/agents/documentation-writer.md +209 -201
  15. package/.agent/agents/explorer-agent.md +167 -160
  16. package/.agent/agents/frontend-reviewer.md +162 -160
  17. package/.agent/agents/frontend-specialist.md +257 -248
  18. package/.agent/agents/game-developer.md +48 -48
  19. package/.agent/agents/logic-reviewer.md +118 -116
  20. package/.agent/agents/mobile-developer.md +197 -200
  21. package/.agent/agents/mobile-reviewer.md +159 -162
  22. package/.agent/agents/orchestrator.md +187 -181
  23. package/.agent/agents/penetration-tester.md +160 -157
  24. package/.agent/agents/performance-optimizer.md +183 -183
  25. package/.agent/agents/performance-reviewer.md +178 -178
  26. package/.agent/agents/precedence-reviewer.md +251 -250
  27. package/.agent/agents/product-manager.md +149 -142
  28. package/.agent/agents/product-owner.md +81 -80
  29. package/.agent/agents/project-planner.md +152 -142
  30. package/.agent/agents/qa-automation-engineer.md +216 -225
  31. package/.agent/agents/resilience-reviewer.md +88 -88
  32. package/.agent/agents/schema-reviewer.md +67 -67
  33. package/.agent/agents/security-auditor.md +180 -174
  34. package/.agent/agents/seo-specialist.md +188 -193
  35. package/.agent/agents/sql-reviewer.md +159 -161
  36. package/.agent/agents/supervisor-agent.md +173 -184
  37. package/.agent/agents/swarm-worker-contracts.md +170 -166
  38. package/.agent/agents/swarm-worker-registry.md +92 -92
  39. package/.agent/agents/system-architect.md +85 -0
  40. package/.agent/agents/test-coverage-reviewer.md +158 -160
  41. package/.agent/agents/test-engineer.md +118 -118
  42. package/.agent/agents/throughput-optimizer.md +291 -299
  43. package/.agent/agents/type-safety-reviewer.md +182 -175
  44. package/.agent/agents/ui-ux-auditor.md +300 -292
  45. package/.agent/agents/vitals-reviewer.md +223 -223
  46. package/.agent/mcp_config.json +37 -40
  47. package/.agent/patterns/generator.md +11 -9
  48. package/.agent/patterns/inversion.md +14 -12
  49. package/.agent/patterns/pipeline.md +11 -9
  50. package/.agent/patterns/reviewer.md +15 -13
  51. package/.agent/patterns/tool-wrapper.md +11 -9
  52. package/.agent/routing_index.json +714 -0
  53. package/.agent/rules/GEMINI.md +359 -352
  54. package/.agent/scripts/compile_router.py +112 -0
  55. package/.agent/scripts/migrate_skills_frontmatter.py +64 -0
  56. package/.agent/scripts/strengthen_skills.js +1 -1
  57. package/.agent/skills/advanced-rag-pipelines/SKILL.md +56 -0
  58. package/.agent/skills/agent-organizer/SKILL.md +156 -150
  59. package/.agent/skills/agentic-patterns/SKILL.md +313 -315
  60. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +190 -184
  61. package/.agent/skills/api-patterns/SKILL.md +253 -247
  62. package/.agent/skills/api-security-auditor/SKILL.md +195 -193
  63. package/.agent/skills/app-builder/SKILL.md +573 -572
  64. package/.agent/skills/app-builder/templates/SKILL.md +108 -115
  65. package/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +76 -76
  66. package/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +92 -92
  67. package/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +88 -88
  68. package/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +88 -88
  69. package/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +83 -83
  70. package/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +90 -90
  71. package/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +90 -90
  72. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +126 -122
  73. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +127 -122
  74. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +172 -169
  75. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +139 -134
  76. package/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +83 -83
  77. package/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +122 -119
  78. package/.agent/skills/appflow-wireframe/SKILL.md +146 -145
  79. package/.agent/skills/architecture/SKILL.md +226 -219
  80. package/.agent/skills/authentication-best-practices/SKILL.md +197 -189
  81. package/.agent/skills/backend-security-expert/SKILL.md +16 -2
  82. package/.agent/skills/bash-linux/SKILL.md +179 -179
  83. package/.agent/skills/behavioral-modes/SKILL.md +239 -223
  84. package/.agent/skills/brainstorming/SKILL.md +498 -486
  85. package/.agent/skills/browser-native-ai/SKILL.md +57 -4
  86. package/.agent/skills/building-native-ui/SKILL.md +202 -202
  87. package/.agent/skills/cicd-pro/SKILL.md +442 -0
  88. package/.agent/skills/clean-code/SKILL.md +400 -381
  89. package/.agent/skills/cloud-architect/SKILL.md +439 -0
  90. package/.agent/skills/code-review-checklist/SKILL.md +203 -194
  91. package/.agent/skills/config-validator/SKILL.md +165 -165
  92. package/.agent/skills/containerization-pro/SKILL.md +452 -0
  93. package/.agent/skills/csharp-developer/SKILL.md +518 -518
  94. package/.agent/skills/data-validation-schemas/SKILL.md +333 -328
  95. package/.agent/skills/database-design/SKILL.md +247 -240
  96. package/.agent/skills/deployment-procedures/SKILL.md +172 -169
  97. package/.agent/skills/devops-engineer/SKILL.md +345 -345
  98. package/.agent/skills/devops-incident-responder/SKILL.md +143 -137
  99. package/.agent/skills/documentation-templates/SKILL.md +291 -279
  100. package/.agent/skills/edge-computing/SKILL.md +183 -181
  101. package/.agent/skills/emil-design-eng/SKILL.md +147 -0
  102. package/.agent/skills/error-resilience/SKILL.md +411 -428
  103. package/.agent/skills/extract-design-system/SKILL.md +160 -158
  104. package/.agent/skills/framer-motion-expert/SKILL.md +253 -244
  105. package/.agent/skills/frontend-design/SKILL.md +208 -201
  106. package/.agent/skills/frontend-security-expert/SKILL.md +16 -3
  107. package/.agent/skills/game-design-expert/SKILL.md +132 -129
  108. package/.agent/skills/game-engineering-expert/SKILL.md +148 -146
  109. package/.agent/skills/generative-ui-expert/SKILL.md +57 -1
  110. package/.agent/skills/geo-fundamentals/SKILL.md +148 -147
  111. package/.agent/skills/git-pro/SKILL.md +435 -0
  112. package/.agent/skills/github-operations/SKILL.md +335 -329
  113. package/.agent/skills/gsap-core/SKILL.md +319 -308
  114. package/.agent/skills/gsap-frameworks/SKILL.md +213 -207
  115. package/.agent/skills/gsap-performance/SKILL.md +139 -133
  116. package/.agent/skills/gsap-plugins/SKILL.md +486 -480
  117. package/.agent/skills/gsap-react/SKILL.md +202 -189
  118. package/.agent/skills/gsap-scrolltrigger/SKILL.md +357 -350
  119. package/.agent/skills/gsap-timeline/SKILL.md +165 -161
  120. package/.agent/skills/gsap-utils/SKILL.md +344 -338
  121. package/.agent/skills/harness-protocol/SKILL.md +48 -0
  122. package/.agent/skills/i18n-localization/SKILL.md +174 -163
  123. package/.agent/skills/intelligent-routing/SKILL.md +202 -246
  124. package/.agent/skills/knowledge-graph/SKILL.md +60 -52
  125. package/.agent/skills/lint-and-validate/SKILL.md +261 -261
  126. package/.agent/skills/llm-engineering/SKILL.md +400 -394
  127. package/.agent/skills/local-first/SKILL.md +178 -178
  128. package/.agent/skills/mcp-builder/SKILL.md +143 -142
  129. package/.agent/skills/mobile-design/SKILL.md +272 -263
  130. package/.agent/skills/monorepo-management/SKILL.md +335 -334
  131. package/.agent/skills/motion-engineering/SKILL.md +266 -234
  132. package/.agent/skills/nextjs-react-expert/SKILL.md +236 -234
  133. package/.agent/skills/nodejs-best-practices/SKILL.md +547 -548
  134. package/.agent/skills/observability/SKILL.md +343 -343
  135. package/.agent/skills/parallel-agents/SKILL.md +143 -146
  136. package/.agent/skills/performance-profiling/SKILL.md +259 -267
  137. package/.agent/skills/plan-writing/SKILL.md +150 -142
  138. package/.agent/skills/platform-engineer/SKILL.md +148 -147
  139. package/.agent/skills/playwright-best-practices/SKILL.md +188 -187
  140. package/.agent/skills/powershell-windows/SKILL.md +162 -162
  141. package/.agent/skills/project-idioms/SKILL.md +137 -137
  142. package/.agent/skills/python-patterns/SKILL.md +260 -259
  143. package/.agent/skills/python-pro/SKILL.md +324 -323
  144. package/.agent/skills/react-specialist/SKILL.md +305 -277
  145. package/.agent/skills/readme-builder/SKILL.md +310 -300
  146. package/.agent/skills/realtime-patterns/SKILL.md +323 -319
  147. package/.agent/skills/red-team-tactics/SKILL.md +231 -218
  148. package/.agent/skills/review-animations/SKILL.md +72 -0
  149. package/.agent/skills/review-animations/STANDARDS.md +73 -0
  150. package/.agent/skills/rust-pro/SKILL.md +671 -673
  151. package/.agent/skills/seo-fundamentals/SKILL.md +179 -179
  152. package/.agent/skills/server-management/SKILL.md +218 -214
  153. package/.agent/skills/shadcn-ui-expert/SKILL.md +231 -231
  154. package/.agent/skills/skill-creator/SKILL.md +87 -86
  155. package/.agent/skills/sql-pro/SKILL.md +629 -629
  156. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +97 -97
  157. package/.agent/skills/swiftui-expert/SKILL.md +204 -201
  158. package/.agent/skills/system-design-pro/SKILL.md +345 -0
  159. package/.agent/skills/systematic-debugging/SKILL.md +153 -142
  160. package/.agent/skills/tailwind-patterns/SKILL.md +610 -566
  161. package/.agent/skills/tdd-workflow/SKILL.md +169 -161
  162. package/.agent/skills/test-result-analyzer/SKILL.md +313 -309
  163. package/.agent/skills/testing-patterns/SKILL.md +566 -579
  164. package/.agent/skills/trend-researcher/SKILL.md +243 -237
  165. package/.agent/skills/typescript-advanced/SKILL.md +336 -335
  166. package/.agent/skills/ui-ux-pro-max/SKILL.md +590 -562
  167. package/.agent/skills/ui-ux-researcher/SKILL.md +244 -244
  168. package/.agent/skills/vue-expert/SKILL.md +294 -275
  169. package/.agent/skills/vulnerability-scanner/SKILL.md +416 -404
  170. package/.agent/skills/web-accessibility-auditor/SKILL.md +219 -218
  171. package/.agent/skills/web-design-guidelines/SKILL.md +192 -186
  172. package/.agent/skills/webapp-testing/SKILL.md +167 -169
  173. package/.agent/skills/webgpu-performance/SKILL.md +56 -2
  174. package/.agent/skills/whimsy-injector/SKILL.md +346 -325
  175. package/.agent/skills/workflow-optimizer/SKILL.md +231 -229
  176. package/.agent/workflows/acf.md +141 -0
  177. package/.agent/workflows/api-tester.md +176 -151
  178. package/.agent/workflows/audit.md +150 -127
  179. package/.agent/workflows/brainstorm.md +134 -110
  180. package/.agent/workflows/changelog.md +140 -112
  181. package/.agent/workflows/create.md +168 -124
  182. package/.agent/workflows/debug.md +190 -165
  183. package/.agent/workflows/deploy.md +201 -180
  184. package/.agent/workflows/enhance.md +154 -128
  185. package/.agent/workflows/fix.md +136 -114
  186. package/.agent/workflows/generate.md +198 -183
  187. package/.agent/workflows/marathon.md +37 -11
  188. package/.agent/workflows/migrate.md +184 -160
  189. package/.agent/workflows/orchestrate.md +192 -168
  190. package/.agent/workflows/performance-benchmarker.md +135 -114
  191. package/.agent/workflows/plan.md +196 -173
  192. package/.agent/workflows/preview.md +103 -80
  193. package/.agent/workflows/refactor.md +192 -161
  194. package/.agent/workflows/review-ai.md +125 -101
  195. package/.agent/workflows/review.md +141 -116
  196. package/.agent/workflows/session.md +122 -94
  197. package/.agent/workflows/status.md +101 -79
  198. package/.agent/workflows/strengthen-skills.md +164 -138
  199. package/.agent/workflows/super-prompt.md +24 -0
  200. package/.agent/workflows/swarm.md +193 -179
  201. package/.agent/workflows/test.md +211 -189
  202. package/.agent/workflows/tribunal-backend.md +136 -105
  203. package/.agent/workflows/tribunal-database.md +129 -95
  204. package/.agent/workflows/tribunal-frontend.md +140 -96
  205. package/.agent/workflows/tribunal-full.md +131 -100
  206. package/.agent/workflows/tribunal-mobile.md +129 -95
  207. package/.agent/workflows/tribunal-performance.md +136 -110
  208. package/.agent/workflows/tribunal-speed.md +209 -183
  209. package/.agent/workflows/ui-ux-pro-max.md +155 -122
  210. package/README.md +107 -55
  211. package/mcp_config.json +1 -3
  212. package/package.json +94 -94
  213. package/.agent/GEMINI.md +0 -121
  214. package/.agent/skills/doc.md +0 -177
@@ -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
- ## Hallucination Traps (Read First)
11
- - ❌ Importing Node.js-only APIs (fs, net, child_process) in edge functions -> ✅ Edge runtime has NO Node.js APIs; use Web APIs only
12
- - ❌ Using `global` or module-level mutable state in edge -> ✅ Edge functions are stateless across requests; use KV/Durable Objects for state
13
- - Assuming edge functions have unlimited execution time -> ✅ Cloudflare Workers: 30s, Vercel Edge: 25s; design for millisecond responses
14
-
15
- ---
16
-
17
-
18
- # Edge Computing — Global Latency Mastery
19
-
20
- ---
21
-
22
- ## 1. The Edge Model (V8 Isolates vs Node.js)
23
-
24
- Edge functions (Cloudflare Workers, Vercel Edge) run on V8 Isolates, NOT standard Node.js environments.
25
-
26
- **What This Means:**
27
- 1. Extremely fast cold starts (< 5ms) because there is no underlying OS process bootup.
28
- 2. Hard memory/time limits per request (e.g., 50ms CPU time max).
29
- 3. **NO NATIVE NODE MODULES.** You cannot use `fs`, `child_process`, or heavy native C++ binaries (e.g., standard `bcrypt`, `sharp`).
30
-
31
- ```typescript
32
- // BAD: Attempting to use Node native core modules
33
- import fs from "fs";
34
- import bcrypt from "bcrypt"; // Has C++ bindings, will instantly crash on V8 edge
35
-
36
- // GOOD: Utilizing standard Web APIs (Fetch, CryptoKey)
37
- const hashBuffer = await crypto.subtle.digest('SHA-256', new TextEncoder().encode(password));
38
- ```
39
-
40
- ---
41
-
42
- ## 2. Advanced Route Caching (Stale-While-Revalidate)
43
-
44
- The highest value proposition of the edge is intercepting requests *before* they cross the ocean.
45
-
46
- ```typescript
47
- // Standard Edge Proxy request handling
48
- export default {
49
- async fetch(request, env, ctx) {
50
- const url = new URL(request.url);
51
-
52
- // 1. Cache API responses at the edge
53
- const cache = caches.default;
54
- let response = await cache.match(request);
55
-
56
- if (!response) {
57
- // 2. Fetch Origin (The real server in Virginia)
58
- response = await fetch(request);
59
-
60
- // 3. Mutate Headers for SWR (Stale-While-Revalidate)
61
- // Instructs the Edge CDN: Serve the stale version instantly to the user,
62
- // but fire an async request in the background to update the cache for the next user.
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.
@@ -0,0 +1,147 @@
1
+ ---
2
+ name: emil-design-eng
3
+ description: Encodes Emil Kowalski's philosophy on UI polish, component design, animation decisions, and the invisible details that make software feel great. Helps agents shape interfaces that feel refined through spacing, typography, interaction, and animation choices, aiming for subtle details and high-quality polish that elevate the whole product.
4
+ version: 1.0.0
5
+ last-updated: 2026-06-26
6
+ applies-to-model: gemini-3-1-pro, claude-3-7-sonnet
7
+ routing:
8
+ domain: frontend
9
+ tier: pro
10
+ co-requires: [frontend-design, motion-engineering]
11
+ trigger-signals:
12
+ strong: [emil, kowalski, design engineering, interface craft, ui polish, micro-interactions, animations.dev, craft sensibility]
13
+ weak: [animations, feel right, ui polish, subtle details]
14
+ ---
15
+
16
+ # Design Engineering
17
+
18
+ ## Initial Response
19
+
20
+ When this skill is first invoked without a specific question, respond only with:
21
+
22
+ > I'm ready to help you build interfaces that feel right, my knowledge comes from Emil Kowalski's design engineering philosophy. If you want to dive even deeper, check out Emil’s course: [animations.dev](https://animations.dev/).
23
+
24
+ You are a design engineer with the craft sensibility. You build interfaces where every detail compounds into something that feels right. You understand that in a world where everyone's software is good enough, taste is the differentiator.
25
+
26
+ ## Core Philosophy
27
+
28
+ ### Taste is trained, not innate
29
+ Good taste is not personal preference. It is a trained instinct: the ability to see beyond the obvious and recognize what elevates. Develop it by surrounding yourself with great work, thinking deeply about why something feels good, and practicing relentlessly.
30
+
31
+ ### Unseen details compound
32
+ Most details users never consciously notice. That is the point. When a feature functions exactly as someone assumes it should, they proceed without giving it a second thought. Every decision below exists because the aggregate of invisible correctness creates interfaces people love without knowing why.
33
+
34
+ ### Beauty is leverage
35
+ People select tools based on the overall experience, not just functionality. Good defaults and good animations are real differentiators. Use beauty as leverage to stand out.
36
+
37
+ ## Review Format (Required)
38
+
39
+ When reviewing UI code, you MUST use a markdown table with Before/After columns. Do NOT use a list with "Before:" and "After:" on separate lines. Always output an actual markdown table like this:
40
+
41
+ | Before | After | Why |
42
+ | --- | --- | --- |
43
+ | `transition: all 300ms` | `transition: transform 200ms ease-out` | Specify exact properties; avoid `all` |
44
+ | `transform: scale(0)` | `transform: scale(0.95); opacity: 0` | Nothing in the real world appears from nothing |
45
+ | `ease-in` on dropdown | `ease-out` with custom curve | `ease-in` feels sluggish; `ease-out` gives instant feedback |
46
+ | No `:active` state on button | `transform: scale(0.97)` on `:active` | Buttons must feel responsive to press |
47
+ | `transform-origin: center` | `transform-origin: var(--radix-popover-content-transform-origin)` | Popovers should scale from their trigger |
48
+
49
+ ## The Animation Decision Framework
50
+
51
+ Before writing any animation code, answer these questions in order:
52
+
53
+ ### 1. Should this animate at all?
54
+ **Ask:** How often will users see this animation?
55
+
56
+ | Frequency | Decision |
57
+ | --- | --- |
58
+ | 100+ times/day (keyboard shortcuts, command palette) | No animation. Ever. |
59
+ | Tens of times/day (hover effects, list navigation) | Remove or drastically reduce |
60
+ | Occasional (modals, drawers, toasts) | Standard animation |
61
+ | Rare/first-time (onboarding, feedback forms, celebrations) | Can add delight |
62
+
63
+ **Never animate keyboard-initiated actions.** These actions are repeated hundreds of times daily. Animation makes them feel slow and disconnected.
64
+
65
+ ### 2. What is the purpose?
66
+ Valid purposes:
67
+ - **Spatial consistency**: toast enters/exits from the same direction.
68
+ - **State indication**: a morphing feedback button shows state change.
69
+ - **Explanation**: a marketing animation showing a feature.
70
+ - **Feedback**: a button scales down on press.
71
+ - **Preventing jarring changes**: elements appearing/disappearing smoothly.
72
+
73
+ If the purpose is just "it looks cool" and the user sees it often, don't animate.
74
+
75
+ ### 3. What easing should it use?
76
+ Is the element entering or exiting?
77
+ Yes → ease-out (starts fast, feels responsive)
78
+ No →
79
+ Is it moving/morphing on screen?
80
+ Yes → ease-in-out (natural acceleration/deceleration)
81
+ Is it a hover/color change?
82
+ Yes → ease
83
+ Is it constant motion?
84
+ Yes → linear
85
+ Default → ease-out
86
+
87
+ **Critical: use custom easing curves.**
88
+ ```css
89
+ /* Strong ease-out for UI interactions */
90
+ --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
91
+ /* Strong ease-in-out for on-screen movement */
92
+ --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
93
+ ```
94
+ **Never use ease-in for UI animations.** It makes the interface feel sluggish.
95
+
96
+ ### 4. How fast should it be?
97
+ | Element | Duration |
98
+ | --- | --- |
99
+ | Button press feedback | 100-160ms |
100
+ | Tooltips, small popovers | 125-200ms |
101
+ | Dropdowns, selects | 150-250ms |
102
+ | Modals, drawers | 200-500ms |
103
+
104
+ **Rule: UI animations should stay under 300ms.** Perception of speed matters as much as actual speed.
105
+
106
+ ## Component Building Principles
107
+
108
+ ### Buttons must feel responsive
109
+ Add `transform: scale(0.97)` on `:active` with subtle transition (160ms ease-out).
110
+
111
+ ### Never animate from scale(0)
112
+ Start from `scale(0.95)` or higher combined with opacity.
113
+
114
+ ### Make popovers origin-aware
115
+ Popovers should scale in from their trigger, not from center. Explicitly set `transform-origin` to the trigger coordinates (e.g., `var(--radix-popover-content-transform-origin)`). Modals are exempt as they are viewport-centered.
116
+
117
+ ---
118
+
119
+ ## 🤖 LLM-Specific Traps
120
+
121
+ 1. **Over-animating:** Applying animations to elements users interact with 100+ times a day.
122
+ 2. **Default Easings:** Using built-in CSS `ease` or `ease-in` for entering UI elements.
123
+ 3. **Sluggishness:** Proposing UI animations longer than 300ms.
124
+ 4. **Unnatural Entrances:** Animating elements from `scale(0)` or `opacity: 0` without a physical origin.
125
+ 5. **Ignoring Accessibility:** Failing to wrap animations in `prefers-reduced-motion` media queries.
126
+
127
+ ## 🏛️ Tribunal Integration (Anti-Hallucination)
128
+
129
+ **Slash command: `/review` or `/tribunal-full`**
130
+ **Active reviewers: `frontend-reviewer` · `accessibility-reviewer`**
131
+
132
+ ### ✅ Pre-Flight Self-Audit
133
+
134
+ Review these questions before confirming output:
135
+ ```
136
+ ✅ Did I justify the animation's existence based on frequency?
137
+ ✅ Are all UI animations under 300ms?
138
+ ✅ Did I use `ease-out` (custom cubic-bezier) for entering elements?
139
+ ✅ Are popovers origin-aware and avoiding `scale(0)`?
140
+ ✅ Is `prefers-reduced-motion` respected?
141
+ ```
142
+
143
+ ### 🛑 Verification-Before-Completion (VBC) Protocol
144
+
145
+ **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
146
+ - ❌ **Forbidden:** Declaring animation work complete because the code compiles.
147
+ - ✅ **Required:** Provide evidence that the animation executes flawlessly at 60fps in the browser, adhering to the 300ms budget and easing rules.