@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,163 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Sentry
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Sentry — the violet-and-lime developer-console operator design
9
+
10
+ Sentry's design language reads like a debugging console wearing a leather jacket: a deep
11
+ purple-violet midnight canvas, electric-lime keyword highlights, sticker mascots, a chunky display
12
+ sans. But the brand is explicitly *two-polarity* — dark violet owns marketing and feature pages,
13
+ while **white owns the dense, scannable, transactional surfaces** (pricing, contact, reference)
14
+ where developers scan tables. That white polarity is exactly operator territory, so this entry wears
15
+ it. What carries: the violet palette and its cool temperature, the authoritative near-black-violet
16
+ primary button that reads as the strongest affordance on either polarity, the Rubik UI voice with
17
+ uppercase `+0.2px` caps, Monaco on every code/log surface, the 8px developer-dialect radius, and
18
+ lime held scarce as a signature highlight. What stays behind: the 88px display hero, the starfield
19
+ texture, the floating mascots, the lime squiggle divider, and the dark-canvas marketing atmosphere.
20
+
21
+ ## 1 Visual Theme
22
+
23
+ Light by default; dark is opt-in. The operator UI sits on Sentry's white transactional canvas
24
+ (`#ffffff`) — the polarity the brand reserves for dense reference content, not its atmospheric dark
25
+ marketing hero. Flat: hierarchy is carried by a cool `#e5e7eb` hairline grid, type weight, and violet
26
+ temperature — never heavy shadow. A single accent — the authoritative midnight-violet `primary`
27
+ (`#150f23`), a near-black button with a violet undertone — carries the one action that matters, and
28
+ reads as the most authoritative affordance on any canvas, so it is never softened to a bright
29
+ brand-violet. Ink is deep ink-violet `foreground` (`#1f1633`), one hair lifted from the button. Lime
30
+ stays scarce — a signature highlight glyph, never a fill (§7). The **dark violet console remains the
31
+ opt-in iconic read** for a monitoring surface that wants it, but light is the default. Density is
32
+ `standard`, dense-capable from the console heritage, stepping denser per archetype.
33
+
34
+ ## 2 Color Roles
35
+
36
+ Light values. One accent — midnight-violet `primary` is the only hue that carries the primary-action
37
+ meaning; lime, pink, and the violet family speak charts and the scarce highlight, status hues speak
38
+ only status. The dark-console value is noted where it defines the identity.
39
+
40
+ | Role | Value | Allowed where |
41
+ | --- | --- | --- |
42
+ | `background` / `card` / `popover` | white `#ffffff` (dark console: `#1f1633`) | page, cards, and overlays — the dominant surface |
43
+ | `foreground` | deep ink-violet `#1f1633` (dark console: `#ffffff`) | all primary ink — the brand's single token doing double duty as dark canvas and light ink |
44
+ | `muted` / `secondary` | faint violet tint `#f3f1f8` | hover rows, subtle fills, secondary-button fill |
45
+ | `muted-foreground` | violet-gray `#6b6577` | labels, captions, secondary text |
46
+ | `border` | cool hairline `#e5e7eb` | every divider and grid line on the light canvas |
47
+ | `input` | field hairline `#cfcfdb` | text-field and form-control edges — one step firmer than the divider grid |
48
+ | `primary` | midnight violet `#150f23` | the one primary action; active nav; nowhere decorative |
49
+ | `primary-foreground` | white `#ffffff` | text on the near-black action |
50
+ | `accent` | faint violet wash `#e9e5f4` | selected / hovered rows and nav — a violet tint, never a lime or pink wash |
51
+ | `ring` | focus blue `#3b82f6` | the focus outline — the corpus's one documented blue, reserved for keyboard focus |
52
+ | `destructive` | cool crimson `#e11d48` | destructive actions and error state only |
53
+ | `success` / `warning` | green `#16a34a` / amber `#d97706` | status signalling only, never chrome |
54
+
55
+ Lime `#c2ef4e`, hot-pink `#fa7faa`, and the violet family live in charts and the one scarce highlight device (§7) — never a button, a fill, or body text.
56
+
57
+ ## 3 Typography
58
+
59
+ One UI sans, one mono. `font-sans` is **Rubik** (fallbacks `-apple-system, system-ui, Segoe UI,
60
+ Helvetica, Arial`) — it carries every body, caption, button, and eyebrow role. `font-mono` is **Monaco**
61
+ (Menlo, Ubuntu Mono fallbacks) for IDs, codes, timestamps, log lines, stack traces, and event payloads.
62
+ The proprietary chunky display sans and its 88px hero stay behind — an operator surface tops out at a
63
+ 24px page title in Rubik. The brand's signature is **uppercase caps with `+0.2px` tracking** on buttons
64
+ and eyebrows — a console-prompt cadence carried on the caption step by hand. Functional copy rides the
65
+ denser 1.5 leading ("reads like a log"); the airy 2.0 marketing leading stays behind. Numeric columns
66
+ render `tabular-nums` (floor P4).
67
+
68
+ | Step | Role | Size · line | Weight · tracking |
69
+ | --- | --- | --- | --- |
70
+ | h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` |
71
+ | h2 | section head | 20px / 1.25 | `font-weight-strong` · 0 |
72
+ | h3 | card / group head | 16px / 1.3 | `font-weight-strong` · 0 |
73
+ | body | UI + prose | 14px / 1.5 | `font-weight-normal` |
74
+ | small | labels, meta, dense table | 13px / 1.45 | `font-weight-normal` |
75
+ | caption | uppercase eyebrow / button cap | 12px / 1.3 | `font-weight-strong`, `+0.2px`, uppercase |
76
+ | code | IDs, logs, payloads | mono 13px / 1.5 | `font-weight-normal` |
77
+
78
+ ## 4 Component Stylings
79
+
80
+ Every recurring operator component composes from the primitives — no literal values.
81
+
82
+ - **Button** — primary: filled midnight-violet `primary` on white `primary-foreground`, `radius` (8px),
83
+ uppercase `+0.2px` caption label, no pill. Secondary: `secondary` fill, 1px `border`, `foreground`.
84
+ Ghost: transparent, `accent` on hover.
85
+ - **Input** — `background` fill, 1px `input` border (`border-weight`), `radius` (inputs step to 6px);
86
+ focus draws the blue `ring` at full 2px, no glow.
87
+ - **Card** — `card` surface on a 1px `border`, cards step to 12px radius; shadow only when a true overlay must lift off the canvas; inset by `density-inset`.
88
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on numeric columns; row selection tints `accent`.
89
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich` for content-heavy payloads), beside the work, not over it.
90
+ - **Badge** — hairline `border`, `muted`/status fill, uppercase caption, 4px pill-ish radius; status badges take `success` / `warning` / `destructive`, never `primary`.
91
+
92
+ ## 5 Layout
93
+
94
+ Base spacing unit 4px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` — the corpus's
95
+ `2 / 4 / 8 / 12 / 16 / 24 / 32` map direct and the 96px marketing section rhythm stays behind. Shell
96
+ dimensions map one-to-one to the layout primitives: sidebar `sidebar-width-expanded` (248px) /
97
+ `sidebar-width-collapsed` (56px), topbar `topbar-height` (56px), side panel `side-panel-width` (420px) /
98
+ `side-panel-width-rich` (640px), modal cap `modal-width-max`, forms `form-max-width` (the brand's
99
+ ~1152px container is marketing), tables full-width. Density is governed globally by `density-tier` and
100
+ stepped per archetype — never by absolute overrides.
101
+
102
+ ## 6 Depth
103
+
104
+ Flat. Hierarchy comes from the surface ladder and cool hairlines, not shadow:
105
+
106
+ - **0 — canvas** `background`, no border.
107
+ - **1 — panel / card** `card` on a 1px `border`; shadow only when it must lift off the canvas.
108
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a soft `md`
109
+ shadow (the corpus's level-2 light-canvas card shadow). Rank is border and position; the marketing
110
+ glow-halo CTA stays behind.
111
+ - **inlay — code / log / terminal** near-black `#150f23` with white text and `font-mono` — the corpus's
112
+ `code-block` carried as the surface for log streams, stack traces, and event payloads inside a light UI.
113
+
114
+ Focus is a 2px blue `ring` outline (never a glow), visible on every interactive element (floor P6).
115
+ Three z-levels: content, sticky chrome, overlay. The full **dark violet console** is the opt-in iconic
116
+ read for a monitoring surface that wants it — same tokens, inverted polarity.
117
+
118
+ ## 7 Do's & Don'ts
119
+
120
+ - **Do** reserve midnight-violet `primary` for the single most important action and active nav — never
121
+ soften it to a bright brand-violet; the near-black is the point, authoritative on any canvas.
122
+ - **Do** carry hierarchy with cool hairlines, weight, and whitespace, keep every button and eyebrow
123
+ uppercase with `+0.2px` tracking, and dress code/log/payload panels in the near-black inlay
124
+ (`#150f23`, Monaco) with `tabular-nums` on numeric columns.
125
+ - **Don't** make lime a fill. `#c2ef4e` is a scarce highlight glyph (a matched-keyword chip, a single
126
+ "live" marker — one per viewport) and a chart hue; a lime "success" reads yellow and fails contrast,
127
+ so status uses `success` / `warning` / `destructive`.
128
+ - **Don't** promote a second brand accent — pink and the violet family are chart/decorative graces, not
129
+ UI action colors; keep crimson `destructive` distinct from decorative pink.
130
+ - **Don't** pill the primary CTA or reach outside `radius-scale` (buttons 8px; pill is badges only),
131
+ blend the two canvas polarities on one content band, signal rank with heavy shadow, or open detail in
132
+ a modal when the side panel fits.
133
+
134
+ ## 8 Responsive
135
+
136
+ The operator sweep is 375 / 768 / 1024 / 1440.
137
+
138
+ | Breakpoint | What changes |
139
+ | --- | --- |
140
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
141
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
142
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
143
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
144
+
145
+ Code, log, and payload inlays keep Monaco legibility at every breakpoint by scrolling horizontally, not wrapping.
146
+
147
+ ## 9 Agent Prompt Guide
148
+
149
+ Directives the emitting agent follows verbatim:
150
+
151
+ - Reach for the white transactional canvas first — Sentry's dense polarity, not the dark marketing
152
+ hero (which is the opt-in iconic read, not the default). Spend the accent once: midnight-violet
153
+ `primary` marks THE action and active nav, never softened to a bright violet.
154
+ - Keep every button and eyebrow uppercase with `+0.2px` tracking — the console cadence is the brand;
155
+ emphasise by weight, never size. Lime is scarce: one highlight glyph per viewport (matched keyword,
156
+ a single "live" marker) plus the chart series — never a button, fill, or body text.
157
+ - Dress code, log, and event-payload panels in the near-black inlay (`#150f23`, Monaco) — real product
158
+ chrome, not a light mock. Every numeric column is `tabular-nums`; every ID / timestamp is `font-mono`.
159
+ - Stay flat — cool hairlines and the surface ladder before shadow; reach past a hairline only for a
160
+ real overlay. Keyboard-first: the blue `ring` focus outline is always visible.
161
+ - Leave behind the starfield texture, the floating mascots, the lime squiggle divider, and the 96px
162
+ marketing rhythm. What carries: the violet palette and cool temperature, the authoritative near-black
163
+ button, the Rubik caps cadence, Monaco, and the 8px radius character.
@@ -0,0 +1,147 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Shopify
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Shopify — operator reading
9
+
10
+ Shopify's brand runs two canvases that never blend: a cinematic near-black marketing track (full-bleed
11
+ merchant photography, 96px thin display type, one white-stroked black pill) and a warm-cream
12
+ transactional track (pricing, signup, dashboards) in pastel greens with pill buttons and Inter body. An
13
+ operator surface wears the **transactional** track: the cinematic black canvas, the photography, and the
14
+ hero-scale thin display type stay behind; the cream/white layering, pure-black ink, the single
15
+ mint-green accent, the soft paper-halo shadow, and the pill button character carry across — a
16
+ comfortable, editorial, high-contrast translation, not a marketing transcription.
17
+
18
+ ## 1 Visual Theme
19
+
20
+ Light by default; dark is opt-in. The anchor surface is a faintly warm cream `background` carrying
21
+ crisp white `card` panels — that cream-page / white-card layering is the brand's editorial warmth. Ink
22
+ is pure black; a single chromatic accent, mint-green `accent`, marks growth and selection. Depth is not
23
+ flat — white cards lift on a soft layered "paper halo" (`shadow`), the light track's signature.
24
+ Comfortable `standard` density; the pill button shape carries in from the brand.
25
+
26
+ ## 2 Color Roles
27
+
28
+ Light values first. One chromatic accent — the mint-green family; black is ink/primary, a neutral,
29
+ not a second color.
30
+
31
+ | Role | Value | Allowed where |
32
+ | --- | --- | --- |
33
+ | `background` | warm cream `#fbfbf5` | the page canvas — editorial warmth under white cards |
34
+ | `card` / `popover` | white `#ffffff` | cards, panels, overlays — the crisp surface on the cream page |
35
+ | `foreground` | pure black `#000000` | all primary ink on light (the brand's `ink`) |
36
+ | `muted` / `secondary` | light zinc `#f4f4f5` | hover rows, subtle fills, secondary chips |
37
+ | `muted-foreground` | mid zinc `#71717a` | labels, captions, secondary text |
38
+ | `border` / `input` | hairline zinc `#e4e4e7` | every separator, grid line, and field edge |
39
+ | `primary` | black `#000000` | the one primary action (a black pill); active nav |
40
+ | `primary-foreground` | white `#ffffff` | labels on the black pill |
41
+ | `accent` | aloe mint `#c1fbd4` | selected/hovered rows, growth highlight, featured tint — a fill, never behind type |
42
+ | `accent-foreground` | black `#000000` | ink on the mint fill |
43
+ | `ring` | black `#000000` | the focus outline — matches `primary`, unmistakable |
44
+ | `destructive` | commerce red `#d82c0d` | destructive actions and error state only |
45
+ | `success` | commerce green `#008060` | positive status text and badges |
46
+ | `warning` | amber `#b45309` | caution status only |
47
+
48
+ The pale aloe/pistachio greens are surface fills, never text colors — a status "success" reads on the
49
+ saturated `#008060`. The cool zinc text ladder against the warm cream canvas is the temperature signature.
50
+
51
+ ## 3 Typography
52
+
53
+ The brand's display face, **Neue Haas Grotesk Display** at a thin cut (weight 330), is a marketing
54
+ signature and its hero scale stays behind. The operator workhorse is **Inter** (`font-sans`): body, UI,
55
+ tables, labels, and headings all ride it, so one sans serves dense chrome. `font-mono` is the system
56
+ monospace for IDs, codes, timestamps, and log lines. Numeric columns render `tabular-nums`.
57
+
58
+ | Step | Role | Size · line | Weight · tracking |
59
+ | --- | --- | --- | --- |
60
+ | h1 | page title | 24px / 1.2 | `font-weight-strong` · `heading-tracking` |
61
+ | h2 | section head | 20px / 1.3 | `font-weight-strong` · `heading-tracking` |
62
+ | h3 | card / group head | 16px / 1.35 | `font-weight-strong` · `heading-tracking` |
63
+ | body | UI + prose | 14px / 1.5 | `font-weight-normal` |
64
+ | small | labels, meta, dense rows | 13px / 1.4 | `font-weight-normal` |
65
+ | caption | uppercase eyebrow | 12px / 1.2 | `font-weight-strong`, `+0.06em`, uppercase |
66
+
67
+ Headings track slightly **open** (`heading-tracking` positive) — the editorial voice runs opposite to
68
+ the tight tracking most operator UIs use; keep it. The OpenType `ss03` stylistic set is the brand's
69
+ character-level signature: apply `font-feature-settings: "ss03"` on the root so it tracks across every
70
+ role. Bump weight for emphasis; never change size.
71
+
72
+ ## 4 Component Stylings
73
+
74
+ - **Button** — `primary`: filled black `primary` on `primary-foreground`, **pill** (the brand
75
+ signature, not `radius`). Secondary: white `card` fill, 1px `border`, `foreground` ink — outlined,
76
+ also pill. Featured/positive: `accent` mint fill, `foreground`, pill.
77
+ - **Input** — `card` fill, 1px `border` (`border-weight`), `radius`; focus draws the black `ring` at 2px.
78
+ - **Card** — white `card` on the cream `background`, 1px `border`, `radius` (larger step for content
79
+ cards); lifts on the soft layered `shadow` — the paper halo, not a hard drop.
80
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
81
+ numeric columns; selection tints `accent`.
82
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`),
83
+ beside the work, not over it.
84
+ - **Badge** — hairline `border`, `muted`/status fill, uppercase caption; status badges take `success` /
85
+ `warning` / `destructive`, never `primary`; the mint `accent` marks featured, not status.
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 brand's own
90
+ 8px-family scale, extended down for fine operator work). Shell dimensions map one-to-one to the layout
91
+ primitives: sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height`, side
92
+ panel `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`,
93
+ tables full-width. Card and section insets run generous (the brand pads comfortably) but the global
94
+ tier stays `standard` — governed by `density-tier`, stepped per archetype, never by absolute overrides.
95
+
96
+ ## 6 Depth
97
+
98
+ Not flat — the light track carries hierarchy partly with a soft shadow:
99
+
100
+ - **0 — canvas** cream `background`, no shadow.
101
+ - **1 — card / panel** white `card` on a 1px `border`, lifted by the soft layered "paper halo"
102
+ (`shadow` at `sm`/`md`) — many tiny low-opacity shadows, never one hard drop.
103
+ - **2 — overlay** `popover` / side panel / modal — the `md`/`lg` shadow, the strongest lift.
104
+
105
+ Focus is a 2px black `ring` outline (never a glow), on every interactive element. Three z-levels:
106
+ content, sticky chrome, overlay. Rank is border, position, and the soft halo — never a harsh shadow.
107
+
108
+ ## 7 Do's & Don'ts
109
+
110
+ - **Do** reserve black `primary` for the single most important action; buttons take the **pill** — the
111
+ one place the brand overrides the operator no-pill default; honor it.
112
+ - **Do** keep the single chromatic accent the mint-green family — a fill for selection, growth, and the
113
+ featured tier, never behind type.
114
+ - **Do** lift white cards on the cream canvas with the soft layered paper halo, and apply
115
+ `font-feature-settings: "ss03"` at the root with `tabular-nums` on every numeric column.
116
+ - **Don't** promote a second chromatic accent, or use the pale aloe/pistachio as a status color —
117
+ status uses `success` / `warning` / `destructive`.
118
+ - **Don't** reach for a rounded-rectangle button — the pill is the brand's non-negotiable button shape.
119
+ - **Don't** bring the cinematic black canvas, full-bleed photography, or 96px thin display type into
120
+ operator chrome — they stay on the marketing track.
121
+
122
+ ## 8 Responsive
123
+
124
+ The operator sweep is 375 / 768 / 1024 / 1440.
125
+
126
+ | Breakpoint | What changes |
127
+ | --- | --- |
128
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
129
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
130
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
131
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
132
+
133
+ ## 9 Agent Prompt Guide
134
+
135
+ Directives the emitting agent follows verbatim:
136
+
137
+ - Layer white `card` panels on the cream `background`; lift them with the soft layered paper halo
138
+ (`shadow`), not a hard drop; overlays one step up.
139
+ - `primary` is black ink; the primary action is a black pill, and buttons keep the pill everywhere —
140
+ this brand overrides the no-pill default.
141
+ - One chromatic accent: mint-green `accent`, a fill for selection, growth, and featured — never behind
142
+ type, never as status.
143
+ - Apply `font-feature-settings: "ss03"` at the root and keep headings tracked slightly open; body and
144
+ tables ride Inter, the thin display face stays behind.
145
+ - Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`; the black `ring`
146
+ focus outline is always visible and every workflow completes from the keyboard.
147
+ - Leave the cinematic black track and its photography on marketing surfaces — never the operator UI.
@@ -0,0 +1,158 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Slack
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Slack — operator reading
9
+
10
+ An operator translation of Slack's design language: the signature deep-aubergine `sidebar`, a white
11
+ content canvas, one aubergine accent, and blue reserved strictly for links. The marketing surface —
12
+ cream-lavender pastel-mesh gradients, 64px hero display, floating product mockups — stays behind.
13
+ What carries is the palette temperature (warm aubergine, cool lavender tints), the humanist type
14
+ voice, Slack's rounded character, and the one thing every stranger recognizes as Slack: the dark
15
+ aubergine workspace rail.
16
+
17
+ ## 1 Visual Theme
18
+
19
+ Light by default; dark is opt-in. The content canvas is white with hairline `border`
20
+ hierarchy — flat, with a friendlier radius than a terminal. The one exception to the light
21
+ polarity is the brand's most enduring asset: the **aubergine `sidebar`**, a categorically
22
+ dark plane carrying light text (a legitimate brand override of the light-default floor —
23
+ recorded plainly in §6). A single accent, aubergine `primary` (`#4a154b`), is reserved for
24
+ the one action that matters; blue `#1264a3` is a functional link color, not a chrome
25
+ accent. Density is `standard`, nudged a hair toward comfort for Slack's relaxed rhythm.
26
+
27
+ ## 2 Color Roles
28
+
29
+ Light values first. One accent — aubergine `primary` is the only chromatic hue that
30
+ carries interactive meaning; link blue is scoped to inline links; status hues speak only
31
+ status.
32
+
33
+ | Role | Value | Allowed where |
34
+ | --- | --- | --- |
35
+ | `background` / `card` / `popover` | white `#ffffff` | page, cards, overlays — the dominant light surface |
36
+ | `foreground` | near-black ink `#1d1d1d` | all primary text on light |
37
+ | `muted` / `secondary` | faint lavender-gray `#f5f3f7` / lavender `#f9f0ff` | hover rows, subtle fills, secondary buttons |
38
+ | `muted-foreground` | mid gray `#696969` | labels, captions, secondary text |
39
+ | `border` / `input` | hairline `#e6e6e6` | every separator, grid line, and field edge |
40
+ | `primary` | deep aubergine `#4a154b` | the one primary action; the sidebar surface; brand-mark moments |
41
+ | `accent` | lavender tint `#f9f0ff` | selected / hovered rows and nav on light |
42
+ | `ring` | aubergine `#611f69` | the focus outline on light surfaces — unmistakable, keyboard-first |
43
+ | `sidebar` | aubergine `#4a154b` | the workspace rail — the one categorically dark surface |
44
+ | link (functional) | blue `#1264a3` | inline links only — never a chrome or CTA color |
45
+ | `destructive` | rust `#cc4117` | destructive actions and error state only |
46
+ | `success` / `warning` | green `#007a5a` / amber `#d97706` | status signalling only, never chrome |
47
+
48
+ Cream `#f4ede4` and the pastel-mesh hero gradients are marketing graces: they carry no
49
+ operator role (see §7).
50
+
51
+ ## 3 Typography
52
+
53
+ One sans, one mono. `font-sans` is Lato — the humanist face that carries Slack's warmth
54
+ at UI sizes (the brand's own display and UI faces are proprietary; a neutral grotesque
55
+ flattens the voice). UI, body, and headings all ride it; heading weight and tracking, not
56
+ a second family, carry emphasis. `font-mono` is JetBrains Mono for IDs, codes,
57
+ timestamps, and log lines. Numeric columns render `tabular-nums` so figures align down a
58
+ column (floor P4).
59
+
60
+ | Step | Role | Size · line | Weight · tracking |
61
+ | --- | --- | --- | --- |
62
+ | h1 | page title | 24px / 1.3 | `font-weight-strong` · `heading-tracking` |
63
+ | h2 | section head | 18px / 1.4 | `font-weight-strong` · `heading-tracking` |
64
+ | h3 | card / group head | 15px / 1.45 | `font-weight-strong` · `heading-tracking` |
65
+ | body | UI + prose | 14px / 1.5 | `font-weight-normal` |
66
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
67
+ | caption | uppercase eyebrow | 12px / 1.2 | `font-weight-strong`, `+0.08em`, uppercase |
68
+
69
+ Body leans on a relaxed 1.5 line-height (a restrained echo of the brand's 1.55) — legible
70
+ without going airy. Bump weight one step for emphasis; never change size to emphasize.
71
+ Hero-scale display (32–64px, tight negative tracking) stays on the marketing surface.
72
+
73
+ ## 4 Component Stylings
74
+
75
+ Every recurring operator component composes from the primitives — no literal values.
76
+
77
+ - **Button** — `primary`: filled aubergine `primary` on `primary-foreground`, pill radius
78
+ (`9999`, the one brand flourish), bold label. Secondary: lavender `secondary` fill,
79
+ `foreground`, workhorse `radius`. Ghost: transparent, `accent` on hover.
80
+ - **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the
81
+ `ring` at full 2px, no glow.
82
+ - **Card** — `card` surface, 1px `border`, `radius`; a soft `md` shadow only when it must
83
+ lift (`shadow-intensity`); inset by `density-inset`.
84
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover;
85
+ selection tints `accent` (lavender); `tabular-nums` on numeric columns.
86
+ - **Sidebar** — aubergine `sidebar` surface, `sidebar-foreground` light text; active item
87
+ a `sidebar-primary` band, hover a subtler `sidebar-accent` — the signature dark rail (§6).
88
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`,
89
+ `side-panel-width-rich` for content-heavy), beside the work, not over it (floor P3).
90
+ - **Badge** — hairline `border`, `muted`/status fill, uppercase caption; status badges take
91
+ `success` / `warning` / `destructive`, never aubergine `primary`.
92
+
93
+ ## 5 Layout
94
+
95
+ Base spacing unit 4px (Tailwind `--spacing` 0.25rem), with 8px as the dominant step
96
+ honoring Slack's rhythm; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64`.
97
+ 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
100
+ `form-max-width`, tables full-width. Density is governed globally by `density-tier`
101
+ (rewriting the spacing scale through `density-gap`) and stepped per archetype by the
102
+ surface catalog — never by absolute overrides.
103
+
104
+ ## 6 Depth
105
+
106
+ Flat on the light canvas; the aubergine rail is the one deliberate exception. Hierarchy
107
+ comes from the surface split and hairlines, not stacked shadow:
108
+
109
+ - **0 — canvas** `background`, no border.
110
+ - **1 — panel / card** `card` on a 1px `border`; a soft `md` shadow only when it must lift.
111
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a soft `md` shadow.
112
+
113
+ The aubergine `sidebar` is a **fixed dark plane, not an elevation** — its prominence comes
114
+ from the surface-polarity split, never a heavier shadow. Focus is a 2px aubergine `ring` on
115
+ light and a light mauve `sidebar-ring` on the rail, visible on every interactive element
116
+ (floor P6). Three z-levels: content, sticky chrome, overlay.
117
+
118
+ ## 7 Do's & Don'ts
119
+
120
+ - **Do** reserve aubergine `primary` for the single most important action; everything else
121
+ is neutral, status, or a link.
122
+ - **Do** keep the aubergine `sidebar` — the dark rail is the brand's most recognizable
123
+ signal; light-on-aubergine is by design.
124
+ - **Do** give the primary CTA the pill radius as the one brand flourish; keep every other
125
+ control on the `radius` workhorse.
126
+ - **Do** use blue for inline links only; apply `tabular-nums` to numeric columns and
127
+ `font-mono` to IDs, codes, and timestamps.
128
+ - **Don't** promote a third accent — aubergine + link-blue is exhaustive; status uses
129
+ `success` / `warning` / `destructive`.
130
+ - **Don't** use aubergine for body text — it is a surface and CTA color, not a type color.
131
+ - **Don't** bring the pastel-mesh gradients, floating mockups, or 64px hero display onto an
132
+ operator surface, and don't pill anything but the primary CTA.
133
+
134
+ ## 8 Responsive
135
+
136
+ The operator sweep is 375 / 768 / 1024 / 1440.
137
+
138
+ | Breakpoint | What changes |
139
+ | --- | --- |
140
+ | 375 | aubergine sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
141
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
142
+ | 1024 | sidebar expands to the aubergine rail; two-pane queue+detail holds side by side |
143
+ | 1440 | content caps at `form-max-width` for forms; tables and dashboards use the full width |
144
+
145
+ ## 9 Agent Prompt Guide
146
+
147
+ Directives the emitting agent follows verbatim:
148
+
149
+ - Carry the palette: aubergine `primary`, the dark aubergine `sidebar`, lavender `accent`
150
+ tints, blue links, near-black ink on white. The `sidebar` is the one categorically dark
151
+ plane; keep the rest of the app light.
152
+ - Leave behind the marketing surface — pastel-mesh gradients, floating UI mockups,
153
+ hero-scale display, the full-bleed aubergine footer band do not exist here.
154
+ - Accent only the primary action; if two things want the aubergine, one is not primary.
155
+ Blue is for links, not buttons. Give the primary CTA the pill; everything else on `radius`.
156
+ - Detail and edit go in the side panel; a modal is a confirmation, not a workspace (P3).
157
+ - Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono` (P4).
158
+ - Every workflow completes from the keyboard; the `ring` focus outline is always visible (P6).
@@ -0,0 +1,171 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: SpaceX
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # SpaceX — the mission-console operator reading
9
+
10
+ An operator translation of SpaceX's design language into a mission console. The marketing theatre
11
+ stays behind: full-bleed rocket and Mars photography, autoplaying launch video, hero-scale display
12
+ type, the museum negative space. What carries is the austere chassis underneath — a pure-black
13
+ canvas, an achromatic white accent doing every "click me" job, the condensed industrial D-DIN voice
14
+ set UPPERCASE with the brand's signature *positive* tracking, tight 4px chrome, and a zero-shadow
15
+ flat depth. This is the one library entry where the light-default floor legitimately yields: SpaceX
16
+ is **categorically dark** — pure `#000000` is the load-bearing brand fact — so the default theme
17
+ wears near-black, and the brief blesses the override plainly (brand tokens win; a pure `#000000`
18
+ surface is exactly the case the catalog lets a design.md demand).
19
+
20
+ ## 1 Visual Theme
21
+
22
+ Dark by default, and pure black on purpose. The canvas is `background` `#000000` (canvas-night) — the
23
+ brand's single most recognizable fact — with cards lifting to `#0a0a0a` (canvas-night-soft), a
24
+ barely-lifted near-black that reads as elevation with no shadow at all. Flat throughout: hierarchy comes
25
+ from the near-black surface ladder, `#3a3a3f` hairlines, and type weight — never a drop shadow (the
26
+ corpus uses none). There is **no chromatic brand accent**; the one accent is achromatic **white**
27
+ (`#ffffff`), reserved for the single primary action, which inverts to white-on-black. The type voice is
28
+ condensed and engineered — D-DIN, set UPPERCASE on titles and eyebrows with a distinctly *positive*
29
+ letter-spacing, the one operator brand that tracks out rather than in. Density is `dense`: the operator
30
+ reading is a mission console — telemetry-dense — not the spacious full-bleed of the marketing site.
31
+
32
+ ## 2 Color Roles
33
+
34
+ Dark values are the default. The brand has no accent colors; black, white, and a derived telemetry
35
+ set of status hues do all the chromatic work. The corpus's light shop surface (white `#ffffff`, ink
36
+ `#000000`, hairline `#e0e0e8`) is the inverse a light form context can opt into, but the console
37
+ wears black.
38
+
39
+ | Role | Value | Allowed where |
40
+ | --- | --- | --- |
41
+ | `background` | canvas-night `#000000` | the page canvas — pure black, the signature; no tint |
42
+ | `card` / `popover` | canvas-night-soft `#0a0a0a` | cards and overlays lift off pure black by the surface step alone |
43
+ | `foreground` | on-primary `#ffffff` | all primary ink — the dominant text color |
44
+ | `muted` | near-black `#141417` | hover rows, subtle fills (a hair above card) |
45
+ | `muted-foreground` | cool gray `#8a8a92` | labels, captions, secondary text — corpus ink-mute `#5a5a5f` is a light-surface tone; on black it lightens to read |
46
+ | `border` / `input` | hairline-on-dark `#3a3a3f` | every separator, grid line, and field edge — the highest-frequency token |
47
+ | `primary` | white `#ffffff` | the one primary action; active nav; the wordmark — the accent is achromatic, not a hue |
48
+ | `primary-foreground` | ink `#000000` | text/icon on the white fill — black on white, never gray |
49
+ | `accent` | cool near-black `#1e1e26` | selected / hovered rows and nav — selection lifts the near-black, it does not colour it |
50
+ | `ring` | white `#ffffff` | the focus outline — maximally visible on black, because keyboard-first (corpus link-on-dark is white) |
51
+ | `destructive` | telemetry-red `#ff453a` | destructive / abort actions and error state only |
52
+ | `success` / `warning` | nominal-green `#32d74b` / caution-amber `#ff9f0a` | status signalling only, never chrome |
53
+
54
+ On-primary-mute `#f0f0fa` (a cooled-white barely distinct from white) is the corpus's subtle-hierarchy
55
+ secondary text on dark; reach for it only where a whisper of text hierarchy is wanted without a gray.
56
+
57
+ ## 3 Typography
58
+
59
+ One condensed sans, plus a mono the operator console adds. `font-sans` is **D-DIN** — the condensed
60
+ industrial cut inspired by the DIN 1451 engineering standard; Inter at 700+ with positive tracking is the
61
+ corpus-named substitute, and Arial Narrow the corpus fallback that keeps the width compression. The
62
+ display face is D-DIN-Bold (700); the body is D-DIN (400) — there is **no mid weight**, the brand jumps
63
+ 400 → 700. `font-mono` is a **derived** addition (`Space Mono`, JetBrains Mono fallback): the corpus omits
64
+ mono outright, but a mission console needs a telemetry / ID / timestamp voice, and Space Mono's engineered
65
+ character suits the DIN aesthetic. Numeric and telemetry columns render `tabular-nums`.
66
+
67
+ | Step | Role | Size · line | Weight · tracking |
68
+ | --- | --- | --- | --- |
69
+ | h1 | page title (UPPERCASE) | 24px / 1.1 | `font-weight-strong` · `heading-tracking` |
70
+ | h2 | section head (UPPERCASE) | 18px / 1.2 | `font-weight-strong` · `heading-tracking` |
71
+ | h3 | card / group head (UPPERCASE) | 15px / 1.3 | `font-weight-strong` · `heading-tracking` |
72
+ | body | UI + prose | 14px / 1.5 | `font-weight-normal` · `+0.01em` |
73
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
74
+ | caption | uppercase eyebrow / nav | 12px / 1.4 | `font-weight-normal`, `+0.08em`, uppercase |
75
+ | number | table figures, telemetry | 13px / 1.4 | `font-mono` · `tabular-nums` |
76
+
77
+ The positive tracking and the UPPERCASE display are the brand's irreducible signature; body carries a
78
+ faint `+0.01em` — the whole system reads engineered rather than designed. Emphasise by weight, never size.
79
+
80
+ ## 4 Component Stylings
81
+
82
+ Every recurring operator component composes from the primitives — no literal values.
83
+
84
+ - **Button** — `primary`: filled white (`primary`) on black (`primary-foreground`), tight `radius`, no
85
+ pill, UPPERCASE label positively tracked. The **ghost pill** is the brand's signature CTA — transparent,
86
+ 1px `border`, white text, `pill` radius (32px), UPPERCASE — reserved for a lone hero action (a launch /
87
+ commit / deploy confirm), never two side by side. Secondary: `secondary` fill, 1px `border`.
88
+ - **Input** — `card` fill, 1px `border` (`border-weight`), `radius`; focus draws the white `ring` at full
89
+ 2px, no glow.
90
+ - **Card** — `card` (`#0a0a0a`) on a 1px `border`, `radius`; elevation is the surface step + hairline off
91
+ pure black, never a shadow; inset by `density-inset`.
92
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `accent` on selection;
93
+ `tabular-nums` + `font-mono` on numeric / telemetry columns.
94
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich` for
95
+ content-heavy), beside the work, not over it.
96
+ - **Badge** — hairline `border`, `muted` / status fill, UPPERCASE caption; status badges take `success` /
97
+ `warning` / `destructive`, never `primary`.
98
+
99
+ ## 5 Layout
100
+
101
+ Base spacing unit 4px; the on-scale ramp is `4 · 8 · 12 · 16 · 18 · 24 · 32 · 48` — note the corpus's
102
+ signature 18px step (its button vertical padding). Shell dimensions map one-to-one to the layout
103
+ primitives: sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar `topbar-height`, side
104
+ panel `side-panel-width` / `side-panel-width-rich`, modal `modal-width-max`, forms `form-max-width`,
105
+ tables full-width. Density is `dense`, governed globally by `density-tier` (rewriting the spacing scale
106
+ through `density-gap`) and stepped per archetype by the surface catalog — never by absolute overrides. The
107
+ marketing full-bleed bands and their edge-to-edge photography stay behind.
108
+
109
+ ## 6 Depth
110
+
111
+ Flat, and darker-flat. The corpus's depth is *photographic* — full-bleed imagery does all the lifting —
112
+ and it uses zero drop shadows, blurs, glows, or gradients. The operator reading has no photography, so
113
+ depth becomes the near-black surface ladder plus hairlines:
114
+
115
+ - **0 — canvas** `background` (`#000000`), no border.
116
+ - **1 — panel / card** `card` (`#0a0a0a`) on a 1px `border`; elevation is the surface step + hairline, no
117
+ shadow.
118
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns the faintest `sm`
119
+ lift to separate a floating overlay from the console; even then, prefer the hairline.
120
+
121
+ Focus is a 2px white `ring` outline (never a glow), visible on every interactive element. Three z-levels:
122
+ content, sticky chrome, overlay.
123
+
124
+ ## 7 Do's & Don'ts
125
+
126
+ - **Do** keep the canvas pure black (`#000000`) — it is the load-bearing brand fact; cards lift by the
127
+ `#0a0a0a` step + hairline, never a shadow.
128
+ - **Do** render titles and eyebrows UPPERCASE in the condensed D-DIN with *positive* tracking — the brand
129
+ tracks out, not in.
130
+ - **Do** reserve the one achromatic accent (white) for the single primary action; everything else is
131
+ neutral or status.
132
+ - **Do** carry telemetry, IDs, codes, and timestamps in `font-mono` with `tabular-nums`.
133
+ - **Don't** introduce a chromatic brand accent — black, white, and the derived telemetry status hues are
134
+ the entire palette; a colored "brand" accent breaks the system.
135
+ - **Don't** render titles in sentence-case or title-case — UPPERCASE is the brand.
136
+ - **Don't** signal rank with a drop shadow — the near-black surface step + hairline carries elevation.
137
+ - **Don't** pill every control — the 32px pill is a lone hero-CTA signal; operator controls take the tight
138
+ 4px rect.
139
+ - **Don't** reach for a serif or humanist-sans heading — the condensed industrial DIN cut is non-negotiable.
140
+
141
+ ## 8 Responsive
142
+
143
+ The operator sweep is 375 / 768 / 1024 / 1440.
144
+
145
+ | Breakpoint | What changes |
146
+ | --- | --- |
147
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; h1 steps 24 → 20; density holds |
148
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
149
+ | 1024 | sidebar expands; two-pane console + detail holds side by side |
150
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
151
+
152
+ The corpus's display tier stair-steps 80 → 60 → 48 → 40px; at operator scale the h1 steps down more
153
+ modestly, but the principle holds — the display shrinks first.
154
+
155
+ ## 9 Agent Prompt Guide
156
+
157
+ - **Carries:** the pure-black `background` + `#0a0a0a` surface ladder; the achromatic white accent; the
158
+ condensed D-DIN voice set UPPERCASE with positive tracking on titles and eyebrows; the tight 4px chrome
159
+ radius; zero-shadow flat depth; the telemetry-dense layout.
160
+ - **Stays behind:** full-bleed rocket / Mars photography and autoplaying launch video; hero-scale display
161
+ (80 / 60 / 48px); the museum negative space; the marketing full-bleed bands; the ghost-pill-everywhere
162
+ marketing CTA grammar.
163
+ - Keep the canvas pure black; cards lift by the `#0a0a0a` step + hairline, never a shadow.
164
+ - One accent, and it is white — the primary action inverts to white-on-black; if two things want it, one
165
+ of them is not primary.
166
+ - Titles and eyebrows are UPPERCASE, condensed, positively tracked — the irreducible signature; body and
167
+ tables stay sentence-case D-DIN.
168
+ - Every numeric / telemetry column is `tabular-nums`; every ID / code / timestamp is `font-mono` (the brand
169
+ omits mono — the console adds it for telemetry).
170
+ - Every workflow completes from the keyboard; the white 2px `ring` focus outline is always visible.
171
+ - The 32px ghost pill is a lone hero CTA (a launch / commit confirm), never two side by side.