@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
@@ -16,11 +16,10 @@ console, run queue, log stream, dashboard) in OpenCode's language. What carries:
16
16
  depth. What stays behind: the full-bleed dark hero TUI mockup, the 38px display headline, the 96px
17
17
  section rhythm, the block-pixel ASCII wordmark, and the bracket markers used as bullets.
18
18
 
19
- **Monochrome chrome, one held accent.** The chrome is ink-on-cream monochrome; the primary action is a
20
- near-black ink button, not a colored one (the Vercel/Geist dialect), and Apple Blue (`#007aff`) is the
21
- one chromatic accent — reserved, as the source reserves it, for interactive and data signal only. It
22
- reads *light*, so the light-default floor holds. Both machine blocks are fully valued; judgments away
23
- from the brand are annotated `# derived:` where the corpus is silent.
19
+ **Monochrome chrome, one held accent.** The chrome is ink-on-cream monochrome; the primary action is
20
+ a near-black ink button, not a colored one (the Vercel/Geist dialect), and Apple Blue (`#007aff`) is
21
+ the one chromatic accent — reserved, as the source reserves it, for interactive and data signal
22
+ only. It reads *light*, so the light-default floor holds.
24
23
 
25
24
  ## 1 Visual Theme
26
25
 
@@ -35,8 +34,8 @@ surface is a cream canvas seated beside a barely-warmer `sidebar`, separated by
35
34
 
36
35
  ## 2 Color Roles
37
36
 
