@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
@@ -8,10 +8,10 @@ sourced: 2026-07-04
8
8
  # Revolut — operator reading
9
9
 
10
10
  The operator translation of Revolut's fintech-meets-brochure system — a two-mode marketing canvas
11
- (true-black storytelling bands alternating with white catalogue bands, oversized Aeonik Pro headlines,
12
- pill buttons, eight saturated illustration colours). This entry keeps the operator-durable core and
13
- leaves the hero scale behind; §9 lists exactly what carries and what stays. Both machine blocks are
14
- fully valued; judgments away from the marketing brand are annotated `# derived:`.
11
+ (true-black storytelling bands alternating with white catalogue bands, oversized Aeonik Pro
12
+ headlines, pill buttons, eight saturated illustration colours). This entry keeps the
13
+ operator-durable core and leaves the hero scale behind; §9 lists exactly what carries and what
14
+ stays.
15
15
 
16
16
  ## 1 Visual Theme
17
17
 
@@ -143,83 +143,3 @@ buttons · the band-switching rhythm · the illustration palette as chrome.
143
143
  - Every numeric column is `tabular-nums`; every amount / ID / timestamp is `font-mono`, and every
144
144
  workflow completes from the keyboard with the cobalt `ring` outline always visible.
145
145
  - Stay flat — hairline and surface before shadow; illustration colours are chart series, not chrome.
146
-
147
- ```yaml design-primitives
148
- radius: 12px # derived: Revolut's input radius (rounded.md) — the working-component corner; rounder than a typical operator base to carry the brand
149
- shadow-intensity: 0.3 # derived: Revolut has no drop-shadow language; shadow barely lifts a true overlay
150
- border-weight: 1px
151
- density-gap: 1
152
- density-inset: 1
153
- font-sans: Aeonik Pro, Inter Display, General Sans, Inter, system-ui, sans-serif
154
- font-mono: JetBrains Mono, ui-monospace, SFMono-Regular, monospace # derived: corpus ships no mono; a clean geometric mono for amounts/IDs, pairing with Inter
155
- font-weight-normal: 400
156
- font-weight-strong: 600 # derived: brand display is Aeonik 500, but operator headings at 18–28px read cleaner at 600 (Revolut's own bold/button weight)
157
- heading-tracking: -0.02em # derived: Revolut's display-xxl ratio (-2.72px/136px); carries the signature tight tracking at operator heading sizes
158
- duration-unit: 50ms # derived: corpus silent on motion; functional operator defaults
159
- duration-fast: 100ms # derived: corpus silent on motion
160
- duration-normal: 150ms # derived: corpus silent on motion
161
- duration-slow: 250ms # derived: corpus silent on motion
162
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard operator ease
163
- contrast-boost: 1
164
- icon-stroke: 1.75 # derived: corpus has no icon spec; one step under lucide's 2 for a refined operator stroke
165
- icon-size-base: 16px # derived: corpus has no icon spec; operator default
166
- sidebar-width-expanded: 256px # derived: Revolut is a top-nav marketing site; comfortable operator sidebar
167
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
168
- topbar-height: 64px # Revolut nav-bar height
169
- side-panel-width: 420px # derived: no side panels in the marketing corpus; operator default
170
- side-panel-width-rich: 640px # derived: operator default for content-heavy detail
171
- modal-width-max: 560px # derived: operator default
172
- form-max-width: 640px # derived: operator default
173
- table-row-height: 44px # derived: Revolut's comfortable feel (tall inputs) → a touch taller than the 40px operator norm
174
- verbosity: default
175
- feedback: subtle
176
- density-tier: standard # derived: Revolut's generous marketing whitespace stays behind; operator density is standard-comfortable, not dense-terminal
177
- product-traits: [fintech, payments, transaction-queue, dashboard, crm]
178
- ```
179
-
180
- ```yaml lever-manifest
181
- version: 1
182
- fonts: { sans: "Aeonik Pro, Inter Display, General Sans, Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, SFMono-Regular, monospace" }
183
- color-tokens:
184
- light:
185
- background: "#ffffff"
186
- foreground: "#191c1f"
187
- card: "#ffffff"
188
- card-foreground: "#191c1f"
189
- muted: "#f4f4f4"
190
- muted-foreground: "#505a63"
191
- border: "#e2e2e7"
192
- input: "#e2e2e7"
193
- ring: "#494fdf"
194
- primary: "#494fdf"
195
- primary-foreground: "#ffffff"
196
- accent: "#edeefc" # derived: pale cobalt tint for selected/hovered rows; corpus gives no light tint of primary
197
- accent-foreground: "#3a40c4"
198
- destructive: "#e23b4a"
199
- destructive-foreground: "#ffffff"
200
- success: "#428619"
201
- warning: "#ec7e00"
202
- popover: "#ffffff"
203
- popover-foreground: "#191c1f"
204
- secondary: "#f4f4f4"
205
- secondary-foreground: "#191c1f"
206
- chart-1: "#494fdf"
207
- chart-2: "#00a87e"
208
- chart-3: "#007bc2"
209
- chart-4: "#ec7e00"
210
- chart-5: "#e61e49"
211
- sidebar: "#000000"
212
- sidebar-foreground: "#ffffff"
213
- sidebar-primary: "#494fdf"
214
- sidebar-primary-foreground: "#ffffff"
215
- sidebar-accent: "#16181a"
216
- sidebar-accent-foreground: "#ffffff"
217
- sidebar-border: "#ffffff1f" # derived: hairline-dark rgba(255,255,255,0.12) as 8-digit hex
218
- sidebar-ring: "#494fdf"
219
- spacing-scale: [4, 6, 8, 14, 16, 24, 32, 48, 64]
220
- radius-scale: [0, 8, 12, 20, 9999]
221
- shadow-levels: [none, sm, md]
222
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
223
- icons: { family: lucide, stroke: 1.75 }
224
- accent-count: 1
225
- ```
@@ -135,85 +135,3 @@ Directives the emitting agent follows verbatim:
135
135
  - **Stays behind:** full-bleed cinematic photography, the 48px hero display type, asymmetric editorial
