@nurix/etna 0.19.11 → 0.19.12

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 (486) hide show
  1. package/data/harness-index.json +1 -1
  2. package/data/harnesses/code/harness.json +1 -1
  3. package/data/harnesses/code/rules/frontend.md +5 -5
  4. package/data/harnesses/code/skills/design/SKILL.md +70 -50
  5. package/data/harnesses/code/skills/design/components/charts.md +76 -0
  6. package/data/harnesses/code/skills/design/components/collections.md +132 -0
  7. package/data/harnesses/code/skills/design/components/feedback.md +47 -0
  8. package/data/harnesses/code/skills/design/components/hooks.md +35 -0
  9. package/data/harnesses/code/skills/design/components/index.md +143 -0
  10. package/data/harnesses/code/skills/design/components/inputs.md +327 -0
  11. package/data/harnesses/code/skills/design/components/layout.md +52 -0
  12. package/data/harnesses/code/skills/design/components/media.md +66 -0
  13. package/data/harnesses/code/skills/design/components/motion.md +82 -0
  14. package/data/harnesses/code/skills/design/components/navigation.md +29 -0
  15. package/data/harnesses/code/skills/design/components/overlays.md +72 -0
  16. package/data/harnesses/code/skills/design/components/setup.md +40 -0
  17. package/data/harnesses/code/skills/design/components/typography.md +46 -0
  18. package/data/harnesses/code/skills/design/components/utils.md +37 -0
  19. package/data/harnesses/code/skills/design/data/blueprints/browse.md +38 -0
  20. package/data/harnesses/code/skills/design/data/blueprints/creation-flow.md +38 -0
  21. package/data/harnesses/code/skills/design/data/blueprints/dashboard.md +38 -0
  22. package/data/harnesses/code/skills/design/data/blueprints/grid.md +38 -0
  23. package/data/harnesses/code/skills/design/data/blueprints/queue.md +38 -0
  24. package/data/harnesses/code/skills/design/data/blueprints/record-detail.md +38 -0
  25. package/data/harnesses/code/skills/design/data/blueprints/settings.md +38 -0
  26. package/data/harnesses/code/skills/design/data/chart-styling/Readme.md +33 -0
  27. package/data/harnesses/code/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +19 -0
  28. package/data/harnesses/code/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +19 -0
  29. package/data/harnesses/code/skills/design/data/chart-styling/datadog-classic-six-aligned.md +19 -0
  30. package/data/harnesses/code/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +19 -0
  31. package/data/harnesses/code/skills/design/data/chart-styling/econ-red-rule-horizontal.md +19 -0
  32. package/data/harnesses/code/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +19 -0
  33. package/data/harnesses/code/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +19 -0
  34. package/data/harnesses/code/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +19 -0
  35. package/data/harnesses/code/skills/design/data/chart-styling/material-rounded-explicit-label.md +19 -0
  36. package/data/harnesses/code/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +19 -0
  37. package/data/harnesses/code/skills/design/data/chart-styling/plot-currentcolor-inherit.md +19 -0
  38. package/data/harnesses/code/skills/design/data/chart-styling/saas-gradient-glow-area.md +19 -0
  39. package/data/harnesses/code/skills/design/data/chart-styling/shadcn-composable-css-vars.md +19 -0
  40. package/data/harnesses/code/skills/design/data/charts/census.csv +58 -0
  41. package/data/harnesses/code/skills/design/data/checklists/browse.md +21 -0
  42. package/data/harnesses/code/skills/design/data/checklists/creation-flow.md +20 -0
  43. package/data/harnesses/code/skills/design/data/checklists/dashboard.md +21 -0
  44. package/data/harnesses/code/skills/design/data/checklists/grid.md +21 -0
  45. package/data/harnesses/code/skills/design/data/checklists/queue.md +21 -0
  46. package/data/harnesses/code/skills/design/data/checklists/record-detail.md +21 -0
  47. package/data/harnesses/code/skills/design/data/checklists/settings.md +21 -0
  48. package/data/harnesses/code/skills/design/data/chrome/board-column.md +68 -0
  49. package/data/harnesses/code/skills/design/data/chrome/data-table.md +63 -0
  50. package/data/harnesses/code/skills/design/data/chrome/side-panel.md +60 -0
  51. package/data/harnesses/code/skills/design/data/chrome/sidebar.md +78 -0
  52. package/data/harnesses/code/skills/design/data/chrome/stat-cards.md +62 -0
  53. package/data/harnesses/code/skills/design/data/chrome/topbar.md +65 -0
  54. package/data/harnesses/code/skills/design/data/color/accent-presets.md +90 -0
  55. package/data/harnesses/code/skills/design/data/color/aesop-earth-mute.md +91 -0
  56. package/data/harnesses/code/skills/design/data/color/arc-peach-play.md +90 -0
  57. package/data/harnesses/code/skills/design/data/color/attio-hunter-teal.md +90 -0
  58. package/data/harnesses/code/skills/design/data/color/carbon-cyan-signal.md +90 -0
  59. package/data/harnesses/code/skills/design/data/color/clay-parchment.md +90 -0
  60. package/data/harnesses/code/skills/design/data/color/duolingo-feather.md +90 -0
  61. package/data/harnesses/code/skills/design/data/color/geist-mono-signal.md +90 -0
  62. package/data/harnesses/code/skills/design/data/color/linear-graphite-violet.md +90 -0
  63. package/data/harnesses/code/skills/design/data/color/mercury-onyx-cobalt.md +90 -0
  64. package/data/harnesses/code/skills/design/data/color/notion-paper-ink.md +90 -0
  65. package/data/harnesses/code/skills/design/data/color/radix-slate-iris.md +90 -0
  66. package/data/harnesses/code/skills/design/data/color/raycast-void-spectrum.md +90 -0
  67. package/data/harnesses/code/skills/design/data/color/spectrum-celery-fuchsia.md +90 -0
  68. package/data/harnesses/code/skills/design/data/color/stripe-blurple-ruby.md +90 -0
  69. package/data/harnesses/code/skills/design/data/color/superhuman-cod-picton.md +89 -0
  70. package/data/harnesses/code/skills/design/data/corpora/operations-review/companies.csv +15 -0
  71. package/data/harnesses/code/skills/design/data/corpora/operations-review/corpus.md +87 -0
  72. package/data/harnesses/code/skills/design/data/corpora/operations-review/people.csv +25 -0
  73. package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/companies.csv +15 -0
  74. package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/corpus.md +83 -0
  75. package/data/harnesses/code/skills/design/data/corpora/procurement-approvals/people.csv +25 -0
  76. package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/companies.csv +15 -0
  77. package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/corpus.md +89 -0
  78. package/data/harnesses/code/skills/design/data/corpora/revenue-analytics/people.csv +25 -0
  79. package/data/harnesses/code/skills/design/data/elevation/ant-design-directional-shadow.md +19 -0
  80. package/data/harnesses/code/skills/design/data/elevation/apple-liquid-glass-material.md +18 -0
  81. package/data/harnesses/code/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +20 -0
  82. package/data/harnesses/code/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +20 -0
  83. package/data/harnesses/code/skills/design/data/elevation/github-primer-sparing-shadow.md +19 -0
  84. package/data/harnesses/code/skills/design/data/elevation/ibm-carbon-layer-and-border.md +19 -0
  85. package/data/harnesses/code/skills/design/data/elevation/linear-dark-surface-ladder.md +17 -0
  86. package/data/harnesses/code/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +19 -0
  87. package/data/harnesses/code/skills/design/data/elevation/material-3-tonal-elevation.md +21 -0
  88. package/data/harnesses/code/skills/design/data/elevation/neobrutalist-hard-offset.md +19 -0
  89. package/data/harnesses/code/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +18 -0
  90. package/data/harnesses/code/skills/design/data/elevation/notion-warm-minimal-hairline.md +17 -0
  91. package/data/harnesses/code/skills/design/data/elevation/polaris-elevation-inset-bevel.md +21 -0
  92. package/data/harnesses/code/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +19 -0
  93. package/data/harnesses/code/skills/design/data/elevation/shadcn-neutral-derived-radius.md +19 -0
  94. package/data/harnesses/code/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +18 -0
  95. package/data/harnesses/code/skills/design/data/elevation/tailwind-default-utility-scale.md +19 -0
  96. package/data/harnesses/code/skills/design/data/elevation/vercel-geist-shadow-as-border.md +20 -0
  97. package/data/harnesses/code/skills/design/data/gradients/amber-attention-fill.md +16 -0
  98. package/data/harnesses/code/skills/design/data/gradients/cloud-shadow-wash.md +16 -0
  99. package/data/harnesses/code/skills/design/data/gradients/confident-lavender-wash.md +16 -0
  100. package/data/harnesses/code/skills/design/data/gradients/ember-ship-flare.md +18 -0
  101. package/data/harnesses/code/skills/design/data/gradients/full-metal-wash.md +16 -0
  102. package/data/harnesses/code/skills/design/data/gradients/indigo-ruby-cta-band.md +18 -0
  103. package/data/harnesses/code/skills/design/data/gradients/linear-graphite-wash.md +18 -0
  104. package/data/harnesses/code/skills/design/data/gradients/marble-quartz-wash.md +16 -0
  105. package/data/harnesses/code/skills/design/data/gradients/midnight-aurora-panel.md +16 -0
  106. package/data/harnesses/code/skills/design/data/gradients/neutral-volume-fill.md +16 -0
  107. package/data/harnesses/code/skills/design/data/gradients/revenue-uptrend-fill.md +16 -0
  108. package/data/harnesses/code/skills/design/data/gradients/risk-decline-fill.md +16 -0
  109. package/data/harnesses/code/skills/design/data/gradients/signal-blue-develop.md +18 -0
  110. package/data/harnesses/code/skills/design/data/gradients/slate-mist-wash.md +16 -0
  111. package/data/harnesses/code/skills/design/data/gradients/stripe-atmosphere-mesh.md +18 -0
  112. package/data/harnesses/code/skills/design/data/gradients/teal-signal-accent.md +16 -0
  113. package/data/harnesses/code/skills/design/data/gradients/violet-magenta-promo.md +16 -0
  114. package/data/harnesses/code/skills/design/data/iconography.md +199 -0
  115. package/data/harnesses/code/skills/design/data/motion/accordion-expand.md +18 -0
  116. package/data/harnesses/code/skills/design/data/motion/destructive-hold-confirm.md +18 -0
  117. package/data/harnesses/code/skills/design/data/motion/drag-dismiss-momentum.md +18 -0
  118. package/data/harnesses/code/skills/design/data/motion/empty-state-arrive.md +18 -0
  119. package/data/harnesses/code/skills/design/data/motion/hover-lift.md +18 -0
  120. package/data/harnesses/code/skills/design/data/motion/modal-center-arrive.md +18 -0
  121. package/data/harnesses/code/skills/design/data/motion/number-ticker-roll.md +18 -0
  122. package/data/harnesses/code/skills/design/data/motion/onboarding-bounce.md +18 -0
  123. package/data/harnesses/code/skills/design/data/motion/panel-slide.md +18 -0
  124. package/data/harnesses/code/skills/design/data/motion/press-feedback.md +18 -0
  125. package/data/harnesses/code/skills/design/data/motion/progress-linear-loop.md +18 -0
  126. package/data/harnesses/code/skills/design/data/motion/route-crossfade.md +18 -0
  127. package/data/harnesses/code/skills/design/data/motion/rubber-band-overscroll.md +18 -0
  128. package/data/harnesses/code/skills/design/data/motion/skeleton-shimmer.md +18 -0
  129. package/data/harnesses/code/skills/design/data/motion/stagger-arrive.md +18 -0
  130. package/data/harnesses/code/skills/design/data/motion/toast-enter-stack.md +18 -0
  131. package/data/harnesses/code/skills/design/data/motion/tooltip-chain-instant.md +18 -0
  132. package/data/harnesses/code/skills/design/data/motion/trigger-anchored-reveal.md +18 -0
  133. package/data/harnesses/code/skills/design/data/tells.csv +34 -0
  134. package/data/harnesses/code/skills/design/data/typography/anton-work-sans.md +17 -0
  135. package/data/harnesses/code/skills/design/data/typography/archivo-black-archivo.md +17 -0
  136. package/data/harnesses/code/skills/design/data/typography/bitter-karla.md +17 -0
  137. package/data/harnesses/code/skills/design/data/typography/dm-serif-dm-sans.md +17 -0
  138. package/data/harnesses/code/skills/design/data/typography/fraunces-inter.md +17 -0
  139. package/data/harnesses/code/skills/design/data/typography/geist-geist-mono.md +17 -0
  140. package/data/harnesses/code/skills/design/data/typography/hubot-sans-mona-sans.md +17 -0
  141. package/data/harnesses/code/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +17 -0
  142. package/data/harnesses/code/skills/design/data/typography/instrument-serif-instrument-sans.md +17 -0
  143. package/data/harnesses/code/skills/design/data/typography/inter-operator-single-family.md +17 -0
  144. package/data/harnesses/code/skills/design/data/typography/libre-baskerville-libre-franklin.md +17 -0
  145. package/data/harnesses/code/skills/design/data/typography/newsreader-inter.md +17 -0
  146. package/data/harnesses/code/skills/design/data/typography/playfair-display-source-sans.md +17 -0
  147. package/data/harnesses/code/skills/design/data/typography/public-sans-operator-single-family.md +17 -0
  148. package/data/harnesses/code/skills/design/data/typography/sohne-inter-fintech.md +17 -0
  149. package/data/harnesses/code/skills/design/data/typography/source-serif-source-sans.md +17 -0
  150. package/data/harnesses/code/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +17 -0
  151. package/data/harnesses/code/skills/design/data/typography/spectral-manrope.md +17 -0
  152. package/data/harnesses/code/skills/design/data/voices/bright-collaborator.md +29 -0
  153. package/data/harnesses/code/skills/design/data/voices/direct-operator.md +29 -0
  154. package/data/harnesses/code/skills/design/data/voices/earnest-helper.md +29 -0
  155. package/data/harnesses/code/skills/design/data/voices/editorial-composed.md +29 -0
  156. package/data/harnesses/code/skills/design/data/voices/quiet-concierge.md +29 -0
  157. package/data/harnesses/code/skills/design/data/voices/warm-guide.md +29 -0
  158. package/data/harnesses/code/skills/design/design-md/SCHEMA.md +179 -0
  159. package/data/harnesses/code/skills/design/design-md/index.csv +67 -0
  160. package/data/harnesses/code/skills/design/design-md/library/airbnb.md +207 -0
  161. package/data/harnesses/code/skills/design/design-md/library/airtable.md +205 -0
  162. package/data/harnesses/code/skills/design/design-md/library/anthropic-claude.md +203 -0
  163. package/data/harnesses/code/skills/design/design-md/library/apple.md +206 -0
  164. package/data/harnesses/code/skills/design/design-md/library/binance.md +210 -0
  165. package/data/harnesses/code/skills/design/design-md/library/bmw.md +210 -0
  166. package/data/harnesses/code/skills/design/design-md/library/cal.md +209 -0
  167. package/data/harnesses/code/skills/design/design-md/library/clay.md +204 -0
  168. package/data/harnesses/code/skills/design/design-md/library/clickhouse.md +205 -0
  169. package/data/harnesses/code/skills/design/design-md/library/cohere.md +205 -0
  170. package/data/harnesses/code/skills/design/design-md/library/coinbase.md +198 -0
  171. package/data/harnesses/code/skills/design/design-md/library/composio.md +198 -0
  172. package/data/harnesses/code/skills/design/design-md/library/cursor.md +197 -0
  173. package/data/harnesses/code/skills/design/design-md/library/elevenlabs.md +199 -0
  174. package/data/harnesses/code/skills/design/design-md/library/expo.md +200 -0
  175. package/data/harnesses/code/skills/design/design-md/library/figma.md +199 -0
  176. package/data/harnesses/code/skills/design/design-md/library/framer.md +202 -0
  177. package/data/harnesses/code/skills/design/design-md/library/hashicorp.md +205 -0
  178. package/data/harnesses/code/skills/design/design-md/library/ibm.md +205 -0
  179. package/data/harnesses/code/skills/design/design-md/library/intercom.md +204 -0
  180. package/data/harnesses/code/skills/design/design-md/library/kraken.md +200 -0
  181. package/data/harnesses/code/skills/design/design-md/library/linear-app.md +198 -0
  182. package/data/harnesses/code/skills/design/design-md/library/lovable.md +199 -0
  183. package/data/harnesses/code/skills/design/design-md/library/meta.md +204 -0
  184. package/data/harnesses/code/skills/design/design-md/library/minimax.md +204 -0
  185. package/data/harnesses/code/skills/design/design-md/library/mintlify.md +210 -0
  186. package/data/harnesses/code/skills/design/design-md/library/miro.md +209 -0
  187. package/data/harnesses/code/skills/design/design-md/library/mistral-ai.md +201 -0
  188. package/data/harnesses/code/skills/design/design-md/library/mongodb.md +201 -0
  189. package/data/harnesses/code/skills/design/design-md/library/notion.md +204 -0
  190. package/data/harnesses/code/skills/design/design-md/library/nvidia.md +215 -0
  191. package/data/harnesses/code/skills/design/design-md/library/ollama.md +213 -0
  192. package/data/harnesses/code/skills/design/design-md/library/opencode-ai.md +216 -0
  193. package/data/harnesses/code/skills/design/design-md/library/posthog.md +218 -0
  194. package/data/harnesses/code/skills/design/design-md/library/raycast.md +214 -0
  195. package/data/harnesses/code/skills/design/design-md/library/replicate.md +202 -0
  196. package/data/harnesses/code/skills/design/design-md/library/resend.md +203 -0
  197. package/data/harnesses/code/skills/design/design-md/library/revolut.md +203 -0
  198. package/data/harnesses/code/skills/design/design-md/library/runwayml.md +203 -0
  199. package/data/harnesses/code/skills/design/design-md/library/sanity.md +200 -0
  200. package/data/harnesses/code/skills/design/design-md/library/sentry.md +201 -0
  201. package/data/harnesses/code/skills/design/design-md/library/shopify.md +202 -0
  202. package/data/harnesses/code/skills/design/design-md/library/slack.md +202 -0
  203. package/data/harnesses/code/skills/design/design-md/library/spacex.md +206 -0
  204. package/data/harnesses/code/skills/design/design-md/library/spotify.md +206 -0
  205. package/data/harnesses/code/skills/design/design-md/library/stripe.md +196 -0
  206. package/data/harnesses/code/skills/design/design-md/library/supabase.md +196 -0
  207. package/data/harnesses/code/skills/design/design-md/library/superhuman.md +194 -0
  208. package/data/harnesses/code/skills/design/design-md/library/tesla.md +198 -0
  209. package/data/harnesses/code/skills/design/design-md/library/theverge.md +199 -0
  210. package/data/harnesses/code/skills/design/design-md/library/together-ai.md +193 -0
  211. package/data/harnesses/code/skills/design/design-md/library/uber.md +195 -0
  212. package/data/harnesses/code/skills/design/design-md/library/vercel.md +195 -0
  213. package/data/harnesses/code/skills/design/design-md/library/voltagent.md +197 -0
  214. package/data/harnesses/code/skills/design/design-md/library/warp.md +196 -0
  215. package/data/harnesses/code/skills/design/design-md/library/webflow.md +197 -0
  216. package/data/harnesses/code/skills/design/design-md/library/wired.md +197 -0
  217. package/data/harnesses/code/skills/design/design-md/library/wise.md +198 -0
  218. package/data/harnesses/code/skills/design/design-md/library/x-ai.md +199 -0
  219. package/data/harnesses/code/skills/design/design-md/library/zapier.md +198 -0
  220. package/data/harnesses/code/skills/design/design-md/nurix.md +214 -0
  221. package/data/harnesses/code/skills/design/design-md/variants/editorial-luxury.md +184 -0
  222. package/data/harnesses/code/skills/design/design-md/variants/expressive-saas.md +216 -0
  223. package/data/harnesses/code/skills/design/design-md/variants/quiet-premium.md +211 -0
  224. package/data/harnesses/code/skills/design/design-md/variants/terse-dense-operator.md +212 -0
  225. package/data/harnesses/code/skills/design/design-md/variants/warm-approachable.md +216 -0
  226. package/data/harnesses/code/skills/design/references/compose.md +23 -0
  227. package/data/harnesses/code/skills/design/references/content.md +28 -0
  228. package/data/harnesses/code/skills/design/references/emission.md +21 -0
  229. package/data/harnesses/code/skills/design/references/existing-apps.md +27 -0
  230. package/data/harnesses/code/skills/design/references/intake.md +36 -0
  231. package/data/harnesses/code/skills/design/references/object-pass.md +24 -0
  232. package/data/harnesses/code/skills/design/references/ship-gate.md +29 -0
  233. package/data/harnesses/code/skills/design/references/ux-patterns/Readme.md +195 -0
  234. package/data/harnesses/code/skills/design/references/ux-patterns/ai-layer.md +49 -0
  235. package/data/harnesses/code/skills/design/references/ux-patterns/attributes-lifecycle.md +43 -0
  236. package/data/harnesses/code/skills/design/references/ux-patterns/container-choice.md +44 -0
  237. package/data/harnesses/code/skills/design/references/ux-patterns/creation-paths.md +46 -0
  238. package/data/harnesses/code/skills/design/references/ux-patterns/dashboards.md +42 -0
  239. package/data/harnesses/code/skills/design/references/ux-patterns/modes.md +42 -0
  240. package/data/harnesses/code/skills/design/references/ux-patterns/object-model.md +46 -0
  241. package/data/harnesses/code/skills/design/references/ux-patterns/page-archetype.md +48 -0
  242. package/data/harnesses/code/skills/design/references/ux-patterns/promotion-demotion.md +37 -0
  243. package/data/harnesses/code/skills/design/references/ux-patterns/settings.md +42 -0
  244. package/data/harnesses/code/skills/design/references/ux-patterns/standard-pages.md +46 -0
  245. package/data/harnesses/code/skills/design/references/ux-patterns/state-matrix.md +41 -0
  246. package/data/harnesses/code/skills/design/references/ux-patterns/table-mechanics.md +48 -0
  247. package/data/harnesses/code/skills/design/references/ux-patterns/verbs.md +45 -0
  248. package/data/harnesses/code/skills/design/references/ux-patterns/viewer-context.md +40 -0
  249. package/data/harnesses/code/skills/design/scripts/README-validator.md +27 -0
  250. package/data/harnesses/code/skills/design/scripts/select-chart.mjs +596 -0
  251. package/data/harnesses/code/skills/design/scripts/validate-design-md.mjs +1198 -0
  252. package/package.json +1 -1
  253. package/data/harnesses/code/skills/design/data/catalog/rules.csv +0 -137
  254. package/data/harnesses/code/skills/design/data/combinations/Readme.md +0 -33
  255. package/data/harnesses/code/skills/design/data/combinations/accent-presets.md +0 -113
  256. package/data/harnesses/code/skills/design/data/combinations/charts.csv +0 -33
  257. package/data/harnesses/code/skills/design/data/combinations/fonts-known.json +0 -448
  258. package/data/harnesses/code/skills/design/data/combinations/icons.csv +0 -157
  259. package/data/harnesses/code/skills/design/data/combinations/landing.csv +0 -38
  260. package/data/harnesses/code/skills/design/data/combinations/lucide-names.json +0 -2001
  261. package/data/harnesses/code/skills/design/data/combinations/manifest.json +0 -330
  262. package/data/harnesses/code/skills/design/data/combinations/motion.csv +0 -10
  263. package/data/harnesses/code/skills/design/data/combinations/palettes.csv +0 -92
  264. package/data/harnesses/code/skills/design/data/combinations/product-router.csv +0 -80
  265. package/data/harnesses/code/skills/design/data/combinations/styles.csv +0 -67
  266. package/data/harnesses/code/skills/design/data/combinations/typography.csv +0 -64
  267. package/data/harnesses/code/skills/design/data/design-md/SCHEMA.md +0 -106
  268. package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +0 -154
  269. package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +0 -151
  270. package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +0 -139
  271. package/data/harnesses/code/skills/design/data/design-md/library/apple.md +0 -139
  272. package/data/harnesses/code/skills/design/data/design-md/library/binance.md +0 -140
  273. package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +0 -140
  274. package/data/harnesses/code/skills/design/data/design-md/library/cal.md +0 -140
  275. package/data/harnesses/code/skills/design/data/design-md/library/clay.md +0 -139
  276. package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +0 -139
  277. package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +0 -147
  278. package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +0 -156
  279. package/data/harnesses/code/skills/design/data/design-md/library/composio.md +0 -138
  280. package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +0 -138
  281. package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +0 -137
  282. package/data/harnesses/code/skills/design/data/design-md/library/expo.md +0 -148
  283. package/data/harnesses/code/skills/design/data/design-md/library/figma.md +0 -141
  284. package/data/harnesses/code/skills/design/data/design-md/library/framer.md +0 -156
  285. package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +0 -140
  286. package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +0 -153
  287. package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +0 -158
  288. package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +0 -156
  289. package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +0 -122
  290. package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +0 -140
  291. package/data/harnesses/code/skills/design/data/design-md/library/meta.md +0 -139
  292. package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +0 -139
  293. package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +0 -139
  294. package/data/harnesses/code/skills/design/data/design-md/library/miro.md +0 -153
  295. package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +0 -140
  296. package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +0 -155
  297. package/data/harnesses/code/skills/design/data/design-md/library/notion.md +0 -140
  298. package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +0 -141
  299. package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +0 -145
  300. package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +0 -142
  301. package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +0 -152
  302. package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +0 -137
  303. package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +0 -140
  304. package/data/harnesses/code/skills/design/data/design-md/library/resend.md +0 -170
  305. package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +0 -145
  306. package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +0 -137
  307. package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +0 -168
  308. package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +0 -163
  309. package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +0 -147
  310. package/data/harnesses/code/skills/design/data/design-md/library/slack.md +0 -158
  311. package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +0 -171
  312. package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +0 -166
  313. package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +0 -160
  314. package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +0 -173
  315. package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +0 -145
  316. package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +0 -153
  317. package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +0 -167
  318. package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +0 -140
  319. package/data/harnesses/code/skills/design/data/design-md/library/uber.md +0 -140
  320. package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +0 -140
  321. package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +0 -130
  322. package/data/harnesses/code/skills/design/data/design-md/library/warp.md +0 -140
  323. package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +0 -140
  324. package/data/harnesses/code/skills/design/data/design-md/library/wired.md +0 -139
  325. package/data/harnesses/code/skills/design/data/design-md/library/wise.md +0 -137
  326. package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +0 -138
  327. package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +0 -158
  328. package/data/harnesses/code/skills/design/data/design-md/nurix.md +0 -138
  329. package/data/harnesses/code/skills/design/data/design-tokens/SCHEMA.md +0 -695
  330. package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.resolver.json +0 -20
  331. package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.tokens.json +0 -1272
  332. package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.resolver.json +0 -20
  333. package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.tokens.json +0 -1268
  334. package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.resolver.json +0 -20
  335. package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.tokens.json +0 -1273
  336. package/data/harnesses/code/skills/design/data/design-tokens/apple/design.resolver.json +0 -20
  337. package/data/harnesses/code/skills/design/data/design-tokens/apple/design.tokens.json +0 -1262
  338. package/data/harnesses/code/skills/design/data/design-tokens/binance/design.resolver.json +0 -20
  339. package/data/harnesses/code/skills/design/data/design-tokens/binance/design.tokens.json +0 -1257
  340. package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.resolver.json +0 -20
  341. package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.tokens.json +0 -1270
  342. package/data/harnesses/code/skills/design/data/design-tokens/cal/design.resolver.json +0 -20
  343. package/data/harnesses/code/skills/design/data/design-tokens/cal/design.tokens.json +0 -1270
  344. package/data/harnesses/code/skills/design/data/design-tokens/clay/design.resolver.json +0 -20
  345. package/data/harnesses/code/skills/design/data/design-tokens/clay/design.tokens.json +0 -1261
  346. package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.resolver.json +0 -20
  347. package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.tokens.json +0 -1268
  348. package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.resolver.json +0 -20
  349. package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.tokens.json +0 -1281
  350. package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.resolver.json +0 -20
  351. package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.tokens.json +0 -1262
  352. package/data/harnesses/code/skills/design/data/design-tokens/composio/design.resolver.json +0 -20
  353. package/data/harnesses/code/skills/design/data/design-tokens/composio/design.tokens.json +0 -1271
  354. package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.resolver.json +0 -20
  355. package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.tokens.json +0 -1276
  356. package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.resolver.json +0 -20
  357. package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.tokens.json +0 -1293
  358. package/data/harnesses/code/skills/design/data/design-tokens/expo/design.resolver.json +0 -20
  359. package/data/harnesses/code/skills/design/data/design-tokens/expo/design.tokens.json +0 -1270
  360. package/data/harnesses/code/skills/design/data/design-tokens/figma/design.resolver.json +0 -20
  361. package/data/harnesses/code/skills/design/data/design-tokens/figma/design.tokens.json +0 -1276
  362. package/data/harnesses/code/skills/design/data/design-tokens/framer/design.resolver.json +0 -20
  363. package/data/harnesses/code/skills/design/data/design-tokens/framer/design.tokens.json +0 -1267
  364. package/data/harnesses/code/skills/design/data/design-tokens/goldens.json +0 -251
  365. package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.resolver.json +0 -20
  366. package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.tokens.json +0 -1273
  367. package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.resolver.json +0 -20
  368. package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.tokens.json +0 -1286
  369. package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.resolver.json +0 -20
  370. package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.tokens.json +0 -1290
  371. package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.resolver.json +0 -20
  372. package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.tokens.json +0 -1270
  373. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.resolver.json +0 -23
  374. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.dark.json +0 -599
  375. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.json +0 -1272
  376. package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.resolver.json +0 -20
  377. package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.tokens.json +0 -1267
  378. package/data/harnesses/code/skills/design/data/design-tokens/meta/design.resolver.json +0 -20
  379. package/data/harnesses/code/skills/design/data/design-tokens/meta/design.tokens.json +0 -1289
  380. package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.resolver.json +0 -20
  381. package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.tokens.json +0 -1258
  382. package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.resolver.json +0 -20
  383. package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.tokens.json +0 -1284
  384. package/data/harnesses/code/skills/design/data/design-tokens/miro/design.resolver.json +0 -20
  385. package/data/harnesses/code/skills/design/data/design-tokens/miro/design.tokens.json +0 -1291
  386. package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.resolver.json +0 -20
  387. package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.tokens.json +0 -1263
  388. package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.resolver.json +0 -20
  389. package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.tokens.json +0 -1270
  390. package/data/harnesses/code/skills/design/data/design-tokens/notion/design.resolver.json +0 -20
  391. package/data/harnesses/code/skills/design/data/design-tokens/notion/design.tokens.json +0 -1261
  392. package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.resolver.json +0 -20
  393. package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.tokens.json +0 -1209
  394. package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.resolver.json +0 -20
  395. package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.tokens.json +0 -1265
  396. package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.resolver.json +0 -20
  397. package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.tokens.json +0 -1253
  398. package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.resolver.json +0 -20
  399. package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.tokens.json +0 -1268
  400. package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.resolver.json +0 -20
  401. package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.tokens.json +0 -1261
  402. package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.resolver.json +0 -20
  403. package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.tokens.json +0 -1263
  404. package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.resolver.json +0 -20
  405. package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.tokens.json +0 -1266
  406. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.resolver.json +0 -23
  407. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.dark.json +0 -623
  408. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.json +0 -1276
  409. package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.resolver.json +0 -20
  410. package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.tokens.json +0 -1264
  411. package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.resolver.json +0 -20
  412. package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.tokens.json +0 -1268
  413. package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.resolver.json +0 -20
  414. package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.tokens.json +0 -1270
  415. package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.resolver.json +0 -20
  416. package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.tokens.json +0 -1288
  417. package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.resolver.json +0 -20
  418. package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.tokens.json +0 -1272
  419. package/data/harnesses/code/skills/design/data/design-tokens/slack/design.resolver.json +0 -20
  420. package/data/harnesses/code/skills/design/data/design-tokens/slack/design.tokens.json +0 -1265
  421. package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.resolver.json +0 -20
  422. package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.tokens.json +0 -1287
  423. package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.resolver.json +0 -20
  424. package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.tokens.json +0 -1286
  425. package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.resolver.json +0 -20
  426. package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.tokens.json +0 -1285
  427. package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.resolver.json +0 -20
  428. package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.tokens.json +0 -1287
  429. package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.resolver.json +0 -20
  430. package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.tokens.json +0 -1278
  431. package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.resolver.json +0 -20
  432. package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.tokens.json +0 -1269
  433. package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.resolver.json +0 -20
  434. package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.tokens.json +0 -1285
  435. package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.resolver.json +0 -20
  436. package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.tokens.json +0 -1303
  437. package/data/harnesses/code/skills/design/data/design-tokens/uber/design.resolver.json +0 -20
  438. package/data/harnesses/code/skills/design/data/design-tokens/uber/design.tokens.json +0 -1274
  439. package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.resolver.json +0 -20
  440. package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.tokens.json +0 -1296
  441. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.resolver.json +0 -23
  442. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.dark.json +0 -612
  443. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.json +0 -1282
  444. package/data/harnesses/code/skills/design/data/design-tokens/warp/design.resolver.json +0 -20
  445. package/data/harnesses/code/skills/design/data/design-tokens/warp/design.tokens.json +0 -1287
  446. package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.resolver.json +0 -20
  447. package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.tokens.json +0 -1268
  448. package/data/harnesses/code/skills/design/data/design-tokens/wired/design.resolver.json +0 -20
  449. package/data/harnesses/code/skills/design/data/design-tokens/wired/design.tokens.json +0 -1276
  450. package/data/harnesses/code/skills/design/data/design-tokens/wise/design.resolver.json +0 -20
  451. package/data/harnesses/code/skills/design/data/design-tokens/wise/design.tokens.json +0 -1273
  452. package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.resolver.json +0 -20
  453. package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.tokens.json +0 -1296
  454. package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.resolver.json +0 -20
  455. package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.tokens.json +0 -1286
  456. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/command-center.tsx +0 -249
  457. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/create-edit.tsx +0 -249
  458. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/dashboard.tsx +0 -225
  459. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/entity-detail.tsx +0 -249
  460. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/list-detail.tsx +0 -224
  461. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/log-stream.tsx +0 -249
  462. package/data/harnesses/code/skills/design/data/operator-pack/fixtures.md +0 -88
  463. package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +0 -132
  464. package/data/harnesses/code/skills/design/data/operator-pack/trust-rubric.md +0 -76
  465. package/data/harnesses/code/skills/design/references/create.md +0 -173
  466. package/data/harnesses/code/skills/design/references/diagnosis.md +0 -108
  467. package/data/harnesses/code/skills/design/references/hard-rules.md +0 -177
  468. package/data/harnesses/code/skills/design/references/improve.md +0 -116
  469. package/data/harnesses/code/skills/design/references/interaction.md +0 -77
  470. package/data/harnesses/code/skills/design/references/introspect.md +0 -100
  471. package/data/harnesses/code/skills/design/references/lifecycle.md +0 -73
  472. package/data/harnesses/code/skills/design/references/personality.md +0 -575
  473. package/data/harnesses/code/skills/design/references/structure.md +0 -159
  474. package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +0 -1312
  475. package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +0 -1498
  476. package/data/harnesses/code/skills/design/scripts/generate-fixtures.mjs +0 -551
  477. package/data/harnesses/code/skills/design/scripts/lib/checks.mjs +0 -1092
  478. package/data/harnesses/code/skills/design/scripts/lib/golden.mjs +0 -26
  479. package/data/harnesses/code/skills/design/scripts/lib/vocabulary.mjs +0 -65
  480. package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +0 -538
  481. package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +0 -312
  482. package/data/harnesses/code/skills/design/scripts/render-rung.mjs +0 -890
  483. package/data/harnesses/code/skills/design/scripts/scaffold.mjs +0 -769
  484. package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +0 -675
  485. package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +0 -164
  486. package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +0 -439
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@nurix/etna",
3
- "version": "0.19.11",
3
+ "version": "0.19.12",
4
4
  "description": "Bootstrap a project with a Nurix harness — copies the harness's CLAUDE.md, skills, agents, rules, and hooks directly into the project from a bundled payload (no marketplace fetch, no network).",
