@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
@@ -7,16 +7,15 @@ sourced: 2026-07-04
7
7
 
8
8
  # SpaceX — the mission-console operator reading
9
9
 
10
- An operator translation of SpaceX's design language into a mission console. The marketing theatre stays
11
- behind: full-bleed rocket and Mars photography, autoplaying launch video, hero-scale display type, the
12
- museum negative space. What carries is the austere chassis underneath — a pure-black canvas, an
13
- achromatic white accent doing every "click me" job, the condensed industrial D-DIN voice set UPPERCASE
14
- with the brand's signature *positive* tracking, tight 4px chrome, and a zero-shadow flat depth. This is
15
- the one library entry where the light-default floor legitimately yields: SpaceX is **categorically dark**
16
- — pure `#000000` is the load-bearing brand fact — so the default theme wears near-black, and the brief
17
- blesses the override plainly (brand tokens win; a pure `#000000` surface is exactly the case the catalog
18
- lets a design.md demand). Both machine blocks are fully valued; every judgment past what the corpus
19
- states is annotated `# derived:` where it lands.
10
+ An operator translation of SpaceX's design language into a mission console. The marketing theatre
11
+ stays behind: full-bleed rocket and Mars photography, autoplaying launch video, hero-scale display
12
+ type, the museum negative space. What carries is the austere chassis underneath — a pure-black
13
+ canvas, an achromatic white accent doing every "click me" job, the condensed industrial D-DIN voice
14
+ set UPPERCASE with the brand's signature *positive* tracking, tight 4px chrome, and a zero-shadow
15
+ flat depth. This is the one library entry where the light-default floor legitimately yields: SpaceX
16
+ is **categorically dark** — pure `#000000` is the load-bearing brand fact — so the default theme
17
+ wears near-black, and the brief blesses the override plainly (brand tokens win; a pure `#000000`
18
+ surface is exactly the case the catalog lets a design.md demand).
20
19
 
21
20
  ## 1 Visual Theme
22
21
 
@@ -32,10 +31,10 @@ reading is a mission console — telemetry-dense — not the spacious full-bleed
32
31
 
33
32
  ## 2 Color Roles
34
33
 
35
- Dark values are the default (the manifest's `light` map carries them — the categorically-dark override).
36
- The brand has no accent colors; black, white, and a derived telemetry set of status hues do all the
37
- chromatic work. The corpus's light shop surface (white `#ffffff`, ink `#000000`, hairline `#e0e0e8`) is
38
- the inverse a light form context can opt into, but the console wears black.
34
+ Dark values are the default. The brand has no accent colors; black, white, and a derived telemetry
35
+ set of status hues do all the chromatic work. The corpus's light shop surface (white `#ffffff`, ink
36
+ `#000000`, hairline `#e0e0e8`) is the inverse a light form context can opt into, but the console
37
+ wears black.
39
38
 
40
39
  | Role | Value | Allowed where |
41
40
  | --- | --- | --- |
@@ -170,83 +169,3 @@ modestly, but the principle holds — the display shrinks first.
170
169
  omits mono — the console adds it for telemetry).
171
170
  - Every workflow completes from the keyboard; the white 2px `ring` focus outline is always visible.
172
171
  - The 32px ghost pill is a lone hero CTA (a launch / commit confirm), never two side by side.
