tribunal-kit 6.0.0 → 7.0.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 (353) hide show
  1. package/.agent/.manifest.json +78 -0
  2. package/.agent/ARCHITECTURE.md +19 -241
  3. package/.agent/agents/accessibility-reviewer.md +23 -16
  4. package/.agent/agents/ai-code-reviewer.md +25 -21
  5. package/.agent/agents/anti-pattern-reviewer.md +12 -7
  6. package/.agent/agents/api-architect.md +1 -0
  7. package/.agent/agents/backend-specialist.md +23 -22
  8. package/.agent/agents/cloud-engineer.md +1 -0
  9. package/.agent/agents/code-archaeologist.md +1 -0
  10. package/.agent/agents/complexity-reviewer.md +10 -7
  11. package/.agent/agents/database-architect.md +3 -2
  12. package/.agent/agents/db-latency-auditor.md +6 -2
  13. package/.agent/agents/debugger.md +3 -2
  14. package/.agent/agents/dependency-reviewer.md +1 -0
  15. package/.agent/agents/devops-engineer.md +9 -8
  16. package/.agent/agents/documentation-writer.md +6 -5
  17. package/.agent/agents/explorer-agent.md +1 -0
  18. package/.agent/agents/frontend-reviewer.md +21 -17
  19. package/.agent/agents/frontend-specialist.md +23 -20
  20. package/.agent/agents/game-developer.md +1 -0
  21. package/.agent/agents/interaction-reviewer.md +10 -5
  22. package/.agent/agents/logic-reviewer.md +3 -0
  23. package/.agent/agents/minimalist-reviewer.md +6 -0
  24. package/.agent/agents/mobile-developer.md +7 -6
  25. package/.agent/agents/mobile-reviewer.md +14 -13
  26. package/.agent/agents/orchestrator.md +3 -0
  27. package/.agent/agents/penetration-tester.md +1 -0
  28. package/.agent/agents/performance-optimizer.md +6 -5
  29. package/.agent/agents/performance-reviewer.md +6 -6
  30. package/.agent/agents/pipeline-reviewer.md +144 -0
  31. package/.agent/agents/precedence-reviewer.md +1 -0
  32. package/.agent/agents/product-manager.md +1 -0
  33. package/.agent/agents/product-owner.md +1 -0
  34. package/.agent/agents/product-reviewer.md +12 -7
  35. package/.agent/agents/project-planner.md +3 -0
  36. package/.agent/agents/qa-automation-engineer.md +50 -43
  37. package/.agent/agents/resilience-reviewer.md +1 -0
  38. package/.agent/agents/schema-reviewer.md +1 -0
  39. package/.agent/agents/security-auditor.md +24 -24
  40. package/.agent/agents/seo-specialist.md +33 -23
  41. package/.agent/agents/sql-reviewer.md +5 -4
  42. package/.agent/agents/supervisor-agent.md +12 -2
  43. package/.agent/agents/swarm-worker-contracts.md +13 -13
  44. package/.agent/agents/swarm-worker-registry.md +51 -51
  45. package/.agent/agents/system-architect.md +1 -0
  46. package/.agent/agents/test-coverage-reviewer.md +25 -22
  47. package/.agent/agents/test-engineer.md +12 -11
  48. package/.agent/agents/throughput-optimizer.md +45 -40
  49. package/.agent/agents/type-safety-reviewer.md +5 -4
  50. package/.agent/agents/ui-ux-auditor.md +6 -4
  51. package/.agent/agents/ui-visual-auditor.md +3 -0
  52. package/.agent/agents/ux-reviewer.md +11 -6
  53. package/.agent/agents/visual-reviewer.md +11 -6
  54. package/.agent/agents/vitals-reviewer.md +5 -4
  55. package/.agent/history/memory/.memory.idx +3716 -1
  56. package/.agent/history/memory/MEMORY.md +246 -1
  57. package/.agent/mcp_config.json +1 -6
  58. package/.agent/routing_index.json +2034 -263
  59. package/.agent/rules/GEMINI.md +12 -10
  60. package/.agent/rules/GEMINI_PLANNER.md +19 -21
  61. package/.agent/scripts/_colors.js +52 -54
  62. package/.agent/scripts/_utils.js +52 -53
  63. package/.agent/scripts/auto_preview.js +39 -43
  64. package/.agent/scripts/bundle_analyzer.js +47 -60
  65. package/.agent/scripts/case_law_manager.js +200 -294
  66. package/.agent/scripts/checklist.js +73 -94
  67. package/.agent/scripts/cicd_validator.js +305 -0
  68. package/.agent/scripts/compile_router.py +4 -111
  69. package/.agent/scripts/context_broker.js +317 -412
  70. package/.agent/scripts/contract_engine.js +402 -0
  71. package/.agent/scripts/dependency_analyzer.js +112 -124
  72. package/.agent/scripts/graph_builder.js +75 -103
  73. package/.agent/scripts/graph_visualizer.js +10 -12
  74. package/.agent/scripts/graph_zoom.js +38 -55
  75. package/.agent/scripts/guardrail_engine.js +195 -145
  76. package/.agent/scripts/impact_classifier.js +55 -30
  77. package/.agent/scripts/inner_loop_validator.js +108 -159
  78. package/.agent/scripts/integrity_manifest.js +59 -67
  79. package/.agent/scripts/lint_runner.js +65 -75
  80. package/.agent/scripts/marathon_harness.js +131 -208
  81. package/.agent/scripts/migrate_skills_frontmatter.py +4 -63
  82. package/.agent/scripts/minify_context.js +29 -33
  83. package/.agent/scripts/minimal_change_engine.js +95 -87
  84. package/.agent/scripts/mutation_runner.js +46 -62
  85. package/.agent/scripts/pipeline_engine.js +320 -209
  86. package/.agent/scripts/prompt_compiler.js +118 -93
  87. package/.agent/scripts/schema_validator.js +73 -121
  88. package/.agent/scripts/security_scan.js +88 -117
  89. package/.agent/scripts/session_manager.js +52 -69
  90. package/.agent/scripts/signal_detector.js +24 -22
  91. package/.agent/scripts/skill_evolution.js +184 -245
  92. package/.agent/scripts/skill_integrator.js +35 -48
  93. package/.agent/scripts/socratic_gate_policy.js +15 -12
  94. package/.agent/scripts/strengthen_skills.js +29 -33
  95. package/.agent/scripts/swarm_dispatcher.js +120 -151
  96. package/.agent/scripts/test_runner.js +54 -56
  97. package/.agent/scripts/token_budget_broker.js +9 -7
  98. package/.agent/scripts/trace_engine.js +126 -0
  99. package/.agent/scripts/verify_all.js +76 -93
  100. package/.agent/scripts/visual_audit.js +16 -21
  101. package/.agent/skill_topic_map.json +237 -0
  102. package/.agent/skills/12-principles-of-animation/SKILL.md +7 -0
  103. package/.agent/skills/60fps-animation/SKILL.md +7 -0
  104. package/.agent/skills/accessible-animation/SKILL.md +5 -1
  105. package/.agent/skills/adapt/SKILL.md +7 -1
  106. package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -0
  107. package/.agent/skills/agent-organizer/SKILL.md +1 -0
  108. package/.agent/skills/agentic-patterns/SKILL.md +33 -25
  109. package/.agent/skills/agentic-workflows-2026/SKILL.md +80 -0
  110. package/.agent/skills/ai-app-hardening/SKILL.md +59 -0
  111. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +7 -6
  112. package/.agent/skills/animation-on-scroll/SKILL.md +24 -15
  113. package/.agent/skills/animation-systems/SKILL.md +11 -10
  114. package/.agent/skills/antfu-conventions/SKILL.md +7 -2
  115. package/.agent/skills/api-patterns/SKILL.md +14 -10
  116. package/.agent/skills/api-security-auditor/SKILL.md +15 -14
  117. package/.agent/skills/app-builder/SKILL.md +1 -0
  118. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +2 -2
  119. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
  120. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +12 -12
  121. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +3 -3
  122. package/.agent/skills/apple-design/SKILL.md +8 -7
  123. package/.agent/skills/architecture/SKILL.md +3 -2
  124. package/.agent/skills/audit-and-fix/SKILL.md +8 -5
  125. package/.agent/skills/authentication-best-practices/SKILL.md +9 -8
  126. package/.agent/skills/backend-security-expert/SKILL.md +1 -0
  127. package/.agent/skills/baseline-ui/SKILL.md +8 -7
  128. package/.agent/skills/bash-linux/SKILL.md +1 -0
  129. package/.agent/skills/behavioral-modes/SKILL.md +1 -0
  130. package/.agent/skills/better-colors/SKILL.md +11 -7
  131. package/.agent/skills/better-typography/SKILL.md +30 -16
  132. package/.agent/skills/better-ui/SKILL.md +17 -10
  133. package/.agent/skills/bolder/SKILL.md +6 -0
  134. package/.agent/skills/brainstorming/SKILL.md +6 -4
  135. package/.agent/skills/browser-native-ai/SKILL.md +5 -4
  136. package/.agent/skills/build-primitive/SKILL.md +5 -0
  137. package/.agent/skills/building-native-ui/SKILL.md +1 -0
  138. package/.agent/skills/cicd-pro/SKILL.md +2 -1
  139. package/.agent/skills/clarify/SKILL.md +19 -14
  140. package/.agent/skills/clean-code/SKILL.md +16 -15
  141. package/.agent/skills/cloud-architect/SKILL.md +1 -0
  142. package/.agent/skills/cobejs/SKILL.md +7 -9
  143. package/.agent/skills/code-review-checklist/SKILL.md +1 -0
  144. package/.agent/skills/codebase-design/SKILL.md +7 -2
  145. package/.agent/skills/colorize/SKILL.md +8 -3
  146. package/.agent/skills/compact-landing/SKILL.md +8 -3
  147. package/.agent/skills/company-logos/SKILL.md +6 -0
  148. package/.agent/skills/config-validator/SKILL.md +10 -9
  149. package/.agent/skills/containerization-pro/SKILL.md +6 -5
  150. package/.agent/skills/context-engineering-pro/SKILL.md +70 -0
  151. package/.agent/skills/create-design-md/SKILL.md +13 -5
  152. package/.agent/skills/critique/SKILL.md +10 -8
  153. package/.agent/skills/csharp-developer/SKILL.md +1 -0
  154. package/.agent/skills/data-validation-schemas/SKILL.md +28 -23
  155. package/.agent/skills/database-design/SKILL.md +2 -1
  156. package/.agent/skills/delight/SKILL.md +6 -0
  157. package/.agent/skills/deployment-procedures/SKILL.md +2 -1
  158. package/.agent/skills/design-lab/SKILL.md +5 -0
  159. package/.agent/skills/devops-engineer/SKILL.md +3 -2
  160. package/.agent/skills/devops-incident-responder/SKILL.md +2 -1
  161. package/.agent/skills/diagnosing-bugs/SKILL.md +12 -2
  162. package/.agent/skills/distill/SKILL.md +7 -2
  163. package/.agent/skills/documentation-templates/SKILL.md +3 -2
  164. package/.agent/skills/domain-modeling/SKILL.md +12 -4
  165. package/.agent/skills/duckdb-analytical-sql/SKILL.md +59 -0
  166. package/.agent/skills/edge-ai-mobile/SKILL.md +50 -0
  167. package/.agent/skills/edge-computing/SKILL.md +9 -8
  168. package/.agent/skills/emil-design-eng/SKILL.md +43 -27
  169. package/.agent/skills/error-resilience/SKILL.md +34 -16
  170. package/.agent/skills/expo-router-v4/SKILL.md +81 -0
  171. package/.agent/skills/extract-design-system/SKILL.md +12 -11
  172. package/.agent/skills/fabel-protocol/SKILL.md +24 -17
  173. package/.agent/skills/fixing-accessibility/SKILL.md +23 -16
  174. package/.agent/skills/fixing-metadata/SKILL.md +24 -13
  175. package/.agent/skills/fixing-motion-performance/SKILL.md +7 -5
  176. package/.agent/skills/framer-motion-expert/SKILL.md +29 -15
  177. package/.agent/skills/frontend-design/SKILL.md +21 -13
  178. package/.agent/skills/frontend-security-expert/SKILL.md +1 -0
  179. package/.agent/skills/game-design-expert/SKILL.md +1 -0
  180. package/.agent/skills/game-engineering-expert/SKILL.md +1 -0
  181. package/.agent/skills/generative-ui-expert/SKILL.md +3 -2
  182. package/.agent/skills/geo-fundamentals/SKILL.md +2 -1
  183. package/.agent/skills/git-pro/SKILL.md +10 -9
  184. package/.agent/skills/github-operations/SKILL.md +2 -1
  185. package/.agent/skills/gpt-taste/SKILL.md +7 -0
  186. package/.agent/skills/gsap-core/SKILL.md +26 -22
  187. package/.agent/skills/gsap-frameworks/SKILL.md +6 -5
  188. package/.agent/skills/gsap-performance/SKILL.md +4 -3
  189. package/.agent/skills/gsap-plugins/SKILL.md +34 -33
  190. package/.agent/skills/gsap-react/SKILL.md +9 -8
  191. package/.agent/skills/gsap-scrolltrigger/SKILL.md +34 -33
  192. package/.agent/skills/gsap-timeline/SKILL.md +18 -15
  193. package/.agent/skills/gsap-utils/SKILL.md +25 -24
  194. package/.agent/skills/harden/SKILL.md +9 -3
  195. package/.agent/skills/harness-protocol/SKILL.md +1 -0
  196. package/.agent/skills/i18n-localization/SKILL.md +10 -9
  197. package/.agent/skills/impeccable/SKILL.md +5 -0
  198. package/.agent/skills/improve-codebase-architecture/SKILL.md +10 -5
  199. package/.agent/skills/improve-ui/SKILL.md +12 -5
  200. package/.agent/skills/intelligent-routing/SKILL.md +7 -6
  201. package/.agent/skills/knowledge-graph/SKILL.md +1 -0
  202. package/.agent/skills/landing-page/SKILL.md +1 -0
  203. package/.agent/skills/lint-and-validate/SKILL.md +9 -4
  204. package/.agent/skills/llm-engineering/SKILL.md +55 -54
  205. package/.agent/skills/local-first/SKILL.md +20 -19
  206. package/.agent/skills/local-first-architecture/SKILL.md +6 -1
  207. package/.agent/skills/lottie-animation/SKILL.md +7 -3
  208. package/.agent/skills/marquee-loop/SKILL.md +1 -0
  209. package/.agent/skills/masked-reveal/SKILL.md +17 -4
  210. package/.agent/skills/mcp-builder/SKILL.md +13 -10
  211. package/.agent/skills/micro-interaction/SKILL.md +20 -5
  212. package/.agent/skills/mobile-design/SKILL.md +26 -15
  213. package/.agent/skills/monorepo-management/SKILL.md +3 -2
  214. package/.agent/skills/morphing-icons/SKILL.md +16 -6
  215. package/.agent/skills/motion-engineering/SKILL.md +19 -15
  216. package/.agent/skills/nextjs-react-expert/SKILL.md +26 -21
  217. package/.agent/skills/nodejs-best-practices/SKILL.md +89 -76
  218. package/.agent/skills/observability/SKILL.md +45 -44
  219. package/.agent/skills/opentelemetry-observability/SKILL.md +59 -0
  220. package/.agent/skills/page-transition-animation/SKILL.md +6 -3
  221. package/.agent/skills/parallel-agents/SKILL.md +7 -2
  222. package/.agent/skills/performance-profiling/SKILL.md +24 -13
  223. package/.agent/skills/plan-writing/SKILL.md +1 -0
  224. package/.agent/skills/platform-engineer/SKILL.md +3 -2
  225. package/.agent/skills/platform-engineering-opentofu/SKILL.md +68 -0
  226. package/.agent/skills/playwright-ai-e2e/SKILL.md +60 -0
  227. package/.agent/skills/playwright-best-practices/SKILL.md +29 -28
  228. package/.agent/skills/polish/SKILL.md +13 -12
  229. package/.agent/skills/powershell-windows/SKILL.md +1 -0
  230. package/.agent/skills/pricing-page/SKILL.md +8 -3
  231. package/.agent/skills/product-aware-heuristics/SKILL.md +122 -72
  232. package/.agent/skills/progressive-blur/SKILL.md +9 -4
  233. package/.agent/skills/project-idioms/SKILL.md +1 -0
  234. package/.agent/skills/property-based-testing/SKILL.md +58 -0
  235. package/.agent/skills/python-patterns/SKILL.md +1 -0
  236. package/.agent/skills/python-pro/SKILL.md +1 -0
  237. package/.agent/skills/quieter/SKILL.md +6 -0
  238. package/.agent/skills/react-doctor/SKILL.md +6 -0
  239. package/.agent/skills/react-specialist/SKILL.md +32 -28
  240. package/.agent/skills/readme-builder/SKILL.md +1 -0
  241. package/.agent/skills/realtime-patterns/SKILL.md +34 -33
  242. package/.agent/skills/red-team-tactics/SKILL.md +1 -0
  243. package/.agent/skills/redesign-skill/SKILL.md +6 -0
  244. package/.agent/skills/review-animations/SKILL.md +5 -2
  245. package/.agent/skills/review-animations/STANDARDS.md +37 -23
  246. package/.agent/skills/rust-pro/SKILL.md +1 -0
  247. package/.agent/skills/seo-fundamentals/SKILL.md +4 -3
  248. package/.agent/skills/server-management/SKILL.md +1 -0
  249. package/.agent/skills/shadcn-ui-expert/SKILL.md +28 -22
  250. package/.agent/skills/shape/SKILL.md +9 -2
  251. package/.agent/skills/skill-creator/SKILL.md +1 -0
  252. package/.agent/skills/soft-skill/SKILL.md +6 -0
  253. package/.agent/skills/sounds-on-the-web/SKILL.md +1 -0
  254. package/.agent/skills/sql-pro/SKILL.md +1 -0
  255. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -0
  256. package/.agent/skills/svg-animation/SKILL.md +16 -7
  257. package/.agent/skills/swiftui-expert/SKILL.md +1 -0
  258. package/.agent/skills/swiss-design/SKILL.md +5 -0
  259. package/.agent/skills/system-design-pro/SKILL.md +1 -0
  260. package/.agent/skills/systematic-debugging/SKILL.md +1 -0
  261. package/.agent/skills/tailwind-patterns/SKILL.md +25 -11
  262. package/.agent/skills/taste-skill/SKILL.md +6 -0
  263. package/.agent/skills/tdd-workflow/SKILL.md +5 -0
  264. package/.agent/skills/test-result-analyzer/SKILL.md +1 -0
  265. package/.agent/skills/testing-patterns/SKILL.md +123 -115
  266. package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +5 -0
  267. package/.agent/skills/thinking-protocol/SKILL.md +3 -0
  268. package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +9 -8
  269. package/.agent/skills/transitions-dev/SKILL.md +19 -6
  270. package/.agent/skills/trend-researcher/SKILL.md +1 -0
  271. package/.agent/skills/typescript-advanced/SKILL.md +23 -18
  272. package/.agent/skills/typeset/SKILL.md +10 -1
  273. package/.agent/skills/ui-reasoning-engine/SKILL.md +67 -48
  274. package/.agent/skills/ui-skill-packs/SKILL.md +6 -1
  275. package/.agent/skills/ui-skills-root/SKILL.md +39 -38
  276. package/.agent/skills/ui-ux-pro-max/SKILL.md +34 -26
  277. package/.agent/skills/ui-ux-researcher/SKILL.md +1 -0
  278. package/.agent/skills/vector-search-pgvector/SKILL.md +78 -0
  279. package/.agent/skills/vue-expert/SKILL.md +22 -19
  280. package/.agent/skills/vulnerability-scanner/SKILL.md +22 -21
  281. package/.agent/skills/web-accessibility-auditor/SKILL.md +2 -1
  282. package/.agent/skills/web-design-guidelines/SKILL.md +16 -10
  283. package/.agent/skills/web-quality-audit/SKILL.md +5 -0
  284. package/.agent/skills/webapp-testing/SKILL.md +14 -13
  285. package/.agent/skills/webgpu-performance/SKILL.md +1 -0
  286. package/.agent/skills/whimsy-injector/SKILL.md +9 -5
  287. package/.agent/skills/workflow-optimizer/SKILL.md +1 -0
  288. package/.agent/skills/zero-trust-passkeys/SKILL.md +90 -0
  289. package/.agent/templates/DESIGN.md +119 -110
  290. package/.agent/templates/design-tokens.json +9 -6
  291. package/.agent/workflows/acf.md +1 -0
  292. package/.agent/workflows/api-tester.md +1 -0
  293. package/.agent/workflows/audit.md +1 -0
  294. package/.agent/workflows/brainstorm.md +1 -0
  295. package/.agent/workflows/changelog.md +1 -0
  296. package/.agent/workflows/contract.md +60 -0
  297. package/.agent/workflows/create.md +1 -0
  298. package/.agent/workflows/debug.md +1 -0
  299. package/.agent/workflows/deploy.md +1 -0
  300. package/.agent/workflows/enhance.md +1 -0
  301. package/.agent/workflows/fix-ci.md +89 -0
  302. package/.agent/workflows/fix.md +1 -0
  303. package/.agent/workflows/generate.md +1 -0
  304. package/.agent/workflows/marathon.md +1 -0
  305. package/.agent/workflows/migrate.md +1 -0
  306. package/.agent/workflows/minimal.md +9 -7
  307. package/.agent/workflows/orchestrate.md +1 -0
  308. package/.agent/workflows/performance-benchmarker.md +1 -0
  309. package/.agent/workflows/pipeline.md +26 -21
  310. package/.agent/workflows/plan.md +1 -0
  311. package/.agent/workflows/preview.md +1 -0
  312. package/.agent/workflows/refactor.md +3 -2
  313. package/.agent/workflows/review-ai.md +4 -3
  314. package/.agent/workflows/review.md +1 -0
  315. package/.agent/workflows/session.md +1 -0
  316. package/.agent/workflows/status.md +1 -0
  317. package/.agent/workflows/strengthen-skills.md +1 -0
  318. package/.agent/workflows/super-prompt.md +1 -0
  319. package/.agent/workflows/swarm.md +15 -3
  320. package/.agent/workflows/test.md +8 -7
  321. package/.agent/workflows/tribunal-backend.md +3 -2
  322. package/.agent/workflows/tribunal-cicd.md +104 -0
  323. package/.agent/workflows/tribunal-database.md +1 -0
  324. package/.agent/workflows/tribunal-frontend.md +8 -6
  325. package/.agent/workflows/tribunal-full.md +15 -14
  326. package/.agent/workflows/tribunal-mobile.md +6 -5
  327. package/.agent/workflows/tribunal-performance.md +1 -0
  328. package/.agent/workflows/tribunal-speed.md +1 -0
  329. package/.agent/workflows/tribunal-ui.md +29 -21
  330. package/.agent/workflows/ui-ux-pro-max.md +19 -15
  331. package/CONTRIBUTING.md +3 -3
  332. package/README.md +160 -88
  333. package/SECURITY.md +11 -11
  334. package/bin/mcp-server.js +512 -233
  335. package/bin/tribunal-kit.js +29 -30
  336. package/bin/wrapper.js +45 -48
  337. package/dist/cli.js +26 -0
  338. package/dist/commands/case.js +2 -0
  339. package/dist/commands/contract.js +440 -0
  340. package/dist/commands/memory.js +3 -2
  341. package/dist/commands/native.js +36 -0
  342. package/dist/commands/status.js +6 -0
  343. package/dist/esm/index.mjs +32 -0
  344. package/dist/index.d.ts +58 -3
  345. package/package.json +20 -16
  346. package/scripts/benchmark.js +62 -86
  347. package/scripts/changelog.js +67 -73
  348. package/scripts/fix-vbc.js +13 -15
  349. package/scripts/fix-vbc.ps1 +2 -118
  350. package/scripts/stress_benchmark.js +358 -0
  351. package/scripts/sync-version.js +71 -41
  352. package/scripts/validate-payload.js +23 -30
  353. package/scripts/visual_audit.js +23 -13
