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
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before engineering component micro-interactions, you MUST inspect:
23
+
23
24
  1. Duration Caps → Keep interactive component feedback (press/hover/toggle) under 180ms
24
25
  2. Popover Origin Rules (Section 60) → Set `transform-origin` dynamically to match trigger button position
25
26
  3. SVG Path Draw-on (Section 48) → Use `stroke-dashoffset` transitions for checkboxes and toggle icons
@@ -31,9 +32,12 @@ Craft responsive, physically grounded micro-interactions for everyday UI control
31
32
  ## 4 Micro-Interaction Recipes
32
33
 
33
34
  ### 1. Tactile Button Press
35
+
34
36
  ```css
35
37
  .btn-tactile {
36
- transition: transform 120ms cubic-bezier(0.2, 0, 0, 1), box-shadow 120ms ease;
38
+ transition:
39
+ transform 120ms cubic-bezier(0.2, 0, 0, 1),
40
+ box-shadow 120ms ease;
37
41
  }
38
42
  .btn-tactile:hover {
39
43
  transform: translateY(-1px);
@@ -44,30 +48,35 @@ Craft responsive, physically grounded micro-interactions for everyday UI control
44
48
  ```
45
49
 
46
50
  ### 2. Animated Toggle Switch
51
+
47
52
  ```css
48
53
  .toggle-thumb {
49
54
  transition: transform 200ms cubic-bezier(0.34, 1.56, 0.64, 1); /* Subtle spring overshoot */
50
55
  }
51
- [data-state="checked"] .toggle-thumb {
56
+ [data-state='checked'] .toggle-thumb {
52
57
  transform: translateX(20px);
53
58
  }
54
59
  ```
55
60
 
56
61
  ### 3. Animated Checkbox Morph
62
+
57
63
  Use an SVG path draw-on keyframe when checked:
64
+
58
65
  ```css
59
66
  .checkbox-svg-path {
60
67
  stroke-dasharray: 24;
61
68
  stroke-dashoffset: 24;
62
69
  transition: stroke-dashoffset 180ms ease-out;
63
70
  }
64
- [data-state="checked"] .checkbox-svg-path {
71
+ [data-state='checked'] .checkbox-svg-path {
65
72
  stroke-dashoffset: 0;
66
73
  }
67
74
  ```
68
75
 
69
76
  ### 4. Origin-Aware Popover / Dropdown
77
+
70
78
  Popovers scale out from their trigger source using CSS variables:
79
+
71
80
  ```css
72
81
  .popover-content {
73
82
  transform-origin: var(--radix-popover-content-transform-origin, center top);
@@ -75,8 +84,14 @@ Popovers scale out from their trigger source using CSS variables:
75
84
  }
76
85
 
77
86
  @keyframes popover-enter {
78
- from { opacity: 0; transform: scale(0.95); }
79
- to { opacity: 1; transform: scale(1); }
87
+ from {
88
+ opacity: 0;
89
+ transform: scale(0.95);
90
+ }
91
+ to {
92
+ opacity: 1;
93
+ transform: scale(1);
94
+ }
80
95
  }
81
96
  ```
82
97
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before designing mobile interfaces or writing React Native code, you MUST inspect:
23
+
23
24
  1. Reanimated 3 & Worklet Rules (Section 47) → Execute animations on the UI thread using Reanimated 3 worklets; ban legacy `Animated.View`
24
25
  2. List Optimization (Section 32) → Use `@shopify/flash-list` with required `estimatedItemSize` instead of `ScrollView` or `FlatList`
25
26
  3. Safe Area Insets (Section 100) → Always wrap content with `useSafeAreaInsets()` to accommodate notch, dynamic island, and home indicators
@@ -47,13 +48,13 @@ Before designing mobile interfaces or writing React Native code, you MUST inspec
47
48
  ### FlashList (Required for Lists)
48
49
 
49
50
  ```tsx
50
- import { FlashList } from "@shopify/flash-list";
51
+ import { FlashList } from '@shopify/flash-list';
51
52
  <FlashList
52
53
  data={items}
53
54
  renderItem={({ item }) => <ItemCard item={item} />}
54
55
  estimatedItemSize={100} // REQUIRED — measure actual item height first
55
- keyExtractor={(item) => item.id}
56
- getItemType={(item) => item.type} // multi-type optimization
56
+ keyExtractor={item => item.id}
57
+ getItemType={item => item.type} // multi-type optimization
57
58
  />;
58
59
  // ❌ NEVER: <ScrollView>{items.map(...)}</ScrollView> for lists
59
60
  // ❌ NEVER: <FlatList> for perf-critical lists — FlashList is 5-10x faster
@@ -62,7 +63,13 @@ import { FlashList } from "@shopify/flash-list";
62
63
  ### Reanimated 3 — Worklet Animations (Required for 120Hz)
63
64
 
64
65
  ```tsx
