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
@@ -21,6 +21,7 @@ scripts-binding:
21
21
  ## Mandatory Pre-Flight Context Inspection
22
22
 
23
23
  Before selecting layout templates or component heuristics, you MUST inspect:
24
+
24
25
  1. `DESIGN.md` / `package.json` → Identify product domain (SaaS, DevTool, AI Chat, Landing Page, Fintech)
25
26
  2. Tabular Data & Monospace Rules → Enforce `font-variant-numeric: tabular-nums` for financial data and `JetBrains Mono` for developer tools
26
27
  3. Touch & Pointer Bounds → Ensure interactive buttons and checkboxes meet 44x44px touch target guidelines
@@ -30,15 +31,17 @@ An interface must match its domain context. A developer tool should not look lik
30
31
  ---
31
32
 
32
33
  ## 1. SaaS & Enterprise Applications
33
- * **Goal:** Operational efficiency, scannability, multi-record management, and action density.
34
- * **Visual Tone:** Swiss Precision or Soft Minimal. Clear borders, muted tinted grays, and highly legible typography.
35
- * **Heuristics:**
36
- * **Data Density:** Prefer structured tables and compact list views. Spacing should be tight but consistent (`8px` to `16px` grid).
37
- * **Keyboard Workflows:** All common actions must have keyboard shortcuts. Tab focus paths must be linear and predictable.
38
- * **Filters & Actions:** Provide global filters, batch action bars (appearing only when records are selected), and quick search boundaries.
39
- * **Responsive:** Grid layouts reflow to linear scroll cards on smaller screens; large tabular displays must support horizontal scrolling with sticky primary columns.
34
+
35
+ - **Goal:** Operational efficiency, scannability, multi-record management, and action density.
36
+ - **Visual Tone:** Swiss Precision or Soft Minimal. Clear borders, muted tinted grays, and highly legible typography.
37
+ - **Heuristics:**
38
+ - **Data Density:** Prefer structured tables and compact list views. Spacing should be tight but consistent (`8px` to `16px` grid).
39
+ - **Keyboard Workflows:** All common actions must have keyboard shortcuts. Tab focus paths must be linear and predictable.
40
+ - **Filters & Actions:** Provide global filters, batch action bars (appearing only when records are selected), and quick search boundaries.
41
+ - **Responsive:** Grid layouts reflow to linear scroll cards on smaller screens; large tabular displays must support horizontal scrolling with sticky primary columns.
40
42
 
41
43
  ### SaaS Code Template (Dense Dynamic Table with Sidebar Detail Panel)
