@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
@@ -28,8 +28,8 @@ here, so rows run tall and sections breathe.
28
28
 
29
29
  ## 2 Color Roles
30
30
 
31
- Light values first; the manifest carries the exact hex. One chromatic accent — action-blue is the only
32
- hue that carries interactive meaning; status hues speak only status.
31
+ One chromatic accent — action-blue is the only hue that carries interactive meaning; status hues
32
+ speak only status.
33
33
 
34
34
  | Role | Value | Allowed where |
35
35
  | --- | --- | --- |
@@ -145,83 +145,3 @@ Directives the emitting agent follows verbatim:
145
145
  keyboard, the focus-blue `ring` always visible.
146
146
  - Leave behind: hero/product display type (96/72/60px), pill CTAs, coral taxonomy chips, and the
147
147
  deep-green/navy marketing media bands — brand-decorative, not operator chrome.
148
-
149
- ```yaml design-primitives
150
- radius: 8px # derived: brand card/dialog radius (sm); honors the rounded-but-not-pill character; the 32px pill stays marketing-only
151
- shadow-intensity: 0.3 # derived: brand is emphatically flat and border-led ("do not add heavy drop shadows"); shadow only lifts true overlays
152
- border-weight: 1px
153
- density-gap: 1.1 # derived: spacious tier — whitespace-as-trust editorial character opens the spacing one step
154
- density-inset: 1.1 # derived: matches the spacious density-gap for coherent component insets
155
- font-sans: Unica77 Cohere Web, Inter, ui-sans-serif, system-ui, sans-serif
156
- font-mono: CohereMono, ui-monospace, SFMono-Regular, Menlo, monospace # derived: corpus's Arial fallback for CohereMono is unfit for tabular columns; override to a real monospace stack
157
- font-weight-normal: 400
158
- font-weight-strong: 500 # derived: brand "avoids heavy bold weights" — hierarchy is size/tracking/contrast; button weight is 500
159
- heading-tracking: -0.02em # derived: brand display uses tight negative tracking (-0.32 to -1.2px); preserved as carved character at operator sizes
160
- duration-unit: 50ms # derived: corpus documents no motion; functional operator base
161
- duration-fast: 120ms # derived: corpus silent; calm-editorial functional tempo
162
- duration-normal: 200ms # derived: corpus silent; unhurried but not sluggish
163
- duration-slow: 300ms # derived: corpus silent; overlay/panel transition
164
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
165
- contrast-boost: 1 # derived: hairlines and surface alternation already carry the grid
166
- icon-stroke: 1.5 # derived: brand uses thin-line geometric illustrations — a refined thin operator stroke
167
- icon-size-base: 16px # derived: corpus silent on icon size; operator default
168
- sidebar-width-expanded: 260px # derived: no brand sidebar (top nav); slightly wide to honor editorial breathing
169
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
170
- topbar-height: 56px # derived: corpus silent; a touch taller for the editorial calm
171
- side-panel-width: 420px # derived: corpus silent; standard operator detail panel
172
- side-panel-width-rich: 640px # derived: content-heavy detail panel
173
- modal-width-max: 560px # derived: corpus silent; operator confirmation cap
174
- form-max-width: 640px # derived: brand forms are rounded white cards with two-column rows
175
- table-row-height: 48px # derived: brand research rows are "tall, white, border-driven" — taller than a standard operator row
176
- verbosity: default
177
- feedback: subtle # derived: brand is "intentionally quiet" and measured
178
- density-tier: spacious # derived: whitespace is a trust signal here; dramatic vertical breathing room
179
- product-traits: [ai-platform, enterprise, agent-console, dashboard, research]
180
- ```
181
-
182
- ```yaml lever-manifest
183
- version: 1
184
- fonts: { sans: "Unica77 Cohere Web, Inter, ui-sans-serif, system-ui, sans-serif", mono: "CohereMono, ui-monospace, SFMono-Regular, Menlo, monospace" }
185
- color-tokens:
186
- light:
187
- background: "#ffffff"
188
- foreground: "#212121"
189
- card: "#ffffff"
190
- card-foreground: "#212121"
191
- muted: "#f2f2f2"
192
- muted-foreground: "#616161"
193
- border: "#d9d9dd"
194
- input: "#d9d9dd"
195
- ring: "#4c6ee6"
196
- primary: "#17171c"
197
- primary-foreground: "#ffffff"
198
- accent: "#f1f5ff"
199
- accent-foreground: "#1863dc"
200
- destructive: "#b30000"
201
- destructive-foreground: "#ffffff"
202
- success: "#047857" # derived: deep enterprise green #003c33 lightened to a legible status emerald
203
- warning: "#c2410c" # derived: brand coral #ff7759 deepened toward a legible warm status, distinct from error red
204
- popover: "#ffffff"
205
- popover-foreground: "#212121"
206
- secondary: "#eeece7"
207
- secondary-foreground: "#212121"
208
- chart-1: "#1863dc" # derived: action blue — primary data series
209
- chart-2: "#003c33" # derived: deep enterprise green
210
- chart-3: "#ff7759" # derived: coral
211
- chart-4: "#9b60aa" # derived: form-focus violet
212
- chart-5: "#75758a" # derived: slate — neutral-cool fifth series
213
- sidebar: "#f7f6f3" # derived: soft-stone diluted toward white — a faint warm mineral rail
214
- sidebar-foreground: "#212121"
215
- sidebar-primary: "#17171c"
216
- sidebar-primary-foreground: "#ffffff"
217
- sidebar-accent: "#f1f5ff"
218
- sidebar-accent-foreground: "#1863dc"
219
- sidebar-border: "#d9d9dd"
220
- sidebar-ring: "#4c6ee6"
221
- spacing-scale: [2, 6, 8, 12, 16, 24, 32, 40, 56, 80]
222
- radius-scale: [0, 4, 8, 16, 22, 9999]
223
- shadow-levels: [none, sm, md]
224
- motion: { durations: [120, 200, 300], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
225
- icons: { family: lucide, stroke: 1.5 }
226
- accent-count: 1
227
- ```
@@ -7,15 +7,14 @@ sourced: 2026-07-04
7
7
 
