@nurix/etna 0.18.20 → 0.18.22

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 (272) hide show
  1. package/README.md +1 -1
  2. package/data/harness-index.json +1 -1
  3. package/data/harnesses/code/CLAUDE.md +3 -3
  4. package/data/harnesses/code/agents/brainstorm.md +1 -1
  5. package/data/harnesses/code/agents/maintenance.md +8 -7
  6. package/data/harnesses/code/harness.json +2 -2
  7. package/data/harnesses/code/rules/database.md +38 -0
  8. package/data/harnesses/code/rules/express.md +28 -0
  9. package/data/harnesses/code/rules/frontend.md +14 -0
  10. package/data/harnesses/code/rules/general.md +2 -40
  11. package/data/harnesses/code/rules/nomenclature.md +1 -8
  12. package/data/harnesses/code/rules/nustack.md +150 -0
  13. package/data/harnesses/code/skills/brainstorm/README.md +4 -4
  14. package/data/harnesses/code/skills/brainstorm/SKILL.md +5 -3
  15. package/data/harnesses/code/skills/brainstorm/exit-artifacts.md +15 -11
  16. package/data/harnesses/code/skills/brainstorm/templates/source-of-truth.md +5 -5
  17. package/data/harnesses/code/skills/design/SKILL.md +14 -11
  18. package/data/harnesses/code/skills/design/data/catalog/rules.csv +4 -4
  19. package/data/harnesses/code/skills/design/data/combinations/Readme.md +29 -0
  20. package/data/harnesses/code/skills/design/data/combinations/charts.csv +33 -0
  21. package/data/harnesses/code/skills/design/data/combinations/fonts-known.json +437 -0
  22. package/data/harnesses/code/skills/design/data/combinations/icons.csv +157 -0
  23. package/data/harnesses/code/skills/design/data/combinations/landing.csv +38 -0
  24. package/data/harnesses/code/skills/design/data/combinations/lucide-names.json +2001 -0
  25. package/data/harnesses/code/skills/design/data/combinations/manifest.json +283 -0
  26. package/data/harnesses/code/skills/design/data/combinations/palettes.csv +49 -0
  27. package/data/harnesses/code/skills/design/data/combinations/product-router.csv +80 -0
  28. package/data/harnesses/code/skills/design/data/combinations/styles.csv +54 -0
  29. package/data/harnesses/code/skills/design/data/combinations/typography.csv +61 -0
  30. package/data/harnesses/code/skills/design/data/design-md/SCHEMA.md +27 -238
  31. package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +7 -88
  32. package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +1 -82
  33. package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +4 -85
  34. package/data/harnesses/code/skills/design/data/design-md/library/apple.md +5 -86
  35. package/data/harnesses/code/skills/design/data/design-md/library/binance.md +4 -87
  36. package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +7 -86
  37. package/data/harnesses/code/skills/design/data/design-md/library/cal.md +4 -84
  38. package/data/harnesses/code/skills/design/data/design-md/library/clay.md +5 -86
  39. package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +3 -84
  40. package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +2 -82
  41. package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +10 -91
  42. package/data/harnesses/code/skills/design/data/design-md/library/composio.md +2 -84
  43. package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +3 -85
  44. package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +7 -90
  45. package/data/harnesses/code/skills/design/data/design-md/library/expo.md +0 -80
  46. package/data/harnesses/code/skills/design/data/design-md/library/figma.md +0 -80
  47. package/data/harnesses/code/skills/design/data/design-md/library/framer.md +5 -85
  48. package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +2 -82
  49. package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +5 -86
  50. package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +9 -91
  51. package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +9 -89
  52. package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +0 -115
  53. package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +5 -85
  54. package/data/harnesses/code/skills/design/data/design-md/library/meta.md +7 -88
  55. package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +3 -84
  56. package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +4 -85
  57. package/data/harnesses/code/skills/design/data/design-md/library/miro.md +8 -88
  58. package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +8 -88
  59. package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +4 -85
  60. package/data/harnesses/code/skills/design/data/design-md/library/notion.md +4 -84
  61. package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +7 -88
  62. package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +5 -86
  63. package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +6 -87
  64. package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +9 -91
  65. package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +5 -88
  66. package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +9 -89
  67. package/data/harnesses/code/skills/design/data/design-md/library/resend.md +4 -119
  68. package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +4 -84
  69. package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +0 -82
  70. package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +3 -86
  71. package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +13 -94
  72. package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +2 -82
  73. package/data/harnesses/code/skills/design/data/design-md/library/slack.md +6 -88
  74. package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +13 -94
  75. package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +4 -86
  76. package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +7 -88
  77. package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +6 -88
  78. package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +5 -86
  79. package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +6 -86
  80. package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +12 -93
  81. package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +11 -91
  82. package/data/harnesses/code/skills/design/data/design-md/library/uber.md +8 -88
  83. package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +2 -82
  84. package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +11 -126
  85. package/data/harnesses/code/skills/design/data/design-md/library/warp.md +8 -88
  86. package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +3 -83
  87. package/data/harnesses/code/skills/design/data/design-md/library/wired.md +10 -91
  88. package/data/harnesses/code/skills/design/data/design-md/library/wise.md +7 -90
  89. package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +6 -88
  90. package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +9 -89
  91. package/data/harnesses/code/skills/design/data/design-md/nurix.md +4 -87
  92. package/data/harnesses/code/skills/design/data/design-tokens/SCHEMA.md +580 -0
  93. package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.resolver.json +20 -0
  94. package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.tokens.json +964 -0
  95. package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.resolver.json +20 -0
  96. package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.tokens.json +960 -0
  97. package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.resolver.json +20 -0
  98. package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.tokens.json +965 -0
  99. package/data/harnesses/code/skills/design/data/design-tokens/apple/design.resolver.json +20 -0
  100. package/data/harnesses/code/skills/design/data/design-tokens/apple/design.tokens.json +954 -0
  101. package/data/harnesses/code/skills/design/data/design-tokens/binance/design.resolver.json +20 -0
  102. package/data/harnesses/code/skills/design/data/design-tokens/binance/design.tokens.json +949 -0
  103. package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.resolver.json +20 -0
  104. package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.tokens.json +962 -0
  105. package/data/harnesses/code/skills/design/data/design-tokens/cal/design.resolver.json +20 -0
  106. package/data/harnesses/code/skills/design/data/design-tokens/cal/design.tokens.json +958 -0
  107. package/data/harnesses/code/skills/design/data/design-tokens/clay/design.resolver.json +20 -0
  108. package/data/harnesses/code/skills/design/data/design-tokens/clay/design.tokens.json +953 -0
  109. package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.resolver.json +20 -0
  110. package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.tokens.json +960 -0
  111. package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.resolver.json +20 -0
  112. package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.tokens.json +973 -0
  113. package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.resolver.json +20 -0
  114. package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.tokens.json +954 -0
  115. package/data/harnesses/code/skills/design/data/design-tokens/composio/design.resolver.json +20 -0
  116. package/data/harnesses/code/skills/design/data/design-tokens/composio/design.tokens.json +963 -0
  117. package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.resolver.json +20 -0
  118. package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.tokens.json +968 -0
  119. package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.resolver.json +20 -0
  120. package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.tokens.json +981 -0
  121. package/data/harnesses/code/skills/design/data/design-tokens/expo/design.resolver.json +20 -0
  122. package/data/harnesses/code/skills/design/data/design-tokens/expo/design.tokens.json +962 -0
  123. package/data/harnesses/code/skills/design/data/design-tokens/figma/design.resolver.json +20 -0
  124. package/data/harnesses/code/skills/design/data/design-tokens/figma/design.tokens.json +964 -0
  125. package/data/harnesses/code/skills/design/data/design-tokens/framer/design.resolver.json +20 -0
  126. package/data/harnesses/code/skills/design/data/design-tokens/framer/design.tokens.json +959 -0
  127. package/data/harnesses/code/skills/design/data/design-tokens/goldens.json +251 -0
  128. package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.resolver.json +20 -0
  129. package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.tokens.json +965 -0
  130. package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.resolver.json +20 -0
  131. package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.tokens.json +978 -0
  132. package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.resolver.json +20 -0
  133. package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.tokens.json +982 -0
  134. package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.resolver.json +20 -0
  135. package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.tokens.json +958 -0
  136. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.resolver.json +23 -0
  137. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.dark.json +589 -0
  138. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.json +964 -0
  139. package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.resolver.json +20 -0
  140. package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.tokens.json +955 -0
  141. package/data/harnesses/code/skills/design/data/design-tokens/meta/design.resolver.json +20 -0
  142. package/data/harnesses/code/skills/design/data/design-tokens/meta/design.tokens.json +977 -0
  143. package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.resolver.json +20 -0
  144. package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.tokens.json +950 -0
  145. package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.resolver.json +20 -0
  146. package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.tokens.json +976 -0
  147. package/data/harnesses/code/skills/design/data/design-tokens/miro/design.resolver.json +20 -0
  148. package/data/harnesses/code/skills/design/data/design-tokens/miro/design.tokens.json +979 -0
  149. package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.resolver.json +20 -0
  150. package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.tokens.json +955 -0
  151. package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.resolver.json +20 -0
  152. package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.tokens.json +958 -0
  153. package/data/harnesses/code/skills/design/data/design-tokens/notion/design.resolver.json +20 -0
  154. package/data/harnesses/code/skills/design/data/design-tokens/notion/design.tokens.json +953 -0
  155. package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.resolver.json +20 -0
  156. package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.tokens.json +904 -0
  157. package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.resolver.json +20 -0
  158. package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.tokens.json +957 -0
  159. package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.resolver.json +20 -0
  160. package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.tokens.json +945 -0
  161. package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.resolver.json +20 -0
  162. package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.tokens.json +960 -0
  163. package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.resolver.json +20 -0
  164. package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.tokens.json +953 -0
  165. package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.resolver.json +20 -0
  166. package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.tokens.json +955 -0
  167. package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.resolver.json +20 -0
  168. package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.tokens.json +958 -0
  169. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.resolver.json +23 -0
  170. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.dark.json +613 -0
  171. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.json +968 -0
  172. package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.resolver.json +20 -0
  173. package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.tokens.json +956 -0
  174. package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.resolver.json +20 -0
  175. package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.tokens.json +960 -0
  176. package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.resolver.json +20 -0
  177. package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.tokens.json +958 -0
  178. package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.resolver.json +20 -0
  179. package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.tokens.json +980 -0
  180. package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.resolver.json +20 -0
  181. package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.tokens.json +964 -0
  182. package/data/harnesses/code/skills/design/data/design-tokens/slack/design.resolver.json +20 -0
  183. package/data/harnesses/code/skills/design/data/design-tokens/slack/design.tokens.json +957 -0
  184. package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.resolver.json +20 -0
  185. package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.tokens.json +979 -0
  186. package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.resolver.json +20 -0
  187. package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.tokens.json +974 -0
  188. package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.resolver.json +20 -0
  189. package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.tokens.json +973 -0
  190. package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.resolver.json +20 -0
  191. package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.tokens.json +979 -0
  192. package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.resolver.json +20 -0
  193. package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.tokens.json +966 -0
  194. package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.resolver.json +20 -0
  195. package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.tokens.json +961 -0
  196. package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.resolver.json +20 -0
  197. package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.tokens.json +977 -0
  198. package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.resolver.json +20 -0
  199. package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.tokens.json +991 -0
  200. package/data/harnesses/code/skills/design/data/design-tokens/uber/design.resolver.json +20 -0
  201. package/data/harnesses/code/skills/design/data/design-tokens/uber/design.tokens.json +966 -0
  202. package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.resolver.json +20 -0
  203. package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.tokens.json +988 -0
  204. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.resolver.json +23 -0
  205. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.dark.json +602 -0
  206. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.json +974 -0
  207. package/data/harnesses/code/skills/design/data/design-tokens/warp/design.resolver.json +20 -0
  208. package/data/harnesses/code/skills/design/data/design-tokens/warp/design.tokens.json +979 -0
  209. package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.resolver.json +20 -0
  210. package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.tokens.json +960 -0
  211. package/data/harnesses/code/skills/design/data/design-tokens/wired/design.resolver.json +20 -0
  212. package/data/harnesses/code/skills/design/data/design-tokens/wired/design.tokens.json +968 -0
  213. package/data/harnesses/code/skills/design/data/design-tokens/wise/design.resolver.json +20 -0
  214. package/data/harnesses/code/skills/design/data/design-tokens/wise/design.tokens.json +965 -0
  215. package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.resolver.json +20 -0
  216. package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.tokens.json +988 -0
  217. package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.resolver.json +20 -0
  218. package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.tokens.json +978 -0
  219. package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +1 -1
  220. package/data/harnesses/code/skills/design/references/create.md +14 -9
  221. package/data/harnesses/code/skills/design/references/diagnosis.md +1 -1
  222. package/data/harnesses/code/skills/design/references/hard-rules.md +4 -4
  223. package/data/harnesses/code/skills/design/references/improve.md +11 -9
  224. package/data/harnesses/code/skills/design/references/introspect.md +1 -1
  225. package/data/harnesses/code/skills/design/references/personality.md +337 -413
  226. package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +1032 -0
  227. package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +596 -296
  228. package/data/harnesses/code/skills/design/scripts/{detector.mjs → lib/checks.mjs} +145 -140
  229. package/data/harnesses/code/skills/design/scripts/lib/golden.mjs +26 -0
  230. package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +105 -37
  231. package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +60 -73
  232. package/data/harnesses/code/skills/design/scripts/render-rung.mjs +1 -1
  233. package/data/harnesses/code/skills/design/scripts/scaffold.mjs +1 -1
  234. package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +205 -37
  235. package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +68 -0
  236. package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +314 -0
  237. package/data/harnesses/code/skills/documentation/SKILL.md +61 -17
  238. package/data/harnesses/code/skills/documentation/references/examples.md +41 -0
  239. package/data/harnesses/code/skills/documentation/references/style-guide.md +14 -9
  240. package/data/harnesses/code/skills/documentation/references/templates.md +306 -52
  241. package/data/harnesses/etna/CLAUDE.md +3 -3
  242. package/data/harnesses/etna/agents/brainstorm.md +1 -1
  243. package/data/harnesses/etna/agents/maintenance.md +8 -7
  244. package/data/harnesses/etna/harness.json +2 -2
  245. package/data/harnesses/etna/rules/general.md +2 -40
  246. package/data/harnesses/etna/rules/nomenclature.md +1 -8
  247. package/data/harnesses/etna/skills/brainstorm/README.md +4 -4
  248. package/data/harnesses/etna/skills/brainstorm/SKILL.md +5 -3
  249. package/data/harnesses/etna/skills/brainstorm/exit-artifacts.md +15 -11
  250. package/data/harnesses/etna/skills/brainstorm/templates/source-of-truth.md +5 -5
  251. package/data/harnesses/etna/skills/documentation/SKILL.md +61 -17
  252. package/data/harnesses/etna/skills/documentation/references/examples.md +41 -0
  253. package/data/harnesses/etna/skills/documentation/references/style-guide.md +14 -9
  254. package/data/harnesses/etna/skills/documentation/references/templates.md +306 -52
  255. package/data/harnesses/mobile/CLAUDE.md +3 -3
  256. package/data/harnesses/mobile/agents/brainstorm.md +1 -1
  257. package/data/harnesses/mobile/agents/maintenance.md +8 -7
  258. package/data/harnesses/mobile/harness.json +2 -2
  259. package/data/harnesses/mobile/rules/database.md +38 -0
  260. package/data/harnesses/mobile/rules/general.md +2 -40
  261. package/data/harnesses/mobile/rules/nomenclature.md +1 -8
  262. package/data/harnesses/mobile/rules/nustack.md +150 -0
  263. package/data/harnesses/mobile/skills/brainstorm/README.md +4 -4
  264. package/data/harnesses/mobile/skills/brainstorm/SKILL.md +5 -3
  265. package/data/harnesses/mobile/skills/brainstorm/exit-artifacts.md +15 -11
  266. package/data/harnesses/mobile/skills/brainstorm/templates/source-of-truth.md +5 -5
  267. package/data/harnesses/mobile/skills/documentation/SKILL.md +61 -17
  268. package/data/harnesses/mobile/skills/documentation/references/examples.md +41 -0
  269. package/data/harnesses/mobile/skills/documentation/references/style-guide.md +14 -9
  270. package/data/harnesses/mobile/skills/documentation/references/templates.md +306 -52
  271. package/package.json +1 -1
  272. package/data/harnesses/code/skills/design/scripts/hook-config.json +0 -11