173
-
174
- ```yaml design-primitives
175
- radius: 4px # corpus: sharpest chrome radius (rounded.xs, form inputs); the engineered DIN read wants tight corners — the 32px signature pill stays in-scale for a lone ghost hero CTA
176
- shadow-intensity: 0.2 # derived: corpus uses zero shadow (depth is photographic); operator carries elevation by the near-black surface ladder + hairline, a faint shadow only floats a true overlay
177
- border-weight: 1px
178
- density-gap: 0.9 # derived: the operator reading is a mission console — telemetry-dense; marketing's full-bleed spaciousness stays behind
179
- density-inset: 0.9 # derived: matches the dense tier's tighter component insets
180
- font-sans: D-DIN, Inter, Arial Narrow, system-ui, sans-serif # corpus display+body face; Inter (700+, tracked) is the corpus-named substitute, Arial Narrow the corpus fallback that keeps the width compression
181
- font-mono: Space Mono, JetBrains Mono, ui-monospace, monospace # derived: corpus omits mono; a mission console needs a telemetry/ID voice — Space Mono's engineered character suits the DIN aesthetic, JetBrains Mono the reliable fallback
182
- font-weight-normal: 400 # corpus: D-DIN body weight
183
- font-weight-strong: 700 # corpus: D-DIN-Bold display is 700; the brand jumps 400 → 700 with no mid weight
184
- heading-tracking: 0.04em # corpus: the signature is POSITIVE display tracking (uppercase, ~0.02em at 80px, ~0.08em on caps eyebrows); operator headings keep a distinctly positive 0.04em — the one operator brand that tracks OUT, not in
185
- duration-unit: 50ms # derived: corpus documents no motion; austere functional base
186
- duration-fast: 100ms # derived: corpus silent on motion
187
- duration-normal: 150ms # derived: corpus silent on motion
188
- duration-slow: 250ms # derived: corpus silent on motion
189
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; mechanical, restrained functional ease
190
- contrast-boost: 1 # derived: the near-black surface ladder + #3a3a3f hairlines already read as a grid on black
191
- icon-stroke: 1.5 # derived: corpus uses minimal SVG arrow chevrons; a thin 1.5 stroke keeps them minimal and refined
192
- icon-size-base: 16px # derived: corpus silent on UI icon sizing; operator standard
193
- sidebar-width-expanded: 240px # derived: no app shell in corpus (marketing full-bleed); austere/dense read tightens the rail
194
- sidebar-width-collapsed: 56px # derived: standard icon-rail width
195
- topbar-height: 52px # derived: corpus nav is marketing-generous (24px vertical padding); operator tightens to a thin overlay bar
196
- side-panel-width: 420px # derived: no app shell in corpus; operator standard
197
- side-panel-width-rich: 640px # derived: content-heavy detail width
198
- modal-width-max: 560px # derived: confirmations only
199
- form-max-width: 640px # derived: single-column reading cap
200
- table-row-height: 36px # derived: dense mission-console rows pack tight; the surface catalog can step further per archetype
201
- verbosity: compact # derived: austere, minimal-chrome brand trusts the reader over explanatory copy
202
- feedback: minimal # derived: the brand's austere silence → the most restrained feedback dial
203
- density-tier: dense # derived: the operator reading is a mission console — telemetry-dense; marketing spaciousness stays behind
204
- product-traits: [mission-control, telemetry, monitoring, dashboard, command-center]
205
- ```
206
-
207
- ```yaml lever-manifest
208
- version: 1
209
- fonts: { sans: "D-DIN, Inter, Arial Narrow, system-ui, sans-serif", mono: "Space Mono, JetBrains Mono, ui-monospace, monospace" }
210
- color-tokens:
211
- light:
212
- background: "#000000"
213
- foreground: "#ffffff"
214
- card: "#0a0a0a"
215
- card-foreground: "#ffffff"
216
- muted: "#141417" # derived: a step above card for hover rows and subtle fills on the near-black ladder
217
- muted-foreground: "#8a8a92" # derived: cool mid-gray for secondary text on black; corpus ink-mute #5a5a5f is a light-surface tone
218
- border: "#3a3a3f"
219
- input: "#3a3a3f"
220
- ring: "#ffffff" # derived: achromatic brand → the focus ring is white, maximally visible on black (corpus link-on-dark is white)
221
- primary: "#ffffff" # derived: the brand has no chromatic accent; white is the one voltage — the primary action inverts to white-on-black
222
- primary-foreground: "#000000"
223
- accent: "#1e1e26" # derived: cool near-black selection/hover tint; SpaceX's cool canvas-cool #f0f0fa inverted onto black
224
- accent-foreground: "#ffffff"
225
- destructive: "#ff453a" # derived: corpus is achromatic; a telemetry-alert red for error/abort on black
226
- destructive-foreground: "#ffffff"
227
- success: "#32d74b" # derived: mission nominal/go green on black
228
- warning: "#ff9f0a" # derived: telemetry caution amber on black
229
- popover: "#0a0a0a"
230
- popover-foreground: "#ffffff"
231
- secondary: "#1a1a1e" # derived: secondary button fill — a lift above card
232
- secondary-foreground: "#ffffff"
233
- chart-1: "#ffffff" # derived: the primary telemetry trace is achromatic white
234
- chart-2: "#64d2ff" # derived: telemetry cyan
235
- chart-3: "#32d74b" # derived: nominal green
236
- chart-4: "#ff9f0a" # derived: caution amber
237
- chart-5: "#ff453a" # derived: alert red
238
- sidebar: "#000000" # derived: the nav overlays on pure black (corpus nav-bar-overlay canvas-night), separated by a hairline
239
- sidebar-foreground: "#ffffff"
240
- sidebar-primary: "#ffffff" # derived: active nav is white
241
- sidebar-primary-foreground: "#000000"
242
- sidebar-accent: "#1e1e26" # derived: selected-nav tint, matches accent
243
- sidebar-accent-foreground: "#ffffff"
244
- sidebar-border: "#3a3a3f"
245
- sidebar-ring: "#ffffff"
246
- spacing-scale: [4, 8, 12, 16, 18, 24, 32, 48]
247
- radius-scale: [4, 8, 16, 32, 9999]
248
- shadow-levels: [none, sm]
249
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
250
- icons: { family: lucide, stroke: 1.5 }
251
- accent-count: 1
252
- ```
@@ -8,12 +8,10 @@ sourced: 2026-07-04
8
8
  # Spotify — the near-black operator reading
9
9
 