8
8
  # Coinbase — the operator reading
9
9
 
10
- The institutional-calm reading of Coinbase's brand — a quietly-confident financial-services look that
11
- happens to trade crypto. Coinbase's own surfaces are marketing-editorial: an 80px hero display,
12
- full-bleed near-black heroes carrying floating product-UI mockup cards, a white/gray/dark band rotation
13
- at a 96px rhythm. This entry keeps what survives at operator scale — the pure-white canvas, the single
14
- scarce Coinbase Blue accent, the cool near-black ink, the rounded geometry, the editorial-calm type
15
- voice — and leaves the heroes, hero display, mockup stacks, and 96px rhythm behind. Where a fellow
16
- exchange (Binance) runs a dense trading terminal, Coinbase reads calmer — its density lives behind login
17
- walls, so the operator tier stays an honest `standard`. Both machine blocks are fully valued; each
18
- judgment away from the marketing surfaces is annotated `# derived:` where the corpus is silent.
10
+ The institutional-calm reading of Coinbase's brand — a quietly-confident financial-services look
11
+ that happens to trade crypto. Coinbase's own surfaces are marketing-editorial: an 80px hero display,
12
+ full-bleed near-black heroes carrying floating product-UI mockup cards, a white/gray/dark band
13
+ rotation at a 96px rhythm. This entry keeps what survives at operator scale — the pure-white canvas,
14
+ the single scarce Coinbase Blue accent, the cool near-black ink, the rounded geometry, the
15
+ editorial-calm type voice — and leaves the heroes, hero display, mockup stacks, and 96px rhythm
16
+ behind. Where a fellow exchange (Binance) runs a dense trading terminal, Coinbase reads calmer — its
17
+ density lives behind login walls, so the operator tier stays an honest `standard`.
19
18
 
20
19
  ## 1 Visual Theme
21
20
 
@@ -29,8 +28,8 @@ The geometry is rounded — soft corners throughout, sharp corners essentially a
29
28
 
30
29
  ## 2 Color Roles
31
30
 