38
- Light values (the manifest carries hex — the corpus's native format). One chromatic accent — Apple Blue
39
- is the only hue that carries interactive meaning; the primary action is neutral ink; status speaks status.
37
+ Light values. One chromatic accent — Apple Blue is the only hue that carries interactive meaning;
38
+ the primary action is neutral ink; status speaks status.
40
39
 
41
40
  | Role | Value | Allowed where |
42
41
  | --- | --- | --- |
@@ -141,83 +140,3 @@ Directives the emitting agent follows verbatim:
141
140
  - Keep containers sharp (0px) and interactive elements at 4px — that split is the brand's whole geometry.
142
141
  - Depth is hairline, surface, and position — never shadow. Dress terminal, log, and console panels in the dark inlay (`#201d1d`, mono, cream text) — real console chrome, not a light mockup of it.
143
142
  - Keyboard-first: the ink `ring` focus outline is always visible. Leave behind the dark hero TUI mockup, the 38px display, the 96px rhythm, the ASCII wordmark, and the bracket bullets — use real lucide icons.
144
-
145
- ```yaml design-primitives
146
- radius: 4px # source: the single interactive radius (rounded.sm); containers stay sharp at 0
147
- shadow-intensity: 0.1 # derived: source is categorically flat (no drop shadows, "nothing floats"); only a true overlay earns the faintest whisper
148
- border-weight: 1px # source: 1px hairlines carry all separation
149
- density-gap: 0.85 # derived: terminal-native brand reads dense; tighten the base gap
150
- density-inset: 0.85 # derived: matches the dense gap on component insets
151
- font-sans: JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, monospace # derived: source is monospace-everywhere (Berkeley Mono, proprietary); JetBrains Mono is the documented open substitute — the sans slot carries the mono voice too
152
- font-mono: JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, monospace # source: one monospaced face for the whole system
153
- font-weight-normal: 400 # source: body-md is 400
154
- font-weight-strong: 700 # source: headings and display sit at 700 (500 is the medium step)
155
- heading-tracking: 0 # source: letter-spacing is 0 on every role — monospace does not track
156
- duration-unit: 50ms # derived: corpus documents no motion; operator-standard base
157
- duration-fast: 100ms # derived: corpus silent on motion
158
- duration-normal: 150ms # derived: corpus silent on motion
159
- duration-slow: 200ms # derived: snappy, near-instant to match the austere terminal character
160
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on easing; standard functional ease
161
- contrast-boost: 1 # derived: the source's hairline is deliberately faint; hold default rather than thicken the grid
162
- icon-stroke: 2 # derived: the source's icon system is bold ASCII bracket markers; for lucide, a full 2px stroke matches that blocky terminal character
163
- icon-size-base: 16px # source: the body/glyph grid is 16px
164
- sidebar-width-expanded: 248px # derived: marketing source has no app shell; operator-standard rail
165
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
166
- topbar-height: 56px # source: primary-nav height ~56px
167
- side-panel-width: 420px # derived: source has no shell; standard operator detail panel
168
- side-panel-width-rich: 640px # derived: content-heavy detail width
169
- modal-width-max: 480px # derived: source favored narrow ~480px columns; kept tight for the austere brand
170
- form-max-width: 560px # derived: source marketing form column ~480px, widened modestly for operator field density
171
- table-row-height: 36px # derived: dense terminal brand; tighter than the 40px default (source rows sit ~32–36px)
172
- verbosity: compact # derived: manpage-terse brand voice
173
- feedback: minimal # derived: austere, flat, near-motionless system
174
- density-tier: dense # derived: terminal-native brand reads dense
175
- product-traits: [dev-tools, terminal, cli, ai-agent]
176
- ```
177
-
178
- ```yaml lever-manifest
179
- version: 1
180
- fonts: { sans: "JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, monospace", mono: "JetBrains Mono, ui-monospace, SFMono-Regular, Menlo, monospace" }
181
- color-tokens:
182
- light:
183
- background: "#fdfcfc"
184
- foreground: "#201d1d"
185
- card: "#fdfcfc"
186
- card-foreground: "#201d1d"
187
- muted: "#f8f7f7"
188
- muted-foreground: "#646262"
189
- border: "#e0dddd" # derived: solid equivalent of the source's translucent hairline rgba(15,0,0,0.12) flattened over the cream canvas
190
- input: "#e0dddd"
191
- ring: "#201d1d" # source: the focus signal is a flat ink border, no halo (ring == primary)
192
- primary: "#201d1d" # source: the CTA fill is near-black ink, not a color
193
- primary-foreground: "#fdfcfc"
194
- accent: "#f1eeee" # source: surface-card, the warm selected/hover surface — never blue
195
- accent-foreground: "#201d1d"
196
- destructive: "#ff3b30"
197
- destructive-foreground: "#fdfcfc"
198
- success: "#30d158"
199
- warning: "#ff9f0a"
200
- popover: "#fdfcfc"
201
- popover-foreground: "#201d1d"
202
- secondary: "#f8f7f7"
203
- secondary-foreground: "#201d1d"
204
- chart-1: "#007aff" # source: Apple Blue — the one chromatic accent, carrying the primary chart series
205
- chart-2: "#30d158" # source: Apple green
206
- chart-3: "#ff9f0a" # source: Apple amber
207
- chart-4: "#ff3b30" # source: Apple red
208
- chart-5: "#5856d6" # derived: Apple HIG system indigo to complete a 5-hue categorical set (source ships only 4 semantic hues)
209
- sidebar: "#f8f7f7" # derived: barely-warmer step to seat the nav rail; the source forbids heavy gray bands, so kept to the softest surface
210
- sidebar-foreground: "#201d1d"
211
- sidebar-primary: "#007aff" # derived: the active-nav indicator is the one place blue enters persistent chrome (source reserves blue for in-product active/interactive)
212
- sidebar-primary-foreground: "#fdfcfc"
213
- sidebar-accent: "#f1eeee"
214
- sidebar-accent-foreground: "#201d1d"
215
- sidebar-border: "#e0dddd"
216
- sidebar-ring: "#201d1d" # derived: focus in the rail matches the ink ring
217
- spacing-scale: [1, 4, 8, 12, 16, 24, 32, 48]
218
- radius-scale: [0, 4, 9999]
219
- shadow-levels: [none, sm, md]
220
- motion: { durations: [100, 150, 200], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
221
- icons: { family: lucide, stroke: 2 }
222
- accent-count: 1
223
- ```
@@ -7,14 +7,13 @@ sourced: 2026-07-04
7
7
 
8
8
  # PostHog — operator reading
9
9
 
10
- The operator distillation of PostHog's engineering-sketchbook brand. The source is a marketing system:
11
- a warm cream canvas dotted with hand-drawn hedgehog mascots, hero-scale display type, and a single
12
- loud yellow-orange CTA pill. This entry keeps the temperature and voice that make it PostHog — the
13
- cream canvas, the olive ink, the one yellow accent, IBM Plex Sans, the flat hairline depth, the dark
14
- code island — and leaves the decoration behind: no mascots, no 36px/800 hero type, no pastel callout
15
- bands, no pill CTAs on operator chrome. What remains is a warm, calm, flat dev-tools console. Both
16
- machine blocks are fully valued (no `hint:`); every judgment away from the marketing brand is annotated
17
- `# derived:` where it lands.
10
+ The operator distillation of PostHog's engineering-sketchbook brand. The source is a marketing
11
+ system: a warm cream canvas dotted with hand-drawn hedgehog mascots, hero-scale display type, and a
12
+ single loud yellow-orange CTA pill. This entry keeps the temperature and voice that make it PostHog
13
+ — the cream canvas, the olive ink, the one yellow accent, IBM Plex Sans, the flat hairline depth,
14
+ the dark code island — and leaves the decoration behind: no mascots, no 36px/800 hero type, no
15
+ pastel callout bands, no pill CTAs on operator chrome. What remains is a warm, calm, flat dev-tools
16
+ console.
18
17
 
19
18
  ## 1 Visual Theme
20
19
 
@@ -28,9 +27,8 @@ archetype — dense-capable, warm, not cramped.
28
27
 
29
28
  ## 2 Color Roles
30
29
 
31
- Light values first (the manifest carries the exact hex). One loud accent — `primary` yellow is the only
32
- saturated hue that carries a call to action; blue is a quiet functional signal; status hues speak only
33
- status.
30
+ Light values first. One loud accent — `primary` yellow is the only saturated hue that carries a call
31
+ to action; blue is a quiet functional signal; status hues speak only status.
34
32
 
35
33
  | Role | Value | Allowed where |
36
34
  | --- | --- | --- |
@@ -152,83 +150,3 @@ Directives the emitting agent follows verbatim:
152
150
  - Blue is links and focus only; green / red / amber are status only; one loud color (yellow).
153
151
  - Leave behind: hedgehog mascots, 36px / 800 hero type, pill CTAs on chrome, pastel callout bands, the
154
152
  80px marketing section rhythm.
155
-
156
- ```yaml design-primitives
157
- radius: 6px # brand dominant card/button radius (rounded.md)
158
- shadow-intensity: 0.3 # derived: brand is flat with zero drop shadows; low value lifts only true overlays
159
- border-weight: 1px
160
- density-gap: 1
161
- density-inset: 1
162
- font-sans: IBM Plex Sans, system-ui, sans-serif # brand primary face across every role
163
- font-mono: Source Code Pro, ui-monospace, monospace # brand display monospace for code, IDs, logs
164
- font-weight-normal: 400
165
- font-weight-strong: 600 # derived: brand builds hierarchy from weight; body-strong/nav is 600; the 700-800 display tier is marketing-scale and stays behind
166
- heading-tracking: -0.02em # derived from brand display tracking (-0.5/-0.6px at 21-24px)
167
- duration-unit: 50ms # derived: corpus silent on motion; standard operator base
168
- duration-fast: 100ms # derived: corpus silent on motion
169
- duration-normal: 150ms # derived: corpus silent on motion
170
- duration-slow: 250ms # derived: corpus silent on motion
171
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on motion; standard functional ease
172
- contrast-boost: 1
173
- icon-stroke: 1.75 # derived: brand uses rounded outline icons; 1.75 is the refined operator stroke
174
- icon-size-base: 16px # derived: standard operator icon size
175
- sidebar-width-expanded: 240px # brand doc-sidebar width
176
- sidebar-width-collapsed: 56px # derived: standard icon rail
177
- topbar-height: 56px # brand primary-nav height
178
- side-panel-width: 420px # derived: corpus has no side panel; standard operator width
179
- side-panel-width-rich: 640px # derived: near the brand's ~720px article column, tuned for a rich panel
180
- modal-width-max: 560px # derived: standard operator modal cap
181
- form-max-width: 640px # derived: narrower than the brand's ~720px article for operator forms
182
- table-row-height: 40px # derived: brand button height is 40px; standard operator row
183
- verbosity: default
184
- feedback: subtle # derived: brand is calm and flat with no loud motion
185
- density-tier: standard # derived: not terminal-dense, not consumer-spacious; a warm readable operator default
186
- product-traits: [dev-tools, analytics, dashboard]
187
- ```
188
-
189
- ```yaml lever-manifest
190
- version: 1
191
- fonts: { sans: "IBM Plex Sans, system-ui, sans-serif", mono: "Source Code Pro, ui-monospace, monospace" }
192
- color-tokens:
193
- light:
194
- background: "#eeefe9"
195
- foreground: "#23251d"
196
- card: "#ffffff"
197
- card-foreground: "#23251d"
198
- muted: "#e5e7e0"
199
- muted-foreground: "#6c6e63"
200
- border: "#bfc1b7"
201
- input: "#bfc1b7"
202
- ring: "#2c84e0"
203
- primary: "#f7a501"
204
- primary-foreground: "#23251d"
205
- accent: "#f7eccf" # derived: pale wash of the primary yellow for row/nav selection warmth
206
- accent-foreground: "#23251d"
207
- destructive: "#cd4239"
208
- destructive-foreground: "#ffffff"
209
- success: "#2c8c66"
210
- warning: "#b17816" # derived: brand gold-tone (primary-active), kept deeper than the CTA yellow so warning ≠ accent
211
- popover: "#ffffff"
212
- popover-foreground: "#23251d"
213
- secondary: "#e5e7e0"
214
- secondary-foreground: "#23251d"
215
- chart-1: "#f7a501"
216
- chart-2: "#2c84e0"
217
- chart-3: "#2c8c66"
218
- chart-4: "#7c44a6"
219
- chart-5: "#cd4239"
220
- sidebar: "#e5e7e0" # derived: one step deeper than the cream canvas so the nav rail reads as chrome
221
- sidebar-foreground: "#23251d"
222
- sidebar-primary: "#f7a501"
223
- sidebar-primary-foreground: "#23251d"
224
- sidebar-accent: "#ffffff" # derived: brand signals active nav by lifting to a white card
225
- sidebar-accent-foreground: "#23251d"
226
- sidebar-border: "#bfc1b7"
227
- sidebar-ring: "#2c84e0"
228
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
229
- radius-scale: [0, 2, 4, 6, 8, 9999]
230
- shadow-levels: [none, sm, md]
231
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
232
- icons: { family: lucide, stroke: 1.75 }
233
- accent-count: 1
234
- ```
@@ -7,12 +7,10 @@ sourced: 2026-07-04
7
7
 
8
8
  # Raycast — operator reading of a categorically-dark developer system
9
9
 
10
- Raycast is the rare brand where the doctrine's light default yields: it is *categorically dark* — one
11
- continuous near-black canvas with no light variant in the source. This entry carries that identity onto
12
- operator surfaces: the chrome of Raycast's own command palette (near-black surfaces, hairline borders,
13
- a single white action, ss03-Inter), with the marketing theatre left behind. Because the brand is
14
- dark-only, the manifest's single color map holds the near-black surfaces directly — brand tokens win
15
- over the light-default floor, and there is no light variant. Corpus-silent judgments are `# derived:`.
10
+ Raycast is the rare brand where the doctrine's light default yields: it is *categorically dark* —
11
+ one continuous near-black canvas with no light variant in the source. This entry carries that
12
+ identity onto operator surfaces: the chrome of Raycast's own command palette (near-black surfaces,
13
+ hairline borders, a single white action, ss03-Inter), with the marketing theatre left behind.
16
14
 