10
10
  A content-first cocoon reduced to one idea: the UI recedes into near-black shadow so the work glows,
11
- with a single functional green accent doing all the color. This entry is a deliberate operator reading
12
- of Spotify — the dark immersion and the one-green discipline carried onto internal tools (a media
13
- library, a catalog console, a content-ops dashboard), with the album-art color source and the hero
14
- pill geometry left behind. Spotify is a **categorically dark** brand; the manifest ships that dark
15
- surface set in the default slot (the corpus forbids light primary surfaces). Judgments away from the
16
- corpus are annotated `# derived:`.
11
+ with a single functional green accent doing all the color. This entry is a deliberate operator
12
+ reading of Spotify — the dark immersion and the one-green discipline carried onto internal tools (a
13
+ media library, a catalog console, a content-ops dashboard), with the album-art color source and the
14
+ hero pill geometry left behind.
17
15
 
18
16
  ## 1 Visual Theme
19
17
 
@@ -166,83 +164,3 @@ The operator sweep is 375 / 768 / 1024 / 1440:
166
164
  the 500px hero pills, uppercase wide-tracking on every button, the light-mode marketing pills, and the
167
165
  literal music transport bar. What carries: the near-black palette, the one functional green, the
168
166
  achromatic discipline, the compact dense type, the rounded/circular geometry, and shadow-carried depth.
169
-
170
- ```yaml design-primitives
171
- radius: 8px # corpus: Spotify's comfortable/dialog radius; controls read rounded-tactile without the 500px hero pill (left behind)
172
- shadow-intensity: 0.8 # corpus: depth is heavy shadow (0.3-0.5 alpha at 8-24px) — on near-black a hairline vanishes, so shadow lifts; the flat default is inverted here
173
- border-weight: 1px
174
- density-gap: 0.85 # derived: dark-compression — Spotify packs content densely, gaps and rows tighten
175
- density-inset: 0.85 # derived: matches the dense tier's tighter component insets
176
- font-sans: SpotifyMixUI, Inter, system-ui, sans-serif # SpotifyMixUI (Circular family); Inter is the corpus-adjacent substitute; the Title cut serves headings, same family
177
- font-mono: JetBrains Mono, ui-monospace, monospace # derived: corpus names no mono (a player has no IDs/logs); operator tables need a numeric voice
178
- font-weight-normal: 400 # corpus: regular is 400
179
- font-weight-strong: 700 # corpus: the bold/regular binary — most text is 700 or 400, 600 sparingly
180
- heading-tracking: 0 # corpus: Spotify titles track normal; the wide 1.4-2px tracking rides the uppercase label voice, not headings
181
- duration-unit: 50ms # derived: corpus silent on motion; functional operator base
182
- duration-fast: 100ms # derived: corpus silent on motion
183
- duration-normal: 150ms # derived: corpus silent on motion
184
- duration-slow: 250ms # derived: corpus silent on motion
185
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
186
- contrast-boost: 1 # derived: the grid reads via surface-lightening and shadow, not boosted hairlines
187
- icon-stroke: 2 # derived: Spotify's filled, bold glyph character → the full lucide stroke, not the refined 1.75
188
- icon-size-base: 16px # derived: corpus silent; operator base control-icon size
189
- sidebar-width-expanded: 256px # derived: a media-library rail wants room for playlist/entity names; a touch wider than the dense 248 default
190
- sidebar-width-collapsed: 56px # derived: corpus silent; operator icon rail
191
- topbar-height: 64px # derived: Spotify's top chrome is generous for the search pill and account
192
- side-panel-width: 420px # derived: corpus's now-playing/queue panel; operator standard
193
- side-panel-width-rich: 640px # derived: content-heavy detail width
194
- modal-width-max: 560px # derived: corpus silent; confirmations only
195
- form-max-width: 640px # derived: corpus silent; operator standard
196
- table-row-height: 40px # derived: Spotify's album-thumbnail track rows run taller (~56px); a bare operator data row lands at 40px, dense archetypes step down
197
- verbosity: compact # derived: content-first, scannable — Spotify trusts dense content over explanatory chrome
198
- feedback: subtle
199
- density-tier: dense # corpus: content density over breathing room, dark compression
200
- product-traits: [media-library, catalog, dashboard, content-ops, admin]
201
- ```
202
-
203
- ```yaml lever-manifest
204
- version: 1
205
- fonts: { sans: "SpotifyMixUI, Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
206
- color-tokens:
207
- light: # categorically-dark brand — the default slot carries Spotify's near-black surface set; the corpus forbids light primary surfaces
208
- background: "#121212"
209
- foreground: "#ffffff"
210
- card: "#181818"
211
- card-foreground: "#ffffff"
212
- muted: "#1f1f1f"
213
- muted-foreground: "#b3b3b3"
214
- border: "#2a2a2a" # derived: subtle grid/field hairline on near-black; corpus reserves #4d4d4d for control borders and prefers inset/surface-lightening over exposed lines
215
- input: "#2a2a2a" # derived: field edge; input focus draws the ring
216
- ring: "#1ed760" # derived: keyboard-first needs a visible ring; the accent green is the natural choice (corpus's #000000 focus edge fails the ring-visible floor)
217
- primary: "#1ed760" # corpus: Spotify Green — the one accent
218
- primary-foreground: "#000000" # corpus: black icon/text on green — the signature, never white on green
219
- accent: "#282828" # derived: selection/hover lightens the surface a step (corpus hover = background lightening), a neutral lift, never a green wash
220
- accent-foreground: "#ffffff"
221
- destructive: "#f3727f" # corpus: negative red (--text-negative)
222
- destructive-foreground: "#000000" # derived: black reads on the light coral-red; white on #f3727f fails contrast
223
- success: "#1db954" # corpus: the deeper green-border variant, distinct from the bright #1ed760 accent so status green does not read as the primary CTA
224
- warning: "#ffa42b" # corpus: warning orange (--text-warning)
225
- popover: "#282828" # derived: elevated overlay/menu surface, a step above card, lifted by heavy shadow
226
- popover-foreground: "#ffffff"
227
- secondary: "#1f1f1f" # corpus: interactive/button surface (#1f1f1f)
228
- secondary-foreground: "#ffffff"
229
- chart-1: "#1ed760" # green
230
- chart-2: "#539df5" # corpus: announcement blue
231
- chart-3: "#ffa42b" # corpus: warning orange
232
- chart-4: "#f3727f" # corpus: negative red
233
- chart-5: "#b3b3b3" # derived: silver neutral for the fifth series (green + achromatic palette — no purple)
234
- sidebar: "#121212" # corpus: navigation sidebar #121212
235
- sidebar-foreground: "#ffffff"
236
- sidebar-primary: "#1ed760"
237
- sidebar-primary-foreground: "#000000"
238
- sidebar-accent: "#282828"
239
- sidebar-accent-foreground: "#ffffff"
240
- sidebar-border: "#2a2a2a"
241
- sidebar-ring: "#1ed760"
242
- spacing-scale: [2, 4, 8, 12, 16, 20, 24, 32, 48]
243
- radius-scale: [4, 6, 8, 12, 9999]
244
- shadow-levels: [none, sm, md, lg]
245
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
246
- icons: { family: lucide, stroke: 2 }
247
- accent-count: 1
248
- ```
@@ -8,11 +8,11 @@ sourced: 2026-07-04
8
8
  # Stripe — operator reading