65
- import { useSharedValue, useAnimatedStyle, withSpring, withTiming, runOnJS } from "react-native-reanimated";
66
+ import {
67
+ useSharedValue,
68
+ useAnimatedStyle,
69
+ withSpring,
70
+ withTiming,
71
+ runOnJS,
72
+ } from 'react-native-reanimated';
66
73
 
67
74
  // Shared values run on the UI thread — never on JS thread
68
75
  const scale = useSharedValue(1);
@@ -99,7 +106,7 @@ scale.value = withSpring(1, {}, onComplete);
99
106
  ## Haptics
100
107
 
101
108
  ```tsx
102
- import * as Haptics from "expo-haptics";
109
+ import * as Haptics from 'expo-haptics';
103
110
  // light → switch toggle, tap feedback
104
111
  // medium → selection change, confirm
105
112
  // heavy → destructive action, strong confirm
@@ -115,18 +122,22 @@ Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success); // save com
115
122
  ## Safe Areas & Platform Layout
116
123
 
117
124
  ```tsx
118
- import { useSafeAreaInsets } from "react-native-safe-area-context";
119
- import { Platform, StatusBar } from "react-native";
125
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
126
+ import { Platform, StatusBar } from 'react-native';
120
127
 
121
128
  function Screen() {
122
129
  const insets = useSafeAreaInsets();
123
- return <View style={{ paddingTop: insets.top, paddingBottom: insets.bottom }}>{/* Content safe from Dynamic Island, home indicator, status bar */}</View>;
130
+ return (
131
+ <View style={{ paddingTop: insets.top, paddingBottom: insets.bottom }}>
132
+ {/* Content safe from Dynamic Island, home indicator, status bar */}
133
+ </View>
134
+ );
124
135
  }
125
136
  // Android status bar
126
- const STATUS_BAR_HEIGHT = Platform.OS === "android" ? (StatusBar.currentHeight ?? 24) : 0;
137
+ const STATUS_BAR_HEIGHT = Platform.OS === 'android' ? (StatusBar.currentHeight ?? 24) : 0;
127
138
 
128
139
  // Foldable/tablet — dual pane
