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 creating or editing ScrollTrigger animations, you MUST inspect:
23
+
23
24
  1. Plugin Registration Requirement (Section 22) → Explicitly execute `gsap.registerPlugin(ScrollTrigger)` once at root; ban unregistered plugin usage
24
25
  2. Child Tween ScrollTrigger Ban (Section 288) → Attach `scrollTrigger` to top-level timeline/tweens ONLY; ban attaching `scrollTrigger` to child timeline steps
25
26
  3. Horizontal Ease-None Rule (Section 226) → Enforce `ease: "none"` on horizontal scrolling tweens; ban custom easing on containerAnimation tweens
@@ -45,14 +46,14 @@ gsap.registerPlugin(ScrollTrigger);
45
46
  Tie a tween or timeline to scroll position:
46
47
 
47
48
  ```javascript
48
- gsap.to(".box", {
49
+ gsap.to('.box', {
49
50
  x: 500,
50
51
  duration: 1,
51
52
  scrollTrigger: {
52
- trigger: ".box",
53
- start: "top center", // when top of trigger hits center of viewport
54
- end: "bottom center", // when the bottom of the trigger hits the center of the viewport
55
- toggleActions: "play reverse play reverse", // onEnter play, onLeave reverse, onEnterBack play, onLeaveBack reverse
53
+ trigger: '.box',
54
+ start: 'top center', // when top of trigger hits center of viewport
55
+ end: 'bottom center', // when the bottom of the trigger hits the center of the viewport
56
+ toggleActions: 'play reverse play reverse', // onEnter play, onLeave reverse, onEnterBack play, onLeaveBack reverse
56
57
  },
57
58
  });
58
59
  ```