@@ -8,35 +8,35 @@ All agents listed here MUST exist as `.md` files in `.agent/agents/`.
8
8
 
9
9
  ## Primary Routing Table
10
10
 
11
- | Task Type | Domain Keywords | Route to Agent |
12
- | ---------------- | ------------------------------------------------ | ----------------------- |
13
- | `research` | any | `explorer-agent` |
14
- | `research` | security, vulnerability, owasp | `security-auditor` |
15
- | `research` | database, schema, sql, orm | `database-architect` |
16
- | `research` | performance, profiling, optimization | `performance-optimizer` |
17
- | `generate_code` | api, route, endpoint, server, express, auth, jwt | `backend-specialist` |
18
- | `generate_code` | python, fastapi, django, flask | `python-pro` |
19
- | `generate_code` | c#, .net, blazor, aspnet | `csharp-developer` |
20
- | `generate_code` | component, hook, react, next, ui, css | `frontend-specialist` |
21
- | `generate_code` | mobile, react native, flutter, ios, android | `mobile-developer` |
22
- | `generate_code` | docker, ci, cd, deploy, github actions, cloud | `devops-engineer` |
23
- | `generate_code` | sql, query, migration, prisma, drizzle | `sql-pro` |
24
- | `generate_code` | vue, nuxt | `vue-expert` |
25
- | `review_code` | api, backend, auth | `backend-specialist` |
26
- | `review_code` | react, component, hook | `frontend-specialist` |
27
- | `review_code` | sql, query | `sql-pro` |
28
- | `review_code` | security (any domain) | `security-auditor` |
29
- | `debug` | any | `debugger` |
30
- | `plan` | any | `project-planner` |
31
- | `design_schema` | any | `database-architect` |
32
- | `write_docs` | any | `documentation-writer` |
33
- | `security_audit` | any | `security-auditor` |
34
- | `optimize` | any | `performance-optimizer` |
35
- | `test` | any | `test-engineer` |
36
- | `visual_audit` | ui, component, visual, screenshot, layout, render| `ui-visual-auditor` |
37
- | `generate_code` | aws, terraform, ecs, fargate, lambda, iac, vpc | `cloud-engineer` |
38
- | `plan` | system design, scale, capacity, architecture | `system-architect` |
39
- | `test` | e2e, playwright, automation, cypress | `qa-automation-engineer`|
11
+ | Task Type | Domain Keywords | Route to Agent |
12
+ | ---------------- | ------------------------------------------------- | ------------------------ |
13
+ | `research` | any | `explorer-agent` |
14
+ | `research` | security, vulnerability, owasp | `security-auditor` |
15
+ | `research` | database, schema, sql, orm | `database-architect` |
16
+ | `research` | performance, profiling, optimization | `performance-optimizer` |
17
+ | `generate_code` | api, route, endpoint, server, express, auth, jwt | `backend-specialist` |
18
+ | `generate_code` | python, fastapi, django, flask | `python-pro` |
19
+ | `generate_code` | c#, .net, blazor, aspnet | `csharp-developer` |
20
+ | `generate_code` | component, hook, react, next, ui, css | `frontend-specialist` |
21
+ | `generate_code` | mobile, react native, flutter, ios, android | `mobile-developer` |
22
+ | `generate_code` | docker, ci, cd, deploy, github actions, cloud | `devops-engineer` |
23
+ | `generate_code` | sql, query, migration, prisma, drizzle | `sql-pro` |
24
+ | `generate_code` | vue, nuxt | `vue-expert` |
25
+ | `review_code` | api, backend, auth | `backend-specialist` |
26
+ | `review_code` | react, component, hook | `frontend-specialist` |
27
+ | `review_code` | sql, query | `sql-pro` |
28
+ | `review_code` | security (any domain) | `security-auditor` |
29
+ | `debug` | any | `debugger` |
30
+ | `plan` | any | `project-planner` |
31
+ | `design_schema` | any | `database-architect` |
32
+ | `write_docs` | any | `documentation-writer` |
33
+ | `security_audit` | any | `security-auditor` |
34
+ | `optimize` | any | `performance-optimizer` |
35
+ | `test` | any | `test-engineer` |
36
+ | `visual_audit` | ui, component, visual, screenshot, layout, render | `ui-visual-auditor` |
37
+ | `generate_code` | aws, terraform, ecs, fargate, lambda, iac, vpc | `cloud-engineer` |
38
+ | `plan` | system design, scale, capacity, architecture | `system-architect` |
39
+ | `test` | e2e, playwright, automation, cypress | `qa-automation-engineer` |
40
40
 
