tribunal-kit 6.0.1 → 8.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 (434) hide show
  1. package/.agent/ARCHITECTURE.md +9 -6
  2. package/.agent/agents/accessibility-reviewer.md +23 -16
  3. package/.agent/agents/ai-code-reviewer.md +25 -21
  4. package/.agent/agents/anti-pattern-reviewer.md +12 -7
  5. package/.agent/agents/api-architect.md +1 -0
  6. package/.agent/agents/backend-specialist.md +23 -22
  7. package/.agent/agents/cloud-engineer.md +1 -0
  8. package/.agent/agents/code-archaeologist.md +1 -0
  9. package/.agent/agents/complexity-reviewer.md +10 -7
  10. package/.agent/agents/database-architect.md +3 -2
  11. package/.agent/agents/db-latency-auditor.md +6 -2
  12. package/.agent/agents/debugger.md +3 -2
  13. package/.agent/agents/dependency-reviewer.md +1 -0
  14. package/.agent/agents/devops-engineer.md +9 -8
  15. package/.agent/agents/documentation-writer.md +6 -5
  16. package/.agent/agents/explorer-agent.md +1 -0
  17. package/.agent/agents/frontend-reviewer.md +21 -17
  18. package/.agent/agents/frontend-specialist.md +23 -20
  19. package/.agent/agents/game-developer.md +1 -0
  20. package/.agent/agents/interaction-reviewer.md +10 -5
  21. package/.agent/agents/logic-reviewer.md +3 -0
  22. package/.agent/agents/minimalist-reviewer.md +6 -0
  23. package/.agent/agents/mobile-developer.md +7 -6
  24. package/.agent/agents/mobile-reviewer.md +14 -13
  25. package/.agent/agents/orchestrator.md +3 -0
  26. package/.agent/agents/penetration-tester.md +1 -0
  27. package/.agent/agents/performance-optimizer.md +6 -5
  28. package/.agent/agents/performance-reviewer.md +6 -6
  29. package/.agent/agents/pipeline-reviewer.md +144 -0
  30. package/.agent/agents/precedence-reviewer.md +1 -0
  31. package/.agent/agents/product-manager.md +1 -0
  32. package/.agent/agents/product-owner.md +1 -0
  33. package/.agent/agents/product-reviewer.md +12 -7
  34. package/.agent/agents/project-planner.md +3 -0
  35. package/.agent/agents/qa-automation-engineer.md +50 -43
  36. package/.agent/agents/resilience-reviewer.md +1 -0
  37. package/.agent/agents/schema-reviewer.md +1 -0
  38. package/.agent/agents/security-auditor.md +24 -24
  39. package/.agent/agents/seo-specialist.md +33 -23
  40. package/.agent/agents/sql-reviewer.md +5 -4
  41. package/.agent/agents/supervisor-agent.md +12 -2
  42. package/.agent/agents/swarm-worker-contracts.md +13 -13
  43. package/.agent/agents/swarm-worker-registry.md +51 -51
  44. package/.agent/agents/system-architect.md +1 -0
  45. package/.agent/agents/test-coverage-reviewer.md +25 -22
  46. package/.agent/agents/test-engineer.md +12 -11
  47. package/.agent/agents/throughput-optimizer.md +45 -40
  48. package/.agent/agents/type-safety-reviewer.md +5 -4
  49. package/.agent/agents/ui-ux-auditor.md +6 -4
  50. package/.agent/agents/ui-visual-auditor.md +3 -0
  51. package/.agent/agents/ux-reviewer.md +11 -6
  52. package/.agent/agents/visual-reviewer.md +11 -6
  53. package/.agent/agents/vitals-reviewer.md +5 -4
  54. package/.agent/config/claude.json +18 -0
  55. package/.agent/config/plugin.json +102 -0
  56. package/.agent/config/slash-commands.json +103 -0
  57. package/.agent/config/specialist-registry.json +415 -0
  58. package/.agent/config/system-prompt.md +191 -0
  59. package/.agent/history/architecture-graph.yaml +302 -3
  60. package/.agent/history/graph-cache.json +515 -45
  61. package/.agent/history/memory/.memory.idx +1532 -1
  62. package/.agent/history/memory/MEMORY.md +102 -1
  63. package/.agent/history/memory.db +0 -0
  64. package/.agent/history/snapshots/bin__adapter-install.js.json +13 -0
  65. package/.agent/history/snapshots/bin__global-store.js.json +15 -0
  66. package/.agent/history/snapshots/bin__mcp-server.js.json +19 -0
  67. package/.agent/history/snapshots/bin__proxy-server.js.json +20 -0
  68. package/.agent/history/snapshots/bin__spawn-agent.js.json +12 -0
  69. package/.agent/history/snapshots/bin__tk-proxy.js.json +21 -0
  70. package/.agent/history/snapshots/bin__tribunal-kit.js.json +9 -7
  71. package/.agent/history/snapshots/bin__wrapper.js.json +14 -0
  72. package/.agent/history/snapshots/eslint.config.js.json +1 -2
  73. package/.agent/history/snapshots/scripts__benchmark.js.json +14 -0
  74. package/.agent/history/snapshots/scripts__changelog.js.json +1 -2
  75. package/.agent/history/snapshots/scripts__fix-vbc.js.json +11 -0
  76. package/.agent/history/snapshots/scripts__stress_benchmark.js.json +15 -0
  77. package/.agent/history/snapshots/scripts__sync-version.js.json +1 -2
  78. package/.agent/history/snapshots/scripts__validate-payload.js.json +1 -2
  79. package/.agent/history/snapshots/scripts__visual_audit.js.json +11 -0
  80. package/.agent/history/snapshots/test__integration__bridges.test.js.json +1 -2
  81. package/.agent/history/snapshots/test__integration__graceful_degradation.test.js.json +12 -0
  82. package/.agent/history/snapshots/test__integration__init.test.js.json +1 -2
  83. package/.agent/history/snapshots/test__integration__minimal_change_pipeline.test.js.json +13 -0
  84. package/.agent/history/snapshots/test__integration__parallel_tribunal.test.js.json +12 -0
  85. package/.agent/history/snapshots/test__integration__routing.test.js.json +1 -2
  86. package/.agent/history/snapshots/test__integration__swarm_dispatcher.test.js.json +1 -2
  87. package/.agent/history/snapshots/test__integration__sync_status.test.js.json +13 -0
  88. package/.agent/history/snapshots/test__integration__wave2.test.js.json +1 -2
  89. package/.agent/history/snapshots/test__integration__wrapper.test.js.json +13 -0
  90. package/.agent/history/snapshots/test__unit__align.test.js.json +10 -0
  91. package/.agent/history/snapshots/test__unit__args.test.js.json +3 -3
  92. package/.agent/history/snapshots/test__unit__audit_release.test.js.json +16 -0
  93. package/.agent/history/snapshots/test__unit__case_law_manager.test.js.json +1 -2
  94. package/.agent/history/snapshots/test__unit__cicd_validator.test.js.json +12 -0
  95. package/.agent/history/snapshots/test__unit__compile.test.js.json +10 -0
  96. package/.agent/history/snapshots/test__unit__context_broker.test.js.json +1 -2
  97. package/.agent/history/snapshots/test__unit__contract_engine.test.js.json +13 -0
  98. package/.agent/history/snapshots/test__unit__copyDir.test.js.json +3 -3
  99. package/.agent/history/snapshots/test__unit__graph_tools.test.js.json +1 -2
  100. package/.agent/history/snapshots/test__unit__guardrail_engine.test.js.json +10 -0
  101. package/.agent/history/snapshots/test__unit__impact_classifier.test.js.json +12 -0
  102. package/.agent/history/snapshots/test__unit__init.test.js.json +14 -0
  103. package/.agent/history/snapshots/test__unit__inner_loop_validator.test.js.json +1 -2
  104. package/.agent/history/snapshots/test__unit__integrity_manifest.test.js.json +13 -0
  105. package/.agent/history/snapshots/test__unit__learn.test.js.json +11 -0
  106. package/.agent/history/snapshots/test__unit__marathon.test.js.json +22 -0
  107. package/.agent/history/snapshots/test__unit__mcp_server.test.js.json +16 -0
  108. package/.agent/history/snapshots/test__unit__memory.test.js.json +13 -0
  109. package/.agent/history/snapshots/test__unit__minimal_change.test.js.json +10 -0
  110. package/.agent/history/snapshots/test__unit__native.test.js.json +10 -0
  111. package/.agent/history/snapshots/test__unit__optimize.test.js.json +13 -0
  112. package/.agent/history/snapshots/test__unit__path_resolution.test.js.json +14 -0
  113. package/.agent/history/snapshots/test__unit__production_readiness_evidence.test.js.json +21 -0
  114. package/.agent/history/snapshots/test__unit__selfInstall.test.js.json +3 -3
  115. package/.agent/history/snapshots/test__unit__semver.test.js.json +3 -3
  116. package/.agent/history/snapshots/test__unit__skill_evolution.test.js.json +11 -0
  117. package/.agent/history/snapshots/test__unit__stress.test.js.json +15 -0
  118. package/.agent/history/snapshots/test__unit__swarm_dispatcher.test.js.json +3 -3
  119. package/.agent/history/snapshots/test__unit__utils.test.js.json +10 -0
  120. package/.agent/mcp_config.json +1 -6
  121. package/.agent/routing_index.json +2033 -263
  122. package/.agent/rules/GEMINI.md +11 -9
  123. package/.agent/rules/GEMINI_PLANNER.md +19 -21
  124. package/.agent/scripts/_colors.js +52 -54
  125. package/.agent/scripts/_utils.js +52 -53
  126. package/.agent/scripts/ast_context_loader.js +137 -0
  127. package/.agent/scripts/auto_preview.js +39 -43
  128. package/.agent/scripts/bundle_analyzer.js +47 -60
  129. package/.agent/scripts/case_law_manager.js +200 -294
  130. package/.agent/scripts/checklist.js +73 -94
  131. package/.agent/scripts/cicd_validator.js +305 -0
  132. package/.agent/scripts/context_broker.js +317 -412
  133. package/.agent/scripts/contract_engine.js +402 -0
  134. package/.agent/scripts/dependency_analyzer.js +112 -124
  135. package/.agent/scripts/graph_builder.js +75 -103
  136. package/.agent/scripts/graph_visualizer.js +10 -12
  137. package/.agent/scripts/graph_zoom.js +38 -55
  138. package/.agent/scripts/guardrail_engine.js +195 -145
  139. package/.agent/scripts/impact_classifier.js +55 -30
  140. package/.agent/scripts/inner_loop_validator.js +108 -159
  141. package/.agent/scripts/integrity_manifest.js +59 -67
  142. package/.agent/scripts/lint_runner.js +65 -75
  143. package/.agent/scripts/marathon_harness.js +131 -208
  144. package/.agent/scripts/memory_engine.js +581 -0
  145. package/.agent/scripts/minify_context.js +29 -33
  146. package/.agent/scripts/minimal_change_engine.js +95 -87
  147. package/.agent/scripts/mutation_runner.js +46 -62
  148. package/.agent/scripts/payload_schemas.js +146 -0
  149. package/.agent/scripts/pipeline_engine.js +320 -209
  150. package/.agent/scripts/prompt_compiler.js +166 -93
  151. package/.agent/scripts/schema_validator.js +73 -121
  152. package/.agent/scripts/security_scan.js +88 -117
  153. package/.agent/scripts/session_manager.js +52 -69
  154. package/.agent/scripts/signal_detector.js +24 -22
  155. package/.agent/scripts/skill_evolution.js +184 -245
  156. package/.agent/scripts/skill_integrator.js +35 -48
  157. package/.agent/scripts/socratic_gate_policy.js +15 -12
  158. package/.agent/scripts/strengthen_skills.js +29 -33
  159. package/.agent/scripts/swarm_dispatcher.js +397 -200
  160. package/.agent/scripts/test_runner.js +54 -56
  161. package/.agent/scripts/token_budget_broker.js +126 -13
  162. package/.agent/scripts/trace_engine.js +126 -0
  163. package/.agent/scripts/verify_all.js +76 -93
  164. package/.agent/scripts/visual_audit.js +16 -21
  165. package/.agent/skill_topic_map.json +22 -3
  166. package/.agent/skills/12-principles-of-animation/SKILL.md +7 -0
  167. package/.agent/skills/60fps-animation/SKILL.md +7 -0
  168. package/.agent/skills/accessible-animation/SKILL.md +5 -1
  169. package/.agent/skills/adapt/SKILL.md +7 -1
  170. package/.agent/skills/advanced-rag-pipelines/SKILL.md +1 -0
  171. package/.agent/skills/agent-organizer/SKILL.md +1 -0
  172. package/.agent/skills/agentic-patterns/SKILL.md +33 -25
  173. package/.agent/skills/agentic-workflows-2026/SKILL.md +6 -2
  174. package/.agent/skills/ai-app-hardening/SKILL.md +9 -8
  175. package/.agent/skills/ai-prompt-injection-defense/SKILL.md +7 -6
  176. package/.agent/skills/animation-on-scroll/SKILL.md +24 -15
  177. package/.agent/skills/animation-systems/SKILL.md +11 -10
  178. package/.agent/skills/antfu-conventions/SKILL.md +7 -2
  179. package/.agent/skills/api-patterns/SKILL.md +14 -10
  180. package/.agent/skills/api-security-auditor/SKILL.md +15 -14
  181. package/.agent/skills/app-builder/SKILL.md +1 -0
  182. package/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +2 -2
  183. package/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +1 -1
  184. package/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +12 -12
  185. package/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +3 -3
  186. package/.agent/skills/apple-design/SKILL.md +8 -7
  187. package/.agent/skills/architecture/SKILL.md +3 -2
  188. package/.agent/skills/audit-and-fix/SKILL.md +8 -5
  189. package/.agent/skills/authentication-best-practices/SKILL.md +9 -8
  190. package/.agent/skills/backend-security-expert/SKILL.md +1 -0
  191. package/.agent/skills/baseline-ui/SKILL.md +8 -7
  192. package/.agent/skills/bash-linux/SKILL.md +1 -0
  193. package/.agent/skills/behavioral-modes/SKILL.md +1 -0
  194. package/.agent/skills/better-colors/SKILL.md +11 -7
  195. package/.agent/skills/better-typography/SKILL.md +30 -16
  196. package/.agent/skills/better-ui/SKILL.md +17 -10
  197. package/.agent/skills/bolder/SKILL.md +6 -0
  198. package/.agent/skills/brainstorming/SKILL.md +6 -4
  199. package/.agent/skills/browser-native-ai/SKILL.md +5 -4
  200. package/.agent/skills/build-primitive/SKILL.md +5 -0
  201. package/.agent/skills/building-native-ui/SKILL.md +1 -0
  202. package/.agent/skills/cicd-pro/SKILL.md +2 -1
  203. package/.agent/skills/clarify/SKILL.md +19 -14
  204. package/.agent/skills/clean-code/SKILL.md +16 -15
  205. package/.agent/skills/cloud-architect/SKILL.md +1 -0
  206. package/.agent/skills/cobejs/SKILL.md +7 -9
  207. package/.agent/skills/code-review-checklist/SKILL.md +1 -0
  208. package/.agent/skills/codebase-design/SKILL.md +7 -2
  209. package/.agent/skills/colorize/SKILL.md +8 -3
  210. package/.agent/skills/compact-landing/SKILL.md +8 -3
  211. package/.agent/skills/company-logos/SKILL.md +6 -0
  212. package/.agent/skills/config-validator/SKILL.md +10 -9
  213. package/.agent/skills/containerization-pro/SKILL.md +6 -5
  214. package/.agent/skills/context-engineering-pro/SKILL.md +5 -4
  215. package/.agent/skills/create-design-md/SKILL.md +13 -5
  216. package/.agent/skills/critique/SKILL.md +10 -8
  217. package/.agent/skills/csharp-developer/SKILL.md +1 -0
  218. package/.agent/skills/data-validation-schemas/SKILL.md +28 -23
  219. package/.agent/skills/database-design/SKILL.md +2 -1
  220. package/.agent/skills/delight/SKILL.md +6 -0
  221. package/.agent/skills/deployment-procedures/SKILL.md +2 -1
  222. package/.agent/skills/design-lab/SKILL.md +5 -0
  223. package/.agent/skills/devops-engineer/SKILL.md +3 -2
  224. package/.agent/skills/devops-incident-responder/SKILL.md +2 -1
  225. package/.agent/skills/diagnosing-bugs/SKILL.md +12 -2
  226. package/.agent/skills/distill/SKILL.md +7 -2
  227. package/.agent/skills/documentation-templates/SKILL.md +3 -2
  228. package/.agent/skills/domain-modeling/SKILL.md +12 -4
  229. package/.agent/skills/duckdb-analytical-sql/SKILL.md +7 -3
  230. package/.agent/skills/edge-ai-mobile/SKILL.md +5 -1
  231. package/.agent/skills/edge-computing/SKILL.md +9 -8
  232. package/.agent/skills/emil-design-eng/SKILL.md +43 -27
  233. package/.agent/skills/error-resilience/SKILL.md +34 -16
  234. package/.agent/skills/expo-router-v4/SKILL.md +2 -1
  235. package/.agent/skills/extract-design-system/SKILL.md +12 -11
  236. package/.agent/skills/fabel-protocol/SKILL.md +24 -17
  237. package/.agent/skills/fixing-accessibility/SKILL.md +23 -16
  238. package/.agent/skills/fixing-metadata/SKILL.md +24 -13
  239. package/.agent/skills/fixing-motion-performance/SKILL.md +7 -5
  240. package/.agent/skills/framer-motion-expert/SKILL.md +29 -15
  241. package/.agent/skills/frontend-design/SKILL.md +21 -13
  242. package/.agent/skills/frontend-security-expert/SKILL.md +1 -0
  243. package/.agent/skills/game-design-expert/SKILL.md +1 -0
  244. package/.agent/skills/game-engineering-expert/SKILL.md +1 -0
  245. package/.agent/skills/generative-ui-expert/SKILL.md +3 -2
  246. package/.agent/skills/geo-fundamentals/SKILL.md +2 -1
  247. package/.agent/skills/git-pro/SKILL.md +10 -9
  248. package/.agent/skills/github-operations/SKILL.md +2 -1
  249. package/.agent/skills/gpt-taste/SKILL.md +7 -0
  250. package/.agent/skills/gsap-core/SKILL.md +26 -22
  251. package/.agent/skills/gsap-frameworks/SKILL.md +6 -5
  252. package/.agent/skills/gsap-performance/SKILL.md +4 -3
  253. package/.agent/skills/gsap-plugins/SKILL.md +34 -33
  254. package/.agent/skills/gsap-react/SKILL.md +9 -8
  255. package/.agent/skills/gsap-scrolltrigger/SKILL.md +34 -33
  256. package/.agent/skills/gsap-timeline/SKILL.md +18 -15
  257. package/.agent/skills/gsap-utils/SKILL.md +25 -24
  258. package/.agent/skills/harden/SKILL.md +9 -3
  259. package/.agent/skills/harness-protocol/SKILL.md +1 -0
  260. package/.agent/skills/i18n-localization/SKILL.md +10 -9
  261. package/.agent/skills/impeccable/SKILL.md +5 -0
  262. package/.agent/skills/improve-codebase-architecture/SKILL.md +10 -5
  263. package/.agent/skills/improve-ui/SKILL.md +12 -5
  264. package/.agent/skills/intelligent-routing/SKILL.md +7 -6
  265. package/.agent/skills/knowledge-graph/SKILL.md +1 -0
  266. package/.agent/skills/landing-page/SKILL.md +1 -0
  267. package/.agent/skills/lint-and-validate/SKILL.md +9 -4
  268. package/.agent/skills/llm-engineering/SKILL.md +55 -54
  269. package/.agent/skills/local-first/SKILL.md +20 -19
  270. package/.agent/skills/local-first-architecture/SKILL.md +6 -1
  271. package/.agent/skills/lottie-animation/SKILL.md +7 -3
  272. package/.agent/skills/marquee-loop/SKILL.md +1 -0
  273. package/.agent/skills/masked-reveal/SKILL.md +17 -4
  274. package/.agent/skills/mcp-builder/SKILL.md +13 -10
  275. package/.agent/skills/micro-interaction/SKILL.md +20 -5
  276. package/.agent/skills/mobile-design/SKILL.md +26 -15
  277. package/.agent/skills/monorepo-management/SKILL.md +3 -2
  278. package/.agent/skills/morphing-icons/SKILL.md +16 -6
  279. package/.agent/skills/motion-engineering/SKILL.md +19 -15
  280. package/.agent/skills/nextjs-react-expert/SKILL.md +26 -21
  281. package/.agent/skills/nodejs-best-practices/SKILL.md +89 -76
  282. package/.agent/skills/observability/SKILL.md +45 -44
  283. package/.agent/skills/opentelemetry-observability/SKILL.md +2 -1
  284. package/.agent/skills/page-transition-animation/SKILL.md +6 -3
  285. package/.agent/skills/parallel-agents/SKILL.md +7 -2
  286. package/.agent/skills/performance-profiling/SKILL.md +24 -13
  287. package/.agent/skills/plan-writing/SKILL.md +1 -0
  288. package/.agent/skills/platform-engineer/SKILL.md +3 -2
  289. package/.agent/skills/platform-engineering-opentofu/SKILL.md +1 -0
  290. package/.agent/skills/playwright-ai-e2e/SKILL.md +3 -2
  291. package/.agent/skills/playwright-best-practices/SKILL.md +29 -28
  292. package/.agent/skills/polish/SKILL.md +13 -12
  293. package/.agent/skills/powershell-windows/SKILL.md +1 -0
  294. package/.agent/skills/pricing-page/SKILL.md +8 -3
  295. package/.agent/skills/product-aware-heuristics/SKILL.md +122 -72
  296. package/.agent/skills/progressive-blur/SKILL.md +9 -4
  297. package/.agent/skills/project-idioms/SKILL.md +1 -0
  298. package/.agent/skills/property-based-testing/SKILL.md +10 -12
  299. package/.agent/skills/python-patterns/SKILL.md +1 -0
  300. package/.agent/skills/python-pro/SKILL.md +1 -0
  301. package/.agent/skills/quieter/SKILL.md +6 -0
  302. package/.agent/skills/react-doctor/SKILL.md +6 -0
  303. package/.agent/skills/react-specialist/SKILL.md +32 -28
  304. package/.agent/skills/readme-builder/SKILL.md +1 -0
  305. package/.agent/skills/realtime-patterns/SKILL.md +34 -33
  306. package/.agent/skills/red-team-tactics/SKILL.md +1 -0
  307. package/.agent/skills/redesign-skill/SKILL.md +6 -0
  308. package/.agent/skills/review-animations/SKILL.md +5 -2
  309. package/.agent/skills/review-animations/STANDARDS.md +37 -23
  310. package/.agent/skills/rust-pro/SKILL.md +1 -0
  311. package/.agent/skills/seo-fundamentals/SKILL.md +4 -3
  312. package/.agent/skills/server-management/SKILL.md +1 -0
  313. package/.agent/skills/shadcn-ui-expert/SKILL.md +28 -22
  314. package/.agent/skills/shape/SKILL.md +9 -2
  315. package/.agent/skills/skill-creator/SKILL.md +1 -0
  316. package/.agent/skills/soft-skill/SKILL.md +6 -0
  317. package/.agent/skills/sounds-on-the-web/SKILL.md +1 -0
  318. package/.agent/skills/sql-pro/SKILL.md +1 -0
  319. package/.agent/skills/supabase-postgres-best-practices/SKILL.md +1 -0
  320. package/.agent/skills/svg-animation/SKILL.md +16 -7
  321. package/.agent/skills/swiftui-expert/SKILL.md +1 -0
  322. package/.agent/skills/swiss-design/SKILL.md +5 -0
  323. package/.agent/skills/system-design-pro/SKILL.md +1 -0
  324. package/.agent/skills/systematic-debugging/SKILL.md +1 -0
  325. package/.agent/skills/tailwind-patterns/SKILL.md +25 -11
  326. package/.agent/skills/taste-skill/SKILL.md +6 -0
  327. package/.agent/skills/tdd-workflow/SKILL.md +5 -0
  328. package/.agent/skills/test-result-analyzer/SKILL.md +1 -0
  329. package/.agent/skills/testing-patterns/SKILL.md +123 -115
  330. package/.agent/skills/thermo-nuclear-code-quality-review/SKILL.md +5 -0
  331. package/.agent/skills/thinking-protocol/SKILL.md +3 -0
  332. package/.agent/skills/to-spring-or-not-to-spring/SKILL.md +9 -8
  333. package/.agent/skills/transitions-dev/SKILL.md +19 -6
  334. package/.agent/skills/trend-researcher/SKILL.md +1 -0
  335. package/.agent/skills/typescript-advanced/SKILL.md +23 -18
  336. package/.agent/skills/typeset/SKILL.md +10 -1
  337. package/.agent/skills/ui-reasoning-engine/SKILL.md +67 -48
  338. package/.agent/skills/ui-skill-packs/SKILL.md +6 -1
  339. package/.agent/skills/ui-skills-root/SKILL.md +39 -38
  340. package/.agent/skills/ui-ux-pro-max/SKILL.md +34 -26
  341. package/.agent/skills/ui-ux-researcher/SKILL.md +1 -0
  342. package/.agent/skills/vector-search-pgvector/SKILL.md +3 -2
  343. package/.agent/skills/vue-expert/SKILL.md +22 -19
  344. package/.agent/skills/vulnerability-scanner/SKILL.md +22 -21
  345. package/.agent/skills/web-accessibility-auditor/SKILL.md +2 -1
  346. package/.agent/skills/web-design-guidelines/SKILL.md +16 -10
  347. package/.agent/skills/web-quality-audit/SKILL.md +5 -0
  348. package/.agent/skills/webapp-testing/SKILL.md +14 -13
  349. package/.agent/skills/webgpu-performance/SKILL.md +1 -0
  350. package/.agent/skills/whimsy-injector/SKILL.md +9 -5
  351. package/.agent/skills/workflow-optimizer/SKILL.md +1 -0
  352. package/.agent/skills/zero-trust-passkeys/SKILL.md +11 -6
  353. package/.agent/templates/DESIGN.md +119 -110
  354. package/.agent/templates/design-tokens.json +9 -6
  355. package/.agent/workflows/acf.md +1 -0
  356. package/.agent/workflows/api-tester.md +1 -0
  357. package/.agent/workflows/audit.md +1 -0
  358. package/.agent/workflows/brainstorm.md +1 -0
  359. package/.agent/workflows/changelog.md +1 -0
  360. package/.agent/workflows/contract.md +60 -0
  361. package/.agent/workflows/create.md +1 -0
  362. package/.agent/workflows/debug.md +1 -0
  363. package/.agent/workflows/deploy.md +1 -0
  364. package/.agent/workflows/enhance.md +1 -0
  365. package/.agent/workflows/fix-ci.md +89 -0
  366. package/.agent/workflows/fix.md +1 -0
  367. package/.agent/workflows/generate.md +1 -0
  368. package/.agent/workflows/marathon.md +1 -0
  369. package/.agent/workflows/migrate.md +1 -0
  370. package/.agent/workflows/minimal.md +9 -7
  371. package/.agent/workflows/orchestrate.md +1 -0
  372. package/.agent/workflows/performance-benchmarker.md +1 -0
  373. package/.agent/workflows/pipeline.md +26 -21
  374. package/.agent/workflows/plan.md +1 -0
  375. package/.agent/workflows/preview.md +1 -0
  376. package/.agent/workflows/refactor.md +3 -2
  377. package/.agent/workflows/review-ai.md +4 -3
  378. package/.agent/workflows/review.md +1 -0
  379. package/.agent/workflows/session.md +1 -0
  380. package/.agent/workflows/status.md +1 -0
  381. package/.agent/workflows/strengthen-skills.md +1 -0
  382. package/.agent/workflows/super-prompt.md +1 -0
  383. package/.agent/workflows/swarm.md +15 -3
  384. package/.agent/workflows/test.md +8 -7
  385. package/.agent/workflows/tribunal-backend.md +3 -2
  386. package/.agent/workflows/tribunal-cicd.md +104 -0
  387. package/.agent/workflows/tribunal-database.md +1 -0
  388. package/.agent/workflows/tribunal-frontend.md +8 -6
  389. package/.agent/workflows/tribunal-full.md +2 -1
  390. package/.agent/workflows/tribunal-mobile.md +6 -5
  391. package/.agent/workflows/tribunal-performance.md +1 -0
  392. package/.agent/workflows/tribunal-speed.md +1 -0
  393. package/.agent/workflows/tribunal-ui.md +29 -21
  394. package/.agent/workflows/ui-ux-pro-max.md +19 -15
  395. package/.claude/CLAUDE.md +442 -0
  396. package/CONTRIBUTING.md +3 -3
  397. package/README.md +105 -45
  398. package/SECURITY.md +11 -11
  399. package/bin/adapter-install.js +240 -0
  400. package/bin/global-store.js +48 -0
  401. package/bin/mcp-server.js +781 -332
  402. package/bin/proxy-server.js +113 -0
  403. package/bin/spawn-agent.js +39 -0
  404. package/bin/tk-proxy.js +34 -0
  405. package/bin/tribunal-kit.js +29 -30
  406. package/bin/wrapper.js +40 -46
  407. package/dist/cli.js +6 -0
  408. package/dist/commands/case.js +2 -0
  409. package/dist/commands/contract.js +440 -0
  410. package/dist/commands/init.js +8 -51
  411. package/dist/commands/status.js +61 -30
  412. package/dist/commands/validate.js +22 -31
  413. package/dist/index.d.ts +8 -1
  414. package/dist/tui/banner.js +77 -0
  415. package/dist/tui/index.js +21 -0
  416. package/dist/tui/reviewer-grid.js +90 -0
  417. package/dist/tui/shimmer.js +91 -0
  418. package/dist/tui/theme.js +130 -0
  419. package/dist/tui/tree.js +93 -0
  420. package/dist/tui/wizard.js +148 -0
  421. package/dist/utils/helpers.js +5 -41
  422. package/package.json +33 -15
  423. package/scripts/benchmark.js +62 -86
  424. package/scripts/build-graph.js +71 -0
  425. package/scripts/changelog.js +67 -73
  426. package/scripts/fix-vbc.js +13 -15
  427. package/scripts/fix-vbc.ps1 +2 -118
  428. package/scripts/stress_benchmark.js +358 -0
  429. package/scripts/sync-version.js +71 -41
  430. package/scripts/validate-payload.js +23 -30
  431. package/scripts/visual_audit.js +23 -13
  432. package/.agent/history/snapshots/migrate_refs.js.json +0 -11
  433. package/.agent/scripts/compile_router.py +0 -112
  434. package/.agent/scripts/migrate_skills_frontmatter.py +0 -64
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before designing or reviewing UI micro-animations, you MUST inspect:
23
+
23
24
  1. Frequency Gate (Section 54) → Never animate keyboard actions or high-frequency controls (100+ times/day); keep UI animations under 300ms