@@ -8,12 +8,12 @@ sourced: 2026-07-04
8
8
  # Tesla — radical-subtraction minimalism, translated for operators
9
9
 
10
10
  Tesla's web design is radical subtraction: a white canvas, a single Electric Blue accent, a rich
11
- grayscale ink ramp, near-zero decoration, and a categorical geometry — **barely-rounded 4px corners**.
12
- This operator reading keeps the white-dominant palette, the one blue accent, the 4px radius character,
13
- the flat/shadowless depth, the two-weight (400 / 500) type discipline, the signature **zero
14
- letter-spacing**, and the color-only interaction feel. Left behind: full-viewport hero photography, 40px
15
- display type, whitespace-as-luxury rhythm, the frosted-glass nav, the carousel, the chatbot bar. Both
16
- machine blocks are fully valued; each judgment away from the brand is annotated `# derived:` where silent.
11
+ grayscale ink ramp, near-zero decoration, and a categorical geometry — **barely-rounded 4px
12
+ corners**. This operator reading keeps the white-dominant palette, the one blue accent, the 4px
13
+ radius character, the flat/shadowless depth, the two-weight (400 / 500) type discipline, the
14
+ signature **zero letter-spacing**, and the color-only interaction feel. Left behind: full-viewport
15
+ hero photography, 40px display type, whitespace-as-luxury rhythm, the frosted-glass nav, the
16
+ carousel, the chatbot bar.
17
17
 