17
15
  ## 1 Visual Theme
18
16
 
@@ -25,8 +23,7 @@ white. Density is `dense` — Raycast's command-palette chrome runs tight, and o
25
23
 
26
24
  ## 2 Color Roles
27
25
 
28
- Dark is native — the manifest's one color map holds these near-black values directly. One monochrome
29
- action — white — carries every primary; the saturated hues speak only status.
26
+ One monochrome action — white — carries every primary; the saturated hues speak only status.
30
27
 
31
28
  | Role | Value | Allowed where |
32
29
  | --- | --- | --- |
@@ -138,83 +135,3 @@ The operator sweep is 375 / 768 / 1024 / 1440.
138
135
  tight 6–10px radius, ss03-Inter, positive heading tracking, keycap shortcut glyphs.
139
136
  - **Stays behind:** the red diagonal-stripe hero gradient, hero-scale display (56–64px), full-bleed
140
137
  product-screenshot heroes, the 96px marketing section rhythm.
141
-
142
- ```yaml design-primitives
143
- radius: 8px # rationale: rounded.md (8px) is Raycast's standard button/input/card radius; scale still offers 6/10/16
144
- shadow-intensity: 0 # derived: the system has no drop-shadow elevation at all — depth is the surface ladder
145
- border-weight: 1px
146
- density-gap: 0.85 # derived: command-palette chrome is tight; the operator adaptation runs dense
147
- density-inset: 0.85 # derived: same dense bias on component insets
148
- font-sans: Inter, system-ui, sans-serif # rationale: Inter is the whole system's face; enable ss03 globally (see §3)
149
- font-mono: JetBrains Mono, ui-monospace, monospace # derived: corpus names JetBrains/Geist Mono for code chips; operator IDs and logs need a mono — JetBrains chosen
150
- font-weight-normal: 400
151
- font-weight-strong: 500 # derived: Raycast headings and emphasis sit at 500 — the light weight is signature (display reaches 600, but hero display stays behind)
152
- heading-tracking: 0.01em # derived: Raycast opens type with positive tracking (+0.2px on headings) rather than tightening — rare and signature
153
- duration-unit: 50ms # derived: corpus documents no motion; standard operator base
154
- duration-fast: 100ms # derived: corpus silent on motion
155
- duration-normal: 150ms # derived: corpus silent on motion
156
- duration-slow: 250ms # derived: corpus silent on motion
157
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent; standard functional ease
158
- contrast-boost: 1.05 # derived: hairlines on near-black read faint; a small boost keeps the dense table grid legible
159
- icon-stroke: 1.75 # derived: refined operator stroke matching Raycast's fine hairline aesthetic (one step under lucide's 2)
160
- icon-size-base: 16px # derived: standard operator icon size; corpus silent
161
- sidebar-width-expanded: 240px # derived: operator shell dim (corpus is marketing-nav only); a tight rail for Raycast's compact character
162
- sidebar-width-collapsed: 56px # derived: icon rail; echoes the corpus 56px nav height
163
- topbar-height: 56px # rationale: primary-nav height in the corpus is 56px
164
- side-panel-width: 420px # derived: standard operator side panel; corpus silent
165
- side-panel-width-rich: 640px # derived: content-heavy side panel; corpus silent
166
- modal-width-max: 560px # derived: modest confirmation modal; corpus silent
167
- form-max-width: 640px # derived: standard operator form column; corpus silent
168
- table-row-height: 36px # derived: dense, echoing the tight command-palette row (6px 10px padding)
169
- verbosity: compact # derived: Raycast's UI is spare and keyboard-first — minimal chrome copy
170
- feedback: subtle
171
- density-tier: dense
172
- product-traits: [dev-tools, command-palette, launcher, productivity]
173
- ```
174
-
175
- ```yaml lever-manifest
176
- version: 1
177
- fonts: { sans: "Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, monospace" }
178
- color-tokens:
179
- light: # dark-native brand: the single required map carries Raycast's near-black surfaces directly — brand tokens win over the light-default floor; there is no separate light variant
180
- background: "#07080a"
181
- foreground: "#f4f4f6"
182
- card: "#0d0d0d"
183
- card-foreground: "#f4f4f6"
184
- muted: "#101111"
185
- muted-foreground: "#9c9c9d"
186
- border: "#242728"
187
- input: "#242728"
188
- ring: "#ffffff"
189
- primary: "#ffffff"
190
- primary-foreground: "#000000"
191
- accent: "#121212"
192
- accent-foreground: "#ffffff"
193
- destructive: "#ff6161"
194
- destructive-foreground: "#07080a" # derived: near-black text is legible on the bright coral; white on #ff6161 fails contrast
195
- success: "#59d499"
196
- warning: "#ffc533"
197
- popover: "#0d0d0d"
198
- popover-foreground: "#f4f4f6"
199
- secondary: "#101111"
200
- secondary-foreground: "#f4f4f6"
201
- chart-1: "#57c1ff"
202
- chart-2: "#59d499"
203
- chart-3: "#ffc533"
204
- chart-4: "#ff6161"
205
- chart-5: "#b48cff" # derived: fifth categorical hue — corpus gives four accents; a cool violet completes the set on near-black
206
- sidebar: "#07080a"
207
- sidebar-foreground: "#cdcdcd"
208
- sidebar-primary: "#ffffff"
209
- sidebar-primary-foreground: "#000000"
210
- sidebar-accent: "#101111"
211
- sidebar-accent-foreground: "#ffffff"
212
- sidebar-border: "#242728"
213
- sidebar-ring: "#ffffff"
214
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
215
- radius-scale: [0, 4, 6, 8, 10, 16, 9999]
216
- shadow-levels: [none, sm]
217
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
218
- icons: { family: lucide, stroke: 1.75 }
219
- accent-count: 1
220
- ```
@@ -7,13 +7,13 @@ sourced: 2026-07-04
7
7
 