44
+
42
45
  ```tsx
43
46
  import React, { useState } from 'react';
44
47
  import { Filter, MoreHorizontal, FileText, Check, ChevronRight, X } from 'lucide-react';
@@ -46,9 +49,9 @@ import { Filter, MoreHorizontal, FileText, Check, ChevronRight, X } from 'lucide
46
49
  export function SaaSDataTable({ records }) {
47
50
  const [selectedIds, setSelectedIds] = useState<string[]>([]);
48
51
  const [activeDetailId, setActiveDetailId] = useState<string | null>(null);
49
-
52
+
50
53
  const activeRecord = records.find(r => r.id === activeDetailId);
51
-
54
+
52
55
  return (
53
56
  <div className="w-full flex gap-4 bg-[var(--bg-base)] p-4 rounded-[var(--radius-lg)]">
54
57
  {/* Table Main Area */}
@@ -62,23 +65,25 @@ export function SaaSDataTable({ records }) {
62
65
  </div>
63
66
  {selectedIds.length > 0 && (
64
67
  <div className="flex items-center gap-2 animate-fade-in">
65
- <span className="text-xs text-[var(--text-secondary)]">{selectedIds.length} selected</span>
68
+ <span className="text-xs text-[var(--text-secondary)]">
69
+ {selectedIds.length} selected
70
+ </span>
66
71
  <button className="px-3 py-1.5 bg-[var(--color-error)] text-white text-xs font-semibold rounded-[var(--radius-sm)] hover:opacity-90 transition-all">
67
72
  Delete Selected
68
73
  </button>
69
74
  </div>
70
75
  )}
71
76
  </div>
72
-
77
+
73
78
  {/* Table container */}
74
79
  <div className="overflow-x-auto">
75
80
  <table className="w-full border-collapse text-left text-xs">
76
81
  <thead>
77
82
  <tr className="border-b border-[var(--border-subtle)] bg-[var(--bg-base)] text-[var(--text-muted)] uppercase tracking-wider font-semibold">
78
83
  <th className="p-3 w-8">
79
- <input
80
- type="checkbox"
81
- onChange={(e) => setSelectedIds(e.target.checked ? records.map(r => r.id) : [])}
84
+ <input
85
+ type="checkbox"
86
+ onChange={e => setSelectedIds(e.target.checked ? records.map(r => r.id) : [])}
82
87
  checked={selectedIds.length === records.length}
83
88
  className="rounded border-[var(--border-subtle)]"
84
89
  />
@@ -90,17 +95,23 @@ export function SaaSDataTable({ records }) {
90
95
  </tr>
91
96
  </thead>
92
97
  <tbody className="divide-y divide-[var(--border-subtle)]">
93
- {records.map((record) => (
94
- <tr
95
- key={record.id}
98
+ {records.map(record => (
99
+ <tr
100
+ key={record.id}
96
101
  onClick={() => setActiveDetailId(record.id)}
97
102
  className={`hover:bg-[var(--bg-base)]/50 transition-colors group cursor-pointer ${activeDetailId === record.id ? 'bg-[var(--bg-base)]' : ''}`}
98
103
  >
99
- <td className="p-3" onClick={(e) => e.stopPropagation()}>
100
- <input
104
+ <td className="p-3" onClick={e => e.stopPropagation()}>
105
+ <input
101
106
  type="checkbox"
102
107
  checked={selectedIds.includes(record.id)}
103
- onChange={(e) => setSelectedIds(prev => e.target.checked ? [...prev, record.id] : prev.filter(id => id !== record.id))}
108
+ onChange={e =>
109
+ setSelectedIds(prev =>
110
+ e.target.checked
111
+ ? [...prev, record.id]
112
+ : prev.filter(id => id !== record.id),
113
+ )
114
+ }
104
115
  className="rounded border-[var(--border-subtle)]"
105
116
  />
106
117
  </td>
@@ -111,7 +122,7 @@ export function SaaSDataTable({ records }) {
111
122
  </span>
112
123
  </td>
113
124
  <td className="p-3 font-mono text-[var(--text-secondary)]">{record.usage} GB</td>
114
- <td className="p-3 text-right" onClick={(e) => e.stopPropagation()}>
125
+ <td className="p-3 text-right" onClick={e => e.stopPropagation()}>
115
126
  <button className="p-1 rounded hover:bg-[var(--bg-surface-raised)] text-[var(--text-muted)] group-hover:text-[var(--text-primary)] transition-all">
116
127
  <MoreHorizontal size={14} />
117
128
  </button>
@@ -122,25 +133,34 @@ export function SaaSDataTable({ records }) {
122
133
  </table>
123
134
  </div>
124
135
  </div>
125
-
136
+
126
137
  {/* Detail Slideout Panel */}
127
138
  {activeRecord && (
128
139
  <div className="w-[300px] border border-[var(--border-subtle)] bg-[var(--bg-surface)] p-4 rounded-[var(--radius-md)] shadow-[var(--shadow-lg)] flex flex-col justify-between animate-slide-in">
129
140
  <div>
130
141
  <div className="flex justify-between items-center mb-4">
131
- <h3 className="text-xs font-bold uppercase tracking-wider text-[var(--text-primary)]">Record details</h3>
132
- <button onClick={() => setActiveDetailId(null)} className="p-1 text-[var(--text-secondary)] hover:bg-[var(--bg-base)] rounded">
142
+ <h3 className="text-xs font-bold uppercase tracking-wider text-[var(--text-primary)]">
143
+ Record details
144
+ </h3>
145
+ <button
146
+ onClick={() => setActiveDetailId(null)}
147
+ className="p-1 text-[var(--text-secondary)] hover:bg-[var(--bg-base)] rounded"
148
+ >
133
149
  <X size={14} />
134
150
  </button>
135
151
  </div>
136
152
  <div className="space-y-3">
137
153
  <div>
138
154
  <span className="text-[10px] text-[var(--text-muted)] block">Name</span>
139
- <span className="text-xs font-semibold text-[var(--text-primary)]">{activeRecord.name}</span>
155
+ <span className="text-xs font-semibold text-[var(--text-primary)]">
156
+ {activeRecord.name}
157
+ </span>
140
158
  </div>
141
159
  <div>
142
160
  <span className="text-[10px] text-[var(--text-muted)] block">Usage Metrics</span>
143
- <span className="text-xs font-mono text-[var(--text-secondary)]">{activeRecord.usage} Gigabytes</span>
161
+ <span className="text-xs font-mono text-[var(--text-secondary)]">
162
+ {activeRecord.usage} Gigabytes
163
+ </span>
144
164
  </div>
145
165
  </div>
146
166
  </div>
@@ -157,15 +177,17 @@ export function SaaSDataTable({ records }) {
157
177
  ---
158
178
 
159
179
  ## 2. Developer Tools
160
- * **Goal:** Technical clarity, command-driven inputs, diagnostics readability, and low cognitive overhead.
161
- * **Visual Tone:** Swiss Precision or Neon Cyberpunk. Dark backgrounds, high contrast, monospace font blocks, and flat borders.
162
- * **Heuristics:**
163
- * **Monospace Integration:** Log listings, code snippets, status outputs, and parameters must be wrapped in `<code/>` or `<pre/>` containers using `JetBrains Mono` or equivalent.
164
- * **Interactive Consoles:** Integrate quick-copy buttons for snippets. Terminal emulator areas should have responsive layouts that prevent truncation of long lines.
165
- * **Status Indicators:** Use explicit semantic color markers (e.g., solid red circle for critical error, pulsing green for active daemon) accompanied by text labels, never color alone.
166
- * **Density:** Extreme. Maximize visible data on-screen; minimize decorative card wrapping and whitespace.
180
+
181
+ - **Goal:** Technical clarity, command-driven inputs, diagnostics readability, and low cognitive overhead.
182
+ - **Visual Tone:** Swiss Precision or Neon Cyberpunk. Dark backgrounds, high contrast, monospace font blocks, and flat borders.
183
+ - **Heuristics:**
184
+ - **Monospace Integration:** Log listings, code snippets, status outputs, and parameters must be wrapped in `<code/>` or `<pre/>` containers using `JetBrains Mono` or equivalent.
185
+ - **Interactive Consoles:** Integrate quick-copy buttons for snippets. Terminal emulator areas should have responsive layouts that prevent truncation of long lines.
186
+ - **Status Indicators:** Use explicit semantic color markers (e.g., solid red circle for critical error, pulsing green for active daemon) accompanied by text labels, never color alone.
187
+ - **Density:** Extreme. Maximize visible data on-screen; minimize decorative card wrapping and whitespace.
167
188
 
168
189
  ### Developer Tool Code Template (Terminal log stream)
190
+
169
191
  ```tsx