136
136
  image grids, the 1600px cinema container, and photography-as-color. An operator surface earns its
137
137
  clarity from structure, not spectacle.
138
-
139
- ```yaml design-primitives
140
- radius: 6px # derived: corpus gives 4/6/8; 6px "subtle" is the operator default (scale keeps 4/8/16)
141
- shadow-intensity: 0.15 # derived: brand is zero-shadow; a whisper only for true overlays
142
- border-weight: 1px
143
- density-gap: 1.1 # derived: cinema-grade breathing reads spacious, not dense
144
- density-inset: 1.1
145
- font-sans: DM Sans, Inter, system-ui, sans-serif # derived: DM Sans substitutes abcNormal's geometry (corpus-named), Inter fallback
146
- font-mono: Geist Mono, ui-monospace, SFMono-Regular, monospace # derived: brand is single-typeface; operator floor P4 needs a mono
147
- font-weight-normal: 400
148
- font-weight-strong: 600 # brand range is 400-600, never 700+
149
- heading-tracking: -0.02em # derived: corpus display/section tracking (-1.2px/-1px) ≈ -0.02em at heading sizes
150
- duration-unit: 50ms # derived: corpus silent on motion; functional operator defaults
151
- duration-fast: 100ms
152
- duration-normal: 150ms
153
- duration-slow: 250ms
154
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
155
- contrast-boost: 1 # derived: brand keeps borders intentionally faint; hold neutral
156
- icon-stroke: 1.5 # derived: minimal editorial brand → refined thin stroke
157
- icon-size-base: 16px
158
- sidebar-width-expanded: 256px # derived: corpus has no shell; spacious posture opens it a step
159
- sidebar-width-collapsed: 56px
160
- topbar-height: 56px # derived: spacious posture
161
- side-panel-width: 440px # derived: spacious posture
162
- side-panel-width-rich: 640px
163
- modal-width-max: 560px
164
- form-max-width: 640px
165
- table-row-height: 44px # derived: spacious rows carry the editorial breathing
166
- verbosity: compact # derived: brand keeps text minimal, the interface near-invisible
167
- feedback: minimal # derived: quiet, restrained, invisible-interface ethos
168
- density-tier: spacious # derived: cinema-grade breathing, generous section spacing
169
- product-traits: [creative-tools, media-asset, dashboard, review-queue]
170
- ```
171
-
172
- ```yaml lever-manifest
173
- version: 1
174
- fonts: { sans: "DM Sans, Inter, system-ui, sans-serif", mono: "Geist Mono, ui-monospace, SFMono-Regular, monospace" }
175
- color-tokens:
176
- light:
177
- background: "#ffffff"
178
- foreground: "#0c0c0c"
179
- card: "#ffffff"
180
- card-foreground: "#0c0c0c"
181
- muted: "#e9ecf2"
182
- muted-foreground: "#767d88"
183
- border: "#c9ccd1"
184
- input: "#c9ccd1"
185
- ring: "#0c0c0c"
186
- primary: "#0c0c0c"
187
- primary-foreground: "#ffffff"
188
- accent: "#e9ecf2"
189
- accent-foreground: "#0c0c0c"
190
- destructive: "#c53030"
191
- destructive-foreground: "#ffffff"
192
- success: "#2f855a"
193
- warning: "#b7791f"
194
- popover: "#ffffff"
195
- popover-foreground: "#0c0c0c"
196
- secondary: "#e9ecf2"
197
- secondary-foreground: "#0c0c0c"
198
- chart-1: "#0c0c0c"
199
- chart-2: "#3f3f3f"
200
- chart-3: "#767d88"
201
- chart-4: "#a7a7a7"
202
- chart-5: "#c9ccd1"
203
- sidebar: "#f2f4f8"
204
- sidebar-foreground: "#0c0c0c"
205
- sidebar-primary: "#0c0c0c"
206
- sidebar-primary-foreground: "#ffffff"
207
- sidebar-accent: "#e9ecf2"
208
- sidebar-accent-foreground: "#0c0c0c"
209
- sidebar-border: "#c9ccd1"
210
- sidebar-ring: "#0c0c0c"
211
- # dark is the brand-native default (data-theme="dark"); every dark value is documented in §2 Color Roles.
212
- # A project confirming this library ships the dark map alongside; the coverage gate requires light, so light is machine-carried here.
213
- spacing-scale: [4, 6, 8, 12, 16, 20, 24, 28, 32, 48, 64, 78]
214
- radius-scale: [4, 6, 8, 16]
215
- shadow-levels: [none, sm]
216
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
217
- icons: { family: lucide, stroke: 1.5 }
218
- accent-count: 1
219
- ```
@@ -18,9 +18,7 @@ the full-bleed marketing rhythm, and the neon-green/magenta highlights.
18
18
 