18
18
  ## 1 Visual Theme
19
19
 
@@ -151,83 +151,3 @@ Directives the emitting agent follows verbatim:
151
151
  tempers Tesla's languid 0.33s to a still-smooth normal, parking 330ms for large surface changes.
152
152
  - Numeric columns `tabular-nums`, IDs / codes / timestamps `font-mono`; every workflow keyboard-complete
153
153
  with the blue `ring` focus outline always visible; stay flat, a whisper `sm` shadow only for a true overlay.
154
-
155
- ```yaml design-primitives
156
- radius: 4px # Tesla signature: barely-rounded 4px on all controls; scale still offers 12px for a large image-forward tile
157
- shadow-intensity: 0.1 # derived: Tesla is essentially shadowless (Level-3 hint rgba(0,0,0,0.05)); a whisper only lifts a true overlay
158
- border-weight: 1px
159
- density-gap: 1 # derived: standard tier; marketing whitespace-as-luxury stays behind, base multiplier held at 1
160
- density-inset: 1 # derived: standard operator inset; the generous gallery air stays behind
161
- font-sans: Universal Sans Text, Inter, system-ui, -apple-system, sans-serif # Universal Sans is Tesla's proprietary family; Inter is the closest open stand-in (geometric with humanist terminals)
162
- font-mono: JetBrains Mono, ui-monospace, SFMono-Regular, monospace # derived: Tesla ships no mono; operator-standard mono for IDs/codes/logs
163
- font-weight-normal: 400 # Tesla body weight (regular)
164
- font-weight-strong: 500 # Tesla heading/UI weight (medium) — the 500/400 pair is the whole type system; no bold, no light
165
- heading-tracking: 0 # Tesla signature: zero letter-spacing at every level; unlike most tech brands it takes no negative tracking
166
- duration-unit: 50ms # derived: corpus documents transition durations, not a base unit; functional operator base
167
- duration-fast: 100ms # derived: snappy color-only state change
168
- duration-normal: 200ms # derived: Tesla's smooth 0.33s marketing pace tempered to a still-relaxed operator normal; the color-only character is the carry
169
- duration-slow: 330ms # Tesla's documented universal 0.33s timing, kept as the slow tier for larger surface changes
170
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus's main transition curve is an unspecified "cubic-bezier"; standard functional ease (the documented text-link curve is preserved in the manifest)
171
- contrast-boost: 1 # derived: Tesla's clean minimal surfaces read as a grid without a boost; the light hairline is intentional
172
- icon-stroke: 1.5 # derived: Tesla's precise, understated aesthetic wants a refined thin stroke, one step under lucide's 2
173
- icon-size-base: 16px # derived: corpus silent; operator standard
174
- sidebar-width-expanded: 256px # derived: Tesla is a top-nav marketing site with no sidebar; 8px-rhythm operator shell
175
- sidebar-width-collapsed: 56px # derived: standard icon-rail width, on the 8px grid
176
- topbar-height: 56px # derived: Tesla's minimal floating nav → a thin recessive operator topbar
177
- side-panel-width: 440px # derived: no operator shell in corpus; 8px-rhythm detail panel
178
- side-panel-width-rich: 640px # derived: content-heavy detail panel on the 8px rhythm
179
- modal-width-max: 480px # derived: Tesla's minimal, confirmation-scale read (its only modal idiom is the region/cookie popup)
180
- form-max-width: 640px # derived: corpus silent; single-column form measure
181
- table-row-height: 40px # derived: corpus has no tables; Tesla's calm engineered chrome sits at the operator-standard 40px, on the 8px rhythm
182
- verbosity: compact # derived: Tesla's radical subtraction — minimal chrome, terse labels, UI that gets out of the way
183
- feedback: minimal # derived: Tesla's interactions are strictly color-only (no scale/translate); minimal zeroes the press-scale to honor that, ring stays visible
184
- density-tier: standard # derived: marketing whitespace-as-luxury stays behind; the engineered-uniform chrome carries as standard, neither cramped nor spacious
185
- product-traits: [inventory, configurator, orders, dashboard, automotive]
186
- ```
187
-
188
- ```yaml lever-manifest
189
- version: 1
190
- fonts: { sans: "Universal Sans Text, Inter, system-ui, -apple-system, sans-serif", mono: "JetBrains Mono, ui-monospace, SFMono-Regular, monospace" }
191
- color-tokens:
192
- light:
193
- background: "#ffffff"
194
- foreground: "#171a20"
195
- card: "#ffffff"
196
- card-foreground: "#171a20"
197
- muted: "#f4f4f4"
198
- muted-foreground: "#5c5e62"
199
- border: "#eeeeee"
200
- input: "#d0d1d2"
201
- ring: "#3e6ae1"
202
- primary: "#3e6ae1"
203
- primary-foreground: "#ffffff"
204
- accent: "#edf1fc" # derived: faint wash of Electric Blue for selection/hover; brand has no blue-tint surface token
205
- accent-foreground: "#3e6ae1"
206
- destructive: "#dc2626" # derived: Tesla's marketing site uses browser defaults for status; operator needs a real destructive red
207
- destructive-foreground: "#ffffff"
208
- success: "#16a34a" # derived: Tesla avoids semantic color; an engineered green for operator status only
209
- warning: "#d97706" # derived: Tesla avoids semantic color; an amber for operator status only
210
- popover: "#ffffff"
211
- popover-foreground: "#171a20"
212
- secondary: "#f4f4f4" # Light Ash — the subtle alternate surface as secondary-button fill
213
- secondary-foreground: "#393c41" # Graphite — Tesla's secondary-CTA text tone
214
- chart-1: "#3e6ae1" # Electric Blue — the anchor
215
- chart-2: "#171a20" # derived: Carbon Dark — monochrome-plus-one, so charts run blue + the grayscale ink ramp
216
- chart-3: "#393c41" # derived: Graphite
217
- chart-4: "#5c5e62" # derived: Pewter
218
- chart-5: "#8e8e8e" # derived: Silver Fog
219
- sidebar: "#f4f4f4" # derived: Tesla has no dark chrome; the Light Ash subtle surface serves as the recessive rail
220
- sidebar-foreground: "#171a20"
221
- sidebar-primary: "#3e6ae1"
222
- sidebar-primary-foreground: "#ffffff"
223
- sidebar-accent: "#edf1fc" # derived: faint Electric Blue wash for the active/hovered nav item
224
- sidebar-accent-foreground: "#3e6ae1"
225
- sidebar-border: "#eeeeee"
226
- sidebar-ring: "#3e6ae1"
227
- spacing-scale: [4, 8, 12, 16, 24, 32, 48, 64]
228
- radius-scale: [0, 4, 12, 9999]
229
- shadow-levels: [none, sm]
230
- motion: { durations: [100, 200, 330], easings: ["cubic-bezier(0.4,0,0.2,1)", "cubic-bezier(0.5,0,0,0.75)"] }
231
- icons: { family: lucide, stroke: 1.5 }
232
- accent-count: 1
233
- ```
@@ -7,16 +7,16 @@ sourced: 2026-07-04
7
7
 