24
25
  2. Easing Rule (Section 75) → Use strong `ease-out` (`cubic-bezier(0.23, 1, 0.32, 1)`) for entering UI elements; ban `ease-in`
25
26
  3. Origin-Aware Popovers (Section 114) → Never animate scale from `scale(0)`; start at `scale(0.95)` with origin bound to trigger coordinates
@@ -35,44 +36,50 @@ You are a design engineer with the craft sensibility. You build interfaces where
35
36
  ## Core Philosophy
36
37
 
37
38
  ### Taste is trained, not innate
39
+
38
40
  Good taste is not personal preference. It is a trained instinct: the ability to see beyond the obvious and recognize what elevates. Develop it by surrounding yourself with great work, thinking deeply about why something feels good, and practicing relentlessly.
39
41
 
40
42
  ### Unseen details compound
43
+
41
44
  Most details users never consciously notice. That is the point. When a feature functions exactly as someone assumes it should, they proceed without giving it a second thought. Every decision below exists because the aggregate of invisible correctness creates interfaces people love without knowing why.
42
45
 
43
46
  ### Beauty is leverage
47
+
44
48
  People select tools based on the overall experience, not just functionality. Good defaults and good animations are real differentiators. Use beauty as leverage to stand out.
45
49
 
46
50
  ## Review Format (Required)