32
- Light values (the manifest carries hex — the corpus's native format). One accent: `primary` is the only
33
- chromatic hue that carries brand meaning; the trading up/down hues and sub-brand gold speak status only.
31
+ Light values. One accent: `primary` is the only chromatic hue that carries brand meaning; the
32
+ trading up/down hues and sub-brand gold speak status only.
34
33
 
35
34
  | Role | Value | Allowed where |
36
35
  | --- | --- | --- |
@@ -155,83 +154,3 @@ Directives the emitting agent follows verbatim:
155
154
  - Leave the marketing skin behind (heroes, 80px display, mockup stacks, band rotation, 96px rhythm,
156
155
  hero pill CTA). What carries: the palette, its cool temperature, the single scarce blue, the rounded
157
156
  geometry, the tabular number voice, and card-on-card flat depth.
158
-
159
- ```yaml design-primitives
160
- radius: 8px # corpus: compact rows at rounded.sm (8px), inputs at 12px; operator base honors the round, sharp-corners-absent character
161
- shadow-intensity: 0.35 # derived: corpus ships one soft tier (0 4px 12px rgba(0,0,0,0.04)) — near-flat, layering carries depth
162
- border-weight: 1px
163
- density-gap: 1
164
- density-inset: 1
165
- font-sans: Inter, system-ui, sans-serif # corpus: CoinbaseDisplay + CoinbaseSans → Inter is the documented substitute; one sans slot serves both voices
166
- font-mono: JetBrains Mono, ui-monospace, monospace # corpus: CoinbaseMono → JetBrains Mono substitute; the trustworthy-number voice
167
- font-weight-normal: 400 # corpus: body-md weight 400
168
- font-weight-strong: 600 # corpus: titles/buttons/nav-emphasis weight 600; the hero display 400 is a marketing calm that stays behind
169
- heading-tracking: -0.015em # corpus: the -1.5% editorial negative tracking (substitute note) is the display signature; carried to operator heading scale
170
- duration-unit: 50ms # derived: corpus declares animation timings out of scope; functional operator base
171
- duration-fast: 100ms # derived: corpus silent on motion
172
- duration-normal: 150ms # derived: corpus silent on motion
173
- duration-slow: 250ms # derived: corpus silent on motion
174
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
175
- contrast-boost: 1 # derived: editorial-calm brand, not a dense grid; hairlines already carry structure
176
- icon-stroke: 1.5 # derived: corpus iconography is "geometric and minimal" → a light 1.5 stroke suits the refined read
177
- icon-size-base: 16px # derived: base control icon; corpus asset glyphs are 32px circles
178
- sidebar-width-expanded: 248px # derived: no app sidebar in corpus (marketing top-nav only); operator standard
179
- sidebar-width-collapsed: 56px # derived: corpus has no shell; operator standard icon rail
180
- topbar-height: 64px # corpus: top-nav height 64px
181
- side-panel-width: 420px # derived: corpus has no shell; operator standard detail width
182
- side-panel-width-rich: 640px # derived: corpus has no shell; content-heavy detail width
183
- modal-width-max: 560px # derived: corpus has no shell; confirmations only
184
- form-max-width: 640px # derived: corpus content caps ~1200px (marketing); operator forms cap comfortably
185
- table-row-height: 44px # derived: corpus's interactive height is 44px (button/search-pill/nav); rows honor it, calm not cramped
186
- verbosity: default # derived: editorial-calm voice — neither compact-terminal nor explanatory-full
187
- feedback: subtle
188
- density-tier: standard # rationale: corpus reads editorially calm ("density lives behind login walls") — a fellow exchange runs dense; Coinbase holds an honest standard tier to keep its differentiated calm
189
- product-traits: [crypto-exchange, trading-desk, fintech, dashboard]
190
- ```
191
-
192
- ```yaml lever-manifest
193
- version: 1
194
- fonts: { sans: "Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
195
- color-tokens:
196
- light:
197
- background: "#ffffff"
198
- foreground: "#0a0b0d"
199
- card: "#ffffff"
200
- card-foreground: "#0a0b0d"
201
- muted: "#f7f7f7"
202
- muted-foreground: "#5b616e"
203
- border: "#dee1e6"
204
- input: "#dee1e6"
205
- ring: "#0052ff"
206
- primary: "#0052ff"
207
- primary-foreground: "#ffffff"
208
- accent: "#e6eeff" # derived: light Coinbase-Blue wash for row/nav selection; corpus has no light-blue surface token
209
- accent-foreground: "#0052ff"
210
- destructive: "#cf202f" # derived: the trading-down red doubles as the destructive/error hue
211
- destructive-foreground: "#ffffff"
212
- success: "#05b169"
213
- warning: "#f4b000" # derived: the sub-brand gold (illustrative-only in marketing) is the only warm hue; promoted to warning status
214
- popover: "#ffffff"
215
- popover-foreground: "#0a0b0d"
216
- secondary: "#eef0f3"
217
- secondary-foreground: "#0a0b0d"
218
- chart-1: "#0052ff" # Coinbase Blue
219
- chart-2: "#05b169" # trading-up green
220
- chart-3: "#cf202f" # trading-down red
221
- chart-4: "#f4b000" # sub-brand gold
222
- chart-5: "#7c828a" # derived: neutral cool gray for a fifth series
223
- sidebar: "#f7f7f7" # derived: operator sidebar tinted from surface-soft (corpus is top-nav only)
224
- sidebar-foreground: "#0a0b0d"
225
- sidebar-primary: "#0052ff"
226
- sidebar-primary-foreground: "#ffffff"
227
- sidebar-accent: "#e6eeff" # derived: the blue-wash selection tint
228
- sidebar-accent-foreground: "#0052ff"
229
- sidebar-border: "#dee1e6"
230
- sidebar-ring: "#0052ff"
231
- spacing-scale: [4, 8, 12, 16, 20, 24, 32, 48]
232
- radius-scale: [0, 4, 8, 12, 16, 24, 9999]
233
- shadow-levels: [none, sm]
234
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
235
- icons: { family: lucide, stroke: 1.5 }
236
- accent-count: 1
237
- ```
@@ -26,9 +26,8 @@ Density is `standard` — technical but not cramped, inheriting the marketing's
26
26
 
27
27
  ## 2 Color Roles
28
28
 
29
- Dark values are the default theme (the manifest carries them in `color-tokens.light`, the primary map).
30
- `primary` is the only chromatic hue that carries meaning; cyan and violet are illustration-only and
31
- take no operator role; status hues speak only status.
29
+ Dark values are the default theme. `primary` is the only chromatic hue that carries meaning; cyan
30
+ and violet are illustration-only and take no operator role; status hues speak only status.
32
31
 
33
32
  | Role | Value | Allowed where |
34
33
  | --- | --- | --- |
@@ -137,84 +136,3 @@ Directives the emitting agent follows verbatim:
137
136
  - Detail and edit go in the side panel; a modal is a confirmation, not a workspace.
138
137
  - Leave the marketing behind — no terminal-mockup hero, no spotlight glows, no 72px display, no 96px
139
138
  band rhythm. The palette, near-black temperature, 8px radii, and single sans voice carry; the show does not.
140
-
141
- ```yaml design-primitives
142
- radius: 8px # derived: corpus CTAs/inputs sit at rounded.md 8px — the operator default; cards take 12px from the scale
143
- shadow-intensity: 0.2 # derived: brand uses brightness-step elevation, not shadow — keep shadow near-absent
144
- border-weight: 1px
145
- density-gap: 1
146
- density-inset: 1
147
- font-sans: abcDiatype, Inter, ui-sans-serif, system-ui, sans-serif # abcDiatype is the licensed brand face; Inter (500 / -1.5%) is the shipped substitute
148
- font-mono: JetBrains Mono, ui-monospace, monospace
149
- font-weight-normal: 400
150
- font-weight-strong: 600 # derived: corpus display sits at 500 but component titles at 600; operator strong weight takes 600
151
- heading-tracking: -0.015em # derived: the Inter-substitute spec (-1.5%) gives operator headings the Composio tight-display character
152
- duration-unit: 50ms # derived: corpus declares motion out of scope; standard operator base
153
- duration-fast: 100ms # derived: corpus silent on motion
154
- duration-normal: 150ms # derived: corpus silent on motion
155
- duration-slow: 250ms # derived: corpus silent on motion
156
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: standard functional easing; corpus silent on motion
157
- contrast-boost: 1.1 # derived: #222 hairlines on #0f0f0f read faintly — nudge up a step so dense grids read as grids
158
- icon-stroke: 1.75 # derived: corpus silent on icons; one step under lucide's 2 for a refined operator stroke
159
- icon-size-base: 16px # derived: corpus silent on icons; standard operator base
160
- sidebar-width-expanded: 248px # derived: corpus is marketing-only; standard operator shell
161
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
162
- topbar-height: 56px # derived: corpus marketing nav is 64px; operator topbar tightens to 56px
163
- side-panel-width: 420px # derived: corpus has no side panel; standard operator width
164
- side-panel-width-rich: 640px # derived: standard content-heavy width
165
- modal-width-max: 560px # derived: standard operator modal cap
166
- form-max-width: 640px # derived: standard operator form width
167
- table-row-height: 44px # derived: aligns with corpus 44px text-input height; comfortable on dark at standard density
168
- verbosity: default
169
- feedback: subtle
170
- density-tier: standard # derived: the marketing breathes (96px rhythm); the operator translation stays composed, not terminal-dense
171
- product-traits: [dev-tools, integrations, dashboard, api-console]
172
- ```
173
-
174
- ```yaml lever-manifest
175
- version: 1
176
- # categorically dark: the primary theme map holds Composio's near-black brand values (dark-default)
177
- fonts: { sans: "abcDiatype, Inter, ui-sans-serif, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
178
- color-tokens:
179
- light:
180
- background: "#0f0f0f"
181
- foreground: "#ffffff" # derived: promote strong ink to primary text for operator legibility (corpus default running text is body #a8a8a8)
182
- card: "#181818"
183
- card-foreground: "#ffffff"
184
- muted: "#222222"
185
- muted-foreground: "#a8a8a8"
186
- border: "#222222"
187
- input: "#333333" # derived: fields take the stronger hairline for a visible edge on dark
188
- ring: "#1a26ff" # derived: the brighter primary-glow tone gives a legible focus ring on near-black
189
- primary: "#0007cd"
190
- primary-foreground: "#ffffff"
191
- accent: "#2a2a2a" # derived: hover/selection uses surface-strong so it lifts above the resting card without a second hue
192
- accent-foreground: "#ffffff"
193
- destructive: "#ff4d4d"
194
- destructive-foreground: "#ffffff"
195
- success: "#33d17a"
196
- warning: "#f5a524" # derived: corpus ships no warning hue; a standard amber fills the status slot, off-brand-neutral so it reads only as status
197
- popover: "#2a2a2a" # derived: corpus dropdown menus use surface-strong #2a2a2a — overlays lift to the top surface
198
- popover-foreground: "#ffffff"
199
- secondary: "#222222"
200
- secondary-foreground: "#ffffff"
201
- chart-1: "#1a26ff" # derived: primary #0007cd is too dark on near-black for a data mark; use the brighter primary-glow
202
- chart-2: "#00d4ff"
203
- chart-3: "#33d17a"
204
- chart-4: "#7b3aed"
205
- chart-5: "#f5a524" # derived: amber widens the categorical hue spread beyond the corpus blue/cyan/green/violet
206
- sidebar: "#0f0f0f"
207
- sidebar-foreground: "#a8a8a8" # derived: nav items sit at body gray until active, then go white/primary
208
- sidebar-primary: "#0007cd"
209
- sidebar-primary-foreground: "#ffffff"
210
- sidebar-accent: "#222222"
211
- sidebar-accent-foreground: "#ffffff"
212
- sidebar-border: "#222222"
213
- sidebar-ring: "#1a26ff" # derived: matches the primary-glow focus ring on dark
214
- spacing-scale: [4, 8, 12, 16, 20, 24, 32, 48, 96]
215
- radius-scale: [0, 4, 6, 8, 12, 16, 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
- ```
@@ -19,8 +19,7 @@ the 80px section rhythm, the ink-inverted featured card, and the marketing CTA b
19
19
 
20
20
  **Warm, but light.** The cream canvas (`#f7f7f4`) is deliberate warmth, not the cool gray-white the
21
21
  category defaults to — but it reads *light*, so the light-default floor holds cleanly (no
22
- categorically-dark exception); warmth is temperature, not polarity. Both machine blocks are fully
23
- valued; judgments away from the marketing brand are annotated `# derived:` where the corpus is silent.
22
+ categorically-dark exception); warmth is temperature, not polarity.
24
23
 
