@nurix/etna 0.19.42 → 0.19.43

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 (347) hide show
  1. package/bin/etna.js +14 -0
  2. package/data/harness-index.json +5 -1
  3. package/data/harnesses/apollo/.prettierignore +29 -0
  4. package/data/harnesses/apollo/.prettierrc.json +3 -0
  5. package/data/harnesses/apollo/.vscode/settings.json +19 -0
  6. package/data/harnesses/apollo/CLAUDE.md +162 -0
  7. package/data/harnesses/apollo/agents/brainstorm.md +144 -0
  8. package/data/harnesses/apollo/agents/change-review.md +251 -0
  9. package/data/harnesses/apollo/agents/lld-mode.md +56 -0
  10. package/data/harnesses/apollo/agents/maintenance.md +229 -0
  11. package/data/harnesses/apollo/agents/performance-review.md +223 -0
  12. package/data/harnesses/apollo/agents/retro.md +46 -0
  13. package/data/harnesses/apollo/codex/agents/brainstorm.toml +142 -0
  14. package/data/harnesses/apollo/codex/agents/change-review.toml +249 -0
  15. package/data/harnesses/apollo/codex/agents/lld-mode.toml +52 -0
  16. package/data/harnesses/apollo/codex/agents/maintenance.toml +228 -0
  17. package/data/harnesses/apollo/codex/agents/performance-review.toml +222 -0
  18. package/data/harnesses/apollo/codex/agents/retro.toml +45 -0
  19. package/data/harnesses/apollo/docs/README.md +28 -0
  20. package/data/harnesses/apollo/docs/history/CHANGELOG.md +26 -0
  21. package/data/harnesses/apollo/docs/history/backlog.md +19 -0
  22. package/data/harnesses/apollo/docs/memory/main.md +15 -0
  23. package/data/harnesses/apollo/docs/structure.md +54 -0
  24. package/data/harnesses/apollo/harness.json +18 -0
  25. package/data/harnesses/apollo/hooks/generate-ownership-index.mjs +148 -0
  26. package/data/harnesses/apollo/hooks/hooks.json +16 -0
  27. package/data/harnesses/apollo/rules/changelog.md +19 -0
  28. package/data/harnesses/apollo/rules/database.md +123 -0
  29. package/data/harnesses/apollo/rules/express.md +33 -0
  30. package/data/harnesses/apollo/rules/frontend.md +32 -0
  31. package/data/harnesses/apollo/rules/general.md +62 -0
  32. package/data/harnesses/apollo/rules/nomenclature.md +34 -0
  33. package/data/harnesses/apollo/rules/pnpm.md +57 -0
  34. package/data/harnesses/apollo/rules/testing.md +23 -0
  35. package/data/harnesses/apollo/rules/verification.md +67 -0
  36. package/data/harnesses/apollo/skills/boundary/SKILL.md +69 -0
  37. package/data/harnesses/apollo/skills/boundary/references/index.md +16 -0
  38. package/data/harnesses/apollo/skills/boundary/references/mechanisms.md +99 -0
  39. package/data/harnesses/apollo/skills/boundary/references/packs/async-messaging.md +81 -0
  40. package/data/harnesses/apollo/skills/boundary/references/packs/auth.md +93 -0
  41. package/data/harnesses/apollo/skills/boundary/references/packs/build-config-runtime.md +93 -0
  42. package/data/harnesses/apollo/skills/boundary/references/packs/cloudflare.md +93 -0
  43. package/data/harnesses/apollo/skills/boundary/references/packs/frontend.md +93 -0
  44. package/data/harnesses/apollo/skills/boundary/references/packs/generic-tail.md +55 -0
  45. package/data/harnesses/apollo/skills/boundary/references/packs/persistence.md +93 -0
  46. package/data/harnesses/apollo/skills/boundary/references/packs/wire-api.md +87 -0
  47. package/data/harnesses/apollo/skills/brainstorm/README.md +56 -0
  48. package/data/harnesses/apollo/skills/brainstorm/SKILL.md +173 -0
  49. package/data/harnesses/apollo/skills/brainstorm/references/doctrine.md +98 -0
  50. package/data/harnesses/apollo/skills/brainstorm/references/harvest.md +86 -0
  51. package/data/harnesses/apollo/skills/brainstorm/references/session-schema.md +186 -0
  52. package/data/harnesses/apollo/skills/brainstorm/scripts/detector.mjs +460 -0
  53. package/data/harnesses/apollo/skills/design/SKILL.md +100 -0
  54. package/data/harnesses/apollo/skills/design/components/charts.md +76 -0
  55. package/data/harnesses/apollo/skills/design/components/collections.md +132 -0
  56. package/data/harnesses/apollo/skills/design/components/feedback.md +47 -0
  57. package/data/harnesses/apollo/skills/design/components/hooks.md +35 -0
  58. package/data/harnesses/apollo/skills/design/components/index.md +143 -0
  59. package/data/harnesses/apollo/skills/design/components/inputs.md +327 -0
  60. package/data/harnesses/apollo/skills/design/components/layout.md +52 -0
  61. package/data/harnesses/apollo/skills/design/components/media.md +66 -0
  62. package/data/harnesses/apollo/skills/design/components/motion.md +82 -0
  63. package/data/harnesses/apollo/skills/design/components/navigation.md +29 -0
  64. package/data/harnesses/apollo/skills/design/components/overlays.md +72 -0
  65. package/data/harnesses/apollo/skills/design/components/setup.md +40 -0
  66. package/data/harnesses/apollo/skills/design/components/typography.md +46 -0
  67. package/data/harnesses/apollo/skills/design/components/utils.md +37 -0
  68. package/data/harnesses/apollo/skills/design/data/blueprints/browse.md +38 -0
  69. package/data/harnesses/apollo/skills/design/data/blueprints/creation-flow.md +38 -0
  70. package/data/harnesses/apollo/skills/design/data/blueprints/dashboard.md +38 -0
  71. package/data/harnesses/apollo/skills/design/data/blueprints/grid.md +38 -0
  72. package/data/harnesses/apollo/skills/design/data/blueprints/queue.md +38 -0
  73. package/data/harnesses/apollo/skills/design/data/blueprints/record-detail.md +38 -0
  74. package/data/harnesses/apollo/skills/design/data/blueprints/settings.md +38 -0
  75. package/data/harnesses/apollo/skills/design/data/chart-styling/Readme.md +33 -0
  76. package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +19 -0
  77. package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +19 -0
  78. package/data/harnesses/apollo/skills/design/data/chart-styling/datadog-classic-six-aligned.md +19 -0
  79. package/data/harnesses/apollo/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +19 -0
  80. package/data/harnesses/apollo/skills/design/data/chart-styling/econ-red-rule-horizontal.md +19 -0
  81. package/data/harnesses/apollo/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +19 -0
  82. package/data/harnesses/apollo/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +19 -0
  83. package/data/harnesses/apollo/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +19 -0
  84. package/data/harnesses/apollo/skills/design/data/chart-styling/material-rounded-explicit-label.md +19 -0
  85. package/data/harnesses/apollo/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +19 -0
  86. package/data/harnesses/apollo/skills/design/data/chart-styling/plot-currentcolor-inherit.md +19 -0
  87. package/data/harnesses/apollo/skills/design/data/chart-styling/saas-gradient-glow-area.md +19 -0
  88. package/data/harnesses/apollo/skills/design/data/chart-styling/shadcn-composable-css-vars.md +19 -0
  89. package/data/harnesses/apollo/skills/design/data/charts/census.csv +58 -0
  90. package/data/harnesses/apollo/skills/design/data/checklists/browse.md +21 -0
  91. package/data/harnesses/apollo/skills/design/data/checklists/creation-flow.md +20 -0
  92. package/data/harnesses/apollo/skills/design/data/checklists/dashboard.md +21 -0
  93. package/data/harnesses/apollo/skills/design/data/checklists/grid.md +21 -0
  94. package/data/harnesses/apollo/skills/design/data/checklists/queue.md +21 -0
  95. package/data/harnesses/apollo/skills/design/data/checklists/record-detail.md +21 -0
  96. package/data/harnesses/apollo/skills/design/data/checklists/settings.md +21 -0
  97. package/data/harnesses/apollo/skills/design/data/chrome/board-column.md +68 -0
  98. package/data/harnesses/apollo/skills/design/data/chrome/data-table.md +63 -0
  99. package/data/harnesses/apollo/skills/design/data/chrome/side-panel.md +60 -0
  100. package/data/harnesses/apollo/skills/design/data/chrome/sidebar.md +78 -0
  101. package/data/harnesses/apollo/skills/design/data/chrome/stat-cards.md +62 -0
  102. package/data/harnesses/apollo/skills/design/data/chrome/topbar.md +65 -0
  103. package/data/harnesses/apollo/skills/design/data/color/accent-presets.md +90 -0
  104. package/data/harnesses/apollo/skills/design/data/color/aesop-earth-mute.md +91 -0
  105. package/data/harnesses/apollo/skills/design/data/color/arc-peach-play.md +90 -0
  106. package/data/harnesses/apollo/skills/design/data/color/attio-hunter-teal.md +90 -0
  107. package/data/harnesses/apollo/skills/design/data/color/carbon-cyan-signal.md +90 -0
  108. package/data/harnesses/apollo/skills/design/data/color/clay-parchment.md +90 -0
  109. package/data/harnesses/apollo/skills/design/data/color/duolingo-feather.md +90 -0
  110. package/data/harnesses/apollo/skills/design/data/color/geist-mono-signal.md +90 -0
  111. package/data/harnesses/apollo/skills/design/data/color/linear-graphite-violet.md +90 -0
  112. package/data/harnesses/apollo/skills/design/data/color/mercury-onyx-cobalt.md +90 -0
  113. package/data/harnesses/apollo/skills/design/data/color/notion-paper-ink.md +90 -0
  114. package/data/harnesses/apollo/skills/design/data/color/radix-slate-iris.md +90 -0
  115. package/data/harnesses/apollo/skills/design/data/color/raycast-void-spectrum.md +90 -0
  116. package/data/harnesses/apollo/skills/design/data/color/spectrum-celery-fuchsia.md +90 -0
  117. package/data/harnesses/apollo/skills/design/data/color/stripe-blurple-ruby.md +90 -0
  118. package/data/harnesses/apollo/skills/design/data/color/superhuman-cod-picton.md +89 -0
  119. package/data/harnesses/apollo/skills/design/data/corpora/operations-review/companies.csv +15 -0
  120. package/data/harnesses/apollo/skills/design/data/corpora/operations-review/corpus.md +87 -0
  121. package/data/harnesses/apollo/skills/design/data/corpora/operations-review/people.csv +25 -0
  122. package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/companies.csv +15 -0
  123. package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/corpus.md +83 -0
  124. package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/people.csv +25 -0
  125. package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/companies.csv +15 -0
  126. package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/corpus.md +89 -0
  127. package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/people.csv +25 -0
  128. package/data/harnesses/apollo/skills/design/data/elevation/ant-design-directional-shadow.md +19 -0
  129. package/data/harnesses/apollo/skills/design/data/elevation/apple-liquid-glass-material.md +18 -0
  130. package/data/harnesses/apollo/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +20 -0
  131. package/data/harnesses/apollo/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +20 -0
  132. package/data/harnesses/apollo/skills/design/data/elevation/github-primer-sparing-shadow.md +19 -0
  133. package/data/harnesses/apollo/skills/design/data/elevation/ibm-carbon-layer-and-border.md +19 -0
  134. package/data/harnesses/apollo/skills/design/data/elevation/linear-dark-surface-ladder.md +17 -0
  135. package/data/harnesses/apollo/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +19 -0
  136. package/data/harnesses/apollo/skills/design/data/elevation/material-3-tonal-elevation.md +21 -0
  137. package/data/harnesses/apollo/skills/design/data/elevation/neobrutalist-hard-offset.md +19 -0
  138. package/data/harnesses/apollo/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +18 -0
  139. package/data/harnesses/apollo/skills/design/data/elevation/notion-warm-minimal-hairline.md +17 -0
  140. package/data/harnesses/apollo/skills/design/data/elevation/polaris-elevation-inset-bevel.md +21 -0
  141. package/data/harnesses/apollo/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +19 -0
  142. package/data/harnesses/apollo/skills/design/data/elevation/shadcn-neutral-derived-radius.md +19 -0
  143. package/data/harnesses/apollo/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +18 -0
  144. package/data/harnesses/apollo/skills/design/data/elevation/tailwind-default-utility-scale.md +19 -0
  145. package/data/harnesses/apollo/skills/design/data/elevation/vercel-geist-shadow-as-border.md +20 -0
  146. package/data/harnesses/apollo/skills/design/data/gradients/amber-attention-fill.md +16 -0
  147. package/data/harnesses/apollo/skills/design/data/gradients/cloud-shadow-wash.md +16 -0
  148. package/data/harnesses/apollo/skills/design/data/gradients/confident-lavender-wash.md +16 -0
  149. package/data/harnesses/apollo/skills/design/data/gradients/ember-ship-flare.md +18 -0
  150. package/data/harnesses/apollo/skills/design/data/gradients/full-metal-wash.md +16 -0
  151. package/data/harnesses/apollo/skills/design/data/gradients/indigo-ruby-cta-band.md +18 -0
  152. package/data/harnesses/apollo/skills/design/data/gradients/linear-graphite-wash.md +18 -0
  153. package/data/harnesses/apollo/skills/design/data/gradients/marble-quartz-wash.md +16 -0
  154. package/data/harnesses/apollo/skills/design/data/gradients/midnight-aurora-panel.md +16 -0
  155. package/data/harnesses/apollo/skills/design/data/gradients/neutral-volume-fill.md +16 -0
  156. package/data/harnesses/apollo/skills/design/data/gradients/revenue-uptrend-fill.md +16 -0
  157. package/data/harnesses/apollo/skills/design/data/gradients/risk-decline-fill.md +16 -0
  158. package/data/harnesses/apollo/skills/design/data/gradients/signal-blue-develop.md +18 -0
  159. package/data/harnesses/apollo/skills/design/data/gradients/slate-mist-wash.md +16 -0
  160. package/data/harnesses/apollo/skills/design/data/gradients/stripe-atmosphere-mesh.md +18 -0
  161. package/data/harnesses/apollo/skills/design/data/gradients/teal-signal-accent.md +16 -0
  162. package/data/harnesses/apollo/skills/design/data/gradients/violet-magenta-promo.md +16 -0
  163. package/data/harnesses/apollo/skills/design/data/iconography.md +199 -0
  164. package/data/harnesses/apollo/skills/design/data/motion/accordion-expand.md +18 -0
  165. package/data/harnesses/apollo/skills/design/data/motion/destructive-hold-confirm.md +18 -0
  166. package/data/harnesses/apollo/skills/design/data/motion/drag-dismiss-momentum.md +18 -0
  167. package/data/harnesses/apollo/skills/design/data/motion/empty-state-arrive.md +18 -0
  168. package/data/harnesses/apollo/skills/design/data/motion/hover-lift.md +18 -0
  169. package/data/harnesses/apollo/skills/design/data/motion/modal-center-arrive.md +18 -0
  170. package/data/harnesses/apollo/skills/design/data/motion/number-ticker-roll.md +18 -0
  171. package/data/harnesses/apollo/skills/design/data/motion/onboarding-bounce.md +18 -0
  172. package/data/harnesses/apollo/skills/design/data/motion/panel-slide.md +18 -0
  173. package/data/harnesses/apollo/skills/design/data/motion/press-feedback.md +18 -0
  174. package/data/harnesses/apollo/skills/design/data/motion/progress-linear-loop.md +18 -0
  175. package/data/harnesses/apollo/skills/design/data/motion/route-crossfade.md +18 -0
  176. package/data/harnesses/apollo/skills/design/data/motion/rubber-band-overscroll.md +18 -0
  177. package/data/harnesses/apollo/skills/design/data/motion/skeleton-shimmer.md +18 -0
  178. package/data/harnesses/apollo/skills/design/data/motion/stagger-arrive.md +18 -0
  179. package/data/harnesses/apollo/skills/design/data/motion/toast-enter-stack.md +18 -0
  180. package/data/harnesses/apollo/skills/design/data/motion/tooltip-chain-instant.md +18 -0
  181. package/data/harnesses/apollo/skills/design/data/motion/trigger-anchored-reveal.md +18 -0
  182. package/data/harnesses/apollo/skills/design/data/tells.csv +34 -0
  183. package/data/harnesses/apollo/skills/design/data/typography/anton-work-sans.md +17 -0
  184. package/data/harnesses/apollo/skills/design/data/typography/archivo-black-archivo.md +17 -0
  185. package/data/harnesses/apollo/skills/design/data/typography/bitter-karla.md +17 -0
  186. package/data/harnesses/apollo/skills/design/data/typography/dm-serif-dm-sans.md +17 -0
  187. package/data/harnesses/apollo/skills/design/data/typography/fraunces-inter.md +17 -0
  188. package/data/harnesses/apollo/skills/design/data/typography/geist-geist-mono.md +17 -0
  189. package/data/harnesses/apollo/skills/design/data/typography/hubot-sans-mona-sans.md +17 -0
  190. package/data/harnesses/apollo/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +17 -0
  191. package/data/harnesses/apollo/skills/design/data/typography/instrument-serif-instrument-sans.md +17 -0
  192. package/data/harnesses/apollo/skills/design/data/typography/inter-operator-single-family.md +17 -0
  193. package/data/harnesses/apollo/skills/design/data/typography/libre-baskerville-libre-franklin.md +17 -0
  194. package/data/harnesses/apollo/skills/design/data/typography/newsreader-inter.md +17 -0
  195. package/data/harnesses/apollo/skills/design/data/typography/playfair-display-source-sans.md +17 -0
  196. package/data/harnesses/apollo/skills/design/data/typography/public-sans-operator-single-family.md +17 -0
  197. package/data/harnesses/apollo/skills/design/data/typography/sohne-inter-fintech.md +17 -0
  198. package/data/harnesses/apollo/skills/design/data/typography/source-serif-source-sans.md +17 -0
  199. package/data/harnesses/apollo/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +17 -0
  200. package/data/harnesses/apollo/skills/design/data/typography/spectral-manrope.md +17 -0
  201. package/data/harnesses/apollo/skills/design/data/voices/bright-collaborator.md +29 -0
  202. package/data/harnesses/apollo/skills/design/data/voices/direct-operator.md +29 -0
  203. package/data/harnesses/apollo/skills/design/data/voices/earnest-helper.md +29 -0
  204. package/data/harnesses/apollo/skills/design/data/voices/editorial-composed.md +29 -0
  205. package/data/harnesses/apollo/skills/design/data/voices/quiet-concierge.md +29 -0
  206. package/data/harnesses/apollo/skills/design/data/voices/warm-guide.md +29 -0
  207. package/data/harnesses/apollo/skills/design/design-md/SCHEMA.md +179 -0
  208. package/data/harnesses/apollo/skills/design/design-md/index.csv +67 -0
  209. package/data/harnesses/apollo/skills/design/design-md/library/airbnb.md +207 -0
  210. package/data/harnesses/apollo/skills/design/design-md/library/airtable.md +205 -0
  211. package/data/harnesses/apollo/skills/design/design-md/library/anthropic-claude.md +203 -0
  212. package/data/harnesses/apollo/skills/design/design-md/library/apple.md +206 -0
  213. package/data/harnesses/apollo/skills/design/design-md/library/binance.md +210 -0
  214. package/data/harnesses/apollo/skills/design/design-md/library/bmw.md +210 -0
  215. package/data/harnesses/apollo/skills/design/design-md/library/cal.md +209 -0
  216. package/data/harnesses/apollo/skills/design/design-md/library/clay.md +204 -0
  217. package/data/harnesses/apollo/skills/design/design-md/library/clickhouse.md +205 -0
  218. package/data/harnesses/apollo/skills/design/design-md/library/cohere.md +205 -0
  219. package/data/harnesses/apollo/skills/design/design-md/library/coinbase.md +198 -0
  220. package/data/harnesses/apollo/skills/design/design-md/library/composio.md +198 -0
  221. package/data/harnesses/apollo/skills/design/design-md/library/cursor.md +197 -0
  222. package/data/harnesses/apollo/skills/design/design-md/library/elevenlabs.md +199 -0
  223. package/data/harnesses/apollo/skills/design/design-md/library/expo.md +200 -0
  224. package/data/harnesses/apollo/skills/design/design-md/library/figma.md +199 -0
  225. package/data/harnesses/apollo/skills/design/design-md/library/framer.md +202 -0
  226. package/data/harnesses/apollo/skills/design/design-md/library/hashicorp.md +205 -0
  227. package/data/harnesses/apollo/skills/design/design-md/library/ibm.md +205 -0
  228. package/data/harnesses/apollo/skills/design/design-md/library/intercom.md +204 -0
  229. package/data/harnesses/apollo/skills/design/design-md/library/kraken.md +200 -0
  230. package/data/harnesses/apollo/skills/design/design-md/library/linear-app.md +198 -0
  231. package/data/harnesses/apollo/skills/design/design-md/library/lovable.md +199 -0
  232. package/data/harnesses/apollo/skills/design/design-md/library/meta.md +204 -0
  233. package/data/harnesses/apollo/skills/design/design-md/library/minimax.md +204 -0
  234. package/data/harnesses/apollo/skills/design/design-md/library/mintlify.md +210 -0
  235. package/data/harnesses/apollo/skills/design/design-md/library/miro.md +209 -0
  236. package/data/harnesses/apollo/skills/design/design-md/library/mistral-ai.md +201 -0
  237. package/data/harnesses/apollo/skills/design/design-md/library/mongodb.md +201 -0
  238. package/data/harnesses/apollo/skills/design/design-md/library/notion.md +204 -0
  239. package/data/harnesses/apollo/skills/design/design-md/library/nvidia.md +215 -0
  240. package/data/harnesses/apollo/skills/design/design-md/library/ollama.md +213 -0
  241. package/data/harnesses/apollo/skills/design/design-md/library/opencode-ai.md +216 -0
  242. package/data/harnesses/apollo/skills/design/design-md/library/posthog.md +218 -0
  243. package/data/harnesses/apollo/skills/design/design-md/library/raycast.md +214 -0
  244. package/data/harnesses/apollo/skills/design/design-md/library/replicate.md +202 -0
  245. package/data/harnesses/apollo/skills/design/design-md/library/resend.md +203 -0
  246. package/data/harnesses/apollo/skills/design/design-md/library/revolut.md +203 -0
  247. package/data/harnesses/apollo/skills/design/design-md/library/runwayml.md +203 -0
  248. package/data/harnesses/apollo/skills/design/design-md/library/sanity.md +200 -0
  249. package/data/harnesses/apollo/skills/design/design-md/library/sentry.md +201 -0
  250. package/data/harnesses/apollo/skills/design/design-md/library/shopify.md +202 -0
  251. package/data/harnesses/apollo/skills/design/design-md/library/slack.md +202 -0
  252. package/data/harnesses/apollo/skills/design/design-md/library/spacex.md +206 -0
  253. package/data/harnesses/apollo/skills/design/design-md/library/spotify.md +206 -0
  254. package/data/harnesses/apollo/skills/design/design-md/library/stripe.md +196 -0
  255. package/data/harnesses/apollo/skills/design/design-md/library/supabase.md +196 -0
  256. package/data/harnesses/apollo/skills/design/design-md/library/superhuman.md +194 -0
  257. package/data/harnesses/apollo/skills/design/design-md/library/tesla.md +198 -0
  258. package/data/harnesses/apollo/skills/design/design-md/library/theverge.md +199 -0
  259. package/data/harnesses/apollo/skills/design/design-md/library/together-ai.md +193 -0
  260. package/data/harnesses/apollo/skills/design/design-md/library/uber.md +195 -0
  261. package/data/harnesses/apollo/skills/design/design-md/library/vercel.md +195 -0
  262. package/data/harnesses/apollo/skills/design/design-md/library/voltagent.md +197 -0
  263. package/data/harnesses/apollo/skills/design/design-md/library/warp.md +196 -0
  264. package/data/harnesses/apollo/skills/design/design-md/library/webflow.md +197 -0
  265. package/data/harnesses/apollo/skills/design/design-md/library/wired.md +197 -0
  266. package/data/harnesses/apollo/skills/design/design-md/library/wise.md +198 -0
  267. package/data/harnesses/apollo/skills/design/design-md/library/x-ai.md +199 -0
  268. package/data/harnesses/apollo/skills/design/design-md/library/zapier.md +198 -0
  269. package/data/harnesses/apollo/skills/design/design-md/nurix.md +214 -0
  270. package/data/harnesses/apollo/skills/design/design-md/variants/editorial-luxury.md +184 -0
  271. package/data/harnesses/apollo/skills/design/design-md/variants/expressive-saas.md +216 -0
  272. package/data/harnesses/apollo/skills/design/design-md/variants/quiet-premium.md +211 -0
  273. package/data/harnesses/apollo/skills/design/design-md/variants/terse-dense-operator.md +212 -0
  274. package/data/harnesses/apollo/skills/design/design-md/variants/warm-approachable.md +216 -0
  275. package/data/harnesses/apollo/skills/design/references/compose.md +23 -0
  276. package/data/harnesses/apollo/skills/design/references/content.md +28 -0
  277. package/data/harnesses/apollo/skills/design/references/emission.md +21 -0
  278. package/data/harnesses/apollo/skills/design/references/existing-apps.md +27 -0
  279. package/data/harnesses/apollo/skills/design/references/intake.md +36 -0
  280. package/data/harnesses/apollo/skills/design/references/object-pass.md +24 -0
  281. package/data/harnesses/apollo/skills/design/references/ship-gate.md +29 -0
  282. package/data/harnesses/apollo/skills/design/references/ux-patterns/Readme.md +195 -0
  283. package/data/harnesses/apollo/skills/design/references/ux-patterns/ai-layer.md +49 -0
  284. package/data/harnesses/apollo/skills/design/references/ux-patterns/attributes-lifecycle.md +43 -0
  285. package/data/harnesses/apollo/skills/design/references/ux-patterns/container-choice.md +44 -0
  286. package/data/harnesses/apollo/skills/design/references/ux-patterns/creation-paths.md +46 -0
  287. package/data/harnesses/apollo/skills/design/references/ux-patterns/dashboards.md +42 -0
  288. package/data/harnesses/apollo/skills/design/references/ux-patterns/modes.md +42 -0
  289. package/data/harnesses/apollo/skills/design/references/ux-patterns/object-model.md +46 -0
  290. package/data/harnesses/apollo/skills/design/references/ux-patterns/page-archetype.md +48 -0
  291. package/data/harnesses/apollo/skills/design/references/ux-patterns/promotion-demotion.md +37 -0
  292. package/data/harnesses/apollo/skills/design/references/ux-patterns/settings.md +42 -0
  293. package/data/harnesses/apollo/skills/design/references/ux-patterns/standard-pages.md +46 -0
  294. package/data/harnesses/apollo/skills/design/references/ux-patterns/state-matrix.md +41 -0
  295. package/data/harnesses/apollo/skills/design/references/ux-patterns/table-mechanics.md +48 -0
  296. package/data/harnesses/apollo/skills/design/references/ux-patterns/verbs.md +45 -0
  297. package/data/harnesses/apollo/skills/design/references/ux-patterns/viewer-context.md +40 -0
  298. package/data/harnesses/apollo/skills/design/scripts/README-validator.md +27 -0
  299. package/data/harnesses/apollo/skills/design/scripts/select-chart.mjs +596 -0
  300. package/data/harnesses/apollo/skills/design/scripts/validate-design-md.mjs +1198 -0
  301. package/data/harnesses/apollo/skills/documentation/SKILL.md +132 -0
  302. package/data/harnesses/apollo/skills/documentation/references/examples.md +279 -0
  303. package/data/harnesses/apollo/skills/documentation/references/frontmatter.md +44 -0
  304. package/data/harnesses/apollo/skills/documentation/references/instruction-style.md +49 -0
  305. package/data/harnesses/apollo/skills/documentation/references/style-guide.md +351 -0
  306. package/data/harnesses/apollo/skills/documentation/references/untemplated.md +38 -0
  307. package/data/harnesses/apollo/skills/documentation/scripts/doc-lint.mjs +140 -0
  308. package/data/harnesses/apollo/skills/documentation/templates/Readme.md +32 -0
  309. package/data/harnesses/apollo/skills/documentation/templates/api-reference.md +20 -0
  310. package/data/harnesses/apollo/skills/documentation/templates/architecture-decision.md +121 -0
  311. package/data/harnesses/apollo/skills/documentation/templates/backlog.md +33 -0
  312. package/data/harnesses/apollo/skills/documentation/templates/behavioral-checklist.md +79 -0
  313. package/data/harnesses/apollo/skills/documentation/templates/changelog-entry.md +57 -0
  314. package/data/harnesses/apollo/skills/documentation/templates/changelog-index.md +41 -0
  315. package/data/harnesses/apollo/skills/documentation/templates/docs-readme.md +72 -0
  316. package/data/harnesses/apollo/skills/documentation/templates/domain-model.md +30 -0
  317. package/data/harnesses/apollo/skills/documentation/templates/environment-registry.md +15 -0
  318. package/data/harnesses/apollo/skills/documentation/templates/feature.md +149 -0
  319. package/data/harnesses/apollo/skills/documentation/templates/glossary.md +11 -0
  320. package/data/harnesses/apollo/skills/documentation/templates/memory-main.md +25 -0
  321. package/data/harnesses/apollo/skills/documentation/templates/migration-runbook.md +34 -0
  322. package/data/harnesses/apollo/skills/documentation/templates/non-goals.md +11 -0
  323. package/data/harnesses/apollo/skills/documentation/templates/operations-procedure.md +36 -0
  324. package/data/harnesses/apollo/skills/documentation/templates/plan.md +71 -0
  325. package/data/harnesses/apollo/skills/documentation/templates/protected-files.md +37 -0
  326. package/data/harnesses/apollo/skills/documentation/templates/root-readme.md +104 -0
  327. package/data/harnesses/apollo/skills/documentation/templates/security-overview.md +27 -0
  328. package/data/harnesses/apollo/skills/documentation/templates/structure.md +65 -0
  329. package/data/harnesses/apollo/skills/documentation/templates/system-overview.md +32 -0
  330. package/data/harnesses/apollo/skills/documentation/templates/testing-strategy.md +29 -0
  331. package/data/harnesses/apollo/skills/test-plan/SKILL.md +83 -0
  332. package/data/harnesses/apollo/skills/workflow-mapper/SKILL.md +451 -0
  333. package/data/harnesses/apollo/skills/workflow-mapper/references/patterns.md +214 -0
  334. package/data/harnesses/code/agents/maintenance.md +2 -2
  335. package/data/harnesses/code/codex/agents/maintenance.toml +2 -2
  336. package/data/harnesses/code/harness.json +3 -2
  337. package/data/harnesses/delivery/agents/maintenance.md +2 -2
  338. package/data/harnesses/delivery/codex/agents/maintenance.toml +2 -2
  339. package/data/harnesses/delivery/harness.json +3 -2
  340. package/data/harnesses/discover/harness.json +2 -1
  341. package/data/harnesses/discussion/harness.json +1 -0
  342. package/data/harnesses/etna/agents/maintenance.md +2 -2
  343. package/data/harnesses/etna/codex/agents/maintenance.toml +2 -2
  344. package/data/harnesses/etna/harness.json +3 -2
  345. package/data/harnesses/hr/harness.json +1 -0
  346. package/data/harnesses/kb-agi/harness.json +1 -0
  347. package/package.json +2 -2