19
19
  **This brand is categorically dark** — the near-black canvas is "not a dark mode but the primary
20
20
  identity," and Sanity's light/inverted sections are marketing inversions, never an operator light
21
- theme. The light-default floor yields here (the categorically-dark exception): the default-worn theme
22
- is dark and fills the required default (`light`) slot in the manifest. A white operator canvas is
23
- off-brand.
21
+ theme. A white operator canvas is off-brand.
24
22
 
25
23
  ## 1 Visual Theme
26
24
 
@@ -35,9 +33,8 @@ focus `ring`. Density is `dense` — this reads like a tool for people who live
35
33
 
36
34
  ## 2 Color Roles
37
35
 
38
- Dark values (the manifest carries the exact hex in the required default slot). Two accents by strict
39
- role — coral rests, blue activates; the vivid greens and magenta are chart/status graces, and status
40
- hues speak only status.
36
+ Dark values. Two accents by strict role — coral rests, blue activates; the vivid greens and magenta
37
+ are chart/status graces, and status hues speak only status.
41
38
 
42
39
  | Role | Value | Allowed where |
43
40
  | --- | --- | --- |
@@ -169,83 +166,3 @@ Directives the emitting agent follows verbatim:
169
166
  - Leave behind: the hero display at -4.48px tracking, full-pill CTA buttons, full-bleed marketing
170
167
  sections and the 64-120px rhythm, and the neon-green/magenta highlights — marketing voltage, not
171
168
  operator chrome.
