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
@@ -0,0 +1,81 @@
1
+ ---
2
+ name: expo-router-v4
3
+ description: React Native 0.76+ New Architecture (Fabric/TurboModules), Expo Router v4 typed file-based navigation, native haptics, and biometrics.
4
+ tools: Read, Grep, Glob, Edit, Write
5
+ version: 3.0.0
6
+ last-updated: 2026-08-05
7
+ script: .agent/scripts/lint_runner.js
8
+ scripts-binding:
9
+ - .agent/scripts/lint_runner.js
10
+ skills:
11
+ - mobile-developer
12
+ - mobile-design
13
+ - react-specialist
14
+ ---
15
+
16
+ # Expo Router v4 & React Native New Architecture
17
+
18
+ ## Mandatory Pre-Flight Context Inspection
19
+
20
+ Before building mobile navigation or components:
21
+
22
+ 1. New Architecture Enforcement → Enable Fabric renderer and TurboModules in `app.json` (`"newArchEnabled": true`)
23
+ 2. Typed Routing → Use `expo-router` typed routes for safe navigation
24
+ 3. Safe Area & Haptics → Wrap screens in `SafeAreaView` and provide subtle `expo-haptics` feedback
25
+
26
+ ## Layout Navigation Architecture (`app/_layout.tsx`)
27
+
28
+ ```tsx
29
+ import { Stack } from 'expo-router';
30
+ import { StatusBar } from 'expo-status-bar';
31
+ import { SafeAreaProvider } from 'react-native-safe-area-context';
32
+
33
+ export default function RootLayout() {
34
+ return (
35
+ <SafeAreaProvider>
36
+ <StatusBar style="light" />
37
+ <Stack
38
+ screenOptions={{
39
+ headerStyle: { backgroundColor: '#0f172a' },
40
+ headerTintColor: '#f8fafc',
41
+ animation: 'slide_from_right',
42
+ }}
43
+ >
44
+ <Stack.Screen name="index" options={{ title: 'Feed' }} />
45
+ <Stack.Screen name="modal" options={{ presentation: 'modal' }} />
46
+ </Stack>
47
+ </SafeAreaProvider>
48
+ );
49
+ }
50
+ ```
51
+
52
+ ## Native Haptic Touch Button Component
53
+
54
+ ```tsx
55
+ import * as Haptics from 'expo-haptics';
56
+ import { Pressable, Text, PressableProps } from 'react-native';
57
+
58
+ interface TouchButtonProps extends PressableProps {
59
+ label: string;
60
+ }
61
+
62
+ export function TouchButton({ label, onPress, ...props }: TouchButtonProps) {
63
+ return (
64
+ <Pressable
65
+ {...props}
66
+ onPress={e => {
67
+ Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
68
+ onPress?.(e);
69
+ }}
70
+ className="px-5 py-3 bg-indigo-600 rounded-xl active:scale-95 transition-transform"
71
+ >
72
+ <Text className="text-white font-medium text-center">{label}</Text>
73
+ </Pressable>
74
+ );
75
+ }
76
+ ```
77
+
78
+ ## 🛑 Verification-Before-Completion (VBC) Protocol
79
+
80
+ - Verify zero bridge warnings during navigation.
81
+ - Ensure safe area insets are respected across iOS notch and Android gesture bars.
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before extracting design systems or tokenizing CSS variables, you MUST inspect:
23
+
23
24
  1. 3+ Repetition Frequency Rule (Section 15) → Only tokenize values that recur 3+ times across components to prevent variable bloat
24
25
  2. Semantic Naming Convention (Section 17) → Use functional/semantic names (`--color-primary`) rather than literal colors (`--red-500`)
25
26
  3. Accessibility Token Contract (Section 110) → Ensure extracted text and surface tokens satisfy a min 4.5:1 WCAG AA contrast ratio
@@ -52,7 +53,7 @@ Tokens should be semantic, not literal. `color-brand` > `color-red`.
52
53
  --surface-muted: 210, 40%, 96%;
53
54
 
54
55
  /* Typography */
55
- --font-sans: "Inter", system-ui, sans-serif;
56
+ --font-sans: 'Inter', system-ui, sans-serif;
56
57
 
57
58
  /* Space / Geometry (8px grid scale) */
58
59
  --space-1: 0.25rem; /* 4px */
@@ -90,26 +91,26 @@ If building a design system inside React/Next.js, standardize the system through
90
91
 