47
51
 
48
52
  When reviewing UI code, you MUST use a markdown table with Before/After columns. Do NOT use a list with "Before:" and "After:" on separate lines. Always output an actual markdown table like this:
49
53
 
50
- | Before | After | Why |
51
- | --- | --- | --- |
52
- | `transition: all 300ms` | `transition: transform 200ms ease-out` | Specify exact properties; avoid `all` |
53
- | `transform: scale(0)` | `transform: scale(0.95); opacity: 0` | Nothing in the real world appears from nothing |
54
- | `ease-in` on dropdown | `ease-out` with custom curve | `ease-in` feels sluggish; `ease-out` gives instant feedback |
55
- | No `:active` state on button | `transform: scale(0.97)` on `:active` | Buttons must feel responsive to press |
56
- | `transform-origin: center` | `transform-origin: var(--radix-popover-content-transform-origin)` | Popovers should scale from their trigger |
54
+ | Before | After | Why |
55
+ | ---------------------------- | ----------------------------------------------------------------- | ----------------------------------------------------------- |
56
+ | `transition: all 300ms` | `transition: transform 200ms ease-out` | Specify exact properties; avoid `all` |
57
+ | `transform: scale(0)` | `transform: scale(0.95); opacity: 0` | Nothing in the real world appears from nothing |
58
+ | `ease-in` on dropdown | `ease-out` with custom curve | `ease-in` feels sluggish; `ease-out` gives instant feedback |
59
+ | No `:active` state on button | `transform: scale(0.97)` on `:active` | Buttons must feel responsive to press |
60
+ | `transform-origin: center` | `transform-origin: var(--radix-popover-content-transform-origin)` | Popovers should scale from their trigger |
57
61
 