8
8
  # The Verge — the operator reading
9
9
 
10
- The operator reading of The Verge's 2024 editorial system. The Verge is categorically dark — "there is
11
- no light mode; the dark canvas is the product" — so this entry earns the doctrine's dark exception: the
12
- near-black canvas fills the default-emitted theme, recorded plainly because the brand demands it. What
13
- carries onto internal tools (a content queue, a moderation dashboard, an activity log): the near-black
14
- canvas, the single acid-mint accent, the mono-uppercase label voice, the flat color-as-elevation depth,
15
- and the rounded-never-square character. What stays behind: the marketing shout — 60–107px Manuka hero
16
- display, the saturated rave-flyer story tiles, the FK Roman serif pulls, the 40px pill CTAs, the
17
- thin-weight "fashion whisper" eyebrows. The result is unmistakably The Verge — a developer-console feel
18
- with club-night color — but it reserves its one accent and earns its density; judgments away from the
19
- editorial surfaces are annotated `# derived:` where the corpus is silent.
10
+ The operator reading of The Verge's 2024 editorial system. The Verge is categorically dark — "there
11
+ is no light mode; the dark canvas is the product" — so this entry earns the doctrine's dark
12
+ exception: the near-black canvas fills the default-emitted theme, recorded plainly because the brand
13
+ demands it. What carries onto internal tools (a content queue, a moderation dashboard, an activity
14
+ log): the near-black canvas, the single acid-mint accent, the mono-uppercase label voice, the flat
15
+ color-as-elevation depth, and the rounded-never-square character. What stays behind: the marketing
16
+ shout — 60–107px Manuka hero display, the saturated rave-flyer story tiles, the FK Roman serif
17
+ pulls, the 40px pill CTAs, the thin-weight "fashion whisper" eyebrows. The result is unmistakably
18
+ The Verge — a developer-console feel with club-night color — but it reserves its one accent and
19
+ earns its density.
20
20
 
21
21
  ## 1 Visual Theme
22
22
 
@@ -31,9 +31,8 @@ the anchor surface is the black canvas beside a fractionally darker `sidebar`.
31
31
 
32
32
  ## 2 Color Roles
33
33
 