172
-
173
- ```yaml design-primitives
174
- radius: 6px # corpus: standard card/container radius (md 6px); inputs 3px, cards 12px via the scale; the pill CTA stays behind
175
- shadow-intensity: 0.2 # derived: brand is colorimetric — depth is the surface ladder; only overlays get the faintest ring/blur lift
176
- border-weight: 1px # corpus: 1px borders throughout
177
- density-gap: 0.9 # derived: dense tier — terminal-native precision compresses spacing one step
178
- density-inset: 0.9 # derived: matches the dense density-gap for coherent component insets
179
- font-sans: waldenburgNormal, Space Grotesk, Inter, system-ui, sans-serif # corpus: waldenburgNormal custom face; Space Grotesk / Inter the geometric-condensed substitutes
180
- font-mono: IBM Plex Mono, ui-monospace, monospace # corpus: IBM Plex Mono for code and technical labels
181
- font-weight-normal: 400 # corpus: body 400
182
- font-weight-strong: 500 # corpus: the brand never bolds — emphasis tops at 500 (600 only on 11px uppercase micro-labels); hierarchy is size + tracking
183
- heading-tracking: -0.015em # derived: corpus documents -0.24px (~-0.01em) at the 24px title; nudged one notch tighter to carry the signature compressed tracking (hero -4.48px stays behind)
184
- duration-unit: 50ms # derived: corpus documents no motion; functional operator base
185
- duration-fast: 100ms # derived: corpus silent on motion
186
- duration-normal: 150ms # derived: corpus silent on motion
187
- duration-slow: 250ms # derived: corpus silent on motion
188
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
189
- contrast-boost: 1 # derived: the visible `#353535` hairline plus the surface ladder already carry the grid; no boost
190
- icon-stroke: 1.75 # derived: corpus silent on icons; refined operator stroke one step under lucide's 2, matching the precise/engineered voice
191
- icon-size-base: 16px # derived: corpus silent on icon size; operator standard
192
- sidebar-width-expanded: 248px # derived: corpus is a marketing site with no app sidebar; standard operator rail
193
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
194
- topbar-height: 52px # derived: corpus nav is "compact padding" with no explicit height; tight operator bar
195
- side-panel-width: 420px # derived: corpus has no shell; standard operator detail panel
196
- side-panel-width-rich: 640px # derived: content-heavy detail panel
197
- modal-width-max: 560px # derived: corpus's full-bleed sections are marketing; operator confirmation cap
198
- form-max-width: 640px # derived: corpus max content ~1440px is marketing; operator form cap
199
- table-row-height: 40px # derived: dense-tier row height; dense archetypes step down via the surface catalog
200
- verbosity: compact # derived: terminal-native "system readout" precision trusts dense readouts over explanatory chrome
201
- feedback: subtle # derived: the consistent hover-to-blue activation is a present but restrained signal
202
- density-tier: dense # derived: a tool "for people who live in terminals" reads dense
203
- product-traits: [dev-tools, cms, content-platform, dashboard]
204
- ```
205
-
206
- ```yaml lever-manifest
207
- version: 1
208
- fonts: { sans: "waldenburgNormal, Space Grotesk, Inter, system-ui, sans-serif", mono: "IBM Plex Mono, ui-monospace, monospace" }
209
- color-tokens:
210
- light: # categorically-dark brand: the default-worn theme is dark and fills this required default slot; there is no light surface
211
- background: "#0b0b0b"
212
- foreground: "#ffffff"
213
- card: "#212121"
214
- card-foreground: "#ffffff"
215
- muted: "#212121"
216
- muted-foreground: "#b9b9b9"
217
- border: "#353535"
218
- input: "#353535"
219
- ring: "#0052ef"
220
- primary: "#f36458"
221
- primary-foreground: "#ffffff"
222
- accent: "#353535"
223
- accent-foreground: "#ffffff"
224
- destructive: "#dd0000"
225
- destructive-foreground: "#ffffff"
226
- success: "#37cd84" # derived: the calmer compliance green reads as UI status; the neon `#19d600` premium-highlight green stays behind (kept as a chart hue)
227
- warning: "#f59e0b" # derived: corpus ships no warning hue and its orange border would collide with coral; a distinct amber carries caution
228
- popover: "#212121"
229
- popover-foreground: "#ffffff"
230
- secondary: "#212121"
231
- secondary-foreground: "#b9b9b9"
232
- chart-1: "#0052ef" # electric blue — primary data series
233
- chart-2: "#19d600" # neon green (sRGB fallback), repurposed as a chart hue
234
- chart-3: "#f36458" # coral
235
- chart-4: "#55beff" # light blue (documented secondary blue)
236
- chart-5: "#f500ff" # magenta (display-p3 accent, sRGB approx), repurposed as a chart hue
237
- sidebar: "#0b0b0b" # derived: nav rides the canvas; the hairline sidebar-border carries the seam
238
- sidebar-foreground: "#b9b9b9" # derived: resting nav labels are silver, brightening on active
239
- sidebar-primary: "#0052ef" # derived: blue active-nav indicator — the activation signal
240
- sidebar-primary-foreground: "#ffffff"
241
- sidebar-accent: "#212121" # derived: hover/selected nav lift off the canvas
242
- sidebar-accent-foreground: "#ffffff"
243
- sidebar-border: "#353535"
244
- sidebar-ring: "#0052ef"
245
- spacing-scale: [4, 8, 12, 16, 24, 32, 48, 64]
246
- radius-scale: [3, 4, 6, 12, 9999]
247
- shadow-levels: [none, sm]
248
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
249
- icons: { family: lucide, stroke: 1.75 }
250
- accent-count: 2 # brand demands it: coral `primary` (the resting CTA) + electric blue (the system-wide activation signal on ring/nav/links); the doctrine one-accent floor yields to the documented two-signal system
251
- ```
@@ -7,17 +7,16 @@ sourced: 2026-07-04
7
7
 
8
8
  # Sentry — the violet-and-lime developer-console operator design
9
9
 
10
- Sentry's design language reads like a debugging console wearing a leather jacket: a deep purple-violet
11
- midnight canvas, electric-lime keyword highlights, sticker mascots, a chunky display sans. But the
12
- brand is explicitly *two-polarity* — dark violet owns marketing and feature pages, while **white owns
13
- the dense, scannable, transactional surfaces** (pricing, contact, reference) where developers scan
14
- tables. That white polarity is exactly operator territory, so this entry wears it. What carries: the
15
- violet palette and its cool temperature, the authoritative near-black-violet primary button that reads
16
- as the strongest affordance on either polarity, the Rubik UI voice with uppercase `+0.2px` caps, Monaco
17
- on every code/log surface, the 8px developer-dialect radius, and lime held scarce as a signature
18
- highlight. What stays behind: the 88px display hero, the starfield texture, the floating mascots, the
19
- lime squiggle divider, and the dark-canvas marketing atmosphere. Judgments away from the corpus are
20
- annotated `# derived:` where it is silent.
10
+ Sentry's design language reads like a debugging console wearing a leather jacket: a deep
11
+ purple-violet midnight canvas, electric-lime keyword highlights, sticker mascots, a chunky display
12
+ sans. But the brand is explicitly *two-polarity* — dark violet owns marketing and feature pages,
13
+ while **white owns the dense, scannable, transactional surfaces** (pricing, contact, reference)
14
+ where developers scan tables. That white polarity is exactly operator territory, so this entry wears
15
+ it. What carries: the violet palette and its cool temperature, the authoritative near-black-violet
16
+ primary button that reads as the strongest affordance on either polarity, the Rubik UI voice with
17
+ uppercase `+0.2px` caps, Monaco on every code/log surface, the 8px developer-dialect radius, and
18
+ lime held scarce as a signature highlight. What stays behind: the 88px display hero, the starfield
19
+ texture, the floating mascots, the lime squiggle divider, and the dark-canvas marketing atmosphere.
21
20
 
22
21
  ## 1 Visual Theme
23
22
 