91
92
  ```typescript
92
93
  // ✅ Efficient Extracted Component Architecture
93
- import { cva } from "class-variance-authority";
94
+ import { cva } from 'class-variance-authority';
94
95
 
95
96
  const buttonStyles = cva(
96
- "inline-flex items-center justify-center rounded-md font-medium transition-colors", // Base
97
+ 'inline-flex items-center justify-center rounded-md font-medium transition-colors', // Base
97
98
  {
98
99
  variants: {
99
100
  intent: {
100
- primary: "bg-primary text-white hover:bg-primary/90",
101
- destructive: "bg-red-500 text-white hover:bg-red-600",
102
- outline: "border border-input hover:bg-accent",
101
+ primary: 'bg-primary text-white hover:bg-primary/90',
102
+ destructive: 'bg-red-500 text-white hover:bg-red-600',
103
+ outline: 'border border-input hover:bg-accent',
103
104
  },
104
105
  size: {
105
- sm: "h-9 px-3 text-sm",
106
- default: "h-10 px-4 py-2", // Extracted standard size
107
- lg: "h-11 px-8",
106
+ sm: 'h-9 px-3 text-sm',
107
+ default: 'h-10 px-4 py-2', // Extracted standard size
108
+ lg: 'h-11 px-8',
108
109
  },
109
110
  },
110
111
  defaultVariants: {
111
- intent: "primary",
112
- size: "default",
112
+ intent: 'primary',
113
+ size: 'default',
113
114
  },
114
115
  },
115
116
  );
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before executing reasoning loops, you MUST inspect:
23
+
23
24
  1. `package.json` / dependency manifests → Verify exact framework version boundaries (React 19 vs 18, Next.js 15 vs 14)
24
25
  2. Epistemic Confidence Checklist (Section 1) → Categorize implementation confidence L1 to L5
25
26
  3. High-Risk Hallucination Heatmap (Section 7) → Tag uncertain ORM/SDK method calls with `// VERIFY: [reason]` tags
@@ -52,6 +53,7 @@ CONFIDENCE CHECK:
52
53
  ### Epistemic Confidence Levels (L1-L5)
53
54
 
54
55
  Rate the certainty of your implementation decisions using this hierarchy:
56
+
55
57
  - **L1: Absolute Certainty (Verified Truth)**: Code is fully checked against active files in the workspace or verified in up-to-date documentation.
56
58
  - **L2: High Confidence (Standard API)**: Using standard library or stable, unchanged language features (e.g. standard Node `fs` methods, basic Python functions).
57
59
  - **L3: Moderate Confidence (Likely but Unverified)**: Custom utilities or package features that are likely correct but not actively verified. Must add `// VERIFY: [reason]` tags.
@@ -222,18 +224,21 @@ ALWAYS:
222
224
  ## 6. Fabel-5 Cognitive Boundaries (Wellbeing, Evenhandedness, Memory)
223
225
 
224
226
  ### User Wellbeing & Safety
225
- * **No Psychoanalysis / Diagnosis**: Reflect what is said without diagnosing or assigning psychological narratives (e.g. "you restrict because of trauma"). Suggest professional help without clinical labels.
226
- * **Self-Harm Interruptions**: Never suggest physical substitutes (holding ice, snapping rubber bands, drawing lines) or mimic self-harm. They reinforce the self-harm loop.
227
- * **No Over-reliance**: Do not thank the user for reaching out, encourage them to stay, or reiterate willingness to continue. Avoid conversational dependencies.
228
- * **Positive Paths**: Acknowledge distress without reflective listening that amplifies negative spirals. Keep paths to external help open.
227
+
228
+ - **No Psychoanalysis / Diagnosis**: Reflect what is said without diagnosing or assigning psychological narratives (e.g. "you restrict because of trauma"). Suggest professional help without clinical labels.
229
+ - **Self-Harm Interruptions**: Never suggest physical substitutes (holding ice, snapping rubber bands, drawing lines) or mimic self-harm. They reinforce the self-harm loop.
230
+ - **No Over-reliance**: Do not thank the user for reaching out, encourage them to stay, or reiterate willingness to continue. Avoid conversational dependencies.
231
+ - **Positive Paths**: Acknowledge distress without reflective listening that amplifies negative spirals. Keep paths to external help open.
229
232
 
230
233
  ### Moral & Political Evenhandedness
231
- * **Nuance Over Brevity**: Reject requests for simple yes/no or one-word answers on contested political, ethical, or policy issues. Give a fair, balanced overview of existing positions.
232
- * **Opposing Perspectives**: Conclude arguments for positions by presenting opposing viewpoints or empirical disputes even if the user/AI agrees with the primary view.
234
+
235
+ - **Nuance Over Brevity**: Reject requests for simple yes/no or one-word answers on contested political, ethical, or policy issues. Give a fair, balanced overview of existing positions.
236
+ - **Opposing Perspectives**: Conclude arguments for positions by presenting opposing viewpoints or empirical disputes even if the user/AI agrees with the primary view.
233
237
 
234
238
  ### Memory & Preference Boundaries
