@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,166 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Spotify
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Spotify — the near-black operator reading
9
+
10
+ A content-first cocoon reduced to one idea: the UI recedes into near-black shadow so the work glows,
11
+ with a single functional green accent doing all the color. This entry is a deliberate operator
12
+ reading of Spotify — the dark immersion and the one-green discipline carried onto internal tools (a
13
+ media library, a catalog console, a content-ops dashboard), with the album-art color source and the
14
+ hero pill geometry left behind.
15
+
16
+ ## 1 Visual Theme
17
+
18
+ Dark by conviction, not by option. `background` is near-black `#121212` (never pure black — Spotify is
19
+ deliberately near-black), and surfaces step up by lightness rather than by line: `card` #181818,
20
+ interactive `secondary` #1f1f1f, elevated cards #252525/#272727. A single accent — Spotify Green
21
+ `primary` (#1ed760) — carries the one action that matters and nothing decorative. Because an operator
22
+ surface has no album art to color it, that green plus the status hues carry **all** the color on an
23
+ otherwise achromatic field; keep them scarce. Depth is shadow-carried, not flat — on near-black a
24
+ hairline all but vanishes, so elevation reads through heavy shadow and surface-lightening. Density is
25
+ `dense`: dark compression, built for scanning. This is Spotify's one true theme, so
26
+ `color-tokens.light` (the always-present default slot) carries the near-black set — dark is not opt-in
27
+ here, it is the identity.
28
+
29
+ ## 2 Color Roles
30
+
31
+ One accent — `primary` green is the only chromatic hue that carries brand meaning; red / orange / blue
32
+ speak status only. On the achromatic near-black field the accent and status hues are the sole color, so
33
+ scarcity is doubly load-bearing.
34
+
35
+ | Role | Value | Allowed where |
36
+ | --- | --- | --- |
37
+ | `primary` | Spotify Green #1ed760 | the one primary action, active nav, play/CTA — never decorative, never on a background |
38
+ | `primary-foreground` | black #000000 | icon/text on the green fill — the signature; never white on green |
39
+ | `background` / `sidebar` | near-black #121212 | page and nav canvas — the deepest layer, the dark cocoon |
40
+ | `card` | dark surface #181818 | cards, containers — one lightness step off the canvas |
41
+ | `secondary` / `muted` | mid-dark #1f1f1f | interactive/secondary surfaces, subtle fills, hover rows |
42
+ | `foreground` | white #ffffff | primary text (max-emphasis #fdfdfd, bright secondary #cbcbcb available) |
43
+ | `muted-foreground` | silver #b3b3b3 | secondary text, inactive nav, captions, dividers |
44
+ | `border` / `input` | subtle #2a2a2a | grid lines and field edges (control borders take the heavier #4d4d4d) |
45
+ | `accent` | lift #282828 | selected/hovered rows and nav — a neutral surface-lift, never a green wash |
46
+ | `ring` | green #1ed760 | the focus outline — unmistakable, because keyboard-first |
47
+ | `destructive` | negative red #f3727f | destructive actions and error state |
48
+ | `success` | deep green #1db954 | up/success status — the deeper green variant, distinct from the bright accent |
49
+ | `warning` | orange #ffa42b | caution and warning status only |
50
+
51
+ Announcement blue #539df5 is an info/status hue and a chart color, never a second brand accent.
52
+
53
+ ## 3 Typography
54
+
55
+ One family, split by cut. `font-sans` is SpotifyMixUI (Circular by Lineto; Inter is the corpus-adjacent
56
+ substitute) — the Title cut serves headings, the UI cut serves body, tables, and labels, same family.
57
+ The voice is a **bold/regular binary**: most text is 700 (`font-weight-strong`) or 400
58
+ (`font-weight-normal`), 600 used sparingly — hierarchy comes from weight contrast, not size. Type is
59
+ compact (10–24px), tuned for scanning, not reading. `font-mono` is derived — the corpus names none (a
60
+ music player has no IDs or logs), but operator tables need a numeric voice; numeric columns render
61
+ `tabular-nums`.
62
+
63
+ | Step | Role | Size · line | Weight · tracking |
64
+ | --- | --- | --- | --- |
65
+ | h1 | page / section title | 24px / 1.25 | `font-weight-strong` · 0 |
66
+ | h2 | feature heading | 18px / 1.3 | `font-weight-strong` · 0 |
67
+ | h3 | card / group head | 16px / 1.4 | `font-weight-strong` · 0 |
68
+ | body | UI + prose | 14px / 1.45 | `font-weight-normal` |
69
+ | small | labels, dense table | 12px / 1.5 | `font-weight-normal` |
70
+ | caption | uppercase eyebrow | 12px / 1.33 | `font-weight-strong`, +0.1em, uppercase |
71
+ | code | IDs, timestamps, amounts | 13px / 1.5 | `font-mono` |
72
+
73
+ The uppercase + wide-tracking (1.4–2px) systematic label voice survives on eyebrows and section labels;
74
+ it does not ride every button — operator buttons stay sentence-case for scannability.
75
+
76
+ ## 4 Component Stylings
77
+
78
+ Every recurring operator component composes from the primitives — no literal values.
79
+
80
+ - **Button** — `primary`: filled green on black `primary-foreground`, `radius` (8px), no pill. The full
81
+ 500px pill is a hero flourish left behind; the rounded-tactile character carries at 8px. Secondary:
82
+ `secondary` #1f1f1f fill, `foreground`. Ghost: transparent, `accent` lift on hover. Icon-only
83
+ controls stay **circular** — the one piece of pill-and-circle geometry that carries.
84
+ - **Input** — `secondary` fill, `radius`; focus draws the green `ring` at 2px. On dark, the edge reads
85
+ as an inset/surface step, not an exposed gray line.
86
+ - **Card** — `card` #181818 surface, `radius`; hover lightens the surface a step rather than drawing a
87
+ border; shadow (`shadow-intensity`) only when it must lift off the canvas.
88
+ - **Table row** — `table-row-height`; row separation by surface-lightening or a subtle `border`;
89
+ `accent` on selection; `muted` on hover; `tabular-nums` + `font-mono` on numeric columns.
90
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`),
91
+ beside the work, not over it.
92
+ - **Badge** — pill radius (9999), `muted` / status fill, uppercase caption; status badges take
93
+ `success` / `warning` / `destructive`, never `primary`.
94
+
95
+ ## 5 Layout
96
+
97
+ Base unit 8px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 20 · 24 · 32 · 48` (Spotify's fine dense low
98
+ end 2–20 carries; 24–48 are operator section spacing). Shell dimensions map one-to-one to the layout
99
+ primitives: sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height` (the
100
+ generous search-pill chrome), side panel `side-panel-width` / `side-panel-width-rich`, modal
101
+ `modal-width-max`, forms `form-max-width`, tables full-width. Spotify's full-width now-playing bottom
102
+ bar carries as an optional persistent transport/status bar in a media tool, not as literal music
103
+ chrome. Density is governed globally by `density-tier` (dark compression) and stepped per archetype —
104
+ never by absolute overrides.
105
+
106
+ ## 6 Depth
107
+
108
+ Shadow-carried, inverting the flat default — on near-black a hairline vanishes, so elevation is heavy
109
+ shadow plus surface-lightening (the corpus: never expose raw gray borders):
110
+
111
+ - **0 — canvas** `background` #121212, no border.
112
+ - **1 — surface** `card` #181818 / `secondary` #1f1f1f — one lightness step; hover lightens further.
113
+ - **2 — elevated** dropdowns and hover cards ride a `md` shadow (`rgba(0,0,0,0.3) 0 8px 8px`).
114
+ - **3 — dialog** modals, menus, side panels ride an `lg` shadow (`rgba(0,0,0,0.5) 0 8px 24px`) — the
115
+ dramatic "floating in darkness" lift.
116
+ - **inset — inputs** the recessed inset-border combo (`rgb(124,124,124) 0 0 0 1px inset`) reads as a
117
+ tactile field edge, not an exposed line.
118
+
119
+ Focus is a green `ring` outline (never a glow), visible on every interactive element. Three z-levels:
120
+ content, sticky chrome, overlay.
121
+
122
+ ## 7 Do's & Don'ts
123
+
124
+ - **Do** anchor on near-black `#121212`–`#1f1f1f`; carry depth through shade variation and heavy shadow,
125
+ because on dark a subtle shadow is invisible.
126
+ - **Do** reserve green `primary` for the single most important action, active state, and play/CTA —
127
+ never decoratively, never on a background. On green, keep black `primary-foreground`.
128
+ - **Do** let the achromatic gray field rest the eye; supply color only through the one accent and the
129
+ status hues (there is no album art here to do it for you).
130
+ - **Do** carry the bold/regular (700/400) weight binary and keep type compact; apply `tabular-nums` and
131
+ `font-mono` to every numeric column.
132
+ - **Don't** add a second brand color — announcement blue, orange, and red are status/chart roles, and
133
+ the deep green `success` is status, not a second accent.
134
+ - **Don't** use light backgrounds for primary surfaces — the dark immersion is the identity.
135
+ - **Don't** full-pill operator buttons or drop uppercase wide-tracking onto every label — those are
136
+ hero-scale flourishes; the rounded character lives at 8px and circular icon buttons.
137
+ - **Don't** expose raw gray borders where a surface-lift or inset edge will do; don't relax the compact
138
+ line-heights.
139
+
140
+ ## 8 Responsive
141
+
142
+ The operator sweep is 375 / 768 / 1024 / 1440:
143
+
144
+ | Breakpoint | What changes |
145
+ | --- | --- |
146
+ | 375 | sidebar → off-canvas drawer (Spotify's nav → bottom bar echoes here); two-pane list+detail stacks; side panel → full sheet; density holds |
147
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); card grid re-flows 3→2; tables scroll their overflow |
148
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side; grid 5→3 |
149
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width; grid opens up |
150
+
151
+ ## 9 Agent Prompt Guide
152
+
153
+ - Start in near-black darkness — everything lives on `#121212`; surfaces step by lightness (#181818,
154
+ #1f1f1f), never by exposed borders. This is the one theme; do not offer a light mockup of it.
155
+ - One accent, always: green `primary` marks THE action and active nav, black on green. On the
156
+ achromatic field the green and the status hues are the only color — keep them scarce and functional.
157
+ - Carry depth with heavy shadow (`md`/`lg`) and surface-lightening, not flat hairlines — the operator's
158
+ usual flat default is inverted here because shadow is what reads on dark.
159
+ - Bold/regular weight binary (700/400); compact type; `tabular-nums` + `font-mono` on every numeric
160
+ column; the uppercase wide-tracked label voice on eyebrows only.
161
+ - Keep the rounded-tactile character at 8px `radius`, pill for badges/chips, circular for icon-only
162
+ controls.
163
+ - Leave behind: album-art-as-color-source (there is none — the UI supplies its own restrained color),
164
+ the 500px hero pills, uppercase wide-tracking on every button, the light-mode marketing pills, and the
165
+ literal music transport bar. What carries: the near-black palette, the one functional green, the
166
+ achromatic discipline, the compact dense type, the rounded/circular geometry, and shadow-carried depth.
@@ -0,0 +1,160 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Stripe
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Stripe — operator reading
9
+
10
+ The operator translation of Stripe's financial-infrastructure brand — a marketing system built on a
11
+ gradient-mesh hero, thin Sohne display type at negative tracking, single-indigo pill CTAs, and
12
+ tabular money figures. This entry keeps the operator-durable core — the indigo accent, the deep-navy
13
+ ink, the cool temperature, the soft blue-tinted lift, the thin editorial type voice, the
14
+ tabular-figure money signal — and leaves the marketing scaffolding behind; §9 lists exactly what
15
+ carries and what stays.
16
+
17
+ ## 1 Visual Theme
18
+
19
+ Light by default; dark is opt-in. The working canvas is white `background`, banded with a cool-tinted
20
+ off-white `canvas-soft` for grouped panels. Stripe's one departure from pure-flat carries: cards lift on
21
+ a **soft blue-tinted shadow** (`shadow-blue`, `rgba(0,55,112,0.08)`), not gray — depth reads cool and
22
+ engineered, never heavy. A single accent, indigo `primary` (`#533afd`), is reserved for the one action
23
+ that matters; ink is deep navy `foreground` (`#0d253d`), never pure black. The temperature runs cool
24
+ throughout — hairlines lean blue, inputs cooler still. The type voice is thin and editorial (Sohne, Inter
25
+ substitute) with negative heading tracking and the `ss01` stylistic set. Density is `standard` — the
26
+ dashboard reads clean and moderate, neither terminal-dense nor consumer-spacious.
27
+
28
+ ## 2 Color Roles
29
+
30
+ Light values. One chromatic accent — indigo is the only brand hue that carries meaning; status hues
31
+ speak only status; the gradient palette lives in charts, never chrome.
32
+
33
+ | Role | Value | Allowed where |
34
+ | --- | --- | --- |
35
+ | `background` / `card` / `popover` | white `#ffffff` (canvas) | page, cards, and overlays — the dominant surface |
36
+ | `foreground` | deep navy `#0d253d` (ink) | all primary ink; never pure black |
37
+ | `muted` / `secondary` | cool off-white `#f6f9fc` (canvas-soft) | hover rows, subtle fills, grouped panel bands |
38
+ | `muted-foreground` | mid slate `#64748d` (ink-mute) | labels, captions, table meta |
39
+ | `border` | hairline `#e3e8ee` | every separator, grid line, and card edge |
40
+ | `input` | cooler hairline `#a8c3de` (hairline-input) | form-field edges only — the brand's cool input border |
41
+ | `primary` | indigo `#533afd` | the one primary action; active nav; inline link emphasis |
42
+ | `accent` | pale indigo `#edecfe` | selected/hovered rows and nav on the light canvas |
43
+ | `accent-foreground` | indigo deep `#4434d4` (primary-deep) | ink on the accent tint |
44
+ | `ring` | `primary` `#533afd` | the focus outline — always visible, keyboard-first |
45
+ | `destructive` | ruby `#ea2261` | destructive actions and error state only |
46
+ | `success` / `warning` | green `#1a8754` / amber `#bb5504` | status signalling only, never chrome |
47
+
48
+ The gradient stops (cream, sherbet, lavender, magenta, ruby) carry no UI role — they appear only as
49
+ chart series (see §7). Deep-navy `brand-dark-900` (`#1c1e54`) is not a page surface here.
50
+
51
+ ## 3 Typography
52
+
53
+ One voice, thin and precise. `font-sans` is **Inter** — the documented open substitute for Stripe's
54
+ proprietary Sohne — carrying the brand rhythm with `ss01` enabled and negative tracking on headings;
55
+ it serves body, UI, table, and label. The 56px display tier and its weight-300 air stay behind, but the
56
+ thin editorial voice and tight tracking carry at operator heading scale. `font-mono` renders IDs, codes,
57
+ timestamps, and log lines; numeric columns and every money cell render `tabular-nums` — the brand's quiet
58
+ financial-data signal, which carries strongly.
59
+
60
+ | Step | Role | Size · line | Weight · tracking |
61
+ | --- | --- | --- | --- |
62
+ | h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` |
63
+ | h2 | section head | 18px / 1.3 | `font-weight-strong` · `heading-tracking` |
64
+ | h3 | card / group head | 15px / 1.4 | `font-weight-strong` · -0.01em |
65
+ | body | UI + prose | 14px / 1.45 | `font-weight-normal` |
66
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
67
+ | caption | uppercase eyebrow | 12px / 1.4 | `font-weight-strong`, +0.02em, uppercase |
68
+ | tabular | money / counts | 14px / 1.4 | `font-weight-normal`, `tabular-nums` |
69
+
70
+ Bump weight one step for emphasis — a thin brand, so emphasis lifts to medium 500, never a heavy 600.
71
+ Apply `ss01` on the body element so the stylistic-set substitution rides every text role.
72
+
73
+ ## 4 Component Stylings
74
+
75
+ Every recurring operator component composes from the primitives — no literal values.
76
+
77
+ - **Button** — `primary`: filled indigo `primary` on `primary-foreground`, `radius` (rounded, not pilled
78
+ — the marketing pill stays behind). Secondary: `secondary` fill, 1px `border`, `primary` text. Ghost:
79
+ transparent, `accent` on hover.
80
+ - **Input** — `background` fill, 1px `input` border (`border-weight`) — the cool input hairline; `radius`;
81
+ focus swaps the border to the `ring` at full 2px, no glow.
82
+ - **Card** — `card` surface, 1px `border`, `radius`; lifts on the soft blue-tinted `md` shadow
83
+ (`shadow-intensity`) — the brand's one elevation cue; inset by `density-inset`.
84
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
85
+ numeric columns; row selection tints `accent`.
86
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`
87
+ for content-heavy), beside the work, not over it.
88
+ - **Badge** — status pill (`radius-scale` max, the one controlled brand pill nod), hairline `border` or
89
+ status fill, uppercase caption; status badges take `success` / `warning` / `destructive`, never `primary`.
90
+
91
+ ## 5 Layout
92
+
93
+ Base spacing rhythm 8px on a 4px grid; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64`
94
+ (48 added on the 8px grid; the corpus jumps 32→64 for marketing bands, which stay behind). Shell
95
+ dimensions map one-to-one to the layout primitives: sidebar `sidebar-width-expanded` /
96
+ `sidebar-width-collapsed`, topbar `topbar-height`, side panel `side-panel-width` / `side-panel-width-rich`,
97
+ modal `modal-width-max`, forms `form-max-width`, tables full-width. The marketing section padding
98
+ (64–96px) and the 1200px centered container stay behind. Density is governed globally by `density-tier`
99
+ and stepped per archetype by the surface catalog — never by absolute overrides.
100
+
101
+ ## 6 Depth
102
+
103
+ Subtly lifted, cool. Unlike a pure-flat operator brand, Stripe carries one soft elevation cue — a
104
+ blue-tinted shadow — and otherwise leans on hairlines and the surface ladder:
105
+
106
+ - **0 — canvas** `background` white, no border.
107
+ - **1 — panel / card** `card` on a 1px `border`; lifts on a soft blue-tinted shadow
108
+ (`rgba(0,55,112,0.08) 0 1px 3px`) — the brand's signature cool lift, kept restrained.
109
+ - **2 — overlay** `popover` / side panel / modal — a deeper blue-tinted `md`
110
+ (`rgba(0,55,112,0.08) 0 8px 24px`) for floating chrome. No level stacks a heavier shadow to signal
111
+ rank; rank is border, position, and the one soft lift.
112
+
113
+ The gradient-mesh backdrop — the corpus's primary marketing depth medium — stays behind entirely. Focus
114
+ is a 2px indigo `ring` outline (never a glow), visible on every interactive element. Three z-levels:
115
+ content, sticky chrome, overlay.
116
+
117
+ ## 7 Do's & Don'ts
118
+
119
+ - **Do** reserve indigo `primary` for the single most important action and inline link emphasis — one
120
+ filled control per view. If two things want it, one is not primary.
121
+ - **Do** keep ink deep navy `#0d253d`, never pure black; keep the temperature cool, hairlines blue-leaning.
122
+ - **Do** lift cards on the soft blue-tinted shadow (`shadow-blue`), never a neutral gray drop shadow.
123
+ - **Do** apply `tabular-nums` to every money and numeric column and `font-mono` to IDs, codes, timestamps;
124
+ keep `ss01` on the body.
125
+ - **Don't** promote a second chromatic accent — the gradient stops (cream, sherbet, lavender, magenta,
126
+ ruby) are chart series only, never chrome, and indigo is never a body-text color.
127
+ - **Don't** pill the primary CTA — the marketing pill stays behind; buttons take `radius`, only status
128
+ badges pill.
129
+ - **Don't** carry the gradient mesh, the cream feature band, or the dark-navy featured-tier inversion into
130
+ an operator surface.
131
+ - **Don't** open detail or edit in a modal when the side panel fits — modals are confirmations only.
132
+
133
+ ## 8 Responsive
134
+
135
+ The operator sweep is 375 / 768 / 1024 / 1440.
136
+
137
+ | Breakpoint | What changes |
138
+ | --- | --- |
139
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
140
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
141
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
142
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
143
+
144
+ ## 9 Agent Prompt Guide
145
+
146
+ **Carries over:** indigo `primary` (`#533afd`) as the single reserved accent · deep-navy ink `#0d253d`
147
+ (never pure black) · the cool temperature with a cooler input hairline · the soft blue-tinted card
148
+ shadow (`rgba(0,55,112,0.08)`) · the thin Sohne/Inter type voice with negative heading tracking and
149
+ `ss01` · `tabular-nums` money as the financial-data signal.
150
+
151
+ **Stays behind:** the gradient-mesh backdrop · hero-scale display (56px, weight 300) · the pill CTA
152
+ (`8px 16px` pill) · the cream feature band · the dark-navy featured-tier inversion · the composited
153
+ product-UI mockups · the dark-app dashboard shell as the working surface.
154
+
155
+ - Lead every list surface with its table; accent only the primary action in indigo.
156
+ - Detail and edit go in the side panel; a modal is a confirmation, not a workspace.
157
+ - Every money and numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`, and every
158
+ workflow completes from the keyboard with the indigo `ring` outline always visible.
159
+ - Lift a card on the soft blue-tinted shadow, not a gray one; reach past a hairline only for a real
160
+ overlay. Leave the gradient mesh, the hero display, and the cream bands behind.
@@ -0,0 +1,173 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Supabase
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Supabase — an operator reading of the white-canvas, emerald-green system
9
+
10
+ Supabase's web system is the quietly-technical brand in the database category: a committed white
11
+ canvas, near-black ink that is never pure black, one emerald-green voltage held for the CTA, and real
12
+ product UI (dashboard tables, SQL editors, log streams) doing the decorative work. This entry is the
13
+ *operator* reading — an internal tool (query console, project dashboard, job queue, log stream) in
14
+ Supabase's language. What carries: the white canvas, the single emerald accent held scarce, the
15
+ near-black ink, the idiosyncratic near-black-on-green button, flat hairline-first depth, the 6px
16
+ not-pill radius, the near-black `#1c1c1c` inlay for code and logs (the developer DNA), and Circular's
17
+ mid-weight-500 humanist voice with tight negative tracking. What stays behind: the 64/48px hero
18
+ display, the composited product-mockup float shadows, the dark inverted featured pricing tier, and the
19
+ 64–96px marketing section rhythm.
20
+
21
+ ## 1 Visual Theme
22
+
23
+ Light by default; dark is opt-in — the white `background` (`#ffffff`) is the committed floor, and the
24
+ white-canvas commitment is the brand (no atmospheric gradient, no dark marketing track). Flat:
25
+ hierarchy comes from a fine greyscale hairline ladder, type weight, and near-black-on-white contrast —
26
+ never heavy shadow. A single accent, emerald `primary` (`#3ecf8e`), is the only chromatic event on a
27
+ surface: it wears the one primary action, the focus `ring`, and the active-nav indicator, nothing else.
28
+ Ink is near-black `foreground` (`#171717`) — never pure `#000000`. The neutral ramp is a calibrated
29
+ achromatic grey (white through `#fafafa`, `#ededed`, `#dfdfdf` down to `#171717`). Density is
30
+ `standard` and steps denser per archetype — the product's tables and log streams read technical.
31
+
32
+ ## 2 Color Roles
33
+
34
+ Light values first. One accent — emerald `primary` is the only chromatic hue that carries meaning;
35
+ status hues speak only status.
36
+
37
+ | Role | Value | Allowed where |
38
+ | --- | --- | --- |
39
+ | `background` / `card` / `popover` | white `#ffffff` (canvas) | page, cards, and overlays — the dominant surface, differentiated by hairline not brightness |
40
+ | `foreground` | near-black `#171717` (ink) | all primary ink and headlines — never pure black |
41
+ | `muted` | barely-tinted `#fafafa` (canvas-soft) | hover rows, subtle fills, quiet band tints |
42
+ | `secondary` | light grey `#f2f2f2` | secondary-button and segmented fills, one step below canvas |
43
+ | `muted-foreground` | mid grey `#707070` (ink-mute) | labels, captions, secondary text |
44
+ | `border` / `input` | hairline `#dfdfdf` | every separator, grid line, and field edge |
45
+ | `primary` | emerald `#3ecf8e` | the one primary action; active-nav indicator; the signature CTA and dot |
46
+ | `primary-foreground` | near-black `#171717` (on-primary) | text on the green action — the button reads "lit" with dark type, not a colored chip |
47
+ | `accent` | grey lift `#ededed` (hairline-cool) | selected/hovered rows and nav — a neutral lift, never coloured green |
48
+ | `ring` | emerald `#3ecf8e` | the focus outline — unmistakable, because keyboard-first |
49
+ | `destructive` | clean red `#dc2626` | destructive actions and error state only |
50
+ | `success` / `warning` | deep-emerald `#24b47e` / status-yellow `#ffdb13` | status signalling only, never chrome |
51
+
52
+ The emerald's power is its scarcity at element level; the rich accent set (purple, violet, pink,
53
+ indigo, tomato, crimson) is chart-and-logo voltage and carries no operator role beyond charts (see §7).
54
+
55
+ ## 3 Typography
56
+
57
+ One sans, one mono. `font-mono` is the brand's **system mono** stack (`ui-monospace`, Menlo / Monaco
58
+ / Consolas — the corpus ships no proprietary mono webfont) for IDs, codes, timestamps, log lines,
59
+ and SQL; numeric columns render `tabular-nums`. The marketing display scale (64/48px) stays behind —
60
+ an operator surface tops out at a 28px page title.
61
+
62
+ | Step | Role | Size · line | Weight · tracking |
63
+ | --- | --- | --- | --- |
64
+ | h1 | page title | 28px / 1.2 | `font-weight-strong` · `heading-tracking` |
65
+ | h2 | section head | 22px / 1.2 | `font-weight-strong` · -0.01em |
66
+ | h3 | card / group head | 18px / 1.4 | `font-weight-strong` |
67
+ | body | UI + prose | 16px / 1.5 | `font-weight-normal` |
68
+ | small | labels, meta, dense table | 13px / 1.45 | `font-weight-normal` |
69
+ | caption | uppercase eyebrow | 12px / 1.45 | `font-weight-strong`, +0.02em, uppercase |
70
+ | code | IDs, logs, SQL | 14px / 1.5 | `font-weight-normal` |
71
+
72
+ Display weight caps at 500 — the brand's calibrated mid-weight reads engineered, and breaks at 600+.
73
+ Negative tracking on headings is the signature; build hierarchy on size and tight tracking, never a
74
+ second family or a heavier-than-500 weight.
75
+
76
+ ## 4 Component Stylings
77
+
78
+ Every recurring operator component composes from the primitives — no literal values.
79
+
80
+ - **Button** — primary: filled emerald `primary` with near-black `primary-foreground`, `radius` (6px),
81
+ never a pill; pressed lifts to deep-emerald. Secondary: `secondary` fill, 1px `border`, `foreground`.
82
+ Ghost: transparent, `accent` on hover.
83
+ - **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the emerald
84
+ `ring` at full 2px, no glow.
85
+ - **Card** — `card` surface on a 1px `border`, `radius`; depth is the hairline, not shadow — shadow
86
+ only when it must lift off the canvas; inset by `density-inset`.
87
+ - **Table row** — height `table-row-height`; `border` grid lines carry the grid; `muted` on hover;
88
+ `tabular-nums` on numeric columns; selection tints `accent` (neutral, never green).
89
+ - **Side panel** — detail and edit open in the panel (`side-panel-width`, `side-panel-width-rich` for
90
+ content-heavy), beside the work, not over it.
91
+ - **Badge** — pill radius, `muted`/status fill, uppercase caption; status badges take `success` /
92
+ `warning` / `destructive`, never `primary`. Pill radius is badges-only.
93
+
94
+ ## 5 Layout
95
+
96
+ Base spacing unit 4px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` — the marketing
97
+ 64–96px section rhythm stays behind. Shell dimensions map one-to-one to the layout primitives: sidebar
98
+ `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height`, side panel
99
+ `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`,
100
+ tables full-width. Density is governed globally by `density-tier` (standard, rewriting the spacing scale
101
+ through `density-gap`) and stepped per archetype by the surface catalog — the data-heavy console and
102
+ log stream step denser, never the whole app.
103
+
104
+ ## 6 Depth
105
+
106
+ Flat, hairline-first. Hierarchy comes from the greyscale ladder and 1px hairlines, not drop shadows:
107
+
108
+ - **0 — canvas** `background` (`#ffffff`), no border.
109
+ - **1 — panel / card** `card` on a 1px `border`; the hairline carries rank — shadow only when a card
110
+ must genuinely lift off the canvas (the faintest `sm`).
111
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a soft `md`
112
+ shadow, enough to separate an overlay from the canvas above a scrim. Rank is border and position,
113
+ never a heavier shadow.
114
+ - **inlay — code / log / SQL** near-black `#1c1c1c` (canvas-night, `#202020` for nested chrome) with
115
+ white text and `font-mono` — the developer DNA carried even in a light UI (the SQL editor and log
116
+ stream wear it).
117
+
118
+ Focus is a 2px emerald `ring` outline (never a glow), visible on every interactive element. Three
119
+ z-levels: content, sticky chrome, overlay.
120
+
121
+ ## 7 Do's & Don'ts
122
+
123
+ - **Do** anchor every surface on the white canvas; the white-canvas commitment is the brand — no
124
+ atmospheric gradient, no dark marketing track.
125
+ - **Do** reserve emerald `primary` for the primary action, the focus `ring`, and the active-nav
126
+ indicator — nothing else. Its scarcity is what reads as the one chromatic event.
127
+ - **Do** set near-black `primary-foreground` on the green button — the brand's idiosyncratic "lit"
128
+ read, dark type on green, never white.
129
+ - **Do** carry hierarchy with the greyscale ladder, hairlines, weight, and tight tracking — the brand
130
+ is flat.
131
+ - **Do** dress code, log, and SQL panels in the near-black inlay (`#1c1c1c`, `font-mono`) — show the
132
+ real query, not an illustration of one.
133
+ - **Do** apply `tabular-nums` to numeric columns and `font-mono` to IDs, codes, timestamps, and SQL.
134
+ - **Don't** promote a second chromatic accent — purple, yellow, pink, and indigo belong in charts and
135
+ logos only, never as system or UI colours.
136
+ - **Don't** bump display weight above 500, or set white text on the green button — both break the brand.
137
+ - **Don't** pill controls or reach for a radius outside `radius-scale` — the button/input radius is 6px.
138
+ - **Don't** signal elevation with heavy drop shadows, or open detail in a modal when the panel fits.
139
+
140
+ ## 8 Responsive
141
+
142
+ The operator sweep is 375 / 768 / 1024 / 1440.
143
+
144
+ | Breakpoint | What changes |
145
+ | --- | --- |
146
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
147
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
148
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
149
+ | 1440 | content caps at `form-max-width` for forms; tables and dashboards use the full width |
150
+
151
+ Code, log, and SQL inlays keep mono legibility at every breakpoint by scrolling horizontally, not
152
+ wrapping.
153
+
154
+ ## 9 Agent Prompt Guide
155
+
156
+ Directives the emitting agent follows verbatim:
157
+
158
+ - Wear the white canvas by default; the white-canvas commitment is Supabase — no gradient, no dark
159
+ marketing band. Panels read by their hairline, not by brightness.
160
+ - Spend emerald once per surface: the primary action, the focus ring, the active-nav indicator. If two
161
+ things want the green, one is not primary. Colour otherwise belongs to charts and status.
162
+ - Set near-black type on the green button (`primary-foreground` `#171717`), never white — the "lit"
163
+ green with dark type is the brand's signature.
164
+ - Headings ride Inter at weight 500 with tight negative tracking; the display scale (64/48px) stays
165
+ behind — operator headings top out at 28px, hierarchy is size and tracking. Never exceed weight 500.
166
+ - Dress code, log, and SQL panels in the near-black `#1c1c1c` inlay with `font-mono`; show the real
167
+ query, not a mockup of one.
168
+ - Every numeric column is `tabular-nums`; every ID / code / timestamp / log line and SQL block is
169
+ `font-mono` (system mono, no webfont).
170
+ - Detail and edit go in the side panel beside the work; a modal is a confirmation, not a workspace.
171
+ - Keyboard-first: the emerald `ring` focus outline is always visible.
172
+ - Leave behind: the 64/48px hero display, the composited product-mockup float shadows, the dark
173
+ featured pricing tier, and the 64–96px section rhythm — marketing chrome, not operator chrome.
@@ -0,0 +1,145 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Superhuman
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Superhuman — the warm-editorial operator reading
9
+
10
+ An operator translation of Superhuman's fast-productivity brand: a warm, quiet, editorial system
11
+ whose content body is white with off-black warm-grey ink, anchored by a single deep indigo-navy
12
+ accent. The marketing surfaces are theatrical — a violet-sky atmospheric hero, hero-scale display
13
+ type, a deep-teal closing band that resolves every page. None of that theatre belongs on a queue or
14
+ a case detail; what carries is the warmth (warm neutrals, sub-default type weights, off-black ink),
15
+ the 8px rounded-rectangle radius character, and the one-accent indigo discipline.
16
+
17
+ ## 1 Visual Theme
18
+
19
+ Light by default — the brand's content body *is* white; dark is opt-in. Warm and quiet: the neutral
20
+ ramp leans warm-grey, ink is `foreground` warm off-black `#292827` (never pure black), the canvas is
21
+ white, and hairlines are a warm grey `#e8e4dd`. Flat — hierarchy comes from hairline, type weight, and
22
+ whitespace, not shadow. A single accent, `primary` deep indigo-navy `#1b1938` (near-black), is reserved
23
+ for the one action that matters and for active nav; it is the brand's own CTA color. The radius
24
+ character is the signature: 8px rounded rectangles, never a pill on a working surface. Density is
25
+ `standard` and editorial-roomy — it steps denser per archetype, never cramped. The violet-sky hero
26
+ gradient, hero-scale display type, and the teal closing band stay behind as marketing (see §7).
27
+
28
+ ## 2 Color Roles
29
+
30
+ Light values first. One accent — `primary` is the only chromatic hue that carries meaning; status hues
31
+ speak only status. Violet-soft and teal are marketing surfaces and carry no operator role.
32
+
33
+ | Role | Value | Allowed where |
34
+ | --- | --- | --- |
35
+ | `background` / `card` / `popover` | white `#ffffff` | page, cards, and overlays — the dominant surface |
36
+ | `foreground` | warm off-black `#292827` | all primary ink — never pure black |
37
+ | `muted` / `secondary` | warm off-white `#f4f2ed` | hover rows, subtle fills, secondary buttons |
38
+ | `muted-foreground` | warm grey `#73706d` | labels, captions, secondary text |
39
+ | `border` / `input` | warm hairline `#e8e4dd` | every separator, grid line, and field edge |
40
+ | `primary` | indigo-navy `#1b1938` | the one primary action; active nav; key interactive detail |
41
+ | `accent` | pale indigo tint `#edecf2` | selected / hovered rows and nav, on-accent surfaces only |
42
+ | `ring` | `primary` indigo | the focus outline — unmistakable, because keyboard-first |
43
+ | `destructive` | warm red `#c0362b` | destructive actions and error state only |
44
+ | `success` / `warning` | green `#157a52` / amber `#b5791f` | status signalling only, never chrome |
45
+
46
+ ## 3 Typography
47
+
48
+ One sans, one mono. `font-sans` is Super Sans VF — the proprietary variable display sans; Inter
49
+ Variable is the documented open substitute, run at the same sub-default weights. The brand's warmth
50
+ signature is the *in-between* weight: body sits at `font-weight-normal` 460 (not 400), headings at
51
+ `font-weight-strong` 600. Display tracking is negative and tight; operator headings inherit a
52
+ proportioned `heading-tracking` of `-0.02em`. `font-mono` is derived (the marketing brand ships none)
53
+ for IDs, codes, timestamps, and log lines. Numeric columns render `tabular-nums` so figures align.
54
+
55
+ | Step | Role | Size · line | Weight · tracking |
56
+ | --- | --- | --- | --- |
57
+ | h1 | page title | 24px / 1.2 | `font-weight-strong` · `heading-tracking` |
58
+ | h2 | section head | 19px / 1.25 | `font-weight-strong` · `heading-tracking` |
59
+ | h3 | card / group head | 15px / 1.35 | `font-weight-strong` · `heading-tracking` |
60
+ | body | UI + prose | 14px / 1.5 | `font-weight-normal` (460) |
61
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
62
+ | caption | uppercase eyebrow | 12px / 1.3 | `font-weight-strong`, `+0.02em`, uppercase |
63
+
64
+ Keep the sub-default weight — the quiet warmth is the type voice. Bump weight for emphasis, never size.
65
+
66
+ ## 4 Component Stylings
67
+
68
+ Every recurring operator component composes from the primitives — no literal values.
69
+
70
+ - **Button** — `primary`: filled `primary` indigo on `primary-foreground` white, `radius` 8px, never a
71
+ pill. Secondary: `secondary` fill, 1px `border`, `foreground`. Ghost: transparent, `accent` on hover.
72
+ - **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the `ring` at a
73
+ full 2px, no glow.
74
+ - **Card** — `card` surface, 1px `border`, `radius`; shadow only when it must lift (`shadow-intensity`);
75
+ inset by `density-inset`.
76
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
77
+ numeric columns; row selection tints `accent`.
78
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`
79
+ for content-heavy) beside the work, not over it.
80
+ - **Badge** — hairline `border`, `muted` / status fill, uppercase caption; status badges take
81
+ `success` / `warning` / `destructive`, never `primary`.
82
+
83
+ ## 5 Layout
84
+
85
+ Base spacing unit 8px (the brand's base, with 2 / 4 / 12 sub-tokens for fine work); the on-scale ramp
86
+ is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64`. Shell dimensions map one-to-one to the layout primitives:
87
+ sidebar `sidebar-width-expanded` 256 / `sidebar-width-collapsed` 56, topbar `topbar-height` 56, side
88
+ panel `side-panel-width` 440 / `side-panel-width-rich` 640, modal cap `modal-width-max` 560, forms
89
+ `form-max-width` 640, tables full-width. Density is governed globally by `density-tier` and stepped per
90
+ archetype by the surface catalog — never by absolute overrides. The editorial roominess is carried by
91
+ the 8px base, the taller `table-row-height`, and the larger radius, not by inflating the global tier.
92
+
93
+ ## 6 Depth
94
+
95
+ Flat. Hierarchy comes from the surface ladder and hairlines, not shadow:
96
+
97
+ - **0 — canvas** `background`, no border.
98
+ - **1 — panel / card** `card` on a 1px `border`; shadow only when it must lift off the canvas —
99
+ `0 1px 3px rgba(0,0,0,0.08)` (riding `shadow-intensity`).
100
+ - **2 — overlay** `popover` / side panel / modal — the one place shadow earns its keep,
101
+ `0 8px 24px rgba(0,0,0,0.12)`.
102
+
103
+ The hero's violet-sky atmospheric backdrop (the marketing depth medium) stays behind. Focus is a 2px
104
+ `ring` outline in indigo, never a glow, visible on every interactive element. Three z-levels: content,
105
+ sticky chrome, overlay.
106
+
107
+ ## 7 Do's & Don'ts
108
+
109
+ - **Do** reserve `primary` indigo for the single most important action on a surface; everything else is
110
+ neutral or status.
111
+ - **Do** carry hierarchy with warm hairlines, sub-default weight steps, and whitespace — the brand is flat.
112
+ - **Do** hold ink at warm off-black `foreground` `#292827`; pure black breaks the brand's quiet warmth.
113
+ - **Do** apply `tabular-nums` to every numeric column and `font-mono` to IDs, codes, and timestamps.
114
+ - **Don't** wear the marketing theatre: no violet-sky hero gradient, no deep-teal closing band, no
115
+ hero-scale display type on a working surface — those are brochure devices, not operator chrome.
116
+ - **Don't** promote a second chromatic accent. Teal and violet-soft stay marketing-decorative; status
117
+ uses `success` / `warning` / `destructive`.
118
+ - **Don't** pill the primary CTA — 8px rounded rectangle is the button shape; the pill is hero-only.
119
+ - **Don't** signal elevation with heavy drop shadows, or open detail in a modal when the side panel fits.
120
+
121
+ ## 8 Responsive
122
+
123
+ The operator sweep is 375 / 768 / 1024 / 1440.
124
+
125
+ | Breakpoint | What changes |
126
+ | --- | --- |
127
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
128
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
129
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
130
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
131
+
132
+ ## 9 Agent Prompt Guide
133
+
134
+ Directives the emitting agent follows verbatim:
135
+
136
+ - What carries from Superhuman: the warm neutral palette and warm off-black ink, the single indigo
137
+ accent, the 8px rounded-rectangle radius, and the sub-default type weights (460 body / 600 strong).
138
+ - What stays behind: the violet-sky hero gradient, the deep-teal closing band, hero-scale display type,
139
+ and the pill CTA — every one is a marketing device with no operator role.
140
+ - Lead every list surface with its table; lead every entity with its primary read, not its chrome.
141
+ - Accent only the primary action with indigo. If two things want the accent, one is not primary.
142
+ - Detail and edit go in the side panel; a modal is a confirmation, not a workspace.
143
+ - Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`.
144
+ - Every workflow completes from the keyboard; the indigo `ring` focus outline is always visible.
145
+ - Stay flat and warm — hairline and weight before shadow; never pure black, never a pill on a CTA.