5
5
  "type": "module",
6
6
  "bin": {
@@ -1,137 +0,0 @@
1
- id,dimension,statement,numbers,grade,fire_points,detector,scope_note,provenance,fixture_pair
2
- typ-01,P1,"Text meets contrast minimums: body against its background, large text at the relaxed floor.","body >=4.5:1; large >=3:1",machine,render,render,"Effective contrast is pixel-measured on the rendered surface (render rung, D32).",WCAG 1.4.3;uxui;gnu;ben;uupm,na
3
- typ-02,P1,"Body text sits at 14px or above on operator surfaces; nothing renders below 11px anywhere.","body >=14px; hard ban <11px; uupm calls <12px a failure",machine,edit,source,"The <11px absolute ban is the universal source check; body-vs-label 14px scope is best-effort.",new;stitch;uupm,yes
4
- typ-03,P1,"Form inputs are at least 16px on touch and mobile surfaces to defeat iOS zoom.",">=16px",machine,edit,source,"Touch/mobile surfaces only; desktop operator inputs are exempt.",ben;uupm,yes
5
- typ-04,P1,"Line-height runs inverse to size: looser for body prose, tighter for headings.","body 1.4-1.6; headings 1.1-1.3",judged,sweep,none,"Prose text only (universality flag); dense table leading legitimately runs tighter and is exempt.",imp;new;gnu;uupm;volt/sentry,na
6
- typ-05,P1,"Prose measure stays inside the readable band; data tables are exempt.","45-75ch",machine,edit,source,"Tables exempt.",imp;stitch;taste;gnu,yes
7
- typ-06,P1,"At most three font families per app, each with a distinct job (display / body / numeric-mono); a fourth family is banned. The type scale holds the declared ramp's steps.","<=3 families; ramp steps <=7",machine,sweep,source,"<=3 families is the hard machine bound (three families require a declared numeric-mono job among them); scale conformance gates on the declared ramp (<=7 steps).",imp;new;ben;taste,yes
8
- typ-07,P1,"Tabular lining numerals on every numeric column, KPI, timer, and ID.",,machine,edit,source,"The survey's single most convergent operator-table rule; font-variant-numeric on numeric contexts.",floor;new;ben;volt/stripe;volt/binance;uupm,yes
9
- typ-08,P1,"All-caps micro-labels carry positive tracking; tracking never falls below the negative floor.",">=0.02em; floor >=-0.04em; caps band 0.05-0.12em",machine,edit,source,,imp;ben;taste,yes
10
- typ-09,P1,"Type sizes come from a fixed rem scale, never viewport-fluid; scale steps hold the ratio band.","step ratio 1.125-1.2",machine,edit,source,"Operator surfaces; ban vw/vh/clamp on font-size. The fixed scale is the declared ramp's emitted utilities (text-h1 through text-display), not merely a scale.",imp,yes
11
- typ-10,P1,"Adjacent type-scale steps stay at least a quarter apart.",">=25%",machine,sweep,source,"Given a declared scale.",gnu,yes
12
- typ-11,P1,"No UI font weight below 400.",">=400",machine,edit,source,,gnu,yes
13
- typ-12,P1,"Never size type in em; px or rem only.",,machine,edit,source,"em compounds unpredictably.",gnu,yes
14
- typ-13,P1,"Dense-app type ladder as an advisory reference; the brand's declared scale wins.","H1 30-36/700; H2 24/600; H3 20/600; H4 16/600; body 14-16/400; small 12-13/400",judged,sweep,none,"Advisory ladder, not a gate; the declared scale overrides.",gnu,na
15
- typ-14,P1,"Typographic characters: curly quotes and apostrophes, en-dash for ranges, real ellipsis and multiply and copyright glyphs, one space after punctuation, never underline non-links, bold XOR italic.",,machine,edit,source,"Lintable copy rules.",ben,yes
16
- typ-15,P1,"Zero em-dashes in UI copy.",,machine,edit,source,"House rule, binary.",taste,yes
17
- typ-16,P1,"Serif faces are banned in dashboards and software UIs.",,machine,edit,source,"Scoped to operator surfaces.",stitch,yes
18
- typ-17,P1,"AI-default fonts are house-taste flags: Inter-as-reflex, Roboto or Arial or system-as-primary, Space Grotesk.",,judged,sweep,none,"House taste; a brand may legitimately choose Inter.",taste;stitch;ben,na
19
- typ-18,P1,"Ration eyebrow and micro-label uppercase-tracking instances against section count.","<= ceil(sectionCount/3)",machine,sweep,source,"Mechanical count; marketing-scoped, rarely fires on operator surfaces.",taste,yes
20
- typ-19,P1,"Code and mono type never scales down: fixed at 16px, long lines scroll horizontally rather than wrap.","16px fixed",machine,edit,source,,volt/sentry,yes
21
- typ-20,P1,"The display ramp step appears only on surfaces stamped brand-forward; at most one display-step element per surface.","<=1 display element/surface",machine,gate+sweep,source,"Deterministic against the budget stamp: a display-step element on a non-brand-forward-stamped file is the violation; on a brand-forward surface the count caps at one.",v3;budget,yes
22
- col-01,P2,"Non-text UI components clear the component-contrast floor: input borders, icons, focus rings.",">=3:1",machine,render,render,"Pixel-measured at the render rung.",WCAG 1.4.11,na
23
- col-02,P2,"One accent, reserved for primary action, selection, and state; the accent stays below the saturation ceiling.","saturation <80%",machine,edit,source,"Saturation <80% is the machine check; the one-accent count is warning-tier judged (status palettes are additional, not accent violations).",floor;stitch;taste;volt/binance;volt/sentry,yes
24
- col-03,P2,"Color is never the only signal: status always pairs with an icon or text.",,machine,render,render,"Pairing is confirmed on the rendered element (use-of-color, WCAG 1.4.1).",WCAG 1.4.1;uxui;uupm,na
25
- col-04,P2,"Status colors flow only through semantic tokens: success, warning, destructive.",,machine,edit,source,,floor;D6,yes
26
- col-05,P2,"Ban literal palette classes, hex/rgb/oklch literals, and dark: prefixes in JSX.",,machine,edit,source,"The survey's most proven machine rule (stitch validate.js).",floor;stitch;uupm,yes
27
- col-06,P2,"No pure black text or canvas and no pure white surfaces; start near the near-black greys.","#000000; #111827; #1F2937; #ffffff",machine,edit,source,"Fires only when no brand token declares pure black; explicit brand tokens override (universality flag).",gnu;taste;stitch,yes
28
- col-07,P2,"No opacity or rgba-fabricated shades: every shade is an explicit hex or token.",,machine,edit,source,,gnu,yes
29
- col-08,P2,"Shade counts stay within bounds: the grey family and each accent family hold a bounded ramp.","greys 8-10; each accent family 5-10",machine,sweep,source,"Token-set count.",gnu,yes
30
- col-09,P2,"Disabled-state opacity sits in the muted band.","0.38-0.5; ben 40-50%",machine,edit,source,,uupm;ben,yes
31
- col-10,P2,"Modal scrim sits in the mid black band.","40-60% black",machine,edit,source,,uupm,yes
32
- col-11,P2,"Hover darkens the base shade by a small delta.","10-15%",judged,sweep,none,"Warning-tier: token ramps quantize the delta, nearest ramp step wins.",ben,na
33
- col-12,P2,"AI-slop palette ban: purple and blue neon glows and gradients, purple-gradient-on-white, reflex SaaS blue.","#3B82F6",judged,sweep,none,"Warning-tier: hue-range is detectable but a brand may legitimately be purple; the reflex #3B82F6 literal is a source-catchable sub-signal.",stitch;uupm;ben;taste,na
34
- col-13,P2,"Semantic price and status colors are text-only, never fills, and never repurposed for generic success or error.",,machine,edit,source,"Per token set.",volt/binance,yes
35
- col-14,P2,"Data-viz elements clear contrast: lines and bars against the background, data labels against theirs.","lines/bars >=3:1; labels >=4.5:1",machine,render,render,"Pixel-measured at the render rung.",uupm,na
36
- col-15,P2,"One grey family per app: no warm and cool grey mixing.",,judged,sweep,none,"Warning-tier: a deliberate warm-surface/cool-chrome split is a brand decision, not drift.",taste;gnu,na
37
- col-16,P2,"A wash token is consumed only on brand-forward-stamped surfaces; wash stops obey the slop ban.",,machine,gate+sweep,source,"Wash consumption (var(--wash-*)) on a non-brand-forward-stamped file is the deterministic violation; the stop vocabulary itself (col-12 slop ban) is admitted at the artifact gate.",v3;budget,yes
38
- spc-01,P3,"Every spacing value lands on the declared 4/8-based scale.","standard 4/8/12/16/24/32/48/64/96px; dense 2/4/8/12/16/24/32px; monotony ceiling >=10 identical",machine,edit,source,"On-scale conformance is the machine core; the monotony sub-check (>=10 identical) does not apply to operator surfaces, where uniform row/cell rhythm is deliberate (universality flag).",gnu;ben;taste;uupm;imp;new,yes
39
- spc-02,P3,"Adjacent spacing values stay at least a quarter apart.",">=25%",machine,sweep,source,"On the declared spacing scale.",gnu,yes
40
- spc-03,P3,"Click and tap targets clear the minimum target size (WCAG 2.2 SC 2.5.8); touch-primary surfaces go larger.",">=24x24px; >=44px touch; dense-row 28px; >=8px spacing exception",machine,render,render,"Assembled as one SC 2.5.8 (spatial + interaction restatement); dense data-row controls compact to 28px; undersized allowed only via the >=8px target-spacing exception (int-11). Actual geometry measured at render.",WCAG 2.5.8;HIG;volt/binance;wcag22;deep-research,na
41
- spc-04,P3,"Numeric table columns right-align, text left-aligns; ban center-aligned data columns.",,machine,edit,source,,new;ben,yes
42
- spc-05,P3,"Group spacing exceeds within-group spacing so proximity encodes structure.","within 4-16px; between 24-64px",judged,sweep,none,"Judgment on what reads as a group.",imp;gnu,na
43
- spc-06,P3,"Corners land on a fixed radius scale, one scale per page.","0/2/4/6/8/12/16/24/9999",machine,edit,source,"Per token set; 0 = flat, 9999 = pill; project token artifact may narrow it.",volt/binance;volt/theverge;taste,yes
44
- spc-07,P3,"Table rows run tight: vertical cell padding plus hairline dividers, buttons compacted inside dense rows, mono numbers on every figure.","12px vertical padding; 28px button height",machine,edit,source,"Per token set; operator gold.",volt/binance,yes
45
- spc-08,P3,"Full-viewport height uses min-h dvh, never h-screen or 100vh.","min-h-[100dvh]",machine,edit,source,,stitch;taste;uupm,yes
46
- spc-09,P3,"Ban calc-percentage layout arithmetic; CSS Grid instead.","calc(33% - 1rem)",machine,edit,source,,stitch;taste,yes
47
- spc-10,P3,"No horizontal scroll at any viewport; any overflow means the design is broken.","sweep 375/768/1024/1440",machine,render,render,"Real overflow measured at each breakpoint (render rung).",stitch;uupm;taste,na
48
- spc-11,P3,"Container max-width around the wide ceiling.","~1400px; max-w-7xl",judged,sweep,none,"Operator surfaces are often legitimately full-bleed.",stitch;taste,na
49
- spc-12,P3,"Section rhythm runs tighter on dense product pages than marketing.","80px dense; 96px marketing",judged,sweep,none,"Advisory.",volt/binance;volt/sentry,na
50
- spc-13,P3,"Cockpit rule above the density threshold: no card boxes, hairline dividers, tight padding, mono numbers.","density >7",judged,sweep,none,"Warning-tier, dial-conditional: fires only at the declared dense tier.",taste,na
51
- spc-14,P3,"Content-overload ceilings on action areas, elements, visible required fields, and nav items.",">7 action areas; 15+ elements; 12+ required fields; nav 5-9",judged,sweep,none,"Warning-tier: dense operator surfaces legitimately exceed the element counts.",uxui,na
52
- spc-15,P3,"Grid and bento integrity: N items fill exactly N cells, no orphan corners, spans interlock.",,machine,render,render,"Mechanical fill; actual cell occupancy confirmed at render (dynamic lists are not statically countable).",taste,na
53
- spc-16,P3,"In fixed-width table and grid cells, rendered text fits the cell: no overlap or clip without a truncate or scroll affordance.",,machine,render,render,"Actual overflow measured on the rendered DOM at the render rung; fixed-width cells only.",v3;render,na
54
- dep-01,P4,"z-index values come only from a declared scale; ban arbitrary values.","scale 0/10/20/40/100/1000; ban 999; ban 9999",machine,edit,source,,new;uupm;stitch,yes
55
- dep-02,P5,"One h1 per view; heading levels never skip.","one h1",machine,sweep,source,"Whole-app cross-file check.",new;uupm,yes
56
- dep-03,P5,"Dashboard holds a small set of primary metrics above the fold.","<=~4",judged,sweep,none,"Non-deterministic threshold; primary metric is not machine-detectable and command centers legitimately exceed (universality flag).",imp,na
57
- dep-04,P4,"Border and shadow never do the same separation job on one element.",,machine,edit,source,"Flags an element carrying both a border and an elevation shadow; redundancy judgment noted.",imp;gnu,yes
58
- int-01,B1,"Every interactive element ships a visible focus-visible ring: contrast, thickness, and offset.",">=3:1; >=2px; uupm 2-4px",machine,edit+render,source,"Ring presence is the file-local source check; ring contrast is verified at the render rung.",imp;WCAG;gnu;uupm,yes
59
- int-02,B1,"Ban outline:none without a replacement focus style.",,machine,edit,source,,imp,yes
60
- int-03,B1,"No pointer-only affordances: anything hover-revealed has a keyboard or focus path.",,machine,edit,source,"Partial: flags hover-only reveals lacking a focus path.",floor,yes
61
- int-04,B1,"Modals use native dialog and inert focus containment; ban nested modals; side panel before modal.",,machine,edit,source,"Partial.",floor;imp,yes
62
- int-05,B1,"Undo over confirm for reversible actions; confirmation only for destructive irreversible ones.",,judged,sweep,none,"An irreversible action lacking both confirm and undo is auto-critical.",imp;uxui;uupm,na
63
- int-06,B1,"Optimistic updates only for low-stakes actions, always with rollback.",,judged,sweep,none,,imp,na
64
- int-07,B1,"Validate on blur, never per keystroke.",,judged,sweep,none,"Scoped or judged: strength meters and character counters are legitimate per-keystroke feedback (universality flag).",imp;gnu;stitch;taste;uupm,na
65
- int-08,B1,"Labels stay visible above the input; errors render inline below the field; hard ban on placeholder-as-label.","gap 4-8px",machine,edit,source,"Form fields only; a bare search input with a placeholder is the recognized exception (universality flag).",new;gnu;stitch;taste;uupm,yes
66
- int-09,B4,"Sortable headers carry aria-sort; tables beyond one viewport get a sticky header or first column; a bounded default column set with a picker; bounded pagination, never infinite scroll on work queues.","5-7 visible columns; 1-25 of 150",machine,edit,source,"Most of the rule is source-checkable presence and count.",uxui;new,yes
67
- int-10,B1,"An aria-live region is present wherever async status updates render.",,machine,edit,source,"Presence.",new,yes
68
- int-11,B1,"Target-to-target spacing clears the minimum gap (the SC 2.5.8 spacing-exception path).",">=8px",machine,edit,source,"Declared gap on adjacent interactive targets.",uupm,yes
69
- int-12,B1,"cursor:pointer on every clickable element on web.",,machine,edit,source,,uupm,yes
70
- int-13,P5,"One primary CTA per screen or region; distinct button tiers; duplicate-intent CTAs fail.",,judged,sweep,none,"Warning-tier: multi-pane surfaces legitimately carry one primary per pane.",gnu;taste;uupm,na
71
- int-14,B1,"All five button states are present: default, hover, active, focus, disabled.","5 states",machine,edit,source,"Presence of focus/active/disabled styling.",ben,yes
72
- int-15,S4,"Virtualize lists beyond the item threshold.",">=50 items",judged,sweep,none,"Warning-tier: bounded and paginated lists are exempt; static list length is not reliably known.",uupm,na
73
- int-16,B2,"Tactile press feedback: a small active translate or scale, responding within the reaction window.","-1px translateY; scale 0.98; <100-150ms",judged,sweep,none,"Warning-tier: suppressed under reduced-motion.",stitch;taste;uupm,na
74
- int-17,S1,"Every interactive element and image carries a discernible accessible name (axe button-name, select-name, image-alt Critical; link-name Serious).",,machine,render,render,"Deterministic W3C accname on the rendered DOM; gate on the violations bucket only.",axe;deep-research,na
75
- int-18,S1,"ARIA usage is spec-valid: allowed-attr, required-attr, required-children, valid-attr-value.",,machine,render,render,"duplicate-id-aria excluded (deprecating, WCAG 2.2 dropped SC 4.1.1); gate on violations only.",axe;deep-research,na
76
- mot-01,B2,"UI transitions hold the default duration band and never exceed the hard ceiling.","default 150-250ms; micro 100-150; state 200-300; larger 300-500; ceiling 500ms",machine,edit,source,"Declared-value ceiling.",imp;ben;uupm,yes
77
- mot-02,B2,"Per-interaction reference durations as a catalog, not a ban.","button 100; hover 150; tooltip 200; tab 250; modal-open 300; modal-close 250; page 400ms",judged,sweep,none,"Reference values, not bans.",ben,na
78
- mot-03,B2,"Every animation is gated on prefers-reduced-motion.","0.01ms reset",machine,edit,source,,WCAG 2.3.3;ben;taste;uupm,yes
79
- mot-04,B2,"Ban spring and bounce easing on operator surfaces and ban linear everywhere; easing strings come from the token set; no orchestrated page-load sequences.","ease-out cubic-bezier(0,0,0.2,1)",machine,edit,source,,floor;imp;ben;stitch;taste,yes
80
- mot-05,B2,"Animate only transform and opacity, never top, left, width, height, or margin.",,machine,edit,source,"The survey's most convergent motion rule.",ben;stitch;taste;uupm,yes
81
- mot-06,B2,"will-change only rides an in-progress transform or opacity animation, never blanket, never left dangling.",,machine,edit,source,,D26,yes
82
- mot-07,B2,"Loading indicators skeleton the content shape, delay to avoid flash, and follow the wait-time thresholds.","delay 150-300ms; nothing <500ms; spinner/skeleton 500ms-2s; progress bar >2s",machine,edit,source,"Partial.",new;stitch;uupm;ben,yes
83
- mot-08,B2,"Stagger children by the stagger-unit token's per-item delay, capped in count and total sequence length; baseline-stamped surfaces skip arrival cascades.","stagger-unit 0-60ms/item; cap 8 children; total <1s",machine,edit+render,source,"The numeric half is machine: per-item delays check against the stagger-unit token at source, child count and total sequence length confirm on the DOM at the render rung. The orchestration boundary rides the budget stamp — baseline-stamped surfaces skip arrival cascades; brand-forward surfaces may run motion-stagger.",uupm;taste,yes
84
- mot-09,B2,"Ban scroll-event listeners for animation; observers or scrubbing only.","window.addEventListener('scroll')",machine,edit,source,,taste,yes
85
- mot-10,B2,"Ban useState for continuous scroll or pointer values; motion values instead.",,machine,edit,source,"Framework-scoped (React).",taste,yes
86
- mot-11,B2,"Exit runs shorter than enter; press scale stays in the tight band; few animated elements per view.","exit 60-70% of enter; press scale 0.95-1.05; <=1-2 elements",judged,sweep,none,"Warning-tier: coordinated pairs legitimately exceed the element cap.",uupm,na
87
- sta-01,B1,"Every data surface ships loading, empty, error, and partial/degraded states, plus post-action, cancel, disconnection/timeout, and concurrent-edit where they exist.",,machine,gate,source,"Required states, not afterthoughts; presence checked per surface.",dossier;jam;stitch;ben;uupm,yes
88
- sta-02,B1,"Empty states are text-first with at most one action, never a dead-end on actionable surfaces, never a literal no-data message.","<=1 action; copy 1-2 sentences",machine,gate,source,"Shape is machine; at most one action (read-only surfaces offer zero, universality flag); copy quality is judged.",floor;imp;gnu;uxui;stitch,yes
89
- sta-03,B5,"Error copy follows the formula: what happened, why, how to fix; ban dead-ends and silent failures.",,machine,gate,source,"Shape is machine: an error render must carry a recovery affordance (the dead-end/silent-failure detection); the three-part copy quality (diagnose, explain, recover) stays judged.",imp;uxui;jam,yes
90
- sta-04,B1,"Errors render inline next to the offending field, not banner-only; every error is visible.",,judged,sweep,none,"Warning-tier: system-wide failures legitimately banner.",uxui,na
91
- sta-05,B1,"Toasts auto-dismiss in the short band, announce politely, and never steal focus.","3-5s; aria-live polite",machine,edit,source,"Attrs.",uupm,yes
92
- sta-06,B1,"Empty-state taxonomy: first-time, user-cleared, no-results, no-access, and error are distinct states with distinct copy.",,judged,sweep,none,"Judgment on which state applies; presence is machine once the state is declared.",gnu,na
93
- cod-01,S3,"Emitted CSS defines every token the substrate consumes.",,machine,gate,source,"Coverage check over the full schema-v2 token surface (36 color roles, elevation, wash, the ramp utilities) at token emission.",D6,yes
94
- cod-02,S3,"On improve runs, every value stays inside the lever manifest's vocabulary.",,machine,edit,source,"The D10 golden-rule drift check.",D10,yes
95
- cod-03,S3,"Every color, spacing, radius, and duration in a diff resolves to an emitted token.","",machine,edit,source,"Token-lock; the survey's only script-proven enforcement pattern (stitch validate.js + uupm resolver).",stitch;uupm,yes
96
- cod-04,S2,"No elision comments; files compile before done.","",machine,edit,source,"Bans rest-of-code, ellipsis-comment, TODO, and for-brevity markers; files-compile is verified at the compile rung.",taste;stitch,yes
97
- cod-05,B5,"Anti-fabrication: no invented metrics, no fake round numbers, no by-the-numbers stat sections, no placeholder person or company names; fake-precise mock numbers carry a mock marker; unknowable values use a bracket placeholder.","examples 99.98%; 124ms; 99.99%; 50%",machine,edit,source,"Name and section string bans are machine; number authenticity is judged; critical for KPI-dense operator surfaces.",stitch;taste,yes
98
- cod-06,P6,"No emoji anywhere and no emoji-as-icons: inline SVG only, one icon family per app, consistent stroke width, never hand-rolled icon paths.","strokeWidth 1.5 or 2",machine,edit,source,"Lucide or Heroicons or Phosphor.",stitch;uupm;taste,yes
99
- cod-07,S2,"Check dependencies before importing; fonts are self-hosted or use next/font with font-display swap, never a Google Fonts link in prod.",,machine,edit,source,"Dependency check before import is a procedure; the font-link ban and font-display presence are the source checks.",taste,yes
100
- cod-08,P6,"Image placeholders are deterministic seeds, never broken hotlinks; images declare dimensions; below-the-fold images lazy-load.","picsum.photos/seed/{seed}/{w}/{h}; loading=lazy",machine,edit,source,,stitch;taste;uupm,yes
101
- cod-09,S2,"Component line ceilings hold and files outside scope are never modified.","<120 ln table; <80 ln section",machine,edit,source,"Ceilings pinned here (survey numbers were illustrative).",uxui,yes
102
- cod-10,P6,"No div-built fake product screenshots.",,judged,sweep,none,"The number-one LLM-design tell.",taste,na
103
- cod-11,S2,"Every emitted component exports a typed Props interface; no HTML tags in React Native output.",,machine,edit,source,"Proven (stitch validate.js); the HTML-tag ban is framework-scoped.",stitch,yes
104
- cod-12,S4,"Runtime perf budgets: LCP, INP, CLS, and frame time.","LCP <2.5s; INP <200ms; CLS <0.1; 16ms frame",machine,render,render,"Runtime metrics measured at the render rung.",taste;uupm,na
105
- cod-13,B5,"Audit output carries a numeric before to after per finding; no vague language, no feels without a measurable change.",,judged,sweep,none,"The D22 finding-schema contract, enforced by self-integrity over findings rather than the UI check engine.",ben,na
106
- cod-14,B5,"One name per concept, one concept per name, across UI copy, help text, and API names.",,judged,sweep,none,"Legacy-locked internal names may lag a renamed label; divergence must be deliberate, never accidental.",jam,na
107
- cod-15,S3,"Per-theme rendered token drift: under each theme context the resolver declares, rendered background, foreground, and primary equal that context's authored values.","--background; --foreground; --primary",machine,render,render,"Measured on the rendered surface per declared theme context at the render rung; the dark armor's authored values are the ground truth.",v3;emission,na
108
- cod-16,S2,"Every family name in an emitted font stack binds to an installed package's registered family or a system generic.",,machine,gate,source,"Fail-closed at derive-personality --emit (stack vs package.json binding); the source shell checks each named stack family against a registering @fontsource import or @font-face in the emitted CSS, or the system-generic set.",v3;emission,yes
109
- inst-01,P5,"Edge density: Canny edge pixels over total pixels, the cheapest instrument, start here.","Canny edges / pixels; r~0.83 with visual-search times",judged,render,render,"Instrument, never a gate: dense is not bad (lower-complexity-is-better refuted 0-3); a number is evidence inside a judged finding, never a verdict.",rosenholtz 2007;deep-research,na
110
- inst-02,P5,"Feature congestion of the rendered surface.",,judged,render,render,"Instrument, never a gate: dense is not bad; evidence inside a judged finding, never a verdict.",rosenholtz 2007;deep-research,na
111
- inst-03,P5,"Subband entropy of the rendered surface.",,judged,render,render,"Instrument, never a gate: dense is not bad; evidence inside a judged finding, never a verdict.",rosenholtz 2007;deep-research,na
112
- inst-04,P5,"Grid quality of the layout.",,judged,render,render,"Instrument, never a gate: dense is not bad; evidence inside a judged finding, never a verdict.",miniukovich CHI'15;aalto-ui/aim;deep-research,na
113
- inst-05,P5,"White-space ratio of the layout.",,judged,render,render,"Instrument, never a gate: dense is not bad; evidence inside a judged finding, never a verdict.",miniukovich CHI'15;aalto-ui/aim;deep-research,na
114
- inst-06,P5,"Symmetry of the layout.",,judged,render,render,"Instrument, never a gate: dense is not bad; evidence inside a judged finding, never a verdict.",miniukovich CHI'15;aalto-ui/aim;deep-research,na
115
- inst-07,P5,"Figure-ground contrast of the surface.",,judged,render,render,"Instrument, never a gate: dense is not bad; evidence inside a judged finding, never a verdict.",miniukovich CHI'15;aalto-ui/aim;deep-research,na
116
- inst-08,P5,"Contour congestion of the surface.",,judged,render,render,"Instrument, never a gate: dense is not bad; evidence inside a judged finding, never a verdict.",miniukovich CHI'15;aalto-ui/aim;deep-research,na
117
- inst-09,P2,"Colorfulness of the surface.",,judged,render,render,"Instrument, never a gate: dense is not bad; evidence inside a judged finding, never a verdict.",miniukovich CHI'15;aalto-ui/aim;deep-research,na
118
- inst-10,P2,"Distinct-RGB count of the surface.",,judged,render,render,"Instrument, never a gate: dense is not bad; evidence inside a judged finding, never a verdict.",miniukovich CHI'15;aalto-ui/aim;deep-research,na
119
- inst-11,B1,"KLM operator-cost of the core loop: sum the typed operators over a fixed path.","P=1.10s; H=0.40s; M=1.35s; K=0.20-0.28s; klm-fa 89.1% agreement",judged,render,render,"Comparative cost model, not throughput ground truth; a judged diagnosis dimension pairing with the D28 core loop and floor f01 throughput; countable clicks, keystrokes, tab-stops, and homings given a fixed path.",card-moran-newell;al-megren 2018;deep-research,na
120
- trust-01,B1,"AI presence is disclosed on the surface.",,judged,sweep,none,"Absence grades auto-critical (D34).",D34,na
121
- trust-02,B1,"A human override path is visible.",,judged,sweep,none,"Absence grades auto-critical (D34).",D34,na
122
- trust-03,B1,"AI-initiated irreversible actions are consent-gated with a preview.",,judged,sweep,none,"Absence grades auto-critical (D34).",D34,na
123
- trust-04,B1,"AI actions are auditable.",,judged,sweep,none,"Judged trust dimension (D34).",D34,na
124
- proc-01,S3,"Extract levers before any improve run on a foreign UI.",,procedure,gate,procedure,"Recover the lever manifest from code into a design-tokens artifact before writing (D10).",D10,na
125
- proc-02,B5,"Ask the reader question before any introspect run.",,procedure,gate,procedure,"One question, every run; never inferred, never a stored default (D14).",D14,na
126
- proc-03,P5,"Run the object pass before screens.",,procedure,gate,procedure,"Six-archetype catalog, no brief-size threshold; a small brief earns a proportionally small pass, never a skipped one (D28).",D28,na
127
- proc-04,P3,"Declare the density tier per surface archetype before emission.",,procedure,gate,procedure,"Global tier plus per-archetype relative modifiers (D31).",D31,na
128
- proc-05,P7,"Name the taste anchor before look decisions: the selected look artifact, project over library over Nurix default.",,procedure,gate,procedure,"Named-reference discipline (D5).",D5;imp,na
129
- proc-06,S2,"Run the self-critique pass against the brief and the ban list before declaring a create run done.",,procedure,sweep,procedure,"The four-rung verification ladder (D32).",D32,na
130
- proc-07,S3,"Resolve the design system and persist it before any UI code.",,procedure,gate,procedure,"Resolver-before-code; the machine complement of the named-taste-anchor step, occupied by personality.css emission.",uupm,na
131
- proc-08,S3,"Token-lock at emission: after resolution, no value lands outside the emitted token file.",,procedure,gate,procedure,"The procedural counterpart of cod-03 (stitch validate.js pattern).",stitch,na
132
- proc-09,S2,"Run a mechanical pre-flight self-count with a fail condition: count rule instances against thresholds; the output fails if over.",,procedure,sweep,procedure,"No unticked box ships; sharpens the self-critique pass from vibes to counting.",taste,na
133
- proc-10,P3,"Run numeric-anchored self-audit passes, each carrying an exact-value criterion.",,procedure,sweep,procedure,"Audit canvas, corners-on-scale, shadows, link hover (volt Family-B).",volt,na
134
- proc-11,P5,"Follow the fixed audit ordering, then consolidate, dedupe, severity-rank, and report before to after.",,procedure,sweep,procedure,"hierarchy -> typography -> palette -> spacing -> buttons -> clutter -> empty states -> shadows -> contrast -> grouping.",gnu;ben,na
135
- proc-12,B5,"Run the copy self-audit: re-read every visible string and rewrite every flagged one.",,procedure,sweep,procedure,"Kills lorem-slop and fabricated metrics in one pass.",taste,na
136
- proc-13,B3,"Sweep viewports before done; any horizontal scroll means the design is broken.","375/768/1024/1440",procedure,sweep,procedure,"Fix, do not ship.",stitch;uupm;taste,na
137
- proc-14,S2,"Cross-check scope: compare deliverable count against scope count and add anything missing before responding.",,procedure,sweep,procedure,,taste,na
@@ -1,33 +0,0 @@
1
- # Combinations — the consumption contract
2
-
3
- Eight curated pick tables — typography pairings, palettes, movement styles, motion moments, product-router priors, chart choices, icon picks, landing patterns — plus [`accent-presets.md`](accent-presets.md), the accent-scale reference, that ground the skill's picks in vetted combinations instead of free association. Rows carry a tier: **operator-active** rows are consumable; **dormant-marketing** rows are ignored by operator work — no operator run reads them; they await a future marketing pack. Presence on disk is not consumption: every dataset declares its consumer steps below, and the routing path loads the table into context mechanically at each declared step — consulting is not skippable, exactly like the boot prose.
4
-
5
- ## The contract
6
-
7
- | Dataset | create | improve | introspect |
8
- | --- | --- | --- | --- |
9
- | `typography.csv` | intake — only when the look resolves to authoring a fresh artifact (not a library copy / default); tokens — loaded before any typography hint is resolved | — (emission is jailed to the lever manifest) | — |
10
- | `palettes.csv` | intake — fresh-artifact authoring only; tokens — loaded before any color hint is resolved | — | — |
11
- | `styles.csv` | intake — fresh-artifact authoring only (movement vocabulary for the look); preship — the picked row's `checklist` column is walked item by item (the did-the-look-land sweep) | — | — |
12
- | `accent-presets.md` | tokens — loaded at accent hint-resolution: the 12 pre-vetted 7-step OKLCH scales are the floor for a fresh artifact's accent | — | — |
13
- | `motion.csv` | surfaces — loaded at the emission gate of any surface that composes motion, beside `charts.csv` / `icons.csv`; budget-gated: `baseline` rows serve every surface, `brand-forward` rows only surfaces stamped brand-forward | — | — |
14
- | `product-router.csv` | intake — always: the front gate's recognition assist and the digest's density/archetype priors; also the brief-keyed resolution router — the brief's traits (domain, product type, tone words) filter `styles.csv` / `palettes.csv` / `typography.csv` to the 2–3-row shortlist that enters context at the pick moment (Moment 1b) | — | — |
15
- | `charts.csv` | surfaces — loaded at the emission gate of any surface that composes a chart | fix step — when a finding names a chart | diagnosis — when the audited UI renders charts |
16
- | `icons.csv` | surfaces — loaded once at the first surface-composition gate (icon picks happen throughout) | fix step — when a finding names an icon | — |
17
- | `landing.csv` | — dormant; no load point anywhere (activation = a future marketing pack) | — | — |
18
-
19
- The `judge` verb loads the resolved style row's `checklist` as well — the same items the preship sweep walks, scored against the rendered UI as the did-the-look-land referent.
20
-
21
- ## The deviation rule
22
-
23
- A consulted table is a **floor** — going off-table is allowed only against a stated reason recorded into what the run produces:
24
-
25
- - **look values** (a pairing, a palette) — the token's `$description`;
26
- - **surface picks** (a chart type, an icon, a motion moment) — a code comment adjacent to the deviating pick;
27
- - **improve / introspect** — the finding body.
28
-
29
- An unrecorded off-table pick is a violation, the same class as skipping a gate.
30
-
31
- ## Provenance
32
-
33
- Per-dataset provenance lives in [manifest.json](manifest.json); refresh is trigger-based, never calendar-based.
@@ -1,113 +0,0 @@
1
- # data/combinations/accent-presets.md
2
-
3
- **Load when:** accent choice or override (user picks an accent, or override request).
4
-
5
- Pre-vetted accent palettes per neutral temperature. Each entry: accent name + 7-step OKLCH scale + WCAG contrast pass against neutral-50 (light bg) and neutral-950 (dark bg).
6
-
7
- **One accent by default; reach for a second only when the active style genuinely requires it** (a status-coded or multi-accent style row). Status colors (emerald / amber / rose / violet / zinc — see `status-palettes.md`) don't count against this — they're semantic, not decorative accents.
8
-
9
- ---
10
-
11
- ## How to use
12
-
13
- 1. User picks an accent (or overrides the default).
14
- 2. Emit the chosen accent's 7-step scale into `personality.css`:
15
-
16
- ```css
17
- :root,
18
- :root[data-theme="light"] {
19
- --color-accent-50: /* from table below */;
20
- --color-accent-100: /* ... */;
21
- --color-accent-300: /* ... */;
22
- --color-accent-500: /* ... */;
23
- --color-accent-600: /* ... */;
24
- --color-accent-700: /* ... */;
25
- --color-accent-900: /* ... */;
26
- }
27
- ```
28
-
29
- 3. Update `personality.css` header comment to capture which accent and why.
30
-
31
- ---
32
-
33
- ## Accent table
34
-
35
- | Accent | Use case | 50 | 100 | 300 | 500 | 600 | 700 | 900 | Light bg contrast | Dark bg contrast |
36
- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
37
- | **emerald** (default) | Status-rich CRM; "active" emphasis | `oklch(0.97 0.02 165)` | `oklch(0.93 0.06 165)` | `oklch(0.80 0.13 165)` | `oklch(0.69 0.18 165)` | `oklch(0.60 0.18 165)` | `oklch(0.50 0.18 165)` | `oklch(0.30 0.18 165)` | AA / AAA | AAA / AA |
38
- | **indigo** | Generic SaaS; trust-building | `oklch(0.97 0.02 270)` | `oklch(0.93 0.06 270)` | `oklch(0.78 0.13 270)` | `oklch(0.55 0.20 270)` | `oklch(0.47 0.20 270)` | `oklch(0.39 0.20 270)` | `oklch(0.25 0.18 270)` | AAA / AAA | AAA / AAA |
39
- | **violet** | Power tools; technical UIs | `oklch(0.97 0.02 295)` | `oklch(0.93 0.06 295)` | `oklch(0.78 0.13 295)` | `oklch(0.55 0.22 295)` | `oklch(0.48 0.22 295)` | `oklch(0.40 0.22 295)` | `oklch(0.25 0.20 295)` | AA / AAA | AAA / AAA |
40
- | **rose** | Critical workflows; alert-prone domains | `oklch(0.97 0.02 15)` | `oklch(0.93 0.06 15)` | `oklch(0.78 0.13 15)` | `oklch(0.62 0.22 15)` | `oklch(0.55 0.22 15)` | `oklch(0.45 0.22 15)` | `oklch(0.30 0.20 15)` | AA / AAA | AAA / AA |
41
- | **amber** | Warehouses; logistics; energy | `oklch(0.97 0.04 100)` | `oklch(0.94 0.09 95)` | `oklch(0.84 0.14 90)` | `oklch(0.78 0.16 80)` | `oklch(0.70 0.17 75)` | `oklch(0.60 0.17 70)` | `oklch(0.40 0.16 65)` | A / AAA | AAA / A (caution) |
42
- | **teal** | Healthcare; calm clinical UIs | `oklch(0.97 0.02 195)` | `oklch(0.93 0.06 195)` | `oklch(0.78 0.12 195)` | `oklch(0.60 0.13 195)` | `oklch(0.52 0.13 195)` | `oklch(0.43 0.13 195)` | `oklch(0.28 0.12 195)` | AA / AAA | AAA / AAA |
43
- | **sky** | Customer support; conversational | `oklch(0.97 0.02 225)` | `oklch(0.93 0.06 225)` | `oklch(0.80 0.13 225)` | `oklch(0.68 0.15 225)` | `oklch(0.58 0.16 225)` | `oklch(0.48 0.17 225)` | `oklch(0.30 0.16 225)` | AA / AAA | AAA / AAA |
44
- | **blue** | Traditional enterprise | `oklch(0.97 0.02 245)` | `oklch(0.93 0.06 245)` | `oklch(0.78 0.13 245)` | `oklch(0.55 0.20 245)` | `oklch(0.47 0.20 245)` | `oklch(0.39 0.20 245)` | `oklch(0.25 0.18 245)` | AAA / AAA | AAA / AAA |
45
- | **pink** | Brand-driven; younger ops teams | `oklch(0.97 0.02 0)` | `oklch(0.93 0.06 0)` | `oklch(0.80 0.15 0)` | `oklch(0.67 0.22 0)` | `oklch(0.58 0.22 0)` | `oklch(0.48 0.22 0)` | `oklch(0.30 0.20 0)` | AA / AAA | AAA / AAA |
46
- | **orange** | High-energy; field service | `oklch(0.97 0.04 50)` | `oklch(0.93 0.09 50)` | `oklch(0.82 0.15 50)` | `oklch(0.70 0.19 50)` | `oklch(0.62 0.19 50)` | `oklch(0.52 0.19 50)` | `oklch(0.32 0.17 50)` | A / AAA | AAA / A (caution) |
47
- | **zinc (mono)** | Plain / cron archetypes; no accent | `oklch(0.97 0 0)` | `oklch(0.93 0 0)` | `oklch(0.80 0 0)` | `oklch(0.55 0 0)` | `oklch(0.44 0 0)` | `oklch(0.37 0 0)` | `oklch(0.20 0 0)` | n/a (mono) | n/a (mono) |
48
- | **stone (warm mono)** | Plain archetype with warm-zinc | `oklch(0.97 0.005 80)` | `oklch(0.93 0.006 80)` | `oklch(0.80 0.008 80)` | `oklch(0.55 0.012 80)` | `oklch(0.44 0.013 80)` | `oklch(0.37 0.014 80)` | `oklch(0.20 0.016 80)` | n/a (mono) | n/a (mono) |
49
-
50
- Contrast pass legend:
51
-
52
- - **AAA** ≥ 7:1 (text-on-bg comfortable for body text)
53
- - **AA** 4.5–7:1 (large text or body, depending on size)
54
- - **A** 3:1–4.5:1 (UI elements only, not body text)
55
- - **caution** — pass for large text only; check before using as body text
56
-
57
- `amber` and `orange` on dark backgrounds need careful handling — pair with text-foreground or a darker swatch.
58
-
59
- ---
60
-
61
- ## Picking by neutral temperature
62
-
63
- | Neutral temperature (archetype) | Avoid | Good fits |
64
- | --- | --- | --- |
65
- | **Cool slate** (linear / cron) | amber, orange (clash) | indigo, blue, sky, violet, teal |
66
- | **True gray** (stripe / pylon / default-soft) | (anything OK; gray is neutral) | emerald, indigo, violet, sky, pink |
67
- | **Warm zinc** (plain) | sky, blue (clash) | emerald, teal, amber, orange, stone, rose |
68
-
69
- ---
70
-
71
- ## Picking by use case
72
-
73
- - **Default operator UI** → emerald (the default — works with `stripe`, plays nicely with status colors)
74
- - **CRM / sales tools** → indigo (trust-building) or sky (conversational)
75
- - **Healthcare / clinical** → teal (calm) or blue (traditional)
76
- - **Logistics / warehouses** → amber (high-visibility) or orange (high-energy)
77
- - **Engineering / DevOps** → violet or blue
78
- - **Security / monitoring** → indigo (calm authority)
79
- - **Plain or cron archetype** → zinc or stone (mono, no accent)
80
-
81
- ---
82
-
83
- ## Dark theme handling
84
-
85
- For light themes, `--primary` typically resolves to `--color-accent-600`. For dark themes, `--primary` stays at `--color-accent-600` but text-on-accent uses the lighter swatches:
86
-
87
- ```css
88
- [data-theme="dark"] {
89
- --accent: var(--color-neutral-800); /* the surface */
90
- --accent-foreground: var(--color-accent-300); /* text */
91
- }
92
- ```
93
-
94
- Don't lighten `--primary` in dark mode — it gets washed out. Keep `--primary` at the same OKLCH; foreground stays white.
95
-
96
- ---
97
-
98
- ## Inline-comment rationale
99
-
100
- Capture the accent choice in `personality.css`:
101
-
102
- ```css
103
- /* Accent: indigo — chosen for a traditional enterprise CRM where users expect
104
- "trust-building" blue tones. Considered emerald (default) but the project's
105
- existing brand uses indigo. */
106
- :root {
107
- --color-accent-500: oklch(0.55 0.2 270);
108
- --color-accent-600: oklch(0.47 0.2 270);
109
- --color-accent-700: oklch(0.39 0.2 270);
110
- }
111
- ```
112
-
113
- Rationale lives next to the values. No sidecar JSON cache.
@@ -1,33 +0,0 @@
1
- id,data_shape,tier,keywords,best_chart,alternatives,when,when_not,volume_guidance,series_tokens,a11y_notes,fallback,interaction
2
- 1,trend over time,operator-active,"trend, time series, over time, growth, traffic, history, rate",line,"area, sparkline","A continuous time axis where the question is direction or rate of change. Two to five series compare cleanly when each line is labeled at its endpoint.","Fewer than 4 points on the axis (state the number in a stat card) or more than 5 concurrent series, which turns to spaghetti - facet or aggregate instead.","Up to ~300 rendered points per series reads cleanly; past that downsample to display resolution or aggregate to coarser intervals; past ~10k raw points aggregate server-side before charting.","Single series: --chart-1. Comparisons assign --chart-1..--chart-5 in series order; past 5 series aggregate the remainder or facet - never invent a hue beyond --chart-5.","Differentiate concurrent lines by dash pattern and direct end-of-line labels, not hue alone; enable the substrate's accessibilityLayer for keyboard and screen-reader traversal.","Toggleable data table of timestamp/value pairs plus CSV export.","Hover tooltip synced across series; brush to zoom a time window; a preset range picker (1h/24h/7d/30d) beats freeform zoom for operators."
3
- 2,trend at a glance (inline),operator-active,"sparkline, inline trend, table cell, compact, glance, row-level",sparkline,"sparkline area, mini bar","A trend needs to ride inside a table row, stat card, or list item where the shape matters but axes would be noise. Ideal for scanning many entities at once.","When the reader must read values off the chart - a sparkline has no scale. Not for comparing magnitudes across rows unless every sparkline shares one y-domain.","20-50 points per sparkline; resample anything longer. Dozens per screen are fine since each renders as a single path.","One series per sparkline, always --chart-1 (or the row's established status token from --chart-1..--chart-5); never multi-hue inside a sparkline.","Pair every sparkline with the current value and a signed delta as text; the sparkline is decoration, the text is the record.","Current value plus signed delta as plain text; full-size chart on click.","No hover affordances inline; click or expand opens the full line chart with axes."
4
- 3,single KPI snapshot,operator-active,"kpi, big number, stat card, metric, headline, snapshot, count",stat card,"stat card with sparkline, stat card with delta","One number answers the question: current error rate, open tickets, requests per second. The most legible chart is no chart - fewer than 4 historical points always lands here.","When the trend or distribution behind the number is the actual question, or when a wall of stat cards (more than ~6 in a row) hides the one that matters.","One value per card, optionally a 20-50 point sparkline behind it; cap a dashboard header at 4-6 cards.","An embedded sparkline uses --chart-1; the number itself is foreground text, not a chart token.","The value is real text at a large size with unit and comparison period spelled out; deltas carry a +/- sign and a direction word, not color alone.","It already is the fallback: text. Add the comparison value ('vs 4.1% last week') inline.","Click drills into the full chart or filtered table behind the metric; no hover state needed."
5
- 4,KPI vs target,operator-active,"target, threshold, goal, slo, quota, attainment, benchmark",bar with reference line (bullet style),"stat card with target delta, radial progress","A measure has a defined target or limit and the question is distance to it - SLO attainment, quota consumption. A horizontal bar with the target as a reference line stacks well for 3-10 KPIs in a grid.","No real target exists (a decorative gauge invents one), or a single KPI where a stat card with 'x of y' text is simpler.","One measure per bar; grids of 3-10 bullet-style bars compare well; past 10 move to a sortable table with inline bars.","Measure bar: --chart-1; the target marker uses neutral border/foreground tokens, not a second chart hue; a breach state may switch the bar to --chart-5 if that slot is the dashboard's alert hue.","Always print the value and percent-of-target as text beside the bar; the reference marker gets a text label, never position alone.","Table of metric / current / target / attainment percent.","Hover reveals exact values; click filters the dashboard to that KPI's detail view."
6
- 5,part-to-whole snapshot,operator-active,"share, proportion, percentage, composition, breakdown, split",stacked bar (100%),"donut, bar","Composition of one total at one moment - traffic by source, storage by tenant. A single 100% stacked bar reads precisely and labels every segment. A donut is defensible only with 4 or fewer segments, values near quarter marks, and a center KPI worth the space.","Segments differ by less than ~5 points (readers cannot rank them - use a sorted bar of raw values) or more than 6 segments (aggregate the tail into Other).","3-6 segments; collapse everything past the top 5 into an Other segment; more than 6 shares belongs in a sorted bar or table.","Segments take --chart-1..--chart-5 in descending-size order; the Other bucket reuses the last assigned token at reduced emphasis - the surface never exceeds five hues.","Label each segment directly with name and percent; adjacent segments must also differ by a separator border, not hue alone; donuts additionally repeat all values in a legend list.","List of segment / value / percent rows summing to the labeled total.","Hover isolates a segment and shows value plus percent; click cross-filters the rest of the dashboard to that segment."
7
- 6,composition over time,operator-active,"stacked area, share over time, composition trend, mix shift, by component",stacked area,"100% stacked area, small-multiple lines","How a total and its parts move together across time - request volume by service, cost by team. Use the 100% variant when the mix, not the total, is the story.","When individual component trends are the question - middle layers of a stack are unreadable for that; switch to small-multiple lines. Also wrong for series that cross zero.","3-5 layers maximum, largest or steadiest layer at the bottom; more components means grouping into Other or faceting.","Layers map --chart-1..--chart-5 bottom-up in stack order; over 5 components aggregate into the existing tokens rather than adding hues.","Direct-label layers at the right edge where each band is widest; order the legend to match stack order - hue plus adjacency is not enough.","Pivot table of period x component with row totals.","Hover shows the full component breakdown at that timestamp; toggle between absolute and 100% modes; legend click isolates a layer."
8
- 7,category comparison,operator-active,"compare, categories, magnitude, count by type, by service, by queue",bar,"horizontal bar, lollipop-style bar","Discrete categories compared by size with no time axis - errors by service, jobs by queue. Vertical bars suit up to ~8 short labels; go horizontal when labels are long.","A time dimension exists (line) or the point is share of a total (100% stacked bar). Never truncate the value axis - bars encode length from zero.","Up to ~12 vertical or ~20 horizontal bars; beyond that filter to top N with an Other bar, paginate, or drop to a sortable table.","Uniform bars in --chart-1 with one highlighted bar allowed in --chart-2; per-bar rainbow coloring wastes the surface unless bars map to an established category coloring within --chart-1..--chart-5.","Value labels on or beside each bar by default; sorting by value is itself an accessibility feature - it removes the visual estimation step.","The same data as a sorted two-column table with CSV export.","Hover for exact value; toggle sort (value vs alphabetical); click a bar to drill into that category."
9
- 8,ranking,operator-active,"ranking, top n, leaderboard, worst, slowest, sorted, offenders",horizontal bar (sorted),"lollipop-style bar, slope (rank change)","Order is the insight - top 10 noisiest endpoints, slowest queries. Sort descending and keep ranks visible as row numbers.","When every entity matters equally (that is comparison, not ranking) or the list exceeds ~20 - operators want the head of the distribution, not all of it.","Show top 10-20 and fold the remainder into a labeled 'Other (n)' entry or a view-all table link.","All bars --chart-1; the focal entity under investigation may take --chart-2; do not encode rank position as a hue ramp across --chart-1..--chart-5.","Rank number and value as text on every row; announce the sort direction; direct labels beat a shared axis at this density.","Numbered table with rank, name, value, and change-in-rank columns.","Sort toggle (value / delta); search-to-highlight an entity; click drills into the entity's detail."
10
- 9,grouped comparison,operator-active,"grouped bar, side by side, versus, before after, a/b, per category pairs",grouped bar,"slope, small-multiple bars","Two or three series compared within each category - this week vs last week per service. The within-category gap must be the question.","More than 3 series per group turns into a picket fence - facet or use small multiples. If the across-category trend matters more than the within-group gap, use lines or a slope chart.","Up to ~8 categories x 2-3 series; beyond that, small multiples (one panel per series) scale further than wider groups.","Series take --chart-1..--chart-3 consistently across every group; keep the same series-to-token mapping on every panel of the dashboard.","A legend is mandatory and must match within-group ordering; add per-bar value labels when groups are few; two series close in luminance need a texture or border difference.","Category x series pivot table with a difference column.","Hover shows all series for that category together; legend click toggles a series; sort by any series."
11
- 10,distribution (single variable),operator-active,"distribution, histogram, spread, frequency, buckets, shape, skew",histogram (bar),"cumulative curve (line), strip plot (scatter)","The shape of one variable matters - normal, bimodal, or skewed? Pre-bucket the values and render counts as near-touching bars; 15-40 buckets usually reveal the shape.","Under ~30 observations (show the points or a table - shape is noise at that size) or when the comparison is across groups (box plots or overlaid cumulative curves).","Bucket server-side past ~5k raw values; the chart should receive bucket counts, never raw observations.","Single distribution: --chart-1; overlaying a second period or cohort takes --chart-2 at reduced fill opacity; more than 2 overlays means small multiples.","State the summary stats (median, p95, count) as text above the chart; the histogram illustrates, the numbers testify.","Bucket table (range, count, percent) plus the summary-statistics line.","Hover per bucket for range and count; brush to select a range and filter the dashboard to those entities."
12
- 11,distribution across groups,operator-active,"box plot, compare distributions, spread by group, quartiles, variance by cohort",box plot (bar + error-bar composition),"small-multiple histograms, overlaid cumulative curves","Comparing spread and central tendency across 3-10 groups - latency per region, job duration per queue. Boxes summarize median, quartiles, and outliers in one row per group.","Audience unfamiliar with quartile notation (small-multiple histograms are self-evident) or under ~20 observations per group where quartiles are unstable.","3-10 groups per panel; compute the five-number summary server-side - the chart draws summaries, not raw points.","All boxes in --chart-1 unless groups carry an established categorical mapping across the dashboard; a single comparison baseline group may take --chart-2.","Annotate median values as text per box; explain the box encoding once in a caption; outlier dots need a marker shape distinct from data points elsewhere.","Table of group / min / p25 / median / p75 / p95 / max.","Hover a box for the five-number summary; click a group to open its full histogram."
13
- 12,correlation,operator-active,"correlation, scatter, relationship, x vs y, drivers, cluster, outliers",scatter,"bubble scatter, binned heatmap","Two continuous variables and the question is whether they move together - payload size vs latency, retries vs errors. Clusters and outliers are the payoff.","Either variable is categorical (grouped bar) or under ~20 points, where a pattern claim is not supportable.","Up to ~2k points at 0.5-0.7 fill opacity; beyond that bin into a density grid server-side rather than drawing every point.","One population: --chart-1. Cohorts split across --chart-1..--chart-5 with distinct marker shapes doubling the hue; more than 5 cohorts must be re-grouped.","Pair hue with marker shape per cohort; annotate named outliers directly; report the relationship's direction in the caption as text.","Sortable table of the plotted pairs with flagged outliers on top.","Hover identifies the entity behind a point; brush selects a cluster to filter the dashboard; zoom for dense regions."
14
- 13,three-variable magnitude,operator-active,"bubble, size encoding, third variable, impact vs volume, weight",scatter with sized points (bubble),"scatter (drop the third variable), faceted scatter","A scatter relationship where a third magnitude (volume, spend) deserves emphasis - area-scale the points and the big movers surface.","The third variable is the primary question (readers cannot rank areas - use a sorted bar) or point counts past a few hundred where overlap hides the sizes.","Under ~200 bubbles; scale radius by the square root of the value so area, not radius, carries it.","Same rules as scatter: --chart-1 for one population, --chart-1..--chart-5 for cohorts; size is the third encoding, never a sixth hue.","Size differences below ~2x are invisible - print the sized value in the tooltip and label the largest bubbles directly.","Table sorted by the size variable with both axis values as columns.","Hover for all three values; a size legend with 2-3 reference bubbles; click to drill into the entity."
15
- 14,deviation from reference,operator-active,"deviation, above below, delta, variance from plan, plus minus, baseline",diverging bar,"line against a zero baseline, sign-split area","Values carry sign relative to a reference - capacity delta per node, budget variance per team. Bars growing left/right of a shared zero make the split legible instantly.","The reference itself shifts over time (plot both series as lines instead) or nearly all values share one sign - that is just a bar chart.","Up to ~20 entities; sort by signed value so the extremes bracket the chart.","Positive side --chart-2, negative side --chart-5 (or the dashboard's two most luminance-separated slots among --chart-1..--chart-5), applied identically everywhere sign appears.","Sign must survive grayscale: keep the zero axis prominent and add signed value labels; direction words (over/under) in the tooltip.","Table with signed deltas and a direction column.","Hover for value and percent deviation; toggle absolute vs percent; click through to the entity."
16
- 15,additive breakdown to a total,operator-active,"waterfall, bridge, contribution, cost walk, increase decrease, net change",waterfall (stacked bar with transparent base),"diverging bar, table with running total","Explaining how signed components sum to a net change - the cost walk from last month to this month. Build it as a stacked bar whose invisible base positions each floating segment.","Components are not additive, or more than ~10 steps - the running-total thread gets lost; aggregate small contributors.","4-10 steps plus start and end anchors; fold minor contributors into one Other step.","Increases --chart-2, decreases --chart-5, start/end anchor totals --chart-1 - three slots of the surface, fixed across all waterfall panels.","Every step carries a signed label; connect steps with faint leader lines so the sequence survives without color; state the net change in the title.","Ordered table of step / signed change / running total.","Hover shows the step's contribution and the running total at that point; click expands an aggregated step."
17
- 16,cumulative flow of work states,operator-active,"cumulative flow, backlog, wip, queue states, ticket states, pipeline health",stacked area (cumulative flow),"line per state, stacked bar per day","Items moving through states over time - open/in-progress/done tickets, queued/running/completed jobs. Band width is queue depth; a widening band is a growing bottleneck, visible before any threshold trips.","States are not sequential or items skip freely between them - the bands stop meaning anything; chart per-state counts as lines instead.","3-5 states at daily or hourly snapshots; a 30-90 day window keeps band slopes readable.","States take --chart-1..--chart-5 in pipeline order with the terminal state at the bottom; the mapping stays fixed across every board the product shows.","Label bands directly at the right edge; call out the widest band's depth as text; stack order must match legend order.","Per-snapshot table of counts per state, with arrival and completion rates.","Hover shows per-state counts at a date; brush a period to inspect a slowdown."
18
- 17,sequential stage drop-off,operator-active,"funnel, pipeline, conversion, drop-off, stages, onboarding steps",funnel,"ordered bar with conversion labels, waterfall","A strictly ordered pipeline where each stage can only shrink - signup steps, job pipeline stages. The between-stage conversion percentages are the actual content; print them.","Entities can re-enter or skip stages (that is a flow - use a sankey) or only 2 stages exist (a stat card with one conversion rate).","3-7 stages; merge micro-steps until each transition carries a decision-worthy percentage.","Single-hue funnel in --chart-1 with stage depth shown by geometry; reserve --chart-5 (or the designated alert slot) to flag the worst drop-off stage.","Stage name, absolute count, and conversion-from-previous as text at every stage - the shape alone understates late-stage losses.","Ordered table: stage, count, percent of start, percent of previous.","Hover a stage for counts in and out; click to see the cohort that dropped at that stage."
19
- 18,flow between states,operator-active,"sankey, flow, source to target, migration, traffic routing, transitions",sankey,"grouped bar of top transitions, transition-matrix heatmap","Quantities moving between named nodes - traffic from origin to destination, plan upgrades and downgrades. Link thickness carries volume; a handful of dominant links is the story.","Flows loop back on themselves, more than ~15 links matter, or precise link values must be compared - a transition-matrix heatmap or table wins there.","Up to ~12 nodes and ~20 links; aggregate minor links into an Other flow before rendering.","Color links by source node using --chart-1..--chart-5; when sources exceed 5, group them - a link gradient stays within its assigned pair of tokens.","Node labels with totals always visible; link values in tooltips and the fallback table - ribbon widths are not precisely readable by anyone.","Source / target / volume table sorted by volume.","Hover highlights a full path end to end; click a node isolates its inbound and outbound flows."
20
- 19,latency percentiles over time,operator-active,"latency, percentiles, p50 p95 p99, tail, response time, slo latency",multi-line (percentile set),"line + band between percentiles, latency heatmap over time","Service latency where the tail is the story. Plot p50, p95, and p99 on one time axis: the gap between median and tail is the signal - a diverging gap means tail degradation even while the median looks healthy.","Averages stand in for percentiles (an average hides the tail entirely) or a single snapshot is the question (histogram of the distribution instead).","Compute percentiles server-side from histogram buckets; cap at 3 percentile series - p50/p95/p99 is the operator convention; consider a log y-axis when p99 dwarfs p50 by 10x or more.","Fixed mapping across the whole product: p50 --chart-1, p95 --chart-2, p99 --chart-3 - an operator should never have to re-read a latency legend.","Distinct dash patterns per percentile plus end-of-line labels; the caption names which line the SLO binds.","Table of time buckets x p50/p95/p99 with an SLO-threshold column.","Hover shows all three percentiles at once; SLO threshold as a reference line; brush-zoom into an incident window."
21
- 20,long-tail magnitude distribution,operator-active,"log scale, heavy tail, orders of magnitude, skew, duration spread",histogram with log-scale buckets,"cumulative curve (line), top-N bar plus summary stats","Values spanning several orders of magnitude - request durations, payload sizes, queue waits. Log-spaced buckets (1-10ms, 10-100ms, ...) keep the tail visible instead of crushing 99% of the data into one bar.","Values sit within one order of magnitude (linear buckets are more honest) or the audience will misread a log axis without labels at every decade.","10-20 log-spaced buckets, bucketed server-side; label every decade tick explicitly.","Single distribution --chart-1; a second overlay (previous deploy, other region) takes --chart-2 at reduced fill opacity.","Say 'log scale' in the axis label itself, not just the ticks; report p50 and p99 as text so the compression cannot mislead.","Bucket table with range, count, and cumulative-percent columns.","Hover per bucket; toggle linear/log axis; brush a bucket range to list the entities inside it."
22
- 21,count and rate on one timeline,operator-active,"composed, volume and rate, bars and line, throughput and errors, overlay",composed bar + line,"two stacked panels sharing an x-axis, two lines (same unit)","An amount and a rate that explain each other over time - deploys (bars) against error rate (line). Bars carry the count, the line carries the rate, and the shared time axis carries the causality question.","The measures do not share a time grain or have no causal reading together; if both are rates in one unit, two plain lines are clearer. Treat a second y-axis with suspicion - aligned stacked panels avoid implying false correlation.","Same budgets as line and bar individually; prefer aligned panels over dual axes when scales differ by more than ~10x.","Bars --chart-1, line --chart-2; an essential second line takes --chart-3 - three encodings is the ceiling for one panel.","Each axis labeled with its unit and matched to its series in the legend; the line already differs from bars by geometry, keep it that way.","One table with a timestamp column and one column per measure.","Shared hover across both encodings at a timestamp; brush zoom moves both together."
23
- 22,intensity across two dimensions,operator-active,"heatmap, hour by day, matrix, density grid, cadence, when does it happen",heatmap,"small-multiple bars, calendar heatmap","A metric across two categorical or binned axes - errors by hour x weekday, load by node x hour. Cyclical patterns (the 3am cron spike, the Monday surge) pop out at a glance.","Exact values must be read (heatmaps rank, they do not measure - pair with a table) or fewer than ~20 cells, where bars say it better.","Up to ~1-2k visible cells; aggregate beyond that; a year-long calendar heatmap is ~370 cells and fine.","A single-hue ramp built from --chart-1 via lightness/opacity steps - never a hue ramp across --chart-1..--chart-5, which misorders intensity; a diverging scale anchors its ends on --chart-2 and --chart-5 through a neutral midpoint.","Show the numeric value in-cell when the grid is small enough, always in tooltips otherwise; include a labeled color-scale legend with tick values.","The same matrix as a table, or the top-N hottest cells as a ranked list.","Hover for cell value; click a cell to filter the dashboard to that slice; a control for the time-bucket size."
24
- 23,state over time per entity,operator-active,"status timeline, uptime, availability, incident history, up down, per host",status strip (segmented horizontal bar),"heatmap (entity x time), event markers","Discrete states per entity across time - up/degraded/down per service, job success history. One horizontal strip per entity, colored segments per state, stacked into a fleet overview.","Continuous measures (that is a line) or state changes so frequent that segments fall under a pixel - aggregate to percent-uptime per bucket and use a heatmap.","Up to ~30 entity rows per screen with 100-300 time segments each; past that paginate or group entities by team or tier.","States get a fixed mapping from --chart-1..--chart-5 (e.g. healthy --chart-2, degraded --chart-4, down --chart-5) used identically on every strip and legend in the product.","States must differ by more than hue - add a pattern or icon in the legend key; announce current state and last transition as text per row.","Per-entity table: current state, uptime percent, last incident timestamp.","Hover a segment for state, start, and duration; click opens the incident or run detail; time-range picker shared with the page."
25
- 24,error-budget burn,operator-active,"error budget, slo burn, budget remaining, burn rate, reliability target",line vs threshold reference,"area (budget consumed), stat card with burn multiple","Consumption of an SLO error budget across a window - the line is budget remaining (or burn rate), the reference line is the exhaustion bound. The slope tells the operator whether the month survives.","No SLO is defined (define it first - a budget chart without a bound is just a line) or the audience only needs the current number (stat card with the burn multiple).","One series per SLO over a 28-30 day rolling window; multiple SLOs get one panel each, never overlaid.","Budget line --chart-1; the exhaustion threshold is a neutral reference line; the segment past a breach may re-color to --chart-5 where the line crosses it.","Annotate the crossing point ('budget exhausted Jun 24') as text on the chart; show remaining budget and burn multiple as a text pair beside it.","Stat pair (remaining percent, burn multiple) plus a daily consumption table.","Hover for remaining budget at a date; window toggle (7d/28d); click a burn spike to jump to that incident window."
26
- 25,anomaly surveillance,operator-active,"anomaly, outlier detection, spike, expected range, deviation band, triage",line with reference band + highlighted points,"line with threshold reference lines, event-marked line","A live metric watched against an expected envelope - the normal band as a soft area, the actual as a line, flagged anomalies as marked, annotated points. The chart's job is triage: when, how far out, recovered or not.","Anomalies are already classified events (a table of incidents outranks dots on a line) or the expected band is invented rather than computed from history.","Same budgets as a line chart; keep anomaly markers a separate small series so hundreds of raw points never become hundreds of alerts.","Actual line --chart-1; expected band --chart-1 at low fill opacity; anomaly markers --chart-5 (the designated alert slot) with a distinct marker shape.","Every anomaly gets a text annotation or a numbered reference into a side list; marker shape distinguishes anomalies before color does.","Anomaly list (timestamp, metric, deviation magnitude, duration) beside the raw series table.","Hover an anomaly for deviation details; click jumps to logs or traces for that window; pause/resume live updates and honor reduced-motion preferences."
27
- 26,forecast with uncertainty,operator-active,"forecast, projection, confidence interval, capacity planning, expected range",line + confidence area band,"fan of percentile lines, table of projected dates","History plus a projection - disk-full forecasting, traffic growth. Solid line for actuals, dashed continuation for the forecast, a widening band for the interval; the seam between observed and predicted must be unmistakable.","No stated confidence interval (a bare forecast line overstates certainty) or a forecast horizon longer than roughly half the visible history, which reads as fiction.","Keep the forecast to at most ~30% of the x-axis; one forecast per panel - competing forecasts get small multiples.","Actuals --chart-1 solid; forecast --chart-2 dashed; band --chart-2 at low fill opacity - never the same treatment for observed and predicted.","The actual/forecast split is carried by line style and a labeled vertical seam, not hue; name the interval ('80% band') in the legend text.","Table of projected values with lower and upper bounds, plus the headline date ('capacity reached ~Aug 12').","Hover shows point estimate and bounds; toggle the band; drag the horizon control to extend or shorten the projection."
28
- 27,utilization against capacity,operator-active,"capacity, utilization, saturation, headroom, limit, disk, memory, pool",area with capacity reference line,"line with threshold, bullet-style bar (current snapshot)","A consumable resource against a hard limit over time - memory vs allocation, connections vs pool size. The filled area makes consumed-vs-headroom spatial; the reference line is the wall.","The limit is soft or autoscaling moves it constantly - plot the limit as its own step line instead of a fixed reference; snapshots without history belong in bullet-style bars.","Standard line-chart budgets; one resource per panel - a wall of small multiples beats six areas in one frame.","Consumption area --chart-1; the capacity bound is a neutral reference line, not a chart hue; crossing the warning threshold may flip the fill to --chart-4 or --chart-5 per the dashboard's alert convention.","Print current utilization percent and absolute headroom as text; threshold lines get labels ('80% warn'), not just position.","Stat card (current percent, headroom) with a history table.","Hover for value and percent-of-limit; brush to inspect a saturation event; click through to the per-instance breakdown."
29
- 28,two-point change,operator-active,"slope, before after, two periods, rank shift, regression check, deploy delta",slope (two-point line),"grouped bar, diverging bar of deltas","Many entities measured at exactly two moments - latency per endpoint before and after a deploy. One line per entity between two vertical axes; crossings and steep slopes are the story.","More than 2 time points (a full line chart) or more than ~20 entities without highlighting - a muted field with 3-5 highlighted entities is the readable version.","Label up to ~12 entities directly; beyond that render the field muted and highlight only the largest movers.","The muted field uses a neutral low-emphasis stroke; highlighted movers take --chart-1..--chart-3; improvement/regression coloring reuses the deviation pair (--chart-2 / --chart-5).","Direct labels at both endpoints for highlighted entities; the delta as signed text in the tooltip and the fallback.","Table of entity, before, after, signed delta, percent change.","Hover isolates one entity's line; search-to-highlight; sort control on the fallback table."
30
- 29,single proportion progress,operator-active,"progress, percent complete, radial, completion, rollout, migration status",radial progress (radial bar),"linear progress bar, stat card with fraction","One bounded percentage with a natural end state - rollout 68% complete, backfill progress. A radial or linear progress indicator plus the number reads instantly on a stat card.","The value is unbounded or can meaningfully regress (use a line so history shows) or several proportions need comparing (bars compare, rings do not).","One value per indicator; a grid of many progress indicators should become a sorted horizontal bar list.","Filled arc --chart-1 on the neutral track; a stalled or failing state borrows the alert slot --chart-5, never a new hue.","The percentage as large text in the center or beside the bar - the geometry is redundant to it; include the fraction ('682 of 1000 shards').","Text fraction and percent; nothing else needed.","Click drills into the remaining items; no hover needed beyond the exact fraction."
31
- 30,multi-attribute profile,operator-active,"radar, profile, dimensions, scorecard, capability, shape comparison",radar,"grouped bar, small-multiple bars, scored table","1-3 entities compared across 4-6 shared, equally scaled attributes where the overall shape ('strong on reliability, weak on cost') matters more than exact reads.","Attributes on different scales or more than 6 axes (normalize or switch to grouped bars), any need for precise values, or more than 3 overlaid entities.","4-6 axes and 1-3 series; anything larger goes to a grouped bar or a scored table.","Entities take --chart-1..--chart-3 with translucent fills and full-opacity strokes; needing more than 3 means the radar was the wrong call.","Radar is a recognition chart, not a reading chart - the scored-table fallback is mandatory, and axis labels must be full words, not abbreviations.","Entity x attribute table with the same normalized scores.","Hover an axis for exact scores of all series; legend toggle per entity."
32
- 31,discrete events on a timeline,operator-active,"events, deploys, incidents, annotations, markers, releases, audit points",event markers on a time axis,"bar of event counts per bucket, status strip","Point-in-time events that give context to trends - deploy markers over an error-rate line, incident flags on a latency panel. Events render as vertical reference lines or a marker lane under the main chart.","Events are the metric itself at high frequency (aggregate to counts per interval and use bars) or the descriptions matter more than the timing (a log table).","Up to ~30 visible markers per window; beyond that cluster into count badges that expand on zoom.","Markers use --chart-3 (or any slot not taken by the series they annotate); event categories cap at the surface's five slots - vary the marker glyph before the hue.","Each marker needs an accessible label (event type plus timestamp); a marker legend maps glyph to event type; the event list is keyboard-reachable.","Chronological event table alongside the metric table.","Hover a marker for the event summary; click opens the deploy or incident record; toggle event lanes on and off."
33
- 32,geographic distribution,operator-active,"geo, region, country, datacenter, by location, spatial",horizontal bar by region (sorted),"heatmap (region x metric), table with inline bars","A metric broken down by region or datacenter where the values, not the geography, answer the question - a sorted bar of regions is more precise than any map and needs no map dependency.","A true spatial pattern (adjacency, routing paths) is the insight - that needs a real map layer, which sits outside the substrate's chart family; flag it as a bespoke component rather than forcing a chart.","Up to ~20 regions as bars; more than that, group by continent or tier first.","Same as ranked bars: --chart-1 uniform with --chart-2 for the focal region; per-region rainbow coloring communicates nothing.","Region names as full text labels with values printed; sorting by value replaces spatial scanning.","Region / value / share table with CSV export.","Hover for exact values; click a region to filter the dashboard; sort toggle."