@nurix/etna 0.18.19 → 0.18.21

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 (283) hide show
  1. package/README.md +1 -1
  2. package/data/harness-index.json +1 -1
  3. package/data/harnesses/code/CLAUDE.md +1 -1
  4. package/data/harnesses/code/agents/brainstorm.md +1 -1
  5. package/data/harnesses/code/agents/maintenance.md +2 -2
  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 +1 -1
  14. package/data/harnesses/code/skills/brainstorm/SKILL.md +1 -1
  15. package/data/harnesses/code/skills/brainstorm/exit-artifacts.md +4 -4
  16. package/data/harnesses/code/skills/brainstorm/templates/source-of-truth.md +3 -3
  17. package/data/harnesses/code/skills/design/SKILL.md +68 -0
  18. package/data/harnesses/code/skills/design/data/catalog/rules.csv +132 -0
  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 +106 -0
  31. package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +154 -0
  32. package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +151 -0
  33. package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +139 -0
  34. package/data/harnesses/code/skills/design/data/design-md/library/apple.md +139 -0
  35. package/data/harnesses/code/skills/design/data/design-md/library/binance.md +140 -0
  36. package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +140 -0
  37. package/data/harnesses/code/skills/design/data/design-md/library/cal.md +140 -0
  38. package/data/harnesses/code/skills/design/data/design-md/library/clay.md +139 -0
  39. package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +139 -0
  40. package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +147 -0
  41. package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +156 -0
  42. package/data/harnesses/code/skills/design/data/design-md/library/composio.md +138 -0
  43. package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +138 -0
  44. package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +137 -0
  45. package/data/harnesses/code/skills/design/data/design-md/library/expo.md +148 -0
  46. package/data/harnesses/code/skills/design/data/design-md/library/figma.md +141 -0
  47. package/data/harnesses/code/skills/design/data/design-md/library/framer.md +156 -0
  48. package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +140 -0
  49. package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +153 -0
  50. package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +158 -0
  51. package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +156 -0
  52. package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +122 -0
  53. package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +140 -0
  54. package/data/harnesses/code/skills/design/data/design-md/library/meta.md +139 -0
  55. package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +139 -0
  56. package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +139 -0
  57. package/data/harnesses/code/skills/design/data/design-md/library/miro.md +153 -0
  58. package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +140 -0
  59. package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +155 -0
  60. package/data/harnesses/code/skills/design/data/design-md/library/notion.md +140 -0
  61. package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +141 -0
  62. package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +145 -0
  63. package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +142 -0
  64. package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +152 -0
  65. package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +137 -0
  66. package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +140 -0
  67. package/data/harnesses/code/skills/design/data/design-md/library/resend.md +170 -0
  68. package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +145 -0
  69. package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +137 -0
  70. package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +168 -0
  71. package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +163 -0
  72. package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +147 -0
  73. package/data/harnesses/code/skills/design/data/design-md/library/slack.md +158 -0
  74. package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +171 -0
  75. package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +166 -0
  76. package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +160 -0
  77. package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +173 -0
  78. package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +145 -0
  79. package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +153 -0
  80. package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +167 -0
  81. package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +140 -0
  82. package/data/harnesses/code/skills/design/data/design-md/library/uber.md +140 -0
  83. package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +140 -0
  84. package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +130 -0
  85. package/data/harnesses/code/skills/design/data/design-md/library/warp.md +140 -0
  86. package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +140 -0
  87. package/data/harnesses/code/skills/design/data/design-md/library/wired.md +139 -0
  88. package/data/harnesses/code/skills/design/data/design-md/library/wise.md +137 -0
  89. package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +138 -0
  90. package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +158 -0
  91. package/data/harnesses/code/skills/design/data/design-md/nurix.md +134 -0
  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/exemplars/command-center.tsx +249 -0
  220. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/create-edit.tsx +249 -0
  221. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/dashboard.tsx +248 -0
  222. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/entity-detail.tsx +245 -0
  223. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/list-detail.tsx +223 -0
  224. package/data/harnesses/code/skills/design/data/operator-pack/exemplars/log-stream.tsx +249 -0
  225. package/data/harnesses/code/skills/design/data/operator-pack/fixtures.md +88 -0
  226. package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +132 -0
  227. package/data/harnesses/code/skills/design/data/operator-pack/trust-rubric.md +76 -0
  228. package/data/harnesses/code/skills/design/references/create.md +131 -0
  229. package/data/harnesses/code/skills/design/references/diagnosis.md +108 -0
  230. package/data/harnesses/code/skills/design/references/hard-rules.md +155 -0
  231. package/data/harnesses/code/skills/design/references/improve.md +87 -0
  232. package/data/harnesses/code/skills/design/references/interaction.md +77 -0
  233. package/data/harnesses/code/skills/design/references/introspect.md +100 -0
  234. package/data/harnesses/code/skills/design/references/lifecycle.md +73 -0
  235. package/data/harnesses/code/skills/design/references/personality.md +428 -0
  236. package/data/harnesses/code/skills/design/references/structure.md +138 -0
  237. package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +1032 -0
  238. package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +1006 -0
  239. package/data/harnesses/code/skills/design/scripts/generate-fixtures.mjs +551 -0
  240. package/data/harnesses/code/skills/design/scripts/lib/checks.mjs +903 -0
  241. package/data/harnesses/code/skills/design/scripts/lib/golden.mjs +26 -0
  242. package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +454 -0
  243. package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +267 -0
  244. package/data/harnesses/code/skills/design/scripts/render-rung.mjs +690 -0
  245. package/data/harnesses/code/skills/design/scripts/scaffold.mjs +552 -0
  246. package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +600 -0
  247. package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +68 -0
  248. package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +314 -0
  249. package/data/harnesses/code/skills/documentation/SKILL.md +61 -17
  250. package/data/harnesses/code/skills/documentation/references/examples.md +41 -0
  251. package/data/harnesses/code/skills/documentation/references/style-guide.md +14 -9
  252. package/data/harnesses/code/skills/documentation/references/templates.md +305 -51
  253. package/data/harnesses/etna/CLAUDE.md +1 -1
  254. package/data/harnesses/etna/agents/brainstorm.md +1 -1
  255. package/data/harnesses/etna/agents/maintenance.md +2 -2
  256. package/data/harnesses/etna/harness.json +2 -2
  257. package/data/harnesses/etna/rules/general.md +2 -40
  258. package/data/harnesses/etna/rules/nomenclature.md +1 -8
  259. package/data/harnesses/etna/skills/brainstorm/README.md +1 -1
  260. package/data/harnesses/etna/skills/brainstorm/SKILL.md +1 -1
  261. package/data/harnesses/etna/skills/brainstorm/exit-artifacts.md +4 -4
  262. package/data/harnesses/etna/skills/brainstorm/templates/source-of-truth.md +3 -3
  263. package/data/harnesses/etna/skills/documentation/SKILL.md +61 -17
  264. package/data/harnesses/etna/skills/documentation/references/examples.md +41 -0
  265. package/data/harnesses/etna/skills/documentation/references/style-guide.md +14 -9
  266. package/data/harnesses/etna/skills/documentation/references/templates.md +305 -51
  267. package/data/harnesses/mobile/CLAUDE.md +1 -1
  268. package/data/harnesses/mobile/agents/brainstorm.md +1 -1
  269. package/data/harnesses/mobile/agents/maintenance.md +2 -2
  270. package/data/harnesses/mobile/harness.json +2 -2
  271. package/data/harnesses/mobile/rules/database.md +38 -0
  272. package/data/harnesses/mobile/rules/general.md +2 -40
  273. package/data/harnesses/mobile/rules/nomenclature.md +1 -8
  274. package/data/harnesses/mobile/rules/nustack.md +150 -0
  275. package/data/harnesses/mobile/skills/brainstorm/README.md +1 -1
  276. package/data/harnesses/mobile/skills/brainstorm/SKILL.md +1 -1
  277. package/data/harnesses/mobile/skills/brainstorm/exit-artifacts.md +4 -4
  278. package/data/harnesses/mobile/skills/brainstorm/templates/source-of-truth.md +3 -3
  279. package/data/harnesses/mobile/skills/documentation/SKILL.md +61 -17
  280. package/data/harnesses/mobile/skills/documentation/references/examples.md +41 -0
  281. package/data/harnesses/mobile/skills/documentation/references/style-guide.md +14 -9
  282. package/data/harnesses/mobile/skills/documentation/references/templates.md +305 -51
  283. package/package.json +1 -1