25
24
  ## 1 Visual Theme
26
25
 
@@ -34,9 +33,8 @@ Density is `standard`; editorial pacing survives as slightly generous shell dime
34
33
 
35
34
  ## 2 Color Roles
36
35
 
37
- Light values (the manifest carries hex — the corpus's native format). One accent — `primary` is the
38
- only chromatic hue that carries UI meaning; the timeline pastels live only in charts and agent-stage
39
- chips (see §7), status hues speak only status.
36
+ Light values. One accent — `primary` is the only chromatic hue that carries UI meaning; the timeline
37
+ pastels live only in charts and agent-stage chips (see §7), status hues speak only status.
40
38
 
41
39
  | Role | Value | Allowed where |
42
40
  | --- | --- | --- |
@@ -138,83 +136,3 @@ Directives the emitting agent follows verbatim:
138
136
  - The timeline pastel palette (peach / mint / blue / lavender / gold) is the brand's one sanctioned multi-hue set — use it for chart series and agent-stage chips (Thinking / Reading / Editing / Done), never for semantic status or general chrome.
139
137
  - Depth is the cream-to-white step and warm hairlines, never shadow; reach for the faint overlay lift only for a true modal or popover. Detail and edit go in the side panel beside the work, never a modal.
140
138
  - Keyboard-first: the orange `ring` focus outline is always visible. Leave behind the 72px hero display, the full-width IDE mockup, the 80px section rhythm, and the marketing CTA bands.
141
-
142
- ```yaml design-primitives
143
- radius: 8px # corpus: buttons/inputs at rounded.md (8px); cards step to 12px (lg), 16px large; pill is badges-only
144
- shadow-intensity: 0.15 # derived: brand is emphatically hairline-only ("no drop shadows"); only true overlays earn the faintest lift
145
- border-weight: 1px # corpus: 1px warm hairlines carry all depth
146
- density-gap: 1 # derived: editorial-spacious brand read to an honest standard operator tier; breathing carried by shell dims, not the data grid
147
- density-inset: 1 # derived: matches density-gap for coherent component insets
148
- font-sans: CursorGothic, Inter, system-ui, sans-serif # corpus: CursorGothic is the licensed brand face; Inter is the corpus's documented open-source substitute
149
- font-mono: JetBrains Mono, Fira Code, ui-monospace, monospace # corpus: JetBrains Mono on every code surface
150
- font-weight-normal: 400 # corpus: body and — defining trait — the editorial display both sit at 400
151
- font-weight-strong: 600 # corpus: component titles (title-md/title-sm) and captions at 600; the display stays 400, the brand never bolds it
152
- heading-tracking: -0.015em # corpus: the documented Inter-substitute tracking (-1.5%); negative display tracking is the editorial signature
153
- duration-unit: 50ms # derived: corpus declares motion out of scope (known gap); operator-standard functional base
154
- duration-fast: 100ms # derived: corpus silent on motion; functional tempo
155
- duration-normal: 150ms # derived: corpus silent on motion; standard functional tempo
156
- duration-slow: 250ms # derived: corpus silent on motion; overlay/panel transition
157
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
158
- contrast-boost: 1 # derived: the soft warm hairlines are intentional editorial calm; no boost
159
- icon-stroke: 1.5 # derived: corpus silent on icons; a light refined stroke suits the minimal editorial feel
160
- icon-size-base: 16px # derived: corpus silent on icon size; operator standard
161
- sidebar-width-expanded: 256px # derived: corpus has no app shell (marketing top-nav only); editorial breathing → a touch wider than a dense rail
162
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
163
- topbar-height: 64px # corpus: top-nav height 64px (the brand's nav height)
164
- side-panel-width: 440px # derived: corpus has no shell; standard nudged up for editorial breathing
165
- side-panel-width-rich: 640px # derived: content-heavy detail panel
166
- modal-width-max: 560px # derived: corpus's CTA bands are full-bleed marketing; operator confirmation cap
167
- form-max-width: 640px # derived: corpus max content ~1200px is marketing; editorial single-column reading caps forms at 640
168
- table-row-height: 44px # derived: editorial warmth → rows breathe a touch over the dense 40px default
169
- verbosity: default
170
- feedback: subtle # derived: corpus is quiet ("hover state never documented"); warm editorial voice wants gentle present feedback, not austere silence
171
- density-tier: standard # derived: an editorial-spacious brand read down to an honest operator tier; warmth carried by palette/radius, not whitespace
172
- product-traits: [dev-tools, code-editor, ai-console, dashboard]
173
- ```
174
-
175
- ```yaml lever-manifest
176
- version: 1
177
- fonts: { sans: "CursorGothic, Inter, system-ui, sans-serif", mono: "JetBrains Mono, Fira Code, ui-monospace, monospace" }
178
- color-tokens:
179
- light:
180
- background: "#f7f7f4"
181
- foreground: "#26251e"
182
- card: "#ffffff"
183
- card-foreground: "#26251e"
184
- muted: "#efeee8" # derived: corpus hairline-soft repurposed as the soft warm fill for hover rows and quiet bands
185
- muted-foreground: "#807d72"
186
- border: "#e6e5e0"
187
- input: "#e6e5e0"
188
- ring: "#f54e00"
189
- primary: "#f54e00"
190
- primary-foreground: "#ffffff"
191
- accent: "#eae8e0" # derived: warm selection lift one step past muted, so selection reads over hover; never orange
192
- accent-foreground: "#26251e"
193
- destructive: "#cf2d56"
194
- destructive-foreground: "#ffffff"
195
- success: "#1f8a65"
196
- warning: "#c08532" # derived: corpus has no warning hue; warm gold matching the palette temperature reads as amber
197
- popover: "#ffffff"
198
- popover-foreground: "#26251e"
199
- secondary: "#efeee8"
200
- secondary-foreground: "#26251e"
201
- chart-1: "#dfa88f" # corpus timeline peach — the brand's own categorical palette carries the chart series
202
- chart-2: "#9fc9a2" # corpus timeline mint
203
- chart-3: "#9fbbe0" # corpus timeline blue
204
- chart-4: "#c0a8dd" # corpus timeline lavender
205
- chart-5: "#c08532" # corpus timeline gold
206
- sidebar: "#f2f1ec" # derived: a faint warm step below the cream canvas so the nav rail reads as chrome
207
- sidebar-foreground: "#26251e"
208
- sidebar-primary: "#f54e00"
209
- sidebar-primary-foreground: "#ffffff"
210
- sidebar-accent: "#eae8e0" # derived: hover/selected nav lift, matches accent
211
- sidebar-accent-foreground: "#26251e"
212
- sidebar-border: "#e6e5e0"
213
- sidebar-ring: "#f54e00"
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, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
218
- icons: { family: lucide, stroke: 1.5 }
219
- accent-count: 1
220
- ```
@@ -8,11 +8,11 @@ sourced: 2026-07-04
8
8
  # ElevenLabs — editorial voice-AI, warmed to an operator console
9
9
 
10
10
  The operator reading of the ElevenLabs brand. Its own surfaces read like a quietly editorial print
11
- magazine — off-white canvas, Waldenburg Light display at weight 300, pastel gradient orbs as the only
12
- "color". This entry keeps what survives at operator scale: the warm canvas, the achromatic ink accent,
13
- the warm-stone temperature, modest type weight, soft radius, and the pill on the one action. The 64px
14
- hero display, the orbs, and the 96px rhythm stay behind; the five pastels return only as charts.
15
- Judgments away from the brand are annotated `# derived:` where the corpus is silent.
11
+ magazine — off-white canvas, Waldenburg Light display at weight 300, pastel gradient orbs as the
12
+ only "color". This entry keeps what survives at operator scale: the warm canvas, the achromatic ink
13
+ accent, the warm-stone temperature, modest type weight, soft radius, and the pill on the one action.
14
+ The 64px hero display, the orbs, and the 96px rhythm stay behind; the five pastels return only as
15
+ charts.
16
16
 
17
17
  ## 1 Visual Theme
18
18
 
@@ -26,8 +26,8 @@ is an off-white `background` (`#f5f5f5`) holding white cards, beside a warm `sid
26
26
 
27
27
  ## 2 Color Roles
28
28
 
29
- Light values (the manifest carries hex — the corpus's native format). One accent, and it is not a hue:
30
- `primary` is warm near-black ink; the pastel orbs are demoted to chart series and status speaks status.
29
+ Light values. One accent, and it is not a hue: `primary` is warm near-black ink; the pastel orbs are
30
+ demoted to chart series and status speaks status.
31
31
 
32
32
  | Role | Value | Allowed where |
33
33
  | --- | --- | --- |
@@ -64,9 +64,6 @@ serif holds 300; sans emphasis caps at `font-weight-strong` (500), 600 only on t
64
64
  | caption | uppercase eyebrow | sans | 12px / 1.4 | 600, +0.08em, uppercase |
65
65
  | code | IDs, logs, amounts | mono | 13px / 1.5 | `font-weight-normal` |
66
66
 
67
- The machine block carries one sans; the agent applies the light serif to h1/h2 by hand (body's +0.01em
68
- tracking is the editorial dialect).
69
-
70
67
  ## 4 Component Stylings
71
68
 
72
69
  Every recurring operator component composes from the primitives — no literal values.
@@ -138,83 +135,3 @@ Directives the emitting agent follows verbatim:
138
135
  - The five pastels are the chart palette only — leave the orbs and the 64px hero display behind.
139
136
  - Numeric columns `tabular-nums`; IDs / codes / timestamps `font-mono`; workflows keyboard-complete.
140
137
  - Stay flat and spacious — hairline and the stone ladder before shadow.
141
-
142
- ```yaml design-primitives
143
- radius: 8px # corpus: inputs at rounded.md (8px); scale offers 12px cards, 16px feature cards, pill for the CTA
144
- shadow-intensity: 0.25 # corpus: a single soft-drop tier at 0.04 alpha — barely there; operator lifts only true overlays
145
- border-weight: 1px
146
- density-gap: 1.1 # rationale: brand is spacious editorial (96px section rhythm, generous pacing); the operator holds an airier gap
147
- density-inset: 1.1 # rationale: matches the spacious tier — component insets breathe
148
- font-sans: Inter, system-ui, sans-serif # corpus: Inter carries all body, nav, captions, buttons
149
- font-mono: JetBrains Mono, ui-monospace, monospace # derived: corpus has no mono; a clean neutral mono for IDs, codes, timestamps
150
- font-weight-normal: 400 # corpus: Inter body at 400
151
- font-weight-strong: 500 # corpus: titles/body-strong/buttons at 500; the brand caps emphasis at 500 (600 only on the uppercase eyebrow)
152
- heading-tracking: -0.01em # corpus: Waldenburg display tracks ~-0.01em at 28-36px
153
- duration-unit: 50ms # derived: corpus declares motion out of scope; operator-standard base
154
- duration-fast: 120ms # derived: corpus silent on motion; a calm editorial fast step
155
- duration-normal: 200ms # derived: corpus silent on motion; an unhurried editorial transition
156
- duration-slow: 300ms # derived: corpus silent on motion; the slow step for overlays
157
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard operator ease
158
- contrast-boost: 1 # derived: warm hairlines are intentional and the surfaces spacious; no dense-grid boost
159
- icon-stroke: 1.5 # derived: the brand's light editorial weight (display 300) calls for a thin stroke under lucide's default 2
160
- icon-size-base: 16px # derived: corpus silent; operator standard
161
- sidebar-width-expanded: 256px # derived: corpus is top-nav only; the spacious posture takes a roomy rail
162
- sidebar-width-collapsed: 56px # derived: corpus has no shell; operator standard icon rail
163
- topbar-height: 64px # corpus: top-nav height 64px — kept; the spacious posture honors it
164
- side-panel-width: 440px # derived: corpus has no shell; spacious nudge over the dense default
165
- side-panel-width-rich: 640px # derived: corpus has no shell; content-heavy detail width
166
- modal-width-max: 560px # derived: corpus has no shell; confirmations only
167
- form-max-width: 640px # derived: the editorial single-column reading caps forms comfortably
168
- table-row-height: 48px # rationale: spacious tier; the brand's 44px inputs and airy rows breathe over the dense 40px default
169
- verbosity: default
170
- feedback: subtle # rationale: the calm editorial voice wants gentle, present feedback — not austere silence
171
- density-tier: spacious # rationale: the brand reads unmistakably spacious (print-magazine pacing); the operator honors it rather than cramming
172
- product-traits: [saas, content-studio, dashboard, media-library]
173
- ```
174
-
175
- ```yaml lever-manifest
176
- version: 1
177
- fonts: { sans: "Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
178
- color-tokens:
179
- light:
180
- background: "#f5f5f5"
181
- foreground: "#0c0a09"
182
- card: "#ffffff"
183
- card-foreground: "#0c0a09"
184
- muted: "#f0efed"
185
- muted-foreground: "#777169"
186
- border: "#e7e5e4"
187
- input: "#d6d3d1"
188
- ring: "#0c0a09"
189
- primary: "#292524"
190
- primary-foreground: "#ffffff"
191
- accent: "#eae7e3" # derived: warm selection tint, one step deeper than muted so selection reads distinct from hover
192
- accent-foreground: "#292524"
193
- destructive: "#dc2626"
194
- destructive-foreground: "#ffffff" # derived: white on the red
195
- success: "#16a34a"
196
- warning: "#d97706" # derived: corpus has no warning; a warm amber that sits in the stone family
197
- popover: "#ffffff"
198
- popover-foreground: "#0c0a09"
199
- secondary: "#f0efed"
200
- secondary-foreground: "#292524"
201
- chart-1: "#a7e5d3" # corpus: gradient-mint — the atmospheric orbs become the data-viz series
202
- chart-2: "#a8c8e8" # corpus: gradient-sky
203
- chart-3: "#c8b8e0" # corpus: gradient-lavender
204
- chart-4: "#f4c5a8" # corpus: gradient-peach
205
- chart-5: "#e8b8c4" # corpus: gradient-rose
206
- sidebar: "#f0efed" # derived: warm rail one step deeper than the canvas
207
- sidebar-foreground: "#292524" # derived: body-strong ink on the warm rail
208
- sidebar-primary: "#292524"
209
- sidebar-primary-foreground: "#ffffff"
210
- sidebar-accent: "#e7e5e4" # derived: hover/selected nav tint = the hairline stone
211
- sidebar-accent-foreground: "#0c0a09"
212
- sidebar-border: "#e7e5e4"
213
- sidebar-ring: "#0c0a09"
214
- spacing-scale: [2, 4, 8, 12, 16, 20, 24, 32, 48, 64]
215
- radius-scale: [0, 4, 8, 12, 16, 9999]
216
- shadow-levels: [none, sm, md]
217
- motion: { durations: [120, 200, 300], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
218
- icons: { family: lucide, stroke: 1.5 }
219
- accent-count: 1
220
- ```
@@ -146,83 +146,3 @@ Directives the emitting agent follows verbatim for an operator surface wearing E
146
146
  type, no dark-inversion feature cards. What carries is the palette, the cool-neutral temperature, the
147
147
  8px/12px radius character, and the Inter + JetBrains Mono voice.
148
148
  - Every workflow completes from the keyboard; the ink `ring` focus outline is always visible (P6).
149
-
150
- ```yaml design-primitives
151
- radius: 8px # derived: Expo's developer-dialect CTA/input radius (rounded.md); cards step to 12px in the scale
152
- shadow-intensity: 0.3 # derived: Expo ships one very-soft drop (0.04 alpha) — flatter than the operator default
153
- border-weight: 1px
154
- density-gap: 1
155
- density-inset: 1
156
- font-sans: Inter, -apple-system, system-ui, sans-serif
157
- font-mono: JetBrains Mono, Fira Code, ui-monospace, monospace
158
- font-weight-normal: 400
159
- font-weight-strong: 600 # rationale: Expo holds display weight at 600, never 700 — confident, not bombastic
160
- heading-tracking: -0.02em # derived: Expo tracks display negative (-0.5 to -1.92px); at operator heading sizes that lands near -0.02em
161
- duration-unit: 50ms # derived: corpus declares motion out of scope; functional operator timing
162
- duration-fast: 100ms # derived: corpus silent on motion
163
- duration-normal: 150ms # derived: corpus silent on motion
164
- duration-slow: 250ms # derived: corpus silent on motion
165
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard operator ease
166
- contrast-boost: 1 # derived: component borders use hairline-strong (#dcdee0), which reads as a grid at standard density
167
- icon-stroke: 1.75 # derived: corpus silent on icons; refined operator lucide stroke
168
- icon-size-base: 16px # derived: corpus silent on icons
169
- sidebar-width-expanded: 248px # derived: no sidebar in the marketing corpus; operator shell default
170
- sidebar-width-collapsed: 56px # derived: operator shell default
171
- topbar-height: 56px # derived: Expo's marketing top-nav is 64px; operator chrome tightens to 56px
172
- side-panel-width: 420px # derived: no side panel in the marketing corpus; operator shell default
173
- side-panel-width-rich: 640px # derived: operator shell default
174
- modal-width-max: 560px # derived: operator shell default
175
- form-max-width: 640px # derived: operator shell default
176
- table-row-height: 44px # derived: Expo runs generous component heights (44px inputs); tables echo that airier read
177
- verbosity: default
178
- feedback: subtle # rationale: Expo's quiet, editorial voice; feedback stays understated but legible
179
- density-tier: standard # derived: developer platform between terminal-dense and consumer-spacious; standard, stepping denser per archetype
180
- product-traits: [dev-tools, developer-platform, dashboard, ci-cd]
181
- ```
182
-
183
- ```yaml lever-manifest
184
- version: 1
185
- fonts: { sans: "Inter, -apple-system, system-ui, sans-serif", mono: "JetBrains Mono, Fira Code, ui-monospace, monospace" }
186
- color-tokens:
187
- light:
188
- background: "#ffffff"
189
- foreground: "#171717"
190
- card: "#ffffff"
191
- card-foreground: "#171717"
192
- muted: "#f0f0f3"
193
- muted-foreground: "#60646c"
194
- border: "#dcdee0"
195
- input: "#dcdee0"
196
- ring: "#171717"
197
- primary: "#000000"
198
- primary-foreground: "#ffffff"
199
- accent: "#f0f0f3" # derived: black primary has no light chroma tint; selected-row accent falls to the neutral surface-strong
200
- accent-foreground: "#171717"
201
- destructive: "#dc2626" # derived: Expo documents only a soft error-text rose (#eb8e90); a destructive action fill needs an accessible red
202
- destructive-foreground: "#ffffff"
203
- success: "#16a34a"
204
- warning: "#ab6400"
205
- popover: "#ffffff"
206
- popover-foreground: "#171717"
207
- secondary: "#f0f0f3"
208
- secondary-foreground: "#171717"
209
- chart-1: "#0d74ce" # derived: chart ramp drawn from Expo's scattered accent hues (link blue anchors — black does not chart)
210
- chart-2: "#47c2ff" # derived: bright cyan from docs-widget accent
211
- chart-3: "#16a34a" # derived: success green
212
- chart-4: "#ab6400" # derived: warning amber
213
- chart-5: "#8145b5" # derived: preview purple
214
- sidebar: "#fafafa" # derived: no sidebar in corpus; faintly off-white canvas-soft beside the white content canvas
215
- sidebar-foreground: "#171717"
216
- sidebar-primary: "#000000"
217
- sidebar-primary-foreground: "#ffffff"
218
- sidebar-accent: "#f0f0f3" # derived: neutral hovered/selected nav tint
219
- sidebar-accent-foreground: "#171717"
220
- sidebar-border: "#f0f0f3" # derived: softer hairline for the sidebar's internal dividers
221
- sidebar-ring: "#171717"
222
- spacing-scale: [2, 4, 8, 12, 16, 20, 24, 32, 48, 64]
223
- radius-scale: [0, 4, 8, 12, 16, 9999]
224
- shadow-levels: [none, sm, md]
225
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
226
- icons: { family: lucide, stroke: 1.75 }
227
- accent-count: 1
228
- ```