41
41
  ---
42
42
 
@@ -54,28 +54,28 @@ When multiple domain keywords match, apply the following priority order:
54
54
 
55
55
  Quick reference for Supervisor triage. Full instructions are in each agent's `.md` file.
56
56
 
57
- | Agent File | Best For | Do NOT Use For |
58
- | -------------------------- | ------------------------------------------------ | ----------------------- |
59
- | `backend-specialist.md` | REST APIs, auth flows, server logic | React components |
60
- | `python-pro.md` | FastAPI, Django, data scripts | Node/TypeScript code |
61
- | `csharp-developer` | .NET 8+, C#, Blazor, AOT | Python or Node backends |
62
- | `frontend-specialist.md` | Web UI, CSS, components | Server code |
63
- | `react-specialist.md` | Advanced React patterns, Next.js architecture | Vue or mobile |
64
- | `vue-expert.md` | Vue 3, Nuxt 3, Pinia | React or Angular |
65
- | `mobile-developer.md` | React Native, Flutter | Web browser UI |
66
- | `database-architect.md` | Schema design, ORM selection, migrations | Raw SQL query tuning |
67
- | `sql-pro.md` | Complex queries, CTEs, window functions, indexes | Schema design |
68
- | `devops-engineer.md` | CI/CD, Docker, Kubernetes, cloud infra | Application code |
69
- | `security-auditor.md` | OWASP review, pen test findings, auth hardening | Feature development |
70
- | `performance-optimizer.md` | Profiling, bottleneck resolution, caching | New feature design |
71
- | `debugger.md` | Root cause analysis, systematic issue isolation | Code generation |
72
- | `project-planner.md` | Planning, task breakdown, estimates | Implementation |
73
- | `documentation-writer.md` | READMEs, API docs, inline comments | Code or schemas |
74
- | `test-engineer.md` | Unit/integration test design and strategy | Production code |
75
- | `explorer-agent.md` | Mapping unknown codebases before acting | Building new features |
76
- | `cloud-engineer.md` | AWS, Terraform, Docker, ECS, GitHub Actions CI | Application code |
77
- | `system-architect.md` | System design, capacity planning, scalability | Implementation details |
78
- | `qa-automation-engineer.md`| E2E testing, Playwright, test automation | Unit test design |
57
+ | Agent File | Best For | Do NOT Use For |
58
+ | --------------------------- | ------------------------------------------------ | ----------------------- |
59
+ | `backend-specialist.md` | REST APIs, auth flows, server logic | React components |
60
+ | `python-pro.md` | FastAPI, Django, data scripts | Node/TypeScript code |
61
+ | `csharp-developer` | .NET 8+, C#, Blazor, AOT | Python or Node backends |
62
+ | `frontend-specialist.md` | Web UI, CSS, components | Server code |
63
+ | `react-specialist.md` | Advanced React patterns, Next.js architecture | Vue or mobile |
64
+ | `vue-expert.md` | Vue 3, Nuxt 3, Pinia | React or Angular |
65
+ | `mobile-developer.md` | React Native, Flutter | Web browser UI |
66
+ | `database-architect.md` | Schema design, ORM selection, migrations | Raw SQL query tuning |
67
+ | `sql-pro.md` | Complex queries, CTEs, window functions, indexes | Schema design |
68
+ | `devops-engineer.md` | CI/CD, Docker, Kubernetes, cloud infra | Application code |
69
+ | `security-auditor.md` | OWASP review, pen test findings, auth hardening | Feature development |
70
+ | `performance-optimizer.md` | Profiling, bottleneck resolution, caching | New feature design |
71
+ | `debugger.md` | Root cause analysis, systematic issue isolation | Code generation |
72
+ | `project-planner.md` | Planning, task breakdown, estimates | Implementation |
73
+ | `documentation-writer.md` | READMEs, API docs, inline comments | Code or schemas |
74
+ | `test-engineer.md` | Unit/integration test design and strategy | Production code |
75
+ | `explorer-agent.md` | Mapping unknown codebases before acting | Building new features |
76
+ | `cloud-engineer.md` | AWS, Terraform, Docker, ECS, GitHub Actions CI | Application code |
77
+ | `system-architect.md` | System design, capacity planning, scalability | Implementation details |
78
+ | `qa-automation-engineer.md` | E2E testing, Playwright, test automation | Unit test design |
79
79
 