58
62
  ## The Animation Decision Framework
59
63
 
60
64
  Before writing any animation code, answer these questions in order:
61
65
 
62
66
  ### 1. Should this animate at all?
67
+
63
68
  **Ask:** How often will users see this animation?
64
69
 
65
- | Frequency | Decision |
66
- | --- | --- |
67
- | 100+ times/day (keyboard shortcuts, command palette) | No animation. Ever. |
68
- | Tens of times/day (hover effects, list navigation) | Remove or drastically reduce |
69
- | Occasional (modals, drawers, toasts) | Standard animation |
70
- | Rare/first-time (onboarding, feedback forms, celebrations) | Can add delight |
70
+ | Frequency | Decision |
71
+ | ---------------------------------------------------------- | ---------------------------- |
72
+ | 100+ times/day (keyboard shortcuts, command palette) | No animation. Ever. |
73
+ | Tens of times/day (hover effects, list navigation) | Remove or drastically reduce |
74
+ | Occasional (modals, drawers, toasts) | Standard animation |
75
+ | Rare/first-time (onboarding, feedback forms, celebrations) | Can add delight |
71
76
 
72
77
  **Never animate keyboard-initiated actions.** These actions are repeated hundreds of times daily. Animation makes them feel slow and disconnected.
73
78
 