8
8
  # Replicate — the warm-cream operator reading
9
9
 
10
- Replicate's public surfaces read as an ML lab notebook crossed with a print zine: a warm cream canvas,
11
- ink-dark type, dark monospace code wells, and one hot-orange accent used like a stamp. This entry is the
12
- *operator* reading of that brand — the same warmth and single accent, carried onto a CRM, a queue, or a
13
- dashboard. The hero-scale display grotesque, full-bleed orange bands, the gradient mesh, and contributor
14
- mosaics stay behind as marketing furniture. What carries: the cream-not-white temperature, the ink
15
- foreground, the scarce orange, the soft-rounded corners, and the strict font lanes. Both machine blocks
16
- are fully valued; every judgment away from the marketing brand is annotated `# derived:` where it lands.
10
+ Replicate's public surfaces read as an ML lab notebook crossed with a print zine: a warm cream
11
+ canvas, ink-dark type, dark monospace code wells, and one hot-orange accent used like a stamp. This
12
+ entry is the *operator* reading of that brand — the same warmth and single accent, carried onto a
13
+ CRM, a queue, or a dashboard. The hero-scale display grotesque, full-bleed orange bands, the
14
+ gradient mesh, and contributor mosaics stay behind as marketing furniture. What carries: the
15
+ cream-not-white temperature, the ink foreground, the scarce orange, the soft-rounded corners, and
16
+ the strict font lanes.
17
17
 