@@ -0,0 +1,212 @@
1
+ ---
2
+ schema: design-md/v2
3
+ id: terse-dense-operator
4
+ tier: variant
5
+ segments: [ops, fintech, monitoring]
6
+ keywords: [dense, terminal, mono, utilitarian, dark-first, cyan, cockpit]
7
+ sourced: 2026-07-12
8
+ sources: "authored for the v2 variant roster; JetBrains Mono specimen"
9
+ license: open
10
+ ---
11
+
12
+ # terse-dense-operator — an engine control room at 03:00
13
+
14
+ ## 1 Visual Theme
15
+ A container ship's engine control room at 03:00: black consoles bolted in
16
+ rows, cyan phosphor readouts, hairline-etched panel labels, not one surface
17
+ that reflects. Dark is the primary mood and is authored first; light is the
18
+ daylight bridge — the same instruments with the sun on. Maximum data per
19
+ pixel: 0–2px radius, hairlines as the only ornament, mono-forward type, no
20
+ shadows pretending to be depth. One cyan accent marks the live thing; all
21
+ else is instrument gray-blue.
22
+
23
+ ## 2 Color Roles
24
+ Pale instrument `foreground` on near-black `background` (dark-first). Cyan
25
+ `primary` marks the one live element — primary action, active nav, the
26
+ `ring` — and nothing else; `accent` is its dim panel-glow tint for the
27
+ selected row. Status hues are signal lamps: `destructive` red, `success`
28
+ green, `warning` amber — on chips, cell states, and thresholds only, and
29
+ they outrank the cyan when lit. The `sidebar` drops a step darker than the
30
+ canvas; every separator is the hairline `border`, never contrast blocks.
31
+
32
+ ## 3 Typography
33
+ JetBrains Mono (display and data) / IBM Plex Sans (chrome). The cockpit
34
+ speaks mono: page titles are JetBrains Mono 700 at 20px — a stencil on a
35
+ panel, not a headline — and every figure, ID, timestamp, and log line is
36
+ mono with `tabular-nums`. IBM Plex Sans carries controls, labels, and body
37
+ where mono would tire the eye. The ramp is compressed (body 13px, data 12px);
38
+ weight changes are the only emphasis. Nothing exceeds 20px anywhere.
39
+
40
+ ## 4 Component Stylings
41
+ Buttons `radius-sm` (0px), `primary` fill only on the single commit action;
42
+ everything else is hairline-outlined `secondary` or ghost. Inputs are flat
43
+ `background` fill with hairline `border`, focus a 2px cyan `ring` — no glow,
44
+ no lift. Cards are hairline-bounded regions of the panel, never shadowed.
45
+ Table rows run at maximum density with `muted` hover, `accent` selection,
46
+ and mono numerals; column dividers are hairlines. Detail opens in a narrow
47
+ side panel; modals confirm destructive acts and do nothing else.
48
+
49
+ ## 5 Layout
50
+ 4px base, spent sparingly. Sidebar 224/48px; topbar 44px; side panel
51
+ 400/560px; content runs full-bleed to 1920px — a cockpit wastes no glass.
52
+ Gutters stay at 8–12px; density is compressed by default and never relaxes
53
+ below standard even on empty states. Forms are narrow, label-left, built for
54
+ the tab key.
55
+
56
+ ## 6 Depth
57
+ None faked. Light theme: hairlines only; the two declared shadows are
58
+ 1px-ring outlines (tinted, near-invisible) that keep overlays legible on
59
+ white, not elevation. Dark theme: the surface ladder is the only depth —
60
+ `background` 0.14 L, `surface-raised` +0.04, `surface-overlay` +0.09, hue
61
+ held at 230. Focus is the 2px `ring`; z-levels: content, sticky chrome,
62
+ overlay. Nothing floats, nothing glows.
63
+
64
+ ## 7 Motion
65
+ Near zero. Named moments: `panel-snap` (side panel, 160ms, interruptible),
66
+ `fade-arrive` (page content, 90ms), `press` (60ms). Row hover, selection,
67
+ sort, and every keyboard-initiated action render instantly — 0ms, by policy.
68
+ Physicality is granted to auth alone, as a single 160ms fade. If a motion is
69
+ noticed twice in a shift, it is too long.
70
+
71
+ ## 8 Iconography & Charts
72
+ Lucide, 1.5px stroke, on a compact 14/16px grid, `muted-foreground` default;
73
+ icons label systems, never decorate. Charts are instruments: hairline axes,
74
+ no gridline fills, no area washes, the cyan-led categorical ramp
75
+ (`chart-1..5`), tooltips on `surface-overlay` with mono numerals, thresholds
76
+ drawn as hairline rules in status hues.
77
+
78
+ ## 9 Voice
79
+ Log-terse: imperative verbs, no pleasantries, values before prose.
80
+ "Ack alert" · "Queue empty — 0 pending, last drain 03:12:47Z" · "Write
81
+ failed: partition 7 read-only since 02:58; retry blocked."
82
+
83
+ ## 10 Do's & Don'ts
84
+ Do put a figure where prose could go. Do keep every radius at 0–2px and
85
+ every separator a hairline. Do let status lamps outrank the cyan when lit.
86
+ Don't shadow anything; the ladder is the only depth. Don't animate hover,
87
+ sort, selection, or anything keyboard-initiated. Don't let mono display type
88
+ grow past 20px — a cockpit has no headlines. Don't relax density for
89
+ aesthetics; whitespace here is unread telemetry.
90
+
91
+ ## 11 Responsive
92
+ 375: sidebar → off-canvas rail, side panel → full sheet, tables keep mono
93
+ figures and horizontal scroll — never card-ify telemetry. 768: sidebar holds
94
+ at the 48px icon rail. 1024: two-pane queue+detail holds. 1440–1920:
95
+ columns multiply; the grid fills all available glass, no centering cap
96
+ below 1920px.
97
+
98
+ ## 12 Agent Prompt Guide
99
+ Author dark first; light is the daylight variant of the same panel, not a
100
+ separate look. Every surface leads with its densest useful table. Cyan on
101
+ exactly one live element; when a status lamp lights, cyan yields. No motion
102
+ on anything an operator repeats; 0ms is the default answer. Read the ladder
103
+ from the block — never derive dark, never add a shadow.
104
+
105
+ ```yaml design-values
106
+ color:
107
+ light:
108
+ background: oklch(0.965 0.006 230)
109
+ foreground: oklch(0.2 0.02 235)
110
+ card: oklch(0.975 0.005 230)
111
+ card-foreground: oklch(0.2 0.02 235)
112
+ popover: oklch(0.98 0.005 230)
113
+ popover-foreground: oklch(0.2 0.02 235)
114
+ primary: oklch(0.42 0.09 210)
115
+ primary-foreground: oklch(0.97 0.006 220)
116
+ secondary: oklch(0.93 0.009 230)
117
+ secondary-foreground: oklch(0.24 0.02 233)
118
+ muted: oklch(0.935 0.008 230)
119
+ muted-foreground: oklch(0.44 0.02 233)
120
+ accent: oklch(0.9 0.03 210)
121
+ accent-foreground: oklch(0.33 0.06 215)
122
+ destructive: oklch(0.53 0.19 27)
123
+ destructive-foreground: oklch(0.97 0.006 27)
124
+ success: oklch(0.55 0.12 155)
125
+ warning: oklch(0.62 0.13 75)
126
+ border: oklch(0.885 0.01 230)
127
+ input: oklch(0.885 0.01 230)
128
+ ring: oklch(0.42 0.09 210)
129
+ surface-raised: oklch(0.975 0.005 230)
130
+ surface-overlay: oklch(0.98 0.005 230)
131
+ chart-1: oklch(0.48 0.1 210)
132
+ chart-2: oklch(0.55 0.12 150)
133
+ chart-3: oklch(0.62 0.13 75)
134
+ chart-4: oklch(0.52 0.12 300)
135
+ chart-5: oklch(0.5 0.08 255)
136
+ sidebar: oklch(0.945 0.007 230)
137
+ sidebar-foreground: oklch(0.2 0.02 235)
138
+ sidebar-primary: oklch(0.42 0.09 210)
139
+ sidebar-primary-foreground: oklch(0.97 0.006 220)
140
+ sidebar-accent: oklch(0.9 0.03 210)
141
+ sidebar-accent-foreground: oklch(0.33 0.06 215)
142
+ sidebar-border: oklch(0.885 0.01 230)
143
+ sidebar-ring: oklch(0.42 0.09 210)
144
+ dark:
145
+ background: oklch(0.14 0.01 230)
146
+ foreground: oklch(0.89 0.012 220)
147
+ card: oklch(0.17 0.011 230)
148
+ card-foreground: oklch(0.89 0.012 220)
149
+ popover: oklch(0.23 0.013 230)
150
+ popover-foreground: oklch(0.89 0.012 220)
151
+ primary: oklch(0.8 0.12 200)
152
+ primary-foreground: oklch(0.14 0.02 225)
153
+ secondary: oklch(0.22 0.012 230)
154
+ secondary-foreground: oklch(0.86 0.014 220)
155
+ muted: oklch(0.2 0.012 230)
156
+ muted-foreground: oklch(0.68 0.02 225)
157
+ accent: oklch(0.25 0.035 210)
158
+ accent-foreground: oklch(0.85 0.08 200)
159
+ destructive: oklch(0.64 0.2 25)
160
+ destructive-foreground: oklch(0.11 0.02 25)
161
+ success: oklch(0.74 0.15 155)
162
+ warning: oklch(0.78 0.14 75)
163
+ border: oklch(0.25 0.013 230)
164
+ input: oklch(0.25 0.013 230)
165
+ ring: oklch(0.8 0.12 200)
166
+ surface-raised: oklch(0.18 0.012 230)
167
+ surface-overlay: oklch(0.23 0.013 230)
168
+ chart-1: oklch(0.8 0.12 200)
169
+ chart-2: oklch(0.72 0.13 150)
170
+ chart-3: oklch(0.78 0.13 75)
171
+ chart-4: oklch(0.7 0.12 300)
172
+ chart-5: oklch(0.68 0.1 255)
173
+ sidebar: oklch(0.12 0.009 230)
174
+ sidebar-foreground: oklch(0.86 0.014 220)
175
+ sidebar-primary: oklch(0.8 0.12 200)
176
+ sidebar-primary-foreground: oklch(0.14 0.02 225)
177
+ sidebar-accent: oklch(0.19 0.015 230)
178
+ sidebar-accent-foreground: oklch(0.87 0.014 220)
179
+ sidebar-border: oklch(0.22 0.012 230)
180
+ sidebar-ring: oklch(0.8 0.12 200)
181
+ typography:
182
+ display: { family: "JetBrains Mono Variable", fallback: "ui-monospace, monospace", weights: [700] }
183
+ sans: { family: "IBM Plex Sans", fallback: "system-ui, sans-serif", weights: [400, 600] }
184
+ mono: { family: "JetBrains Mono Variable", fallback: "ui-monospace, monospace", weights: [400, 700] }
185
+ ramp:
186
+ display: { size: 20px, line: 26px, weight: 700, family: display, tracking: 0em }
187
+ h1: { size: 18px, line: 24px, weight: 600, family: sans }
188
+ h2: { size: 15px, line: 20px, weight: 600, family: sans }
189
+ body: { size: 13px, line: 18px, weight: 400, family: sans }
190
+ small: { size: 12px, line: 16px, weight: 400, family: sans }
191
+ caption: { size: 11px, line: 14px, weight: 500, family: sans, tracking: 0.02em }
192
+ data: { size: 12px, line: 18px, weight: 400, family: mono, features: [tnum] }
193
+ register-scope: { display: [page-title], sans: [chrome, controls, body], mono: [data, ids, timestamps] }
194
+ elevation:
195
+ radius: { sm: 0px, md: 2px, lg: 2px }
196
+ hairline: border
197
+ shadow:
198
+ overlay: "0 0 0 1px oklch(0.32 0.015 230 / 0.55)"
199
+ popover: "0 0 0 1px oklch(0.32 0.015 230 / 0.55)"
200
+ dark-ladder: { background: 0.14, raised: 0.18, overlay: 0.23, hue-held: 230 }
201
+ motion:
202
+ duration: { press: 60ms, fade: 90ms, panel: 160ms }
203
+ easing: { standard: "cubic-bezier(0.2, 0, 0, 1)", exit: "cubic-bezier(0.4, 0, 1, 1)" }
204
+ entrance-never: ease-in
205
+ identity-moments: [auth]
206
+ iconography: { set: lucide, stroke: 1.5px, grid: [14px, 16px] }
207
+ charts:
208
+ categorical: [chart-1, chart-2, chart-3, chart-4, chart-5]
209
+ sequential: { from: background, to: chart-1 }
210
+ diverging: { negative: destructive, mid: muted, positive: success }
211
+ layout: { base: 4px, sidebar: [224px, 48px], topbar: 44px, side-panel: [400px, 560px], content-max: 1920px }
212
+ ```
@@ -0,0 +1,216 @@
1
+ ---
2
+ schema: design-md/v2
3
+ id: warm-approachable
4
+ tier: variant
5
+ segments: [smb, hr, support]
6
+ keywords: [warm, human, soft, rounded, terracotta, humanist, friendly]
7
+ sourced: 2026-07-12
8
+ sources: "authored for the v2 variant roster; Bricolage Grotesque and Nunito Sans specimens"
9
+ license: open
10
+ ---
11
+
12
+ # warm-approachable — a neighborhood credit union at opening
13
+
14
+ ## 1 Visual Theme
15
+ A neighborhood credit union at opening time: terracotta tile, an oak counter
16
+ worn smooth at the corner, a hand-lettered welcome card beside the bell,
17
+ coffee already on. Handshake software — light default, neutrals tinted
18
+ toward clay (warm, never cream), one terracotta accent that greets rather
19
+ than commands, gentle radius on everything you touch. The counter is still a
20
+ counter: tables, forms, and figures stay crisp, dense-capable, and honest.
21
+ Dark is the branch after close, lamps amber — an authored ladder, never an
22
+ inversion.
23
+
24
+ ## 2 Color Roles
25
+ Warm graphite `foreground` on a clay-washed `background` — the wash sits at
26
+ the warm-white edge, deliberately clear of the cream band. `primary` is the
27
+ terracotta — primary actions, active nav, the `ring`; `accent` is its peach
28
+ wash for selection and hover. Status hues are conventional but softened:
29
+ `destructive` red for real danger only, `success` leaf green, `warning`
30
+ honey amber — chips and validation, never chrome. The `sidebar` warms a
31
+ half-step below the canvas; nothing on it competes with the counter.
32
+
33
+ ## 3 Typography
34
+ Bricolage Grotesque (display) / Nunito Sans (text) / Red Hat Mono (data).
35
+ Bricolage speaks in page titles, empty states, and auth — a warm,
36
+ characterful voice that never touches cells, buttons, labels, or form
37
+ chrome. Nunito Sans, a humanist sans, carries all chrome and body at a
38
+ comfortable 15px with generous line-height. Red Hat Mono owns figures, IDs,
39
+ and timestamps with `tabular-nums`. Emphasis bumps weight, never size.
40
+
41
+ ## 4 Component Stylings
42
+ Buttons `radius-md`, `primary` fill, comfortable padding — soft-cornered,
43
+ never pill. Inputs are `background` fill with hairline `border` and
44
+ `radius-md`; focus draws the 2px terracotta `ring`, no glow. Cards sit on
45
+ `card` behind a hairline with the faintest clay-tinted shadow. Table rows
46
+ run standard height with `muted` hover and `accent` selection; numerals stay
47
+ mono. Detail opens in the side panel with a warm rule at its head; modals
48
+ confirm, they don't host work.
49
+
50
+ ## 5 Layout
51
+ 4px base. Sidebar 260/64px; topbar 56px; side panel 440/680px; content caps
52
+ at 1360px. Comfortable gutters (16–24px); density is standard, stepping
53
+ denser on queue and table archetypes without ever feeling like a terminal.
54
+ Forms run single-column with roomy field spacing — a form here is a
55
+ conversation, not an interrogation.
56
+
57
+ ## 6 Depth
58
+ Soft but honest: hairlines structure everything; cards may carry one faint
59
+ clay-tinted shadow; overlays carry a slightly deeper one. Never gray-black
60
+ shadows, never stacked elevation. Focus is the 2px `ring`. Dark expresses
61
+ depth as the surface ladder: `background` 0.16 L, `surface-raised` +0.05,
62
+ `surface-overlay` +0.10, hue held at 35 — the lamps get warmer, not the
63
+ shadows deeper.
64
+
65
+ ## 7 Motion
66
+ Gentle and brief. Named moments: `panel-slide` (side panel, 260ms,
67
+ interruptible), `fade-arrive` (page content, 180ms), `press` (130ms), and
68
+ `welcome-fade` (first-run empty state, 260ms, the one indulgence). Easing is
69
+ a soft ease-out; nothing springs or bounces. No animation on
70
+ keyboard-initiated or high-frequency actions — friendliness is never
71
+ latency.
72
+
73
+ ## 8 Iconography & Charts
74
+ Lucide at 1.75px stroke — slightly rounded presence to match the humanist
75
+ type — 16/20px grid, `muted-foreground` default; nav and empty states always
76
+ carry icons. Charts: hairline axes, no gridline fills, a warm five-hue
77
+ categorical ramp led by terracotta (`chart-1..5`), tooltips on
78
+ `surface-overlay` with mono numerals.
79
+
80
+ ## 9 Voice
81
+ Front-desk neighborly: plain words, first person welcome, no corporate
82
+ distance, numbers stated honestly. "Add a member" · "No requests waiting —
83
+ enjoy the quiet, or invite your team" · "We couldn't save that: the start
84
+ date is after the end date."
85
+
86
+ ## 10 Do's & Don'ts
87
+ Do keep the warmth in the neutrals and the type, not in extra color — one
88
+ terracotta, spent once per surface. Do give forms room to breathe. Do keep
89
+ figures mono and tables crisp — warm is not vague. Don't drift the
90
+ background into cream; the wash stays at the clay edge, above the band.
91
+ Don't pill buttons or inflate radius past the scale. Don't let Bricolage
92
+ near a cell, button, or label. Don't soften error states into ambiguity —
93
+ kindness is clarity.
94
+
95
+ ## 11 Responsive
96
+ 375: sidebar → sheet, side panel → full sheet, tables → stacked cards with
97
+ mono figures; type holds at 15px — small screens get no less warmth. 768:
98
+ sidebar collapses to the icon rail. 1024: two-pane queue+detail holds. 1440:
99
+ content centers under the 1360px cap; empty states earn the full display
100
+ treatment.
101
+
102
+ ## 12 Agent Prompt Guide
103
+ Greet, then serve: every surface opens with its work object in Bricolage,
104
+ then gets out of the way. Terracotta on exactly one action per surface. Keep
105
+ the counter honest — dense tables, mono figures, clear errors — and the
106
+ warmth in surfaces, corners, and copy. Dark is authored — consult the block,
107
+ never derive.
108
+
109
+ ```yaml design-values
110
+ color:
111
+ light:
112
+ background: oklch(0.977 0.008 30)
113
+ foreground: oklch(0.27 0.025 35)
114
+ card: oklch(0.984 0.006 30)
115
+ card-foreground: oklch(0.27 0.025 35)
116
+ popover: oklch(0.984 0.006 30)
117
+ popover-foreground: oklch(0.27 0.025 35)
118
+ primary: oklch(0.5 0.13 35)
119
+ primary-foreground: oklch(0.975 0.008 30)
120
+ secondary: oklch(0.94 0.012 30)
121
+ secondary-foreground: oklch(0.31 0.03 35)
122
+ muted: oklch(0.945 0.01 30)
123
+ muted-foreground: oklch(0.46 0.025 35)
124
+ accent: oklch(0.92 0.025 30)
125
+ accent-foreground: oklch(0.38 0.08 35)
126
+ destructive: oklch(0.53 0.19 27)
127
+ destructive-foreground: oklch(0.975 0.008 27)
128
+ success: oklch(0.57 0.12 150)
129
+ warning: oklch(0.65 0.13 70)
130
+ border: oklch(0.905 0.013 30)
131
+ input: oklch(0.905 0.013 30)
132
+ ring: oklch(0.55 0.13 35)
133
+ surface-raised: oklch(0.984 0.006 30)
134
+ surface-overlay: oklch(0.988 0.005 30)
135
+ chart-1: oklch(0.55 0.13 35)
136
+ chart-2: oklch(0.55 0.1 160)
137
+ chart-3: oklch(0.55 0.09 250)
138
+ chart-4: oklch(0.68 0.13 85)
139
+ chart-5: oklch(0.55 0.12 350)
140
+ sidebar: oklch(0.958 0.01 30)
141
+ sidebar-foreground: oklch(0.27 0.025 35)
142
+ sidebar-primary: oklch(0.5 0.13 35)
143
+ sidebar-primary-foreground: oklch(0.975 0.008 30)
144
+ sidebar-accent: oklch(0.92 0.025 30)
145
+ sidebar-accent-foreground: oklch(0.38 0.08 35)
146
+ sidebar-border: oklch(0.905 0.013 30)
147
+ sidebar-ring: oklch(0.55 0.13 35)
148
+ dark:
149
+ background: oklch(0.16 0.012 35)
150
+ foreground: oklch(0.91 0.012 35)
151
+ card: oklch(0.19 0.014 35)
152
+ card-foreground: oklch(0.91 0.012 35)
153
+ popover: oklch(0.26 0.016 35)
154
+ popover-foreground: oklch(0.91 0.012 35)
155
+ primary: oklch(0.72 0.13 40)
156
+ primary-foreground: oklch(0.15 0.02 35)
157
+ secondary: oklch(0.24 0.016 35)
158
+ secondary-foreground: oklch(0.88 0.014 35)
159
+ muted: oklch(0.23 0.015 35)
160
+ muted-foreground: oklch(0.7 0.02 38)
161
+ accent: oklch(0.29 0.035 35)
162
+ accent-foreground: oklch(0.86 0.05 40)
163
+ destructive: oklch(0.63 0.19 25)
164
+ destructive-foreground: oklch(0.12 0.02 25)
165
+ success: oklch(0.7 0.12 150)
166
+ warning: oklch(0.77 0.13 75)
167
+ border: oklch(0.28 0.016 35)
168
+ input: oklch(0.28 0.016 35)
169
+ ring: oklch(0.72 0.13 40)
170
+ surface-raised: oklch(0.21 0.015 35)
171
+ surface-overlay: oklch(0.26 0.016 35)
172
+ chart-1: oklch(0.72 0.13 40)
173
+ chart-2: oklch(0.7 0.1 160)
174
+ chart-3: oklch(0.68 0.09 250)
175
+ chart-4: oklch(0.8 0.12 85)
176
+ chart-5: oklch(0.7 0.11 350)
177
+ sidebar: oklch(0.14 0.011 35)
178
+ sidebar-foreground: oklch(0.89 0.013 35)
179
+ sidebar-primary: oklch(0.72 0.13 40)
180
+ sidebar-primary-foreground: oklch(0.15 0.02 35)
181
+ sidebar-accent: oklch(0.22 0.02 35)
182
+ sidebar-accent-foreground: oklch(0.89 0.013 35)
183
+ sidebar-border: oklch(0.26 0.015 35)
184
+ sidebar-ring: oklch(0.72 0.13 40)
185
+ typography:
186
+ display: { family: "Bricolage Grotesque Variable", fallback: "system-ui, sans-serif", weights: [600] }
187
+ sans: { family: "Nunito Sans Variable", fallback: "system-ui, sans-serif", weights: [400, 700] }
188
+ mono: { family: "Red Hat Mono", fallback: "ui-monospace, monospace", weights: [400] }
189
+ ramp:
190
+ display: { size: 30px, line: 38px, weight: 600, family: display, tracking: -0.01em }
191
+ h1: { size: 24px, line: 32px, weight: 600, family: display }
192
+ h2: { size: 18px, line: 26px, weight: 700, family: sans }
193
+ body: { size: 15px, line: 24px, weight: 400, family: sans }
194
+ small: { size: 13px, line: 20px, weight: 400, family: sans }
195
+ caption: { size: 12px, line: 16px, weight: 700, family: sans }
196
+ data: { size: 14px, line: 21px, weight: 400, family: mono, features: [tnum] }
197
+ register-scope: { display: [page-title, empty-state, auth], sans: [chrome, controls, body], mono: [data, ids, timestamps] }
198
+ elevation:
199
+ radius: { sm: 6px, md: 10px, lg: 16px }
200
+ hairline: border
201
+ shadow:
202
+ overlay: "0 10px 30px oklch(0.35 0.05 35 / 0.12)"
203
+ popover: "0 3px 12px oklch(0.35 0.05 35 / 0.09)"
204
+ dark-ladder: { background: 0.16, raised: 0.21, overlay: 0.26, hue-held: 35 }
205
+ motion:
206
+ duration: { press: 130ms, fade: 180ms, panel: 260ms }
207
+ easing: { standard: "cubic-bezier(0.25, 0, 0, 1)", exit: "cubic-bezier(0.4, 0, 1, 1)" }
208
+ entrance-never: ease-in
209
+ identity-moments: [auth, first-run-empty]
210
+ iconography: { set: lucide, stroke: 1.75px, grid: [16px, 20px] }
211
+ charts:
212
+ categorical: [chart-1, chart-2, chart-3, chart-4, chart-5]
213
+ sequential: { from: background, to: chart-1 }
214
+ diverging: { negative: destructive, mid: muted, positive: success }
215
+ layout: { base: 4px, sidebar: [260px, 64px], topbar: 56px, side-panel: [440px, 680px], content-max: 1360px }
216
+ ```
@@ -0,0 +1,23 @@
1
+ # Step 4 — Compose: one mind, whole canvas
2
+
3
+ Build the app — all surfaces in one continuous context, the chosen package's design.md in view throughout. This step is never decomposed into per-surface handoffs with frozen intermediate artifacts; the composing mind holds the whole canvas.
4
+
5
+ ## Chrome
6
+
7
+ Per the primitives switch recorded in the project's `design.md`:
8
+
9
+ - **`nurix`** — compose chrome from `@nurix/components`. The chrome recipes (`data/chrome/`) carry composition, states, and when-to-use; the component reference folder (`components/`) carries props, imports, and usage — consult the index for what exists, and open the touched category's API reference on need.
10
+ - **`native`** — the recipes are *specifications*: anatomy, the eight states, keyboard behavior, token reach — implement them with the incumbent stack's own components. The index's shadcn/fallback columns carry the composition; category API references never load.
11
+
12
+ Recipes are starting points, not jails: restyle or extend them in place when the package demands it.
13
+
14
+ ## Composition rules
15
+
16
+ - **Every surface starts from a chosen layout blueprint** (`data/blueprints/<archetype>.md`) — pick the shape reading the brief, record it in one line. Structural variety, not visual variety, is what reads as designed.
17
+ - **Values come from the token artifact** — components consume the emitted custom properties and never invent raw values ([emission.md](emission.md) has the pipe rules). Switching packages must re-skin the whole app.
18
+ - **Positive obligations apply** — load the surface's archetype checklist (`data/checklists/<archetype>.md`); the checklists are ceilings: a sidebar ships with brand block, icons, and user context; a dashboard tile ships with number + comparison + trend + state + door; every surface ships its state matrix.
19
+ - **The register scope holds**: the display face never touches cells, buttons, labels, or form chrome; data numerals run the mono face with `tabular-nums`.
20
+ - **Motion follows the package's §7** and the frequency law: actions performed 100+ times a day, and any keyboard-initiated action, get no animation, ever; panel/drawer motion is interruptible; entrances never `ease-in`.
21
+ - **No ownership jails.** Any file may be edited at any time, including generated ones and library compositions.
22
+ - **No paper-trail bureaucracy.** Decision-log lines only; attention goes to pixels.
23
+ - **A finishing pass with authority over everything is part of this step** — walk the whole canvas once at the end: rhythm, alignment, density, identity-consistency across surfaces, the one-accent discipline.
@@ -0,0 +1,28 @@
1
+ # Step 3 — Content: the believable book
2
+
3
+ Author the demo data **before composing surfaces**. Data credibility is the single largest scoring dimension in blind judging; this step is where builds are won.
4
+
5
+ ## From the corpus
6
+
7
+ Load the chosen domain's corpus (`data/corpora/<domain>/`): `corpus.md` (vocabulary, number-shape recipes, the invariants block) plus `people.csv` and `companies.csv`.
8
+
9
+ - Names come from the corpus roster; emails derive from names; roles are domain-correct.
10
+ - Activity strings use the corpus vocabulary — a CRM logs "Intro call with Elena — pricing discussion", never webhook noise.
11
+ - Numbers follow the corpus's shape recipes (log-normal deal values, plausible deltas); dates vary around the corpus's **fixed reference instant**, never around "now".
12
+ - **Acceptance is rendered plausibility against the declared invariants**: aggregates reconcile with their rows; legal ranges hold; forbidden repetition (same surname clusters, identical amounts) never shows. The ship gate checks these mechanically — author to them now.
13
+ - **Edge-case rows (nulls, zeros, outliers) go only into dedicated state fixtures** (`empty*`, `degraded*`), never into the primary dataset.
14
+
15
+ ## Voice
16
+
17
+ Load the package-bound voice pack (`data/voices/<id>.md` — the package's §9 names it). All authored strings — buttons, empty states, errors, tooltips, confirmations — speak in that voice, with tone varying by situation per the pack's tone map.
18
+
19
+ ## Chart choice
20
+
21
+ Every data-bearing surface consults the chart-selection engine — **one graph question per consult**:
22
+
23
+ 1. Author the data signature (the judgment half): the question, measures, dimensions, semantic flags (temporal, parts-form-whole, target-exists, …), constraints. Decompose multi-question asks first.
24
+ 2. Run `node scripts/select-chart.mjs <signature.json>` and read the typed output: admissible set, eliminations with reason codes, ranking, recommendation, or a refusal code.
25
+ 3. **Honor refusals** — a refusal means the question isn't chartable as posed (often: it's a table). Never invent a measure to force a chart.
26
+ 4. Record the pick in one line in `decisions.md`. Taking a non-recommended admissible option needs a reason on that line; taking an eliminated option is out of contract.
27
+
28
+ Chart *styling* is not this step's concern — the package's §8 and the chart-styling axis own it at composition.
@@ -0,0 +1,21 @@
1
+ # Package emission — design.md → token artifact
2
+
3
+ One source, one derivation: the project's `design.md` is canonical; the token artifact is compiled from it and **never hand-edited**. Emit with `node scripts/validate-design-md.mjs <project design.md> --emit > design.tokens.css` (the artifact lives beside `design.md` at the repo base; the app's global stylesheet imports it). Re-emit on every design.md change; the ship gate's drift check byte-compares a fresh emission against the committed artifact.
4
+
5
+ ## Coverage
6
+
7
+ The artifact is complete by construction — the validator fails the design.md before emission otherwise: every one of the 36 color roles in **both** themes, the full type ramp, the elevation system, the motion base, layout dimensions. Composition consumes tokens and never invents values; switching packages re-skins the whole app.
8
+
9
+ ## Emission constraints
10
+
11
+ Each prevents a known silent-failure class:
12
+
13
+ - **Specificity armor.** Theme blocks are `:root, :root[data-theme="light"]` and `:root[data-theme="dark"]` — both specificity (0,2,0) — so a component library's later bare `:root` block cannot silently defeat a theme.
14
+ - **Font binding by derivation.** Font stacks bind to installed packages under **registered family names** (`"Inter Variable"`, not `"Inter"`), each with its declared fallback stack — otherwise the flagship font silently never renders. Install the font packages the design.md declares (e.g. Fontsource) and verify the name matches what the package registers.
15
+ - **Every authored token group reaches a named consumer.** An authored ramp with no emitter vanishes without a trace — wire each group (colors → theme classes/utilities, ramp → text styles, elevation → radius/shadow utilities, motion → duration/easing vars) and let the ship gate's reach check prove it.
16
+ - **Compile the emitted CSS once per change** — a stray utility string inside a CSS comment can defeat a fully green byte-level check.
17
+ - **One linear precedence, later wins:** package defaults → brief bindings → recorded deviations. Values resolve at emission; the runtime cascade carries only contexts (theme, density).
18
+
19
+ ## Stack neutrality
20
+
21
+ The artifact is plain CSS custom properties — every stack consumes it. Under `primitives: nurix`, Tailwind maps the properties through the theme config; under `native`, the incumbent styling layer reads the same variables. No emission step is React-specific.
@@ -0,0 +1,27 @@
1
+ # Improve, judge, and extract on existing apps
2
+
3
+ The same machinery runs on existing UIs, under a preservation contract.
4
+
5
+ ## Judge — a user-invoked service
6
+
7
+ A critique of an existing UI against the brief, the project's `design.md`, the archetype checklists, and `taste.md`, producing a **severity-ranked (never scored) report**. Judge is a service the user asks for — never a self-check the skill runs on its own output. Read the actual rendered state (screenshots the user provides, or captures the user asks for); refuse to critique from source alone when the ask is "does it look right", and never imagine what unrendered code looks like. Each finding: severity, the on-screen element, what's wrong, the exact fix.
8
+
9
+ ## Improve — judge + the fix pass
10
+
11
+ Whole-canvas authority holds, under the **preservation contract**:
12
+
13
+ 1. **Pre-flight findings block** — record the incumbent system with file citations: tokens, fonts, framework, component conventions. When the product already lives on an official design system, that system is respected, never replaced. The primitives switch reads `native` on these runs unless the incumbent already uses `@nurix/components`.
14
+ 2. **Preserve/introduce declaration** precedes any change: what stays, what enters, in one block.
15
+ 3. **The never-silently-change list** holds regardless of authority: routes and slugs, nav labels, form field names and IDs, brand marks, legal copy. The no-jails law is about *our* generated files; a user's existing brand and IA are theirs. Changing anything on this list requires the user's explicit ask.
16
+
17
+ Improve runs then proceed through the standard steps as scoped: intake (against the incumbent — the package choice may be "extract", below), structure only where surfaces change, content only where data is fake, compose with the finishing pass, and the ship gate on what was touched.
18
+
19
+ ## Extract — reading an identity package out of a foreign UI
20
+
21
+ A supported entry path, under **attestation and provenance**:
22
+
23
+ - Record what the source is and whose it is: own product / public reference / third party.
24
+ - Extract **structure and system, never pixels or assets**: roles, ramps, spacing, elevation, motion posture — into a `tier: project` design.md in the package schema, validator-checked.
25
+ - Write a provenance block into the extracted file (`source-package: extracted@<date>` plus the attestation lines).
26
+ - Record what **is**, never what should be — extraction is documentation, not improvement; the improve pass comes after, separately, if asked.
27
+ - Admission of an extracted package into the shared roster later requires the provenance check to pass; third-party extractions stay project-local.
@@ -0,0 +1,36 @@
1
+ # Step 1 — Intake: brief → recorded choices
2
+
3
+ Read the brief and choose from the menus: one identity package (the design.md system), any axis overrides the brief demands, layout blueprints per surface, and the product domain for content. Every choice is one recorded line.
4
+
5
+ ## Rules
6
+
7
+ - **The brief's own words outrank any database default.** "Beautiful" means the ceiling, not the safe row.
8
+ - **Adjectives become referents.** When the brief speaks in adjectives ("premium", "editorial"), name the 2–3 real products the brief is pointing at and pick the package whose recorded identity sits in that class — unnamed ambition becomes beige.
9
+ - **The index is a retrieval aid, never a router.** Load `design-md/index.csv` whole (it is small), shortlist 2–3 rows by segment/keyword resemblance, read only the shortlisted files' §1 Visual Theme, then choose reading the brief. After the choice, the chosen package's **full design.md enters context and stays in view through step 4**; unchosen candidates are dropped.
10
+ - **The escape hatch fires mechanically.** No index hit, plus a recorded one-line reason why the closest package fails → author a one-off project design.md in the package schema (`design-md/SCHEMA.md`), `tier: project`, validator-checked like any library entry. This path is expected to be common; flag the file as a curation candidate for the roster.
11
+ - **Set the primitives switch** — write one `primitives: nurix | native` line into the project's `design.md`. Default by the probe: the project resolves `@nurix/components` (check package.json / lockfile / node_modules) → `nurix`; otherwise — existing apps, foreign stacks, no library access — → `native`. Set once here; nothing downstream re-asks. Also write `source-package: <id>@<date>` (or `authored` for escape-hatch one-offs).
12
+ - **Write or update `product.md`**: users and their jobs, roles/permissions, action frequency, risk level, accessibility commitments, brand anti-references. Package choice, UX decisions, motion intensity, and demo data all cite it.
13
+ - **Consult `taste.md`** — its feel/avoid lines bias every choice; user reactions to shipped output update it in place. Missing file = no bias, never a block.
14
+ - **Stated-choice awareness:** if prior package picks are visible in the workspace, name them and say in one line why this pick repeats or differs — awareness, never forced rotation.
15
+ - **Questions go to the user only when the answer changes the design** (theme, audience, density); everything else is inferred and marked inferred.
16
+
17
+ ## The preview block
18
+
19
+ Step 1 ends with a preview block:
20
+
21
+ - chosen package + one-line reason
22
+ - the primitives switch position
23
+ - axis overrides (each: axis → entry id → one-line reason)
24
+ - blueprints per surface
25
+ - domain corpus
26
+ - surface map with archetypes
27
+ - planned deviations
28
+
29
+ When a user is present, pause here **once** for confirm-or-redirect — a wrong pick costs one message now instead of a full build. Autonomous runs proceed. Either way the block becomes the durable header of this run's dated section in `decisions.md`.
30
+
31
+ ## Outputs
32
+
33
+ - `design.md` (project fork: chosen package + switch line + provenance + brief bindings; deviations accrue as they are recorded)
34
+ - `product.md` written/updated; `taste.md` consulted
35
+ - the preview block, appended to `decisions.md`
36
+ - the chosen package's full design.md held in context
@@ -0,0 +1,24 @@
1
+ # Step 2 — Structure: the object pass
2
+
3
+ Derive the object model and surface map using the UX-pattern decision layer (`references/ux-patterns/`). Load **one pass file at a time**, in this order, consulting only the passes the brief makes material:
4
+
5
+ 1. `object-model` — the domain objects and their relationships
6
+ 2. `attributes-lifecycle` — attributes, lifecycle states, history requirements
7
+ 3. `verbs` — actions per object × state × role
8
+ 4. `viewer-context` — how rendering changes by viewer
9
+ 5. `modes` — modal contexts the product runs in
10
+ 6. `promotion-demotion` — surface prominence by frequency × criticality
11
+ 7. `page-archetype` — each surface's archetype from the pinned roster: **browse, queue, grid, record-detail, dashboard, creation-flow, settings**. View-types (table, board, cards, calendar) are projections of an archetype, never archetypes.
12
+ 8. `container-choice` — container by workflow (duration, interruption, comparison need), never by size
13
+ 9. `creation-paths` — form, import, conversion, clone, recurrence
14
+ 10. `table-mechanics` — where tables project a surface
15
+ 11. `state-matrix` — loading, the three empties (first-use, no-results, cleared), degraded, stale — per surface
16
+ 12. `standard-pages` / `ai-layer` / `dashboards` / `settings` — when the brief has them
17
+
18
+ Each pass file carries its rule as prose plus a machine-readable decision table; **follow the table's answer**. Disagreement is legitimate craft only when recorded — one line in `decisions.md` naming the pass, the table's answer, yours, and why. An unrecorded divergence is the violation.
19
+
20
+ When a pass fires a clarification code (an input the table needs that the brief doesn't give), resolve it: infer-and-mark when the answer doesn't change the design, ask when it does.
21
+
22
+ ## Output: the structure document
23
+
24
+ A single document — entities, surfaces, archetype per surface, projections, container choices, creation paths, and the state matrix per surface. It is an **input** to composition, never a jail: no file it implies is ever marked do-not-edit, and step 4 may revise it with a one-line record.
@@ -0,0 +1,29 @@
1
+ # Step 5 — The ship gate
2
+
3
+ The project ships with its four project-local artifacts — `design.md` (the resolved fork, with provenance line, brief bindings, recorded deviations), `product.md`, `taste.md`, and `decisions.md`. The gate has two tiers, both objective: this is the only runtime check the skill performs, permitted precisely because it is automated and needs no judgment. Nothing here grades taste — anything that needs grading was the build-time harness's burden, not the run's.
4
+
5
+ ## Tier 1 — fails closed
6
+
7
+ Every check a binary predicate. Run the validator (`node scripts/validate-design-md.mjs <project design.md> --mode ship`) plus the build itself; all of these must hold:
8
+
9
+ - **No placeholder text or scaffold stubs** anywhere (lorem, TODO, "Coming soon", empty `href="#"` walls).
10
+ - **Data plausibility** against the corpus's declared invariants: aggregates reconcile with their visible rows; legal ranges hold; no degenerate repetition in visible rows (surname clusters, identical amounts).
11
+ - **Accessibility floor, mechanical**: contrast computed on the emitted token pairs in *both* themes; focus visible on every interactive element; `prefers-reduced-motion` respected.
12
+ - **Every declared surface reachable** — each surface in the structure doc has a live route/nav path.
13
+ - **`design.md` present at the repo base** and the token artifact recompiles from it to a byte-match (the validator's drift check).
14
+ - **The pipe checks**:
15
+ - the token artifact carries 100% coverage and components consume tokens — no raw color/size literals in component code;
16
+ - fonts bound to installed packages under registered family names (a family that never resolves is a fail);
17
+ - every authored token group reaches a named consumer — an emitted ramp nobody consumes is a fail;
18
+ - the emitted CSS actually compiles;
19
+ - charts and status surfaces consume the package's tokens (a dark dashboard with hardcoded light charts fails here).
20
+
21
+ A Tier-1 failure blocks the ship; fix and re-run. Binary phrasing is the contract — anything that would need "use sparingly" grading does not belong in this tier.
22
+
23
+ ## Tier 2 — flags, never gates
24
+
25
+ Sweep `data/tells.csv` (the operator tell list) plus the motion tells (`transition: all`; `ease-in` on an entrance; animation attached to a keyboard-triggered action). Flags cannot fail the build and trigger no in-run judging: each is **fixed or dismissed with one recorded line** in `decisions.md`, and every flag appears in the ship report for the human's eyes — numbers point eyes; they do not replace them. The validator may run this sweep warn-only after compose-step edits; nothing new ever fails the build mid-composition.
26
+
27
+ ## The ship report
28
+
29
+ Close the run with a compact report: surfaces shipped, the recorded choices (from the run's `decisions.md` section), Tier-1 results, every Tier-2 flag with its disposition, and the validator's warn list. No scores, no self-grades.