74
79
  ### 2. What is the purpose?
80
+
75
81
  Valid purposes:
82
+
76
83
  - **Spatial consistency**: toast enters/exits from the same direction.
77
84
  - **State indication**: a morphing feedback button shows state change.
78
85
  - **Explanation**: a marketing animation showing a feature.
@@ -82,45 +89,52 @@ Valid purposes:
82
89
  If the purpose is just "it looks cool" and the user sees it often, don't animate.
83
90
 
84
91
  ### 3. What easing should it use?
92
+
85
93
  Is the element entering or exiting?
86
- Yes → ease-out (starts fast, feels responsive)
87
- No →
88
- Is it moving/morphing on screen?
89
- Yes → ease-in-out (natural acceleration/deceleration)
90
- Is it a hover/color change?
91
- Yes → ease
92
- Is it constant motion?
93
- Yes → linear
94
- Default → ease-out
94
+ Yes → ease-out (starts fast, feels responsive)
95
+ No →
96
+ Is it moving/morphing on screen?
97
+ Yes → ease-in-out (natural acceleration/deceleration)
98
+ Is it a hover/color change?
99
+ Yes → ease
100
+ Is it constant motion?
101
+ Yes → linear
102
+ Default → ease-out
95
103
 
96
104
  **Critical: use custom easing curves.**
105
+
97
106
  ```css
98
107
  /* Strong ease-out for UI interactions */
99
108
  --ease-out: cubic-bezier(0.23, 1, 0.32, 1);
100
109
  /* Strong ease-in-out for on-screen movement */
101
110
  --ease-in-out: cubic-bezier(0.77, 0, 0.175, 1);
102
111
  ```
112
+
103
113
  **Never use ease-in for UI animations.** It makes the interface feel sluggish.
104
114
 
105
115
  ### 4. How fast should it be?
106
- | Element | Duration |
107
- | --- | --- |
108
- | Button press feedback | 100-160ms |
116
+
117
+ | Element | Duration |
118
+ | ------------------------ | --------- |
119
+ | Button press feedback | 100-160ms |
109
120
  | Tooltips, small popovers | 125-200ms |
110
- | Dropdowns, selects | 150-250ms |
111
- | Modals, drawers | 200-500ms |
121
+ | Dropdowns, selects | 150-250ms |
122
+ | Modals, drawers | 200-500ms |
112
123
 
113
124
  **Rule: UI animations should stay under 300ms.** Perception of speed matters as much as actual speed.
114
125
 
115
126
  ## Component Building Principles
116
127
 
117
128
  ### Buttons must feel responsive
129
+
118
130
  Add `transform: scale(0.97)` on `:active` with subtle transition (160ms ease-out).
119
131
 
120
132
  ### Never animate from scale(0)
133
+
121
134
  Start from `scale(0.95)` or higher combined with opacity.
122
135
 
123
136
  ### Make popovers origin-aware
137
+
124
138
  Popovers should scale in from their trigger, not from center. Explicitly set `transform-origin` to the trigger coordinates (e.g., `var(--radix-popover-content-transform-origin)`). Modals are exempt as they are viewport-centered.
125
139
 
126
140
  ---
@@ -141,6 +155,7 @@ Popovers should scale in from their trigger, not from center. Explicitly set `tr
141
155
  ### ✅ Pre-Flight Self-Audit
142
156
 
143
157
  Review these questions before confirming output:
158
+
144
159
  ```
145
160
  ✅ Did I justify the animation's existence based on frequency?
146
161
  ✅ Are all UI animations under 300ms?
@@ -152,5 +167,6 @@ Review these questions before confirming output:
152
167
  ### 🛑 Verification-Before-Completion (VBC) Protocol
153
168
 
154
169
  **CRITICAL:** You must follow a strict "evidence-based closeout" state machine.
170
+
155
171
  - ❌ **Forbidden:** Declaring animation work complete because the code compiles.
156
172
  - ✅ **Required:** Provide evidence that the animation executes flawlessly at 60fps in the browser, adhering to the 300ms budget and easing rules.
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before writing retry logic, circuit breakers, or error handling routines, you MUST inspect:
23
+
23
24
  1. Idempotency Key Rule for Retries (Section 123) → Require explicit idempotency keys when retrying non-safe operations (POST/PUT); ban un-keyed retries
24
25
  2. Exponential Backoff with Jitter (Section 106) → Implement randomized full jitter with capped exponential delays; ban fixed-delay retry loops
25
26
  3. Operational vs Programmer Error Split (Section 28) → Catch and recover strictly from `OperationalError` instances; allow programmer bugs (`TypeError`) to crash fast
@@ -102,7 +103,12 @@ const DEFAULT_RETRY: RetryOptions = {
102
103
  maxRetries: 3,
103
104
  baseDelayMs: 500,
104
105
  maxDelayMs: 15_000,
105
- retryableErrors: (err) => err instanceof Error && (err.message.includes("ECONNRESET") || err.message.includes("ETIMEDOUT") || err.message.includes("503") || err.message.includes("429")),
106
+ retryableErrors: err =>
107
+ err instanceof Error &&
108
+ (err.message.includes('ECONNRESET') ||
109
+ err.message.includes('ETIMEDOUT') ||
110
+ err.message.includes('503') ||
111
+ err.message.includes('429')),
106
112
  };
107
113
 
108
114
  async function withRetry<T>(fn: () => Promise<T>, options: Partial<RetryOptions> = {}): Promise<T> {
@@ -122,16 +128,19 @@ async function withRetry<T>(fn: () => Promise<T>, options: Partial<RetryOptions>
122
128
  const capped = Math.min(exponential, opts.maxDelayMs);
123
129
  const jitter = Math.random() * capped;
124
130
 
125
- console.warn(`[RETRY] Attempt ${attempt + 1}/${opts.maxRetries} failed. ` + `Retrying in ${Math.round(jitter)}ms...`);
131
+ console.warn(
132
+ `[RETRY] Attempt ${attempt + 1}/${opts.maxRetries} failed. ` +
133
+ `Retrying in ${Math.round(jitter)}ms...`,
134
+ );
126
135
 
127
136
  await sleep(jitter);
128
137
  }
129
138
  }
130
- throw new Error("Unreachable");
139
+ throw new Error('Unreachable');
131
140
  }
132
141
 
133
142
  function sleep(ms: number): Promise<void> {
134
- return new Promise((resolve) => setTimeout(resolve, ms));
143
+ return new Promise(resolve => setTimeout(resolve, ms));
135
144
  }