@@ -0,0 +1,138 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Cursor
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Cursor — the warm-cream editorial dev-tool operator design
9
+
10
+ Cursor's marketing site is a quietly-confident developer brand that chose editorial calm over
11
+ IDE-darkness: a warm cream canvas, warm near-black ink carrying body and display alike, a single orange
12
+ voltage, and JetBrains Mono across the roughly-half of the page that is code. This entry is the
13
+ *operator* reading of that brand — an internal tool (agent-ops console, run queue, cluster dashboard,
14
+ log stream) in Cursor's language. What carries: the warm cream canvas (never pure white), warm ink, the
15
+ single Cursor Orange accent held scarce, the editorial magazine voice (display at 400 with negative
16
+ tracking, never bold), JetBrains Mono on every code surface, hairline-only flat depth, and the 8px
17
+ developer-dialect button radius. What stays behind: the 72px hero display, the full-width IDE mockup,
18
+ the 80px section rhythm, the ink-inverted featured card, and the marketing CTA bands.
19
+
20
+ **Warm, but light.** The cream canvas (`#f7f7f4`) is deliberate warmth, not the cool gray-white the
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.
23
+
24
+ ## 1 Visual Theme
25
+
26
+ Light by default; dark is opt-in. The whole UI floats on Cursor's warm cream `background` (`#f7f7f4`);
27
+ cards step up to pure white `card` (`#ffffff`), so a panel reads by a hair of brightness plus its
28
+ hairline, not by shadow. Emphatically flat: hierarchy is carried by warm hairline `border`, type
29
+ weight, and the cream-to-white surface step — never a drop shadow. A single accent, Cursor Orange
30
+ `primary` (`#f54e00`), is held scarce — the one primary action, the active-nav indicator, the focus
31
+ `ring`. Ink is a warm near-black `foreground` (`#26251e`) — warm where every other tool is cool.
32
+ Density is `standard`; editorial pacing survives as slightly generous shell dimensions, not loose grids.
33
+
34
+ ## 2 Color Roles
35
+
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.
38
+
39
+ | Role | Value | Allowed where |
40
+ | --- | --- | --- |
41
+ | `background` | warm cream `#f7f7f4` | the page floor and content canvas — the dominant surface |
42
+ | `card` / `popover` | pure white `#ffffff` | cards and overlays — a slight bright lift off the cream, differentiated by hairline |
43
+ | `foreground` | warm near-black `#26251e` | display and all primary ink |
44
+ | `muted` / `secondary` | soft warm fill `#efeee8` | hover rows, quiet band tints, secondary-button fill |
45
+ | `muted-foreground` | warm gray `#807d72` | labels, captions, secondary text |
46
+ | `border` / `input` | warm hairline `#e6e5e0` | every separator, grid line, and field edge — one warm step, not an ink line |
47
+ | `primary` | Cursor Orange `#f54e00` | the one primary action; the focus `ring`; the active-nav indicator |
48
+ | `primary-foreground` | white `#ffffff` | text on the orange action |
49
+ | `accent` | warm selection lift `#eae8e0` | selected / hovered rows and nav — a neutral warm step, never orange |
50
+ | `ring` | `primary` orange | the focus outline — unmistakable, because keyboard-first |
51
+ | `destructive` | warm rose-red `#cf2d56` | destructive actions and error state only |
52
+ | `success` / `warning` | green `#1f8a65` / warm gold `#c08532` | status signalling only, never chrome |
53
+
54
+ ## 3 Typography
55
+
56
+ `font-sans` is CursorGothic (the licensed brand face), with Inter the corpus's documented open-source
57
+ substitute — one sans carries body, UI, labels, and headings. `font-mono` is JetBrains Mono for IDs,
58
+ codes, timestamps, log lines, and every code surface (roughly half of Cursor's own chrome); numeric
59
+ columns render `tabular-nums`. The defining typographic trait is the **editorial voice**: page titles
60
+ wear weight 400 with negative tracking — a magazine feel, never bold — while smaller component heads
61
+ step up to the strong 600. The hero-scale 72px display stays behind; an operator surface tops out at a
62
+ 24px page title.
63
+
64
+ | Step | Role | Size · line | Weight · tracking |
65
+ | --- | --- | --- | --- |
66
+ | h1 | page title | 24px / 1.2 | `font-weight-normal` (400) · `heading-tracking` |
67
+ | h2 | section head | 20px / 1.3 | `font-weight-normal` (400) · `heading-tracking` |
68
+ | h3 | card / group head | 15px / 1.4 | `font-weight-strong` (600) · 0 |
69
+ | body | UI + prose | 14px / 1.5 | `font-weight-normal` |
70
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
71
+ | caption | uppercase eyebrow | 12px / 1.4 | `font-weight-strong`, `+0.08em`, uppercase |
72
+ | code | IDs, logs, amounts | mono 13px / 1.5 | `font-weight-normal` |
73
+
74
+ Keep page titles at 400 with negative tracking — the magazine voice depends on it; emphasise by size, never by bolding the display.
75
+
76
+ ## 4 Component Stylings
77
+
78
+ Every recurring operator component composes from the primitives — no literal values.
79
+
80
+ - **Button** — primary: filled orange `primary` on white `primary-foreground`, `radius` (8px), never a pill. Secondary: white `card` fill, 1px `border`, `foreground`. Ghost: transparent, `accent` on hover.
81
+ - **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the orange `ring` at full 2px, no glow.
82
+ - **Card** — white `card` surface on a 1px `border` — the bright step off the cream carries the lift; shadow only when a true overlay must separate; inset by `density-inset`.
83
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on numeric columns; row selection warms to `accent`.
84
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich` for content-heavy), beside the work, not over it.
85
+ - **Badge** — pill radius (badges only), `muted`/status fill, uppercase caption; status badges take `success` / `warning` / `destructive`, never `primary`.
86
+
87
+ ## 5 Layout
88
+
89
+ Base spacing unit 4px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` — the marketing
90
+ 80px section rhythm stays behind. Shell dimensions map one-to-one to the layout primitives: sidebar
91
+ `sidebar-width-expanded` (256px) / `sidebar-width-collapsed` (56px), topbar `topbar-height` (64px, the
92
+ brand's nav height), side panel `side-panel-width` (440px) / `side-panel-width-rich` (640px), modal cap
93
+ `modal-width-max`, forms `form-max-width`, tables full-width. The dimensions run a hair generous —
94
+ editorial breathing carried through the shell, not loose grids. Density is governed globally by
95
+ `density-tier` and stepped per archetype by the surface catalog — never by absolute overrides.
96
+
97
+ ## 6 Depth
98
+
99
+ Flat and hairline-only. Depth comes from the cream-to-white surface step and warm hairlines, not shadow:
100
+
101
+ - **0 — canvas** `background` (`#f7f7f4`), no border.
102
+ - **1 — panel / card** white `card` (`#ffffff`) on a 1px `border`; the bright step off the cream plus the hairline carries the lift. Selected / hover rows warm to `accent` (`#eae8e0`).
103
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns the faintest soft lift, enough to float an overlay above the cream. Rank is surface, border, and position — never a heavier shadow.
104
+
105
+ Focus is a 2px orange `ring` outline (never a glow), visible on every interactive element; three z-levels: content, sticky chrome, overlay.
106
+
107
+ ## 7 Do's & Don'ts
108
+
109
+ - **Do** anchor every surface on the warm cream canvas — pure white as the page floor reads as any-other-tool; the tint is Cursor.
110
+ - **Do** reserve orange `primary` for the single primary action, the focus `ring`, and the active-nav indicator — its scarcity at element scale is what makes it read as voltage.
111
+ - **Do** keep page titles at weight 400 with negative tracking, and render every code, log, and terminal surface in `font-mono` (JetBrains Mono) with `tabular-nums` on numeric columns.
112
+ - **Don't** introduce a second brand action color — Cursor Orange is the only one.
113
+ - **Don't** drop the timeline pastels onto semantic status or general chrome — they are scoped to charts and agent-stage chips, and status stays `success` / `warning` / `destructive`.
114
+ - **Don't** pill the primary CTA or reach for a radius outside `radius-scale` — the button/input radius is 8px; pill is badges only.
115
+ - **Don't** signal elevation with drop shadows — warm hairlines and the cream-to-white step carry depth.
116
+
117
+ ## 8 Responsive
118
+
119
+ The operator sweep is 375 / 768 / 1024 / 1440.
120
+
121
+ | Breakpoint | What changes |
122
+ | --- | --- |
123
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
124
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
125
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
126
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width; breathing widens |
127
+
128
+ ## 9 Agent Prompt Guide
129
+
130
+ Directives the emitting agent follows verbatim:
131
+
132
+ - Reach for the warm cream canvas first — never pure white for the page floor; the tint is Cursor. Cards are the white bright step above it.
133
+ - Spend orange once per surface: the primary action, the focus `ring`, the active-nav indicator. If two things want the orange, one of them is not primary. Color otherwise belongs to data and status.
134
+ - Page titles wear weight 400 with negative tracking — the editorial voice; component heads and labels earn the strong 600. Never bold the display.
135
+ - Render code, log, and terminal panels in `font-mono` (JetBrains Mono) — show real chrome, not a light mockup of it. Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`.
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.
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.
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.
@@ -0,0 +1,137 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: ElevenLabs
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # ElevenLabs — editorial voice-AI, warmed to an operator console
9
+
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
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
+
17
+ ## 1 Visual Theme
18
+
19
+ Light by default; dark is opt-in. Flat and editorial: hierarchy comes from warm hairline `border`, type
20
+ weight, and the stone surface ladder, never heavy shadow. The single accent is **achromatic** — a warm
21
+ near-black ink `primary` (`#292524`) worn as a pill on the one action that matters; there is no chromatic
22
+ accent at all, and that discipline carries. Ink is `foreground` (`#0c0a09`); the neutral ramp is a warm
23
+ stone, never the cool slate the category defaults to. The type voice is editorial (a light serif over
24
+ Inter — see §3). Density is `spacious` — the print-magazine calm honored, not crammed. The anchor surface
25
+ is an off-white `background` (`#f5f5f5`) holding white cards, beside a warm `sidebar` (`#f0efed`).
26
+
27
+ ## 2 Color Roles
28
+
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
+
32
+ | Role | Value | Allowed where |
33
+ | --- | --- | --- |
34
+ | `background` | off-white `#f5f5f5` | the page floor — warm, never a cool gray-white |
35
+ | `card` / `popover` | white `#ffffff` | cards and overlays float bright on the off-white canvas |
36
+ | `foreground` | warm near-black `#0c0a09` | all primary ink |
37
+ | `muted` / `secondary` | warm stone `#f0efed` | hover rows, subtle fills, secondary button fill |
38
+ | `muted-foreground` | warm gray `#777169` | labels, captions, secondary text |
39
+ | `border` / `input` | hairline `#e7e5e4` / stronger `#d6d3d1` | separators and grid lines / field edges |
40
+ | `primary` | ink `#292524` | the one primary action (a pill); active nav; press deepens to `#0c0a09` |
41
+ | `accent` | deep stone `#eae7e3` | selected/hovered rows — selection warms the stone, it does not colour it |
42
+ | `ring` | ink `#0c0a09` | the focus outline — unmistakable, because keyboard-first |
43
+ | `destructive` | red `#dc2626` | destructive actions and error state only |
44
+ | `success` / `warning` | green `#16a34a` / amber `#d97706` | status signalling only, never chrome |
45
+
46
+ The five pastels (mint, sky, lavender, peach, rose) live only in `chart-*` — never a button fill, text
47
+ color, or surface; on operator surfaces they are data, not atmosphere.
48
+
49
+ ## 3 Typography
50
+
51
+ Two families. `font-sans` is **Inter** — body, UI, table, label, and button. Page titles wear the editorial
52
+ **serif** — Waldenburg Light at weight 300, EB Garamond the open substitute; the 64px hero display stays
53
+ behind, but the light-serif voice is the brand's irreducible signature. `font-mono` is JetBrains Mono for
54
+ IDs, codes, timestamps, log lines; numeric columns render `tabular-nums`. The brand **never bolds** — the
55
+ serif holds 300; sans emphasis caps at `font-weight-strong` (500), 600 only on the uppercase eyebrow.
56
+
57
+ | Step | Role | Family | Size · line | Weight · tracking |
58
+ | --- | --- | --- | --- | --- |
59
+ | h1 | page title | serif | 28px / 1.15 | 300 · `heading-tracking` |
60
+ | h2 | section head | serif | 22px / 1.2 | 300 · -0.01em |
61
+ | h3 | card / group head | sans | 16px / 1.35 | `font-weight-strong` · 0 |
62
+ | body | UI + prose | sans | 15px / 1.5 | `font-weight-normal` · +0.01em |
63
+ | small | labels, meta, dense table | sans | 13px / 1.4 | `font-weight-normal` |
64
+ | caption | uppercase eyebrow | sans | 12px / 1.4 | 600, +0.08em, uppercase |
65
+ | code | IDs, logs, amounts | mono | 13px / 1.5 | `font-weight-normal` |
66
+
67
+ ## 4 Component Stylings
68
+
69
+ Every recurring operator component composes from the primitives — no literal values.
70
+
71
+ - **Button** — `primary`: filled ink, a **pill** (`radius-scale` 9999) — the brand's signature, for the
72
+ one primary action. Secondary: `secondary` fill, 1px `border`, base `radius`. Ghost: `accent` on hover.
73
+ - **Input** — `card` fill, 1px `input` border (`border-weight`), base `radius` (8px); focus thickens the
74
+ border to a 2px ink `ring`, no glow.
75
+ - **Card** — `card` surface on a 1px `border`, base `radius` (12px for feature cards); shadow only when
76
+ lifted (`shadow-intensity`); inset by `density-inset`.
77
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
78
+ numeric columns; row selection warms to `accent`.
79
+ - **Side panel** — detail and edit open in the panel (`side-panel-width`, `side-panel-width-rich` for
80
+ content-heavy), beside the work, not over it.
81
+ - **Badge** — pill radius, `muted`/status fill, uppercase caption; status badges take `success` /
82
+ `warning` / `destructive`, never `primary`.
83
+
84
+ ## 5 Layout
85
+
86
+ Base spacing unit 4px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 20 · 24 · 32 · 48 · 64` (the marketing
87
+ 96px rhythm stays behind). Shell dimensions map one-to-one to the layout primitives (sidebar 256/56px,
88
+ topbar 64px — the brand's nav height, side panel 440/640px, modal 560px, forms 640px, tables full-width)
89
+ — airier than a dense console, because the tier is `spacious`. Density is stepped per archetype by the
90
+ surface catalog, never by absolute overrides.
91
+
92
+ ## 6 Depth
93
+
94
+ Flat, hairline-first. Hierarchy comes from the stone ladder and warm hairlines, not shadow:
95
+
96
+ - **0 — canvas** `background` (`#f5f5f5`), no border.
97
+ - **1 — panel / card** `card` (white) on a 1px `border` — lifts off the canvas by brightness and hairline; shadow only when it must lift.
98
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a soft `md`
99
+ drop (the brand's single `0 4px 16px rgba(0,0,0,0.04)` tier). Rank is border and position.
100
+
101
+ Focus is a 2px ink `ring` (never a glow) on every element; z-levels: content, chrome, overlay.
102
+
103
+ ## 7 Do's & Don'ts
104
+
105
+ - **Do** anchor on the off-white `#f5f5f5` canvas with white cards — the warm floor is the brand.
106
+ - **Do** keep the accent achromatic — the ink pill is the only action color, reserved for one action per surface.
107
+ - **Do** wear the light serif (weight 300) on page titles, Inter body at +0.01em — the editorial dialect.
108
+ - **Do** pill the primary CTA and badges (`radius-scale` 9999) — the brand's button geometry, kept
109
+ deliberately even though the operator floor would otherwise square it.
110
+ - **Don't** introduce a saturated action color or a second accent; the pastels are chart data only
111
+ (`chart-*`), never fills, text, or surfaces.
112
+ - **Don't** drop the body Inter to weight 300 to match the display — body stays 400/500 for legibility.
113
+ - **Don't** signal elevation with heavy drop shadows, or open detail in a modal when the panel fits.
114
+
115
+ ## 8 Responsive
116
+
117
+ The operator sweep is 375 / 768 / 1024 / 1440.
118
+
119
+ | Breakpoint | What changes |
120
+ | --- | --- |
121
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
122
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
123
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
124
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width; breathing widens |
125
+
126
+ ## 9 Agent Prompt Guide
127
+
128
+ Directives the emitting agent follows verbatim:
129
+
130
+ - Reach for the off-white `#f5f5f5` canvas with white cards; keep the accent achromatic — the ink pill is
131
+ the only action color, on the one primary action per surface. If two want it, one is not primary.
132
+ - Page titles wear the light serif (Waldenburg Light / EB Garamond, weight 300) at reduced scale;
133
+ everything else is Inter, body at +0.01em. Never bold — the light display weight is the signature.
134
+ - Pill the primary CTA and badges; keep every other component at the base 8px `radius`.
135
+ - The five pastels are the chart palette only — leave the orbs and the 64px hero display behind.
136
+ - Numeric columns `tabular-nums`; IDs / codes / timestamps `font-mono`; workflows keyboard-complete.
137
+ - Stay flat and spacious — hairline and the stone ladder before shadow.
@@ -0,0 +1,148 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Expo
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Expo — the operator reading
9
+
10
+ Expo's marketing surface is a quietly-confident developer platform: a pure-white editorial canvas
11
+ with a soft sky-blue gradient behind the hero and a centered MacBook + iPhone device composite as its
12
+ chrome. This entry keeps the parts an operator tool can wear — the near-black ink, the single **pure
13
+ black** brand voltage, the cool-neutral grays, the compact developer radii, and the Inter + JetBrains
14
+ Mono type voice — and leaves the marketing devices behind: the sky-gradient wash, the device-mockup
15
+ hero, the 64px display type, and the dark-inversion feature cards do not follow the brand onto a CRM,
16
+ a build queue, or a dashboard.
17
+
18
+ ## 1 Visual Theme
19
+
20
+ Light by default; dark is opt-in. Flat and editorial: hierarchy is carried by hairline `border`, type
21
+ weight, and near-black ink — never by heavy shadow (Expo ships a single very-soft drop). The one brand
22
+ voltage is `primary` = **pure black `#000000`**, reserved for the single most important action on a
23
+ surface; this is a deliberate brand override of the usual chromatic-accent floor (black is the only CTA
24
+ fill Expo permits). The neutral ramp is a cool editorial gray anchored on ink `#171717`, so the whole
25
+ UI reads engineered and restrained rather than warm. The anchor surface is a white content canvas
26
+ beside a faintly off-white `sidebar`. Density is `standard` and steps denser per surface archetype.
27
+
28
+ ## 2 Color Roles
29
+
30
+ Light values first (hex is the corpus's native format). One brand voltage — black `primary` — carries
31
+ the primary action; a scoped link-blue serves inline references only; status hues speak only status.
32
+
33
+ | Role | Value | Allowed where |
34
+ | --- | --- | --- |
35
+ | `background` / `card` / `popover` | pure white `#ffffff` | page, cards, and overlays — the dominant surface |
36
+ | `foreground` | near-black ink `#171717` | all primary ink, display and body alike |
37
+ | `muted` / `secondary` | soft neutral `#f0f0f3` | hover rows, subtle fills, secondary buttons, tiles |
38
+ | `muted-foreground` | cool gray `#60646c` | labels, captions, secondary running text |
39
+ | `border` / `input` | hairline-strong `#dcdee0` | card outlines, field edges, table grid lines |
40
+ | `primary` | pure black `#000000` | the one primary action; active nav; press state `#1a1a1a` |
41
+ | `accent` | neutral tint `#f0f0f3` | selected / hovered rows and nav (black has no light chroma tint) |
42
+ | `ring` | ink `#171717` | the 2px focus outline — Expo focuses to ink, never a glow |
43
+ | `destructive` | red `#dc2626` | destructive actions and error state only |
44
+ | `success` / `warning` | green `#16a34a` / amber `#ab6400` | status signalling only, never chrome |
45
+
46
+ The text-link blue `#0d74ce` is a scoped grace — inline body/reference links only, never a CTA or a
47
+ chart-of-record accent (see §7). The sky-blue gradient (`#cfe7ff → #a8c8e8`) and the dark-inversion
48
+ surfaces (`#171717` feature cards) are marketing devices; they carry no operator role.
49
+
50
+ ## 3 Typography
51
+
52
+ One sans, one mono. `font-sans` is Inter — UI, body, and headings all ride it; heading weight and
53
+ negative tracking, not a second family, carry the editorial voice (display weight holds at 600, never
54
+ 700). `font-mono` is JetBrains Mono for IDs, codes, timestamps, and log lines. Numeric columns render
55
+ `tabular-nums` so figures align down a column (floor P4).
56
+
57
+ | Step | Role | Size · line | Weight · tracking |
58
+ | --- | --- | --- | --- |
59
+ | h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` |
60
+ | h2 | section head | 18px / 1.4 | `font-weight-strong` · `heading-tracking` |
61
+ | h3 | card / group head | 16px / 1.4 | `font-weight-strong` · `heading-tracking` |
62
+ | body | UI + prose | 14px / 1.5 | `font-weight-normal` |
63
+ | small | labels, meta, dense tables | 13px / 1.4 | `font-weight-normal` |
64
+ | caption | uppercase eyebrow | 11px / 1.4 | `font-weight-strong`, `+0.88px`, uppercase |
65
+ | code | IDs, logs, snippets | 13px / 1.5 | JetBrains Mono, `font-weight-normal` |
66
+
67
+ Bump weight for emphasis; never change size to emphasize. The 64/48/36px hero display steps stay
68
+ behind — the operator ramp tops out at 24px.
69
+
70
+ ## 4 Component Stylings
71
+
72
+ Every recurring operator component composes from the primitives — no literal values.
73
+
74
+ - **Button** — `primary`: filled black `primary` on `primary-foreground`, `radius` (8px), no pill;
75
+ press darkens to `#1a1a1a`. Secondary: `secondary` fill, 1px `border`, `foreground`. Tertiary:
76
+ transparent, text-link blue label, inline only.
77
+ - **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus thickens to a 2px
78
+ `ring` (ink) outline, no glow. Field height runs generous.
79
+ - **Card** — `card` surface, 1px `border`, `radius` (12px for cards); the single soft drop appears only
80
+ when a card must lift off the canvas (`shadow-intensity`); inset by `density-inset`.
81
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
82
+ numeric columns; row selection tints `accent`.
83
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`
84
+ for content-heavy), beside the work, not over it (floor P3).
85
+ - **Badge** — pill (9999) with uppercase caption on a `muted` fill; status badges take
86
+ `success` / `warning` / `destructive`, never `primary`.
87
+
88
+ ## 5 Layout
89
+
90
+ Base spacing unit 4px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 20 · 24 · 32 · 48 · 64` (Expo keeps
91
+ a 20px step for compact workflow rows). Shell dimensions map one-to-one to the layout primitives:
92
+ sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height`, side panel
93
+ `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`,
94
+ tables full-width. Density is governed globally by `density-tier` and stepped per archetype by the
95
+ surface catalog — never by absolute overrides. Expo's 96px marketing section rhythm stays behind.
96
+
97
+ ## 6 Depth
98
+
99
+ Flat and editorial. Hierarchy comes from the surface ladder and hairlines, not shadow:
100
+
101
+ - **0 — canvas** `background`, no border.
102
+ - **1 — panel / card** `card` on a 1px `border`; the single soft drop `0 4px 12px rgba(0,0,0,0.04)`
103
+ only when a card must lift.
104
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a soft `md`
105
+ shadow. Rank is border and position, never a heavier stacked shadow.
106
+
107
+ Focus is a 2px `ring` outline in ink (never a glow), visible on every interactive element (floor P6).
108
+ Three z-levels: content, sticky chrome, overlay. The sky-gradient backdrop and dark-inversion surfaces
109
+ are marketing depth and do not appear in operator chrome.
110
+
111
+ ## 7 Do's & Don'ts
112
+
113
+ - **Do** reserve black `primary` for the single most important action on a surface; everything else is
114
+ neutral or status.
115
+ - **Do** carry hierarchy with hairlines, weight, and whitespace — the brand is predominantly flat.
116
+ - **Do** set CTAs and inputs at 8px `radius` and cards at 12px — the developer dialect.
117
+ - **Do** apply `tabular-nums` to every numeric column and `font-mono` to IDs, codes, and timestamps.
118
+ - **Don't** introduce a saturated brand action color — black is the only primary fill.
119
+ - **Don't** put the text-link blue on a CTA or button; it is for inline references only.
120
+ - **Don't** pill the primary CTA — pill geometry is reserved for badges.
121
+ - **Don't** bring the sky-blue gradient, the device-mockup hero, or the 64px display into operator chrome.
122
+ - **Don't** signal elevation with heavy drop shadows; one soft drop is the ceiling.
123
+
124
+ ## 8 Responsive
125
+
126
+ The operator sweep is 375 / 768 / 1024 / 1440.
127
+
128
+ | Breakpoint | What changes |
129
+ | --- | --- |
130
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
131
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
132
+ | 1024 | sidebar expands; two-pane list+detail holds side by side |
133
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
134
+
135
+ ## 9 Agent Prompt Guide
136
+
137
+ Directives the emitting agent follows verbatim for an operator surface wearing Expo:
138
+
139
+ - Reach first for the black `primary` as the single action fill; keep every other control neutral on a
140
+ hairline `border`. If two things want the accent, one of them is not primary.
141
+ - The text-link blue is a reference color only — inline links, breadcrumbs, entity cross-links. It
142
+ never fills a button and never leads a chart-of-record.
143
+ - Carry IDs, codes, timestamps, and log lines in JetBrains Mono; every numeric column is `tabular-nums`.
144
+ - Stay flat — hairline and weight before shadow. Reach past the single soft drop only for a real overlay.
145
+ - Leave the marketing devices behind: no sky-gradient wash, no device-mockup hero, no 64px display
146
+ type, no dark-inversion feature cards. What carries is the palette, the cool-neutral temperature, the
147
+ 8px/12px radius character, and the Inter + JetBrains Mono voice.
148
+ - Every workflow completes from the keyboard; the ink `ring` focus outline is always visible (P6).
@@ -0,0 +1,141 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Figma
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Figma — the operator reading
9
+
10
+ Figma's marketing canvas is an editorial black-and-white frame interrupted by oversized pastel
11
+ color-block sections and pill CTAs — storytelling devices that stay on the marketing site with the
12
+ poster-scale display type. An operator surface inherits the *spine*: pure black ink on pure white, a
13
+ warm off-white for panels, hairline depth over shadow, one saturated chromatic accent (Figma
14
+ magenta), and the figmaSans/figmaMono type voice. It reads as a serious tool made by people who like
15
+ color — monochrome, calm, dense-capable, the joyful pastels demoted to chart encodings.
16
+
17
+ ## 1 Visual Theme
18
+
19
+ Light by default; dark is not documented and stays opt-in. Flat: hierarchy is carried by hairline
20
+ `border`, type weight, and the black/white contrast itself — never by heavy shadow, which the brand
21
+ avoids by design. The spine is monochrome — pure black `foreground` on pure white `background`, with a
22
+ faintly warm off-white `muted`/`sidebar`. A single chromatic accent, Figma magenta, is reserved and
23
+ scarce: it carries the focus `ring` and active indicators, nothing decorative. The primary action
24
+ fills black — Figma's own primary is achromatic — so magenta stays a single-shot pop. Density is
25
+ `standard` and steps denser per archetype; the roomy 8px rhythm keeps it friendly, not cramped.
26
+
27
+ ## 2 Color Roles
28
+
29
+ Light values first. The neutral spine is genuinely monochrome; magenta is the one chromatic hue that
30
+ carries meaning, and the pastels appear only as chart series.
31
+
32
+ | Role | Value | Allowed where |
33
+ | --- | --- | --- |
34
+ | `background` / `card` / `popover` | white `#ffffff` | page, cards, and overlays — the dominant surface |
35
+ | `foreground` | pure black `#000000` | all primary ink — headlines, body, labels |
36
+ | `muted` / `secondary` | warm off-white `#f7f7f5` | hover rows, tile fills, secondary buttons, the sidebar ground |
37
+ | `muted-foreground` | neutral gray `#666666` | labels, captions, table meta — the secondary ink role |
38
+ | `border` / `input` | hairline `#e6e6e6` | every separator, grid line, and field edge |
39
+ | `primary` | black `#000000` | the one primary action; active-nav fill; selected tab |
40
+ | `accent` | pale magenta `#ffe4ef` | selected / hovered rows and nav — a tint, never a fill |
41
+ | `ring` | magenta `#ff3d8b` | the focus outline and active indicator — the single chromatic pop |
42
+ | `destructive` | red `#eb5757` | destructive actions and error state only |
43
+ | `success` / `warning` | green `#1ea64a` / amber `#f2994a` | status signalling only, never chrome |
44
+
45
+ The pastel color blocks (lime, lilac, cream, mint, pink, coral, navy) are marketing surfaces — no
46
+ operator role, reappearing only as `chart-*` encodings (§7). Figma's marketing refuses a mid-gray text
47
+ role; an operator surface needs one, so `muted-foreground` is a derived neutral gray, AA on white.
48
+
49
+ ## 3 Typography
50
+
51
+ One sans, one mono — a single voice that flexes by weight, not a multi-family stack. `font-sans`
52
+ substitutes for the proprietary figmaSans (Inter matches its fine variable-weight axis); the UI, body,
53
+ and headings all ride it, weight and negative tracking carrying the display voice. `font-mono`
54
+ substitutes for figmaMono — reserved for IDs, codes, timestamps, log lines, and uppercase
55
+ eyebrow/caption labels, never body. Numeric columns render `tabular-nums`.
56
+
57
+ | Step | Role | Size · line | Weight · tracking |
58
+ | --- | --- | --- | --- |
59
+ | h1 | page title | 24px / 1.3 | `font-weight-strong` · `heading-tracking` |
60
+ | h2 | section head | 18px / 1.35 | `font-weight-strong` · `heading-tracking` |
61
+ | h3 | card / group head | 15px / 1.4 | `font-weight-strong` · `heading-tracking` |
62
+ | body | UI + prose | 14px / 1.45 | `font-weight-normal` |
63
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
64
+ | eyebrow / caption | uppercase mono label | 12px / 1.3 | `font-mono`, `+0.05em`, uppercase |
65
+
66
+ Bump weight one step for emphasis; never change size — weight, not scale, carries hierarchy. The
67
+ poster-scale 86px/64px display steps and their aggressive negative tracking stay on the marketing site.
68
+
69
+ ## 4 Component Stylings
70
+
71
+ Every recurring operator component composes from the primitives — no literal values.
72
+
73
+ - **Button** — `primary`: filled black `primary` on white `primary-foreground`, `radius`, no pill.
74
+ Secondary: `secondary` fill, 1px `border`, `foreground`. Ghost: transparent, `accent` on hover.
75
+ Icon-only buttons stay circular (`radius-scale` full, 9999) — the one marketing shape that carries.
76
+ - **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the magenta `ring` at 2px, no fill change and no glow.
77
+ - **Card** — `card` surface, 1px `border`, `radius`, inset by `density-inset`; shadow only when it must lift (`shadow-intensity`); large feature cards may take the large radius step.
78
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on numeric columns; selection tints `accent` with a magenta `ring` indicator.
79
+ - **Side panel** — detail and edit open beside the work (`side-panel-width`, `side-panel-width-rich` for content-heavy), not over it.
80
+ - **Badge** — hairline `border`, `muted`/status fill, uppercase mono caption; status badges take `success` / `warning` / `destructive`, never `primary` or magenta.
81
+
82
+ ## 5 Layout
83
+
84
+ Base spacing unit 8px (Figma's grid); the on-scale ramp is `4 · 8 · 12 · 16 · 24 · 32 · 48 · 96`.
85
+ Shell dimensions map one-to-one to the layout primitives: sidebar `sidebar-width-expanded` /
86
+ `sidebar-width-collapsed`, topbar `topbar-height` (56px — Figma's own nav height), side panel
87
+ `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`,
88
+ tables full-width. Density is governed globally by `density-tier` (through `density-gap`) and stepped
89
+ per archetype by the surface catalog — never absolute overrides. The 96px section rhythm stays behind.
90
+
91
+ ## 6 Depth
92
+
93
+ Flat and shadow-light. Hierarchy comes from the surface ladder, hairlines, and the black/white
94
+ contrast — not shadow:
95
+
96
+ - **0 — canvas** `background`, no border.
97
+ - **1 — panel / card** `card` on a 1px `border`; shadow only when it must lift off the canvas.
98
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a soft `md`
99
+ shadow (roughly `0 4px 16px rgba(0,0,0,0.06)`). Rank is border and position, never a heavier shadow.
100
+
101
+ Focus is a 2px magenta `ring` outline (never a glow), visible on every interactive element — the one
102
+ chromatic surface the keyboard-first operator sees constantly. Three z-levels: content, chrome, overlay.
103
+
104
+ ## 7 Do's & Don'ts
105
+
106
+ - **Do** reserve black `primary` for the single most important action on a surface; everything else is
107
+ neutral or status.
108
+ - **Do** keep magenta scarce — the focus `ring` and small active indicators only. It is a single-shot
109
+ accent, not a fill or a text color.
110
+ - **Do** carry hierarchy with hairlines, weight, and whitespace — the brand is emphatically flat, and
111
+ apply `tabular-nums` to numeric columns and `font-mono` to IDs, codes, and timestamps.
112
+ - **Don't** reach for the pastel color blocks as UI chrome; they are marketing surfaces and appear
113
+ operator-side only as `chart-*` series.
114
+ - **Don't** pill the primary CTA or reach for a radius outside `radius-scale` — pills stay on the
115
+ marketing site.
116
+ - **Don't** introduce a second chromatic accent, spend magenta on body text or a whole fill, or signal
117
+ elevation with heavy drop shadows.
118
+
119
+ ## 8 Responsive
120
+
121
+ The operator sweep is 375 / 768 / 1024 / 1440.
122
+
123
+ | Breakpoint | What changes |
124
+ | --- | --- |
125
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
126
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
127
+ | 1024 | sidebar expands; two-pane list+detail holds side by side |
128
+ | 1440 | content caps at `form-max-width` for forms; tables and dashboards use the full width |
129
+
130
+ ## 9 Agent Prompt Guide
131
+
132
+ Directives the emitting agent follows verbatim:
133
+
134
+ - Wear the spine, not the marketing: pure black on white, warm off-white panels, hairline depth. The
135
+ color blocks, pill CTAs, and 86px display type stay behind.
136
+ - Primary action fills black. If two things want the black fill, one of them is not primary.
137
+ - Magenta is single-shot: the focus `ring` and active indicators only — never a fill, never body text.
138
+ - Icon-only buttons stay circular; every other control uses the base `radius`.
139
+ - Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`.
140
+ - The pastels live only in charts (`chart-1..5`); stay flat — hairline and weight before shadow, and
141
+ reach past a hairline only for a real overlay.