34
- The manifest carries hex (the corpus's native format) in the default-emitted theme, valued with the
35
- brand's dark palette. One accent: `primary` (mint) is the only chromatic hue that carries brand meaning;
36
- ultraviolet, yellow, pink, and electric blue live only in charts, and status hues speak status.
34
+ One accent: `primary` (mint) is the only chromatic hue that carries brand meaning; ultraviolet,
35
+ yellow, pink, and electric blue live only in charts, and status hues speak status.
37
36
 
38
37
  | Role | Value | Allowed where |
39
38
  | --- | --- | --- |
@@ -166,83 +165,3 @@ Directives the emitting agent follows verbatim:
166
165
  - Leave the marketing shout behind: the 60–107px Manuka hero, the saturated story tiles, the FK Roman
167
166
  serif pulls, the 40px pill CTAs, the 300-weight whisper eyebrows. What carries: the near-black palette,
168
167
  the single mint accent, the mono-uppercase voice, the rounded-never-square character, and flat depth.
169
-
170
- ```yaml design-primitives
171
- radius: 8px # derived: the Verge is emphatically never-square; controls stay softly rounded (scale offers 12/20px cards), the 24-40px marketing pill stays behind
172
- shadow-intensity: 0.2 # derived: militantly flat color-as-elevation brand; on a dark canvas a shadow barely registers, so overlays get only the faintest ring
173
- border-weight: 1px # corpus: 1px hairlines do the work shadows do elsewhere
174
- density-gap: 1
175
- density-inset: 1
176
- font-sans: PolySans, Space Grotesk, system-ui, sans-serif # PolySans is the UI workhorse; Space Grotesk is the corpus-named substitute
177
- font-mono: PolySans Mono, Space Mono, ui-monospace, monospace # PolySans Mono is the all-caps label voice; Space Mono substitute
178
- font-weight-normal: 400 # derived: brand body runs 500 for editorial reading; dense operator body reads cleaner at 400
179
- font-weight-strong: 700 # corpus: PolySans headlines run 700; the brand is punchy, not calm
180
- heading-tracking: 0 # derived: PolySans operator headings track ~0; the signature positive tracking lives on the all-caps mono labels, applied by hand
181
- duration-unit: 50ms # derived: operator base; corpus documents "ease" transitions but not a unit
182
- duration-fast: 100ms # derived
183
- duration-normal: 150ms # corpus: cards, tiles, and inputs transition at 150ms ease
184
- duration-slow: 250ms # derived
185
- ease-default: cubic-bezier(0.4,0,0.2,1) # corpus: transitions are "ease"; standard functional curve
186
- contrast-boost: 1 # derived: liberal hairlines plus the near-black surface ladder already carry the grid
187
- icon-stroke: 2 # derived: the Verge's bold, industrial character carries a full-weight 2px stroke, not the refined 1.75 default
188
- icon-size-base: 16px # derived: corpus silent on UI icons; operator standard
189
- sidebar-width-expanded: 248px # derived: corpus is an editorial homepage with no app shell; operator standard
190
- sidebar-width-collapsed: 56px # derived: no shell in corpus; operator standard icon rail
191
- topbar-height: 56px # derived: corpus top nav is "thin"; operator standard with room for the bold wordmark
192
- side-panel-width: 420px # derived: no shell in corpus; operator standard
193
- side-panel-width-rich: 640px # derived: content-heavy detail width
194
- modal-width-max: 560px # derived: confirmations only
195
- form-max-width: 640px # derived: corpus caps content at ~1280px; operator forms cap tighter
196
- table-row-height: 44px # derived: the brand's paced whitespace → rows breathe a touch over the dense 40px default
197
- verbosity: default # derived: the mono-label voice likes visible labels, kickers, and tags
198
- feedback: subtle
199
- density-tier: standard # derived: an editorial-paced brand read to an honest operator tier; the console density is available per-archetype
200
- product-traits: [log-stream, dashboard, cms, content-queue, admin]
201
- ```
202
-
203
- ```yaml lever-manifest
204
- version: 1
205
- fonts: { sans: "PolySans, Space Grotesk, system-ui, sans-serif", mono: "PolySans Mono, Space Mono, ui-monospace, monospace" }
206
- color-tokens:
207
- light:
208
- background: "#131313" # Canvas Black — the categorically-dark canvas fills the default-emitted theme slot
209
- foreground: "#ffffff" # Hazard White
210
- card: "#1a1a1a" # derived: a faint step off canvas so multi-card surfaces read; border still carries
211
- card-foreground: "#ffffff"
212
- muted: "#242424" # derived: subtle fill / hover, between card and slate
213
- muted-foreground: "#949494" # Secondary Text
214
- border: "#313131" # Image Frame hairline — white/mint reserved for emphasis
215
- input: "#313131"
216
- ring: "#1eaedb" # Focus Cyan — the brand's dedicated keyboard-focus hue
217
- primary: "#3cffd0" # Jelly Mint — the one accent
218
- primary-foreground: "#000000" # Absolute Black — the only place black appears
219
- accent: "#2d2d2d" # Surface Slate — neutral selection tint, never a mint wash
220
- accent-foreground: "#ffffff"
221
- destructive: "#ff3b5c" # derived: brand has no red; a hazard-register red-pink so destructive reads as danger (corpus error-purple handed to charts)
222
- destructive-foreground: "#ffffff"
223
- success: "#22c55e" # derived: brand has no green; a clear green distinct from the mint-cyan primary
224
- warning: "#ffd23c" # derived: echoes the brand's yellow story tile
225
- popover: "#1a1a1a"
226
- popover-foreground: "#ffffff"
227
- secondary: "#2d2d2d" # Surface Slate — secondary button fill
228
- secondary-foreground: "#e9e9e9" # Muted Text
229
- chart-1: "#3cffd0" # mint
230
- chart-2: "#5200ff" # Verge Ultraviolet — a brand hazard, chart-only here
231
- chart-3: "#ffd23c" # yellow tile hue
232
- chart-4: "#ff4da6" # derived: pink tile hue
233
- chart-5: "#1eaedb" # electric blue / focus cyan doubling as a chart hue
234
- sidebar: "#0f0f0f" # derived: a hair darker than canvas so the nav reads as chrome
235
- sidebar-foreground: "#ffffff"
236
- sidebar-primary: "#3cffd0" # mint active nav
237
- sidebar-primary-foreground: "#000000"
238
- sidebar-accent: "#2d2d2d"
239
- sidebar-accent-foreground: "#ffffff"
240
- sidebar-border: "#313131"
241
- sidebar-ring: "#1eaedb"
242
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
243
- radius-scale: [2, 4, 8, 12, 20, 9999]
244
- shadow-levels: [none, sm]
245
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
246
- icons: { family: lucide, stroke: 2 }
247
- accent-count: 1
248
- ```
@@ -7,15 +7,15 @@ sourced: 2026-07-04
7
7
 
8
8
  # Together AI — the white-band operator reading
9
9
 
10
- Together AI's surface alternates two registers: near-black hero bands carrying a single piece of brand
11
- chrome — a three-color orange-magenta-periwinkle gradient ribbon — and bright white technical bands where
12
- the real content lives (pricing tables, docs, model rows). This entry is the *operator* reading: it lives
13
- in the **white technical band**, carried onto a CRM, a queue, or a dashboard. What carries: the white
14
- canvas, stark black ink and black CTA, the uppercase mono-caps eyebrow/label voice, hairline-led flatness,
15
- the tight 4px radius, and a near-black nav rail — the brand's dark nav made permanent. What stays behind:
16
- near-black content bands, the gradient ribbon, hero-scale display (64px), the giant `together.ai` wordmark
17
- banner, the mint/white hero pills, and the dual-surface alternation. The gradient's colors survive only in
18
- data viz. Both machine blocks are fully valued; judgments where the corpus is silent are annotated `# derived:`.
10
+ Together AI's surface alternates two registers: near-black hero bands carrying a single piece of
11
+ brand chrome — a three-color orange-magenta-periwinkle gradient ribbon — and bright white technical
12
+ bands where the real content lives (pricing tables, docs, model rows). This entry is the *operator*
13
+ reading: it lives in the **white technical band**, carried onto a CRM, a queue, or a dashboard. What
14
+ carries: the white canvas, stark black ink and black CTA, the uppercase mono-caps eyebrow/label
15
+ voice, hairline-led flatness, the tight 4px radius, and a near-black nav rail — the brand's dark nav
16
+ made permanent. What stays behind: near-black content bands, the gradient ribbon, hero-scale display
17
+ (64px), the giant `together.ai` wordmark banner, the mint/white hero pills, and the dual-surface
18
+ alternation. The gradient's colors survive only in data viz.
19
19
 
20
20
  ## 1 Visual Theme
21
21
 
@@ -31,8 +31,8 @@ archetype; the brand's pricing tables read like a sheet.
31
31
 
32
32
  ## 2 Color Roles
33
33
 
34
- Light values first; the manifest carries the exact hex (the corpus's native format). One chromatic accent —
35
- periwinkle-indigo carries interactive meaning; status hues (all derived — the brand documents none) speak only status.
34
+ One chromatic accent — periwinkle-indigo carries interactive meaning; status hues (all derived — the
35
+ brand documents none) speak only status.
36
36
 
37
37
  | Role | Value | Allowed where |
38
38
  | --- | --- | --- |
@@ -138,83 +138,3 @@ Directives the emitting agent follows verbatim:
138
138
  - Every numeric column is `tabular-nums`; every ID, code, model slug, and timestamp is `font-mono`. Every workflow completes from the keyboard; the periwinkle `ring` focus outline is always visible.
139
139
  - Stay flat — hairline and surface polarity before shadow; reach past a hairline only for a real overlay.
140
140
  - Leave the marketing furniture behind: near-black content bands, the gradient ribbon, the 64px hero display, the wordmark banner, the mint/white hero pills. The gradient's colors return only in charts.
141
-
142
- ```yaml design-primitives
143
- radius: 4px # corpus: the brand's canonical card/button/table radius (rounded.sm 4px); the 9999 pill stays on badges/the chat orb
144
- shadow-intensity: 0.3 # derived: elevation is hairline + surface polarity + the dark rail; the one soft drop is navy-tinted (brand rgba(1,1,32,0.1))
145
- border-weight: 1px
146
- density-gap: 1
147
- density-inset: 1
148
- font-sans: The Future, Inter, "Helvetica Neue", Arial, sans-serif # corpus: custom geometric display sans (The Future) for headings and body; Inter is the corpus-named substitute
149
- font-mono: PP Neue Montreal Mono, "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace # corpus: uppercase mono-caps face for every eyebrow/label/button/header — the brand signature; JetBrains Mono is the corpus-named substitute
150
- font-weight-normal: 400 # corpus: body weight 400
151
- font-weight-strong: 500 # corpus: the face never appears above weight 500 (never bold 700)
152
- heading-tracking: -0.02em # corpus: tight negative display tracking (-1.92px@64px, -0.16px@16px) preserved at operator heading scale
153
- duration-unit: 50ms # derived: corpus documents no motion; functional operator base
154
- duration-fast: 100ms # derived: corpus silent on motion
155
- duration-normal: 150ms # derived: corpus silent on motion
156
- duration-slow: 250ms # derived: corpus silent on motion
157
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
158
- contrast-boost: 1 # derived: stark #000 ink is already maximal; the hairline is intentionally faint per brand
159
- icon-stroke: 1.75 # derived: corpus uses SVG logos/illustration, no icon set; 1.75 suits the tight geometric character
160
- icon-size-base: 16px # derived: corpus silent on icon size; operator standard
161
- sidebar-width-expanded: 248px # derived: corpus has no sidebar (marketing top-nav); operator shell default
162
- sidebar-width-collapsed: 56px # derived: operator icon-rail standard
163
- topbar-height: 56px # derived: from the brand nav-bar rhythm (16px vertical padding on body-md)
164
- side-panel-width: 420px # derived: corpus has no shell; standard operator detail panel
165
- side-panel-width-rich: 640px # derived: content-heavy detail panel
166
- modal-width-max: 560px # derived: corpus modals lean on a tinted scrim, not shadow; operator confirmation cap
167
- form-max-width: 640px # derived: corpus silent on shell; operator form column
168
- table-row-height: 40px # corpus: pricing tables "read more like a sheet" — tight 12px-vertical rows carried
169
- verbosity: default
170
- feedback: minimal # derived: the stark black/white, mono-caps, flat register wants terse, engineered feedback, not soft ambient motion
171
- density-tier: standard # derived: white technical bands run sheet-dense; a general operator default holds standard and steps denser per archetype
172
- product-traits: [ai-platform, dev-tools, dashboard, api-console]
173
- ```
174
-
175
- ```yaml lever-manifest
176
- version: 1
177
- fonts: { sans: "The Future, Inter, \"Helvetica Neue\", Arial, sans-serif", mono: "PP Neue Montreal Mono, \"JetBrains Mono\", ui-monospace, \"SF Mono\", Menlo, monospace" }
178
- color-tokens:
179
- light:
180
- background: "#ffffff"
181
- foreground: "#000000"
182
- card: "#ffffff"
183
- card-foreground: "#000000"
184
- muted: "#f5f5f5" # derived: a faint neutral for hover rows, lighter than the grid hairline
185
- muted-foreground: "#666666" # derived: brand secondary-text gray #999999 darkened for legible operator metadata (AA)
186
- border: "#e6e6e6" # derived: brand card/input hairline rgba(0,0,0,0.08) over white, firmed a step for grid legibility
187
- input: "#e6e6e6"
188
- ring: "#4b44dd" # derived: brand periwinkle gradient-leg #bdbbff darkened to a legible interactive indigo — the single accent
189
- primary: "#000000" # corpus: the black pill CTA carried intact
190
- primary-foreground: "#ffffff"
191
- accent: "#eeedfd" # derived: pale wash of the periwinkle accent for selected/hover rows and nav
192
- accent-foreground: "#4b44dd" # derived: darkened brand periwinkle — links and selection detail
193
- destructive: "#dc2626" # derived: corpus documents no error palette; framework red
194
- destructive-foreground: "#ffffff"
195
- success: "#16a34a" # derived: corpus documents no success palette; framework green
196
- warning: "#d97706" # derived: corpus documents no warning palette; framework amber
197
- popover: "#ffffff"
198
- popover-foreground: "#000000"
199
- secondary: "#ebebeb" # corpus: the brand's single soft surface (canvas-soft #ebebeb) — table-header rails, toggle rails, secondary buttons
200
- secondary-foreground: "#000000"
201
- chart-1: "#4b44dd" # accent periwinkle-indigo — primary data series
202
- chart-2: "#ef2cc1" # corpus: brand gradient magenta leg
203
- chart-3: "#fc4c02" # corpus: brand gradient orange leg
204
- chart-4: "#12a3ad" # derived: brand mint #c8f6f9 deepened to a legible cyan data series
205
- chart-5: "#666666" # derived: neutral gray series
206
- sidebar: "#010120" # corpus: the brand's near-black nav color (canvas-dark) carried onto the persistent rail
207
- sidebar-foreground: "#ffffff" # corpus: on-dark text is white
208
- sidebar-primary: "#4b44dd" # derived: the accent marks the active nav item on the dark rail (brand's black indicator is invisible on dark)
209
- sidebar-primary-foreground: "#ffffff"
210
- sidebar-accent: "#26263a" # corpus: the brand's on-dark hairline tone (surface-dark-soft family) — hover fill on the dark rail
211
- sidebar-accent-foreground: "#ffffff"
212
- sidebar-border: "#26263a" # corpus: on-dark hairline divider within the rail
213
- sidebar-ring: "#4b44dd" # derived: the accent as focus outline on the dark rail
214
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 80]
215
- radius-scale: [0, 4, 8, 9999]
216
- shadow-levels: [none, sm, md]
217
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
218
- icons: { family: lucide, stroke: 1.75 }
219
- accent-count: 1
220
- ```
@@ -7,12 +7,12 @@ sourced: 2026-07-04
7
7
 
8
8
  # Uber — the black-and-white super-app operator design
9
9
 
10
- The operator reading of Uber's monochrome web brand. The marketing theatre stays behind: hero display
11
- type (52 / 36px), the editorial 4:3 illustrations, the ride-request hero card, and the alternating
12
- white-then-black band rhythm. What carries is the chassis underneath — a black-and-white duet where pure
13
- black `primary` (`#000000`) does every conversion job, the pill on every interactive control, a flat
14
- no-shadow-by-default discipline, the neutral-tracked geometric sans voice, and the polarity-flip as the
15
- depth cue. Both machine blocks are fully valued; judgment past the corpus is annotated `# derived:`.
10
+ The operator reading of Uber's monochrome web brand. The marketing theatre stays behind: hero
11
+ display type (52 / 36px), the editorial 4:3 illustrations, the ride-request hero card, and the
12
+ alternating white-then-black band rhythm. What carries is the chassis underneath — a black-and-white
13
+ duet where pure black `primary` (`#000000`) does every conversion job, the pill on every interactive
14
+ control, a flat no-shadow-by-default discipline, the neutral-tracked geometric sans voice, and the
15
+ polarity-flip as the depth cue.
16
16
 
17
17
  ## 1 Visual Theme
18
18
 
@@ -27,8 +27,8 @@ shadow. The anchor surface is a white canvas beside a black `sidebar` — the sh
27
27
 
28
28
  ## 2 Color Roles
29
29
 
30
- Light values (the manifest carries hex — the corpus's native format). One accent: black `primary` is
31
- the only value that carries meaning; the status hues are derived and speak only status.
30
+ Light values. One accent: black `primary` is the only value that carries meaning; the status hues
31
+ are derived and speak only status.
32
32
 
33
33
  | Role | Value | Allowed where |
34
34
  | --- | --- | --- |
@@ -138,83 +138,3 @@ The operator sweep is 375 / 768 / 1024 / 1440.
138
138
  - Pill the interactive controls; inputs take the soft rect; keep the `sidebar` black with white actives.
139
139
  Every numeric column is `tabular-nums`, every ID / code / timestamp `font-mono`, the black `ring` always visible.
140
140
  - Stay flat — hairline and polarity-flip before shadow; past a hairline only for a real overlay.
141
-
142
- ```yaml design-primitives
143
- radius: 12px # derived: corpus card is 16px (rounded.xl); base 12px yields the 16px card at xl and the ~8px input at sm — the pill 9999 (the signature interactive shape) stays in-scale, applied per-control
144
- shadow-intensity: 0.5 # derived: corpus default is Level 0 flat; overlays carry a ~0.12–0.16 alpha drop — 0.5 lifts only true overlays, chrome stays flat
145
- border-weight: 1px
146
- density-gap: 1
147
- density-inset: 1
148
- font-sans: Inter, system-ui, "Helvetica Neue", Arial, sans-serif # derived: UberMove/UberMoveText are proprietary; corpus names Inter as the closest substitute (font-feature-settings "ss01" approximates UberMove's geometric alternates)
149
- font-mono: Geist Mono, ui-monospace, SFMono-Regular, monospace # derived: corpus carries no mono; Geist Mono chosen as the sibling of the corpus-named Geist substitute
150
- font-weight-normal: 400
151
- font-weight-strong: 600 # derived: corpus display is weight 700 across the ramp; the operator reading pulls headings to 600 (the hero 700 stays behind with the display sizes)
152
- heading-tracking: 0em # corpus: Uber never letter-spaces the display face — neutral tracking is a stated brand invariant
153
- duration-unit: 50ms # derived: corpus is silent on motion; operator-standard functional base
154
- duration-fast: 100ms # derived: corpus silent on motion
155
- duration-normal: 150ms # derived: corpus silent on motion
156
- duration-slow: 200ms # derived: corpus silent; kept crisp, not cinematic
157
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
158
- contrast-boost: 1 # derived: the pressed-gray hairlines read as a grid without boosting
159
- icon-stroke: 1.75 # derived: corpus specifies no stroke; a refined 1.75 suits the clean geometric system
160
- icon-size-base: 16px # derived: corpus silent; sits with the 15px body
161
- sidebar-width-expanded: 248px # derived: corpus has no operator shell; standard nav rail
162
- sidebar-width-collapsed: 56px # derived: standard icon rail
163
- topbar-height: 56px # derived: corpus nav padding (16/32); operator topbar at 56px
164
- side-panel-width: 440px # derived: corpus has no shell; standard detail panel
165
- side-panel-width-rich: 640px # derived: content-heavy detail
166
- modal-width-max: 560px # derived: confirmation-dialog cap
167
- form-max-width: 640px # derived: readable form column (corpus's 490px ride-request hero card stays behind)
168
- table-row-height: 44px # derived: corpus data-cell padding (12/16) → a ~44px row at standard density
169
- verbosity: default
170
- feedback: subtle
171
- density-tier: standard # derived: Uber's marketing is generous but not airy; an honest operator standard, stepped per archetype
172
- product-traits: [dispatch, logistics, operations, marketplace, dashboard]
173
- ```
174
-
175
- ```yaml lever-manifest
176
- version: 1
177
- fonts: { sans: "Inter, system-ui, 'Helvetica Neue', Arial, sans-serif", mono: "Geist Mono, ui-monospace, SFMono-Regular, monospace" }
178
- color-tokens:
179
- light:
180
- background: "#ffffff"
181
- foreground: "#000000"
182
- card: "#ffffff"
183
- card-foreground: "#000000"
184
- muted: "#efefef"
185
- muted-foreground: "#5e5e5e"
186
- border: "#e2e2e2"
187
- input: "#e2e2e2"
188
- ring: "#000000"
189
- primary: "#000000"
190
- primary-foreground: "#ffffff"
191
- accent: "#e2e2e2"
192
- accent-foreground: "#000000"
193
- destructive: "#d93025" # derived: corpus documents no error hue (marketing is monochrome); a restrained red for the status triad, chosen not to read as a second brand accent
194
- destructive-foreground: "#ffffff"
195
- success: "#157347" # derived: corpus has no status palette; restrained green for status only
196
- warning: "#b25000" # derived: corpus has no status palette; restrained amber for status only
197
- popover: "#ffffff"
198
- popover-foreground: "#000000"
199
- secondary: "#efefef"
200
- secondary-foreground: "#000000"
201
- chart-1: "#000000" # derived: monochrome brand → grayscale-forward chart ramp; categorical differentiation carried by pattern/label, not a second hue
202
- chart-2: "#4b4b4b" # corpus: hairline-mid
203
- chart-3: "#8a8a8a" # derived: mid-gray fill between hairline-mid and mute for series spread
204
- chart-4: "#afafaf" # corpus: mute
205
- chart-5: "#d4d4d4" # derived: light-gray ramp tail
206
- sidebar: "#000000" # derived: the shell wears Uber's polarity-flip — the sidebar is the black band (corpus footer/band fill #000000)
207
- sidebar-foreground: "#ffffff"
208
- sidebar-primary: "#ffffff" # derived: the active nav mark on the black band is white (black would vanish)
209
- sidebar-primary-foreground: "#000000"
210
- sidebar-accent: "#282828" # corpus: black-elevated — Uber's documented dark-band hover
211
- sidebar-accent-foreground: "#ffffff"
212
- sidebar-border: "#282828" # derived: the hairline on the black band (black-elevated tone)
213
- sidebar-ring: "#ffffff"
214
- spacing-scale: [4, 6, 8, 12, 16, 20, 24, 32, 48]
215
- radius-scale: [0, 8, 12, 16, 9999]
216
- shadow-levels: [none, sm, md]
217
- motion: { durations: [100, 150, 200], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
218
- icons: { family: lucide, stroke: 1.75 }
219
- accent-count: 1
220
- ```
@@ -26,8 +26,8 @@ is a white canvas beside a faintly-tinted `sidebar`.
26
26
 
27
27
  ## 2 Color Roles
28
28
 
29
- Light values (the manifest carries hex — the corpus's native format). The identity is monochrome —
30
- ink + a deliberate gray ramp; the one chromatic accent is the interaction blue, and status speaks status.
29
+ Light values. The identity is monochrome — ink + a deliberate gray ramp; the one chromatic accent is
30
+ the interaction blue, and status speaks status.
31
31
 
32
32
  | Role | Value | Allowed where |
33
33
  | --- | --- | --- |
@@ -138,83 +138,3 @@ Directives the emitting agent follows verbatim:
138
138
  for a real overlay. Every workflow completes from the keyboard; the blue `ring` is always visible.
139
139
  - Leave marketing behind entirely: the mesh gradient, the 100px pill CTA, the 48px hero display, the
140
140
  dark bands, and the 96 / 128 / 192px section rhythm.
141
-
142
- ```yaml design-primitives
143
- radius: 6px # corpus: --geist-radius (6px) is the in-app base for buttons/inputs/menus; the 100px marketing pill stays behind
144
- shadow-intensity: 0.3 # derived: corpus elevation is exceptionally subtle — stacked small offsets at 4–12% black + an inset hairline ring
145
- border-weight: 1px
146
- density-gap: 1
147
- density-inset: 1
148
- font-sans: Geist, Inter, system-ui, -apple-system, sans-serif # corpus: Geist is the brand face; Inter is the named open substitute
149
- font-mono: Geist Mono, JetBrains Mono, ui-monospace, SFMono-Regular, monospace # corpus: Geist Mono for technical layer; JetBrains Mono the named substitute
150
- font-weight-normal: 400
151
- font-weight-strong: 600 # corpus: weight 600 is the display ceiling; the brand never reaches 700
152
- heading-tracking: -0.03em # corpus: aggressive negative display tracking (-0.04em at 24px display-md) scaled to operator headings; the -0.05em hero tracking stays behind
153
- duration-unit: 50ms # derived: corpus silent on motion; snappy operator base — Vercel's UI reads crisp and fast
154
- duration-fast: 100ms # derived: corpus silent on motion
155
- duration-normal: 150ms # derived: functional transition default
156
- duration-slow: 200ms # derived: kept short — crisp, not cinematic
157
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on easing; standard crisp ease
158
- contrast-boost: 1 # derived: the deliberate gray ramp gives clear hairlines; no boost needed
159
- icon-stroke: 1.5 # derived: the Geist icon set is fine and geometric; below lucide's default 2 for a refined stroke
160
- icon-size-base: 16px
161
- sidebar-width-expanded: 256px # derived: corpus has no operator shell; Vercel dashboard left-nav proportion
162
- sidebar-width-collapsed: 56px # derived: icon-rail width
163
- topbar-height: 64px # corpus: nav-bar height (--header-height) is 64px
164
- side-panel-width: 440px # derived: corpus has no operator shell; detail-panel proportion
165
- side-panel-width-rich: 640px # derived: content-heavy detail width (corpus content column family)
166
- modal-width-max: 560px # derived: confirmation-dialog cap
167
- form-max-width: 640px # derived: readable single-column form width
168
- table-row-height: 44px # derived: corpus field height is 40px; rows breathe a hair over the dense default at standard density
169
- verbosity: default # derived: Vercel's product chrome is clean but labelled, not terse-expert
170
- feedback: subtle # derived: understated, functional feedback matches the calm system
171
- density-tier: standard # derived: Vercel's product reads clean and engineered, not dense-technical; a standard operator tier
172
- product-traits: [dev-tools, deployment-dashboard, platform-console, admin]
173
- ```
174
-
175
- ```yaml lever-manifest
176
- version: 1
177
- fonts: { sans: "Geist, Inter, system-ui, -apple-system, sans-serif", mono: "Geist Mono, JetBrains Mono, ui-monospace, SFMono-Regular, monospace" }
178
- color-tokens:
179
- light:
180
- background: "#fafafa" # corpus canvas-soft — the 98% white page body
181
- foreground: "#171717" # corpus ink
182
- card: "#ffffff" # corpus canvas — pure white cards
183
- card-foreground: "#171717"
184
- muted: "#f5f5f5" # corpus canvas-soft-2 — inset / hover surface
185
- muted-foreground: "#666666" # derived: Vercel gray ramp mid-tone (between body #4d4d4d and mute #888888) for the label/caption role, readable on white
186
- border: "#ebebeb" # corpus hairline
187
- input: "#ebebeb" # corpus hairline — form-input border
188
- ring: "#0070f3" # corpus link/interactive blue; Vercel's real focus ring is blue, and the achromatic ink would vanish on the black button
189
- primary: "#171717" # corpus ink — the single black-button CTA
190
- primary-foreground: "#ffffff" # corpus on-primary
191
- accent: "#f5f5f5" # corpus canvas-soft-2 — neutral selected/hover wash; monochrome selection is the signature
192
- accent-foreground: "#171717"
193
- destructive: "#ee0000" # corpus error
194
- destructive-foreground: "#ffffff" # corpus on-primary (white on the red)
195
- success: "#16a34a" # derived: Vercel's full system scale includes a green (corpus notes the 100–1000 green ramp); success reads green so status stays distinct from the interaction blue #0070f3
196
- warning: "#f5a623" # corpus warning amber
197
- popover: "#ffffff" # corpus canvas — crisp white overlay lifted by the inset hairline + soft stacked shadow
198
- popover-foreground: "#171717"
199
- secondary: "#f5f5f5" # corpus canvas-soft-2 — secondary button / soft surface fill
200
- secondary-foreground: "#171717"
201
- chart-1: "#0070f3" # corpus link blue
202
- chart-2: "#7928ca" # corpus violet
203
- chart-3: "#50e3c2" # corpus cyan
204
- chart-4: "#f5a623" # corpus amber
205
- chart-5: "#ff0080" # corpus highlight pink — the brand accent hues repurposed as categorical series
206
- sidebar: "#fafafa" # corpus canvas-soft — a faint tint distinct from the white content canvas, a hairline above the page
207
- sidebar-foreground: "#171717"
208
- sidebar-primary: "#171717" # corpus: app-shell active nav uses the ink primary as the indicator
209
- sidebar-primary-foreground: "#ffffff"
210
- sidebar-accent: "#f5f5f5" # corpus canvas-soft-2 — selected nav-row wash
211
- sidebar-accent-foreground: "#171717"
212
- sidebar-border: "#ebebeb" # corpus hairline
213
- sidebar-ring: "#0070f3"
214
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
215
- radius-scale: [0, 4, 6, 8, 12, 16, 9999]
216
- shadow-levels: [none, sm, md]
217
- motion: { durations: [100, 150, 200], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
218
- icons: { family: lucide, stroke: 1.5 }
219
- accent-count: 1
220
- ```