136
145
 
137
146
  // ❌ NEVER retry non-idempotent operations without idempotency keys
@@ -145,9 +154,9 @@ function sleep(ms: number): Promise<void> {
145
154
 
146
155
  ```typescript
147
156
  enum CircuitState {
148
- CLOSED = "CLOSED", // Normal — requests pass through
149
- OPEN = "OPEN", // Tripped — requests fail immediately
150
- HALF_OPEN = "HALF_OPEN", // Testing — one request allowed
157
+ CLOSED = 'CLOSED', // Normal — requests pass through
158
+ OPEN = 'OPEN', // Tripped — requests fail immediately
159
+ HALF_OPEN = 'HALF_OPEN', // Testing — one request allowed
151
160
  }
152
161
 
153
162
  class CircuitBreaker {
@@ -210,7 +219,7 @@ const paymentCircuit = new CircuitBreaker(5, 30_000);
210
219
 
211
220
  const result = await paymentCircuit.execute(
212
221
  () => paymentGateway.charge(amount),
213
- () => ({ status: "deferred", message: "Payment queued for retry" }),
222
+ () => ({ status: 'deferred', message: 'Payment queued for retry' }),
214
223
  );
215
224
  ```
216
225
 
@@ -220,7 +229,7 @@ const result = await paymentCircuit.execute(
220
229
 
221
230
  ```tsx
222
231
  // ✅ Error boundary with recovery
223
- import { Component, type ReactNode } from "react";
232
+ import { Component, type ReactNode } from 'react';
224
233
 
225
234
  interface Props {
226
235
  children: ReactNode;
@@ -251,7 +260,9 @@ class ErrorBoundary extends Component<Props, State> {
251
260
  this.props.fallback ?? (
252
261
  <div role="alert">
253
262
  <h2>Something went wrong</h2>
254
- <button onClick={() => this.setState({ hasError: false, error: null })}>Try Again</button>
263
+ <button onClick={() => this.setState({ hasError: false, error: null })}>
264
+ Try Again
265
+ </button>
255
266
  </div>
256
267
  )
257
268
  );
@@ -273,7 +284,10 @@ class ErrorBoundary extends Component<Props, State> {
273
284
 
274
285
  ```typescript
275
286
  // ✅ AbortController-based timeout (modern, cancellable)
276
- async function withTimeout<T>(fn: (signal: AbortSignal) => Promise<T>, timeoutMs: number): Promise<T> {
287
+ async function withTimeout<T>(
288
+ fn: (signal: AbortSignal) => Promise<T>,
289
+ timeoutMs: number,
290
+ ): Promise<T> {
277
291
  const controller = new AbortController();
278
292
  const timer = setTimeout(() => controller.abort(), timeoutMs);
279
293
 
@@ -290,7 +304,7 @@ async function withTimeout<T>(fn: (signal: AbortSignal) => Promise<T>, timeoutMs
290
304
  }
291
305
 
292
306
  // Usage
293
- const data = await withTimeout((signal) => fetch("https://api.example.com/data", { signal }), 5000);
307
+ const data = await withTimeout(signal => fetch('https://api.example.com/data', { signal }), 5000);
294
308
  ```
295
309
 
296
310
  ---
@@ -318,8 +332,8 @@ async function getUserProfile(userId: string): Promise<UserProfile> {
318
332
  // Layer 3: Default
319
333
  return {
320
334
  id: userId,
321
- name: "Unknown User",
322
- avatar: "/default-avatar.png",
335
+ name: 'Unknown User',
336
+ avatar: '/default-avatar.png',
323
337
  _stale: true,
324
338
  _default: true,
325
339
  };
@@ -343,7 +357,11 @@ interface DeadLetter<T> {
343
357
  originalQueue: string;
344
358
  }
345
359
 
346
- async function processWithDLQ<T>(payload: T, processor: (item: T) => Promise<void>, dlqStore: { push: (item: DeadLetter<T>) => Promise<void> }): Promise<void> {
360
+ async function processWithDLQ<T>(
361
+ payload: T,
362
+ processor: (item: T) => Promise<void>,
363
+ dlqStore: { push: (item: DeadLetter<T>) => Promise<void> },
364
+ ): Promise<void> {
347
365
  try {
348
366
  await withRetry(() => processor(payload), { maxRetries: 3 });
349
367
  } catch (error) {
@@ -353,7 +371,7 @@ async function processWithDLQ<T>(payload: T, processor: (item: T) => Promise<voi
353
371
  error: error instanceof Error ? error.message : String(error),
354
372
  failedAt: new Date().toISOString(),
355
373
  attempts: 4,
356
- originalQueue: "main",
374
+ originalQueue: 'main',
357
375
  });
358
376
  // Don't throw — the message is preserved for manual review
359
377
  }
@@ -18,6 +18,7 @@ skills:
18
18
  ## Mandatory Pre-Flight Context Inspection
19
19
 
20
20
  Before building mobile navigation or components:
21
+
21
22
  1. New Architecture Enforcement → Enable Fabric renderer and TurboModules in `app.json` (`"newArchEnabled": true`)
22
23
  2. Typed Routing → Use `expo-router` typed routes for safe navigation
23
24
  3. Safe Area & Haptics → Wrap screens in `SafeAreaView` and provide subtle `expo-haptics` feedback
@@ -62,7 +63,7 @@ export function TouchButton({ label, onPress, ...props }: TouchButtonProps) {
62
63
  return (
63
64
  <Pressable
64
65
  {...props}
65
- onPress={(e) => {
66
+ onPress={e => {
66
67
  Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light);
67
68
  onPress?.(e);
68
69
  }}
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before extracting design systems or tokenizing CSS variables, you MUST inspect:
23
+
23
24
  1. 3+ Repetition Frequency Rule (Section 15) → Only tokenize values that recur 3+ times across components to prevent variable bloat
24
25
  2. Semantic Naming Convention (Section 17) → Use functional/semantic names (`--color-primary`) rather than literal colors (`--red-500`)
25
26
  3. Accessibility Token Contract (Section 110) → Ensure extracted text and surface tokens satisfy a min 4.5:1 WCAG AA contrast ratio
@@ -52,7 +53,7 @@ Tokens should be semantic, not literal. `color-brand` > `color-red`.
52
53
  --surface-muted: 210, 40%, 96%;
53
54
 
54
55
  /* Typography */
55
- --font-sans: "Inter", system-ui, sans-serif;
56
+ --font-sans: 'Inter', system-ui, sans-serif;
56
57
 
57
58
  /* Space / Geometry (8px grid scale) */
58
59
  --space-1: 0.25rem; /* 4px */
@@ -90,26 +91,26 @@ If building a design system inside React/Next.js, standardize the system through
90
91
 
91
92
  ```typescript
92
93
  // ✅ Efficient Extracted Component Architecture
93
- import { cva } from "class-variance-authority";
94
+ import { cva } from 'class-variance-authority';
94
95
 
95
96
  const buttonStyles = cva(
96
- "inline-flex items-center justify-center rounded-md font-medium transition-colors", // Base
97
+ 'inline-flex items-center justify-center rounded-md font-medium transition-colors', // Base
97
98
  {
98
99
  variants: {
99
100
  intent: {
100
- primary: "bg-primary text-white hover:bg-primary/90",
101
- destructive: "bg-red-500 text-white hover:bg-red-600",
102
- outline: "border border-input hover:bg-accent",
101
+ primary: 'bg-primary text-white hover:bg-primary/90',
102
+ destructive: 'bg-red-500 text-white hover:bg-red-600',
103
+ outline: 'border border-input hover:bg-accent',
103
104
  },
104
105
  size: {
105
- sm: "h-9 px-3 text-sm",
106
- default: "h-10 px-4 py-2", // Extracted standard size
107
- lg: "h-11 px-8",
106
+ sm: 'h-9 px-3 text-sm',
107
+ default: 'h-10 px-4 py-2', // Extracted standard size
108
+ lg: 'h-11 px-8',
108
109
  },
109
110
  },
110
111
  defaultVariants: {
111
- intent: "primary",
112
- size: "default",
112
+ intent: 'primary',
113
+ size: 'default',
113
114
  },
114
115
  },
115
116
  );
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before executing reasoning loops, you MUST inspect:
23
+
23
24
  1. `package.json` / dependency manifests → Verify exact framework version boundaries (React 19 vs 18, Next.js 15 vs 14)
24
25
  2. Epistemic Confidence Checklist (Section 1) → Categorize implementation confidence L1 to L5
25
26
  3. High-Risk Hallucination Heatmap (Section 7) → Tag uncertain ORM/SDK method calls with `// VERIFY: [reason]` tags
@@ -52,6 +53,7 @@ CONFIDENCE CHECK:
52
53
  ### Epistemic Confidence Levels (L1-L5)
53
54
 
54
55
  Rate the certainty of your implementation decisions using this hierarchy:
56
+
55
57
  - **L1: Absolute Certainty (Verified Truth)**: Code is fully checked against active files in the workspace or verified in up-to-date documentation.
56
58
  - **L2: High Confidence (Standard API)**: Using standard library or stable, unchanged language features (e.g. standard Node `fs` methods, basic Python functions).
57
59
  - **L3: Moderate Confidence (Likely but Unverified)**: Custom utilities or package features that are likely correct but not actively verified. Must add `// VERIFY: [reason]` tags.
@@ -222,18 +224,21 @@ ALWAYS:
222
224
  ## 6. Fabel-5 Cognitive Boundaries (Wellbeing, Evenhandedness, Memory)
223
225
 
224
226
  ### User Wellbeing & Safety
225
- * **No Psychoanalysis / Diagnosis**: Reflect what is said without diagnosing or assigning psychological narratives (e.g. "you restrict because of trauma"). Suggest professional help without clinical labels.
226
- * **Self-Harm Interruptions**: Never suggest physical substitutes (holding ice, snapping rubber bands, drawing lines) or mimic self-harm. They reinforce the self-harm loop.
227
- * **No Over-reliance**: Do not thank the user for reaching out, encourage them to stay, or reiterate willingness to continue. Avoid conversational dependencies.
228
- * **Positive Paths**: Acknowledge distress without reflective listening that amplifies negative spirals. Keep paths to external help open.
227
+
228
+ - **No Psychoanalysis / Diagnosis**: Reflect what is said without diagnosing or assigning psychological narratives (e.g. "you restrict because of trauma"). Suggest professional help without clinical labels.
229
+ - **Self-Harm Interruptions**: Never suggest physical substitutes (holding ice, snapping rubber bands, drawing lines) or mimic self-harm. They reinforce the self-harm loop.
230
+ - **No Over-reliance**: Do not thank the user for reaching out, encourage them to stay, or reiterate willingness to continue. Avoid conversational dependencies.
231
+ - **Positive Paths**: Acknowledge distress without reflective listening that amplifies negative spirals. Keep paths to external help open.
229
232
 
230
233
  ### Moral & Political Evenhandedness
231
- * **Nuance Over Brevity**: Reject requests for simple yes/no or one-word answers on contested political, ethical, or policy issues. Give a fair, balanced overview of existing positions.
232
- * **Opposing Perspectives**: Conclude arguments for positions by presenting opposing viewpoints or empirical disputes even if the user/AI agrees with the primary view.
234
+
235
+ - **Nuance Over Brevity**: Reject requests for simple yes/no or one-word answers on contested political, ethical, or policy issues. Give a fair, balanced overview of existing positions.
236
+ - **Opposing Perspectives**: Conclude arguments for positions by presenting opposing viewpoints or empirical disputes even if the user/AI agrees with the primary view.
233
237
 
234
238
  ### Memory & Preference Boundaries
235
- * **Invisible Integration**: Integrate remembered user context silently without attribution or observation verbs ("I notice in your profile...", "Based on your memory...").
236
- * **Expertise Tuning**: Match language and technical depth to the user's stated background without lecturing.
239
+
240
+ - **Invisible Integration**: Integrate remembered user context silently without attribution or observation verbs ("I notice in your profile...", "Based on your memory...").
241
+ - **Expertise Tuning**: Match language and technical depth to the user's stated background without lecturing.
237
242
 
238
243
  ---
239
244
 
@@ -241,15 +246,15 @@ ALWAYS:
241
246
 
242
247
  High-risk hallucination zones (verify before using):
243
248
 
244
- | Category | Common Hallucinations | Why |
245
- |---|---|---|
246
- | **Prisma ORM** | `findOne()`, `updateMany({where:{id}})` | Renamed/misused methods |
247
- | **React 19** | `useFormState()`, `useServerComponent()` | Renamed or never existed |
248
- | **Next.js 15** | `headers()` without await, `notFound()` in client | Breaking changes |
249
- | **OpenAI SDK** | `response.text`, `chat.stream()`, `gpt-5` | Wrong properties/methods |
250
- | **Anthropic SDK** | `claude-4-opus`, `temperature: "low"` | Wrong model strings/types |
251
- | **Node.js** | `fs.readAsync()`, `fetch()` below Node 18 | Methods that don't exist |
252
- | **Python** | `list.findIndex()`, `dict.filter()` | JS methods on Python types |
249
+ | Category | Common Hallucinations | Why |
250
+ | ----------------- | ------------------------------------------------- | -------------------------- |
251
+ | **Prisma ORM** | `findOne()`, `updateMany({where:{id}})` | Renamed/misused methods |
252
+ | **React 19** | `useFormState()`, `useServerComponent()` | Renamed or never existed |
253
+ | **Next.js 15** | `headers()` without await, `notFound()` in client | Breaking changes |
254
+ | **OpenAI SDK** | `response.text`, `chat.stream()`, `gpt-5` | Wrong properties/methods |
255
+ | **Anthropic SDK** | `claude-4-opus`, `temperature: "low"` | Wrong model strings/types |
256
+ | **Node.js** | `fs.readAsync()`, `fetch()` below Node 18 | Methods that don't exist |
257
+ | **Python** | `list.findIndex()`, `dict.filter()` | JS methods on Python types |
253
258
 
254
259
  When in doubt: **search the official docs**. Never trust training data for API surfaces that change between versions.
255
260
 
@@ -279,10 +284,12 @@ Before finalizing any response, ask yourself:
279
284
  ---
280
285
 
281
286
  ## Pre-Flight Checklist
287
+
282
288
  - [ ] Have I reviewed the Fabel epistemic confidence guidelines before starting?
283
289
  - [ ] Have I checked the framework version context in the workspace?
284
290
 
285
291
  ## VBC Protocol
292
+
286
293
  - [ ] Verify that any APIs or files to be updated are loaded and checked for stale context prior to execution.
287
294
 
288
295
  ---
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before remediating HTML accessibility defects, you MUST inspect:
23
+
23
24
  1. Priority Matrix (Section 22) → Ensure accessible names on icon buttons (P1) and native HTML keyboard controls (P2) before styling
24
25
  2. Focus Ring Policy (Section 29) → Ban `outline: none` without providing explicit `:focus-visible` replacement (`2px` ring + offset)
25
26
  3. Form Error Association (Section 32) → Attach `aria-invalid="true"` and `aria-describedby` pointing to error text IDs
@@ -30,21 +31,22 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
30
31
 
31
32
  ## 1. Priority Priority Matrix (WCAG 2.2 AA)
32
33
 
33
- | Priority | Category | Critical Requirements |
34
- | --- | --- | --- |
35
- | **P1** | **Accessible Names** | Every icon button MUST have `aria-label` or `aria-labelledby`. Decorative icons MUST have `aria-hidden="true"`. |
36
- | **P2** | **Keyboard Access** | All interactive controls MUST be reachable and operable via `Tab` / `Shift+Tab`, `Space`, `Enter`. NEVER use `<div>` or `<span>` as clickable elements without `role="button"`, `tabIndex={0}`, and key handlers. |
37
- | **P3** | **Focus & Dialogs (SC 2.4.11)** | Modals/Dialogs MUST trap focus within the dialog container while open, return focus on close, dismiss on `Escape`, and ensure focused items are **never fully obscured by sticky headers/footers**. |
38
- | **P4** | **Focus Appearance (SC 2.4.13)** | Focus indicators MUST be clearly visible (`:focus-visible`), achieve at least **3:1 contrast** against adjacent background, and have a min **2px thickness**. |
39
- | **P5** | **Target Size (SC 2.5.8)** | Interactive controls MUST measure at least **24x24 CSS pixels** (min **44x44px** recommended for mobile touch targets) or have sufficient non-intersecting spacing. |
40
- | **P6** | **Color & Contrast** | Text MUST satisfy WCAG AA 4.5:1 ratio (3.0:1 for large text). Color alone MUST NOT be the only indicator of state or error. |
41
- | **P7** | **Form Validation** | Inputs MUST have explicit `<label>` or `aria-labelledby`. Errors MUST use `aria-invalid="true"` and `aria-describedby` pointing to error text. |
34
+ | Priority | Category | Critical Requirements |
35
+ | -------- | -------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
36
+ | **P1** | **Accessible Names** | Every icon button MUST have `aria-label` or `aria-labelledby`. Decorative icons MUST have `aria-hidden="true"`. |
37
+ | **P2** | **Keyboard Access** | All interactive controls MUST be reachable and operable via `Tab` / `Shift+Tab`, `Space`, `Enter`. NEVER use `<div>` or `<span>` as clickable elements without `role="button"`, `tabIndex={0}`, and key handlers. |
38
+ | **P3** | **Focus & Dialogs (SC 2.4.11)** | Modals/Dialogs MUST trap focus within the dialog container while open, return focus on close, dismiss on `Escape`, and ensure focused items are **never fully obscured by sticky headers/footers**. |
39
+ | **P4** | **Focus Appearance (SC 2.4.13)** | Focus indicators MUST be clearly visible (`:focus-visible`), achieve at least **3:1 contrast** against adjacent background, and have a min **2px thickness**. |
40
+ | **P5** | **Target Size (SC 2.5.8)** | Interactive controls MUST measure at least **24x24 CSS pixels** (min **44x44px** recommended for mobile touch targets) or have sufficient non-intersecting spacing. |
41
+ | **P6** | **Color & Contrast** | Text MUST satisfy WCAG AA 4.5:1 ratio (3.0:1 for large text). Color alone MUST NOT be the only indicator of state or error. |
42
+ | **P7** | **Form Validation** | Inputs MUST have explicit `<label>` or `aria-labelledby`. Errors MUST use `aria-invalid="true"` and `aria-describedby` pointing to error text. |
42
43
 
43
44
  ---
44
45
 
45
46
  ## 2. Accessible Code Patterns
46
47
 
47
48
  ### Icon-Only Button
49
+
48
50
  ```tsx
49
51
  // ✅ SAFE & ACCESSIBLE
50
52
  <button
@@ -58,6 +60,7 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
58
60
  ```
59
61
 
60
62
  ### Accessible Modal Dialog Focus Trap
63
+
61
64
  ```tsx
62
65
  // ✅ SAFE & ACCESSIBLE
63
66
  <div
@@ -68,8 +71,12 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
68
71
  className="fixed inset-0 z-50 flex items-center justify-center bg-black/50"
69
72
  >
70
73
  <div className="bg-surface p-6 rounded-xl max-w-md w-full">
71
- <h2 id="dialog-title" className="text-xl font-bold">Confirm Deletion</h2>
72
- <p id="dialog-description" className="text-muted mt-2">This action cannot be undone.</p>
74
+ <h2 id="dialog-title" className="text-xl font-bold">
75
+ Confirm Deletion
76
+ </h2>
77
+ <p id="dialog-description" className="text-muted mt-2">
78
+ This action cannot be undone.
79
+ </p>
73
80
  {/* Actions */}
74
81
  </div>
75
82
  </div>
@@ -79,11 +86,11 @@ Guidelines for detecting, prioritizing, and fixing accessibility defects across
79
86
 
80
87
  ## Anti-Slop Table
81
88
 
82
- | Violation | Accessible Fix | Impact |
83
- | --- | --- | --- |
84
- | `<div onClick={submit}>Submit</div>` | `<button type="button" onClick={submit}>Submit</button>` | Fixes screen reader announcement & keyboard trigger |
85
- | `<button><TrashIcon /></button>` | `<button aria-label="Delete item"><TrashIcon aria-hidden="true" /></button>` | Gives screen reader clear accessible name |
86
- | `outline: none` in CSS | `:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }` | Restores visible keyboard focus indicator |
89
+ | Violation | Accessible Fix | Impact |
90
+ | ------------------------------------ | ---------------------------------------------------------------------------- | --------------------------------------------------- |
91
+ | `<div onClick={submit}>Submit</div>` | `<button type="button" onClick={submit}>Submit</button>` | Fixes screen reader announcement & keyboard trigger |
92
+ | `<button><TrashIcon /></button>` | `<button aria-label="Delete item"><TrashIcon aria-hidden="true" /></button>` | Gives screen reader clear accessible name |
93
+ | `outline: none` in CSS | `:focus-visible { outline: 2px solid var(--ring); outline-offset: 2px; }` | Restores visible keyboard focus indicator |
87
94
 
88
95
  ---
89
96
 
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before engineering metadata or Open Graph tags, you MUST inspect:
23
+
23
24
  1. Title & Meta Description Caps (Section 24) → Restrict title tags to 50–60 chars and meta descriptions to 140–155 chars
24
25
  2. Absolute Image URL Rule (Section 74) → Enforce full absolute HTTPS URLs (`https://domain.com/og.jpg`) for `og:image` and `twitter:image`
25
26
  3. Twitter Card Type (Section 39) → Always specify `<meta name="twitter:card" content="summary_large_image" />` for prominent social previews
@@ -31,15 +32,20 @@ Audit, generate, and fix page metadata for rich social previews, search engine i
31
32
  ## 4 Metadata Standard Requirements
32
33
 
33
34
  ### 1. Title & Meta Description Length & Formatting
34
- - **Title Tag**: 50–60 characters max (*"Product Title | Brand Name"*).
35
+
36
+ - **Title Tag**: 50–60 characters max (_"Product Title | Brand Name"_).
35
37
  - **Meta Description**: 140–155 characters max. Must contain active call to value without truncating on search result cards.
36
38
 
37
39
  ### 2. Open Graph & Twitter Card Matrix
40
+
38
41
  ```html
39
42
  <!-- Open Graph / Facebook / LinkedIn -->
40
43
  <meta property="og:type" content="website" />
41
44
  <meta property="og:title" content="UI Skills for Design Engineers" />
42
- <meta property="og:description" content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft." />
45
+ <meta
46
+ property="og:description"
47
+ content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft."
48
+ />
43
49
  <meta property="og:image" content="https://example.com/og-image.jpg" />
44
50
  <meta property="og:image:width" content="1200" />
45
51
  <meta property="og:image:height" content="630" />
@@ -47,32 +53,37 @@ Audit, generate, and fix page metadata for rich social previews, search engine i
47
53
  <!-- Twitter / X -->
48
54
  <meta name="twitter:card" content="summary_large_image" />
49
55
  <meta name="twitter:title" content="UI Skills for Design Engineers" />
50
- <meta name="twitter:description" content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft." />
56
+ <meta
57
+ name="twitter:description"
58
+ content="A curated collection of design-engineering skills for accessibility, motion, and frontend craft."
59
+ />
51
60
  <meta name="twitter:image" content="https://example.com/twitter-image.jpg" />
52
61
  ```
53
62
 
54
63
  ### 3. Canonical Tag Verification
64
+
55
65
  ```html
56
66
  <link rel="canonical" href="https://example.com/current-page-path" />
57
67
  ```
58
68
 
59
69
  ### 4. Next.js App Router Metadata Export Example
70
+
60
71
  ```typescript
61
- import type { Metadata } from "next";
72
+ import type { Metadata } from 'next';
62
73
 
63
74
  export const metadata: Metadata = {
64
- title: "UI Skills for Design Engineers",
65
- description: "Curated design-engineering skills for accessibility, motion, and frontend craft.",
75
+ title: 'UI Skills for Design Engineers',
76
+ description: 'Curated design-engineering skills for accessibility, motion, and frontend craft.',
66
77
  openGraph: {
67
- title: "UI Skills for Design Engineers",
68
- description: "Curated design-engineering skills for accessibility, motion, and frontend craft.",
69
- url: "https://example.com",
70
- images: [{ url: "https://example.com/og.jpg", width: 1200, height: 630 }],
78
+ title: 'UI Skills for Design Engineers',
79
+ description: 'Curated design-engineering skills for accessibility, motion, and frontend craft.',
80
+ url: 'https://example.com',
81
+ images: [{ url: 'https://example.com/og.jpg', width: 1200, height: 630 }],
71
82
  },
72
83
  twitter: {
73
- card: "summary_large_image",
74
- title: "UI Skills for Design Engineers",
75
- images: ["https://example.com/twitter.jpg"],
84
+ card: 'summary_large_image',
85
+ title: 'UI Skills for Design Engineers',
86
+ images: ['https://example.com/twitter.jpg'],
76
87
  },
77
88
  };
78
89
  ```