235
- * **Invisible Integration**: Integrate remembered user context silently without attribution or observation verbs ("I notice in your profile...", "Based on your memory...").
236
- * **Expertise Tuning**: Match language and technical depth to the user's stated background without lecturing.
239
+
240
+ - **Invisible Integration**: Integrate remembered user context silently without attribution or observation verbs ("I notice in your profile...", "Based on your memory...").
241
+ - **Expertise Tuning**: Match language and technical depth to the user's stated background without lecturing.
237
242
 
238
243
  ---
239
244
 
@@ -241,15 +246,15 @@ ALWAYS:
241
246
 
242
247
  High-risk hallucination zones (verify before using):
243
248
 
244
- | Category | Common Hallucinations | Why |
245
- |---|---|---|
246
- | **Prisma ORM** | `findOne()`, `updateMany({where:{id}})` | Renamed/misused methods |
247
- | **React 19** | `useFormState()`, `useServerComponent()` | Renamed or never existed |
248
- | **Next.js 15** | `headers()` without await, `notFound()` in client | Breaking changes |
249
- | **OpenAI SDK** | `response.text`, `chat.stream()`, `gpt-5` | Wrong properties/methods |
250
- | **Anthropic SDK** | `claude-4-opus`, `temperature: "low"` | Wrong model strings/types |
251
- | **Node.js** | `fs.readAsync()`, `fetch()` below Node 18 | Methods that don't exist |
252
- | **Python** | `list.findIndex()`, `dict.filter()` | JS methods on Python types |
249
+ | Category | Common Hallucinations | Why |
250
+ | ----------------- | ------------------------------------------------- | -------------------------- |
251
+ | **Prisma ORM** | `findOne()`, `updateMany({where:{id}})` | Renamed/misused methods |
252
+ | **React 19** | `useFormState()`, `useServerComponent()` | Renamed or never existed |
253
+ | **Next.js 15** | `headers()` without await, `notFound()` in client | Breaking changes |
254
+ | **OpenAI SDK** | `response.text`, `chat.stream()`, `gpt-5` | Wrong properties/methods |
255
+ | **Anthropic SDK** | `claude-4-opus`, `temperature: "low"` | Wrong model strings/types |
256
+ | **Node.js** | `fs.readAsync()`, `fetch()` below Node 18 | Methods that don't exist |
257
+ | **Python** | `list.findIndex()`, `dict.filter()` | JS methods on Python types |
253
258
 
254
259
  When in doubt: **search the official docs**. Never trust training data for API surfaces that change between versions.
255
260
 
@@ -279,10 +284,12 @@ Before finalizing any response, ask yourself:
279
284
  ---
280
285
 
281
286
  ## Pre-Flight Checklist
287
+
282
288
  - [ ] Have I reviewed the Fabel epistemic confidence guidelines before starting?
283
289
  - [ ] Have I checked the framework version context in the workspace?
284
290
 
285
291
  ## VBC Protocol
292
+
286
293
  - [ ] Verify that any APIs or files to be updated are loaded and checked for stale context prior to execution.
287
294
 
288
295
  ---
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before remediating HTML accessibility defects, you MUST inspect:
23
+
23
24
  1. Priority Matrix (Section 22) → Ensure accessible names on icon buttons (P1) and native HTML keyboard controls (P2) before styling
24
25
  2. Focus Ring Policy (Section 29) → Ban `outline: none` without providing explicit `:focus-visible` replacement (`2px` ring + offset)
25
26
  3. Form Error Association (Section 32) → Attach `aria-invalid="true"` and `aria-describedby` pointing to error text IDs
@@ -30,21 +31,22 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
30
31
 
31
32
  ## 1. Priority Priority Matrix (WCAG 2.2 AA)
32
33
 