80
80
  ---
81
81
 
@@ -15,6 +15,7 @@ last-updated: 2026-07-29
15
15
  ## Mandatory Pre-Flight Context Inspection
16
16
 
17
17
  Before designing high-level system architectures, you MUST inspect:
18
+
18
19
  1. Active codebase scale & dependencies (`package.json`, `ARCHITECTURE.md`, microservices vs monolith setup)
19
20
  2. Data storage models (`schema.prisma`, SQL schemas, cache configs) → Assess read/write ratios, partitioning, and replica setups
20
21
  3. Scale targets (DAU, peak QPS, storage growth, latency SLOs) → Establish quantitative bounds before making component choices
@@ -21,6 +21,7 @@ Coverage numbers are vanity metrics. You audit for **behavioral completeness**
21
21
  ## Mandatory Pre-Flight Context Inspection
22
22
 
23
23
  Before auditing test coverage and quality, you MUST inspect:
24
+
24
25
  1. Active test runner config (`vitest.config.ts`, `jest.config.js`, `playwright.config.ts`) → Read coverage thresholds and test match globs
25
26
  2. Tested source file exported symbols → Cross-reference exported functions against corresponding test cases in `.test.ts` or `.spec.ts`
26
27
  3. Required edge case coverage checklist (Section 2) → Audit numbers (0, negative), strings (empty, whitespace), arrays (empty), and auth boundaries