9
9
 
10
10
  The operator translation of Stripe's financial-infrastructure brand — a marketing system built on a
11
- gradient-mesh hero, thin Sohne display type at negative tracking, single-indigo pill CTAs, and tabular
12
- money figures. This entry keeps the operator-durable core — the indigo accent, the deep-navy ink, the
13
- cool temperature, the soft blue-tinted lift, the thin editorial type voice, the tabular-figure money
14
- signal — and leaves the marketing scaffolding behind; §9 lists exactly what carries and what stays.
15
- Both machine blocks are fully valued; judgments away from the marketing brand are annotated `# derived:`.
11
+ gradient-mesh hero, thin Sohne display type at negative tracking, single-indigo pill CTAs, and
12
+ tabular money figures. This entry keeps the operator-durable core — the indigo accent, the deep-navy
13
+ ink, the cool temperature, the soft blue-tinted lift, the thin editorial type voice, the
14
+ tabular-figure money signal — and leaves the marketing scaffolding behind; §9 lists exactly what
15
+ carries and what stays.
16
16
 
17
17
  ## 1 Visual Theme
18
18
 
@@ -27,9 +27,8 @@ dashboard reads clean and moderate, neither terminal-dense nor consumer-spacious
27
27
 
28
28
  ## 2 Color Roles
29
29
 
