@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,156 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Framer
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Framer — operator surfaces on a black artboard
9
+
10
+ Framer's brand is a near-pure-black marketing artboard: white display type set poster-tight, one
11
+ confident blue used only as a signal, and vibrant gradient atmosphere tiles that show what the tool
12
+ builds. This library entry translates that identity to operator work — a CRM, a queue, a dashboard
13
+ in Framer's language. What carries: the dark charcoal surface ladder, white ink, the single blue
14
+ signal, the tight-tracked Inter voice, the softly-rounded geometry. What stays behind: the
15
+ hero-scale GT Walsheim display, the gradient spotlight cards as chrome, the pill CTA, the 5px/96px
16
+ editorial rhythm.
17
+
18
+ Framer is categorically dark. Where the operator doctrine defaults light and treats dark as opt-in,
19
+ this brand legitimately inverts it: the base theme *is* dark, and `color-tokens.light` carries the
20
+ dark charcoal palette (the brand ships no light mode — forcing one would discard the palette). This is
21
+ the recorded override, not a mistake.
22
+
23
+ ## 1 Visual Theme
24
+
25
+ Dark by default and dark only. The anchor surface is a near-black `background` canvas beside charcoal
26
+ `card` panels; hierarchy rises through a three-step surface ladder (canvas → surface-1 → surface-2),
27
+ not through heavy shadow. Flat: separation is carried by hairline `border`, surface lift, and white
28
+ ink against gray. A single chromatic accent — Framer blue — lives in `ring`, links, and selected/active
29
+ indicators, and is never a fill. The one primary action reads as a high-contrast white button on the
30
+ dark shell, not a colored one. Density is `standard`: the brand breathes like a poster, and the
31
+ operator read keeps that composure rather than crowding to terminal density.
32
+
33
+ ## 2 Color Roles
34
+
35
+ Dark values (the brand's only mode). One accent — Framer blue is the sole chromatic hue that signals;
36
+ status hues speak only status; the gradient family lives in charts, never in chrome.
37
+
38
+ | Role | Value | Allowed where |
39
+ | --- | --- | --- |
40
+ | `background` | near-black `#090909` | the page canvas — the dominant surface, warm-tinted black |
41
+ | `card` / `popover` | charcoal `#141414` (surface-1) | raised panels, cards, overlays, mockup tiles |
42
+ | `muted` / `accent` | `#1c1c1c` (surface-2) | hover rows, subtle fills, selected-row lift (selection is lift, not color) |
43
+ | `foreground` | pure white `#ffffff` (ink) | all primary ink and headlines |
44
+ | `muted-foreground` | gray `#999999` (ink-muted) | labels, meta, captions — the entire secondary tier |
45
+ | `border` / `input` | hairline `#262626` | every separator, grid line, and field edge |
46
+ | `primary` | white `#ffffff` on `#000000` | the one primary action per surface; a light button on dark |
47
+ | `ring` | Framer blue `#0099ff` | focus outlines, links, active/selected indicators — the single signal |
48
+ | `destructive` | red `#ef4444` | destructive actions and error state only |
49
+ | `success` / `warning` | green `#22c55e` / amber `#f59e0b` | status signalling only, never chrome |
50
+
51
+ Hierarchy is binary: ink or ink-muted, no mid-tone grays between. The gradient hues (violet, magenta,
52
+ orange, coral) are brand graces — they carry no chrome role, only chart series (see §7).
53
+
54
+ ## 3 Typography
55
+
56
+ One sans, one mono. `font-sans` is Inter — the operator body, UI, and headings all ride it, with Inter's
57
+ character variants (`cv01`, `cv05`, `cv09`, `cv11`, `ss03`, `ss07`) enabled; those variants are the
58
+ brand's body voice and the emitting agent keeps them on. `font-mono` is Geist Mono for IDs, codes,
59
+ timestamps, and log lines. Numeric columns render `tabular-nums` (Inter carries `tnum`) so figures align
60
+ down a column. Framer's hero-scale GT Walsheim display stays behind — operator headings top out where
61
+ Inter already serves.
62
+
63
+ | Step | Role | Size · line | Weight · tracking |
64
+ | --- | --- | --- | --- |
65
+ | h1 | page title | 24px / 1.2 | `font-weight-strong` · `heading-tracking` |
66
+ | h2 | section head | 20px / 1.25 | `font-weight-strong` · `heading-tracking` |
67
+ | h3 | card / group head | 16px / 1.3 | `font-weight-strong` · `heading-tracking` |
68
+ | body | UI + prose | 15px / 1.4 | `font-weight-normal` |
69
+ | small | labels, meta, dense table | 14px / 1.4 | `font-weight-normal` |
70
+ | caption | eyebrow / footnote | 13px / 1.2 | `font-weight-normal`, `+0.01em` |
71
+
72
+ Framer's signature is aggressive negative tracking; at operator sizes it carries as a tighter-than-neutral
73
+ `heading-tracking`, not the hero display's -5% extreme. Bump weight one narrow step for emphasis; never
74
+ change size to emphasize.
75
+
76
+ ## 4 Component Stylings
77
+
78
+ Every recurring operator component composes from the primitives — no literal values.
79
+
80
+ - **Button** — `primary`: filled white `primary` on `primary-foreground`, `radius`, no pill. Secondary:
81
+ `secondary` (surface-1) fill, `border`, `foreground`. Ghost: transparent, `muted` on hover.
82
+ - **Input** — `card` (surface-1) fill, 1px `border` (`border-weight`), `radius`; focus draws the blue
83
+ `ring` at 2px, no glow — the one chromatic moment in the field.
84
+ - **Card** — `card` surface, 1px `border`, `radius`; a soft light-edge + `shadow-intensity` drop only
85
+ when it floats off the canvas; inset by `density-inset`.
86
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
87
+ numeric columns; row selection lifts to `accent` (surface-2), never a colored fill.
88
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`
89
+ for content-heavy), beside the work, not over it.
90
+ - **Badge** — hairline `border`, `muted`/status fill; status badges take `success` / `warning` /
91
+ `destructive`, never `primary` and never the blue.
92
+
93
+ ## 5 Layout
94
+
95
+ Base spacing unit 4px (Tailwind `--spacing` 0.25rem); the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 ·
96
+ 32 · 48 · 64`. Framer's marketing 5px rhythm (15 / 20 / 30) and 96px section breaks stay behind — the
97
+ operator surface normalizes to the 4px ramp the density remap expects. Shell dimensions map one-to-one
98
+ to the layout primitives: sidebar `sidebar-width-expanded` / `sidebar-width-collapsed`, topbar
99
+ `topbar-height` (56px, the brand's nav height), side panel `side-panel-width` / `side-panel-width-rich`,
100
+ modal cap `modal-width-max`, forms `form-max-width`, tables full-width. Density is governed globally by
101
+ `density-tier` and stepped per archetype by the surface catalog — never by absolute overrides.
102
+
103
+ ## 6 Depth
104
+
105
+ Flat. Rank comes from the surface ladder and hairlines, not stacked shadow:
106
+
107
+ - **0 — canvas** `background`, no border — the black artboard.
108
+ - **1 — panel / card** `card` (surface-1) on a 1px `border`; the working raised surface.
109
+ - **2 — overlay** `popover` / side panel / modal — a `rgba(255,255,255,0.08)` light top-edge plus a
110
+ soft `shadow-intensity` drop against the near-black. No level stacks a heavier shadow to signal rank;
111
+ rank is surface lift and position.
112
+
113
+ Focus is a 2px blue `ring` outline (never a glow), visible on every interactive element — the only
114
+ chromatic depth signal in the system. Three z-levels: content, sticky chrome, overlay.
115
+
116
+ ## 7 Do's & Don'ts
117
+
118
+ - **Do** keep the base dark. Framer ships no light mode; the near-black canvas is the identity.
119
+ - **Do** reserve Framer blue for `ring`, links, and selected/active indicators — a signal color, never a
120
+ surface or button fill.
121
+ - **Do** make the primary action a high-contrast white button; there is one per surface.
122
+ - **Do** mark selection and "active" by surface lift (surface-1 → surface-2), not by a colored tint.
123
+ - **Do** carry hierarchy as a binary ink / ink-muted split — no mid-tone grays crept in between.
124
+ - **Do** apply `tabular-nums` to every numeric column and `font-mono` to IDs, codes, and timestamps.
125
+ - **Don't** promote a second chromatic accent. The gradient hues are chart series only, never chrome.
126
+ - **Don't** pill operator buttons or reach for a radius outside `radius-scale` — the marketing pill CTA
127
+ stays behind; operator buttons take the `radius` default.
128
+ - **Don't** wash a section in a gradient. Gradients were marketing atmosphere; they do not enter the shell.
129
+ - **Don't** open detail or edit in a modal when the side panel fits — modals are for confirmations only.
130
+
131
+ ## 8 Responsive
132
+
133
+ The operator sweep is 375 / 768 / 1024 / 1440; the single dark theme holds at every width.
134
+
135
+ | Breakpoint | What changes |
136
+ | --- | --- |
137
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
138
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow |
139
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side |
140
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width |
141
+
142
+ ## 9 Agent Prompt Guide
143
+
144
+ Directives the emitting agent follows verbatim:
145
+
146
+ - Build dark. The base theme is the charcoal ladder — canvas `background`, surface-1 `card`, surface-2
147
+ `accent`/`muted` — with white ink and gray `muted-foreground`. There is no light interlude.
148
+ - Accent only with the blue, and only as a signal: focus `ring`, links, active nav, selected indicators.
149
+ If the blue becomes a fill, the brand is drifting.
150
+ - Make the one primary action a white button; everything else is neutral surface or status.
151
+ - Mark selection and active state by lifting a surface step, not by tinting — "selected is lift, not color".
152
+ - Keep hierarchy binary: ink `foreground` or gray `muted-foreground`, nothing between.
153
+ - Set Inter as `font-sans` with its `cv`/`ss` character variants on; `font-mono` Geist Mono for IDs,
154
+ codes, timestamps; `tabular-nums` on every numeric column.
155
+ - Track headings tight; keep buttons and cards on the `radius` default. Leave behind the GT Walsheim
156
+ hero display, the gradient spotlight cards, the pill CTA, and the 96px editorial section rhythm.
@@ -0,0 +1,140 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: HashiCorp
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # HashiCorp — an operator reading of the pure-black, multi-product infrastructure system
9
+
10
+ HashiCorp's web system is a confident, technical enterprise canvas: a pure-black ground, white engineered sans,
11
+ charcoal cards on felt-thin hairlines, and per-product accent colors marking which tool a section is about. This
12
+ entry is the *operator* reading — an internal tool (dashboard, run queue, policy console, log stream) in HashiCorp's
13
+ language. Carried over: the pure-black canvas, charcoal surface ladder, white-on-dark ink, flat shadowless depth, the
14
+ 8px-not-pill radius, hashicorpSans's engineered voice (Inter the substitute). Left behind: the 80/56/40px hero
15
+ display, the per-product chromatic identity cards, full-bleed CTA banners, and the 96px section rhythm.
16
+
17
+ **Categorically dark, literally pure black, one accent not seven.** Two floors yield: the light-default floor (the
18
+ categorically-dark exception — the default theme is dark and fills the required `light` slot) and the doctrine's ban
19
+ on pure `#000000` surfaces (the brand's canvas *is* `#000000`, so the brand token wins); both are recorded plainly.
20
+ The signature per-product palette is a *multi-product* marketing device — an internal tool is one product, so the
21
+ operator reading spends the one product-neutral hue the brand uses on every page: accent-blue `#2b89ff`, repurposed
22
+ as the chart categorical ramp, the one place multiple hues are legitimate (see §2, §7).
23
+
24
+ ## 1 Visual Theme
25
+
26
+ Dark by default — pure black `background` (`#000000`) is the floor of every surface, no light counterpart.
27
+ Emphatically flat: hierarchy comes from the charcoal surface ladder (canvas → surface-1 → surface-2), 1px hairline
28
+ `border`, type weight, and white-on-black contrast — never shadow. A single accent, blue `primary` (`#2b89ff`), is
29
+ held scarce: the one primary action, the focus `ring`, and the active-nav indicator, nothing else. The neutral ramp
30
+ is a cool near-achromatic charcoal (white ink through `#b2b6bd` to `#656a76`), so the UI reads engineered and
31
+ monochrome. Density is `standard` — the brand breathes more than a terminal, but the operator reading earns density.
32
+
33
+ ## 2 Color Roles
34
+
35
+ Dark values. One accent — blue `primary` is the only chromatic hue that carries UI meaning; status
36
+ hues speak only status; the product palette lives only in charts.
37
+
38
+ | Role | Value | Allowed where |
39
+ | --- | --- | --- |
40
+ | `background` | pure-black canvas `#000000` | page floor and content area — the dominant surface |
41
+ | `foreground` | white ink `#ffffff` | headlines and primary text |
42
+ | `card` / `popover` | charcoal `#15181e` (surface-1) | cards, tiles, overlays — the first lift off black |
43
+ | `secondary` / `accent` | charcoal-2 `#1f232b` (surface-2) | secondary-button fills; hover and selected rows and nav |
44
+ | `muted` | faint well `#0c0e12` | inset tracks, disabled fills, quiet band tints |
45
+ | `muted-foreground` | cool gray `#b2b6bd` | labels, captions, secondary text |
46
+ | `border` / `input` | hairline `#3b3d45` (surface-3) | every separator, grid line, and field edge |
47
+ | `primary` | accent-blue `#2b89ff` | the one primary action; active-nav indicator; the text-link |
48
+ | `primary-foreground` | white `#ffffff` | text on the blue action |
49
+ | `ring` | blue `#2b89ff` | the focus outline — unmistakable, because keyboard-first |
50
+ | `destructive` | Consul red `#e62b1e` | destructive actions and error state only |
51
+ | `success` / `warning` | Nomad green `#00ca8e` / Vault yellow `#ffcf25` | status signalling only, never chrome |
52
+
53
+ The per-product palette — Terraform `#7b42bc`, Vault `#ffcf25`, Waypoint `#14c6cb`, Nomad `#00ca8e`,
54
+ Boundary `#f24c53` — carries no UI role; it draws the chart categorical ramp (see §7).
55
+
56
+ ## 3 Typography
57
+
58
+ One sans, one mono. `font-sans` is hashicorpSans, the brand's geometric-humanist face — body, UI, and headings all
59
+ ride it; weight and tight tracking, not a second family, carry the display voice (Inter is the corpus's own open
60
+ substitute). `font-mono` is the operator's reclaim — the marketing brand reserves mono for in-product, but the
61
+ operator surface needs it for IDs, codes, timestamps, and log lines (JetBrains Mono). Numeric columns render
62
+ `tabular-nums`. The display scale (80/56/40px) stays behind — an operator surface tops out at a 24px page title.
63
+
64
+ | Step | Role | Size · line | Weight · tracking |
65
+ | --- | --- | --- | --- |
66
+ | h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` |
67
+ | h2 | section head | 18px / 1.3 | `font-weight-strong` · `heading-tracking` |
68
+ | h3 | card / group head | 15px / 1.35 | `font-weight-strong` |
69
+ | body | UI + prose | 14px / 1.5 | `font-weight-normal` |
70
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
71
+ | caption | uppercase eyebrow | 12px / 1.4 | `font-weight-strong`, `+0.05em`, uppercase |
72
+
73
+ The brand's weight hierarchy is deliberately small — 500 body / 600 emphasis / 700 display, no extremes, so the
74
+ system reads engineered. Operator headings run the strong weight (600, the brand's headline weight) with tight
75
+ negative tracking; the 700 display weights stay behind. Build hierarchy on size and weight, never a second family;
76
+ keep the uppercase eyebrow above sections.
77
+
78
+ ## 4 Component Stylings
79
+
80
+ Every recurring operator component composes from the primitives — no literal values.
81
+
82
+ - **Button** — primary: filled blue `primary` on white `primary-foreground`, `radius` (8px), never a pill. Secondary: `secondary` charcoal-2 fill, `border`, `foreground`. Ghost: transparent, `accent` on hover. The brand's white-on-black CTA is a legitimate monochrome variant for a lone hero action, but the operator default spends the accent-blue so primary, focus, and active-nav read as one system.
83
+ - **Input** — `background` fill, 1px `border` (`border-weight`), `radius`; focus draws the blue `ring` at 2px, no glow (the brand's focus is a 1px accent-blue outline, firmed to 2px for keyboard-first work).
84
+ - **Card** — `card` charcoal surface, 1px `border`, `radius` (cards step to 12px via the scale); depth is the surface lift off black, not shadow; inset by `density-inset`.
85
+ - **Table row** — height `table-row-height`; `border` grid lines carry the grid; `accent` on hover; `tabular-nums` on numeric columns; selection tints `accent` with a blue `primary` left-indicator.
86
+ - **Side panel** — detail and edit open in the panel (`side-panel-width`, `side-panel-width-rich` for content-heavy), beside the work, not over it.
87
+ - **Badge** — hairline `border`, `muted`/status fill, uppercase caption; status badges take `success` / `warning` / `destructive`, never `primary`. Pill radius is badges-only (the brand's product pills).
88
+
89
+ ## 5 Layout
90
+
91
+ Base spacing unit 8px; the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` — the marketing 96px section
92
+ rhythm stays behind. Shell dimensions map one-to-one to the layout primitives: sidebar `sidebar-width-expanded` /
93
+ `sidebar-width-collapsed`, topbar `topbar-height` (64px, the brand's nav height), side panel `side-panel-width` /
94
+ `side-panel-width-rich`, modal cap `modal-width-max`, forms `form-max-width`, tables full-width. Density is governed
95
+ globally by `density-tier` (standard) and stepped denser per archetype by the surface catalog.
96
+
97
+ ## 6 Depth
98
+
99
+ Flat and shadowless. Depth comes from the charcoal surface ladder and hairlines, not drop shadows:
100
+
101
+ - **0 — canvas** `background` (`#000000`), no border.
102
+ - **1 — panel / card** `card` (`#15181e`, surface-1) on a 1px `border`; the charcoal lift off pure black carries rank. Hover and selected rows step one further to `accent` (`#1f232b`, surface-2); chips and sub-nav ride the `border` charcoal-3 (`#3b3d45`).
103
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns the faintest lift, enough to separate an overlay from the black canvas above a scrim. Rank is surface, border, and position — never a heavier shadow.
104
+
105
+ The per-product chromatic card is a marketing *identity* device at a feature card's z-plane, not a depth level — it
106
+ stays behind. Focus is a 2px blue `ring` outline (never a glow), visible on every interactive element. Three
107
+ z-levels: content, chrome, overlay.
108
+
109
+ ## 7 Do's & Don'ts
110
+
111
+ - **Do** anchor every surface on the pure-black canvas and carry hierarchy with the black-plus-charcoal ladder, hairlines, weight, and size; the black `#000000` is deliberate — not a near-black to be softened.
112
+ - **Do** reserve blue `primary` for the primary action, the focus `ring`, and the active-nav indicator — nothing else. It is the one product-neutral chromatic hue the brand spends on every page.
113
+ - **Do** run headings the brand sans (hashicorpSans; Inter the substitute) at 600 with tight negative tracking, one family across the whole hierarchy.
114
+ - **Do** apply `tabular-nums` to numeric columns and `font-mono` to IDs, codes, timestamps, and log lines — the operator surface reclaims the mono the marketing brand withholds.
115
+ - **Do** draw chart series from the product palette (Terraform purple, Vault yellow, Nomad green, Boundary coral) — the one place multiple hues are legitimate.
116
+ - **Don't** rebuild the per-product accent system as UI chrome, fill large surfaces with a product hue, or set body text in one — that palette is a multi-product marketing device; an internal tool is one product with one accent.
117
+ - **Don't** pill controls or reach for a radius outside `radius-scale` — the button/input radius is 8px.
118
+ - **Don't** signal elevation with drop shadows, or adapt the shell to a light canvas — this brand has no light surface.
119
+ - **Don't** pair a display-only sans with a different body family — HashiCorp is one family across the full hierarchy.
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 | content caps at `form-max-width` for forms; tables and dashboards use the full width |
131
+
132
+ ## 9 Agent Prompt Guide
133
+
134
+ Directives the emitting agent follows verbatim:
135
+
136
+ - Wear the pure-black `#000000` canvas by default; this brand is categorically dark — no light surface to fall back to. Cards and panels are the charcoal surface-1 lift, not white; depth is that ladder plus hairlines, never shadow.
137
+ - Spend blue once per surface: the primary action, the focus `ring`, the active-nav indicator. If two things want the blue, one is not primary. The per-product palette (Terraform purple, Vault yellow, Waypoint cyan, …) stays behind as a marketing identity device — reuse it only as the chart categorical ramp, never as UI accents.
138
+ - Headings ride the brand sans (hashicorpSans; Inter the open substitute) at 600 with tight negative tracking; the 80/56/40px display scale stays behind — operator headings top out at 24px. Keep the uppercase eyebrow above meaningful sections.
139
+ - Every numeric column is `tabular-nums`; every ID / code / timestamp / log line is `font-mono` (JetBrains Mono) — the operator surface reclaims the mono the marketing brand reserves for in-product. Detail and edit go in the side panel beside the work; the blue `ring` focus outline is always visible for keyboard work.
140
+ - Leave behind: the 80px hero display, the per-product chromatic identity cards, full-bleed CTA banners, and the 96px section rhythm — marketing scale, not operator chrome.
@@ -0,0 +1,153 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: IBM
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # IBM — Carbon operator design
9
+
10
+ The operator reading of IBM's Carbon Design System. Carbon was built for enterprise product
11
+ surfaces, so it dresses an internal tool almost natively — but the source corpus is IBM's
12
+ *marketing* canvas, and marketing graces are stripped here. What carries: the flat 0px square
13
+ geometry, IBM Blue as the single accent, IBM Plex Sans, the 4px grid, and depth carried by hairlines
14
+ and surface change. What stays behind: the 76/60/42px weight-300 hero display type, the full-bleed
15
+ blue CTA banner, the dark inverted footer, and the soft-blue hero gradient.
16
+
17
+ ## 1 Visual Theme
18
+
19
+ Light by default; dark is opt-in — in the brand only the footer and global header invert, and that
20
+ inversion is a marketing move that stays behind. Flat and square: every button, card, input, and
21
+ container sits at 0px corners, and hierarchy is carried by a 1px hairline `border` and surface change,
22
+ never by shadow. A single accent — IBM Blue `primary` #0f62fe — is reserved for the one action that
23
+ matters, for links, and for the focus rule. The neutral ramp is a true charcoal-on-white: ink #161616
24
+ on a white canvas, with #f4f4f4 and #e0e0e0 grays doing the structural work. Dense by design — Carbon
25
+ expects a lot on the page, not a lot of air. The anchor surface is a white content canvas beside a
26
+ faint gray side nav.
27
+
28
+ ## 2 Color Roles
29
+
30
+ Light values first; hex is the brand's native format. One accent — `primary` is the only chromatic hue
31
+ that carries meaning; status hues speak only status.
32
+
33
+ | Role | Value | Allowed where |
34
+ | --- | --- | --- |
35
+ | `background` / `card` / `popover` | white `#ffffff` | page, tiles, and overlays — the dominant surface |
36
+ | `foreground` | charcoal `#161616` | all headings and primary ink |
37
+ | `muted` / `secondary` | light gray `#f4f4f4` (Carbon surface-1) | field fills, alternate-row bands, hovered tiles |
38
+ | `muted-foreground` | mid gray `#525252` | meta, sub-headlines, secondary text |
39
+ | `border` / `input` | hairline `#e0e0e0` (Carbon gray-20) | every card edge, grid line, field rule, divider |
40
+ | `primary` | IBM Blue `#0f62fe` | the one primary action; links; active nav; focus rule |
41
+ | `accent` | blue-10 tint `#edf5ff` | selected/hovered rows and nav, on-accent surfaces only |
42
+ | `ring` | `primary` `#0f62fe` | the 2px focus outline — keyboard-first, unmistakable |
43
+ | `destructive` | red-60 `#da1e28` | destructive actions and error state only |
44
+ | `success` / `warning` | green-50 `#24a148` / yellow-30 `#f1c21b` | status signalling only, never chrome |
45
+
46
+ ## 3 Typography
47
+
48
+ One family carries everything: **IBM Plex Sans** for UI, body, and headings — hierarchy comes from size
49
+ and weight, never a second face. Operator headings run `font-weight-strong` (600); the marketing
50
+ weight-300 hero display treatment stays behind. **IBM Plex Mono** returns for IDs, codes, timestamps,
51
+ and log lines — Carbon keeps mono to product surfaces, and an operator UI is a product surface. Body
52
+ carries Carbon's signature `+0.16px` positive letter-spacing (part of the voice — keep it). Numeric
53
+ columns render `tabular-nums` so figures align down a column.
54
+
55
+ | Step | Role | Size · line | Weight · tracking |
56
+ | --- | --- | --- | --- |
57
+ | h1 | page title | 32px / 1.25 | `font-weight-strong` · `heading-tracking` |
58
+ | h2 | section head | 24px / 1.33 | `font-weight-strong` · `heading-tracking` |
59
+ | h3 | card / group head | 20px / 1.40 | `font-weight-strong` · `heading-tracking` |
60
+ | body | UI + prose | 16px / 1.50 | `font-weight-normal` · +0.16px |
61
+ | small | labels, meta, dense table | 14px / 1.29 | `font-weight-normal` · +0.16px |
62
+ | caption | eyebrow, utility meta | 12px / 1.33 | `font-weight-normal` · +0.32px, sentence case |
63
+
64
+ Eyebrows stay sentence case — Carbon resists the all-caps tracked eyebrow. Bump weight for emphasis;
65
+ never change size.
66
+
67
+ ## 4 Component Stylings
68
+
69
+ Every recurring operator component composes from the primitives — no literal values.
70
+
71
+ - **Button** — `primary`: filled `primary` on `primary-foreground`, `radius` (0px, square), 12px·16px
72
+ padding, never pill. Secondary follows Carbon's charcoal treatment: `foreground` fill,
73
+ `primary-foreground` text. Tertiary/ghost: transparent with a 1px `primary` border and `primary`
74
+ text, fill only on hover.
75
+ - **Input** — `muted` fill, a 1px bottom `border`; focus swaps the bottom rule for Carbon's signature
76
+ 2px `ring` underline and draws the full focus outline, square, no radius.
77
+ - **Card** — `card` surface on a 1px `border`, 0px corners, no shadow; a "recommended" tile lifts by
78
+ moving to the `muted` ground, not by elevation.
79
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; row selection
80
+ tints `accent`; `tabular-nums` on numeric columns; `font-mono` on IDs and codes.
81
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`,
82
+ `side-panel-width-rich` for content-heavy), beside the work, not over it.
83
+ - **Badge** — square (0px) tag, hairline `border`, status fill; status badges take `success` /
84
+ `warning` / `destructive`, never `primary`.
85
+
86
+ ## 5 Layout
87
+
88
+ Base spacing unit 4px (Carbon's 4-pixel grid); the on-scale ramp is `2 · 4 · 8 · 12 · 16 · 24 · 32 ·
89
+ 48 · 64 · 96`. Shell dimensions map one-to-one to the layout primitives: side nav
90
+ `sidebar-width-expanded` (256px) / `sidebar-width-collapsed` (48px icon rail), topbar `topbar-height`
91
+ (48px), side panel `side-panel-width` / `side-panel-width-rich`, modal cap `modal-width-max`, forms
92
+ `form-max-width`, tables full-width. Density is governed globally by `density-tier` (`dense`) and
93
+ stepped per archetype by the surface catalog. Sections separate by thin gray rows, not by large
94
+ vertical gaps — Carbon spends alignment, not air.
95
+
96
+ ## 6 Depth
97
+
98
+ Flat. Hierarchy comes from the surface ladder and hairlines, not shadow:
99
+
100
+ - **0 — canvas** `background` white, no border.
101
+ - **1 — tile / card** `card` on a 1px `border`; no shadow — the default enterprise tile.
102
+ - **2 — surface band** the `muted` ground for alternate rows and hovered tiles; rank is surface
103
+ change, not elevation.
104
+ - **3 — overlay** `popover` / menu / side panel / modal — the one place `shadow-intensity` earns a
105
+ soft `sm`/`md` shadow.
106
+
107
+ Focus is Carbon's 2px `primary` outline (with a hairline-strong underline on fields), visible on every
108
+ interactive element. Three z-levels: content, sticky chrome, overlay.
109
+
110
+ ## 7 Do's & Don'ts
111
+
112
+ - **Do** keep every button, card, input, and container at 0px square — the flat geometry *is* the
113
+ brand.
114
+ - **Do** reserve `primary` IBM Blue for the single primary action, links, and the focus rule; treat it
115
+ as scarce.
116
+ - **Do** carry hierarchy with surface change (`background` → `muted`) and 1px hairlines — skip drop
117
+ shadows.
118
+ - **Do** apply the +0.16px tracking to body sizes and `tabular-nums` / `font-mono` to figures and IDs.
119
+ - **Don't** round corners — even 4px breaks the Carbon look.
120
+ - **Don't** bold operator headings past `font-weight-strong`, or reach for the marketing weight-300
121
+ hero display.
122
+ - **Don't** promote a second chromatic accent — status uses `success` / `warning` / `destructive`
123
+ only.
124
+ - **Don't** open detail or edit in a modal when the side panel fits, and don't signal rank with shadow.
125
+
126
+ ## 8 Responsive
127
+
128
+ The operator sweep is 375 / 768 / 1024 / 1440.
129
+
130
+ | Breakpoint | What changes |
131
+ | --- | --- |
132
+ | 375 | side nav → hamburger overlay; utility meta hides; two-pane list+detail stacks; side panel → full sheet; density holds |
133
+ | 768 | side nav collapses to the 48px icon rail; tables scroll their overflow; card grid → 2-up |
134
+ | 1024 | side nav expands to 256px; two-pane queue+detail holds side by side; grid up to 4-up |
135
+ | 1440 | content caps at `form-max-width` for forms; tables and dashboards use the full width |
136
+
137
+ ## 9 Agent Prompt Guide
138
+
139
+ This entry dresses an internal operator surface — a queue, a data console, an admin panel — in Carbon.
140
+ Carry over: flat 0px square geometry, IBM Blue as the single accent, IBM Plex Sans plus Plex Mono, the
141
+ 4px grid, hairline-and-surface-change depth, the 2px blue focus rule, and the +0.16px body tracking.
142
+ Leave behind: the 76/60/42px weight-300 hero display type, the full-bleed blue CTA banner, the dark
143
+ inverted footer, and the soft-blue hero gradient — all marketing.
144
+
145
+ - Lead every list surface with its data table; keep it square and dense.
146
+ - Accent only the primary action. IBM Blue is scarce — links, primary CTA, focus. Anything more is
147
+ drift.
148
+ - Keep 0px corners everywhere; a rounded corner reads as a different brand.
149
+ - IDs, codes, and timestamps in Plex Mono; every numeric column `tabular-nums`; body keeps +0.16px
150
+ tracking and sentence-case eyebrows.
151
+ - Depth is hairline and surface change; reach past a hairline only for a real overlay.
152
+ - Detail and edit go in the side panel; a modal is a confirmation, not a workspace.
153
+ - Keep the whole app light; do not invert to charcoal outside a deliberate dark opt-in.
@@ -0,0 +1,158 @@
1
+ ---
2
+ schema: design-md/v1
3
+ product: Intercom
4
+ provenance: library
5
+ sourced: 2026-07-04
6
+ ---
7
+
8
+ # Intercom — the operator reading
9
+
10
+ The calm, editorial customer-service brand rendered for internal tools. Intercom's public surfaces
11
+ are publication-quiet and product-screenshot-led; an operator surface wearing this brand keeps the
12
+ warm cream canvas, the white-on-cream lift, the charcoal ink, the single reserved Fin Orange, the
13
+ modest radii, and the geometric-sans voice that never bolds past 500. The 72px hero display, the
14
+ product-mockup rhythm, the pure-black quote strip, the pill tab toggles, and the 96px section
15
+ breathing stay behind. What carries is the feel: a warm cream ground the category never uses, panels
16
+ that lift by turning white rather than by casting shadow, and one orange spark held in reserve.
17
+
18
+ ## 1 Visual Theme
19
+
20
+ Light by default; dark is opt-in (Intercom ships no dark theme on the public web). The anchor surface
21
+ is not white — it is a soft warm cream `background` (`#f5f1ec`), the brand's defining signal. Panels
22
+ and cards lift **onto white** (`card`, `#ffffff`): the depth strategy is a surface change, not a shadow.
23
+ Flat throughout — hierarchy comes from the cream-to-white ladder, warm hairline `border` (`#d3cec6`),
24
+ and type weight, never heavy elevation. A single chromatic voltage, Fin Orange (`primary`, `#ff5600`),
25
+ is held in reserve for the one action that matters; everything neutral is charcoal ink (`foreground`,
26
+ `#111111`) on cream. Corners are modest — `radius` (8px) on buttons and inputs, a larger step on cards
27
+ — never pill, never square. Density is `standard`: calm and editorial, not cramped.
28
+
29
+ ## 2 Color Roles
30
+
31
+ Light values. One accent: Fin Orange is the only chromatic hue that carries meaning; the report
32
+ palette lives in charts, status speaks only status.
33
+
34
+ | Role | Value | Allowed where |
35
+ | --- | --- | --- |
36
+ | `background` | cream `#f5f1ec` | the page canvas — warm, never pure white; the brand's defining surface |
37
+ | `card` / `popover` | white `#ffffff` | cards, panels, overlays — they lift off the cream by turning white |
38
+ | `foreground` | charcoal `#111111` | all primary ink, headlines, and neutral/secondary button labels |
39
+ | `muted` | warm cream `#ebe7e1` | hover rows, subtle fills, quiet panel bands (surface-2) |
40
+ | `muted-foreground` | ink-muted `#626260` | labels, captions, secondary text, inactive tabs |
41
+ | `secondary` | warm cream `#ebe7e1` | secondary button fill — ink label on cream, 1px `border` |
42
+ | `border` / `input` | warm hairline `#d3cec6` | every separator, grid line, and field edge — a soft warm gray, not an ink line |
43
+ | `primary` | Fin Orange `#ff5600` | the single primary action per surface; active nav; the one reserved voltage |
44
+ | `accent` | deep cream `#e6e0d6` | selected/hovered rows and nav — Intercom selects by a warm-neutral shift, not by colour |
45
+ | `ring` | Fin Orange `#ff5600` | the focus outline — unmistakable, because keyboard-first |
46
+ | `destructive` | error red `#c41c1c` | destructive actions and error state only |
47
+ | `success` / `warning` | green `#0bdf50` / amber `#d97706` | status signalling only, never chrome |
48
+
49
+ Charcoal is Intercom's marketing primary because a marketing page carries many CTAs; the operator
50
+ reading has one primary action per surface, so it earns the reserved orange, and charcoal stays the
51
+ neutral ink for secondary actions. Brand Blue (`#0007cb`) and the pure-black quote strip are marketing
52
+ graces — they carry no operator role (see §7).
53
+
54
+ ## 3 Typography
55
+
56
+ One sans, one mono. `font-sans` is Saans — Intercom's proprietary geometric sans (Inter at weight 500
57
+ the closest open substitute); the whole ramp rides it, display voice carried by size and modest weight,
58
+ not a second family. The signature is restraint: `font-weight-strong` stops at **500** — Saans at 500
59
+ reads confident without bold, and the brand never reaches past it. Negative tracking is the other
60
+ signature, scaling with size (the corpus runs -0.5px at 28px). `font-mono` is SaansMono (JetBrains Mono
61
+ the approximation) for IDs, codes, timestamps, and log lines; numeric columns render `tabular-nums`.
62
+
63
+ | Step | Role | Size · line | Weight · tracking |
64
+ | --- | --- | --- | --- |
65
+ | h1 | page title | 24px / 1.25 | `font-weight-strong` · `heading-tracking` |
66
+ | h2 | section head | 20px / 1.3 | `font-weight-strong` · -0.015em |
67
+ | h3 | card / group head | 16px / 1.35 | `font-weight-strong` · -0.01em |
68
+ | body | UI + prose | 14px / 1.5 | `font-weight-normal` |
69
+ | small | labels, meta, dense table | 13px / 1.4 | `font-weight-normal` |
70
+ | eyebrow | section eyebrow | 13px / 1.3 | `font-weight-strong`, sentence case, no tracking |
71
+ | code | IDs, logs, amounts | 13px / 1.5 | `font-weight-normal` |
72
+
73
+ Body line-height relaxes to 1.5 — an editorial breath the category tightens away. Eyebrows are
74
+ **sentence case**, never the all-caps tracked label the operator default reaches for. Bump weight to
75
+ `font-weight-strong` (500) for emphasis; never bold. The 72px hero display stays behind.
76
+
77
+ ## 4 Component Stylings
78
+
79
+ Every recurring operator component composes from the primitives — no literal values.
80
+
81
+ - **Button** — `primary`: filled Fin Orange on `primary-foreground` (white), `radius` (8px), no pill.
82
+ Secondary: `secondary` warm-cream fill, 1px `border`, `foreground` ink label. Ghost: transparent,
83
+ `accent` on hover.
84
+ - **Input** — `card` (white) fill, 1px `border` (`border-weight`), `radius`; focus draws the Fin Orange `ring` at 2px, no glow.
85
+ - **Card** — `card` white surface lifting off the cream canvas, 1px `border`, a larger corner step from
86
+ the radius scale; shadow only when a true overlay floats (`shadow-intensity`); inset by `density-inset`.
87
+ - **Table row** — height `table-row-height`; `border` grid lines; `muted` on hover; `tabular-nums` on
88
+ numeric columns; row selection tints `accent` (warm-neutral, not orange).
89
+ - **Side panel** — detail and edit open in the side panel (`side-panel-width`, `side-panel-width-rich`
90
+ for content-heavy), beside the work, not over it.
91
+ - **Badge** — pill radius, hairline `border`, `muted`/status fill, sentence-case label; status badges
92
+ take `success` / `warning` / `destructive`, never `primary`.
93
+
94
+ ## 5 Layout
95
+
96
+ Base spacing unit 8px; the on-scale ramp is `4 · 8 · 12 · 16 · 24 · 32 · 48 · 64` (the marketing 96px
97
+ section step stays behind). Shell dimensions map one-to-one to the layout primitives: sidebar
98
+ `sidebar-width-expanded` (248px) / `sidebar-width-collapsed` (56px), topbar `topbar-height` (56px, the
99
+ corpus nav height), side panel `side-panel-width` (420px) / `side-panel-width-rich` (640px), modal cap
100
+ `modal-width-max`, forms `form-max-width`, tables full-width; card interior padding a calm 24px. Density
101
+ is governed globally by `density-tier` and stepped per archetype by the surface catalog.
102
+
103
+ ## 6 Depth
104
+
105
+ Flat, surface-change-first. Hierarchy comes from the cream-to-white ladder and warm hairlines, not
106
+ shadow — Intercom resists drop shadows:
107
+
108
+ - **0 — canvas** `background` cream (`#f5f1ec`), no border.
109
+ - **1 — panel / card** `card` white lifting off the cream on a 1px `border`; the lift is the elevation.
110
+ - **2 — overlay** `popover` / side panel / modal — the one place `shadow-intensity` earns a single
111
+ faint `sm` shadow, over a scrim for modals. Rank is the white-on-cream shift, the border, and position.
112
+
113
+ Focus is a 2px Fin Orange `ring` outline (never a glow), visible on every interactive element. Three
114
+ z-levels: content, sticky chrome, overlay.
115
+
116
+ ## 7 Do's & Don'ts
117
+
118
+ - **Do** anchor on the warm cream canvas — pure white reads as ordinary SaaS; the cream is the brand.
119
+ - **Do** lift panels and cards onto white (`card`) off the cream — the surface change is the depth.
120
+ - **Do** reserve Fin Orange (`primary`) for the single most important action; everything else is
121
+ charcoal ink or status.
122
+ - **Do** keep corners modest (`radius` 8px on buttons/inputs, the larger step on cards), write eyebrows
123
+ in sentence case, apply `tabular-nums` to numeric columns and `font-mono` to IDs/codes/timestamps.
124
+ - **Don't** use pure white as the canvas, or add drop shadows to floating cards.
125
+ - **Don't** spread Fin Orange — no orange section fills, no orange on secondary actions, no second
126
+ chromatic accent. The report palette stays in charts; status uses `success` / `warning` / `destructive`.
127
+ - **Don't** bold — Saans stops at weight 500; emphasise by weight, never a heavier cut or a size jump.
128
+ - **Don't** write all-caps tracked eyebrows, pill the primary CTA, or pull the 72px hero, the black
129
+ quote strip, or the product-mockup rhythm into operator chrome.
130
+
131
+ ## 8 Responsive
132
+
133
+ The operator sweep is 375 / 768 / 1024 / 1440.
134
+
135
+ | Breakpoint | What changes |
136
+ | --- | --- |
137
+ | 375 | sidebar → off-canvas drawer; two-pane list+detail stacks; side panel → full sheet; density holds |
138
+ | 768 | sidebar collapses to the icon rail (`sidebar-width-collapsed`); tables scroll their overflow; card grids drop to 2-up |
139
+ | 1024 | sidebar expands; two-pane queue+detail holds side by side; card grids 3-up |
140
+ | 1440 | forms cap at `form-max-width`; tables and dashboards use the full width; the cream breathing widens |
141
+
142
+ ## 9 Agent Prompt Guide
143
+
144
+ Directives the emitting agent follows verbatim. This brand is calm and editorial; keep it restrained
145
+ for operator work.
146
+
147
+ - Reach for the warm cream canvas first — never pure white; the cream tint is Intercom.
148
+ - Lift panels and cards by turning them white on the cream, not by casting a shadow.
149
+ - Accent only the primary action in Fin Orange (`primary`). If two things want the accent, one is not
150
+ primary. Neutral and secondary actions are charcoal ink on cream.
151
+ - Type stays Saans (Inter fallback) at weight 500 for emphasis and 400 for body — never bold. Eyebrows
152
+ are sentence case, never all-caps tracked; page titles carry negative tracking.
153
+ - Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`. Every workflow
154
+ completes from the keyboard; the Fin Orange `ring` focus outline is always visible.
155
+ - Stay flat — the cream-to-white ladder and warm hairlines before shadow; reach for the one faint tier
156
+ only for a real overlay.
157
+ - One accent. The report palette (`chart-*`) is for charts only; Brand Blue and the black quote strip
158
+ are not operator colors. Leave the hero, the product-mockup rhythm, and the 96px breathing behind.