18
18
  ## 1 Visual Theme
19
19
 
@@ -27,8 +27,8 @@ editorial warmth wants a little air, operator restraint keeps it from sprawling.
27
27
 
28
28
  ## 2 Color Roles
29
29
 
30
- Light values first (the manifest carries the exact hex). One accent — `primary` is the only chromatic hue
31
- that carries meaning; status and focus hues speak only their function.
30
+ Light values first. One accent — `primary` is the only chromatic hue that carries meaning; status
31
+ and focus hues speak only their function.
32
32
 
33
33
  | Role | Value | Allowed where |
34
34
  | --- | --- | --- |
@@ -138,83 +138,3 @@ Directives the emitting agent follows verbatim:
138
138
  flat — warm surface swaps and hairlines before shadow; reach past a hairline only for a real overlay.
139
139
  - Leave the marketing furniture behind: no hero grotesque, no full-bleed orange bands, no gradient mesh, no
140
140
  contributor mosaics, no pill CTAs. Palette, temperature, soft corners, and font lanes carry; the rest does not.
141
-
142
- ```yaml design-primitives
143
- radius: 10px # derived: brand's soft "no sharp corners" character — the 10px card radius becomes the operator base; the full-pill 9999 marketing treatment stays behind (kept in scale for badges)
144
- shadow-intensity: 0.3 # derived: elevation is color-blocking, not shadow; a soft drop only lifts a floating thumbnail — keep shadow faint
145
- border-weight: 1px
146
- density-gap: 1
147
- density-inset: 1
148
- font-sans: basier-square, Geist, Inter, system-ui, sans-serif # rationale: brand UI/body family with the corpus-named substitutes; the hero display grotesque rb-freigeist-neue is hero-scale and stays behind
149
- font-mono: JetBrains Mono, ui-monospace, SFMono-Regular, monospace # brand code family
150
- font-weight-normal: 400
151
- font-weight-strong: 600
152
- heading-tracking: -0.015em # derived: brand tightens type with negative tracking scaling with size; basier-square headings track -0.35px at 24px ≈ -0.015em
153
- duration-unit: 50ms # derived: corpus documents no motion; operator functional base
154
- duration-fast: 100ms # derived: functional operator motion
155
- duration-normal: 150ms # derived
156
- duration-slow: 250ms # derived
157
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: standard functional easing
158
- contrast-boost: 1 # derived: ink #202020 on cream is high-contrast; the solid hairline already carries the grid
159
- icon-stroke: 1.75 # derived: corpus uses illustration, not an icon set; 1.75 suits the friendly-precision character
160
- icon-size-base: 16px # derived
161
- sidebar-width-expanded: 248px # derived: operator shell (corpus documents the marketing nav only)
162
- sidebar-width-collapsed: 56px # derived
163
- topbar-height: 60px # brand nav-bar height, carried
164
- side-panel-width: 420px # derived
165
- side-panel-width-rich: 640px # derived
166
- modal-width-max: 560px # derived
167
- form-max-width: 640px # derived
168
- table-row-height: 44px # brand's 44px button/touch rhythm carried to rows for an airier operator read
169
- verbosity: default
170
- feedback: subtle
171
- density-tier: standard # derived: editorial warmth wants air, operator restraint keeps it from spacious
172
- product-traits: [dev-tools, ml-platform, dashboard, api-console]
173
- ```
174
-
175
- ```yaml lever-manifest
176
- version: 1
177
- fonts: { sans: "basier-square, Geist, Inter, system-ui, sans-serif", mono: "JetBrains Mono, ui-monospace, SFMono-Regular, monospace" }
178
- color-tokens:
179
- light:
180
- background: "#f9f7f3"
181
- foreground: "#202020"
182
- card: "#ffffff"
183
- card-foreground: "#202020"
184
- muted: "#f3f0e8"
185
- muted-foreground: "#575757"
186
- border: "#dfddda" # derived: solid equivalent of brand hairline rgba(32,32,32,0.12) blended over the cream canvas
187
- input: "#dfddda" # derived: same hairline, field edges
188
- ring: "#3b82f6" # brand focus-blue rgba(59,130,246,0.5) flattened to its base hue — functional, not the accent
189
- primary: "#ea2804"
190
- primary-foreground: "#ffffff"
191
- accent: "#fbe9e3" # derived: pale wash of the orange primary for selected/hover rows and nav
192
- accent-foreground: "#c01f00" # brand pressed-orange, legible on the pale peach
193
- destructive: "#b3261e" # derived: a deeper crimson-leaning red, kept distinct from the red-orange primary so delete never reads as the CTA
194
- destructive-foreground: "#ffffff"
195
- success: "#2b9a66"
196
- warning: "#b7791f" # derived: a muted gold amber, pulled yellower than the primary so warning reads apart from the orange accent
197
- popover: "#ffffff"
198
- popover-foreground: "#202020"
199
- secondary: "#f3f0e8"
200
- secondary-foreground: "#202020"
201
- chart-1: "#ea2804"
202
- chart-2: "#2b9a66"
203
- chart-3: "#b7791f" # derived: gold, third categorical hue in the warm ramp
204
- chart-4: "#3b82f6" # derived: focus-blue reused as a cool categorical for contrast
205
- chart-5: "#575757" # derived: charcoal neutral series
206
- sidebar: "#f3f0e8" # brand bone — the deeper cream, distinguishing the rail from the canvas
207
- sidebar-foreground: "#202020"
208
- sidebar-primary: "#ea2804"
209
- sidebar-primary-foreground: "#ffffff"
210
- sidebar-accent: "#fbe9e3"
211
- sidebar-accent-foreground: "#c01f00"
212
- sidebar-border: "#dfddda"
213
- sidebar-ring: "#3b82f6"
214
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64, 96]
215
- radius-scale: [0, 4, 6, 10, 16, 9999]
216
- shadow-levels: [none, sm, md]
217
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
218
- icons: { family: lucide, stroke: 1.75 }
219
- accent-count: 1
220
- ```
@@ -18,10 +18,10 @@ Inter UI voice, and the six atmospheric accents repurposed as chart/status hues.
18
18
  76–96px Domaine Display serif hero, ABC Favorit marketing body, the full-section glow washes, the