@@ -34,9 +33,9 @@ opt-in iconic read** for a monitoring surface that wants it, but light is the de
34
33
 
35
34
  ## 2 Color Roles
36
35
 
37
- Light values (the manifest carries hex — the corpus's native format). One accent — midnight-violet
38
- `primary` is the only hue that carries the primary-action meaning; lime, pink, and the violet family
39
- speak charts and the scarce highlight, status hues speak only status. The dark-console value is noted where it defines the identity.
36
+ Light values. One accent — midnight-violet `primary` is the only hue that carries the primary-action
37
+ meaning; lime, pink, and the violet family speak charts and the scarce highlight, status hues speak
38
+ only status. The dark-console value is noted where it defines the identity.
40
39
 
41
40
  | Role | Value | Allowed where |
42
41
  | --- | --- | --- |
@@ -162,83 +161,3 @@ Directives the emitting agent follows verbatim:
162
161
  - Leave behind the starfield texture, the floating mascots, the lime squiggle divider, and the 96px
163
162
  marketing rhythm. What carries: the violet palette and cool temperature, the authoritative near-black
164
163
  button, the Rubik caps cadence, Monaco, and the 8px radius character.
165
-
166
- ```yaml design-primitives
167
- radius: 8px # corpus: buttons/code/selects at rounded.md (8px); inputs 6px, cards 12px, badges 4px — no sharp corners
168
- shadow-intensity: 0.4 # derived: light-canvas floating cards/modals take real level-2 drop shadows (~0.1 alpha); dark depth is texture (left behind); operator keeps shadow to overlays
169
- border-weight: 1px # corpus: every border is 1px
170
- density-gap: 1 # derived: console heritage is dense-capable, but corpus functional body is a roomier 16px/1.5; honest standard tier, archetypes step denser
171
- density-inset: 1 # derived: matches density-gap for coherent component insets
172
- font-sans: Rubik, -apple-system, system-ui, "Segoe UI", Helvetica, Arial, sans-serif # corpus: Rubik carries every body/caption/button/eyebrow role
173
- font-mono: Monaco, Menlo, "Ubuntu Mono", monospace # corpus: Monaco on code blocks, install snippets, inline tokens
174
- font-weight-normal: 400 # derived: corpus default UI body-md is 500 (display-tuned); operator dense body/table chrome reads cleaner at 400
175
- font-weight-strong: 600 # corpus: heading-sm/body-strong at 600; the 700 button-cap and 700/88px hero display stay behind
176
- heading-tracking: 0 # corpus: every Rubik heading tier tracks 0; the +0.2px tracking signature lives on uppercase caps, applied to the caption/button step by hand
177
- duration-unit: 50ms # derived: corpus documents no motion timings; operator-standard functional base
178
- duration-fast: 100ms # derived: corpus silent on motion
179
- duration-normal: 150ms # derived: corpus silent on motion
180
- duration-slow: 250ms # derived: corpus silent on motion
181
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard functional ease
182
- contrast-boost: 1 # derived: the corpus hairline-cloud grid lines already read as a grid; no boost
183
- icon-stroke: 1.75 # derived: corpus iconography is illustrated sticker mascots (marketing, left behind); operator line-icon stroke one step under lucide's 2
184
- icon-size-base: 16px # derived: corpus has no UI icon size; operator standard
185
- sidebar-width-expanded: 248px # derived: corpus has no app shell (marketing top-nav only); operator standard
186
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
187
- topbar-height: 56px # derived: corpus nav padding 16/24px is marketing-generous; operator tightens to 56px
188
- side-panel-width: 420px # derived: corpus has no shell; operator standard
189
- side-panel-width-rich: 640px # derived: content-heavy detail (event payload / stack trace)
190
- modal-width-max: 560px # derived: corpus dialogs are marketing; operator confirmation cap
191
- form-max-width: 640px # derived: corpus contact form is a single light panel; 640 caps operator forms (the ~1152px container is marketing)
192
- table-row-height: 40px # derived: standard operator; dense archetypes (log-stream) step down via the surface catalog
193
- verbosity: default # derived: the console cadence is terse, but the brand narrates (playful, not austere); default suits a developer operator surface
194
- feedback: subtle # derived: present-but-quiet operator feedback
195
- density-tier: standard # derived: observability-console heritage is dense-capable, but corpus functional body is roomier than a trading terminal; honest standard, archetypes step denser
196
- product-traits: [dev-tools, observability, dashboard, log-stream]
197
- ```
198
-
199
- ```yaml lever-manifest
200
- version: 1
201
- fonts: { sans: "Rubik, -apple-system, system-ui, \"Segoe UI\", Helvetica, Arial, sans-serif", mono: "Monaco, Menlo, \"Ubuntu Mono\", monospace" }
202
- color-tokens:
203
- light:
204
- background: "#ffffff"
205
- foreground: "#1f1633"
206
- card: "#ffffff"
207
- card-foreground: "#1f1633"
208
- muted: "#f3f1f8" # derived: a faint violet tint over the corpus press-gray (#f0f0f0), holding the cool violet temperature on light
209
- muted-foreground: "#6b6577" # derived: corpus documents only dark-surface muted; a violet-leaning mid gray reads as secondary text on white
210
- border: "#e5e7eb" # corpus hairline-cloud — light-canvas dividers and grid lines
211
- input: "#cfcfdb" # corpus hairline-cool — text-field and form-control edges
212
- ring: "#3b82f6" # derived: corpus documents a dedicated translucent blue focus ring rgba(59,130,246,0.5) — "the only blue in the system"; carried as solid #3b82f6
213
- primary: "#150f23" # corpus Midnight Violet — the authoritative near-black action, "strongest UI affordance regardless of polarity"
214
- primary-foreground: "#ffffff"
215
- accent: "#e9e5f4" # derived: faint violet selection wash, one step past muted so selection reads over hover; never lime/pink
216
- accent-foreground: "#1f1633"
217
- destructive: "#e11d48" # derived: corpus documents no error red (pink is decorative punctuation, never a signal); a cool crimson carries destruction on-temperature, distinct from the decorative pink
218
- destructive-foreground: "#ffffff"
219
- success: "#16a34a" # derived: corpus has no status green (lime is a decorative highlight, fails as a signal); a clean green carries success
220
- warning: "#d97706" # derived: corpus has no caution hue; amber carries warning, kept distinct from the decorative lime
221
- popover: "#ffffff"
222
- popover-foreground: "#1f1633"
223
- secondary: "#f3f1f8" # matches muted — secondary-button fill
224
- secondary-foreground: "#1f1633"
225
- chart-1: "#6a5fc1" # corpus Violet Link — the brand's own accent family carries the chart series
226
- chart-2: "#c2ef4e" # corpus Electric Lime — the signature, scoped to charts + the scarce highlight glyph
227
- chart-3: "#fa7faa" # corpus Hot Pink
228
- chart-4: "#422082" # corpus Deep Violet
229
- chart-5: "#79628c" # corpus Mid Violet
230
- sidebar: "#f7f6fb" # derived: a faint violet-tinted step below the white canvas so the nav rail reads as chrome
231
- sidebar-foreground: "#1f1633"
232
- sidebar-primary: "#150f23" # active-nav marker = the primary action color
233
- sidebar-primary-foreground: "#ffffff"
234
- sidebar-accent: "#e9e5f4" # hover/selected nav lift, matches accent
235
- sidebar-accent-foreground: "#1f1633"
236
- sidebar-border: "#e5e7eb"
237
- sidebar-ring: "#3b82f6"
238
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
239
- radius-scale: [4, 6, 8, 10, 12, 18, 9999]
240
- shadow-levels: [none, sm, md]
241
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
242
- icons: { family: lucide, stroke: 1.75 }
243
- accent-count: 1
244
- ```
@@ -25,8 +25,8 @@ Comfortable `standard` density; the pill button shape carries in from the brand.
25
25
 
26
26
  ## 2 Color Roles
27
27
 
28
- Light values first (exact values in the manifest). One chromatic accent — the mint-green family;
29
- black is ink/primary, a neutral, not a second color.
28
+ Light values first. One chromatic accent — the mint-green family; black is ink/primary, a neutral,
29
+ not a second color.
30
30
 
31
31
  | Role | Value | Allowed where |
32
32
  | --- | --- | --- |
@@ -145,83 +145,3 @@ Directives the emitting agent follows verbatim:
145
145
  - Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono`; the black `ring`
146
146
  focus outline is always visible and every workflow completes from the keyboard.
147
147
  - Leave the cinematic black track and its photography on marketing surfaces — never the operator UI.
148
-
149
- ```yaml design-primitives
150
- radius: 8px # derived: brand inputs 8px / cards 12px; 8px is the default component radius (buttons pill via the scale)
151
- shadow-intensity: 0.6 # derived: the light track's signature soft "paper halo" carries real card hierarchy, not a flat brand
152
- border-weight: 1px
153
- density-gap: 1
154
- density-inset: 1
155
- font-sans: Inter, system-ui, sans-serif # derived: brand splits Neue Haas Grotesk Display (thin display, stays behind) + Inter (UI/body); the single sans slot takes Inter, the operator workhorse
156
- font-mono: ui-monospace, SFMono-Regular, Menlo, monospace # brand code face is the system monospace
157
- font-weight-normal: 400 # derived: brand variable body 420 is display-tuned; dense operator body reads cleaner at 400
158
- font-weight-strong: 600 # derived: brand strong 550 collapses to the standard operator 600
159
- heading-tracking: 0.01em # derived: Shopify headings track open (~+0.015em), inverted from the typical tight operator heading; a restrained +0.01em carries that editorial voice
160
- duration-unit: 50ms # derived: corpus documents no motion; functional operator base
161
- duration-fast: 120ms # derived: corpus silent on motion; functional
162
- duration-normal: 200ms # derived: corpus silent on motion; functional
163
- duration-slow: 320ms # derived: corpus silent on motion; functional
164
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard functional easing
165
- contrast-boost: 1 # black ink on cream is already high-contrast; no boost needed
166
- icon-stroke: 1.75 # derived: corpus silent on icons; refined operator stroke
167
- icon-size-base: 16px # derived: corpus silent on icons; operator norm
168
- sidebar-width-expanded: 240px # derived: marketing corpus has no admin shell; comfortable operator sidebar
169
- sidebar-width-collapsed: 64px # derived: comfortable icon rail matching the brand's roomier density
170
- topbar-height: 56px # derived: comfortable operator topbar
171
- side-panel-width: 440px # derived: comfortable detail panel
172
- side-panel-width-rich: 640px # derived: content-heavy panel
173
- modal-width-max: 560px # derived: matches the brand's generous card width
174
- form-max-width: 720px # derived: echoes the brand's ~720px reading column
175
- table-row-height: 44px # derived: the brand's 44px touch minimum reads comfortable, not dense
176
- verbosity: default
177
- feedback: subtle
178
- density-tier: standard # derived: consumer-commerce brand reads comfortable, not terminal-dense; archetypes step denser
179
- product-traits: [commerce, admin, dashboard, crm]
180
- ```
181
-
182
- ```yaml lever-manifest
183
- version: 1
184
- fonts: { sans: "Inter, system-ui, sans-serif", mono: "ui-monospace, SFMono-Regular, Menlo, monospace" }
185
- color-tokens:
186
- light:
187
- background: "#fbfbf5"
188
- foreground: "#000000"
189
- card: "#ffffff"
190
- card-foreground: "#000000"
191
- muted: "#f4f4f5"
192
- muted-foreground: "#71717a"
193
- border: "#e4e4e7"
194
- input: "#e4e4e7"
195
- ring: "#000000"
196
- primary: "#000000"
197
- primary-foreground: "#ffffff"
198
- accent: "#c1fbd4"
199
- accent-foreground: "#000000"
200
- destructive: "#d82c0d" # derived: corpus documents no error hue; a warm commerce red
201
- destructive-foreground: "#ffffff"
202
- success: "#008060" # derived: pale aloe/pistachio are fills, not status; a saturated commerce green carries success with contrast
203
- warning: "#b45309" # derived: corpus silent on caution; readable amber
204
- popover: "#ffffff"
205
- popover-foreground: "#000000"
206
- secondary: "#f4f4f5"
207
- secondary-foreground: "#000000"
208
- chart-1: "#008060" # derived: corpus has no chart palette; commerce-green-forward categorical ramp
209
- chart-2: "#5c6ac4" # derived: chart ramp
210
- chart-3: "#47c1bf" # derived: chart ramp
211
- chart-4: "#b45309" # derived: chart ramp (matches warning)
212
- chart-5: "#d82c0d" # derived: chart ramp (matches destructive)
213
- sidebar: "#f7f7f2" # derived: light rail, a hair off the cream canvas; the black track stays on marketing
214
- sidebar-foreground: "#000000"
215
- sidebar-primary: "#000000"
216
- sidebar-primary-foreground: "#ffffff"
217
- sidebar-accent: "#d4f9e0" # pistachio — the softer green for nav hover
218
- sidebar-accent-foreground: "#000000"
219
- sidebar-border: "#e4e4e7"
220
- sidebar-ring: "#000000"
221
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
222
- radius-scale: [0, 4, 8, 12, 20, 9999]
223
- shadow-levels: [none, sm, md, lg]
224
- motion: { durations: [120, 200, 320], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
225
- icons: { family: lucide, stroke: 1.75 }
226
- accent-count: 1
227
- ```
@@ -7,14 +7,12 @@ sourced: 2026-07-04
7
7
 
8
8
  # Slack — operator reading
9
9
 
10
- An operator translation of Slack's design language: the signature deep-aubergine
11
- `sidebar`, a white content canvas, one aubergine accent, and blue reserved strictly for
12
- links. The marketing surface — cream-lavender pastel-mesh gradients, 64px hero display,
13
- floating product mockups — stays behind. What carries is the palette temperature (warm
14
- aubergine, cool lavender tints), the humanist type voice, Slack's rounded character, and
15
- the one thing every stranger recognizes as Slack: the dark aubergine workspace rail. Both
16
- machine blocks are fully valued; every judgment away from the marketing brand is
17
- annotated `# derived:`.
10
+ An operator translation of Slack's design language: the signature deep-aubergine `sidebar`, a white
11
+ content canvas, one aubergine accent, and blue reserved strictly for links. The marketing surface —
12
+ cream-lavender pastel-mesh gradients, 64px hero display, floating product mockups — stays behind.
13
+ What carries is the palette temperature (warm aubergine, cool lavender tints), the humanist type
14
+ voice, Slack's rounded character, and the one thing every stranger recognizes as Slack: the dark
15
+ aubergine workspace rail.
18
16
 
19
17
  ## 1 Visual Theme
20
18
 
@@ -158,83 +156,3 @@ Directives the emitting agent follows verbatim:
158
156
  - Detail and edit go in the side panel; a modal is a confirmation, not a workspace (P3).
159
157
  - Every numeric column is `tabular-nums`; every ID / code / timestamp is `font-mono` (P4).
160
158
  - Every workflow completes from the keyboard; the `ring` focus outline is always visible (P6).
161
-
162
- ```yaml design-primitives
163
- radius: 8px # derived: brand's rounded character (12-16px cards, 90px pills) settles at a friendly 8px operator workhorse; the pill (9999) is reserved for the signature primary CTA
164
- shadow-intensity: 0.5 # derived: brand leans on soft atmospheric shadow for depth; operator keeps a moderate lift on overlays only
165
- border-weight: 1px
166
- density-gap: 1.05 # derived: Slack's comfortable padding (over-padded pills, 1.55 body leading) nudges spacing a hair above the neutral operator default
167
- density-inset: 1.05 # derived: same comfortable-padding read carried onto component insets
168
- font-sans: Lato, system-ui, sans-serif # derived: corpus names Lato as the humanist face that carries the brand's warmth at UI sizes (the display/UI faces are proprietary); a neutral grotesque flattens the voice
169
- font-mono: JetBrains Mono, ui-monospace, SFMono-Regular, monospace # derived: corpus is silent on mono; a neutral operator monospace for IDs, codes, log lines
170
- font-weight-normal: 400
171
- font-weight-strong: 600 # derived: brand runs 700 on buttons/display; operator emphasis relaxes to 600, reserving the bolder weight for the pill CTA label
172
- heading-tracking: -0.01em # derived: brand tracks display tight-negative (-0.768px at 64px); at operator heading sizes it settles near -0.01em
173
- duration-unit: 50ms # derived: corpus silent on motion; functional operator ramp (50/100/150/250) on the standard easing
174
- duration-fast: 100ms
175
- duration-normal: 150ms
176
- duration-slow: 250ms
177
- ease-default: cubic-bezier(0.4,0,0.2,1)
178
- contrast-boost: 1
179
- icon-stroke: 1.75 # derived: corpus silent on icons; a refined operator stroke one step under lucide's 2
180
- icon-size-base: 16px # derived: standard operator icon size
181
- sidebar-width-expanded: 260px # derived: nods to Slack's real workspace-rail width
182
- sidebar-width-collapsed: 56px # derived: standard icon-rail width
183
- topbar-height: 48px # derived: Slack's compact workspace header character
184
- side-panel-width: 420px # derived: Slack's thread / details panel character
185
- side-panel-width-rich: 640px # derived: content-heavy detail width
186
- modal-width-max: 560px # derived: standard confirmation-modal cap
187
- form-max-width: 640px # derived: standard single-column form width
188
- table-row-height: 40px # derived: comfortable operator row honoring the brand's relaxed rhythm
189
- verbosity: default
190
- feedback: subtle
191
- density-tier: standard # derived: a spacious consumer brand pulled to standard for operator work
192
- product-traits: [collaboration, messaging, inbox, dashboard]
193
- ```
194
-
195
- ```yaml lever-manifest
196
- version: 1
197
- fonts: { sans: "Lato, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, SFMono-Regular, monospace" }
198
- color-tokens:
199
- light:
200
- background: "#ffffff"
201
- foreground: "#1d1d1d"
202
- card: "#ffffff"
203
- card-foreground: "#1d1d1d"
204
- muted: "#f5f3f7" # derived: faint lavender-gray, a whisper of the aubergine family
205
- muted-foreground: "#696969"
206
- border: "#e6e6e6"
207
- input: "#e6e6e6"
208
- ring: "#611f69" # derived: aubergine-press, visible focus outline on light
209
- primary: "#4a154b"
210
- primary-foreground: "#ffffff"
211
- accent: "#f9f0ff"
212
- accent-foreground: "#4a154b"
213
- destructive: "#cc4117"
214
- destructive-foreground: "#ffffff"
215
- success: "#007a5a"
216
- warning: "#d97706" # derived: corpus has no warning hue; a contrast-safe amber for status
217
- popover: "#ffffff"
218
- popover-foreground: "#1d1d1d"
219
- secondary: "#f9f0ff"
220
- secondary-foreground: "#1d1d1d"
221
- chart-1: "#4a154b"
222
- chart-2: "#1264a3"
223
- chart-3: "#007a5a"
224
- chart-4: "#d97706" # derived: amber, extends the palette for chart distinction
225
- chart-5: "#cc4117"
226
- sidebar: "#4a154b"
227
- sidebar-foreground: "#f9f0ff" # derived: warm light lavender text on the aubergine rail
228
- sidebar-primary: "#611f69" # derived: aubergine-press band for the active nav item
229
- sidebar-primary-foreground: "#ffffff"
230
- sidebar-accent: "#592466" # derived: aubergine-tint hover band on the rail
231
- sidebar-accent-foreground: "#ffffff"
232
- sidebar-border: "#3d1140" # derived: a shade below aubergine for a subtle divider on the rail
233
- sidebar-ring: "#d9bdde" # derived: light mauve focus ring, visible on the aubergine rail
234
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
235
- radius-scale: [0, 4, 8, 12, 9999]
236
- shadow-levels: [none, sm, md]
237
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
238
- icons: { family: lucide, stroke: 1.75 }
239
- accent-count: 1
240
- ```