33
- | Priority | Category | Critical Requirements |
34
- | --- | --- | --- |
35
- | **P1** | **Accessible Names** | Every icon button MUST have `aria-label` or `aria-labelledby`. Decorative icons MUST have `aria-hidden="true"`. |
36
- | **P2** | **Keyboard Access** | All interactive controls MUST be reachable and operable via `Tab` / `Shift+Tab`, `Space`, `Enter`. NEVER use `<div>` or `<span>` as clickable elements without `role="button"`, `tabIndex={0}`, and key handlers. |
37
- | **P3** | **Focus & Dialogs (SC 2.4.11)** | Modals/Dialogs MUST trap focus within the dialog container while open, return focus on close, dismiss on `Escape`, and ensure focused items are **never fully obscured by sticky headers/footers**. |
38
- | **P4** | **Focus Appearance (SC 2.4.13)** | Focus indicators MUST be clearly visible (`:focus-visible`), achieve at least **3:1 contrast** against adjacent background, and have a min **2px thickness**. |
39
- | **P5** | **Target Size (SC 2.5.8)** | Interactive controls MUST measure at least **24x24 CSS pixels** (min **44x44px** recommended for mobile touch targets) or have sufficient non-intersecting spacing. |
40
- | **P6** | **Color & Contrast** | Text MUST satisfy WCAG AA 4.5:1 ratio (3.0:1 for large text). Color alone MUST NOT be the only indicator of state or error. |
41
- | **P7** | **Form Validation** | Inputs MUST have explicit `<label>` or `aria-labelledby`. Errors MUST use `aria-invalid="true"` and `aria-describedby` pointing to error text. |
34
+ | Priority | Category | Critical Requirements |
35
+ | -------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
36
+ | **P1** | **Accessible Names** | Every icon button MUST have `aria-label` or `aria-labelledby`. Decorative icons MUST have `aria-hidden="true"`. |
37
+ | **P2** | **Keyboard Access** | All interactive controls MUST be reachable and operable via `Tab` / `Shift+Tab`, `Space`, `Enter`. NEVER use `<div>` or `<span>` as clickable elements without `role="button"`, `tabIndex={0}`, and key handlers. |
38
+ | **P3** | **Focus & Dialogs (SC 2.4.11)** | Modals/Dialogs MUST trap focus within the dialog container while open, return focus on close, dismiss on `Escape`, and ensure focused items are **never fully obscured by sticky headers/footers**. |
39
+ | **P4** | **Focus Appearance (SC 2.4.13)** | Focus indicators MUST be clearly visible (`:focus-visible`), achieve at least **3:1 contrast** against adjacent background, and have a min **2px thickness**. |
40
+ | **P5** | **Target Size (SC 2.5.8)** | Interactive controls MUST measure at least **24x24 CSS pixels** (min **44x44px** recommended for mobile touch targets) or have sufficient non-intersecting spacing. |
41
+ | **P6** | **Color & Contrast** | Text MUST satisfy WCAG AA 4.5:1 ratio (3.0:1 for large text). Color alone MUST NOT be the only indicator of state or error. |
42
+ | **P7** | **Form Validation** | Inputs MUST have explicit `<label>` or `aria-labelledby`. Errors MUST use `aria-invalid="true"` and `aria-describedby` pointing to error text. |
42
43
 
43
44
  ---
44
45
 
45
46
  ## 2. Accessible Code Patterns
46
47
 
47
48
  ### Icon-Only Button
49
+
48
50
  ```tsx
49
51
  // ✅ SAFE & ACCESSIBLE
50
52
  <button
@@ -58,6 +60,7 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
58
60
  ```
59
61
 
60
62
  ### Accessible Modal Dialog Focus Trap
63
+
61
64
  ```tsx
62
65
  // ✅ SAFE & ACCESSIBLE
63
66
  <div
@@ -68,8 +71,12 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
68
71
  className="fixed inset-0 z-50 flex items-center justify-center bg-black/50"
69
72
  >
70
73
  <div className="bg-surface p-6 rounded-xl max-w-md w-full">
71
- <h2 id="dialog-title" className="text-xl font-bold">Confirm Deletion</h2>
72
- <p id="dialog-description" className="text-muted mt-2">This action cannot be undone.</p>
74
+ <h2 id="dialog-title" className="text-xl font-bold">
75
+ Confirm Deletion
76
+ </h2>
77
+ <p id="dialog-description" className="text-muted mt-2">
78
+ This action cannot be undone.
79
+ </p>
73
80
  {/* Actions */}
74
81
  </div>
75
82
  </div>
@@ -79,11 +86,11 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
79
86
 
80
87
  ## Anti-Slop Table
81
88
 
82
- | Violation | Accessible Fix | Impact |
83
- | --- | --- | --- |
84
- | `<div onClick={submit}>Submit</div>` | `<button type="button" onClick={submit}>Submit</button>` | Fixes screen reader announcement & keyboard trigger |
85
- | `<button><TrashIcon /></button>` | `<button aria-label="Delete item"><TrashIcon aria-hidden="true" /></button>` | Gives screen reader clear accessible name |
86
- | `outline: none` in CSS | `:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }` | Restores visible keyboard focus indicator |
89
+ | Violation | Accessible Fix | Impact |
90
+ | ------------------------------------ | ---------------------------------------------------------------------------- | --------------------------------------------------- |
91
+ | `<div onClick={submit}>Submit</div>` | `<button type="button" onClick={submit}>Submit</button>` | Fixes screen reader announcement & keyboard trigger |
92
+ | `<button><TrashIcon /></button>` | `<button aria-label="Delete item"><TrashIcon aria-hidden="true" /></button>` | Gives screen reader clear accessible name |
93
+ | `outline: none` in CSS | `:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }` | Restores visible keyboard focus indicator |
87
94
 
88
95
  ---
89
96
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before engineering metadata or Open Graph tags, you MUST inspect:
23
+
23
24
  1. Title & Meta Description Caps (Section 24) → Restrict title tags to 50–60 chars and meta descriptions to 140–155 chars
24
25
  2. Absolute Image URL Rule (Section 74) → Enforce full absolute HTTPS URLs (`https://domain.com/og.jpg`) for `og:image` and `twitter:image`