@@ -33,27 +34,27 @@ This is the most common test failure mode. AI generates tests for the success ca
33
34
 
34
35
  ```typescript
35
36
  // ❌ INCOMPLETE: Only tests the success path
36
- describe("calculateDiscount()", () => {
37
- it("applies 10% to orders over $100", () => {
37
+ describe('calculateDiscount()', () => {
38
+ it('applies 10% to orders over $100', () => {
38
39
  expect(calculateDiscount(150)).toBe(135);
39
40
  });
40
41
  });
41
42
 
42
43
  // ✅ COMPLETE: Tests all behavioral boundaries
43
- describe("calculateDiscount()", () => {
44
- it("applies 10% to orders over $100", () => {
44
+ describe('calculateDiscount()', () => {
45
+ it('applies 10% to orders over $100', () => {
45
46
  expect(calculateDiscount(150)).toBe(135);
46
47
  });
47
- it("applies no discount to orders at exactly $100", () => {
48
+ it('applies no discount to orders at exactly $100', () => {
48
49
  expect(calculateDiscount(100)).toBe(100); // Boundary edge case
49
50
  });
50
- it("applies no discount to orders under $100", () => {
51
+ it('applies no discount to orders under $100', () => {
51
52
  expect(calculateDiscount(50)).toBe(50);
52
53
  });
53
- it("throws on negative input", () => {
54
+ it('throws on negative input', () => {
54
55
  expect(() => calculateDiscount(-50)).toThrow(/negative/i);
55
56
  });
56
- it("handles zero input", () => {
57
+ it('handles zero input', () => {
57
58
  expect(calculateDiscount(0)).toBe(0);
58
59
  });
59
60
  });
@@ -81,19 +82,19 @@ For any function being tested, flag if these are missing:
81
82
 
82
83
  ```typescript
83
84
  // ❌ BRITTLE: CSS selectors break on UI refactoring
84
- const button = container.querySelector(".btn-primary > span");
85
+ const button = container.querySelector('.btn-primary > span');
85
86
 
86
87
  // ❌ BRITTLE: Index-based selection — breaks when order changes
87
- const firstItem = getAllByRole("listitem")[0];
88
+ const firstItem = getAllByRole('listitem')[0];
88
89
 
89
90
  // ❌ BRITTLE: Text content in another language context (i18n risk)
90
- const btn = getByText("Enregistrer"); // French — breaks if locale changes
91
+ const btn = getByText('Enregistrer'); // French — breaks if locale changes
91
92
 
92
93
  // ✅ RESILIENT: Role-based selector — verifies accessibility simultaneously
93
- const submitBtn = getByRole("button", { name: /submit/i });
94
+ const submitBtn = getByRole('button', { name: /submit/i });
94
95
 
95
96
  // ✅ RESILIENT: data-testid for non-semantic elements
96
- const card = getByTestId("product-card-42");
97
+ const card = getByTestId('product-card-42');
97
98
  ```
98
99
 
99
100
  ---
@@ -102,25 +103,27 @@ const card = getByTestId("product-card-42");
102
103
 
103
104
  ```typescript
104
105
  // ❌ BAD: Mocking internal business logic — tests nothing real
105
- vi.mock("./calculateTax"); // Now the test just verifies the mock, not the function
106
+ vi.mock('./calculateTax'); // Now the test just verifies the mock, not the function
106
107
 
107
108
  // ❌ BAD: Overspecified mock — asserting exact call parameters that will change
108
109
  expect(mockSendEmail).toHaveBeenCalledWith(
109
- "user@example.com",
110
- "Welcome!",
110
+ 'user@example.com',
111
+ 'Welcome!',
111
112
  expect.any(String),
112
113
  { cc: undefined, bcc: undefined, replyTo: null }, // Too brittle
113
114
  );
114
115
 
115
116
  // ✅ GOOD: Mock at architectural boundaries only (network, DB, filesystem)