19
19
  96–128px section bands, and the print-magazine email-mockup insets.
20
20
 
21
- **Categorically dark, and truly black.** Two doctrine-floor overrides are legitimate here and recorded
22
- plainly: the brand is dark by default (`data-theme="dark"` is the signature; a derived light daytime
23
- floor ships alongside per schema), and its canvas is exactly `#000000`, never a near-black. Both blocks
24
- value every token in light *and* dark; judgments away from the brand are annotated `# derived:`.
21
+ **Categorically dark, and truly black.** Two doctrine-floor overrides are legitimate here and
22
+ recorded plainly: the brand is dark by default (`data-theme="dark"` is the signature; a derived
23
+ light daytime floor ships alongside per schema), and its canvas is exactly `#000000`, never a
24
+ near-black.
25
25
 
26
26
  ## 1 Visual Theme
27
27
 
@@ -168,118 +168,3 @@ Directives the emitting agent follows verbatim:
168
168
  border thickened to ink. Detail and edit go in the side panel beside the work, never a modal.
169
169
  - Keep the UI on Inter; leave behind the Domaine Display serif hero, ABC Favorit body, the full-section
170
170
  glows, the 96–128px section bands, and the email-mockup insets.
171
-
172
- ```yaml design-primitives
173
- radius: 8px # corpus: buttons/inputs at rounded.md (8px); cards and code wells step to 12px (lg), 16px large; pill is badges-only
174
- shadow-intensity: 0.1 # derived: corpus has no drop-shadow language ("hairlines carry the role drop shadows would"); only the light floor's overlays earn the faintest lift
175
- border-weight: 1px # corpus: all borders are 1px translucent-white hairlines
176
- density-gap: 1 # derived: marketing is spacious-editorial (96-128px bands); operator reads down to an honest standard tier, breathing carried by shell dims not the grid
177
- density-inset: 1 # derived: matches density-gap for coherent component insets
178
- font-sans: Inter, system-ui, sans-serif # corpus: Inter is the documented open-source UI face; ABC Favorit (marketing body) and Domaine Display (hero serif) stay behind
179
- font-mono: Geist Mono, ui-monospace, SFMono-Regular, monospace # corpus: Geist Mono in every code well
180
- font-weight-normal: 400 # corpus: body weight stays at 400; hierarchy is family/size change, never a weight bump
181
- font-weight-strong: 500 # corpus: headings and button labels at 500; the brand never bolds body to 600
182
- heading-tracking: -0.015em # corpus: negative letter-spacing on headings (heading-md -0.4px at 24px) scaled to em; the -0.96px hero display tracking stays behind
183
- duration-unit: 50ms # derived: corpus documents no motion (marketing site); operator-standard functional base
184
- duration-fast: 100ms # derived: corpus silent on motion; functional tempo
185
- duration-normal: 150ms # derived: corpus silent on motion; standard functional tempo
186
- duration-slow: 250ms # derived: corpus silent on motion; overlay/panel transition
187
- ease-default: cubic-bezier(0.4,0,0.2,1) # derived: corpus silent on easing; standard functional ease
188
- contrast-boost: 1 # derived: the translucent-white hairlines are the intentional depth language; the structural 14% border reads on black without a boost
189
- icon-stroke: 1.5 # derived: corpus silent on icons; a fine precise stroke suits the minimal editorial-technical feel
190
- icon-size-base: 16px # derived: corpus silent on icon size; operator standard
191
- sidebar-width-expanded: 248px # derived: corpus has no app shell (marketing nav only); standard expanded rail
192
- sidebar-width-collapsed: 56px # derived: standard operator icon rail
193
- topbar-height: 64px # corpus: nav-bar height 64px (the brand's nav height)
194
- side-panel-width: 420px # derived: corpus has no shell; standard detail-panel width
195
- side-panel-width-rich: 640px # corpus: email-mockup inset max width 640px, reused for the content-heavy panel
196
- modal-width-max: 560px # derived: corpus's CTA/bands are full-bleed marketing; operator confirmation cap
197
- form-max-width: 640px # derived: corpus max content ~1200px is marketing; readable single-column form cap
198
- table-row-height: 40px # derived: technical dark grid at standard density; dense archetypes step down via the surface catalog
199
- verbosity: default
200
- feedback: subtle # derived: the brand is quiet and precise (pressed/active states barely documented); functional present feedback, not austere silence
201
- density-tier: standard # derived: a spacious-editorial marketing brand read down to an honest, dense-capable operator tier
202
- product-traits: [dev-tools, email-api, dashboard, log-stream, admin]
203
- ```
204
-
205
- ```yaml lever-manifest
206
- version: 1
207
- fonts: { sans: "Inter, system-ui, sans-serif", mono: "Geist Mono, ui-monospace, SFMono-Regular, monospace" }
208
- color-tokens:
209
- light:
210
- background: "#ffffff" # derived: no documented light mode; daytime inversion of the black canvas
211
- foreground: "#000000" # corpus: on-light ink is #000000
212
- card: "#ffffff"
213
- card-foreground: "#000000"
214
- muted: "#f1f7fe" # corpus: surface-light, the one documented light-tinted off-white
215
- muted-foreground: "#5b6066" # derived: mid cool gray for secondary text on white (corpus on-light-mute is navy-tinted)
216
- border: "#e4e8ee" # derived: light cool hairline
217
- input: "#e4e8ee"
218
- ring: "#000000" # derived: focus thickens to ink; on light that ink is black
219
- primary: "#000000" # derived: the white-hot primary inverts to near-black — the highest-contrast solid anchor on white
220
- primary-foreground: "#ffffff"
221
- accent: "#eef4fc" # derived: cool light selection wash, a tint of muted; never colored
222
- accent-foreground: "#000000"
223
- destructive: "#e11d3f" # derived: brand red #ff2047 darkened for white-bg contrast
224
- destructive-foreground: "#ffffff"
225
- success: "#0a9d63" # derived: brand neon green #11ff99 darkened for readable status on white
226
- warning: "#b8790a" # derived: brand yellow #ffc53d darkened to amber for white-bg contrast
227
- popover: "#ffffff"
228
- popover-foreground: "#000000"
229
- secondary: "#f1f7fe"
230
- secondary-foreground: "#000000"
231
- chart-1: "#0075ff" # derived: brand accent-blue for light readability (corpus glow rgba(0,117,255))
232
- chart-2: "#0a9d63" # derived: brand green darkened for light
233
- chart-3: "#e06600" # derived: brand orange #ff801f darkened for light
234
- chart-4: "#c2870a" # derived: brand yellow darkened for light
235
- chart-5: "#e11d3f" # derived: brand red darkened for light
236
- sidebar: "#f7f9fc" # derived: faint cool tint below the white canvas so the rail reads as chrome
237
- sidebar-foreground: "#000000"
238
- sidebar-primary: "#000000"
239
- sidebar-primary-foreground: "#ffffff"
240
- sidebar-accent: "#eef4fc"
241
- sidebar-accent-foreground: "#000000"
242
- sidebar-border: "#e4e8ee"
243
- sidebar-ring: "#000000"
244
- dark:
245
- background: "#000000" # corpus: canvas is true black #000000, never a near-black — the brand's hard rule
246
- foreground: "#fcfdff" # corpus: ink, faintly blue-cool off-white
247
- card: "#0a0a0c" # corpus: surface-card, one luminance step above canvas
248
- card-foreground: "#fcfdff"
249
- muted: "#101012" # corpus: surface-elevated — subtle fills and hover, a step above card
250
- muted-foreground: "#a1a4a5" # corpus: mute, supporting text and inactive labels
251
- border: "rgba(255,255,255,0.14)" # corpus: hairline-strong, the structural border on cards, code wells, inputs
252
- input: "rgba(255,255,255,0.14)"
253
- ring: "#fcfdff" # corpus: focus thickens the border to ink; no separate ring colour
254
- primary: "#fcfdff" # corpus: the white pill is the brightest pixel and the one accent
255
- primary-foreground: "#000000" # corpus: black label on the white primary
256
- accent: "rgba(255,255,255,0.09)" # derived: translucent-white selection wash (the brand's depth idiom); neutral, never colored
257
- accent-foreground: "#fcfdff"
258
- destructive: "#ff2047" # corpus: accent-red, inline error red
259
- destructive-foreground: "#fcfdff"
260
- success: "#11ff99" # corpus: accent-green, status dots
261
- warning: "#ffc53d" # corpus: accent-yellow
262
- popover: "#101012" # corpus: surface-elevated, overlays and menus
263
- popover-foreground: "#fcfdff"
264
- secondary: "#101012" # corpus: button-ghost surface is surface-elevated
265
- secondary-foreground: "#fcfdff"
266
- chart-1: "#3b9eff" # corpus: accent-blue
267
- chart-2: "#11ff99" # corpus: accent-green
268
- chart-3: "#ff801f" # corpus: accent-orange
269
- chart-4: "#ffc53d" # corpus: accent-yellow
270
- chart-5: "#ff2047" # corpus: accent-red
271
- sidebar: "#000000" # corpus: nav-bar background is canvas
272
- sidebar-foreground: "rgba(252,253,255,0.86)" # corpus: nav-bar text is body off-white at 86%
273
- sidebar-primary: "#fcfdff" # corpus: the white accent in nav
274
- sidebar-primary-foreground: "#000000"
275
- sidebar-accent: "rgba(255,255,255,0.09)" # derived: selected-nav wash, matches accent
276
- sidebar-accent-foreground: "#fcfdff"
277
- sidebar-border: "rgba(255,255,255,0.06)" # corpus: hairline, the nav's soft bottom border
278
- sidebar-ring: "#fcfdff"
279
- spacing-scale: [2, 4, 8, 12, 16, 24, 32, 48, 64]
280
- radius-scale: [0, 4, 6, 8, 12, 16, 9999]
281
- shadow-levels: [none, sm, md]
282
- motion: { durations: [100, 150, 250], easings: ["cubic-bezier(0.4,0,0.2,1)"] }
283
- icons: { family: lucide, stroke: 1.5 }
284
- accent-count: 1
285
- ```