@@ -89,10 +90,10 @@ Main properties for the `scrollTrigger` config object (shorthand: `scrollTrigger
89
90
 
90
91
  ```javascript
91
92
  ScrollTrigger.create({
92
- trigger: "#id",
93
- start: "top top",
94
- end: "bottom 50%+=100px",
95
- onUpdate: (self) => console.log(self.progress.toFixed(3), self.direction),
93
+ trigger: '#id',
94
+ start: 'top top',
95
+ end: 'bottom 50%+=100px',
96
+ onUpdate: self => console.log(self.progress.toFixed(3), self.direction),
96
97
  });
97
98
  ```
98
99
 
@@ -114,26 +115,26 @@ ScrollTrigger.create({
114
115
  - **batchMax** (Number | Function) — Max elements per batch. When full, the callback fires and the next batch starts. Use a **function** that returns a number for responsive layouts; it runs on refresh (resize, tab focus, etc.).
115
116
 
116
117
  ```javascript
117
- ScrollTrigger.batch(".box", {
118
+ ScrollTrigger.batch('.box', {
118
119
  onEnter: (elements, triggers) => {
119
120
  gsap.to(elements, { opacity: 1, y: 0, stagger: 0.15 });
120
121
  },
121
122
  onLeave: (elements, triggers) => {
122
123
  gsap.to(elements, { opacity: 0, y: 100 });
123
124
  },
124
- start: "top 80%",
125
- end: "bottom 20%",
125
+ start: 'top 80%',
126
+ end: 'bottom 20%',
126
127
  });
127
128
  ```
128
129
 
129
130
  With **batchMax** and **interval** for finer control:
130
131
 
131
132
  ```javascript
132
- ScrollTrigger.batch(".card", {
133
+ ScrollTrigger.batch('.card', {
133
134
  interval: 0.1,
134
135
  batchMax: 4,
135
- onEnter: (batch) => gsap.to(batch, { opacity: 1, y: 0, stagger: 0.1, overwrite: true }),
136
- onLeaveBack: (batch) => gsap.set(batch, { opacity: 0, y: 50, overwrite: true }),
136
+ onEnter: batch => gsap.to(batch, { opacity: 1, y: 0, stagger: 0.1, overwrite: true }),
137
+ onLeaveBack: batch => gsap.set(batch, { opacity: 0, y: 50, overwrite: true }),
137
138
  });
138
139
  ```
139
140
 
@@ -176,12 +177,12 @@ See [ScrollTrigger.scrollerProxy()](https://gsap.com/docs/v3/Plugins/ScrollTrigg
176
177
  Scrub ties animation progress to scroll. Use for “scroll-driven” feel:
177
178
 
178
179
  ```javascript
179
- gsap.to(".box", {
180
+ gsap.to('.box', {
180
181
  x: 500,
181
182
  scrollTrigger: {
182
- trigger: ".box",
183
- start: "top center",
184
- end: "bottom center",
183
+ trigger: '.box',
184
+ start: 'top center',
185
+ end: 'bottom center',
185
186
  scrub: true, // or number (smoothness delay in seconds), so 0.5 means it'd take 0.5 seconds to "catch up" to the current scroll position.
186
187
  },
187
188
  });
@@ -227,14 +228,14 @@ Drive a timeline with scroll and optional scrub:
227
228
  ```javascript
228
229
  const tl = gsap.timeline({
229
230
  scrollTrigger: {
230
- trigger: ".container",
231
- start: "top top",
232
- end: "+=2000",
231
+ trigger: '.container',
232
+ start: 'top top',
233
+ end: '+=2000',
233
234
  scrub: 1,
234
235
  pin: true,
235
236
  },
236
237
  });
237
- tl.to(".a", { x: 100 }).to(".b", { y: 50 }).to(".c", { opacity: 0 });
238
+ tl.to('.a', { x: 100 }).to('.b', { y: 50 }).to('.c', { opacity: 0 });
238
239
  ```
239
240
 
240
241
  The timeline’s progress is tied to scroll through the trigger’s start/end range.
@@ -251,27 +252,27 @@ A common pattern: **pin** a section, then as the user scrolls **vertically**, co
251
252
  4. To trigger things based on the horizontal movement caused by that tween, set **containerAnimation** to that tween.
252
253
 
253
254
  ```javascript
254
- const scrollingEl = document.querySelector(".horizontal-el");
255
+ const scrollingEl = document.querySelector('.horizontal-el');
255
256
  // Panel = pinned viewport-sized section. .horizontal-wrap = inner content that moves left.
256
257
  const scrollTween = gsap.to(scrollingEl, {
257
258
  xPercent: () => Max.max(0, window.innerWidth - scrollingEl.offsetWidth),
258
- ease: "none", // ease: "none" is required
259
+ ease: 'none', // ease: "none" is required
259
260
  scrollTrigger: {
260
261
  trigger: scrollingEl,
261
262
  pin: scrollingEl.parentNode, // wrapper so that we're not animating the pinned element
262
- start: "top top",
263
- end: "+=1000",
263
+ start: 'top top',
264
+ end: '+=1000',
264
265
  },
265
266
  });
266
267
 
267
268
  // other tweens that trigger based on horizontal movement should reference the containerAnimation:
268
- gsap.to(".nested-el-1", {
269
+ gsap.to('.nested-el-1', {
269
270
  y: 100,
270
271
  scrollTrigger: {
271
272
  containerAnimation: scrollTween, // IMPORTANT
272
- trigger: ".nested-wrapper-1",
273
- start: "left center", // based on horizontal movement
274
- toggleActions: "play none none reset",
273
+ trigger: '.nested-wrapper-1',
274
+ start: 'left center', // based on horizontal movement
275
+ toggleActions: 'play none none reset',
275
276
  },
276
277
  });
277
278
  ```
@@ -284,9 +285,9 @@ gsap.to(".nested-el-1", {
284
285
  - When removing animated elements or changing pages (e.g. in SPAs), **kill** associated ScrollTrigger instances so they don’t run on stale elements:
285
286
 
286
287
  ```javascript
287
- ScrollTrigger.getAll().forEach((t) => t.kill());
288
+ ScrollTrigger.getAll().forEach(t => t.kill());
288
289
  // or kill by the id assigned to the ScrollTrigger in its config object like {id: "my-id", ...}
289
- ScrollTrigger.getById("my-id")?.kill();
290
+ ScrollTrigger.getById('my-id')?.kill();
290
291
  ```
291
292
 
292
293
  In React, use the `useGSAP()` hook (@gsap/react NPM package) to ensure proper cleanup automatically, or manually kill in a cleanup (e.g. in useEffect return) when the component unmounts.
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before creating GSAP timelines, you MUST inspect:
23
+
23
24
  1. Position Parameter Syntax (Section 27) → Pass position as the 3rd argument (`"<"`, `">"`, `"+=0.5"`) instead of using hardcoded delays
24
25
  2. Timeline Defaults (Section 45) → Pass `{ defaults: { duration, ease } }` into `gsap.timeline()` constructor to avoid repetitive child declarations
25
26
  3. ScrollTrigger Placement (Section 101) → Place `scrollTrigger` ONLY on the top-level timeline, never on child tweens inside a timeline
@@ -34,7 +35,9 @@ Apply when building multi-step animations, coordinating several tweens in sequen
34
35
 
35
36
  ```javascript
36
37
  const tl = gsap.timeline();
37
- tl.to(".a", { x: 100, duration: 1 }).to(".b", { y: 50, duration: 0.5 }).to(".c", { opacity: 0, duration: 0.3 });
38
+ tl.to('.a', { x: 100, duration: 1 })
39
+ .to('.b', { y: 50, duration: 0.5 })
40
+ .to('.c', { opacity: 0, duration: 0.3 });
38
41
  ```
39
42
 
40
43
  By default, tweens are **appended** one after another. Use the **position parameter** to place tweens at specific times or relative to other tweens.
@@ -51,10 +54,10 @@ Third argument (or position property in vars) controls placement:
51
54
  Examples:
52
55
 
53
56
  ```javascript
54
- tl.to(".a", { x: 100 }, 0); // at 0
55
- tl.to(".b", { y: 50 }, "+=0.5"); // 0.5s after last end
56
- tl.to(".c", { opacity: 0 }, "<"); // same start as previous
57
- tl.to(".d", { scale: 2 }, "<0.2"); // 0.2s after previous start
57
+ tl.to('.a', { x: 100 }, 0); // at 0
58
+ tl.to('.b', { y: 50 }, '+=0.5'); // 0.5s after last end
59
+ tl.to('.c', { opacity: 0 }, '<'); // same start as previous
60
+ tl.to('.d', { scale: 2 }, '<0.2'); // 0.2s after previous start
58
61
  ```
59
62
 
60
63
  ## Timeline Defaults
@@ -62,8 +65,8 @@ tl.to(".d", { scale: 2 }, "<0.2"); // 0.2s after previous start
62
65
  Pass defaults into the timeline so all child tweens inherit:
63
66
 
64
67
  ```javascript
65
- const tl = gsap.timeline({ defaults: { duration: 0.5, ease: "power2.out" } });
66
- tl.to(".a", { x: 100 }).to(".b", { y: 50 }); // both use 0.5s and power2.out
68
+ const tl = gsap.timeline({ defaults: { duration: 0.5, ease: 'power2.out' } });
69
+ tl.to('.a', { x: 100 }).to('.b', { y: 50 }); // both use 0.5s and power2.out
67
70
  ```
68
71
 
69
72
  ## Timeline Options (constructor)
@@ -78,12 +81,12 @@ tl.to(".a", { x: 100 }).to(".b", { y: 50 }); // both use 0.5s and power2.out
78
81
  Add and use labels for readable, maintainable sequencing:
79
82
 
80
83
  ```javascript
81
- tl.addLabel("intro", 0);
82
- tl.to(".a", { x: 100 }, "intro");
83
- tl.addLabel("outro", "+=0.5");
84
- tl.to(".b", { opacity: 0 }, "outro");
85
- tl.play("outro"); // start from "outro"
86
- tl.tweenFromTo("intro", "outro"); // pauses the timeline and returns a new Tween that animates the timeline's playhead from intro to outro with no ease.
84
+ tl.addLabel('intro', 0);
85
+ tl.to('.a', { x: 100 }, 'intro');
86
+ tl.addLabel('outro', '+=0.5');
87
+ tl.to('.b', { opacity: 0 }, 'outro');
88
+ tl.play('outro'); // start from "outro"
89
+ tl.tweenFromTo('intro', 'outro'); // pauses the timeline and returns a new Tween that animates the timeline's playhead from intro to outro with no ease.
87
90
  ```
88
91
 
89
92
  ## Nesting Timelines
@@ -93,9 +96,9 @@ Timelines can contain other timelines.
93
96
  ```javascript
94
97
  const master = gsap.timeline();
95
98
  const child = gsap.timeline();
96
- child.to(".a", { x: 100 }).to(".b", { y: 50 });
99
+ child.to('.a', { x: 100 }).to('.b', { y: 50 });
97
100
  master.add(child, 0);
98
- master.to(".c", { opacity: 0 }, "+=0.2");
101
+ master.to('.c', { opacity: 0 }, '+=0.2');
99
102
  ```
100
103
 
101
104
  ## Controlling Playback
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before using `gsap.utils`, you MUST inspect:
23
+
23
24
  1. Pure Number vs Unit strings (Section 306) → `mapRange` and `normalize` work ONLY on numbers; use `getUnit` and `unitize` for string values with units
24
25
  2. Reusable Function Form (Section 22) → Omit the value argument (or pass `true` as 4th param for `random()`) to get a reusable function for high-frequency loops
25
26
  3. Component Scoping (Section 219) → Use `gsap.utils.selector(containerRef)` inside React components to restrict selector targets
@@ -90,7 +91,7 @@ Interpolates between two values at a given progress (0–1). Handles numbers, co
90
91
 
91
92
  ```javascript
92
93
  gsap.utils.interpolate(0, 100, 0.5); // 50
93
- gsap.utils.interpolate("#ff0000", "#0000ff", 0.5); // mid color
94
+ gsap.utils.interpolate('#ff0000', '#0000ff', 0.5); // mid color
94
95
  gsap.utils.interpolate({ x: 0, y: 0 }, { x: 100, y: 50 }, 0.5); // { x: 50, y: 25 }
95
96
 
96
97
  let lerp = gsap.utils.interpolate(0, 100);
@@ -114,7 +115,7 @@ randomFn(); // random value in range, snapped to 10
114
115
  randomFn(); // another random value
115
116
 
116
117
  // array: pick one value at random
117
- gsap.utils.random(["red", "blue", "green"]); // "red", "blue", or "green"
118
+ gsap.utils.random(['red', 'blue', 'green']); // "red", "blue", or "green"
118
119
  let randomFromArray = gsap.utils.random([0, 100, 200], true);
119
120
  randomFromArray(); // 0, 100, or 200
120
121
  ```
@@ -122,8 +123,8 @@ randomFromArray(); // 0, 100, or 200
122
123
  **String form in tween vars:** use `"random(-100, 100)"`, `"random(-100, 100, 5)"`, or `"random([0, 100, 200])"`; GSAP evaluates it per target.
123
124
 
124
125
  ```javascript
125
- gsap.to(".box", { x: "random(-100, 100, 5)", duration: 1 });
126
- gsap.to(".item", { backgroundColor: "random([red, blue, green])" });
126
+ gsap.to('.box', { x: 'random(-100, 100, 5)', duration: 1 });
127
+ gsap.to('.item', { backgroundColor: 'random([red, blue, green])' });
127
128
  ```
128
129
 
129
130
  ### snap(snapTo, value?)
@@ -142,7 +143,7 @@ snapFn(23); // 20
142
143
  Use in tweens for grid or step-based animation:
143
144
 
144
145
  ```javascript
145
- gsap.to(".x", { x: 200, snap: { x: 20 } });
146
+ gsap.to('.x', { x: 200, snap: { x: 20 } });
146
147
  ```
147
148
 
148
149
  ### shuffle(array)
@@ -173,11 +174,11 @@ gsap.utils.shuffle([1, 2, 3, 4]); // e.g. [3, 1, 4, 2]
173
174
 
174
175
  ```javascript
175
176
  // Scale: middle elements 0.5, outer edges 3 (amount 2.5 distributed from center)
176
- gsap.to(".class", {
177
+ gsap.to('.class', {
177
178
  scale: gsap.utils.distribute({
178
179
  base: 0.5,
179
180
  amount: 2.5,
180
- from: "center",
181
+ from: 'center',
181
182
  }),
182
183
  });
183
184
  ```
@@ -188,10 +189,10 @@ gsap.to(".class", {
188
189
  const distributor = gsap.utils.distribute({
189
190
  base: 50,
190
191
  amount: 100,
191
- from: "center",
192
- ease: "power1.inOut",
192
+ from: 'center',
193
+ ease: 'power1.inOut',
193
194
  });
194
- const targets = gsap.utils.toArray(".box");
195
+ const targets = gsap.utils.toArray('.box');
195
196
  const valueForIndex2 = distributor(2, targets[2], targets);
196
197
  ```
197
198
 
@@ -204,8 +205,8 @@ See [distribute()](https://gsap.com/docs/v3/GSAP/UtilityMethods/distribute/) for
204
205
  Returns the unit string of a value (e.g. `"px"`, `"%"`, `"deg"`). Use when normalizing or converting values.
205
206
 
206
207
  ```javascript
207
- gsap.utils.getUnit("100px"); // "px"
208
- gsap.utils.getUnit("50%"); // "%"
208
+ gsap.utils.getUnit('100px'); // "px"
209
+ gsap.utils.getUnit('50%'); // "%"
209
210
  gsap.utils.getUnit(42); // "" (unitless)
210
211
  ```
211
212
 
@@ -214,8 +215,8 @@ gsap.utils.getUnit(42); // "" (unitless)
214
215
  Appends a unit to a number, or returns the value as-is if it already has a unit. Use when building CSS values or tween end values.
215
216
 
216
217
  ```javascript
217
- gsap.utils.unitize(100, "px"); // "100px"
218
- gsap.utils.unitize("2rem", "px"); // "2rem" (unchanged)
218
+ gsap.utils.unitize(100, 'px'); // "100px"
219
+ gsap.utils.unitize('2rem', 'px'); // "2rem" (unchanged)
219
220
  ```
220
221
 
221
222
  ### splitColor(color, returnHSL?)
@@ -223,10 +224,10 @@ gsap.utils.unitize("2rem", "px"); // "2rem" (unchanged)
223
224
  Converts a color string into an array: **[red, green, blue]** (0–255), or **[red, green, blue, alpha]** (4 elements for RGBA when alpha is present or required). Pass **true** as the second argument (**returnHSL**) to get **[hue, saturation, lightness]** or **[hue, saturation, lightness, alpha]** (HSL/HSLA) instead. Works with `"rgb()"`, `"rgba()"`, `"hsl()"`, `"hsla()"`, hex, and named colors (e.g. `"red"`). Use when animating color components or building gradients. See [splitColor()](https://gsap.com/docs/v3/GSAP/UtilityMethods/splitColor/).
224
225
 
225
226
  ```javascript
226
- gsap.utils.splitColor("red"); // [255, 0, 0]
227
- gsap.utils.splitColor("#6fb936"); // [111, 185, 54]
228
- gsap.utils.splitColor("rgba(204, 153, 51, 0.5)"); // [204, 153, 51, 0.5] (4 elements)
229
- gsap.utils.splitColor("#6fb936", true); // [94, 55, 47] (HSL: hue, saturation, lightness)
227
+ gsap.utils.splitColor('red'); // [255, 0, 0]
228
+ gsap.utils.splitColor('#6fb936'); // [111, 185, 54]
229
+ gsap.utils.splitColor('rgba(204, 153, 51, 0.5)'); // [204, 153, 51, 0.5] (4 elements)
230
+ gsap.utils.splitColor('#6fb936', true); // [94, 55, 47] (HSL: hue, saturation, lightness)
230
231
  ```
231
232
 
232
233
  ## Arrays and Collections
@@ -237,8 +238,8 @@ Returns a scoped selector function that finds elements only within the given ele
237
238
 
238
239
  ```javascript
239
240
  const q = gsap.utils.selector(containerRef);
240
- q(".box"); // array of .box elements inside container
241
- gsap.to(q(".circle"), { x: 100 });
241
+ q('.box'); // array of .box elements inside container
242
+ gsap.to(q('.circle'), { x: 100 });
242
243
  ```
243
244
 
244
245
  ### toArray(value, scope?)
@@ -246,8 +247,8 @@ gsap.to(q(".circle"), { x: 100 });
246
247
  Converts a value to an array: selector string (scoped to element), NodeList, HTMLCollection, single element, or array. Use when passing mixed inputs to GSAP (e.g. targets) and a true array is needed.
247
248
 
248
249
  ```javascript
249
- gsap.utils.toArray(".item"); // array of elements
250
- gsap.utils.toArray(".item", container); // scoped to container
250
+ gsap.utils.toArray('.item'); // array of elements
251
+ gsap.utils.toArray('.item', container); // scoped to container
251
252
  gsap.utils.toArray(nodeList); // [ ... ] from NodeList
252
253
  ```
253
254
 
@@ -257,8 +258,8 @@ Composes functions: **pipe(f1, f2, f3)(value)** returns f3(f2(f1(value))). Use w
257
258
 
258
259
  ```javascript
259
260
  const fn = gsap.utils.pipe(
260
- (v) => gsap.utils.normalize(0, 100, v),
261
- (v) => gsap.utils.snap(0.1, v),
261
+ v => gsap.utils.normalize(0, 100, v),
262
+ v => gsap.utils.snap(0.1, v),
262
263
  );
263
264
  fn(50); // normalized then snapped
264
265
  ```
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before implementing UI component logic, you MUST inspect:
23
+
23
24
  1. Component state tree → Verify presence of explicit loading skeleton, error boundary fallback, and empty states
24
25
  2. CLS Prevention rules (Section 36) → Match skeleton placeholder dimensions exactly to incoming content elements
25
26
  3. String Expansion (i18n) rules (Section 40) → Avoid hardcoded pixel widths (`width: 120px`); use `min-width` and flexible auto-layout
@@ -31,26 +32,31 @@ Ensure UI components gracefully handle network failures, missing data, slow conn
31
32
  ## 5 Resilience Domains
32
33
 
33
34
  ### 1. Zero-Data Empty States
35
+
34
36
  - Never render empty blank slates or blank boxes.
35
37
  - Always render a dedicated empty state component featuring:
36
38
  - Contextual icon or subtle illustration
37
- - Clear heading explaining the zero state (*"No active projects found"*)
38
- - Secondary helper copy (*"Get started by creating your first project."*)
39
- - Prominent primary action CTA button (*"Create Project"*)
39
+ - Clear heading explaining the zero state (_"No active projects found"_)
40
+ - Secondary helper copy (_"Get started by creating your first project."_)
41
+ - Prominent primary action CTA button (_"Create Project"_)
40
42
 
41
43
  ### 2. Error Boundary UI & Retry Hooks
44
+
42
45
  - Wrap high-risk component trees in React/framework Error Boundaries.
43
46
  - Display localized inline error callouts with explicit "Retry" action buttons rather than crashing the full page view.
44
47
 
45
48
  ### 3. Cumulative Layout Shift (CLS) Loading Skeletons
49
+
46
50
  - Match skeleton placeholder dimensions EXACTLY to incoming data elements.
47
51
  - Use animated pulse keyframes (`@keyframes pulse { 0%, 100% { opacity: 1; } 50% { opacity: 0.4; } }`).
48
52
 
49
53
  ### 4. Extreme String Expansion (i18n)
54
+
50
55
  - German, French, and Spanish strings are 30% - 50% longer than English.
51
56
  - Avoid fixed button or container widths (`width: 120px`). Use `min-width` with flexible auto sizing and `flex-wrap: wrap` or text truncation.
52
57
 
53
58
  ### 5. Offline & Network Disconnection Handling
59
+
54
60
  - Detect `navigator.onLine` state and display subtle offline status banners.
55
61
  - Disable mutation buttons during offline mode with explicit tooltip explanation.
56
62
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before operating in Marathon long-running harness mode, you MUST inspect:
23
+
23
24
  1. Active session ledger (`task.md`, `session_manager.js`) → Verify active feature specs and task completion status
24
25
  2. Verification-Before-Completion (VBC) Protocol → Provide concrete proof (test run log, compiler pass) before calling `tk marathon mark pass`
25
26
  3. Error recovery state machine → Escalate unrecoverable errors after 3 retries via `tk marathon mark fail`
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before engineering multilingual or i18n features, you MUST inspect:
23
+
23
24
  1. Dictionary Interpolation (Section 15) → Use ICU parameter interpolation `t('greeting', { name })` instead of string concatenation
24
25
  2. Native `Intl` API Formatting (Section 71) → Use native `Intl.NumberFormat` and `Intl.DateTimeFormat` with active locale instead of third-party string parsers
25
26
  3. Logical CSS Properties for RTL (Section 94) → Use logical properties (`margin-inline-start`, `ms-4`) instead of physical `marginLeft`/`marginRight` for Arabic/Hebrew support
@@ -66,15 +67,15 @@ export function Header({ user, alertCount }) {
66
67
  }
67
68
 
68
69
  // ✅ GOOD: i18n Abstraction (using next-intl)
69
- import { useTranslations } from "next-intl";
70
+ import { useTranslations } from 'next-intl';
70
71
 
71
72
  export function Header({ user, alertCount }) {
72
- const t = useTranslations("Dashboard");
73
+ const t = useTranslations('Dashboard');
73
74
 
74
75
  return (
75
76
  <header>
76
- <h1>{t("welcomeMessage", { name: user.name })}</h1>
77
- <p>{t("unreadAlerts", { count: alertCount })}</p>
77
+ <h1>{t('welcomeMessage', { name: user.name })}</h1>
78
+ <p>{t('unreadAlerts', { count: alertCount })}</p>
78
79
  </header>
79
80
  );
80
81
  }
@@ -88,19 +89,19 @@ Do not install `moment.js` or write massive regex string parsers to format curre
88
89
 
89
90
  ```typescript
90
91
  // Data/Currency Formatting correctly tied to the active locale
91
- const locale = "de-DE";
92
+ const locale = 'de-DE';
92
93
 
93
94
  // ✅ Currency
94
- const price = new Intl.NumberFormat(locale, { style: "currency", currency: "EUR" }).format(1200.5);
95
+ const price = new Intl.NumberFormat(locale, { style: 'currency', currency: 'EUR' }).format(1200.5);
95
96
  // Output in Germany: "1.200,50 €"
96
97
 
97
98
  // ✅ Dates
98
- const date = new Intl.DateTimeFormat(locale, { dateStyle: "full" }).format(new Date());
99
+ const date = new Intl.DateTimeFormat(locale, { dateStyle: 'full' }).format(new Date());
99
100
  // Output in Germany: "Freitag, 2. April 2026"
100
101
 
101
102
  // ✅ Relative Time
102
- const rtf = new Intl.RelativeTimeFormat(locale, { numeric: "auto" });
103
- rtf.format(-2, "day"); // Output: "vorgestern" (the day before yesterday)
103
+ const rtf = new Intl.RelativeTimeFormat(locale, { numeric: 'auto' });
104
+ rtf.format(-2, 'day'); // Output: "vorgestern" (the day before yesterday)
104
105
  ```
105
106
 
106
107
  ---
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before designing or engineering frontend components, you MUST inspect:
23
+
23
24
  1. `DESIGN.md` / `package.json` → Verify OKLCH color palettes, font pairings, and responsive container query setups
24
25
  2. Core Pillars of Impeccable UI (Section 22) → Enforce `tabular-nums` on digits, `text-wrap: balance` on headings, and strict 8px grid math
25
26
  3. Motion & Micro-Interactions (Section 34) → Limit micro-interactions to $\le 160\text{ms}$ and check `prefers-reduced-motion` fallbacks
@@ -31,22 +32,26 @@ The gold standard framework for crafting bespoke, world-class web applications t
31
32
  ## Core Pillars of Impeccable UI
32
33
 
33
34
  ### 1. Typography & Typographic Rhythm
35
+
34
36
  - **Optical Sizing & Tracking**: Large display headings (32px+) require tight letter-spacing (`letter-spacing: -0.03em`). Small caption text (12px) requires positive tracking (`letter-spacing: +0.01em`).
35
37
  - **Tabular Numbers**: Any numeric data that updates, increments, or displays in columns MUST use `font-variant-numeric: tabular-nums` or `font-feature-settings: "tnum"` to prevent visual jitter.
36
38
  - **Text Wrapping & Balance**: Headings MUST use `text-wrap: balance` to prevent typographic orphans. Body paragraphs MUST use `text-wrap: pretty` (where supported) or max `65ch` width.
37
39
 
38
40
  ### 2. Color Systems & Gamut Precision
41
+
39
42
  - **OKLCH Color Space**: Prefer `oklch()` over `hsl()` or `hex` for smooth perceptual uniformity across hue and lightness shifts.
40
43
  - **Subtle Surface Steps**: Define surface colors with small perceptual lightness steps ($L \pm 2\%$) to create hierarchy without harsh dividers.
41
44
  - **Adaptive Contrast**: Text contrast MUST adapt automatically across light/dark themes with high legibility ratios ($\ge 7:1$ for primary, $\ge 4.5:1$ for secondary).
42
45
 
43
46
  ### 3. Motion & Micro-Interactions
47
+
44
48
  - **Intentional Motion**: Animations exist ONLY to convey spatial continuity, provide press feedback, or indicate state changes.
45
49
  - **Duration Constraints**: Micro-interactions $\le 160\text{ms}$; dropdowns/popovers $\le 220\text{ms}$; page transitions $\le 300\text{ms}$.
46
50
  - **Physically Grounded Entrances**: Elements scale in from `scale(0.96)` and opacity `0`, anchored to their trigger origin.
47
51
  - **DOM Entry (@starting-style)**: Use `@starting-style` with `transition-behavior: allow-discrete` for smooth `display: none` to `display: block` entrance animations without JS overhead.
48
52
 
49
53
  ### 4. Layout Mechanics & Spatial Math
54
+
50
55
  - **8px Grid System**: Every margin, padding, gap, and height MUST derive from an 8px grid (or 4px micro-grid).
51
56
  - **Asymmetrical Balance**: Avoid cookie-cutter centered layouts for SaaS apps. Use strong left-aligned structural axes with generous negative space.
52
57
  - **Container Queries**: Components adjust layout based on container size (`@container`), not viewport size (`@media`), making them context-agnostic.
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before refactoring or producing an architectural improvement roadmap, you MUST inspect:
23
+
23
24
  1. Circular Dependency Breaking Rule (Section 24) → Identify circular imports (`A -> B -> C -> A`) and resolve via event buses or explicit interfaces
24
25
  2. Monolithic Controller Line Threshold (500 lines) (Section 27) → Flag any controller/service >500 lines with mixed concerns for immediate decomposition
25
26
  3. Incremental Refactoring Rule (Section 46) → Ban shotgun surgery across >5 files simultaneously; enforce phased, test-backed interface extractions
@@ -33,22 +34,26 @@ Audit an existing codebase for structural rot, circular dependencies, monolithic
33
34
  ## 4 Audit Steps
34
35
 
35
36
  ### 1. Dependency Graph Inspection
37
+
36
38
  - Map import relationships across modules. Identify circular dependencies (`A -> B -> C -> A`) and break them by introducing event buses or interface abstractions.
37
39
 
38
40
  ### 2. Monolithic Controller Detection
41
+
39
42
  - Flag files exceeding 500 lines of code containing mixed concerns (database queries, HTTP response handling, email sending, data validation).
40
43
 
41
44
  ### 3. Interface Shrinking (Deepening Modules)
45
+
42
46
  - Audit public exports. Convert large multi-parameter interfaces into thin, single-responsibility contracts.
43
47
 
44
48
  ### 4. Prioritized Architectural Roadmap Output
49
+
45
50
  Output audit findings in a clear prioritized Markdown table:
46
51
 
47
- | Impact Level | Architectural Issue | Proposed Seam / Refactor |
48
- | --- | --- | --- |
49
- | 🔴 **High Impact** | Direct DB queries inside React Server Components | Extract Repository layer pattern |
50
- | 🟠 **Medium Impact** | Circular import between Auth and User modules | Introduce `EventBus` for user registration events |
51
- | 🟡 **Low Impact** | Hardcoded API base URLs across 12 files | Centralize in typed `ConfigService` |
52
+ | Impact Level | Architectural Issue | Proposed Seam / Refactor |
53
+ | -------------------- | ------------------------------------------------ | ------------------------------------------------- |
54
+ | 🔴 **High Impact** | Direct DB queries inside React Server Components | Extract Repository layer pattern |
55
+ | 🟠 **Medium Impact** | Circular import between Auth and User modules | Introduce `EventBus` for user registration events |
56
+ | 🟡 **Low Impact** | Hardcoded API base URLs across 12 files | Centralize in typed `ConfigService` |
52
57
 
53
58
  ---
54
59
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before auditing UI surfaces or writing remediation plans, you MUST inspect:
23
+
23
24
  1. Read-Only Constraint (Section 24) → Strictly NEVER modify product source code (`src/`, `components/`, `app/`) during an `improve-ui` audit session
24
25
  2. 3-Proof Requirement (Section 40) → Every reported defect MUST present Observation (code line/element), Basis (token/grid violation), and Consequence
25
26
  3. Plan Artifact Output (Section 25) → Write implementation plans to `design-plans/` or output structured markdown for execution
@@ -39,21 +40,27 @@ Audit a specific product surface against its governing design tokens and guideli
39
40
  ## 2. The 4-Phase Audit Protocol
40
41
 
41
42
  ### Phase 1: Surface Selection & Path Tracing
43
+
42
44
  1. Focus on one deployable application and one coherent surface family (e.g. `Dashboard / Overview`).
43
45
  2. Trace the path from route layout $\rightarrow$ page composition $\rightarrow$ shared UI primitives $\rightarrow$ tokens/CSS variables.
44
46
 
45
47
  ### Phase 2: Design Language Reconstruction
48
+
46
49
  1. Inspect `DESIGN.md`, `index.css`, Tailwind tokens, or custom properties.
47
50
  2. Record active background tokens, typography roles, spatial rules, and border/shadow contracts.
48
51
 
49
52
  ### Phase 3: Proof-Gated Defect Verification
53
+
50
54
  Before reporting a finding, require 3 explicit proofs:
55
+
51
56
  - **Observation**: Exact code line or rendered element showing the discrepancy.
52
57
  - **Basis**: Violation of documented design token or 8px grid baseline.
53
58
  - **Consequence**: Measurable degradation of visual hierarchy, readability, or interaction response.
54
59
 
55
60
  ### Phase 4: Implementation Plan Generation
61
+
56
62
  Write a self-contained plan specifying:
63
+
57
64
  - Files to modify
58
65
  - Exact CSS/JSX diffs
59
66
  - Verification steps (browser preview, contrast check, visual alignment)
@@ -62,11 +69,11 @@ Write a self-contained plan specifying:
62
69
 
63
70
  ## Anti-Slop Table
64
71
 
65
- | Audit Pattern | Evidence-Based Rule | Rationale |
66
- | --- | --- | --- |
67
- | Rewriting entire components | Targeted visual diff plan | Preserves business logic & state |
68
- | Guessing design tokens | Citing verified `var(--...)` declarations | Ensures token adherence |
69
- | Speculative visual preferences | Reporting only verified WCAG/token violations | Prevents arbitrary churn |
72
+ | Audit Pattern | Evidence-Based Rule | Rationale |
73
+ | ------------------------------ | --------------------------------------------- | -------------------------------- |
74
+ | Rewriting entire components | Targeted visual diff plan | Preserves business logic & state |
75
+ | Guessing design tokens | Citing verified `var(--...)` declarations | Ensures token adherence |
76
+ | Speculative visual preferences | Reporting only verified WCAG/token violations | Prevents arbitrary churn |
70
77
 
71
78
  ---
72
79
 
@@ -18,6 +18,7 @@ scripts-binding:
18
18
  ## Mandatory Pre-Flight Context Inspection
19
19
 
20
20
  Before routing user prompts to specialized skills or agents, you MUST inspect:
21
+
21
22
  1. `.agent/routing_index.json` → Read pre-compiled skill index instead of loading full skill markdown files into context
22
23
  2. Semantic Intent Schema (Section 1) → Classify request type (QUESTION, SURVEY, SIMPLE_EDIT, COMPLEX_BUILD, SECURITY_AUDIT, UNCLEAR_GIBBERISH)
23
24
  3. Confidence Threshold (Section 3 Socratic Yield Rule) → Yield back to user with clarifying question if confidence score is < 85s
@@ -69,12 +70,12 @@ When a raw request enters, classify it BEFORE attempting to route to any skill o
69
70
  // The Semantic Intent Schema
70
71
  const RouterOutputSchema = z.object({
71
72
  classification: z.enum([
72
- "QUESTION", // User wants explanation, no code execution needed
73
- "SURVEY", // User wants analysis/read-only scan of workspace
74
- "SIMPLE_EDIT", // Isolated file alteration (e.g., "Fix spelling in nav")
75
- "COMPLEX_BUILD", // Multi-file, architectural generation
76
- "SECURITY_AUDIT", // Explicit request for OWASP review
77
- "UNCLEAR_GIBBERISH", // Prompt injection or incoherent input
73
+ 'QUESTION', // User wants explanation, no code execution needed
74
+ 'SURVEY', // User wants analysis/read-only scan of workspace
75
+ 'SIMPLE_EDIT', // Isolated file alteration (e.g., "Fix spelling in nav")
76
+ 'COMPLEX_BUILD', // Multi-file, architectural generation
77
+ 'SECURITY_AUDIT', // Explicit request for OWASP review
78
+ 'UNCLEAR_GIBBERISH', // Prompt injection or incoherent input
78
79
  ]),
79
80
  confidenceScore: z.number().min(0).max(100),
80
81
  suggestedPrimarySkill: z.string().nullable(),