116
117
  // MSW intercepts network — component behaves exactly as in production
117
- import { setupServer } from "msw/node";
118
- const server = setupServer(http.get("/api/users", () => HttpResponse.json([{ id: 1, name: "Alice" }])));
118
+ import { setupServer } from 'msw/node';
119
+ const server = setupServer(
120
+ http.get('/api/users', () => HttpResponse.json([{ id: 1, name: 'Alice' }])),
121
+ );
119
122
 
120
123
  // ✅ GOOD: Assert meaningful behavior — not exact implementation
121
124
  expect(mockSendEmail).toHaveBeenCalledWith(
122
- "user@example.com",
123
- expect.stringContaining("Welcome"), // Cares about content, not exact format
125
+ 'user@example.com',
126
+ expect.stringContaining('Welcome'), // Cares about content, not exact format
124
127
  );
125
128
  ```
126
129
 
@@ -130,14 +133,14 @@ expect(mockSendEmail).toHaveBeenCalledWith(
130
133
 
131
134
  ```typescript
132
135
  // ❌ BAD: Tests internal private state (breaks on refactor)
133
- test("stores user in internal cache", () => {
136
+ test('stores user in internal cache', () => {
134
137
  const service = new UserService();
135
138
  service.fetchUser(1);
136
139
  expect(service._cache.has(1)).toBe(true); // Internal implementation detail
137
140
  });
138
141
 
139
142
  // ✅ GOOD: Tests observable behavior — the public contract
140
- test("returns cached user on second call without network request", async () => {
143
+ test('returns cached user on second call without network request', async () => {
141
144
  const service = new UserService();
142
145
  await service.fetchUser(1); // First call — hits network
143
146
  await service.fetchUser(1); // Second call — from cache
@@ -18,6 +18,7 @@ last-updated: 2026-07-29
18
18
  ## Mandatory Pre-Flight Context Inspection
19
19
 
20
20
  Before generating unit or integration tests, you MUST inspect:
21
+
21
22
  1. `package.json` → Confirm test runner engine (`vitest`, `jest`, `playwright`, `pytest`) and assertions configuration
22
23
  2. Target source file (`src/`, `lib/`, `app/`) → Read function signatures, export statements, and exception paths
23
24
  3. Existing test utilities (`test/setup.ts`, `vitest.config.ts`) → Check mock providers and shared test context fixtures
@@ -49,7 +50,7 @@ The loop repeats per function. The key is that the test drives the design — no
49
50
 
50
51
  ```typescript
51
52
  // ✅ Tests a specific, observable output
52
- expect(formatCurrency(1500)).toBe("$1,500.00");
53
+ expect(formatCurrency(1500)).toBe('$1,500.00');
53
54
 
54
55
  // ❌ Tests that the function ran (not what it produced)
55
56
  const result = formatCurrency(1500);
@@ -63,16 +64,16 @@ expect(formatCurrency(1500)).toBe(formatCurrency(1500));
63
64
 
64
65
  ```typescript
65
66
  // ✅ One test → one behavior
66
- it("adds VAT to the price", () => {
67
+ it('adds VAT to the price', () => {
67
68
  expect(addVat(100, 0.2)).toBe(120);
68
69
  });
69
70
 
70
- it("throws when rate is negative", () => {
71
- expect(() => addVat(100, -0.2)).toThrow("Rate must be positive");
71
+ it('throws when rate is negative', () => {
72
+ expect(() => addVat(100, -0.2)).toThrow('Rate must be positive');
72
73
  });
73
74
 
74
75
  // ❌ Two behaviors in one test — which one failed?
75
- it("adds VAT correctly", () => {
76
+ it('adds VAT correctly', () => {
76
77
  expect(addVat(100, 0.2)).toBe(120);
77
78
  expect(() => addVat(100, -0.2)).toThrow();
78
79
  });
@@ -86,15 +87,15 @@ it("adds VAT correctly", () => {
86
87
  // ✅ Mock only the direct external dependency
87
88
  // Testing: userService.create()
88
89
  // Mock: the DB layer (because we don't need a real DB for this unit)
89
- vi.mock("../db", () => ({
90
- insert: vi.fn().mockResolvedValue({ id: "u1", email: "test@example.com" }),
90
+ vi.mock('../db', () => ({
91
+ insert: vi.fn().mockResolvedValue({ id: 'u1', email: 'test@example.com' }),
91
92
  }));
92
93
 
93
94
  // ❌ Over-mocking — nothing real is being tested
94
- vi.mock("../db");
95
- vi.mock("../logger");
96
- vi.mock("../validator");
97
- vi.mock("../emailService");
95
+ vi.mock('../db');
96
+ vi.mock('../logger');
97
+ vi.mock('../validator');
98
+ vi.mock('../emailService');
98
99
  // At this point you're testing that mocks return mocks
99
100
  ```
100
101
 
@@ -21,6 +21,7 @@ You audit **server-side files only** — `.ts` and `.js` in `/api`, `/server`, `
21
21
  ## Mandatory Pre-Flight Context Inspection
22
22
 
23
23
  Before auditing server throughput, you MUST inspect:
24
+
24
25
  1. `package.json` → Check Node.js version, HTTP client (`undici`, `axios`, native `fetch`), and caching engines (`lru-cache`, `redis`)
25
26
  2. Server entry points (`server.ts`, `app/api/`) → Identify event-loop blocking operations (`readFileSync`, `JSON.parse` on large payloads)
26
27
  3. Outbound HTTP requests & DB queries → Check for missing HTTP Keep-Alive dispatcher or serialized `await` chains inside loops
@@ -46,27 +47,27 @@ The #1 throughput killer in Node.js. A single 50ms sync call blocks ALL concurre
46
47
 
47
48
  ```typescript
48
49
  // ❌ BLOCKS EVENT LOOP: Synchronous file read in async handler
49
- app.get("/config", async (req, res) => {
50
- const data = fs.readFileSync("/etc/config.json", "utf8"); // BLOCKS all requests
50
+ app.get('/config', async (req, res) => {
51
+ const data = fs.readFileSync('/etc/config.json', 'utf8'); // BLOCKS all requests
51
52
  res.json(JSON.parse(data));
52
53
  });
53
54
 
54
55
  // ✅ APPROVED: Async file read — yields to event loop
55
- app.get("/config", async (req, res) => {
56
- const data = await fs.promises.readFile("/etc/config.json", "utf8");
56
+ app.get('/config', async (req, res) => {
57
+ const data = await fs.promises.readFile('/etc/config.json', 'utf8');
57
58
  res.json(JSON.parse(data));
58
59
  });
59
60
 
60
61
  // ❌ BLOCKS EVENT LOOP: JSON.parse on large payload (> 1MB) on main thread
61
- app.post("/import", async (req, res) => {
62
+ app.post('/import', async (req, res) => {
62
63
  const data = JSON.parse(largeBuffer.toString()); // 50-200ms blocking
63
64
  });
64
65
 
65
66
  // ✅ APPROVED: Stream-parse large JSON
66
- import { parser } from "stream-json";
67
- import { streamArray } from "stream-json/streamers/StreamArray";
67
+ import { parser } from 'stream-json';
68
+ import { streamArray } from 'stream-json/streamers/StreamArray';
68
69
 
69
- app.post("/import", async (req, res) => {
70
+ app.post('/import', async (req, res) => {
70
71
  const pipeline = req.pipe(parser()).pipe(streamArray());
71
72
  for await (const { value } of pipeline) {
72
73
  await processItem(value); // Non-blocking, item-by-item
@@ -74,11 +75,11 @@ app.post("/import", async (req, res) => {
74
75
  });
75
76
 
76
77
  // ❌ BLOCKS EVENT LOOP: Synchronous crypto operations
77
- const hash = crypto.pbkdf2Sync(password, salt, 100000, 64, "sha512");
78
+ const hash = crypto.pbkdf2Sync(password, salt, 100000, 64, 'sha512');
78
79
 
79
80
  // ✅ APPROVED: Async crypto
80
81
  const hash = await new Promise((resolve, reject) => {
81
- crypto.pbkdf2(password, salt, 100000, 64, "sha512", (err, key) => {
82
+ crypto.pbkdf2(password, salt, 100000, 64, 'sha512', (err, key) => {
82
83
  err ? reject(err) : resolve(key);
83
84
  });
84
85
  });
@@ -101,7 +102,11 @@ async function getDashboard(userId: string) {
101
102
 
102
103
  // ✅ APPROVED: Parallel execution (300ms total — 3x faster)
103
104
  async function getDashboard(userId: string) {
104
- const [user, orders, notifications] = await Promise.all([getUser(userId), getOrders(userId), getNotifications(userId)]);
105
+ const [user, orders, notifications] = await Promise.all([
106
+ getUser(userId),
107
+ getOrders(userId),
108
+ getNotifications(userId),
109
+ ]);
105
110
  return { user, orders, notifications };
106
111
  }
107
112
 
@@ -112,12 +117,12 @@ for (const id of userIds) {
112
117
  }
113
118
 
114
119
  // ✅ APPROVED: Parallel with controlled concurrency
115
- const results = await Promise.all(userIds.map((id) => fetchUser(id)));
120
+ const results = await Promise.all(userIds.map(id => fetchUser(id)));
116
121
 
117
122
  // ✅ APPROVED: Batched concurrency for large arrays (avoid overwhelming DB)
118
- import pLimit from "p-limit";
123
+ import pLimit from 'p-limit';
119
124
  const limit = pLimit(10); // Max 10 concurrent
120
- const results = await Promise.all(userIds.map((id) => limit(() => fetchUser(id))));
125
+ const results = await Promise.all(userIds.map(id => limit(() => fetchUser(id))));
121
126
  ```
122
127
 
123
128
  ---
@@ -128,7 +133,7 @@ const results = await Promise.all(userIds.map((id) => limit(() => fetchUser(id))
128
133
  // ❌ MEMORY LEAK: Global cache with no eviction — grows unbounded
129
134
  const cache = new Map<string, any>(); // Lives forever, entries never removed
130
135
 
131
- app.get("/data/:id", async (req, res) => {
136
+ app.get('/data/:id', async (req, res) => {
132
137
  if (!cache.has(req.params.id)) {
133
138
  cache.set(req.params.id, await fetchData(req.params.id));
134
139
  }
@@ -137,7 +142,7 @@ app.get("/data/:id", async (req, res) => {
137
142
  // After 100K unique IDs → hundreds of MB consumed → OOM crash
138
143
 
139
144
  // ✅ APPROVED: LRU cache with max size and TTL
140
- import { LRUCache } from "lru-cache";
145
+ import { LRUCache } from 'lru-cache';
141
146
  const cache = new LRUCache<string, any>({
142
147
  max: 1000, // Maximum 1000 entries
143
148
  ttl: 1000 * 60 * 5, // 5-minute TTL
@@ -149,17 +154,17 @@ const id = setInterval(() => syncMetrics(), 30000);
149
154
 
150
155
  // ✅ APPROVED: Graceful shutdown clears interval
151
156
  const id = setInterval(() => syncMetrics(), 30000);
152
- process.on("SIGTERM", () => clearInterval(id));
153
- process.on("SIGINT", () => clearInterval(id));
157
+ process.on('SIGTERM', () => clearInterval(id));
158
+ process.on('SIGINT', () => clearInterval(id));
154
159
 
155
160
  // ❌ MEMORY LEAK: Event emitter listeners accumulate
156
- server.on("request", handler);
161
+ server.on('request', handler);
157
162
  // If called repeatedly (hot reload) → MaxListenersExceededWarning
158
163
 
159
164
  // ✅ APPROVED: Remove listener on cleanup
160
- server.on("request", handler);
165
+ server.on('request', handler);
161
166
  // On shutdown/reload:
162
- server.removeListener("request", handler);
167
+ server.removeListener('request', handler);
163
168
  ```
164
169
 
165
170
  ---
@@ -168,20 +173,20 @@ server.removeListener("request", handler);
168
173
 
169
174
  ```typescript
170
175
  // ❌ MAIN THREAD: CPU-heavy operation blocks ALL requests
171
- app.post("/resize", async (req, res) => {
176
+ app.post('/resize', async (req, res) => {
172
177
  const resized = sharp(buffer).resize(800, 600).toBuffer(); // 200-500ms blocking
173
178
  res.send(resized);
174
179
  });
175
180
 
176
181
  // ✅ APPROVED: Offload to Worker Thread
177
- import { Worker } from "worker_threads";
182
+ import { Worker } from 'worker_threads';
178
183
 
179
- app.post("/resize", async (req, res) => {
180
- const worker = new Worker("./workers/resize.js", {
184
+ app.post('/resize', async (req, res) => {
185
+ const worker = new Worker('./workers/resize.js', {
181
186
  workerData: { buffer: req.body, width: 800, height: 600 },
182
187
  });
183
- worker.on("message", (result) => res.send(result));
184
- worker.on("error", (err) => res.status(500).json({ error: err.message }));
188
+ worker.on('message', result => res.send(result));
189
+ worker.on('error', err => res.status(500).json({ error: err.message }));
185
190
  });
186
191
 
187
192
  // Flag these operations as Worker Thread candidates:
@@ -198,16 +203,16 @@ app.post("/resize", async (req, res) => {
198
203
 
199
204
  ```typescript
200
205
  // ❌ BUFFER BLOAT: Entire file loaded into memory before sending
201
- app.get("/export", async (req, res) => {
206
+ app.get('/export', async (req, res) => {
202
207
  const data = await db.orders.findMany(); // 50MB result set
203
208
  const csv = convertToCSV(data); // Another 50MB in memory
204
209
  res.send(csv); // Total: 100MB per request
205
210
  });
206
211
 
207
212
  // ✅ APPROVED: Stream directly to response
208
- app.get("/export", async (req, res) => {
209
- res.setHeader("Content-Type", "text/csv");
210
- res.setHeader("Transfer-Encoding", "chunked");
213
+ app.get('/export', async (req, res) => {
214
+ res.setHeader('Content-Type', 'text/csv');
215
+ res.setHeader('Transfer-Encoding', 'chunked');
211
216
 
212
217
  const cursor = db.orders.findMany({ cursor: true });
213
218
  for await (const batch of cursor) {
@@ -217,16 +222,16 @@ app.get("/export", async (req, res) => {
217
222
  });
218
223
 
219
224
  // ❌ BUFFER BLOAT: Reading entire upload before processing
220
- app.post("/upload", async (req, res) => {
225
+ app.post('/upload', async (req, res) => {
221
226
  const body = await req.arrayBuffer(); // Entire file in memory
222
227
  await processFile(Buffer.from(body));
223
228
  });
224
229
 
225
230
  // ✅ APPROVED: Pipe stream directly
226
- app.post("/upload", async (req, res) => {
231
+ app.post('/upload', async (req, res) => {
227
232
  const writeStream = fs.createWriteStream(`/uploads/${filename}`);
228
233
  req.pipe(writeStream);
229
- writeStream.on("finish", () => res.json({ status: "uploaded" }));
234
+ writeStream.on('finish', () => res.json({ status: 'uploaded' }));
230
235
  });
231
236
  ```
232
237
 
@@ -237,15 +242,15 @@ app.post("/upload", async (req, res) => {
237
242
  ```typescript
238
243
  // ❌ NO KEEP-ALIVE: New TCP connection per outbound fetch
239
244
  async function callExternalAPI(data: any) {
240
- const res = await fetch("https://api.external.com/v1/data", {
241
- method: "POST",
245
+ const res = await fetch('https://api.external.com/v1/data', {
246
+ method: 'POST',
242
247
  body: JSON.stringify(data),
243
248
  });
244
249
  // Each call = DNS lookup + TCP handshake + TLS negotiation (100-300ms overhead)
245
250
  }
246
251
 
247
252
  // ✅ APPROVED: Reuse connections with http.Agent
248
- import { Agent } from "undici";
253
+ import { Agent } from 'undici';
249
254
 
250
255
  const agent = new Agent({
251
256
  keepAliveTimeout: 30_000,
@@ -254,8 +259,8 @@ const agent = new Agent({
254
259
  });
255
260
 
256
261
  async function callExternalAPI(data: any) {
257
- const res = await fetch("https://api.external.com/v1/data", {
258
- method: "POST",
262
+ const res = await fetch('https://api.external.com/v1/data', {
263
+ method: 'POST',
259
264
  body: JSON.stringify(data),
260
265
  dispatcher: agent,
261
266
  });
@@ -279,7 +284,7 @@ do {
279
284
  const batch = await prisma.user.findMany({
280
285
  take: 100,
281
286
  ...(cursor ? { skip: 1, cursor: { id: cursor } } : {}),
282
- orderBy: { id: "asc" },
287
+ orderBy: { id: 'asc' },
283
288
  });
284
289
  for (const user of batch) {
285
290
  await sendEmail(user.email);
@@ -20,6 +20,7 @@ TypeScript is a contract system. Your job is to ensure every contract is honored
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before auditing TypeScript safety, you MUST inspect:
23
+
23
24
  1. `tsconfig.json` → Check `strict`, `noImplicitAny`, `strictNullChecks`, `noUncheckedIndexedAccess` settings
24
25
  2. `package.json` → Check `@types/*` dependencies and TypeScript compiler version
25
26
  3. Imported module declarations (`.d.ts` files or exported types) → Ensure interfaces exist and match contract usage
@@ -37,7 +38,7 @@ function process(data: any) {
37
38
  }
38
39
 
39
40
  // ❌ REJECTED: Cast from unknown response — no runtime validation
40
- const result: any = await fetch("/api").then((r) => r.json());
41
+ const result: any = await fetch('/api').then(r => r.json());
41
42
 
42
43
  // ✅ APPROVED: Narrow interface defined
43
44
  function process(data: { name: string; id: number }) {
@@ -45,7 +46,7 @@ function process(data: { name: string; id: number }) {
45
46
  }
46
47
 
47
48
  // ✅ APPROVED: Zod validates at runtime boundary
48
- const result = UserSchema.parse(await fetch("/api").then((r) => r.json()));
49
+ const result = UserSchema.parse(await fetch('/api').then(r => r.json()));
49
50
 
50
51
  // ✅ APPROVED with documented justification
51
52
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -70,7 +71,7 @@ const user = UserSchema.parse(response);
70
71
 
71
72
  // ✅ APPROVED: Type guard with actual check
72
73
  function isUser(data: unknown): data is User {
73
- return typeof data === "object" && data !== null && "id" in data;
74
+ return typeof data === 'object' && data !== null && 'id' in data;
74
75
  }
75
76
  ```
76
77
 
@@ -111,7 +112,7 @@ const city = user.address.city;
111
112
  const first = arr[0].name; // arr could be empty
112
113
 
113
114
  // ✅ APPROVED: Optional chaining with fallback
114
- const city = user.address?.city ?? "Unknown";
115
+ const city = user.address?.city ?? 'Unknown';
115
116
 
116
117
  // ✅ APPROVED: Guard before access
117
118
  if (arr.length > 0) {
@@ -22,6 +22,7 @@ skills:
22
22
  ## Mandatory Pre-Flight Context Inspection
23
23
 
24
24
  Before auditing UI/UX governance, you MUST inspect:
25
+
25
26
  1. `DESIGN.md` / `theme.css` → Check active visual direction, color system, and spatial tokens
26
27
  2. Component hierarchy → Check if the `🧠 UI Reasoning Engine Trace` block was produced before component code
27
28
  3. Accessibility & Layout → Check touch targets (min 44x44px), ARIA roles, and responsive breakpoint rules
@@ -31,6 +32,7 @@ Before auditing UI/UX governance, you MUST inspect:
31
32
  ## The UI Multi-Agent Orchestration Loop
32
33
 
33
34
  When reviewing code, you must synthesize findings from the 6 specialized reviewers:
35
+
34
36
  1. **ux-reviewer:** Verifies Hick's law, scannability, cognitive load, and progressive disclosure.
35
37
  2. **visual-reviewer:** Verifies margins, typographic hierarchy, 8px grids, and contrast.
36
38
  3. **interaction-reviewer:** Verifies all interactive states (hover, focus, active, disabled) and micro-interactions.
@@ -42,10 +44,10 @@ When reviewing code, you must synthesize findings from the 6 specialized reviewe
42
44
 
43
45
  ## Strict Rejection Gates (Blocking)
44
46
 
45
- * **Missing Reasoning Trace:** If the Maker agent fails to output the `🧠 UI Reasoning Engine Trace` block before the code, output is immediately REJECTED.
46
- * **The Purple brand color (#7C3AED):** Immediately REJECTED.
47
- * **Lack of Hover/Active states:** Rejects any clickable button or card that does not explicitly implement hover scales or `active:scale-[0.97]` click indicators.
48
- * **Layout Shift (CLS):** Rejects images or media content containers that do not declare explicit aspect ratios or spacing dimensions.
47
+ - **Missing Reasoning Trace:** If the Maker agent fails to output the `🧠 UI Reasoning Engine Trace` block before the code, output is immediately REJECTED.
48
+ - **The Purple brand color (#7C3AED):** Immediately REJECTED.
49
+ - **Lack of Hover/Active states:** Rejects any clickable button or card that does not explicitly implement hover scales or `active:scale-[0.97]` click indicators.
50
+ - **Layout Shift (CLS):** Rejects images or media content containers that do not declare explicit aspect ratios or spacing dimensions.
49
51
 
50
52
  ---
51
53
 
@@ -18,6 +18,7 @@ skills:
18
18
  ## Mandatory Pre-Flight Context Inspection
19
19
 
20
20
  Before auditing rendered visuals and DOM layouts, you MUST inspect:
21
+
21
22
  1. Breakpoint configs (`tailwind.config.js`, `media.css`) → Verify 375px (mobile), 768px (tablet), and 1440px (desktop) breakpoint bounds
22
23
  2. Image & Video assets → Confirm presence of `aspect-ratio` or explicit width/height dimensions to eliminate layout shifts
23
24
  3. Typography wrap rules → Verify `text-wrap: balance` / `pretty` usage on headings and body text
@@ -39,6 +40,7 @@ You inspect rendered HTML, DOM elements, or captured screenshots at multiple vie
39
40
  ## Code Comparison Examples
40
41
 
41
42
  ### Layout Shift (CLS) Violation
43
+
42
44
  ```tsx
43
45
  // ❌ REJECTED: Missing width/height or aspect-ratio on image. Causes layout jump on load.
44
46
  <img src="/hero-illustration.webp" className="w-full h-auto" />
@@ -50,6 +52,7 @@ You inspect rendered HTML, DOM elements, or captured screenshots at multiple vie
50
52
  ```
51
53
 
52
54
  ### Responsive Container Overflow
55
+
53
56
  ```tsx
54
57
  // ❌ REJECTED: Hardcoded width on container causing horizontal overflow on mobile viewports
55
58
  <div className="w-[600px] p-4">