25
26
  3. Twitter Card Type (Section 39) → Always specify `<meta name="twitter:card" content="summary_large_image" />` for prominent social previews
@@ -31,15 +32,20 @@ Audit, generate, and fix page metadata for rich social previews, search engine i
31
32
  ## 4 Metadata Standard Requirements
32
33
 
33
34
  ### 1. Title & Meta Description Length & Formatting
34
- - **Title Tag**: 50–60 characters max (*"Product Title | Brand Name"*).
35
+
36
+ - **Title Tag**: 50–60 characters max (_"Product Title | Brand Name"_).
35
37
  - **Meta Description**: 140–155 characters max. Must contain active call to value without truncating on search result cards.
36
38
 
37
39
  ### 2. Open Graph & Twitter Card Matrix
40
+
38
41
  ```html
39
42
  <!-- Open Graph / Facebook / LinkedIn -->
40
43
  <meta property="og:type" content="website" />
41
44
  <meta property="og:title" content="UI Skills for Design Engineers" />
42
- <meta property="og:description" content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft." />
45
+ <meta
46
+ property="og:description"
47
+ content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft."
48
+ />
43
49
  <meta property="og:image" content="https://example.com/og-image.jpg" />
44
50
  <meta property="og:image:width" content="1200" />
45
51
  <meta property="og:image:height" content="630" />
@@ -47,32 +53,37 @@ Audit, generate, and fix page metadata for rich social previews, search engine i
47
53
  <!-- Twitter / X -->
48
54
  <meta name="twitter:card" content="summary_large_image" />
49
55
  <meta name="twitter:title" content="UI Skills for Design Engineers" />
50
- <meta name="twitter:description" content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft." />
56
+ <meta
57
+ name="twitter:description"
58
+ content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft."
59
+ />
51
60
  <meta name="twitter:image" content="https://example.com/twitter-image.jpg" />
52
61
  ```
53
62
 
54
63
  ### 3. Canonical Tag Verification
64
+
55
65
  ```html
56
66
  <link rel="canonical" href="https://example.com/current-page-path" />
57
67
  ```
58
68
 
59
69
  ### 4. Next.js App Router Metadata Export Example
70
+
60
71
  ```typescript
61
- import type { Metadata } from "next";
72
+ import type { Metadata } from 'next';
62
73
 
63
74
  export const metadata: Metadata = {
64
- title: "UI Skills for Design Engineers",
65
- description: "Curated design-engineering skills for accessibility, motion, and frontend craft.",
75
+ title: 'UI Skills for Design Engineers',
76
+ description: 'Curated design-engineering skills for accessibility, motion, and frontend craft.',
66
77
  openGraph: {
67
- title: "UI Skills for Design Engineers",
68
- description: "Curated design-engineering skills for accessibility, motion, and frontend craft.",
69
- url: "https://example.com",
70
- images: [{ url: "https://example.com/og.jpg", width: 1200, height: 630 }],
78
+ title: 'UI Skills for Design Engineers',
79
+ description: 'Curated design-engineering skills for accessibility, motion, and frontend craft.',
80
+ url: 'https://example.com',
81
+ images: [{ url: 'https://example.com/og.jpg', width: 1200, height: 630 }],
71
82
  },
72
83
  twitter: {
73
- card: "summary_large_image",
74
- title: "UI Skills for Design Engineers",
75
- images: ["https://example.com/twitter.jpg"],
84
+ card: 'summary_large_image',
85
+ title: 'UI Skills for Design Engineers',
86
+ images: ['https://example.com/twitter.jpg'],
76
87
  },
77
88
  };
78
89
  ```
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before auditing or fixing animation performance, you MUST inspect:
23
+
23
24
  1. Browser Rendering Pipeline (Section 22) → Restrict properties to Composite-only (`transform`, `opacity`) and eliminate Layout/Paint animators
24
25
  2. Layout Thrashing (Section 33) → Batch all DOM reads (`offsetHeight`, `getBoundingClientRect`) before executing DOM writes (`style.height = ...`)
25
26
  3. `will-change` VRAM management (Section 53) → Remove `will-change` hints upon animation completion
@@ -31,6 +32,7 @@ Guidelines for auditing and resolving web animation jank, layout thrashing, and
31
32
  ## 1. Browser Rendering Pipeline & Compositor Rules
32
33
 
33
34
  Animations trigger one of 3 rendering costs:
