@nurix/etna 0.18.20 → 0.18.22

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (272) hide show
  1. package/README.md +1 -1
  2. package/data/harness-index.json +1 -1
  3. package/data/harnesses/code/CLAUDE.md +3 -3
  4. package/data/harnesses/code/agents/brainstorm.md +1 -1
  5. package/data/harnesses/code/agents/maintenance.md +8 -7
  6. package/data/harnesses/code/harness.json +2 -2
  7. package/data/harnesses/code/rules/database.md +38 -0
  8. package/data/harnesses/code/rules/express.md +28 -0
  9. package/data/harnesses/code/rules/frontend.md +14 -0
  10. package/data/harnesses/code/rules/general.md +2 -40
  11. package/data/harnesses/code/rules/nomenclature.md +1 -8
  12. package/data/harnesses/code/rules/nustack.md +150 -0
  13. package/data/harnesses/code/skills/brainstorm/README.md +4 -4
  14. package/data/harnesses/code/skills/brainstorm/SKILL.md +5 -3
  15. package/data/harnesses/code/skills/brainstorm/exit-artifacts.md +15 -11
  16. package/data/harnesses/code/skills/brainstorm/templates/source-of-truth.md +5 -5
  17. package/data/harnesses/code/skills/design/SKILL.md +14 -11
  18. package/data/harnesses/code/skills/design/data/catalog/rules.csv +4 -4
  19. package/data/harnesses/code/skills/design/data/combinations/Readme.md +29 -0
  20. package/data/harnesses/code/skills/design/data/combinations/charts.csv +33 -0
  21. package/data/harnesses/code/skills/design/data/combinations/fonts-known.json +437 -0
  22. package/data/harnesses/code/skills/design/data/combinations/icons.csv +157 -0
  23. package/data/harnesses/code/skills/design/data/combinations/landing.csv +38 -0
  24. package/data/harnesses/code/skills/design/data/combinations/lucide-names.json +2001 -0
  25. package/data/harnesses/code/skills/design/data/combinations/manifest.json +283 -0
  26. package/data/harnesses/code/skills/design/data/combinations/palettes.csv +49 -0
  27. package/data/harnesses/code/skills/design/data/combinations/product-router.csv +80 -0
  28. package/data/harnesses/code/skills/design/data/combinations/styles.csv +54 -0
  29. package/data/harnesses/code/skills/design/data/combinations/typography.csv +61 -0
  30. package/data/harnesses/code/skills/design/data/design-md/SCHEMA.md +27 -238
  31. package/data/harnesses/code/skills/design/data/design-md/library/airbnb.md +7 -88
  32. package/data/harnesses/code/skills/design/data/design-md/library/airtable.md +1 -82
  33. package/data/harnesses/code/skills/design/data/design-md/library/anthropic-claude.md +4 -85
  34. package/data/harnesses/code/skills/design/data/design-md/library/apple.md +5 -86
  35. package/data/harnesses/code/skills/design/data/design-md/library/binance.md +4 -87
  36. package/data/harnesses/code/skills/design/data/design-md/library/bmw.md +7 -86
  37. package/data/harnesses/code/skills/design/data/design-md/library/cal.md +4 -84
  38. package/data/harnesses/code/skills/design/data/design-md/library/clay.md +5 -86
  39. package/data/harnesses/code/skills/design/data/design-md/library/clickhouse.md +3 -84
  40. package/data/harnesses/code/skills/design/data/design-md/library/cohere.md +2 -82
  41. package/data/harnesses/code/skills/design/data/design-md/library/coinbase.md +10 -91
  42. package/data/harnesses/code/skills/design/data/design-md/library/composio.md +2 -84
  43. package/data/harnesses/code/skills/design/data/design-md/library/cursor.md +3 -85
  44. package/data/harnesses/code/skills/design/data/design-md/library/elevenlabs.md +7 -90
  45. package/data/harnesses/code/skills/design/data/design-md/library/expo.md +0 -80
  46. package/data/harnesses/code/skills/design/data/design-md/library/figma.md +0 -80
  47. package/data/harnesses/code/skills/design/data/design-md/library/framer.md +5 -85
  48. package/data/harnesses/code/skills/design/data/design-md/library/hashicorp.md +2 -82
  49. package/data/harnesses/code/skills/design/data/design-md/library/ibm.md +5 -86
  50. package/data/harnesses/code/skills/design/data/design-md/library/intercom.md +9 -91
  51. package/data/harnesses/code/skills/design/data/design-md/library/kraken.md +9 -89
  52. package/data/harnesses/code/skills/design/data/design-md/library/linear-app.md +0 -115
  53. package/data/harnesses/code/skills/design/data/design-md/library/lovable.md +5 -85
  54. package/data/harnesses/code/skills/design/data/design-md/library/meta.md +7 -88
  55. package/data/harnesses/code/skills/design/data/design-md/library/minimax.md +3 -84
  56. package/data/harnesses/code/skills/design/data/design-md/library/mintlify.md +4 -85
  57. package/data/harnesses/code/skills/design/data/design-md/library/miro.md +8 -88
  58. package/data/harnesses/code/skills/design/data/design-md/library/mistral-ai.md +8 -88
  59. package/data/harnesses/code/skills/design/data/design-md/library/mongodb.md +4 -85
  60. package/data/harnesses/code/skills/design/data/design-md/library/notion.md +4 -84
  61. package/data/harnesses/code/skills/design/data/design-md/library/nvidia.md +7 -88
  62. package/data/harnesses/code/skills/design/data/design-md/library/ollama.md +5 -86
  63. package/data/harnesses/code/skills/design/data/design-md/library/opencode-ai.md +6 -87
  64. package/data/harnesses/code/skills/design/data/design-md/library/posthog.md +9 -91
  65. package/data/harnesses/code/skills/design/data/design-md/library/raycast.md +5 -88
  66. package/data/harnesses/code/skills/design/data/design-md/library/replicate.md +9 -89
  67. package/data/harnesses/code/skills/design/data/design-md/library/resend.md +4 -119
  68. package/data/harnesses/code/skills/design/data/design-md/library/revolut.md +4 -84
  69. package/data/harnesses/code/skills/design/data/design-md/library/runwayml.md +0 -82
  70. package/data/harnesses/code/skills/design/data/design-md/library/sanity.md +3 -86
  71. package/data/harnesses/code/skills/design/data/design-md/library/sentry.md +13 -94
  72. package/data/harnesses/code/skills/design/data/design-md/library/shopify.md +2 -82
  73. package/data/harnesses/code/skills/design/data/design-md/library/slack.md +6 -88
  74. package/data/harnesses/code/skills/design/data/design-md/library/spacex.md +13 -94
  75. package/data/harnesses/code/skills/design/data/design-md/library/spotify.md +4 -86
  76. package/data/harnesses/code/skills/design/data/design-md/library/stripe.md +7 -88
  77. package/data/harnesses/code/skills/design/data/design-md/library/supabase.md +6 -88
  78. package/data/harnesses/code/skills/design/data/design-md/library/superhuman.md +5 -86
  79. package/data/harnesses/code/skills/design/data/design-md/library/tesla.md +6 -86
  80. package/data/harnesses/code/skills/design/data/design-md/library/theverge.md +12 -93
  81. package/data/harnesses/code/skills/design/data/design-md/library/together-ai.md +11 -91
  82. package/data/harnesses/code/skills/design/data/design-md/library/uber.md +8 -88
  83. package/data/harnesses/code/skills/design/data/design-md/library/vercel.md +2 -82
  84. package/data/harnesses/code/skills/design/data/design-md/library/voltagent.md +11 -126
  85. package/data/harnesses/code/skills/design/data/design-md/library/warp.md +8 -88
  86. package/data/harnesses/code/skills/design/data/design-md/library/webflow.md +3 -83
  87. package/data/harnesses/code/skills/design/data/design-md/library/wired.md +10 -91
  88. package/data/harnesses/code/skills/design/data/design-md/library/wise.md +7 -90
  89. package/data/harnesses/code/skills/design/data/design-md/library/x-ai.md +6 -88
  90. package/data/harnesses/code/skills/design/data/design-md/library/zapier.md +9 -89
  91. package/data/harnesses/code/skills/design/data/design-md/nurix.md +4 -87
  92. package/data/harnesses/code/skills/design/data/design-tokens/SCHEMA.md +580 -0
  93. package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.resolver.json +20 -0
  94. package/data/harnesses/code/skills/design/data/design-tokens/airbnb/design.tokens.json +964 -0
  95. package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.resolver.json +20 -0
  96. package/data/harnesses/code/skills/design/data/design-tokens/airtable/design.tokens.json +960 -0
  97. package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.resolver.json +20 -0
  98. package/data/harnesses/code/skills/design/data/design-tokens/anthropic-claude/design.tokens.json +965 -0
  99. package/data/harnesses/code/skills/design/data/design-tokens/apple/design.resolver.json +20 -0
  100. package/data/harnesses/code/skills/design/data/design-tokens/apple/design.tokens.json +954 -0
  101. package/data/harnesses/code/skills/design/data/design-tokens/binance/design.resolver.json +20 -0
  102. package/data/harnesses/code/skills/design/data/design-tokens/binance/design.tokens.json +949 -0
  103. package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.resolver.json +20 -0
  104. package/data/harnesses/code/skills/design/data/design-tokens/bmw/design.tokens.json +962 -0
  105. package/data/harnesses/code/skills/design/data/design-tokens/cal/design.resolver.json +20 -0
  106. package/data/harnesses/code/skills/design/data/design-tokens/cal/design.tokens.json +958 -0
  107. package/data/harnesses/code/skills/design/data/design-tokens/clay/design.resolver.json +20 -0
  108. package/data/harnesses/code/skills/design/data/design-tokens/clay/design.tokens.json +953 -0
  109. package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.resolver.json +20 -0
  110. package/data/harnesses/code/skills/design/data/design-tokens/clickhouse/design.tokens.json +960 -0
  111. package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.resolver.json +20 -0
  112. package/data/harnesses/code/skills/design/data/design-tokens/cohere/design.tokens.json +973 -0
  113. package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.resolver.json +20 -0
  114. package/data/harnesses/code/skills/design/data/design-tokens/coinbase/design.tokens.json +954 -0
  115. package/data/harnesses/code/skills/design/data/design-tokens/composio/design.resolver.json +20 -0
  116. package/data/harnesses/code/skills/design/data/design-tokens/composio/design.tokens.json +963 -0
  117. package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.resolver.json +20 -0
  118. package/data/harnesses/code/skills/design/data/design-tokens/cursor/design.tokens.json +968 -0
  119. package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.resolver.json +20 -0
  120. package/data/harnesses/code/skills/design/data/design-tokens/elevenlabs/design.tokens.json +981 -0
  121. package/data/harnesses/code/skills/design/data/design-tokens/expo/design.resolver.json +20 -0
  122. package/data/harnesses/code/skills/design/data/design-tokens/expo/design.tokens.json +962 -0
  123. package/data/harnesses/code/skills/design/data/design-tokens/figma/design.resolver.json +20 -0
  124. package/data/harnesses/code/skills/design/data/design-tokens/figma/design.tokens.json +964 -0
  125. package/data/harnesses/code/skills/design/data/design-tokens/framer/design.resolver.json +20 -0
  126. package/data/harnesses/code/skills/design/data/design-tokens/framer/design.tokens.json +959 -0
  127. package/data/harnesses/code/skills/design/data/design-tokens/goldens.json +251 -0
  128. package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.resolver.json +20 -0
  129. package/data/harnesses/code/skills/design/data/design-tokens/hashicorp/design.tokens.json +965 -0
  130. package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.resolver.json +20 -0
  131. package/data/harnesses/code/skills/design/data/design-tokens/ibm/design.tokens.json +978 -0
  132. package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.resolver.json +20 -0
  133. package/data/harnesses/code/skills/design/data/design-tokens/intercom/design.tokens.json +982 -0
  134. package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.resolver.json +20 -0
  135. package/data/harnesses/code/skills/design/data/design-tokens/kraken/design.tokens.json +958 -0
  136. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.resolver.json +23 -0
  137. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.dark.json +589 -0
  138. package/data/harnesses/code/skills/design/data/design-tokens/linear-app/design.tokens.json +964 -0
  139. package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.resolver.json +20 -0
  140. package/data/harnesses/code/skills/design/data/design-tokens/lovable/design.tokens.json +955 -0
  141. package/data/harnesses/code/skills/design/data/design-tokens/meta/design.resolver.json +20 -0
  142. package/data/harnesses/code/skills/design/data/design-tokens/meta/design.tokens.json +977 -0
  143. package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.resolver.json +20 -0
  144. package/data/harnesses/code/skills/design/data/design-tokens/minimax/design.tokens.json +950 -0
  145. package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.resolver.json +20 -0
  146. package/data/harnesses/code/skills/design/data/design-tokens/mintlify/design.tokens.json +976 -0
  147. package/data/harnesses/code/skills/design/data/design-tokens/miro/design.resolver.json +20 -0
  148. package/data/harnesses/code/skills/design/data/design-tokens/miro/design.tokens.json +979 -0
  149. package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.resolver.json +20 -0
  150. package/data/harnesses/code/skills/design/data/design-tokens/mistral-ai/design.tokens.json +955 -0
  151. package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.resolver.json +20 -0
  152. package/data/harnesses/code/skills/design/data/design-tokens/mongodb/design.tokens.json +958 -0
  153. package/data/harnesses/code/skills/design/data/design-tokens/notion/design.resolver.json +20 -0
  154. package/data/harnesses/code/skills/design/data/design-tokens/notion/design.tokens.json +953 -0
  155. package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.resolver.json +20 -0
  156. package/data/harnesses/code/skills/design/data/design-tokens/nurix/design.tokens.json +904 -0
  157. package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.resolver.json +20 -0
  158. package/data/harnesses/code/skills/design/data/design-tokens/nvidia/design.tokens.json +957 -0
  159. package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.resolver.json +20 -0
  160. package/data/harnesses/code/skills/design/data/design-tokens/ollama/design.tokens.json +945 -0
  161. package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.resolver.json +20 -0
  162. package/data/harnesses/code/skills/design/data/design-tokens/opencode-ai/design.tokens.json +960 -0
  163. package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.resolver.json +20 -0
  164. package/data/harnesses/code/skills/design/data/design-tokens/posthog/design.tokens.json +953 -0
  165. package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.resolver.json +20 -0
  166. package/data/harnesses/code/skills/design/data/design-tokens/raycast/design.tokens.json +955 -0
  167. package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.resolver.json +20 -0
  168. package/data/harnesses/code/skills/design/data/design-tokens/replicate/design.tokens.json +958 -0
  169. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.resolver.json +23 -0
  170. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.dark.json +613 -0
  171. package/data/harnesses/code/skills/design/data/design-tokens/resend/design.tokens.json +968 -0
  172. package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.resolver.json +20 -0
  173. package/data/harnesses/code/skills/design/data/design-tokens/revolut/design.tokens.json +956 -0
  174. package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.resolver.json +20 -0
  175. package/data/harnesses/code/skills/design/data/design-tokens/runwayml/design.tokens.json +960 -0
  176. package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.resolver.json +20 -0
  177. package/data/harnesses/code/skills/design/data/design-tokens/sanity/design.tokens.json +958 -0
  178. package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.resolver.json +20 -0
  179. package/data/harnesses/code/skills/design/data/design-tokens/sentry/design.tokens.json +980 -0
  180. package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.resolver.json +20 -0
  181. package/data/harnesses/code/skills/design/data/design-tokens/shopify/design.tokens.json +964 -0
  182. package/data/harnesses/code/skills/design/data/design-tokens/slack/design.resolver.json +20 -0
  183. package/data/harnesses/code/skills/design/data/design-tokens/slack/design.tokens.json +957 -0
  184. package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.resolver.json +20 -0
  185. package/data/harnesses/code/skills/design/data/design-tokens/spacex/design.tokens.json +979 -0
  186. package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.resolver.json +20 -0
  187. package/data/harnesses/code/skills/design/data/design-tokens/spotify/design.tokens.json +974 -0
  188. package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.resolver.json +20 -0
  189. package/data/harnesses/code/skills/design/data/design-tokens/stripe/design.tokens.json +973 -0
  190. package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.resolver.json +20 -0
  191. package/data/harnesses/code/skills/design/data/design-tokens/supabase/design.tokens.json +979 -0
  192. package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.resolver.json +20 -0
  193. package/data/harnesses/code/skills/design/data/design-tokens/superhuman/design.tokens.json +966 -0
  194. package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.resolver.json +20 -0
  195. package/data/harnesses/code/skills/design/data/design-tokens/tesla/design.tokens.json +961 -0
  196. package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.resolver.json +20 -0
  197. package/data/harnesses/code/skills/design/data/design-tokens/theverge/design.tokens.json +977 -0
  198. package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.resolver.json +20 -0
  199. package/data/harnesses/code/skills/design/data/design-tokens/together-ai/design.tokens.json +991 -0
  200. package/data/harnesses/code/skills/design/data/design-tokens/uber/design.resolver.json +20 -0
  201. package/data/harnesses/code/skills/design/data/design-tokens/uber/design.tokens.json +966 -0
  202. package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.resolver.json +20 -0
  203. package/data/harnesses/code/skills/design/data/design-tokens/vercel/design.tokens.json +988 -0
  204. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.resolver.json +23 -0
  205. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.dark.json +602 -0
  206. package/data/harnesses/code/skills/design/data/design-tokens/voltagent/design.tokens.json +974 -0
  207. package/data/harnesses/code/skills/design/data/design-tokens/warp/design.resolver.json +20 -0
  208. package/data/harnesses/code/skills/design/data/design-tokens/warp/design.tokens.json +979 -0
  209. package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.resolver.json +20 -0
  210. package/data/harnesses/code/skills/design/data/design-tokens/webflow/design.tokens.json +960 -0
  211. package/data/harnesses/code/skills/design/data/design-tokens/wired/design.resolver.json +20 -0
  212. package/data/harnesses/code/skills/design/data/design-tokens/wired/design.tokens.json +968 -0
  213. package/data/harnesses/code/skills/design/data/design-tokens/wise/design.resolver.json +20 -0
  214. package/data/harnesses/code/skills/design/data/design-tokens/wise/design.tokens.json +965 -0
  215. package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.resolver.json +20 -0
  216. package/data/harnesses/code/skills/design/data/design-tokens/x-ai/design.tokens.json +988 -0
  217. package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.resolver.json +20 -0
  218. package/data/harnesses/code/skills/design/data/design-tokens/zapier/design.tokens.json +978 -0
  219. package/data/harnesses/code/skills/design/data/operator-pack/surface-catalog.md +1 -1
  220. package/data/harnesses/code/skills/design/references/create.md +14 -9
  221. package/data/harnesses/code/skills/design/references/diagnosis.md +1 -1
  222. package/data/harnesses/code/skills/design/references/hard-rules.md +4 -4
  223. package/data/harnesses/code/skills/design/references/improve.md +11 -9
  224. package/data/harnesses/code/skills/design/references/introspect.md +1 -1
  225. package/data/harnesses/code/skills/design/references/personality.md +337 -413
  226. package/data/harnesses/code/skills/design/scripts/convert-design-md.mjs +1032 -0
  227. package/data/harnesses/code/skills/design/scripts/derive-personality.mjs +596 -296
  228. package/data/harnesses/code/skills/design/scripts/{detector.mjs → lib/checks.mjs} +145 -140
  229. package/data/harnesses/code/skills/design/scripts/lib/golden.mjs +26 -0
  230. package/data/harnesses/code/skills/design/scripts/phase-gate.mjs +105 -37
  231. package/data/harnesses/code/skills/design/scripts/preship-sweep.mjs +60 -73
  232. package/data/harnesses/code/skills/design/scripts/render-rung.mjs +1 -1
  233. package/data/harnesses/code/skills/design/scripts/scaffold.mjs +1 -1
  234. package/data/harnesses/code/skills/design/scripts/self-integrity.mjs +205 -37
  235. package/data/harnesses/code/skills/design/scripts/snapshot-goldens.mjs +68 -0
  236. package/data/harnesses/code/skills/design/scripts/validate-combinations.mjs +314 -0
  237. package/data/harnesses/code/skills/documentation/SKILL.md +61 -17
  238. package/data/harnesses/code/skills/documentation/references/examples.md +41 -0
  239. package/data/harnesses/code/skills/documentation/references/style-guide.md +14 -9
  240. package/data/harnesses/code/skills/documentation/references/templates.md +306 -52
  241. package/data/harnesses/etna/CLAUDE.md +3 -3
  242. package/data/harnesses/etna/agents/brainstorm.md +1 -1
  243. package/data/harnesses/etna/agents/maintenance.md +8 -7
  244. package/data/harnesses/etna/harness.json +2 -2
  245. package/data/harnesses/etna/rules/general.md +2 -40
  246. package/data/harnesses/etna/rules/nomenclature.md +1 -8
  247. package/data/harnesses/etna/skills/brainstorm/README.md +4 -4
  248. package/data/harnesses/etna/skills/brainstorm/SKILL.md +5 -3
  249. package/data/harnesses/etna/skills/brainstorm/exit-artifacts.md +15 -11
  250. package/data/harnesses/etna/skills/brainstorm/templates/source-of-truth.md +5 -5
  251. package/data/harnesses/etna/skills/documentation/SKILL.md +61 -17
  252. package/data/harnesses/etna/skills/documentation/references/examples.md +41 -0
  253. package/data/harnesses/etna/skills/documentation/references/style-guide.md +14 -9
  254. package/data/harnesses/etna/skills/documentation/references/templates.md +306 -52
  255. package/data/harnesses/mobile/CLAUDE.md +3 -3
  256. package/data/harnesses/mobile/agents/brainstorm.md +1 -1
  257. package/data/harnesses/mobile/agents/maintenance.md +8 -7
  258. package/data/harnesses/mobile/harness.json +2 -2
  259. package/data/harnesses/mobile/rules/database.md +38 -0
  260. package/data/harnesses/mobile/rules/general.md +2 -40
  261. package/data/harnesses/mobile/rules/nomenclature.md +1 -8
  262. package/data/harnesses/mobile/rules/nustack.md +150 -0
  263. package/data/harnesses/mobile/skills/brainstorm/README.md +4 -4
  264. package/data/harnesses/mobile/skills/brainstorm/SKILL.md +5 -3
  265. package/data/harnesses/mobile/skills/brainstorm/exit-artifacts.md +15 -11
  266. package/data/harnesses/mobile/skills/brainstorm/templates/source-of-truth.md +5 -5
  267. package/data/harnesses/mobile/skills/documentation/SKILL.md +61 -17
  268. package/data/harnesses/mobile/skills/documentation/references/examples.md +41 -0
  269. package/data/harnesses/mobile/skills/documentation/references/style-guide.md +14 -9
  270. package/data/harnesses/mobile/skills/documentation/references/templates.md +306 -52
  271. package/package.json +1 -1
  272. package/data/harnesses/code/skills/design/scripts/hook-config.json +0 -11