129
- import { useWindowDimensions } from "react-native";
140
+ import { useWindowDimensions } from 'react-native';
130
141
  function AdaptiveLayout() {
131
142
  const { width } = useWindowDimensions();
132
143
  const isTablet = width >= 600;
@@ -160,17 +171,17 @@ function AdaptiveLayout() {
160
171
  // app/(modal)/settings.tsx — modal group
161
172
 
162
173
  // Stack navigation with gesture
163
- import { Stack } from "expo-router";
164
- <Stack screenOptions={{ headerShown: false, animation: "slide_from_right" }}>
174
+ import { Stack } from 'expo-router';
175
+ <Stack screenOptions={{ headerShown: false, animation: 'slide_from_right' }}>
165
176
  <Stack.Screen name="(tabs)" />
166
- <Stack.Screen name="[id]" options={{ presentation: "modal" }} />
177
+ <Stack.Screen name="[id]" options={{ presentation: 'modal' }} />
167
178
  </Stack>;
168
179
 
169
180
  // Deep linking (Expo Router handles automatically via app.json scheme)
170
181
  // ❌ TRAP: Don't use react-navigation Link for deep links in Expo Router — use expo-router Link
171
- import { Link, useRouter } from "expo-router";
182
+ import { Link, useRouter } from 'expo-router';
172
183
  const router = useRouter();
173
- router.push("/user/42");
184
+ router.push('/user/42');
174
185
  ```
175
186
 
176
187
  ---
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before organizing workspace packages or writing Turborepo/pnpm configs, you MUST inspect:
23
+
23
24
  1. Internal Package Protocol (Section 128) → Reference internal monorepo dependencies via `"workspace:*"` protocol and mark them `"private": true`
24
25
  2. Topological Task Dependencies (Section 146) → Define topological ordering (`"^build"`) in `turbo.json` to ensure dependencies build before consumers
25
26
  3. Domain-Focused Package Partitioning (Section 261) → Divide shared code into domain packages (`packages/ui`, `packages/db`, `packages/utils`); ban single monolithic `packages/shared` dumpsters
@@ -93,8 +94,8 @@ my-monorepo/
93
94
  ```yaml
94
95
  # pnpm-workspace.yaml
95
96
  packages:
96
- - "apps/*"
97
- - "packages/*"
97
+ - 'apps/*'
98
+ - 'packages/*'
98
99
  ```
99
100
 
100
101
  ```json
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before implementing morphing icon components, you MUST inspect:
23
+
23
24
  1. Target states (e.g. Hamburger Menu <-> Close X, Play <-> Pause) → Verify matching SVG path point count and coordinate bounds
24
25
  2. Accessibility (Section 65) → Ensure `aria-label` updates dynamically alongside state changes
25
26
  3. Interpolation Curves → Use snappy ease-out curves (`cubic-bezier(0.16, 1, 0.3, 1)`) with duration $\le 200\text{ms}$
@@ -31,32 +32,41 @@ Architect crisp, interactive SVG icon components that morph seamlessly between o
31
32
  ## The Hamburger Menu <-> Close X Morph Recipe
32
33
 
33
34
  ```tsx
34
- import React from "react";
35
- import { motion } from "framer-motion";
35
+ import React from 'react';
36
+ import { motion } from 'framer-motion';
36
37
 
37
38
  export function MenuToCloseIcon({ isOpen, onClick }: { isOpen: boolean; onClick: () => void }) {
38
39
  return (
39
40
  <button
40
41
  onClick={onClick}
41
42
  className="p-2 rounded-lg hover:bg-neutral-100 dark:hover:bg-neutral-800 transition-colors"
42
- aria-label={isOpen ? "Close menu" : "Open menu"}
43
+ aria-label={isOpen ? 'Close menu' : 'Open menu'}
43
44
  >
44
45
  <svg className="w-6 h-6 stroke-current stroke-2 fill-none" viewBox="0 0 24 24">
45
46
  {/* Top Line -> Top diagonal of X */}
46
47
  <motion.line
47
- x1="4" y1="6" x2="20" y2="6"
48
+ x1="4"
49
+ y1="6"
50
+ x2="20"
51
+ y2="6"
48
52
  animate={isOpen ? { x1: 6, y1: 6, x2: 18, y2: 18 } : { x1: 4, y1: 6, x2: 20, y2: 6 }}
49
53
  transition={{ duration: 0.2, ease: [0.16, 1, 0.3, 1] }}
50
54
  />
51
55
  {/* Middle Line -> Fade out */}
52
56
  <motion.line
53
- x1="4" y1="12" x2="20" y2="12"
57
+ x1="4"
58
+ y1="12"
59
+ x2="20"
60
+ y2="12"
54
61
  animate={isOpen ? { opacity: 0, x: -4 } : { opacity: 1, x: 0 }}
55
62
  transition={{ duration: 0.15 }}
56
63
  />
57
64
  {/* Bottom Line -> Bottom diagonal of X */}
58
65
  <motion.line
59
- x1="4" y1="18" x2="20" y2="18"
66
+ x1="4"
67
+ y1="18"
68
+ x2="20"
69
+ y2="18"
60
70
  animate={isOpen ? { x1: 6, y1: 18, x2: 18, y2: 6 } : { x1: 4, y1: 18, x2: 20, y2: 18 }}
61
71
  transition={{ duration: 0.2, ease: [0.16, 1, 0.3, 1] }}
62
72
  />
@@ -21,6 +21,7 @@ scripts-binding:
21
21
  ## Mandatory Pre-Flight Context Inspection
22
22
 
23
23
  Before engineering web animations or selecting motion libraries, you MUST inspect:
24
+
24
25
  1. Master Library Decision Matrix (Section 29) → Select appropriate library (Framer Motion, GSAP, View Transitions API, Lottie) based on interaction category
25
26
  2. 120fps GPU Compositing Rule (Section 181) → Restrict animations strictly to `transform` and `opacity` to avoid layout thrashing
26
27
  3. Accessibility & `prefers-reduced-motion` (Section 158) → Ensure fallback to instant opacity or no-op motion for reduced-motion preference
@@ -80,7 +81,11 @@ Used for immediate feedback, clarifying actions, and improving perceived respons
80
81
 
81
82
  ```tsx
82
83
  // Framer Motion — button with spring micro-interaction
83
- <motion.button whileHover={{ scale: 1.02, filter: "brightness(1.08)" }} whileTap={{ scale: 0.97 }} transition={{ type: "spring", stiffness: 400, damping: 17 }}>
84
+ <motion.button
85
+ whileHover={{ scale: 1.02, filter: 'brightness(1.08)' }}
86
+ whileTap={{ scale: 0.97 }}
87
+ transition={{ type: 'spring', stiffness: 400, damping: 17 }}
88
+ >
84
89
  Submit
85
90
  </motion.button>
86
91
  ```
@@ -91,18 +96,18 @@ Triggers narrative flow and depth based on user scrolling.
91
96
 
92
97
  ```javascript
93
98
  // GSAP ScrollTrigger — industry standard
94
- gsap.from(".reveal-section", {
95
- scrollTrigger: { trigger: ".reveal-section", start: "top 80%", scrub: 1 },
99
+ gsap.from('.reveal-section', {
100
+ scrollTrigger: { trigger: '.reveal-section', start: 'top 80%', scrub: 1 },
96
101
  y: 60,
97
102
  opacity: 0,
98
103
  stagger: 0.1,
99
104
  });
100
105
 
101
106
  // Lenis — smooth scroll compatible with GSAP
102
- import Lenis from "lenis";
107
+ import Lenis from 'lenis';
103
108
  const lenis = new Lenis({ lerp: 0.1, wheelMultiplier: 0.8 });
104
- lenis.on("scroll", ScrollTrigger.update);
105
- gsap.ticker.add((time) => lenis.raf(time * 1000));
109
+ lenis.on('scroll', ScrollTrigger.update);
110
+ gsap.ticker.add(time => lenis.raf(time * 1000));
106
111
  gsap.ticker.lagSmoothing(0);
107
112
  ```
108
113
 
@@ -146,9 +151,9 @@ function navigateWithTransition(url: string, navigate: (path: string) => void) {
146
151
  display: none;
147
152
  opacity: 0;
148
153
  transform: scale(0.95);
149
- transition:
150
- opacity 0.2s ease,
151
- transform 0.2s cubic-bezier(0.2, 0.8, 0.4, 1),
154
+ transition:
155
+ opacity 0.2s ease,
156
+ transform 0.2s cubic-bezier(0.2, 0.8, 0.4, 1),
152
157
  display 0.2s allow-discrete;
153
158
  }
154
159
 
@@ -174,16 +179,16 @@ function navigateWithTransition(url: string, navigate: (path: string) => void) {
174
179
  Always respect `prefers-reduced-motion`. Fall back to instant opacity or no-op motion.
175
180
 
176
181
  ```tsx
177
- import { useReducedMotion } from "motion/react";
182
+ import { useReducedMotion } from 'motion/react';
178
183
 
179
184
  function AccessibleComponent() {
180
185
  const shouldReduceMotion = useReducedMotion();
181
-
186
+
182
187
  return (
183
188
  <motion.div
184
- animate={{
185
- x: shouldReduceMotion ? 0 : 100,
186
- opacity: 1
189
+ animate={{
190
+ x: shouldReduceMotion ? 0 : 100,
191
+ opacity: 1,
187
192
  }}
188
193
  transition={{ duration: shouldReduceMotion ? 0 : 0.3 }}
189
194
  />
@@ -220,4 +225,3 @@ function AccessibleComponent() {
220
225
  ### 🛑 Verification-Before-Completion (VBC) Protocol
221
226
 
222
227
  Inspect motion frame performance in DevTools Rendering tab to verify 60/120fps compositor execution without layout thrashing.
223
-
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before engineering Next.js 15+ App Router code, you MUST inspect:
23
+
23
24
  1. Client Boundary rules (`"use client"` vs Server Components) → Use Server Components by default; add `"use client"` only for interactivity/hooks
24
25
  2. Server Actions Validation (Section 68) → Always include `"use server"` and validate form inputs with Zod (`Schema.safeParse`)
25
26
  3. Next.js 15 Caching & Dynamic APIs (Section 106) → `fetch()` is UNCACHED by default in Next.js 15; `cookies()` and `headers()` are `async`
@@ -64,7 +65,7 @@ app/
64
65
  export default function Page() {
65
66
  return (
66
67
  <ClientSidebar>
67
- {" "}
68
+ {' '}
68
69
  {/* "use client" */}
69
70
  <ServerStats /> {/* Server: zero JS bundle, fetches DB */}
70
71
  </ClientSidebar>
@@ -77,19 +78,19 @@ export default function Page() {
77
78
  ## Server Actions (Mutations)
78
79
 
79
80
  ```tsx
80
- "use server";
81
- import { revalidatePath } from "next/cache";
82
- import { z } from "zod";
81
+ 'use server';
82
+ import { revalidatePath } from 'next/cache';
83
+ import { z } from 'zod';
83
84
 
84
85
  const Schema = z.object({ name: z.string().min(2) });
85
86
 
86
87
  export async function createUser(prevState: any, formData: FormData) {
87
88
  // ❌ TRAP: ALWAYS validate formData. Never trust client input.
88
- const parsed = Schema.safeParse({ name: formData.get("name") });
89
+ const parsed = Schema.safeParse({ name: formData.get('name') });
89
90
  if (!parsed.success) return { errors: parsed.error.flatten().fieldErrors };
90
91
 
91
92
  await db.user.create({ data: parsed.data });
92
- revalidatePath("/users"); // Clears cache so next render shows new user
93
+ revalidatePath('/users'); // Clears cache so next render shows new user
93
94
  return { success: true };
94
95
  }
95
96
  ```
@@ -97,9 +98,9 @@ export async function createUser(prevState: any, formData: FormData) {
97
98
  Client usage (React 19):
98
99
 
99
100
  ```tsx
100
- "use client";
101
- import { useActionState } from "react";
102
- import { createUser } from "./actions";
101
+ 'use client';
102
+ import { useActionState } from 'react';
103
+ import { createUser } from './actions';
103
104
 
104
105
  export function UserForm() {
105
106
  const [state, formAction, isPending] = useActionState(createUser, null);
@@ -120,13 +121,17 @@ export function UserForm() {
120
121
  ```tsx
121
122
  // Next.js 15 caching defaults
122
123
  const dynamic = await fetch(url); // 15 default: NO CACHE
123
- const static = await fetch(url, { cache: "force-cache" }); // Static
124
+ const static = await fetch(url, { cache: 'force-cache' }); // Static
124
125
  const isr = await fetch(url, { next: { revalidate: 3600 } }); // Revalidate every hour
125
- const tagged = await fetch(url, { next: { tags: ["user-1"] } }); // On-demand via revalidateTag()
126
+ const tagged = await fetch(url, { next: { tags: ['user-1'] } }); // On-demand via revalidateTag()
126
127
 
127
128
  // DB calls without fetch
128
- import { unstable_cache } from "next/cache";
129
- const getCachedUser = unstable_cache(async (id) => db.user.findUnique({ where: { id } }), ["user-cache-key"], { revalidate: 60, tags: ["users"] });
129
+ import { unstable_cache } from 'next/cache';
130
+ const getCachedUser = unstable_cache(
131
+ async id => db.user.findUnique({ where: { id } }),
132
+ ['user-cache-key'],
133
+ { revalidate: 60, tags: ['users'] },
134
+ );
130
135
  ```
131
136
 
132
137
  ### Waterfall Elimination
@@ -160,11 +165,11 @@ PPR static-generates the route shell and streams dynamic parts.
160
165
  export default { experimental: { ppr: true } };
161
166
 
162
167
  // Any component reading cookies/headers inside a Suspense boundary becomes a dynamic hole
163
- import { cookies } from "next/headers";
168
+ import { cookies } from 'next/headers';
164
169
 
165
170
  async function Cart() {
166
171
  const c = await cookies(); // Next.js 15 cookies are async!
167
- const cartId = c.get("cartId");
172
+ const cartId = c.get('cartId');
168
173
  }
169
174
 
170
175
  export default function Page() {
@@ -185,18 +190,18 @@ export default function Page() {
185
190
 
186
191
  ```typescript
187
192
  // middleware.ts (Root of project)
188
- import { NextResponse } from "next/server";
189
- import type { NextRequest } from "next/server";
193
+ import { NextResponse } from 'next/server';
194
+ import type { NextRequest } from 'next/server';
190
195
 
191
196
  export function middleware(req: NextRequest) {
192
- const token = req.cookies.get("auth-token");
193
- if (!token && req.nextUrl.pathname.startsWith("/dashboard")) {
194
- return NextResponse.redirect(new URL("/login", req.url));
197
+ const token = req.cookies.get('auth-token');
198
+ if (!token && req.nextUrl.pathname.startsWith('/dashboard')) {
199
+ return NextResponse.redirect(new URL('/login', req.url));
195
200
  }
196
201
  }
197
202
 
198
203
  export const config = {
199
- matcher: ["/dashboard/:path*"], // Strict matcher is critical for performance
204
+ matcher: ['/dashboard/:path*'], // Strict matcher is critical for performance
200
205
  };
201
206
  ```
202
207