35
+
34
36
  1. **Layout (Expensive)**: Animating `width`, `height`, `margin`, `padding`, `top`, `left`, `flex`, `grid`. Forces full geometry recalculation across the page.
35
37
  2. **Paint (Moderate)**: Animating `color`, `background-color`, `border-color`, `box-shadow`, `filter`. Forces pixel repaint.
36
38
  3. **Composite (GPU Fast)**: Animating **`transform`** (`translate`, `scale`, `rotate`) and **`opacity`**. Offloaded entirely to GPU compositor thread!
@@ -75,11 +77,11 @@ elements.forEach((el, i) => {
75
77
 
76
78
  ## Anti-Slop Table
77
79
 
78
- | Performance Issue | Motion Performance Fix | FPS Gain |
79
- | --- | --- | --- |
80
- | Animating `height: 0` to `auto` | FLIP technique or `scaleY` transform animation | 15fps → 60fps |
81
- | Scroll listener mutating inline CSS | `CSS scroll-timeline` or `IntersectionObserver` | Prevents main-thread scroll jank |
82
- | `transition: all 0.3s` | `transition: transform 200ms cubic-bezier(0.16,1,0.3,1), opacity 200ms ease` | Eliminates accidental layout/color recalculations |
80
+ | Performance Issue | Motion Performance Fix | FPS Gain |
81
+ | ----------------------------------- | ---------------------------------------------------------------------------- | ------------------------------------------------- |
82
+ | Animating `height: 0` to `auto` | FLIP technique or `scaleY` transform animation | 15fps → 60fps |
83
+ | Scroll listener mutating inline CSS | `CSS scroll-timeline` or `IntersectionObserver` | Prevents main-thread scroll jank |
84
+ | `transition: all 0.3s` | `transition: transform 200ms cubic-bezier(0.16,1,0.3,1), opacity 200ms ease` | Eliminates accidental layout/color recalculations |
83
85
 
84
86
  ---
85
87
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before writing Framer Motion code in React, you MUST inspect:
23
+
23
24
  1. `package.json` / Next.js Client Boundaries → Add `"use client"` directive on Next.js App Router files containing `motion.X`
24
25
  2. AnimatePresence & layoutId Rules (Section 117) → Enforce `mode="wait"` and ensure every `<AnimatePresence>` child has a unique `key`
25
26
  3. Bundle Optimization (Section 182) → Use `<LazyMotion features={domAnimation}>` with `m.div` for lightweight production bundles
@@ -44,8 +45,13 @@ Before writing Framer Motion code in React, you MUST inspect:
44
45
  ### `motion.X` / Declarative Animation
45
46
 
46
47
  ```tsx
47
- import { motion } from "framer-motion";
48
- <motion.div initial={{ opacity: 0, y: 20 }} animate={{ opacity: 1, y: 0 }} exit={{ opacity: 0, y: -20 }} transition={{ duration: 0.3, ease: "easeOut" }} />;
48
+ import { motion } from 'framer-motion';
49
+ <motion.div
50
+ initial={{ opacity: 0, y: 20 }}
51
+ animate={{ opacity: 1, y: 0 }}
52
+ exit={{ opacity: 0, y: -20 }}
53
+ transition={{ duration: 0.3, ease: 'easeOut' }}
54
+ />;
49
55
  ```
50
56
 
51
57
  ### Variants (Stagger / Orchestration)
@@ -56,11 +62,11 @@ const container = {
56
62
  visible: { transition: { staggerChildren: 0.08, delayChildren: 0.1 } },
57
63
  };
58
64
  const item = {
59
- hidden: { opacity: 0, y: 20, filter: "blur(4px)" },
60
- visible: { opacity: 1, y: 0, filter: "blur(0px)", transition: { duration: 0.4 } },
65
+ hidden: { opacity: 0, y: 20, filter: 'blur(4px)' },
66
+ visible: { opacity: 1, y: 0, filter: 'blur(0px)', transition: { duration: 0.4 } },
61
67
  };
62
68
  <motion.ul variants={container} initial="hidden" animate="visible">
63
- {list.map((e) => (
69
+ {list.map(e => (
64
70
  <motion.li key={e.id} variants={item}>
65
71
  {e.name}
66
72
  </motion.li>
@@ -131,10 +137,15 @@ import { LayoutGroup } from "framer-motion";
131
137
 
132
138
  ```tsx
133
139
  <AnimatePresence mode="sync">
134
- {" "}
140
+ {' '}
135
141
  {/* "sync"|"wait"|"popLayout" */}
136
- {items.map((item) => (
137
- <motion.div key={item.id} /* ← REQUIRED */ initial={{ opacity: 0, height: 0 }} animate={{ opacity: 1, height: "auto" }} exit={{ opacity: 0, height: 0 }} />
142
+ {items.map(item => (
143
+ <motion.div
144
+ key={item.id}
145
+ /* ← REQUIRED */ initial={{ opacity: 0, height: 0 }}
146
+ animate={{ opacity: 1, height: 'auto' }}
147
+ exit={{ opacity: 0, height: 0 }}
148
+ />
138
149
  ))}
139
150
  </AnimatePresence>
140
151
  // mode="wait" — waits for exit before entering
@@ -146,7 +157,7 @@ import { LayoutGroup } from "framer-motion";
146
157
  ## Scroll Animations
147
158
 
148
159
  ```tsx
149
- import { useScroll, useTransform } from "framer-motion";
160
+ import { useScroll, useTransform } from 'framer-motion';
150
161
  // Page scroll progress (0–1)
151
162
  const { scrollYProgress } = useScroll();
152
163
  const y = useTransform(scrollYProgress, [0, 1], [0, -200]);
@@ -155,7 +166,7 @@ const opacity = useTransform(scrollYProgress, [0, 0.5], [1, 0]);
155
166
 
156
167
  // Element-scoped scroll
157
168
  const ref = useRef(null);
158
- const { scrollYProgress } = useScroll({ target: ref, offset: ["start end", "end start"] });
169
+ const { scrollYProgress } = useScroll({ target: ref, offset: ['start end', 'end start'] });
159
170
  ```
160
171
 
161
172
  ---
@@ -165,9 +176,9 @@ const { scrollYProgress } = useScroll({ target: ref, offset: ["start end", "end
165
176
  ### `useAnimate` — Imperative sequences
166
177
 
167
178
  ```tsx
168
- import { useAnimate, stagger } from "framer-motion";
179
+ import { useAnimate, stagger } from 'framer-motion';
169
180
  const [scope, animate] = useAnimate(); // ← returns [scope, animate] NOT [ref, controls]
170
- await animate(".item", { opacity: 1 }, { delay: stagger(0.1) });
181
+ await animate('.item', { opacity: 1 }, { delay: stagger(0.1) });
171
182
  <div ref={scope}>...</div>;
172
183
  ```
173
184
 
@@ -194,7 +205,7 @@ const skewX = useTransform(xVel, [-1000, 0, 1000], [-15, 0, 15]);
194
205
 
195
206
  ```tsx
196
207
  // LazyMotion — ~5KB vs ~30KB full bundle
197
- import { LazyMotion, domAnimation, m } from "framer-motion";
208
+ import { LazyMotion, domAnimation, m } from 'framer-motion';
198
209
  // domAnimation ≈ 5KB | domMax ≈ 20KB (needed for layout/drag)
199
210
  <LazyMotion features={domAnimation}>
200
211
  <m.div animate={{ opacity: 1 }} />
@@ -204,10 +215,13 @@ import { LazyMotion, domAnimation, m } from "framer-motion";
204
215
  ### Accessibility
205
216
 
206
217
  ```tsx
207
- import { useReducedMotion } from "framer-motion";
218
+ import { useReducedMotion } from 'framer-motion';
208
219
  const reduce = useReducedMotion();
209
220
  // opacity/color: always safe | position/scale/rotation: must be disabled when reduce=true
210
- <motion.div animate={{ x: reduce ? 0 : 100, opacity: 1 }} transition={{ duration: reduce ? 0 : 0.5 }} />;
221
+ <motion.div
222
+ animate={{ x: reduce ? 0 : 100, opacity: 1 }}
223
+ transition={{ duration: reduce ? 0 : 0.5 }}
224
+ />;
211
225
  ```
212
226
 
213
227
  ### Rules
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before implementing front-end designs or CSS layout systems, you MUST inspect:
23
+
23
24
  1. Relative Color Syntax (Section 16) → Derive hover/active states dynamically with `oklch(from var(--color-primary) calc(l - 0.08) c h)`
24
25
  2. Nested Radius Math (Section 54) → Enforce `outer_radius = inner_radius + padding_inner` for nested card containers
25
26
  3. APCA Contrast Thresholds (Section 81) → Ensure Lc > 75 for body text, Lc > 60 for headings, and Lc > 45 for borders and labels
@@ -31,21 +32,22 @@ This skill guides the implementation of responsive layout systems, color science
31
32
  ## 1. Relative Color Syntax & OKLCH Theme Tokens
32
33
 
33
34
  Perceptually uniform color science ensures stable contrast. Use CSS **Relative Color Syntax** to derive state colors dynamically:
35
+
34
36
  ```css
35
37
  :root {
36
38
  /* base color values */
37
- --color-primary: oklch(62% 0.21 250); /* Brand electric blue */
38
-
39
+ --color-primary: oklch(62% 0.21 250); /* Brand electric blue */
40
+
39
41
  /* Deriving hover states dynamically: reduce lightness, preserve chroma and hue */
40
42
  --color-primary-hover: oklch(from var(--color-primary) calc(l - 0.08) c h);
41
43
  --color-primary-active: oklch(from var(--color-primary) calc(l - 0.12) c h);
42
-
44
+
43
45
  /* Backgrounds */
44
46
  --bg-surface: oklch(100% 0 0);
45
47
  --text-main: oklch(20% 0.02 250);
46
48
  }
47
49
 
48
- [data-theme="dark"] {
50
+ [data-theme='dark'] {
49
51
  --bg-surface: oklch(14% 0.008 250);
50
52
  --text-main: oklch(93% 0.003 250);
51
53
  }
@@ -56,19 +58,21 @@ Perceptually uniform color science ensures stable contrast. Use CSS **Relative C
56
58
  ## 2. Spatial Grid Math & Radius Tokens
57
59
 
58
60
  Enforce an 8px spatial grid calculated mathematically to ensure alignment precision:
61
+
59
62
  ```css
60
63
  :root {
61
64
  --base-grid: 8px;
62
-
63
- --space-xs: calc(var(--base-grid) * 0.5); /* 4px - icon gaps */
64
- --space-sm: calc(var(--base-grid) * 1); /* 8px - tag paddings */
65
- --space-md: calc(var(--base-grid) * 2); /* 16px - inputs */
66
- --space-lg: calc(var(--base-grid) * 3); /* 24px - card padding */
67
- --space-xl: calc(var(--base-grid) * 4); /* 32px - section gaps */
65
+
66
+ --space-xs: calc(var(--base-grid) * 0.5); /* 4px - icon gaps */
67
+ --space-sm: calc(var(--base-grid) * 1); /* 8px - tag paddings */
68
+ --space-md: calc(var(--base-grid) * 2); /* 16px - inputs */
69
+ --space-lg: calc(var(--base-grid) * 3); /* 24px - card padding */
70
+ --space-xl: calc(var(--base-grid) * 4); /* 32px - section gaps */
68
71
  }
69
72
  ```
70
73
 
71
74
  ### Nested Radius Formula
75
+
72
76
  Ensure component inner borders track correctly:
73
77
  `outer_radius = inner_radius + padding_inner`
74
78
  If container padding is `16px` and inner content radius is `8px`, then container outer radius must be exactly `24px` (`8px + 16px`).
@@ -78,6 +82,7 @@ If container padding is `16px` and inner content radius is `8px`, then container
78
82
  ## 3. Responsive Layouts & Container Queries
79
83
 
80
84
  Avoid viewport-level media queries for self-contained components. Use container queries to make components portable:
85
+
81
86
  ```css
82
87
  .component-wrapper {
83
88
  container-type: inline-size;
@@ -98,15 +103,18 @@ Avoid viewport-level media queries for self-contained components. Use container
98
103
  ## 4. APCA Contrast Guidelines
99
104
 
100
105
  Ensure that typography meets the APCA Lc guidelines:
101
- * Lc > 75 for body text elements.
102
- * Lc > 60 for large titles and headings.
103
- * Lc > 45 for secondary input labels and border guides.
106
+
107
+ - Lc > 75 for body text elements.
108
+ - Lc > 60 for large titles and headings.
109
+ - Lc > 45 for secondary input labels and border guides.
104
110
 
105
111
  ---
106
112
 
107
113
  ## Pre-Flight Checklist
114
+
108
115
  - [ ] Have I reviewed the user's specific constraints and requests?
109
116
  - [ ] Have I checked the environment for relevant existing implementations?
110
117
 
111
118
  ## VBC Protocol (Verification-Before-Completion)
119
+
112
120
  You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before auditing or writing client-side code, you MUST inspect:
23
+
23
24
  1. XSS Sanitize Rules (Section 28) → Require DOMPurify for any `dangerouslySetInnerHTML` and audit dynamic `javascript:` URIs
24
25
  2. HttpOnly Auth Token Storage (Section 34) → Ban storing JWTs or auth tokens in `localStorage` or `sessionStorage`; use `HttpOnly`, `Secure`, `SameSite` cookies
25
26
  3. PostMessage Origin Verification (Section 46) → Never use `targetOrigin: '*'` and always validate `event.origin` on receiving handlers
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before designing gameplay systems or controller feel, you MUST inspect:
23
+
23
24
  1. 3Cs Foundation (Character, Camera, Controls) (Section 25) → Implement input buffering (~150ms) and coyote time (~100ms) before designing enemy AI or progression
24
25
  2. Macro Gameplay Loop Validation (Section 42) → Ensure upgrading systems directly alter action and combat feel to prevent player churn
25
26
  3. Juicing & Hitstop Feel (Section 58) → Incorporate screen shake, hitstop (3 freeze frames), particle explosions, and squash-and-stretch for impact feedback