@@ -139,83 +139,3 @@ Directives the emitting agent follows verbatim:
139
139
  - Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`.
140
140
  - The pastels live only in charts (`chart-1..5`); stay flat — hairline and weight before shadow, and
141
141
  reach past a hairline only for a real overlay.
142
-
143
- ```yaml design-primitives
144
- radius: 8px # derived: Figma control radius (rounded.md, inputs/list items) carries the friendly rounding; the marketing pill (50px) stays behind
145
- shadow-intensity: 0.35 # derived: brand is shadow-light by design (level-2 overlay is only 0.06 alpha); hairline and surface carry depth
146
- border-weight: 1px
147
- density-gap: 1
148
- density-inset: 1
149
- font-sans: Inter, system-ui, sans-serif # derived: figmaSans substitute (corpus names Inter for its fine variable-weight axis)
150
- font-mono: JetBrains Mono, ui-monospace, monospace # derived: figmaMono substitute (corpus names JetBrains Mono) — IDs, codes, log lines, eyebrows
151
- font-weight-normal: 400 # derived: brand body runs 320-340 (display-tuned); Inter has no 320 stop and 300 is too thin for 13px tables, so 400
152
- font-weight-strong: 600 # derived: operator emphasis bracketed by brand headline 540 / card-title 700
153
- heading-tracking: -0.01em # derived: matches Figma's headline-scale tracking (-0.26px at 26px); the -1.72px hero tracking is display-scale, stays behind
154
- duration-unit: 50ms # derived: corpus documents no motion (no-interaction policy); operator functional-motion base
155
- duration-fast: 100ms # derived: operator functional default
156
- duration-normal: 150ms # derived: operator functional default
157
- duration-slow: 250ms # derived: operator functional default
158
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: standard functional ease; corpus documents no motion
159
- contrast-boost: 1 # derived: pure black ink on white is already maximal contrast; hairlines are visible; no boost needed
160
- icon-stroke: 1.75 # derived: refined operator stroke, one step under lucide's 2
161
- icon-size-base: 16px # derived: operator default; matches the corpus's 16px comparison-checkmark glyph
162
- sidebar-width-expanded: 256px # derived: 8px-grid aligned (32 units), slightly roomier per the brand's generous rhythm
163
- sidebar-width-collapsed: 56px # derived: mirrors Figma's 56px top-nav height (7 units)
164
- topbar-height: 56px # brand: Figma's documented top-nav height
165
- side-panel-width: 440px # derived: 8px-grid aligned (55 units), roomy per brand character
166
- side-panel-width-rich: 640px # derived: 8px-grid aligned (80 units) for content-heavy detail
167
- modal-width-max: 560px # derived: 8px-grid aligned (70 units); modals for confirmations only
168
- form-max-width: 640px # derived: 8px-grid aligned (80 units)
169
- table-row-height: 44px # derived: brand's generous rhythm + the 44px min touch target the corpus cites; dense archetypes step down via the surface catalog
170
- verbosity: default
171
- feedback: subtle # derived: brand is calm, editorial, shadow-light — quiet feedback fits
172
- density-tier: standard # derived: brand rhythm is generous (8px base) but operator work needs function; standard, leaning roomy
173
- product-traits: [design-tools, collaboration, dashboard, admin]
174
- ```
175
-
176
- ```yaml lever-manifest
177
- version: 1
178
- fonts: { sans: "Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
179
- color-tokens:
180
- light:
181
- background: "#ffffff"
182
- foreground: "#000000"
183
- card: "#ffffff"
184
- card-foreground: "#000000"
185
- muted: "#f7f7f5"
186
- muted-foreground: "#666666" # derived: brand refuses mid-gray text on marketing; operator secondary ink needs it — neutral gray, 5.7:1 AA on white
187
- border: "#e6e6e6"
188
- input: "#e6e6e6"
189
- ring: "#ff3d8b" # brand: Figma magenta, the single chromatic accent, on the focus ring
190
- primary: "#000000"
191
- primary-foreground: "#ffffff"
192
- accent: "#ffe4ef" # derived: pale magenta tint for selection/hover surfaces
193
- accent-foreground: "#000000" # derived: ink-black for AA on the pale accent; magenta stays scarce on the ring/indicator
194
- destructive: "#eb5757" # derived: Figma product red, matching the palette's bright-friendly saturation
195
- destructive-foreground: "#ffffff"
196
- success: "#1ea64a" # brand: documented semantic-success green
197
- warning: "#f2994a" # derived: Figma product amber; matches the success green's friendly saturation
198
- popover: "#ffffff"
199
- popover-foreground: "#000000"
200
- secondary: "#f7f7f5"
201
- secondary-foreground: "#000000"
202
- chart-1: "#ff3d8b" # brand: magenta anchors the ramp as the saturated primary series
203
- chart-2: "#7c5cde" # derived: block-lilac (#c5b0f4) deepened for chart legibility
204
- chart-3: "#1ea64a" # brand: success green
205
- chart-4: "#f2994a" # derived: warning amber
206
- chart-5: "#1f1d3d" # brand: block-navy deep indigo
207
- sidebar: "#f7f7f5"
208
- sidebar-foreground: "#000000"
209
- sidebar-primary: "#000000"
210
- sidebar-primary-foreground: "#ffffff"
211
- sidebar-accent: "#ffe4ef" # derived: pale magenta hover/selection tint, matching accent
212
- sidebar-accent-foreground: "#000000"
213
- sidebar-border: "#e6e6e6"
214
- sidebar-ring: "#ff3d8b" # brand: magenta focus ring in the nav
215
- spacing-scale: [4, 8, 12, 16, 24, 32, 48, 96]
216
- radius-scale: [0, 6, 8, 24, 9999]
217
- shadow-levels: [none, sm, md]
218
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
219
- icons: { family: lucide, stroke: 1.75 }
220
- accent-count: 1
221
- ```
@@ -9,11 +9,11 @@ sourced: 2026-07-04
9
9
 
10
10
  Framer's brand is a near-pure-black marketing artboard: white display type set poster-tight, one
11
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 in
13
- Framer's language. What carries: the dark charcoal surface ladder, white ink, the single blue signal,
14
- the tight-tracked Inter voice, the softly-rounded geometry. What stays behind: the hero-scale GT
15
- Walsheim display, the gradient spotlight cards as chrome, the pill CTA, the 5px/96px editorial rhythm.
16
- Both machine blocks are fully valued; every judgment away from the marketing brand is annotated.
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
17
 
18
18
  Framer is categorically dark. Where the operator doctrine defaults light and treats dark as opt-in,
19
19
  this brand legitimately inverts it: the base theme *is* dark, and `color-tokens.light` carries the
@@ -154,83 +154,3 @@ Directives the emitting agent follows verbatim:
154
154
  codes, timestamps; `tabular-nums` on every numeric column.
155
155
  - Track headings tight; keep buttons and cards on the `radius` default. Leave behind the GT Walsheim
156
156
  hero display, the gradient spotlight cards, the pill CTA, and the 96px editorial section rhythm.
157
-
158
- ```yaml design-primitives
159
- radius: 10px # derived: brand default 15-20px card radius is marketing-soft; operator settles on the 10px form/list step, softer than a terminal but not a marketing panel
160
- shadow-intensity: 0.5 # derived: brand elevates by surface lift + a light top-edge; shadow only lifts true overlays against near-black
161
- border-weight: 1px
162
- density-gap: 1
163
- density-inset: 1
164
- font-sans: Inter, system-ui, sans-serif # rationale: brand's body face; the single sans slot serves body/table chrome and operator headings (GT Walsheim is hero-display only, stays behind)
165
- font-mono: Geist Mono, ui-monospace, SFMono-Regular, monospace # derived: corpus specs no mono; Geist is named as a substitute family, its mono sibling pairs cleanly with Inter for IDs/codes/logs
166
- font-weight-normal: 400
167
- font-weight-strong: 600 # derived: brand keeps a narrow weight band (display 500, Inter headline 700); operator strong lands at 600 so hierarchy rides size + tracking, not a heavy ramp
168
- heading-tracking: -0.02em # derived: brand's aggressive negative tracking carries as a tighter-than-default operator heading tracking; the hero -5.5px extreme stays behind
169
- duration-unit: 50ms # derived: corpus silent on motion; operator-standard base
170
- duration-fast: 100ms
171
- duration-normal: 150ms
172
- duration-slow: 250ms
173
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on easing; functional operator standard
174
- contrast-boost: 1
175
- icon-stroke: 1.75 # derived: corpus silent on icons; refined operator stroke, one step under lucide's 2
176
- icon-size-base: 16px
177
- sidebar-width-expanded: 248px # derived: no sidebar in the marketing corpus; operator-standard shell
178
- sidebar-width-collapsed: 56px # derived: operator-standard icon rail
179
- topbar-height: 56px # rationale: the brand's top-nav height (56px) carried directly
180
- side-panel-width: 420px # derived: operator-standard shell (no side panel in the marketing corpus)
181
- side-panel-width-rich: 640px # derived: operator-standard content-heavy panel
182
- modal-width-max: 560px # derived: operator-standard modal cap
183
- form-max-width: 640px # derived: operator-standard form column
184
- table-row-height: 40px # derived: comfortable at standard density; dense archetypes step down via the surface catalog
185
- verbosity: default
186
- feedback: subtle
187
- density-tier: standard # derived: brand reads spacious/editorial, not terminal-dense; operator holds at standard for legibility, steps denser per archetype
188
- product-traits: [design-tool, builder, dashboard, saas, dev-tools]
189
- ```
190
-
191
- ```yaml lever-manifest
192
- version: 1
193
- fonts: { sans: "Inter, system-ui, sans-serif", mono: "Geist Mono, ui-monospace, SFMono-Regular, monospace" }
194
- color-tokens:
195
- light: # note: brand is categorically dark — the base map carries dark values (no light mode ships); this is the recorded doctrine-inversion override
196
- background: "#090909"
197
- foreground: "#ffffff"
198
- card: "#141414"
199
- card-foreground: "#ffffff"
200
- muted: "#1c1c1c"
201
- muted-foreground: "#999999"
202
- border: "#262626"
203
- input: "#262626"
204
- ring: "#0099ff"
205
- primary: "#ffffff"
206
- primary-foreground: "#000000"
207
- accent: "#1c1c1c"
208
- accent-foreground: "#ffffff"
209
- destructive: "#ef4444" # derived: corpus has no destructive red (only success green); operator-standard red legible on near-black
210
- destructive-foreground: "#ffffff"
211
- success: "#22c55e"
212
- warning: "#f59e0b" # derived: corpus has no warning hue; operator-standard amber legible on near-black
213
- popover: "#141414"
214
- popover-foreground: "#ffffff"
215
- secondary: "#141414"
216
- secondary-foreground: "#ffffff"
217
- chart-1: "#0099ff" # accent-blue as the primary data series
218
- chart-2: "#6a4cf5" # gradient-violet, repurposed from marketing atmosphere to chart series
219
- chart-3: "#d44df0" # gradient-magenta
220
- chart-4: "#ff7a3d" # gradient-orange
221
- chart-5: "#ff5577" # gradient-coral
222
- sidebar: "#090909" # note: brand chrome sits on canvas; sidebar matches background, separated by sidebar-border
223
- sidebar-foreground: "#ffffff"
224
- sidebar-primary: "#0099ff" # derived: active-nav takes the blue signal (the brand marks selection/active with blue), not the white primary fill
225
- sidebar-primary-foreground: "#ffffff"
226
- sidebar-accent: "#141414" # hover/selected nav row lifts to surface-1
227
- sidebar-accent-foreground: "#ffffff"
228
- sidebar-border: "#1a1a1a" # hairline-soft, the brand's chrome divider
229
- sidebar-ring: "#0099ff"
230
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
231
- radius-scale: [0, 4, 6, 10, 15, 9999]
232
- shadow-levels: [none, sm, md]
233
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
234
- icons: { family: lucide, stroke: 1.75 }
235
- accent-count: 1
236
- ```
@@ -32,8 +32,8 @@ monochrome. Density is `standard` — the brand breathes more than a terminal, b
32
32
 
33
33
  ## 2 Color Roles
34
34
 
35
- Dark values (the manifest carries the exact hex in the required default slot). One accent — blue `primary` is the
36
- only chromatic hue that carries UI meaning; status hues speak only status; the product palette lives only in charts.
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
37
 
38
38
  | Role | Value | Allowed where |
39
39
  | --- | --- | --- |
@@ -138,83 +138,3 @@ Directives the emitting agent follows verbatim:
138
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
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
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.
141
-
142
- ```yaml design-primitives
143
- radius: 8px # corpus: brand button/input/list radius (rounded.md 8px); cards step to 12px via the scale; pill is badges-only
144
- shadow-intensity: 0.2 # derived: brand is shadowless on dark — depth is surface lift; only true overlays earn the faintest lift on the black canvas
145
- border-weight: 1px
146
- density-gap: 1 # derived: standard tier — brand breathes more than a terminal (relaxed body, 96px sections); archetypes step denser
147
- density-inset: 1 # derived: matches the standard density-gap for coherent component insets
148
- font-sans: Inter, system-ui, sans-serif # derived: hashicorpSans is proprietary; Inter is the corpus's own first-choice open substitute (closest geometric proportions)
149
- font-mono: JetBrains Mono, ui-monospace, monospace # derived: marketing brand withholds mono (in-product only); operator IDs/logs need one — JetBrains Mono
150
- font-weight-normal: 400 # derived: brand marketing body is 500; dense operator tables read cleaner at 400, heading weight carries the engineered voice
151
- font-weight-strong: 600 # corpus: headline / card-title / subhead / eyebrow all 600; the 700 display weights top out above operator scale and stay behind
152
- heading-tracking: -0.02em # corpus: signature tight negative display tracking (-0.4 to -0.6px at operator heading sizes ≈ -0.02em)
153
- duration-unit: 50ms # derived: corpus documents no motion (known gap); functional operator base
154
- duration-fast: 100ms # derived: corpus silent; functional tempo
155
- duration-normal: 150ms # derived: corpus silent; standard functional tempo
156
- duration-slow: 250ms # derived: corpus silent; overlay / panel transition
157
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
158
- contrast-boost: 1 # derived: the solid #3b3d45 hairline reads clearly on pure black; borders carry the grid, no boost
159
- icon-stroke: 1.75 # derived: corpus silent on icons; refined operator stroke one step under lucide's 2, matching the engineered voice
160
- icon-size-base: 16px # derived: corpus silent on icon size; operator default
161
- sidebar-width-expanded: 248px # derived: brand has no app sidebar (marketing top nav); standard operator rail
162
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
163
- topbar-height: 64px # corpus top-nav height (64px)
164
- side-panel-width: 420px # derived: corpus silent; standard operator detail panel
165
- side-panel-width-rich: 640px # derived: content-heavy detail panel
166
- modal-width-max: 560px # derived: corpus's CTA banners are full-bleed marketing; operator confirmation cap
167
- form-max-width: 640px # derived: brand max content ~1280px is marketing; operator form cap
168
- table-row-height: 40px # derived: standard operator row; dense archetypes step down via the surface catalog
169
- verbosity: default
170
- feedback: subtle # derived: brand is confident and quiet; functional feedback only
171
- density-tier: standard # derived: brand's relaxed body and 96px sections read more spacious than a terminal; the infra-operator reading is standard, archetypes step denser
172
- product-traits: [dev-tools, infrastructure, dashboard, admin]
173
- ```
174
-
175
- ```yaml lever-manifest
176
- version: 1
177
- fonts: { sans: "Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
178
- color-tokens:
179
- light: # categorically-dark brand: the default-worn theme is dark and fills this required default slot; there is no light surface, and the canvas is pure #000000 (brand token wins over the doctrine ban)
180
- background: "#000000"
181
- foreground: "#ffffff"
182
- card: "#15181e"
183
- card-foreground: "#ffffff"
184
- muted: "#0c0e12" # derived: a faint well between the black canvas and the charcoal card, for inset tracks and quiet band tints
185
- muted-foreground: "#b2b6bd"
186
- border: "#3b3d45"
187
- input: "#3b3d45"
188
- ring: "#2b89ff"
189
- primary: "#2b89ff"
190
- primary-foreground: "#ffffff"
191
- accent: "#1f232b"
192
- accent-foreground: "#ffffff"
193
- destructive: "#e62b1e"
194
- destructive-foreground: "#ffffff"
195
- success: "#00ca8e"
196
- warning: "#ffcf25"
197
- popover: "#15181e"
198
- popover-foreground: "#ffffff"
199
- secondary: "#1f232b"
200
- secondary-foreground: "#ffffff"
201
- chart-1: "#2b89ff" # accent blue — primary data series
202
- chart-2: "#7b42bc" # Terraform purple — per-product palette repurposed as the chart categorical ramp
203
- chart-3: "#00ca8e" # Nomad green
204
- chart-4: "#ffcf25" # Vault yellow
205
- chart-5: "#f24c53" # Boundary coral
206
- sidebar: "#000000" # derived: brand nav rides the canvas; the hairline sidebar-border carries the seam
207
- sidebar-foreground: "#b2b6bd" # derived: resting nav labels dim to brand secondary ink, brightening on active
208
- sidebar-primary: "#2b89ff" # derived: blue active-nav indicator
209
- sidebar-primary-foreground: "#ffffff"
210
- sidebar-accent: "#1f232b" # derived: hover / selected nav lift (surface-2)
211
- sidebar-accent-foreground: "#ffffff"
212
- sidebar-border: "#3b3d45"
213
- sidebar-ring: "#2b89ff"
214
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
215
- radius-scale: [0, 4, 6, 8, 12, 16, 9999]
216
- shadow-levels: [none, sm, md]
217
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
218
- icons: { family: lucide, stroke: 1.75 }
219
- accent-count: 1
220
- ```
@@ -8,12 +8,11 @@ sourced: 2026-07-04
8
8
  # IBM — Carbon operator design
9
9
 
10
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 *marketing*
12
- canvas, and marketing graces are stripped here. What carries: the flat 0px square geometry, IBM Blue
13
- as the single accent, IBM Plex Sans, the 4px grid, and depth carried by hairlines and surface change.
14
- What stays behind: the 76/60/42px weight-300 hero display type, the full-bleed blue CTA banner, the
15
- dark inverted footer, and the soft-blue hero gradient. Both machine blocks are fully valued; every
16
- judgment past the corpus is annotated `# derived:` where it lands.
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.
17
16
 
18
17
  ## 1 Visual Theme
19
18
 
@@ -152,83 +151,3 @@ inverted footer, and the soft-blue hero gradient — all marketing.
152
151
  - Depth is hairline and surface change; reach past a hairline only for a real overlay.
153
152
  - Detail and edit go in the side panel; a modal is a confirmation, not a workspace.
154
153
  - Keep the whole app light; do not invert to charcoal outside a deliberate dark opt-in.
155
-
156
- ```yaml design-primitives
157
- radius: 0px # derived: Carbon commits to 0px square corners on every surface; the scale still offers 2/4px for rare exceptions
158
- shadow-intensity: 0.3 # derived: Carbon resists shadow on flat tiles; only overlays (menu/modal) take a soft Carbon elevation
159
- border-weight: 1px
160
- density-gap: 0.85 # derived: "content is dense by design" — dense tier tightens the spacing scale
161
- density-inset: 0.85 # derived: matches the dense tier for coherent component insets
162
- font-sans: IBM Plex Sans, Helvetica Neue, Arial, sans-serif
163
- font-mono: IBM Plex Mono, ui-monospace, SFMono-Regular, monospace # derived: Carbon keeps mono to product surfaces; the operator UI is a product surface, so Plex Mono returns for IDs/codes/logs
164
- font-weight-normal: 400
165
- font-weight-strong: 600 # rationale: Carbon body-emphasis weight; operator headings use 600, not the marketing weight-300 hero display
166
- heading-tracking: 0em # rationale: Carbon operator-scale headings track 0; the negative display tracking (-0.5px at 76px) stays with the marketing hero
167
- duration-unit: 50ms # derived: corpus is silent on motion; a functional operator base
168
- duration-fast: 70ms # derived: Carbon fast-01
169
- duration-normal: 150ms # derived: Carbon moderate-01
170
- duration-slow: 240ms # derived: Carbon moderate-02
171
- ease-default: cubic-bezier(0.2,0,0.38,0.9) # derived: Carbon "productive standard" easing (corpus silent; brand-authentic)
172
- contrast-boost: 1 # derived: Carbon's 1px #e0e0e0 hairlines already read crisply; no boost needed
173
- icon-stroke: 2 # derived: Carbon @carbon/icons run a 2px square stroke — heavier and squarer than the default 1.75
174
- icon-size-base: 16px # derived: Carbon's smallest icon size on the 16px grid
175
- sidebar-width-expanded: 256px # derived: Carbon UI Shell SideNav width
176
- sidebar-width-collapsed: 48px # derived: Carbon SideNav icon rail / header height (corpus top-nav is 48px)
177
- topbar-height: 48px # rationale: corpus top-nav height is 48px exactly
178
- side-panel-width: 400px # derived: corpus documents no side panel; standard operator detail width
179
- side-panel-width-rich: 640px # derived: content-heavy detail; matches Carbon's wide modal
180
- modal-width-max: 640px # derived: Carbon medium modal width
181
- form-max-width: 640px # derived: single-column form cap
182
- table-row-height: 40px # derived: Carbon DataTable "short" row; dense archetypes step to 32px via the surface catalog
183
- verbosity: default
184
- feedback: subtle
185
- density-tier: dense # rationale: Carbon reads dense — "content is dense by design, not a lot of air"
186
- product-traits: [enterprise, dashboard, admin, data-grid, dev-tools]
187
- ```
188
-
189
- ```yaml lever-manifest
190
- version: 1
191
- fonts: { sans: "IBM Plex Sans, Helvetica Neue, Arial, sans-serif", mono: "IBM Plex Mono, ui-monospace, SFMono-Regular, monospace" }
192
- color-tokens:
193
- light:
194
- background: "#ffffff"
195
- foreground: "#161616"
196
- card: "#ffffff"
197
- card-foreground: "#161616"
198
- muted: "#f4f4f4"
199
- muted-foreground: "#525252"
200
- border: "#e0e0e0"
201
- input: "#e0e0e0"
202
- ring: "#0f62fe"
203
- primary: "#0f62fe"
204
- primary-foreground: "#ffffff"
205
- accent: "#edf5ff" # derived: Carbon blue-10 row-selection tint (corpus gives no selection color)
206
- accent-foreground: "#0f62fe"
207
- destructive: "#da1e28"
208
- destructive-foreground: "#ffffff"
209
- success: "#24a148"
210
- warning: "#f1c21b"
211
- popover: "#ffffff"
212
- popover-foreground: "#161616"
213
- secondary: "#f4f4f4"
214
- secondary-foreground: "#161616"
215
- chart-1: "#6929c4" # derived: Carbon @carbon/charts categorical 1 (purple-70) — corpus silent on charts
216
- chart-2: "#1192e8" # derived: Carbon categorical 2 (cyan-50)
217
- chart-3: "#005d5d" # derived: Carbon categorical 3 (teal-70)
218
- chart-4: "#9f1853" # derived: Carbon categorical 4 (magenta-70)
219
- chart-5: "#fa4d56" # derived: Carbon categorical 5 (red-50)
220
- sidebar: "#f4f4f4" # derived: Carbon surface-1 side-nav ground, distinct from the white canvas
221
- sidebar-foreground: "#161616"
222
- sidebar-primary: "#0f62fe"
223
- sidebar-primary-foreground: "#ffffff"
224
- sidebar-accent: "#edf5ff" # derived: blue-10 active/hovered nav tint
225
- sidebar-accent-foreground: "#0f62fe"
226
- sidebar-border: "#e0e0e0"
227
- sidebar-ring: "#0f62fe"
228
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64, 96]
229
- radius-scale: [0, 2, 4, 6, 8, 9999]
230
- shadow-levels: [none, sm, md]
231
- motion: { durations: [70, 150, 240], easings: ["cubic-bezier(0.2,0,0.38,0.9)"] }
232
- icons: { family: lucide, stroke: 2 }
233
- accent-count: 1
234
- ```
@@ -7,14 +7,13 @@ sourced: 2026-07-04
7
7
 
8
8
  # Intercom — the operator reading
9
9
 
10
- The calm, editorial customer-service brand rendered for internal tools. Intercom's public surfaces are
11
- publication-quiet and product-screenshot-led; an operator surface wearing this brand keeps the warm
12
- cream canvas, the white-on-cream lift, the charcoal ink, the single reserved Fin Orange, the modest
13
- 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 breathing
15
- stay behind. What carries is the feel: a warm cream ground the category never uses, panels that lift by
16
- turning white rather than by casting shadow, and one orange spark held in reserve. Both machine blocks
17
- are fully valued; every judgment past the corpus is annotated `# derived:`.
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.
18
17
 
19
18
  ## 1 Visual Theme
20
19
 
@@ -29,9 +28,8 @@ is held in reserve for the one action that matters; everything neutral is charco
29
28
 
30
29
  ## 2 Color Roles
31
30
 
32
- Light values (the manifest carries the exact hex — Intercom's native format). One accent: Fin Orange
33
- is the only chromatic hue that carries meaning; the report palette lives in charts, status speaks only
34
- status.
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.
35
33
 
36
34
  | Role | Value | Allowed where |
37
35
  | --- | --- | --- |
@@ -158,83 +156,3 @@ for operator work.
158
156
  only for a real overlay.
159
157
  - One accent. The report palette (`chart-*`) is for charts only; Brand Blue and the black quote strip
160
158
  are not operator colors. Leave the hero, the product-mockup rhythm, and the 96px breathing behind.
161
-
162
- ```yaml design-primitives
163
- radius: 8px # corpus: buttons/inputs at rounded.md (8px); scale offers 12px cards, 16px product tiles
164
- shadow-intensity: 0.25 # derived: Intercom resists drop shadows — depth is white-on-cream surface change; shadow only faint on true overlays
165
- border-weight: 1px
166
- density-gap: 1
167
- density-inset: 1
168
- font-sans: Saans, Inter, system-ui, sans-serif # corpus: proprietary Saans; Inter at weight 500 the closest free substitute
169
- font-mono: SaansMono, "JetBrains Mono", ui-monospace, monospace # corpus: proprietary SaansMono; JetBrains Mono the approximation
170
- font-weight-normal: 400
171
- font-weight-strong: 500 # corpus: weight 500 carries display "confident without bold" — the brand never bolds past 500
172
- heading-tracking: -0.02em # corpus: aggressive negative tracking is an Intercom signature (-0.5px at 28px); ~-0.02em at operator heading scale
173
- duration-unit: 50ms # derived: corpus (marketing) is silent on motion; operator-standard functional base
174
- duration-fast: 100ms # derived: corpus silent on motion
175
- duration-normal: 150ms # derived: corpus silent on motion
176
- duration-slow: 250ms # derived: corpus silent on motion
177
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard operator ease
178
- contrast-boost: 1 # derived: Intercom's soft warm hairline (#d3cec6 on cream) is intentionally low-contrast; no boost
179
- icon-stroke: 1.5 # derived: refined editorial feel; one step under lucide's 2
180
- icon-size-base: 16px
181
- sidebar-width-expanded: 248px # derived: Intercom has no operator shell; standard operator rail
182
- sidebar-width-collapsed: 56px # derived: corpus has no shell; operator standard icon rail
183
- topbar-height: 56px # corpus: top-nav height 56px
184
- side-panel-width: 420px # derived: corpus has no shell; standard side panel
185
- side-panel-width-rich: 640px # derived: corpus has no shell; content-heavy detail width
186
- modal-width-max: 560px # derived: corpus has no shell; confirmations only
187
- form-max-width: 640px # derived: corpus has no shell; standard form column
188
- table-row-height: 44px # derived: Intercom's calm editorial rhythm breathes a touch over the dense 40px
189
- verbosity: default
190
- feedback: subtle # rationale: Intercom is a warm, human support brand — gentle present feedback, not austere silence
191
- density-tier: standard # rationale: editorial-spacious marketing read down to an honest operator tier; warmth carried by the cream palette, not whitespace
192
- product-traits: [customer-support, helpdesk, inbox, crm, ai-agent]
193
- ```
194
-
195
- ```yaml lever-manifest
196
- version: 1
197
- fonts: { sans: "Saans, Inter, system-ui, sans-serif", mono: "SaansMono, \"JetBrains Mono\", ui-monospace, monospace" }
198
- color-tokens:
199
- light:
200
- background: "#f5f1ec" # cream canvas — the brand's defining surface, never pure white
201
- foreground: "#111111" # charcoal ink
202
- card: "#ffffff" # white — cards lift off the cream canvas
203
- card-foreground: "#111111"
204
- muted: "#ebe7e1" # surface-2 warm cream — hover rows, subtle fills
205
- muted-foreground: "#626260" # ink-muted
206
- border: "#d3cec6" # warm hairline
207
- input: "#d3cec6"
208
- ring: "#ff5600" # derived: focus outline in the brand voltage, unmistakable for keyboard-first
209
- primary: "#ff5600" # Fin Orange — the single voltage, reserved for the one primary action per surface (operator reading of Intercom's reserve-orange rule)
210
- primary-foreground: "#ffffff" # corpus: white on button-fin
211
- accent: "#e6e0d6" # derived: deep-cream selection tint (a step past surface-2) — Intercom selects by warm-neutral shift, reserving orange
212
- accent-foreground: "#111111"
213
- destructive: "#c41c1c" # corpus: semantic-error
214
- destructive-foreground: "#ffffff"
215
- success: "#0bdf50" # corpus: semantic-success (bright brand green; a status fill/dot, not text)
216
- warning: "#d97706" # derived: corpus has no warning amber; a warm amber kept distinct from the red-orange Fin primary
217
- popover: "#ffffff"
218
- popover-foreground: "#111111"
219
- secondary: "#ebe7e1" # warm cream secondary button (operator reading of Intercom's white/cream secondary — cream stays visible on white cards)
220
- secondary-foreground: "#111111"
221
- chart-1: "#fe4c02" # corpus report palette: report-orange
222
- chart-2: "#65b5ff" # corpus: report-blue
223
- chart-3: "#0bdf50" # corpus: report-green
224
- chart-4: "#ff2067" # corpus: report-pink
225
- chart-5: "#b3e01c" # corpus: report-lime
226
- sidebar: "#efeae3" # derived: warm cream rail, a hair off the cream canvas
227
- sidebar-foreground: "#111111"
228
- sidebar-primary: "#ff5600" # Fin Orange marks the active nav item
229
- sidebar-primary-foreground: "#ffffff"
230
- sidebar-accent: "#e6e0d6" # matches accent — warm-cream hover/active nav
231
- sidebar-accent-foreground: "#111111"
232
- sidebar-border: "#d3cec6"
233
- sidebar-ring: "#ff5600"
234
- spacing-scale: [4, 8, 12, 16, 24, 32, 48, 64] # corpus base unit 8px; drops the marketing 96px section step
235
- radius-scale: [0, 4, 6, 8, 12, 16, 24, 9999] # corpus radius scale (xs..xxl, pill)
236
- shadow-levels: [none, sm] # Intercom resists shadows — one faint tier for true overlays over the flat baseline
237
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] } # derived: corpus silent on motion
238
- icons: { family: lucide, stroke: 1.5 }
239
- accent-count: 1
240
- ```
@@ -8,13 +8,13 @@ sourced: 2026-07-04
8
8
  # Kraken — the operator reading
9
9
 
10
10
  The operator reading of Kraken's brand — a clean, trustworthy crypto-exchange look built on a
11
- commanding purple. Kraken's own surfaces are marketing-editorial: a Kraken-Brand display face at hero
12
- scale (48/36/28px, weight 700, hard negative tracking) over a pure-white canvas. This entry keeps what
13
- survives at operator scale — the white canvas, the single commanding Kraken Purple accent, the cool
14
- near-black ink, the cool blue-gray neutral field, the firm 12px rounded-not-pill geometry, the
15
- whisper-level shadows, the negative-tracking type voice — and leaves the hero-scale display behind.
16
- Purple reads commanding in marketing; at operator scale it stays the one reserved accent. Both machine
17
- blocks are fully valued; each judgment away from the corpus is annotated `# derived:` where it is silent.
11
+ commanding purple. Kraken's own surfaces are marketing-editorial: a Kraken-Brand display face at
12
+ hero scale (48/36/28px, weight 700, hard negative tracking) over a pure-white canvas. This entry
13
+ keeps what survives at operator scale — the white canvas, the single commanding Kraken Purple
14
+ accent, the cool near-black ink, the cool blue-gray neutral field, the firm 12px rounded-not-pill
15
+ geometry, the whisper-level shadows, the negative-tracking type voice — and leaves the hero-scale
16
+ display behind. Purple reads commanding in marketing; at operator scale it stays the one reserved
17
+ accent.
18
18
 
19
19
  ## 1 Visual Theme
20
20
 
@@ -28,8 +28,8 @@ engineered, not flatly warm. The geometry is firmly rounded — 12px controls, n
28
28
 
29
29
  ## 2 Color Roles
30
30
 
31
- Light values (the manifest carries hex — the corpus's native format). One accent: `primary` is the
32
- only chromatic hue that carries brand meaning; the positive/negative trading hues speak status only.
31
+ Light values. One accent: `primary` is the only chromatic hue that carries brand meaning; the
32
+ positive/negative trading hues speak status only.
33
33
 
34
34
  | Role | Value | Allowed where |
35
35
  | --- | --- | --- |
@@ -154,83 +154,3 @@ Directives the emitting agent follows verbatim:
154
154
  - Leave the marketing skin behind: the Kraken-Brand hero display at 48/36/28px weight 700 stays behind.
155
155
  What carries: the palette, its cool temperature, the single commanding purple, the firm 12px rounded
156
156
  geometry, the whisper-shadow depth, and the tabular fintech number voice.
157
-
158
- ```yaml design-primitives
159
- radius: 12px # corpus: buttons at 12px, repeated as the brand rule ("12px on all buttons", "12px is the max"); firmly rounded, never a pill
160
- shadow-intensity: 0.3 # derived: corpus shadows are whisper-level (0.03–0.04 alpha) — near-flat, hairlines carry depth
161
- border-weight: 1px # corpus: outlined button and divider borders at 1px
162
- density-gap: 1
163
- density-inset: 1
164
- font-sans: IBM Plex Sans, system-ui, sans-serif # corpus: Kraken-Brand/Kraken-Product proprietary → IBM Plex Sans is the corpus's own documented fallback; one sans slot serves both voices
165
- font-mono: IBM Plex Mono, ui-monospace, monospace # derived: corpus is silent on a mono; IBM Plex Mono pairs with the Plex sans for the fintech number voice
166
- font-weight-normal: 400 # corpus: body weight 400
167
- font-weight-strong: 600 # corpus: feature titles 600, buttons 500–600; the display 700 is a marketing hero that stays behind
168
- heading-tracking: -0.02em # corpus: display hero -1px (-0.02em), sections -0.5px; the negative tracking is the display signature, carried to operator heading scale
169
- duration-unit: 50ms # derived: corpus silent on motion; functional operator base
170
- duration-fast: 100ms # derived: corpus silent on motion
171
- duration-normal: 150ms # derived: corpus silent on motion
172
- duration-slow: 250ms # derived: corpus silent on motion
173
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
174
- contrast-boost: 1 # derived: clean marketing-calm brand, not a dense grid; cool hairlines already carry structure
175
- icon-stroke: 1.75 # derived: corpus silent on iconography; operator-standard stroke
176
- icon-size-base: 16px # derived: corpus silent; operator standard base control icon
177
- sidebar-width-expanded: 248px # derived: corpus is marketing-only (no app shell); operator standard
178
- sidebar-width-collapsed: 56px # derived: corpus has no shell; operator standard icon rail
179
- topbar-height: 56px # derived: corpus has no shell; operator standard top-nav height
180
- side-panel-width: 420px # derived: corpus has no shell; operator standard detail width
181
- side-panel-width-rich: 640px # derived: corpus has no shell; content-heavy detail width
182
- modal-width-max: 560px # derived: corpus has no shell; confirmations only
183
- form-max-width: 640px # derived: corpus has no shell; operator forms cap comfortably
184
- table-row-height: 44px # derived: rounded, clean fintech read — rows breathe a touch over the dense 40px default (corpus button padding runs tall)
185
- verbosity: default
186
- feedback: subtle
187
- density-tier: standard # rationale: corpus is a clean, trustworthy marketing surface, not a terminal — dense-capable but reads calm; honest standard tier
188
- product-traits: [crypto-exchange, trading-desk, fintech, dashboard]
189
- ```
190
-
191
- ```yaml lever-manifest
192
- version: 1
193
- fonts: { sans: "IBM Plex Sans, system-ui, sans-serif", mono: "IBM Plex Mono, ui-monospace, monospace" }
194
- color-tokens:
195
- light:
196
- background: "#ffffff"
197
- foreground: "#101114"
198
- card: "#ffffff"
199
- card-foreground: "#101114"
200
- muted: "#f2f2f5" # derived: light cool-gray fill from the blue-gray neutral scale
201
- muted-foreground: "#686b82"
202
- border: "#dedee5"
203
- input: "#dedee5"
204
- ring: "#7132f5"
205
- primary: "#7132f5"
206
- primary-foreground: "#ffffff"
207
- accent: "#ebe5fe" # derived: solid equivalent of the corpus's Purple Subtle rgba(133,91,251,0.16) over white
208
- accent-foreground: "#7132f5"
209
- destructive: "#cf2e3f" # derived: corpus documents only a success green — a sell/down/destructive red is derived to pair, tuned cool to match the blue-gray field
210
- destructive-foreground: "#ffffff"
211
- success: "#149e61"
212
- warning: "#e08c0a" # derived: corpus documents no caution hue; an amber warning derived to complete the status triad
213
- popover: "#ffffff"
214
- popover-foreground: "#101114"
215
- secondary: "#f6f6f8" # derived: solid equivalent of the corpus's Secondary Gray rgba(148,151,169,0.08) over white
216
- secondary-foreground: "#101114"
217
- chart-1: "#7132f5" # Kraken Purple
218
- chart-2: "#149e61" # positive green
219
- chart-3: "#cf2e3f" # derived: the down/sell red
220
- chart-4: "#5741d8" # derived: Purple Dark as a second cool series
221
- chart-5: "#9497a9" # derived: silver-blue neutral for a fifth series
222
- sidebar: "#f7f7f9" # derived: operator sidebar tinted from the cool-gray neutral (corpus is marketing-only)
223
- sidebar-foreground: "#101114"
224
- sidebar-primary: "#7132f5"
225
- sidebar-primary-foreground: "#ffffff"
226
- sidebar-accent: "#ebe5fe" # derived: the purple-wash selection tint
227
- sidebar-accent-foreground: "#7132f5"
228
- sidebar-border: "#dedee5"
229
- sidebar-ring: "#7132f5"
230
- spacing-scale: [4, 8, 12, 16, 20, 24, 32, 48]
231
- radius-scale: [3, 6, 8, 10, 12, 16, 9999]
232
- shadow-levels: [none, sm, md]
233
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
234
- icons: { family: lucide, stroke: 1.75 }
235
- accent-count: 1
236
- ```