30
- Light values (the manifest carries hex — the corpus's native format). One chromatic accent — indigo is
31
- the only brand hue that carries meaning; status hues speak only status; the gradient palette lives in
32
- charts, never chrome.
30
+ Light values. One chromatic accent — indigo is the only brand hue that carries meaning; status hues
31
+ speak only status; the gradient palette lives in charts, never chrome.
33
32
 
34
33
  | Role | Value | Allowed where |
35
34
  | --- | --- | --- |
@@ -159,83 +158,3 @@ product-UI mockups · the dark-app dashboard shell as the working surface.
159
158
  workflow completes from the keyboard with the indigo `ring` outline always visible.
160
159
  - Lift a card on the soft blue-tinted shadow, not a gray one; reach past a hairline only for a real
161
160
  overlay. Leave the gradient mesh, the hero display, and the cream bands behind.
162
-
163
- ```yaml design-primitives
164
- radius: 6px # derived: the input/sm corner is the operator-appropriate step; the pill CTA and 16px mockup chrome stay marketing-only
165
- shadow-intensity: 0.5 # derived: brand lifts cards on a soft blue-tinted shadow (corpus ~0.08 alpha) — present but restrained
166
- border-weight: 1px
167
- density-gap: 1
168
- density-inset: 1
169
- font-sans: Inter, 'SF Pro Display', system-ui, -apple-system, sans-serif # derived: Sohne is proprietary; Inter with ss01 is the documented open substitute carrying the brand rhythm
170
- font-mono: ui-monospace, SFMono-Regular, Menlo, monospace # derived: corpus ships no mono; a system mono keeps IDs/codes refined without a techy display face
171
- font-weight-normal: 400 # derived: brand body is display-thin 300; dense operator body needs 400 to stay legible
172
- font-weight-strong: 500 # derived: a thin brand — emphasis lifts to medium 500, never a heavy 600
173
- heading-tracking: -0.02em # derived: the brand's negative-tracking display signature (-0.64px/32px), carried to operator heading sizes
174
- duration-unit: 60ms # derived: corpus silent on motion; a slightly softer base suits the refined brand
175
- duration-fast: 120ms # derived: corpus silent on motion; refined-airy operator timing
176
- duration-normal: 180ms # derived: corpus silent on motion
177
- duration-slow: 240ms # derived: corpus silent on motion
178
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard operator ease
179
- contrast-boost: 1
180
- icon-stroke: 1.5 # derived: the thin type voice calls for a lighter icon stroke than lucide's 2
181
- icon-size-base: 16px # derived: corpus has no icon spec; operator standard
182
- sidebar-width-expanded: 240px # derived: corpus is marketing-only; Stripe-dashboard nav width
183
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
184
- topbar-height: 56px # derived: a touch airier than a dense console, matching the brand posture
185
- side-panel-width: 440px # derived: refined detail panels breathe a touch wider than the 420px norm
186
- side-panel-width-rich: 640px # derived: content-heavy detail width
187
- modal-width-max: 560px # derived: confirmation dialog cap
188
- form-max-width: 640px # derived: single-column form cap
189
- table-row-height: 44px # derived: dashboard rows breathe more than a terminal at standard density
190
- verbosity: default
191
- feedback: subtle # derived: Stripe's micro-feedback is polished and present, not austere silence
192
- density-tier: standard # derived: the dashboard reads clean and moderate, neither terminal-dense nor consumer-spacious
193
- product-traits: [payments, fintech, dashboard, b2b]
194
- ```
195
-
196
- ```yaml lever-manifest
197
- version: 1
198
- fonts: { sans: "Inter, 'SF Pro Display', system-ui, -apple-system, sans-serif", mono: "ui-monospace, SFMono-Regular, Menlo, monospace" }
199
- color-tokens:
200
- light:
201
- background: "#ffffff"
202
- foreground: "#0d253d"
203
- card: "#ffffff"
204
- card-foreground: "#0d253d"
205
- muted: "#f6f9fc"
206
- muted-foreground: "#64748d"
207
- border: "#e3e8ee"
208
- input: "#a8c3de" # brand's cooler input hairline (hairline-input)
209
- ring: "#533afd"
210
- primary: "#533afd"
211
- primary-foreground: "#ffffff"
212
- accent: "#edecfe" # derived: pale indigo wash for row/nav selection, lighter than the tag fill #b9b9f9
213
- accent-foreground: "#4434d4"
214
- destructive: "#ea2261" # derived: brand ships no semantic red; ruby is the nearest hue, reads as a raspberry error
215
- destructive-foreground: "#ffffff"
216
- success: "#1a8754" # derived: brand ships no green; a teal-leaning success green
217
- warning: "#bb5504" # derived: brand ships no amber; a burnt-amber warning, warmer cousin of lemon
218
- popover: "#ffffff"
219
- popover-foreground: "#0d253d"
220
- secondary: "#f6f9fc"
221
- secondary-foreground: "#0d253d"
222
- chart-1: "#533afd" # indigo primary
223
- chart-2: "#003770" # derived: shadow-blue deep ocean, second categorical series
224
- chart-3: "#1a8754" # derived: success green as third series
225
- chart-4: "#bb5504" # derived: amber as fourth series
226
- chart-5: "#ea2261" # ruby as fifth series
227
- sidebar: "#f6f9fc" # derived: faint cool sidebar tint against the white canvas
228
- sidebar-foreground: "#0d253d"
229
- sidebar-primary: "#533afd"
230
- sidebar-primary-foreground: "#ffffff"
231
- sidebar-accent: "#edecfe" # derived: matches accent — pale indigo nav selection
232
- sidebar-accent-foreground: "#4434d4"
233
- sidebar-border: "#e3e8ee"
234
- sidebar-ring: "#533afd"
235
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
236
- radius-scale: [0, 4, 6, 8, 12, 9999]
237
- shadow-levels: [none, sm, md]
238
- motion: { durations: [120, 180, 240], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
239
- icons: { family: lucide, stroke: 1.5 }
240
- accent-count: 1
241
- ```
@@ -31,8 +31,8 @@ achromatic grey (white through `#fafafa`, `#ededed`, `#dfdfdf` down to `#171717`
31
31
 
32
32
  ## 2 Color Roles
33
33
 
34
- Light values first (the manifest carries the exact hex — the corpus's native format). One accent —
35
- emerald `primary` is the only chromatic hue that carries meaning; status hues speak only status.
34
+ Light values first. One accent — emerald `primary` is the only chromatic hue that carries meaning;
35
+ status hues speak only status.
36
36
 
37
37
  | Role | Value | Allowed where |
38
38
  | --- | --- | --- |
@@ -54,12 +54,10 @@ indigo, tomato, crimson) is chart-and-logo voltage and carries no operator role
54
54
 
55
55
  ## 3 Typography
56
56
 
57
- One sans, one mono. `font-sans` is Circular — the brand's proprietary geometric humanist sans; the
58
- corpus's own shippable substitute is **Inter at weight 500** (Geist Sans an alternative), so the
59
- manifest carries Inter as the single sans slot for body, UI, and headings. `font-mono` is the brand's
60
- **system mono** stack (`ui-monospace`, Menlo / Monaco / Consolas — the corpus ships no proprietary mono
61
- webfont) for IDs, codes, timestamps, log lines, and SQL; numeric columns render `tabular-nums`. The
62
- marketing display scale (64/48px) stays behind — an operator surface tops out at a 28px page title.
57
+ One sans, one mono. `font-mono` is the brand's **system mono** stack (`ui-monospace`, Menlo / Monaco
58
+ / Consolas — the corpus ships no proprietary mono webfont) for IDs, codes, timestamps, log lines,
59
+ and SQL; numeric columns render `tabular-nums`. The marketing display scale (64/48px) stays behind —
60
+ an operator surface tops out at a 28px page title.
63
61
 
64
62
  | Step | Role | Size · line | Weight · tracking |
65
63
  | --- | --- | --- | --- |
@@ -173,83 +171,3 @@ Directives the emitting agent follows verbatim:
173
171
  - Keyboard-first: the emerald `ring` focus outline is always visible.
174
172
  - Leave behind: the 64/48px hero display, the composited product-mockup float shadows, the dark
175
173
  featured pricing tier, and the 64–96px section rhythm — marketing chrome, not operator chrome.
176
-
177
- ```yaml design-primitives
178
- radius: 6px # corpus: signature button/input radius (rounded.sm 6px); scale offers 8/12/16 for cards and modals; pill is badges-only
179
- shadow-intensity: 0.4 # derived: operator depth is hairline-first; the corpus's Level 2/3 float shadows are marketing-mockup only, so only true overlays lift
180
- border-weight: 1px
181
- density-gap: 1 # derived: standard tier — the clean/generous marketing read translated down to an honest operator density; data archetypes step denser
182
- density-inset: 1 # derived: matches the standard density-gap for coherent component insets
183
- font-sans: Inter, system-ui, sans-serif # corpus: brand face Circular is proprietary; Inter at weight 500 is the corpus's own shippable substitute
184
- font-mono: ui-monospace, Menlo, Monaco, Consolas, monospace # corpus: brand ships no proprietary mono webfont — system mono for code, logs, SQL
185
- font-weight-normal: 400 # corpus: body weight 400
186
- font-weight-strong: 500 # corpus: display/emphasis weight 500, capped — the calibrated mid-weight breaks at 600+
187
- heading-tracking: -0.02em # corpus: the signature negative display tracking (-1.92px at 64px scaling down to -0.42px at 28px) resolves to ~-0.02em at operator heading sizes
188
- duration-unit: 50ms # derived: corpus documents no motion; functional operator base
189
- duration-fast: 100ms # derived: corpus silent on motion; functional tempo
190
- duration-normal: 150ms # derived: corpus silent on motion; standard functional tempo
191
- duration-slow: 250ms # derived: corpus silent on motion; overlay/panel transition
192
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard functional ease
193
- contrast-boost: 1 # derived: the brand's fine greyscale hairline ladder is deliberately calibrated; hairlines carry the grid, no boost
194
- icon-stroke: 1.75 # derived: corpus silent on icon stroke; precise/technical operator stroke one step under lucide's 2, matching the dev-tool voice
195
- icon-size-base: 16px # derived: corpus silent on icon size; operator default
196
- sidebar-width-expanded: 248px # derived: brand has no app sidebar (marketing top nav); standard operator rail (~brand dashboard width)
197
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
198
- topbar-height: 56px # derived: from the corpus nav padding (16px/24px) resolving to ~56px
199
- side-panel-width: 420px # derived: brand has no app side panel; standard operator detail panel
200
- side-panel-width-rich: 640px # derived: content-heavy detail panel
201
- modal-width-max: 560px # derived: corpus modal chrome (xl 16px radius) gives no width; operator confirmation cap
202
- form-max-width: 640px # derived: brand's ~1280px marketing container is marketing; operator form cap
203
- table-row-height: 40px # derived: the brand's dense product tables and 8px/12px control padding read at a 40px operator row; dense archetypes step down via the surface catalog
204
- verbosity: default
205
- feedback: subtle # derived: the brand is quietly technical and calm — gentle present feedback, not austere silence
206
- density-tier: standard # derived: the clean/generous marketing read down to an honest operator tier; data-heavy archetypes step denser, never the whole app
207
- product-traits: [dev-tools, database, dashboard, admin]
208
- ```
209
-
210
- ```yaml lever-manifest
211
- version: 1
212
- fonts: { sans: "Inter, system-ui, sans-serif", mono: "ui-monospace, Menlo, Monaco, Consolas, monospace" }
213
- color-tokens:
214
- light:
215
- background: "#ffffff"
216
- foreground: "#171717"
217
- card: "#ffffff"
218
- card-foreground: "#171717"
219
- muted: "#fafafa"
220
- muted-foreground: "#707070"
221
- border: "#dfdfdf"
222
- input: "#dfdfdf"
223
- ring: "#3ecf8e"
224
- primary: "#3ecf8e"
225
- primary-foreground: "#171717" # corpus: near-black on the green button, never white — the "lit" read is the brand's idiosyncratic choice
226
- accent: "#ededed" # derived: hairline-cool grey lift for selection/hover; neutral, never green (green stays reserved for CTAs)
227
- accent-foreground: "#171717"
228
- destructive: "#dc2626" # derived: corpus's reds (tomato #ff2201, crimson #e2005a) are logo/chart-only and too loud for a destructive fill; clean operator red
229
- destructive-foreground: "#ffffff"
230
- success: "#24b47e" # derived: brand deep-emerald (the CTA pressed state) doubles as a status green distinct from the mint #3ecf8e CTA
231
- warning: "#ffdb13" # corpus: the brand's documented status yellow (accent-yellow, "status indicator only")
232
- popover: "#ffffff"
233
- popover-foreground: "#171717"
234
- secondary: "#f2f2f2" # derived: a clean step below canvas-soft for secondary-button/segmented fills
235
- secondary-foreground: "#171717"
236
- chart-1: "#3ecf8e" # corpus: emerald — primary data series
237
- chart-2: "#644fc1" # corpus: accent-violet
238
- chart-3: "#054cff" # corpus: accent-indigo
239
- chart-4: "#c7007e" # corpus: accent-pink
240
- chart-5: "#ffdb13" # corpus: accent-yellow
241
- sidebar: "#fafafa" # derived: brand has no app sidebar; a faint canvas-soft tint separates the rail from the white content canvas
242
- sidebar-foreground: "#171717"
243
- sidebar-primary: "#3ecf8e" # derived: emerald active-nav indicator
244
- sidebar-primary-foreground: "#171717" # derived: near-black on green, matching the button's on-primary read
245
- sidebar-accent: "#ededed" # derived: neutral hover/selected nav lift, matching accent
246
- sidebar-accent-foreground: "#171717"
247
- sidebar-border: "#dfdfdf"
248
- sidebar-ring: "#3ecf8e"
249
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
250
- radius-scale: [0, 4, 6, 8, 12, 16, 9999]
251
- shadow-levels: [none, sm, md]
252
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
253
- icons: { family: lucide, stroke: 1.75 }
254
- accent-count: 1
255
- ```
@@ -8,12 +8,11 @@ sourced: 2026-07-04
8
8
  # Superhuman — the warm-editorial operator reading
9
9
 
10
10
  An operator translation of Superhuman's fast-productivity brand: a warm, quiet, editorial system
11
- whose content body is white with off-black warm-grey ink, anchored by a single deep indigo-navy accent.
12
- The marketing surfaces are theatrical — a violet-sky atmospheric hero, hero-scale display type, a
13
- deep-teal closing band that resolves every page. None of that theatre belongs on a queue or a case
14
- detail; what carries is the warmth (warm neutrals, sub-default type weights, off-black ink), the
15
- 8px rounded-rectangle radius character, and the one-accent indigo discipline. Both machine blocks are
16
- fully valued; every judgment away from the marketing brand is annotated `# derived:` where it lands.
11
+ whose content body is white with off-black warm-grey ink, anchored by a single deep indigo-navy
12
+ accent. The marketing surfaces are theatrical — a violet-sky atmospheric hero, hero-scale display
13
+ type, a deep-teal closing band that resolves every page. None of that theatre belongs on a queue or
14
+ a case detail; what carries is the warmth (warm neutrals, sub-default type weights, off-black ink),
15
+ the 8px rounded-rectangle radius character, and the one-accent indigo discipline.
17
16
 
18
17
  ## 1 Visual Theme
19
18
 
@@ -144,83 +143,3 @@ Directives the emitting agent follows verbatim:
144
143
  - Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`.
145
144
  - Every workflow completes from the keyboard; the indigo `ring` focus outline is always visible.
146
145
  - Stay flat and warm — hairline and weight before shadow; never pure black, never a pill on a CTA.
147
-
148
- ```yaml design-primitives
149
- radius: 8px # brand signature button radius (rounded rectangle, never pill)
150
- shadow-intensity: 0.4 # derived: brand body is flat; shadow reserved for true overlays
151
- border-weight: 1px
152
- density-gap: 1
153
- density-inset: 1
154
- font-sans: Super Sans VF, Inter, system-ui, -apple-system, sans-serif # brand face; Inter Variable is the documented substitute at sub-default weights
155
- font-mono: Geist Mono, ui-monospace, SFMono-Regular, monospace # derived: marketing brand ships no mono; operator IDs/codes/timestamps need one
156
- font-weight-normal: 460 # brand's sub-default body weight — the warmth signature (not 400)
157
- font-weight-strong: 600 # brand's label weight (button-cap); clearer operator heading than the softer display 540
158
- heading-tracking: -0.02em # brand's negative display tracking, proportioned to operator heading sizes
159
- duration-unit: 50ms # derived: corpus documents no motion
160
- duration-fast: 100ms # derived: functional operator motion
161
- duration-normal: 150ms # derived
162
- duration-slow: 250ms # derived
163
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived
164
- contrast-boost: 1
165
- icon-stroke: 1.5 # derived: refined editorial character → one step under lucide's 2
166
- icon-size-base: 16px # derived
167
- sidebar-width-expanded: 256px # derived: editorial roominess
168
- sidebar-width-collapsed: 56px # derived
169
- topbar-height: 56px # derived: from the brand nav padding 16px x 24px
170
- side-panel-width: 440px # derived: roomier editorial detail panel
171
- side-panel-width-rich: 640px # derived
172
- modal-width-max: 560px # derived
173
- form-max-width: 640px # derived: narrower than the ~960px marketing column, capped for form legibility
174
- table-row-height: 44px # derived: editorial roominess + the corpus's 44px touch-target floor
175
- verbosity: default # derived
176
- feedback: subtle # derived: editorial calm
177
- density-tier: standard # derived: editorial-spacious brand read as a comfortable operator standard; roominess carried by radius/rows/spacing, archetypes step denser
178
- product-traits: [productivity, inbox, crm, queue]
179
- ```
180
-
181
- ```yaml lever-manifest
182
- version: 1
183
- fonts: { sans: "Super Sans VF, Inter, system-ui, -apple-system, sans-serif", mono: "Geist Mono, ui-monospace, SFMono-Regular, monospace" }
184
- color-tokens:
185
- light:
186
- background: "#ffffff"
187
- foreground: "#292827"
188
- card: "#ffffff"
189
- card-foreground: "#292827"
190
- muted: "#f4f2ed" # derived: warm off-white one step deeper than canvas-soft #fafaf8 for a perceptible hover/fill
191
- muted-foreground: "#73706d"
192
- border: "#e8e4dd"
193
- input: "#e8e4dd"
194
- ring: "#1b1938"
195
- primary: "#1b1938"
196
- primary-foreground: "#ffffff"
197
- accent: "#edecf2" # derived: pale indigo tint of primary for selected/hover rows and nav
198
- accent-foreground: "#1b1938"
199
- destructive: "#c0362b" # derived: warm red; brand ships no error hue
200
- destructive-foreground: "#ffffff"
201
- success: "#157a52" # derived: status green tuned toward the brand's teal family
202
- warning: "#b5791f" # derived: warm amber matching the warm-grey temperature
203
- popover: "#ffffff"
204
- popover-foreground: "#292827"
205
- secondary: "#f4f2ed" # derived: aligned with muted warm off-white
206
- secondary-foreground: "#292827"
207
- chart-1: "#1b1938"
208
- chart-2: "#155555" # derived: brand surface-teal-mid as a chart hue
209
- chart-3: "#8b6fd6" # derived: saturated violet from the surface-violet-soft family
210
- chart-4: "#b5791f" # derived: warm amber (warning family)
211
- chart-5: "#157a52" # derived: green (success family)
212
- sidebar: "#fafaf8" # derived: warm off-white (brand canvas-soft), one tint off the white canvas
213
- sidebar-foreground: "#292827"
214
- sidebar-primary: "#1b1938"
215
- sidebar-primary-foreground: "#ffffff"
216
- sidebar-accent: "#edecf2" # derived: matches the accent tint
217
- sidebar-accent-foreground: "#1b1938"
218
- sidebar-border: "#e8e4dd"
219
- sidebar-ring: "#1b1938"
220
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
221
- radius-scale: [4, 6, 8, 12, 16, 9999]
222
- shadow-levels: [none, sm, md]
223
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
224
- icons: { family: lucide, stroke: 1.5 }
225
- accent-count: 1
226
- ```