170
192
  import React, { useState } from 'react';
171
193
  import { Copy, Terminal, Check } from 'lucide-react';
@@ -173,13 +195,13 @@ import { Copy, Terminal, Check } from 'lucide-react';
173
195
  export function DevConsole({ logs }) {
174
196
  const [copied, setCopied] = useState(false);
175
197
  const command = 'npm run dev --port 8080';
176
-
198
+
177
199
  const handleCopy = () => {
178
200
  navigator.clipboard.writeText(command);
179
201
  setCopied(true);
180
202
  setTimeout(() => setCopied(false), 2000);
181
203
  };
182
-
204
+
183
205
  return (
184
206
  <div className="w-full bg-[var(--bg-base)] dark:bg-black border border-[var(--border-default)] rounded-[var(--radius-sm)] overflow-hidden font-mono shadow-[var(--shadow-sm)]">
185
207
  {/* Console Header */}
@@ -187,7 +209,7 @@ export function DevConsole({ logs }) {
187
209
  <div className="flex items-center gap-2 text-xs text-[var(--text-secondary)]">
188
210
  <Terminal size={14} /> console.log
189
211
  </div>
190
- <button
212
+ <button
191
213
  onClick={handleCopy}
192
214
  className="flex items-center gap-1 px-2 py-1 text-[10px] bg-[var(--bg-surface-raised)] border border-[var(--border-subtle)] rounded text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-all"
193
215
  >
@@ -195,14 +217,22 @@ export function DevConsole({ logs }) {
195
217
  {copied ? 'Copied' : 'Copy'}
196
218
  </button>
197
219
  </div>
198
-
220
+
199
221
  {/* Console Body */}
200
222
  <div className="p-3 text-xs text-slate-300 space-y-1.5 overflow-y-auto max-h-[300px] leading-relaxed">
201
223
  <div className="text-[var(--text-muted)]">$ {command}</div>
202
224
  {logs.map((log, index) => (
203
225
  <div key={index} className="flex gap-2 items-start">
204
226
  <span className="text-[var(--text-muted)] select-none">[{log.time}]</span>
205
- <span className={log.type === 'error' ? 'text-rose-400' : log.type === 'warn' ? 'text-amber-400' : 'text-emerald-400'}>
227
+ <span
228
+ className={
229
+ log.type === 'error'
230
+ ? 'text-rose-400'
231
+ : log.type === 'warn'
232
+ ? 'text-amber-400'
233
+ : 'text-emerald-400'
234
+ }
235
+ >
206
236
  {log.type.toUpperCase()}:
207
237
  </span>
208
238
  <span className="text-slate-100">{log.message}</span>
@@ -217,15 +247,17 @@ export function DevConsole({ logs }) {
217
247
  ---
218
248
 
219
249
  ## 3. Consumer Marketing & Landing Pages
220
- * **Goal:** Emotional appeal, high conversion flows, brand differentiation, and typographic pacing.
221
- * **Visual Tone:** Editorial, Dark Luxury, Swiss Precision, or Organic Natural.
222
- * **Heuristics:**
223
- * **Layout Asymmetry:** Avoid 50/50 hero templates. Use overlapping layers, full-bleed media breakouts, and dramatic grid breaks.
224
- * **Typography Hierarchy:** Large, expressive display headings paired with highly legible body columns constrained to `60-70ch` to prevent eye strain.
225
- * **Controlled Motion:** Use scroll-driven reveals (e.g., clip-path reveals, stagger entry) to guide reading flow. Avoid constant looping animations.
226
- * **Visual Proof Grid:** Grid rows for logos and customer reviews must balance visual weight and scale.
250
+
251
+ - **Goal:** Emotional appeal, high conversion flows, brand differentiation, and typographic pacing.
252
+ - **Visual Tone:** Editorial, Dark Luxury, Swiss Precision, or Organic Natural.
253
+ - **Heuristics:**
254
+ - **Layout Asymmetry:** Avoid 50/50 hero templates. Use overlapping layers, full-bleed media breakouts, and dramatic grid breaks.
255
+ - **Typography Hierarchy:** Large, expressive display headings paired with highly legible body columns constrained to `60-70ch` to prevent eye strain.
256
+ - **Controlled Motion:** Use scroll-driven reveals (e.g., clip-path reveals, stagger entry) to guide reading flow. Avoid constant looping animations.
257
+ - **Visual Proof Grid:** Grid rows for logos and customer reviews must balance visual weight and scale.
227
258
 
228
259
  ### Landing Page Code Template (Asymmetric Hero Section)
260
+
229
261
  ```tsx
230
262
  import React from 'react';
231
263
  import { ArrowRight } from 'lucide-react';
@@ -240,10 +272,15 @@ export function AsymmetricHero() {
240
272
  Flagship Release
241
273
  </span>
242
274
  <h1 className="text-4xl md:text-6xl font-extrabold tracking-tight leading-[1.05] text-[var(--text-primary)] text-wrap-balance">
243
- Create interfaces that feel <span className="underline decoration-wavy decoration-[var(--color-primary)]">human</span> again.
275
+ Create interfaces that feel{' '}
276
+ <span className="underline decoration-wavy decoration-[var(--color-primary)]">
277
+ human
278
+ </span>{' '}
279
+ again.
244
280
  </h1>
245
281
  <p className="text-base text-[var(--text-secondary)] max-w-[55ch] leading-relaxed text-wrap-pretty">
246
- We extract clean, reusable design principles from elite developer interfaces and encode them into deterministic token specifications.
282
+ We extract clean, reusable design principles from elite developer interfaces and encode
283
+ them into deterministic token specifications.
247
284
  </p>
248
285
  <div className="flex flex-wrap gap-4 pt-4">
249
286
  <button className="flex items-center gap-2 px-6 py-3 bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary-hover)] active:scale-95 transition-all rounded-[var(--radius-soft)] text-sm font-semibold shadow-[var(--shadow-md)]">
@@ -254,14 +291,16 @@ export function AsymmetricHero() {
254
291
  </button>
255
292
  </div>
256
293
  </div>
257
-
294
+
258
295
  {/* Right Side: Visual Accent Panel (Spans 5 columns, asymmetric displacement) */}
259
296
  <div className="lg:col-span-5 relative mt-8 lg:mt-0">
260
297
  <div className="absolute inset-0 bg-gradient-to-tr from-[var(--color-primary)]/20 to-transparent blur-3xl -z-10" />
261
298
  <div className="bg-[var(--bg-surface)] border border-[var(--border-subtle)] p-6 rounded-[var(--radius-lg)] shadow-[var(--shadow-lg)] transform hover:-translate-y-1 hover:rotate-1 transition-all duration-300">
262
- <h3 className="text-base font-bold text-[var(--text-primary)] mb-2">Picasso v3 Token Output</h3>
299
+ <h3 className="text-base font-bold text-[var(--text-primary)] mb-2">
300
+ Picasso v3 Token Output
301
+ </h3>
263
302
  <pre className="text-[10px] font-mono text-[var(--text-secondary)] bg-[var(--bg-base)] p-3 rounded border border-[var(--border-subtle)] overflow-x-auto">
264
- {`{
303
+ {`{
265
304
  "theme": "dark-luxury",
266
305
  "primary": "oklch(65% 0.22 250)",
267
306
  "geometry": {
@@ -281,15 +320,17 @@ export function AsymmetricHero() {
281
320
  ---
282
321
 
283
322
  ## 4. AI Interfaces
284
- * **Goal:** Interactive stream clarity, model transparency, history containment, and prompting accessibility.
285
- * **Visual Tone:** Neo-Glassmorphism, Dark Luxury, or Soft Minimal.
286
- * **Heuristics:**
287
- * **Streaming Content States:** Show skeleton overlays or pulsing typing indicator bubbles during LLM processing. Stream response blocks chunk-by-chunk without layout shifts.
288
- * **System Boundaries:** Visually differentiate user inputs, assistant responses, and system alerts (using background tinting or subtle border lines).
289
- * **Actionable Prompts:** Provide quick-start suggestion chips at the bottom of empty chat views.
290
- * **Scroll Locking:** Automatically anchor chat containers to the bottom as long messages render, but release lock if the user manually scrolls up to read history.
323
+
324
+ - **Goal:** Interactive stream clarity, model transparency, history containment, and prompting accessibility.
325
+ - **Visual Tone:** Neo-Glassmorphism, Dark Luxury, or Soft Minimal.
326
+ - **Heuristics:**
327
+ - **Streaming Content States:** Show skeleton overlays or pulsing typing indicator bubbles during LLM processing. Stream response blocks chunk-by-chunk without layout shifts.
328
+ - **System Boundaries:** Visually differentiate user inputs, assistant responses, and system alerts (using background tinting or subtle border lines).
329
+ - **Actionable Prompts:** Provide quick-start suggestion chips at the bottom of empty chat views.
330
+ - **Scroll Locking:** Automatically anchor chat containers to the bottom as long messages render, but release lock if the user manually scrolls up to read history.
291
331
 
292
332
  ### AI Chat Code Template (Input Prompt Area)
333
+
293
334
  ```tsx
294
335
  import React, { useState } from 'react';
295
336
  import { Send, Sparkles } from 'lucide-react';
@@ -297,13 +338,13 @@ import { Send, Sparkles } from 'lucide-react';
297
338
  export function AIChatInput({ onSubmit }) {
298
339
  const [input, setInput] = useState('');
299
340
  const suggestions = ['Generate SaaS Layout', 'Optimize CSS Grids', 'APCA Contrast Check'];
300
-
341
+
301
342
  return (
302
343
  <div className="w-full max-w-2xl mx-auto space-y-3 p-4 bg-[var(--bg-surface)] border border-[var(--border-subtle)] rounded-[var(--radius-md)] shadow-[var(--shadow-md)]">
303
344
  {/* Suggestions Chips Row */}
304
345
  <div className="flex flex-wrap gap-2">
305
346
  {suggestions.map((sug, i) => (
306
- <button
347
+ <button
307
348
  key={i}
308
349
  onClick={() => setInput(sug)}
309
350
  className="flex items-center gap-1.5 px-3 py-1.5 bg-[var(--bg-base)] hover:bg-[var(--bg-surface-raised)] border border-[var(--border-subtle)] rounded-full text-xs text-[var(--text-secondary)] hover:text-[var(--text-primary)] transition-all font-medium"
@@ -312,20 +353,26 @@ export function AIChatInput({ onSubmit }) {
312
353
  </button>
313
354
  ))}
314
355
  </div>
315
-
356
+
316
357
  {/* Input Text Form */}
317
- <form
318
- onSubmit={(e) => { e.preventDefault(); if (input.trim()) { onSubmit(input); setInput(''); } }}
358
+ <form
359
+ onSubmit={e => {
360
+ e.preventDefault();
361
+ if (input.trim()) {
362
+ onSubmit(input);
363
+ setInput('');
364
+ }
365
+ }}
319
366
  className="flex gap-2 items-center border border-[var(--border-default)] rounded-[var(--radius-sm)] px-3 py-2 bg-[var(--bg-base)] focus-within:ring-1 focus-within:ring-[var(--color-primary)] transition-all"
320
367
  >
321
- <input
322
- type="text"
368
+ <input
369
+ type="text"
323
370
  value={input}
324
- onChange={(e) => setInput(e.target.value)}
325
- placeholder="Ask Antigravity UI to design..."
371
+ onChange={e => setInput(e.target.value)}
372
+ placeholder="Ask Antigravity UI to design..."
326
373
  className="flex-1 bg-transparent border-0 outline-none text-xs text-[var(--text-primary)] placeholder-[var(--text-muted)]"
327
374
  />
328
- <button
375
+ <button
329
376
  type="submit"
330
377
  disabled={!input.trim()}
331
378
  className="p-2 bg-[var(--color-primary)] text-white hover:bg-[var(--color-primary-hover)] disabled:bg-[var(--text-muted)] disabled:opacity-50 disabled:cursor-not-allowed rounded-[var(--radius-sm)] transition-all"
@@ -341,18 +388,21 @@ export function AIChatInput({ onSubmit }) {
341
388
  ---
342
389
 
343
390
  ## 5. Fintech & Dashboards
344
- * **Goal:** Financial precision, trust, quick status retrieval, and clean charts.
345
- * **Visual Tone:** Soft Minimal or Dark Luxury. Green/red semantic indicators should be soft sage and terracotta to avoid harsh, alarmist styling.
346
- * **Heuristics:**
347
- * **Tabular Data Precision:** Use tabular numbers (`font-variant-numeric: tabular-nums`) to align digits perfectly in records.
348
- * **Interactive Visualizations:** Chart axes must have visible grids and clear legend labels. Hover tooltips must follow mouse movements and show precise numerical values.
391
+
392
+ - **Goal:** Financial precision, trust, quick status retrieval, and clean charts.
393
+ - **Visual Tone:** Soft Minimal or Dark Luxury. Green/red semantic indicators should be soft sage and terracotta to avoid harsh, alarmist styling.
394
+ - **Heuristics:**
395
+ - **Tabular Data Precision:** Use tabular numbers (`font-variant-numeric: tabular-nums`) to align digits perfectly in records.
396
+ - **Interactive Visualizations:** Chart axes must have visible grids and clear legend labels. Hover tooltips must follow mouse movements and show precise numerical values.
349
397
 
350
398
  ---
351
399
 
352
400
  ## Pre-Flight Checklist
401
+
353
402
  - [ ] Have I verified the visual guidelines match the target Product Category?
354
403
  - [ ] Have I checked for tabular numbers alignment in Fintech interfaces?
355
404
  - [ ] Have I checked for monospace format in Developer Tools?
356
405
 
357
406
  ## VBC Protocol (Verification-Before-Completion)
407
+
358
408
  You MUST verify existing code signatures and variables before attempting to modify or call them. No hallucination is permitted.
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before engineering glassmorphism or backdrop blurs, you MUST inspect:
23
+
23
24
  1. Vendor prefixes → Enforce `-webkit-backdrop-filter` alongside `backdrop-filter` for Safari support
24
25
  2. GPU Protection Rule (Section 70) → Strictly prohibit animating `backdrop-filter: blur()` radius; animate `opacity` of static blurred pseudo-elements instead
25
26
  3. Masked Blur Gradient layers (Section 25) → Blend multi-step blur layers with linear gradient masks to avoid harsh edge cutoffs
@@ -31,6 +32,7 @@ Architect high-performance, progressive backdrop blurs and frosted glass interfa
31
32
  ## 3 Progressive Blur Techniques
32
33
 
33
34
  ### 1. Multi-Step Masked Progressive Blur
35
+
34
36
  To prevent harsh edge cutoffs in blurred headers or footers, blend 4 progressive blur layers using linear gradient masks:
35
37
 
36
38
  ```css
@@ -43,21 +45,22 @@ To prevent harsh edge cutoffs in blurred headers or footers, blend 4 progressive
43
45
 
44
46
  .blur-layer-1 {
45
47
  backdrop-filter: blur(2px);
46
- mask: linear-gradient(to bottom, rgba(0,0,0,1) 0%, rgba(0,0,0,0) 25%);
48
+ mask: linear-gradient(to bottom, rgba(0, 0, 0, 1) 0%, rgba(0, 0, 0, 0) 25%);
47
49
  }
48
50
 
49
51
  .blur-layer-2 {
50
52
  backdrop-filter: blur(8px);
51
- mask: linear-gradient(to bottom, rgba(0,0,0,1) 25%, rgba(0,0,0,0) 65%);
53
+ mask: linear-gradient(to bottom, rgba(0, 0, 0, 1) 25%, rgba(0, 0, 0, 0) 65%);
52
54
  }
53
55
 
54
56
  .blur-layer-3 {
55
57
  backdrop-filter: blur(16px);
56
- mask: linear-gradient(to bottom, rgba(0,0,0,1) 65%, rgba(0,0,0,1) 100%);
58
+ mask: linear-gradient(to bottom, rgba(0, 0, 0, 1) 65%, rgba(0, 0, 0, 1) 100%);
57
59
  }
58
60
  ```
59
61
 
60
62
  ### 2. Glass Card Depth Recipe
63
+
61
64
  ```css
62
65
  .glass-card {
63
66
  background: rgba(255, 255, 255, 0.65);
@@ -69,7 +72,7 @@ To prevent harsh edge cutoffs in blurred headers or footers, blend 4 progressive
69
72
 
70
73
  @media (prefers-color-scheme: dark) {
71
74
  .glass-card {
72
- background: rgba(18, 18, 20, 0.70);
75
+ background: rgba(18, 18, 20, 0.7);
73
76
  border: 1px solid rgba(255, 255, 255, 0.08);
74
77
  box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
75
78
  }
@@ -77,7 +80,9 @@ To prevent harsh edge cutoffs in blurred headers or footers, blend 4 progressive
77
80
  ```
78
81
 
79
82
  ### 3. GPU Hardware Acceleration Protection
83
+
80
84
  Backdrop blurs can cause frame drops if animated directly.
85
+
81
86
  - **Rule**: Never animate `backdrop-filter: blur()` properties during scroll or transitions. Animate `opacity` of a static blurred pseudo-element instead!
82
87
 
83
88
  ---
@@ -24,6 +24,7 @@ scripts-binding:
24
24
  ## Mandatory Pre-Flight Context Inspection
25
25
 
26
26
  Before generating code or suggesting architectural patterns, you MUST inspect:
27
+
27
28
  1. Recorded Idioms table (Section 43) → Check active project-specific architectural overrides
28
29
  2. `skill_evolution.js` status → Verify if staged commits contain un-digested architectural deltas
29
30
  3. Override protocol (Section 71) → Never contradict a project idiom silently; flag deviations explicitlyrst)
@@ -0,0 +1,58 @@
1
+ ---
2
+ name: property-based-testing
3
+ description: Generative input invariant testing using fast-check (TS/JS) and hypothesis (Python) to uncover hidden edge cases and boundary failures.
4
+ tools: Read, Grep, Glob, Edit, Write
5
+ version: 3.0.0
6
+ last-updated: 2026-08-05
7
+ script: .agent/scripts/test_runner.js
8
+ scripts-binding:
9
+ - .agent/scripts/test_runner.js
10
+ - .agent/scripts/inner_loop_validator.js
11
+ skills:
12
+ - testing-patterns
13
+ - tdd-workflow
14
+ - clean-code
15
+ ---
16
+
17
+ # Property-Based Testing — Invariant Verification
18
+
19
+ ## Mandatory Pre-Flight Context Inspection
20
+
21
+ Before writing property tests:
22
+
23
+ 1. Invariant Identification → Define mathematical properties that must hold true for ALL inputs (e.g. `reverse(reverse(list)) == list`)
24
+ 2. Arbitrary Generator Scoping → Constrain generator bounds to domain validity (e.g. non-empty strings, positive integers)
25
+ 3. Shrinking & Reproducibility → Store seed values for failing test runs to reproduce minimal failing inputs
26
+
27
+ ## Fast-Check Arbitrary Generator & Vitest Invariant Test
28
+
29
+ ```typescript
30
+ import fc from 'fast-check';
31
+ import { test, expect } from 'vitest';
32
+
33
+ function parseAmount(currencyStr: string): number | null {
34
+ const cleaned = currencyStr.replace(/[^0-9.]/g, '');
35
+ const num = parseFloat(cleaned);
36
+ return isNaN(num) ? null : num;
37
+ }
38
+
39
+ test('currency parser invariant: non-negative parsed numbers', () => {
40
+ fc.assert(
41
+ fc.property(fc.tuple(fc.string(), fc.double({ min: 0, max: 1000000 })), ([prefix, val]) => {
42
+ const input = `${prefix}$${val.toFixed(2)}`;
43
+ const parsed = parseAmount(input);
44
+
45
+ if (parsed !== null) {
46
+ expect(parsed).toBeGreaterThanOrEqual(0);
47
+ expect(Number.isFinite(parsed)).toBe(true);
48
+ }
49
+ }),
50
+ { numRuns: 500 }, // Execute 500 generative iterations
51
+ );
52
+ });
53
+ ```
54
+
55
+ ## 🛑 Verification-Before-Completion (VBC) Protocol
56
+
57
+ - Run minimum 100 iterations per property test run.
58
+ - Confirm shrinking mechanism isolates minimal failing counter-example on assertion failure.
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before architecting Python projects or selecting frameworks, you MUST inspect:
23
+
23
24
  1. Typed Data Models over Dicts (Section 15) → Use Pydantic models or `@dataclass` for structured data; ban un-typed `dict` passing
24
25
  2. Specific Exception Handling (Section 16) → Catch explicit exceptions (`ValueError`, `AppError`); ban bare `except:` or generic `except Exception:` swallowing
25
26
  3. Pathlib Modern API (Section 17) → Use `pathlib.Path` for cross-platform filesystem operations; ban legacy `os.path`
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before writing Python code or FastAPI endpoints, you MUST inspect:
23
+
23
24
  1. Pydantic v2 Migration Syntax (Section 17) → Use `model_dump()`, `model_dump_json()`, `model_validate()`, and `@field_validator`; ban v1 `.dict()` and `@validator`
24
25
  2. Modern Native Generics (Section 16) → Use native `list[str]`, `dict[k,v]`, and `X | None` (Python 3.10+); ban legacy `typing.List` / `typing.Optional`
25
26
  3. Non-Blocking Async Clients (Section 21) → Use `httpx.AsyncClient()` in async code; ban blocking `requests` library inside asyncio event loops
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before subduing visual design elements, you MUST inspect:
23
+
23
24
  1. `DESIGN.md` / `package.json` → Check background surface variables and contrast standards
24
25
  2. Palette Subjugation rules (Section 24) → Limit high-saturation colors to single primary actions
25
26
  3. Motion Restraint rules (Section 35) → Eliminate looping pulsing badges and restrict motion to user-initiated actions
@@ -31,21 +32,26 @@ Reduce visual noise, eliminate unnecessary color competition, and restore calm f
31
32
  ## 5 Restraint Tactics
32
33
 
33
34
  ### 1. Palette Subjugation
35
+
34
36
  - **Reduce Primary Colors**: Limit saturated colors to a single primary action. Turn secondary accent colors into subtle monochrome tones (`oklch(0.92 0.01 240)`).
35
37
  - **Mute Background Surfaces**: Replace multi-colored cards or high-saturation gradient backgrounds with quiet, neutral monochrome surfaces.
36
38
 
37
39
  ### 2. De-emphasize Borders & Outlines
40
+
38
41
  - **Subtle Surface Elevation**: Replace harsh 100% black/white borders with subtle surface background differences ($L \pm 3\%$) or ultra-light 5% opacity borders.
39
42
 
40
43
  ### 3. Subdue Typography Scaling
44
+
41
45
  - **Reduce Font Weight Spikes**: Replace heavy 900 bold display headings with refined semibold (`600`) or medium (`500`) typography.
42
46
  - **Normalize Font Sizes**: Reduce font size jumps between section headers and subheaders to create smooth visual harmony.
43
47
 
44
48
  ### 4. Calm Motion & Animations
49
+
45
50
  - **Eliminate Continuous Animations**: Remove spinning gradient borders, pulsing badges, and bouncing icons. Restrict motion exclusively to user-initiated actions.
46
51
  - **Shorten Transitions**: Keep hover state transitions subtle and fast ($\le 150\text{ms}$).
47
52
 
48
53
  ### 5. Expand Negative Space
54
+
49
55
  - **Increase Padding**: Give content room to breathe by increasing section paddings by 25%-50%, reducing cognitive overload.
50
56
 
51
57
  ---
@@ -20,6 +20,7 @@ scripts-binding:
20
20
  ## Mandatory Pre-Flight Context Inspection
21
21
 
22
22
  Before auditing React components for performance or health issues, you MUST inspect:
23
+
23
24
  1. Re-render triggers (Section 24) → Identify inline object/array props and inline callback handlers breaking memoization
24
25
  2. `useEffect` Cleanup (Section 31) → Ensure all event listeners, intervals, and subscriptions return explicit cleanup functions
25
26
  3. Derived State Anti-Pattern (Section 41) → Ban props duplicated into state (`useState(props.val)`); derive values directly during render
@@ -31,14 +32,18 @@ Diagnose and resolve unnecessary re-renders, state synchronization bugs, memory
31
32
  ## 4 React Health Checks
32
33
 
33
34
  ### 1. Unnecessary Re-render Prevention
35
+
34
36
  - **Inline Object/Array Props**: Passing inline objects `<Child config={{ color: 'blue' }} />` creates new references every render. Wrap with `useMemo` or declare outside component scope.
35
37
  - **Inline Callback Props**: Passing inline functions `<Child onClick={() => doSomething()} />` breaks `React.memo`. Wrap callbacks with `useCallback`.
36
38
 
37
39
  ### 2. State Colocation
40
+
38
41
  - Don't lift state higher than necessary. Keep state local to the component consuming it to isolate re-render subtrees.
39
42
 
40
43
  ### 3. Cleanup in `useEffect`
44
+
41
45
  - Every event listener, interval, or subscription created in `useEffect` MUST return a cleanup function to prevent memory leaks:
46
+
42
47
  ```tsx
43
48
  useEffect(() => {
44
49
  const handleResize = () => setWidth(window.innerWidth);
@@ -48,6 +53,7 @@ useEffect(() => {
48
53
  ```
49
54
 
50
55
  ### 4. Derived State Anti-Pattern
56
+
51
57
  - Never duplicate props into state (`const [name, setName] = useState(props.name)`). Calculate derived values during rendering directly.
52
58
 
53
59
  ---