@nurix/etna 0.19.42 → 0.19.44

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 (378) hide show
  1. package/bin/etna.js +47 -6
  2. package/data/harness-index.json +5 -1
  3. package/data/harnesses/apollo/.prettierignore +29 -0
  4. package/data/harnesses/apollo/.prettierrc.json +3 -0
  5. package/data/harnesses/apollo/.vscode/settings.json +19 -0
  6. package/data/harnesses/apollo/CLAUDE.md +162 -0
  7. package/data/harnesses/apollo/agents/brainstorm.md +144 -0
  8. package/data/harnesses/apollo/agents/change-review.md +251 -0
  9. package/data/harnesses/apollo/agents/lld-mode.md +56 -0
  10. package/data/harnesses/apollo/agents/maintenance.md +231 -0
  11. package/data/harnesses/apollo/agents/performance-review.md +223 -0
  12. package/data/harnesses/apollo/agents/retro.md +46 -0
  13. package/data/harnesses/apollo/codex/agents/brainstorm.toml +142 -0
  14. package/data/harnesses/apollo/codex/agents/change-review.toml +249 -0
  15. package/data/harnesses/apollo/codex/agents/lld-mode.toml +52 -0
  16. package/data/harnesses/apollo/codex/agents/maintenance.toml +228 -0
  17. package/data/harnesses/apollo/codex/agents/performance-review.toml +222 -0
  18. package/data/harnesses/apollo/codex/agents/retro.toml +45 -0
  19. package/data/harnesses/apollo/docs/README.md +28 -0
  20. package/data/harnesses/apollo/docs/history/CHANGELOG.md +26 -0
  21. package/data/harnesses/apollo/docs/history/backlog.md +19 -0
  22. package/data/harnesses/apollo/docs/memory/main.md +15 -0
  23. package/data/harnesses/apollo/docs/structure.md +54 -0
  24. package/data/harnesses/apollo/harness.json +18 -0
  25. package/data/harnesses/{code → apollo}/hooks/generate-ownership-index.mjs +1 -1
  26. package/data/harnesses/apollo/hooks/hooks.json +16 -0
  27. package/data/harnesses/apollo/rules/changelog.md +19 -0
  28. package/data/harnesses/apollo/rules/database.md +123 -0
  29. package/data/harnesses/apollo/rules/express.md +33 -0
  30. package/data/harnesses/apollo/rules/frontend.md +32 -0
  31. package/data/harnesses/apollo/rules/general.md +62 -0
  32. package/data/harnesses/apollo/rules/nomenclature.md +34 -0
  33. package/data/harnesses/apollo/rules/pnpm.md +57 -0
  34. package/data/harnesses/apollo/rules/testing.md +23 -0
  35. package/data/harnesses/apollo/rules/verification.md +67 -0
  36. package/data/harnesses/apollo/skills/boundary/SKILL.md +71 -0
  37. package/data/harnesses/apollo/skills/boundary/references/index.md +16 -0
  38. package/data/harnesses/apollo/skills/boundary/references/mechanisms.md +99 -0
  39. package/data/harnesses/apollo/skills/boundary/references/packs/async-messaging.md +81 -0
  40. package/data/harnesses/apollo/skills/boundary/references/packs/auth.md +93 -0
  41. package/data/harnesses/apollo/skills/boundary/references/packs/build-config-runtime.md +93 -0
  42. package/data/harnesses/apollo/skills/boundary/references/packs/cloudflare.md +93 -0
  43. package/data/harnesses/apollo/skills/boundary/references/packs/frontend.md +93 -0
  44. package/data/harnesses/apollo/skills/boundary/references/packs/generic-tail.md +55 -0
  45. package/data/harnesses/apollo/skills/boundary/references/packs/persistence.md +93 -0
  46. package/data/harnesses/apollo/skills/boundary/references/packs/wire-api.md +87 -0
  47. package/data/harnesses/apollo/skills/brainstorm/README.md +56 -0
  48. package/data/harnesses/apollo/skills/brainstorm/SKILL.md +173 -0
  49. package/data/harnesses/apollo/skills/brainstorm/references/doctrine.md +98 -0
  50. package/data/harnesses/apollo/skills/brainstorm/references/harvest.md +86 -0
  51. package/data/harnesses/apollo/skills/brainstorm/references/session-schema.md +186 -0
  52. package/data/harnesses/apollo/skills/brainstorm/scripts/detector.mjs +460 -0
  53. package/data/harnesses/apollo/skills/design/SKILL.md +100 -0
  54. package/data/harnesses/apollo/skills/design/components/charts.md +76 -0
  55. package/data/harnesses/apollo/skills/design/components/collections.md +132 -0
  56. package/data/harnesses/apollo/skills/design/components/feedback.md +47 -0
  57. package/data/harnesses/apollo/skills/design/components/hooks.md +35 -0
  58. package/data/harnesses/apollo/skills/design/components/index.md +143 -0
  59. package/data/harnesses/apollo/skills/design/components/inputs.md +327 -0
  60. package/data/harnesses/apollo/skills/design/components/layout.md +52 -0
  61. package/data/harnesses/apollo/skills/design/components/media.md +66 -0
  62. package/data/harnesses/apollo/skills/design/components/motion.md +82 -0
  63. package/data/harnesses/apollo/skills/design/components/navigation.md +29 -0
  64. package/data/harnesses/apollo/skills/design/components/overlays.md +72 -0
  65. package/data/harnesses/apollo/skills/design/components/setup.md +40 -0
  66. package/data/harnesses/apollo/skills/design/components/typography.md +46 -0
  67. package/data/harnesses/apollo/skills/design/components/utils.md +37 -0
  68. package/data/harnesses/apollo/skills/design/data/blueprints/browse.md +38 -0
  69. package/data/harnesses/apollo/skills/design/data/blueprints/creation-flow.md +38 -0
  70. package/data/harnesses/apollo/skills/design/data/blueprints/dashboard.md +38 -0
  71. package/data/harnesses/apollo/skills/design/data/blueprints/grid.md +38 -0
  72. package/data/harnesses/apollo/skills/design/data/blueprints/queue.md +38 -0
  73. package/data/harnesses/apollo/skills/design/data/blueprints/record-detail.md +38 -0
  74. package/data/harnesses/apollo/skills/design/data/blueprints/settings.md +38 -0
  75. package/data/harnesses/apollo/skills/design/data/chart-styling/Readme.md +33 -0
  76. package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-accessible-alert-semantic.md +19 -0
  77. package/data/harnesses/apollo/skills/design/data/chart-styling/carbon-monochrome-sequential-trend.md +19 -0
  78. package/data/harnesses/apollo/skills/design/data/chart-styling/datadog-classic-six-aligned.md +19 -0
  79. package/data/harnesses/apollo/skills/design/data/chart-styling/datawrapper-tiered-gray-hierarchy.md +19 -0
  80. package/data/harnesses/apollo/skills/design/data/chart-styling/econ-red-rule-horizontal.md +19 -0
  81. package/data/harnesses/apollo/skills/design/data/chart-styling/financial-diverging-threshold-overlay.md +19 -0
  82. package/data/harnesses/apollo/skills/design/data/chart-styling/ft-vocabulary-ranked-muted.md +19 -0
  83. package/data/harnesses/apollo/skills/design/data/chart-styling/grafana-dark-threshold-bands.md +19 -0
  84. package/data/harnesses/apollo/skills/design/data/chart-styling/material-rounded-explicit-label.md +19 -0
  85. package/data/harnesses/apollo/skills/design/data/chart-styling/nyt-ghost-grid-direct-label.md +19 -0
  86. package/data/harnesses/apollo/skills/design/data/chart-styling/plot-currentcolor-inherit.md +19 -0
  87. package/data/harnesses/apollo/skills/design/data/chart-styling/saas-gradient-glow-area.md +19 -0
  88. package/data/harnesses/apollo/skills/design/data/chart-styling/shadcn-composable-css-vars.md +19 -0
  89. package/data/harnesses/apollo/skills/design/data/charts/census.csv +58 -0
  90. package/data/harnesses/apollo/skills/design/data/checklists/browse.md +21 -0
  91. package/data/harnesses/apollo/skills/design/data/checklists/creation-flow.md +20 -0
  92. package/data/harnesses/apollo/skills/design/data/checklists/dashboard.md +21 -0
  93. package/data/harnesses/apollo/skills/design/data/checklists/grid.md +21 -0
  94. package/data/harnesses/apollo/skills/design/data/checklists/queue.md +21 -0
  95. package/data/harnesses/apollo/skills/design/data/checklists/record-detail.md +21 -0
  96. package/data/harnesses/apollo/skills/design/data/checklists/settings.md +21 -0
  97. package/data/harnesses/apollo/skills/design/data/chrome/board-column.md +68 -0
  98. package/data/harnesses/apollo/skills/design/data/chrome/data-table.md +63 -0
  99. package/data/harnesses/apollo/skills/design/data/chrome/side-panel.md +60 -0
  100. package/data/harnesses/apollo/skills/design/data/chrome/sidebar.md +78 -0
  101. package/data/harnesses/apollo/skills/design/data/chrome/stat-cards.md +62 -0
  102. package/data/harnesses/apollo/skills/design/data/chrome/topbar.md +65 -0
  103. package/data/harnesses/apollo/skills/design/data/color/accent-presets.md +90 -0
  104. package/data/harnesses/apollo/skills/design/data/color/aesop-earth-mute.md +91 -0
  105. package/data/harnesses/apollo/skills/design/data/color/arc-peach-play.md +90 -0
  106. package/data/harnesses/apollo/skills/design/data/color/attio-hunter-teal.md +90 -0
  107. package/data/harnesses/apollo/skills/design/data/color/carbon-cyan-signal.md +90 -0
  108. package/data/harnesses/apollo/skills/design/data/color/clay-parchment.md +90 -0
  109. package/data/harnesses/apollo/skills/design/data/color/duolingo-feather.md +90 -0
  110. package/data/harnesses/apollo/skills/design/data/color/geist-mono-signal.md +90 -0
  111. package/data/harnesses/apollo/skills/design/data/color/linear-graphite-violet.md +90 -0
  112. package/data/harnesses/apollo/skills/design/data/color/mercury-onyx-cobalt.md +90 -0
  113. package/data/harnesses/apollo/skills/design/data/color/notion-paper-ink.md +90 -0
  114. package/data/harnesses/apollo/skills/design/data/color/radix-slate-iris.md +90 -0
  115. package/data/harnesses/apollo/skills/design/data/color/raycast-void-spectrum.md +90 -0
  116. package/data/harnesses/apollo/skills/design/data/color/spectrum-celery-fuchsia.md +90 -0
  117. package/data/harnesses/apollo/skills/design/data/color/stripe-blurple-ruby.md +90 -0
  118. package/data/harnesses/apollo/skills/design/data/color/superhuman-cod-picton.md +89 -0
  119. package/data/harnesses/apollo/skills/design/data/corpora/operations-review/companies.csv +15 -0
  120. package/data/harnesses/apollo/skills/design/data/corpora/operations-review/corpus.md +87 -0
  121. package/data/harnesses/apollo/skills/design/data/corpora/operations-review/people.csv +25 -0
  122. package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/companies.csv +15 -0
  123. package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/corpus.md +83 -0
  124. package/data/harnesses/apollo/skills/design/data/corpora/procurement-approvals/people.csv +25 -0
  125. package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/companies.csv +15 -0
  126. package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/corpus.md +89 -0
  127. package/data/harnesses/apollo/skills/design/data/corpora/revenue-analytics/people.csv +25 -0
  128. package/data/harnesses/apollo/skills/design/data/elevation/ant-design-directional-shadow.md +19 -0
  129. package/data/harnesses/apollo/skills/design/data/elevation/apple-liquid-glass-material.md +18 -0
  130. package/data/harnesses/apollo/skills/design/data/elevation/atlassian-surface-shadow-pairing.md +20 -0
  131. package/data/harnesses/apollo/skills/design/data/elevation/fluent-2-key-ambient-ramp.md +20 -0
  132. package/data/harnesses/apollo/skills/design/data/elevation/github-primer-sparing-shadow.md +19 -0
  133. package/data/harnesses/apollo/skills/design/data/elevation/ibm-carbon-layer-and-border.md +19 -0
  134. package/data/harnesses/apollo/skills/design/data/elevation/linear-dark-surface-ladder.md +17 -0
  135. package/data/harnesses/apollo/skills/design/data/elevation/material-2-key-ambient-dp-ramp.md +19 -0
  136. package/data/harnesses/apollo/skills/design/data/elevation/material-3-tonal-elevation.md +21 -0
  137. package/data/harnesses/apollo/skills/design/data/elevation/neobrutalist-hard-offset.md +19 -0
  138. package/data/harnesses/apollo/skills/design/data/elevation/neumorphic-soft-dual-shadow.md +18 -0
  139. package/data/harnesses/apollo/skills/design/data/elevation/notion-warm-minimal-hairline.md +17 -0
  140. package/data/harnesses/apollo/skills/design/data/elevation/polaris-elevation-inset-bevel.md +21 -0
  141. package/data/harnesses/apollo/skills/design/data/elevation/radix-themes-alpha-ring-scale.md +19 -0
  142. package/data/harnesses/apollo/skills/design/data/elevation/shadcn-neutral-derived-radius.md +19 -0
  143. package/data/harnesses/apollo/skills/design/data/elevation/stripe-brand-tinted-dual-shadow.md +18 -0
  144. package/data/harnesses/apollo/skills/design/data/elevation/tailwind-default-utility-scale.md +19 -0
  145. package/data/harnesses/apollo/skills/design/data/elevation/vercel-geist-shadow-as-border.md +20 -0
  146. package/data/harnesses/apollo/skills/design/data/gradients/amber-attention-fill.md +16 -0
  147. package/data/harnesses/apollo/skills/design/data/gradients/cloud-shadow-wash.md +16 -0
  148. package/data/harnesses/apollo/skills/design/data/gradients/confident-lavender-wash.md +16 -0
  149. package/data/harnesses/apollo/skills/design/data/gradients/ember-ship-flare.md +18 -0
  150. package/data/harnesses/apollo/skills/design/data/gradients/full-metal-wash.md +16 -0
  151. package/data/harnesses/apollo/skills/design/data/gradients/indigo-ruby-cta-band.md +18 -0
  152. package/data/harnesses/apollo/skills/design/data/gradients/linear-graphite-wash.md +18 -0
  153. package/data/harnesses/apollo/skills/design/data/gradients/marble-quartz-wash.md +16 -0
  154. package/data/harnesses/apollo/skills/design/data/gradients/midnight-aurora-panel.md +16 -0
  155. package/data/harnesses/apollo/skills/design/data/gradients/neutral-volume-fill.md +16 -0
  156. package/data/harnesses/apollo/skills/design/data/gradients/revenue-uptrend-fill.md +16 -0
  157. package/data/harnesses/apollo/skills/design/data/gradients/risk-decline-fill.md +16 -0
  158. package/data/harnesses/apollo/skills/design/data/gradients/signal-blue-develop.md +18 -0
  159. package/data/harnesses/apollo/skills/design/data/gradients/slate-mist-wash.md +16 -0
  160. package/data/harnesses/apollo/skills/design/data/gradients/stripe-atmosphere-mesh.md +18 -0
  161. package/data/harnesses/apollo/skills/design/data/gradients/teal-signal-accent.md +16 -0
  162. package/data/harnesses/apollo/skills/design/data/gradients/violet-magenta-promo.md +16 -0
  163. package/data/harnesses/apollo/skills/design/data/iconography.md +199 -0
  164. package/data/harnesses/apollo/skills/design/data/motion/accordion-expand.md +18 -0
  165. package/data/harnesses/apollo/skills/design/data/motion/destructive-hold-confirm.md +18 -0
  166. package/data/harnesses/apollo/skills/design/data/motion/drag-dismiss-momentum.md +18 -0
  167. package/data/harnesses/apollo/skills/design/data/motion/empty-state-arrive.md +18 -0
  168. package/data/harnesses/apollo/skills/design/data/motion/hover-lift.md +18 -0
  169. package/data/harnesses/apollo/skills/design/data/motion/modal-center-arrive.md +18 -0
  170. package/data/harnesses/apollo/skills/design/data/motion/number-ticker-roll.md +18 -0
  171. package/data/harnesses/apollo/skills/design/data/motion/onboarding-bounce.md +18 -0
  172. package/data/harnesses/apollo/skills/design/data/motion/panel-slide.md +18 -0
  173. package/data/harnesses/apollo/skills/design/data/motion/press-feedback.md +18 -0
  174. package/data/harnesses/apollo/skills/design/data/motion/progress-linear-loop.md +18 -0
  175. package/data/harnesses/apollo/skills/design/data/motion/route-crossfade.md +18 -0
  176. package/data/harnesses/apollo/skills/design/data/motion/rubber-band-overscroll.md +18 -0
  177. package/data/harnesses/apollo/skills/design/data/motion/skeleton-shimmer.md +18 -0
  178. package/data/harnesses/apollo/skills/design/data/motion/stagger-arrive.md +18 -0
  179. package/data/harnesses/apollo/skills/design/data/motion/toast-enter-stack.md +18 -0
  180. package/data/harnesses/apollo/skills/design/data/motion/tooltip-chain-instant.md +18 -0
  181. package/data/harnesses/apollo/skills/design/data/motion/trigger-anchored-reveal.md +18 -0
  182. package/data/harnesses/apollo/skills/design/data/tells.csv +34 -0
  183. package/data/harnesses/apollo/skills/design/data/typography/anton-work-sans.md +17 -0
  184. package/data/harnesses/apollo/skills/design/data/typography/archivo-black-archivo.md +17 -0
  185. package/data/harnesses/apollo/skills/design/data/typography/bitter-karla.md +17 -0
  186. package/data/harnesses/apollo/skills/design/data/typography/dm-serif-dm-sans.md +17 -0
  187. package/data/harnesses/apollo/skills/design/data/typography/fraunces-inter.md +17 -0
  188. package/data/harnesses/apollo/skills/design/data/typography/geist-geist-mono.md +17 -0
  189. package/data/harnesses/apollo/skills/design/data/typography/hubot-sans-mona-sans.md +17 -0
  190. package/data/harnesses/apollo/skills/design/data/typography/ibm-plex-sans-operator-single-family.md +17 -0
  191. package/data/harnesses/apollo/skills/design/data/typography/instrument-serif-instrument-sans.md +17 -0
  192. package/data/harnesses/apollo/skills/design/data/typography/inter-operator-single-family.md +17 -0
  193. package/data/harnesses/apollo/skills/design/data/typography/libre-baskerville-libre-franklin.md +17 -0
  194. package/data/harnesses/apollo/skills/design/data/typography/newsreader-inter.md +17 -0
  195. package/data/harnesses/apollo/skills/design/data/typography/playfair-display-source-sans.md +17 -0
  196. package/data/harnesses/apollo/skills/design/data/typography/public-sans-operator-single-family.md +17 -0
  197. package/data/harnesses/apollo/skills/design/data/typography/sohne-inter-fintech.md +17 -0
  198. package/data/harnesses/apollo/skills/design/data/typography/source-serif-source-sans.md +17 -0
  199. package/data/harnesses/apollo/skills/design/data/typography/space-grotesk-work-sans-space-mono.md +17 -0
  200. package/data/harnesses/apollo/skills/design/data/typography/spectral-manrope.md +17 -0
  201. package/data/harnesses/apollo/skills/design/data/voices/bright-collaborator.md +29 -0
  202. package/data/harnesses/apollo/skills/design/data/voices/direct-operator.md +29 -0
  203. package/data/harnesses/apollo/skills/design/data/voices/earnest-helper.md +29 -0
  204. package/data/harnesses/apollo/skills/design/data/voices/editorial-composed.md +29 -0
  205. package/data/harnesses/apollo/skills/design/data/voices/quiet-concierge.md +29 -0
  206. package/data/harnesses/apollo/skills/design/data/voices/warm-guide.md +29 -0
  207. package/data/harnesses/apollo/skills/design/design-md/SCHEMA.md +179 -0
  208. package/data/harnesses/apollo/skills/design/design-md/index.csv +67 -0
  209. package/data/harnesses/apollo/skills/design/design-md/library/airbnb.md +207 -0
  210. package/data/harnesses/apollo/skills/design/design-md/library/airtable.md +205 -0
  211. package/data/harnesses/apollo/skills/design/design-md/library/anthropic-claude.md +203 -0
  212. package/data/harnesses/apollo/skills/design/design-md/library/apple.md +206 -0
  213. package/data/harnesses/apollo/skills/design/design-md/library/binance.md +210 -0
  214. package/data/harnesses/apollo/skills/design/design-md/library/bmw.md +210 -0
  215. package/data/harnesses/apollo/skills/design/design-md/library/cal.md +209 -0
  216. package/data/harnesses/apollo/skills/design/design-md/library/clay.md +204 -0
  217. package/data/harnesses/apollo/skills/design/design-md/library/clickhouse.md +205 -0
  218. package/data/harnesses/apollo/skills/design/design-md/library/cohere.md +205 -0
  219. package/data/harnesses/apollo/skills/design/design-md/library/coinbase.md +198 -0
  220. package/data/harnesses/apollo/skills/design/design-md/library/composio.md +198 -0
  221. package/data/harnesses/apollo/skills/design/design-md/library/cursor.md +197 -0
  222. package/data/harnesses/apollo/skills/design/design-md/library/elevenlabs.md +199 -0
  223. package/data/harnesses/apollo/skills/design/design-md/library/expo.md +200 -0
  224. package/data/harnesses/apollo/skills/design/design-md/library/figma.md +199 -0
  225. package/data/harnesses/apollo/skills/design/design-md/library/framer.md +202 -0
  226. package/data/harnesses/apollo/skills/design/design-md/library/hashicorp.md +205 -0
  227. package/data/harnesses/apollo/skills/design/design-md/library/ibm.md +205 -0
  228. package/data/harnesses/apollo/skills/design/design-md/library/intercom.md +204 -0
  229. package/data/harnesses/apollo/skills/design/design-md/library/kraken.md +200 -0
  230. package/data/harnesses/apollo/skills/design/design-md/library/linear-app.md +198 -0
  231. package/data/harnesses/apollo/skills/design/design-md/library/lovable.md +199 -0
  232. package/data/harnesses/apollo/skills/design/design-md/library/meta.md +204 -0
  233. package/data/harnesses/apollo/skills/design/design-md/library/minimax.md +204 -0
  234. package/data/harnesses/apollo/skills/design/design-md/library/mintlify.md +210 -0
  235. package/data/harnesses/apollo/skills/design/design-md/library/miro.md +209 -0
  236. package/data/harnesses/apollo/skills/design/design-md/library/mistral-ai.md +201 -0
  237. package/data/harnesses/apollo/skills/design/design-md/library/mongodb.md +201 -0
  238. package/data/harnesses/apollo/skills/design/design-md/library/notion.md +204 -0
  239. package/data/harnesses/apollo/skills/design/design-md/library/nvidia.md +215 -0
  240. package/data/harnesses/apollo/skills/design/design-md/library/ollama.md +213 -0
  241. package/data/harnesses/apollo/skills/design/design-md/library/opencode-ai.md +216 -0
  242. package/data/harnesses/apollo/skills/design/design-md/library/posthog.md +218 -0
  243. package/data/harnesses/apollo/skills/design/design-md/library/raycast.md +214 -0
  244. package/data/harnesses/apollo/skills/design/design-md/library/replicate.md +202 -0
  245. package/data/harnesses/apollo/skills/design/design-md/library/resend.md +203 -0
  246. package/data/harnesses/apollo/skills/design/design-md/library/revolut.md +203 -0
  247. package/data/harnesses/apollo/skills/design/design-md/library/runwayml.md +203 -0
  248. package/data/harnesses/apollo/skills/design/design-md/library/sanity.md +200 -0
  249. package/data/harnesses/apollo/skills/design/design-md/library/sentry.md +201 -0
  250. package/data/harnesses/apollo/skills/design/design-md/library/shopify.md +202 -0
  251. package/data/harnesses/apollo/skills/design/design-md/library/slack.md +202 -0
  252. package/data/harnesses/apollo/skills/design/design-md/library/spacex.md +206 -0
  253. package/data/harnesses/apollo/skills/design/design-md/library/spotify.md +206 -0
  254. package/data/harnesses/apollo/skills/design/design-md/library/stripe.md +196 -0
  255. package/data/harnesses/apollo/skills/design/design-md/library/supabase.md +196 -0
  256. package/data/harnesses/apollo/skills/design/design-md/library/superhuman.md +194 -0
  257. package/data/harnesses/apollo/skills/design/design-md/library/tesla.md +198 -0
  258. package/data/harnesses/apollo/skills/design/design-md/library/theverge.md +199 -0
  259. package/data/harnesses/apollo/skills/design/design-md/library/together-ai.md +193 -0
  260. package/data/harnesses/apollo/skills/design/design-md/library/uber.md +195 -0
  261. package/data/harnesses/apollo/skills/design/design-md/library/vercel.md +195 -0
  262. package/data/harnesses/apollo/skills/design/design-md/library/voltagent.md +197 -0
  263. package/data/harnesses/apollo/skills/design/design-md/library/warp.md +196 -0
  264. package/data/harnesses/apollo/skills/design/design-md/library/webflow.md +197 -0
  265. package/data/harnesses/apollo/skills/design/design-md/library/wired.md +197 -0
  266. package/data/harnesses/apollo/skills/design/design-md/library/wise.md +198 -0
  267. package/data/harnesses/apollo/skills/design/design-md/library/x-ai.md +199 -0
  268. package/data/harnesses/apollo/skills/design/design-md/library/zapier.md +198 -0
  269. package/data/harnesses/apollo/skills/design/design-md/nurix.md +214 -0
  270. package/data/harnesses/apollo/skills/design/design-md/variants/editorial-luxury.md +184 -0
  271. package/data/harnesses/apollo/skills/design/design-md/variants/expressive-saas.md +216 -0
  272. package/data/harnesses/apollo/skills/design/design-md/variants/quiet-premium.md +211 -0
  273. package/data/harnesses/apollo/skills/design/design-md/variants/terse-dense-operator.md +212 -0
  274. package/data/harnesses/apollo/skills/design/design-md/variants/warm-approachable.md +216 -0
  275. package/data/harnesses/apollo/skills/design/references/compose.md +23 -0
  276. package/data/harnesses/apollo/skills/design/references/content.md +28 -0
  277. package/data/harnesses/apollo/skills/design/references/emission.md +21 -0
  278. package/data/harnesses/apollo/skills/design/references/existing-apps.md +27 -0
  279. package/data/harnesses/apollo/skills/design/references/intake.md +36 -0
  280. package/data/harnesses/apollo/skills/design/references/object-pass.md +24 -0
  281. package/data/harnesses/apollo/skills/design/references/ship-gate.md +29 -0
  282. package/data/harnesses/apollo/skills/design/references/ux-patterns/Readme.md +195 -0
  283. package/data/harnesses/apollo/skills/design/references/ux-patterns/ai-layer.md +49 -0
  284. package/data/harnesses/apollo/skills/design/references/ux-patterns/attributes-lifecycle.md +43 -0
  285. package/data/harnesses/apollo/skills/design/references/ux-patterns/container-choice.md +44 -0
  286. package/data/harnesses/apollo/skills/design/references/ux-patterns/creation-paths.md +46 -0
  287. package/data/harnesses/apollo/skills/design/references/ux-patterns/dashboards.md +42 -0
  288. package/data/harnesses/apollo/skills/design/references/ux-patterns/modes.md +42 -0
  289. package/data/harnesses/apollo/skills/design/references/ux-patterns/object-model.md +46 -0
  290. package/data/harnesses/apollo/skills/design/references/ux-patterns/page-archetype.md +48 -0
  291. package/data/harnesses/apollo/skills/design/references/ux-patterns/promotion-demotion.md +37 -0
  292. package/data/harnesses/apollo/skills/design/references/ux-patterns/settings.md +42 -0
  293. package/data/harnesses/apollo/skills/design/references/ux-patterns/standard-pages.md +46 -0
  294. package/data/harnesses/apollo/skills/design/references/ux-patterns/state-matrix.md +41 -0
  295. package/data/harnesses/apollo/skills/design/references/ux-patterns/table-mechanics.md +48 -0
  296. package/data/harnesses/apollo/skills/design/references/ux-patterns/verbs.md +45 -0
  297. package/data/harnesses/apollo/skills/design/references/ux-patterns/viewer-context.md +40 -0
  298. package/data/harnesses/apollo/skills/design/scripts/README-validator.md +27 -0
  299. package/data/harnesses/apollo/skills/design/scripts/select-chart.mjs +596 -0
  300. package/data/harnesses/apollo/skills/design/scripts/validate-design-md.mjs +1198 -0
  301. package/data/harnesses/apollo/skills/documentation/SKILL.md +134 -0
  302. package/data/harnesses/apollo/skills/documentation/references/examples.md +279 -0
  303. package/data/harnesses/apollo/skills/documentation/references/frontmatter.md +44 -0
  304. package/data/harnesses/apollo/skills/documentation/references/instruction-style.md +49 -0
  305. package/data/harnesses/apollo/skills/documentation/references/style-guide.md +351 -0
  306. package/data/harnesses/apollo/skills/documentation/references/untemplated.md +38 -0
  307. package/data/harnesses/apollo/skills/documentation/scripts/doc-lint.mjs +140 -0
  308. package/data/harnesses/apollo/skills/documentation/templates/Readme.md +34 -0
  309. package/data/harnesses/apollo/skills/documentation/templates/api-reference.md +20 -0
  310. package/data/harnesses/apollo/skills/documentation/templates/architecture-decision.md +121 -0
  311. package/data/harnesses/apollo/skills/documentation/templates/backlog.md +33 -0
  312. package/data/harnesses/apollo/skills/documentation/templates/behavioral-checklist.md +79 -0
  313. package/data/harnesses/apollo/skills/documentation/templates/bookkeeping.md +18 -0
  314. package/data/harnesses/apollo/skills/documentation/templates/changelog-entry.md +57 -0
  315. package/data/harnesses/apollo/skills/documentation/templates/changelog-index.md +41 -0
  316. package/data/harnesses/apollo/skills/documentation/templates/docs-readme.md +72 -0
  317. package/data/harnesses/apollo/skills/documentation/templates/domain-model.md +30 -0
  318. package/data/harnesses/apollo/skills/documentation/templates/environment-registry.md +15 -0
  319. package/data/harnesses/apollo/skills/documentation/templates/feature.md +149 -0
  320. package/data/harnesses/apollo/skills/documentation/templates/glossary.md +11 -0
  321. package/data/harnesses/apollo/skills/documentation/templates/journal.md +13 -0
  322. package/data/harnesses/apollo/skills/documentation/templates/memory-main.md +25 -0
  323. package/data/harnesses/apollo/skills/documentation/templates/migration-runbook.md +34 -0
  324. package/data/harnesses/apollo/skills/documentation/templates/non-goals.md +11 -0
  325. package/data/harnesses/apollo/skills/documentation/templates/operations-procedure.md +36 -0
  326. package/data/harnesses/apollo/skills/documentation/templates/plan.md +74 -0
  327. package/data/harnesses/apollo/skills/documentation/templates/protected-files.md +37 -0
  328. package/data/harnesses/apollo/skills/documentation/templates/root-readme.md +104 -0
  329. package/data/harnesses/apollo/skills/documentation/templates/security-overview.md +27 -0
  330. package/data/harnesses/apollo/skills/documentation/templates/structure.md +65 -0
  331. package/data/harnesses/apollo/skills/documentation/templates/system-overview.md +32 -0
  332. package/data/harnesses/apollo/skills/documentation/templates/testing-strategy.md +29 -0
  333. package/data/harnesses/apollo/skills/test-plan/SKILL.md +85 -0
  334. package/data/harnesses/apollo/skills/workflow-mapper/SKILL.md +451 -0
  335. package/data/harnesses/apollo/skills/workflow-mapper/references/patterns.md +214 -0
  336. package/data/harnesses/code/agents/bookkeeper.md +27 -0
  337. package/data/harnesses/code/agents/maintenance.md +5 -3
  338. package/data/harnesses/code/codex/agents/maintenance.toml +2 -2
  339. package/data/harnesses/code/harness.json +3 -2
  340. package/data/harnesses/code/hooks/awareness.mjs +370 -0
  341. package/data/harnesses/code/hooks/check-bookkeeping-clean.mjs +19 -0
  342. package/data/harnesses/code/hooks/check-changelog-presence.mjs +48 -0
  343. package/data/harnesses/code/hooks/check-completion-integrity.mjs +68 -0
  344. package/data/harnesses/code/hooks/check-ownership.mjs +22 -0
  345. package/data/harnesses/code/hooks/compliance.mjs +332 -0
  346. package/data/harnesses/code/hooks/hooks.json +16 -10
  347. package/data/harnesses/code/hooks/lib/frozen.mjs +58 -0
  348. package/data/harnesses/code/hooks/lib/ownership.mjs +223 -0
  349. package/data/harnesses/code/hooks/lib/state.mjs +156 -0
  350. package/data/harnesses/code/skills/boundary/SKILL.md +3 -1
  351. package/data/harnesses/code/skills/documentation/SKILL.md +2 -0
  352. package/data/harnesses/code/skills/documentation/templates/Readme.md +2 -0
  353. package/data/harnesses/code/skills/documentation/templates/bookkeeping.md +18 -0
  354. package/data/harnesses/code/skills/documentation/templates/journal.md +13 -0
  355. package/data/harnesses/code/skills/documentation/templates/plan.md +3 -0
  356. package/data/harnesses/code/skills/test-plan/SKILL.md +2 -0
  357. package/data/harnesses/delivery/agents/maintenance.md +5 -3
  358. package/data/harnesses/delivery/codex/agents/maintenance.toml +2 -2
  359. package/data/harnesses/delivery/harness.json +3 -2
  360. package/data/harnesses/delivery/skills/documentation/SKILL.md +2 -0
  361. package/data/harnesses/delivery/skills/documentation/templates/Readme.md +2 -0
  362. package/data/harnesses/delivery/skills/documentation/templates/bookkeeping.md +18 -0
  363. package/data/harnesses/delivery/skills/documentation/templates/journal.md +13 -0
  364. package/data/harnesses/delivery/skills/documentation/templates/plan.md +3 -0
  365. package/data/harnesses/discover/harness.json +2 -1
  366. package/data/harnesses/discussion/harness.json +1 -0
  367. package/data/harnesses/etna/agents/maintenance.md +5 -3
  368. package/data/harnesses/etna/codex/agents/maintenance.toml +2 -2
  369. package/data/harnesses/etna/harness.json +3 -2
  370. package/data/harnesses/etna/skills/boundary/SKILL.md +3 -1
  371. package/data/harnesses/etna/skills/documentation/SKILL.md +2 -0
  372. package/data/harnesses/etna/skills/documentation/templates/Readme.md +2 -0
  373. package/data/harnesses/etna/skills/documentation/templates/bookkeeping.md +18 -0
  374. package/data/harnesses/etna/skills/documentation/templates/journal.md +13 -0
  375. package/data/harnesses/etna/skills/documentation/templates/plan.md +3 -0
  376. package/data/harnesses/hr/harness.json +1 -0
  377. package/data/harnesses/kb-agi/harness.json +1 -0
  378. package/package.json +2 -2
@@ -0,0 +1,18 @@
1
+ ---
2
+ id: stagger-arrive
3
+ class: a6
4
+ sourced: 2026-07-12
5
+ source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (stagger — 30-80ms, decorative, never blocks interaction)"
6
+ license: open
7
+ feel: "a ~50ms cascade with a small upward drift reads considered; everything landing at once reads dumped, and gaps above 80ms read slow"
8
+ aliases: { dumped: "no stagger at all on a multi-item entrance", draggy: "per-item stagger delay above the 80ms budget" }
9
+ ---
10
+ List and grid entrances for freshly-loaded content within a task (search results, new rows) — never on initial page load or route arrival (no orchestrated load sequences). Purely decorative — must never delay the list becoming interactive; keep the per-item delay inside 30-80ms so a ten-row list finishes well under half a second.
11
+
12
+ ```yaml values
13
+ duration: 300ms
14
+ easing: cubic-bezier(0.23, 1, 0.32, 1)
15
+ element-class: list-item
16
+ interruptible: n/a
17
+ budget: { list-item: 250-350ms }
18
+ ```
@@ -0,0 +1,18 @@
1
+ ---
2
+ id: toast-enter-stack
3
+ class: a6
4
+ sourced: 2026-07-12
5
+ source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (interruptibility — toast transition example; cohesion — the Sonner register)"
6
+ license: open
7
+ feel: "a 400ms transition-based stack reads calm even when toasts pile up fast; a keyframe stack reads jumpy every time a new one lands"
8
+ aliases: { jumpy: "@keyframes restarting already-stacked toasts instead of one continuous transition retargeting them", jarring: "no @starting-style/mount fallback, so the first toast snaps in with no entrance" }
9
+ ---
10
+ Toast/notification stacks. A new arrival must not restart the position transition of toasts already stacked — everything reflows on one continuous transition, never per-toast keyframes.
11
+
12
+ ```yaml values
13
+ duration: 400ms
14
+ easing: ease
15
+ element-class: overlay
16
+ interruptible: required
17
+ budget: { overlay: 300-450ms }
18
+ ```
@@ -0,0 +1,18 @@
1
+ ---
2
+ id: tooltip-chain-instant
3
+ class: a6
4
+ sourced: 2026-07-12
5
+ source: "emilkowalski.skills/skills/emil-design-eng/SKILL.md (tooltip-chaining example) + review-animations/STANDARDS.md (duration table, tooltip row; perceived performance)"
6
+ license: open
7
+ feel: "the first tooltip's 125ms fade-and-lift reads considered; every later tooltip in the same toolbar should read instant, with zero animation"
8
+ aliases: { "laggy-toolbar": "every tooltip in a group replaying the full delay+animation instead of chaining to instant after the first", floaty: "duration above the small-popover budget" }
9
+ ---
10
+ Tooltips, especially adjacent ones in a toolbar. First open: full delay + animation. While the pointer stays within the tooltip group, later tooltips switch to 0ms — this is the frequency law being satisfied, not an exception to it.
11
+
12
+ ```yaml values
13
+ duration: 125ms
14
+ easing: cubic-bezier(0.23, 1, 0.32, 1)
15
+ element-class: control
16
+ interruptible: n/a
17
+ budget: { control: 0-200ms }
18
+ ```
@@ -0,0 +1,18 @@
1
+ ---
2
+ id: trigger-anchored-reveal
3
+ class: a6
4
+ sourced: 2026-07-12
5
+ source: "emilkowalski.skills/skills/review-animations/STANDARDS.md (physicality — origin-aware popovers; duration table, dropdown row) + improve-animations/AUDIT.md §3"
6
+ license: open
7
+ feel: "growing out of the trigger at ~200ms reads anchored and native; center-scale or scale(0) reads like a random popup"
8
+ aliases: { disconnected: "transform-origin left at center instead of the trigger element", glitchy: "scale(0) start instead of scale(0.9-0.97) + opacity" }
9
+ ---
10
+ Popovers, dropdowns, select menus, tooltips. `transform-origin` follows the trigger (Radix/Base UI expose it as a CSS var); never centers. Rapid open/close/open must retarget, not restart.
11
+
12
+ ```yaml values
13
+ duration: 200ms
14
+ easing: cubic-bezier(0.23, 1, 0.32, 1)
15
+ element-class: overlay
16
+ interruptible: required
17
+ budget: { overlay: 150-250ms }
18
+ ```
@@ -0,0 +1,34 @@
1
+ id,tell,category,provenance,sourced,status
2
+ tell-001,"every shadow set to zero and every border the same 1px gray — structure without a single elevation decision",wireframe-smell,"design-skill 01 §E5; impeccable detector registry",2026-07-12,active
3
+ tell-002,"rounded-square icon tile stacked above the heading on every card — the universal generated feature-card template",template,"impeccable detector registry (icon-tile-stack)",2026-07-12,active
4
+ tell-003,"cards nested inside cards — double borders and stacked radii standing in for hierarchy",card-abuse,"impeccable detector registry (nested-cards); design-skill 01 §E5",2026-07-12,active
5
+ tell-004,"thick colored stripe down one edge of a card as the accent device",accent-abuse,"impeccable detector registry (side-tab); design-skill 01 §E5",2026-07-12,active
6
+ tell-005,"accent border wrapped around a rounded card — the stripe fighting the corner radius",accent-abuse,"impeccable detector registry (border-accent-on-rounded)",2026-07-12,active
7
+ tell-006,"hero-metric template — a row of identical stat tiles each icon + label + big number, with no comparison, trend, state, or door",template,"design-skill 01 §E5; b2b-ux-patterns dashboards chapter",2026-07-12,active
8
+ tell-007,"cream or warm-beige page surface reached by reflex as the tasteful default",palette,"impeccable detector registry (cream-palette); taste-skill §9.A; design-skill 01 §A2 anti-cream guardband",2026-07-12,active
9
+ tell-008,"ghost cards — bordered or shadowed containers wrapping a single short text run or nothing at all",card-abuse,"design-skill 01 §E5",2026-07-12,active
10
+ tell-009,"purple-violet gradients and cyan-on-dark as the default accent scheme",palette,"impeccable detector registry (ai-color-palette)",2026-07-12,active
11
+ tell-010,"dark theme expressed as colored box-shadow glows instead of a surface-lightness ladder",palette,"impeccable detector registry (dark-glow); design-skill 01 §A3 dark ladder",2026-07-12,active
12
+ tell-011,"gradient fills on heading or metric text",typography,"impeccable detector registry (gradient-text)",2026-07-12,active
13
+ tell-012,"flat type ramp — adjacent sizes too close together to carry hierarchy anywhere on the surface",typography,"impeccable detector registry (flat-type-hierarchy)",2026-07-12,active
14
+ tell-013,"one spacing value everywhere — no tight grouping of related controls, no generous seams between sections",layout,"impeccable detector registry (monotonous-spacing)",2026-07-12,active
15
+ tell-014,"hairline border and a wide diffuse shadow on the same container — two elevation systems at once",elevation,"impeccable detector registry (generated-UI signature set)",2026-07-12,active
16
+ tell-015,"decorative two-axis hairline grid background behind a surface that is not a canvas, map, or measurement view",template,"impeccable detector registry (generated-UI signature set)",2026-07-12,active
17
+ tell-016,"numbered section markers (01 / 02 / 03) as structural scaffolding",template,"impeccable detector registry (numbered-section-markers); taste-skill §9.F",2026-07-12,active
18
+ tell-017,"tiny uppercase letter-spaced kicker label repeated above every section heading",template,"impeccable detector registry (repeated-section-kickers)",2026-07-12,active
19
+ tell-018,"colored status dots decorating every nav item, row, or badge with no real state behind them",chrome,"taste-skill §9.F production-observed tells",2026-07-12,active
20
+ tell-019,"middle-dot chains as the default separator for every metadata strip",chrome,"taste-skill §9.F production-observed tells",2026-07-12,active
21
+ tell-020,"top and bottom hairline borders on every row of a long table or spec list",wireframe-smell,"taste-skill §9.F production-observed tells",2026-07-12,active
22
+ tell-021,"fake build or version strings as decoration where no real build data exists",demo-content,"taste-skill §9.F production-observed tells",2026-07-12,active
23
+ tell-022,"placeholder-generic person names in demo data (the John Doe class)",demo-content,"taste-skill §9.D (Jane Doe effect); design-skill 01 §E5",2026-07-12,active
24
+ tell-023,"the same gray egg or user-icon avatar on every person row",demo-content,"taste-skill §9.D production-observed tells",2026-07-12,active
25
+ tell-024,"fake-perfect numbers — round percentages, sequential IDs, totals that reconcile too neatly",demo-content,"taste-skill §9.D; design-skill 01 §E5",2026-07-12,active
26
+ tell-025,"startup-slop company names in demo data (the Acme / Nexus / Cloudly class)",demo-content,"taste-skill §9.D production-observed tells",2026-07-12,active
27
+ tell-026,"marketing buzzwords in interface copy (streamline, empower, supercharge, enterprise-grade)",copy,"impeccable detector registry (marketing-buzzword); taste-skill §9.D",2026-07-12,active
28
+ tell-027,"em-dash-heavy microcopy — the character recurring across labels, empty states, and tooltips",copy,"taste-skill §9.G; impeccable detector registry (em-dash-overuse)",2026-07-12,active
29
+ tell-028,"transition: all on interactive elements",motion,"design-skill 02 ship-gate Tier-2 motion tells",2026-07-12,active
30
+ tell-029,"ease-in easing on an entrance",motion,"design-skill 02 ship-gate Tier-2 motion tells; emilkowalski motion canon",2026-07-12,active
31
+ tell-030,"animation attached to a keyboard-triggered action",motion,"design-skill 02 ship-gate Tier-2 motion tells; emilkowalski frequency law",2026-07-12,active
32
+ tell-031,"bounce or elastic easing on product chrome",motion,"impeccable detector registry (bounce-easing)",2026-07-12,active
33
+ tell-032,"width, height, padding, or margin animated instead of transform and opacity",motion,"impeccable detector registry (layout-transition)",2026-07-12,active
34
+ tell-033,"orchestrated staggered entrance choreography on a work surface — a product loads into a task",motion,"design-skill 01 §A6 admission criteria; emilkowalski motion canon",2026-07-12,active
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: anton-work-sans
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Fontpair.co bold/brutalist list; Google Fonts; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "loud condensed poster headline against a quiet neutral body — maximum contrast"
8
+ ---
9
+ Anton is a single static weight built for shouting — a handful of words at most, never a sentence; Work Sans absorbs every remaining functional role at a calm, neutral register.
10
+
11
+ ```yaml values
12
+ display: { family: "Anton", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400] }
13
+ sans: { family: "Work Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
14
+ mono: { family: "Roboto Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["poster headlines", "hero words", "cover moments"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code", "data values"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: archivo-black-archivo
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Fontpair.co brutalist list; Google Fonts (Omnibus-Type superfamily); families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "brutalist poster energy tempered by a disciplined variable-width grotesque body"
8
+ ---
9
+ Archivo Black is a single static 900-weight cut reserved for shock headlines; Archivo Variable (same foundry, wdth+wght axes) runs everything else, including a condensed width option for dense tables.
10
+
11
+ ```yaml values
12
+ display: { family: "Archivo Black", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400] }
13
+ sans: { family: "Archivo Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
14
+ mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["poster headlines", "hero statements", "cover moments"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code", "data"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: bitter-karla
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Google Fonts featured pairings; Fontpair.co warm-approachable list; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "friendly slab warmth over a soft, low-contrast grotesque"
8
+ ---
9
+ A gentle, approachable pairing for product blogs and onboarding flows that want warmth without going fully editorial; both faces are fully variable so weight can carry hierarchy inside each role too.
10
+
11
+ ```yaml values
12
+ display: { family: "Bitter Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 600, 700] }
13
+ sans: { family: "Karla Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
14
+ mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["headlines", "hero banners", "cover cards"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code", "IDs"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: dm-serif-dm-sans
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Google Fonts featured pairings (Colophon Foundry twin release); Fontpair.co; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "quiet warmth from two faces drawn by the same studio in one release"
8
+ ---
9
+ The shared authorship keeps x-heights and rhythm aligned without matching stroke contrast — a low-friction pairing for blogs, newsletters, and about-pages that want a soft editorial voice. DM Serif Display ships as a single static weight; treat it as a display voice, not a workhorse.
10
+
11
+ ```yaml values
12
+ display: { family: "DM Serif Display", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400] }
13
+ sans: { family: "DM Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
14
+ mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["pull quotes", "hero statements", "identity lockups"], sans: ["body copy", "nav", "buttons", "form labels", "table cells"], mono: ["code samples", "technical asides"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: fraunces-inter
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Fontpair.co warm-editorial list; Fonts In Use case studies tagged Fraunces; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "expressive, ink-trap warmth over a clean, quiet product sans"
8
+ ---
9
+ Fraunces carries optical-size (opsz) and WONK/SOFT axes — dial WONK toward 0 and keep opsz high for a calmer display cut in dense layouts; Inter runs the rest of the interface untouched.
10
+
11
+ ```yaml values
12
+ display: { family: "Fraunces Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 500, 600, 900] }
13
+ sans: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
14
+ mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["hero headlines", "cover moments", "editorial pull quotes"], sans: ["body copy", "UI labels", "buttons", "form fields", "table cells"], mono: ["code blocks", "data/IDs"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: geist-geist-mono
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Vercel's production type system, Geist Sans + Geist Mono (Vercel with Basement Studio, OFL, added to Google Fonts Oct/Nov 2024); families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "quiet, engineered product register — a single studio's sans and mono built as one system"
8
+ ---
9
+ Dense-operator-adjacent: Geist Variable carries both identity moments (heavier weight) and body/UI (regular weight) as the same family, exactly as Vercel ships it on vercel.com and in Next.js docs; Geist Mono is the real sibling mono, not a substitution.
10
+
11
+ ```yaml values
12
+ display: { family: "Geist Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [600, 700] }
13
+ sans: { family: "Geist Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500] }
14
+ mono: { family: "Geist Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["hero headlines", "page titles", "top-nav wordmark"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code blocks", "terminal output", "IDs"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: hubot-sans-mona-sans
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "GitHub's production brand/UI system, Hubot Sans + Mona Sans (GitHub with Degarism Studio, OFL, added to Google Fonts Nov 2024); families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "friendly technical brand voice — an expressive geometric display over a workhorse variable UI face"
8
+ ---
9
+ Hubot Sans is GitHub's display/wordmark face (wide, geometric, confident); Mona Sans is the UI workhorse (wdth+wght axes) for everything functional. Note: GitHub's real code font, Monaspace, is OFL-licensed but not published to Google Fonts — JetBrains Mono is substituted here and should be swapped for Monaspace directly from GitHub's own distribution if code-block authenticity matters.
10
+
11
+ ```yaml values
12
+ display: { family: "Hubot Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [500, 700] }
13
+ sans: { family: "Mona Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
14
+ mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["brand lockups", "hero headlines", "cover moments"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code blocks", "terminal output", "diffs"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: ibm-plex-sans-operator-single-family
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "IBM's own Plex type system (Mike Abbink / Bold Monday); Typ.io; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "humanist technical register, one family carrying the entire hierarchy by weight and width"
8
+ ---
9
+ Dense-operator entry: IBM Plex Sans Variable (wdth+wght axes) covers both display and sans roles — use 600 weight or a narrower width cut for identity moments only, never for table cells or buttons. Plex Mono (static, same foundry) completes the trio for code and data.
10
+
11
+ ```yaml values
12
+ display: { family: "IBM Plex Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [600, 700] }
13
+ sans: { family: "IBM Plex Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500] }
14
+ mono: { family: "IBM Plex Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500, 600] }
15
+ register-scope: { display: ["page titles", "dashboard section headers", "empty states"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["code", "logs", "data/IDs"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: instrument-serif-instrument-sans
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Google Fonts (Instrument design agency twin release, 2023); Fonts In Use recent uploads; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "bright, high-contrast serif flashes against a friendly variable-width grotesque"
8
+ ---
9
+ Instrument Serif ships one weight and an italic only — treat it as a flourish face for a handful of words, never a paragraph; Instrument Sans carries every functional role including its own width axis for compact table headers.
10
+
11
+ ```yaml values
12
+ display: { family: "Instrument Serif", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400] }
13
+ sans: { family: "Instrument Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
14
+ mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["hero words", "short pull quotes", "identity lockups"], sans: ["body copy", "buttons", "form labels", "table cells", "dense UI"], mono: ["code", "data values"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: inter-operator-single-family
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Linear's production UI stack (Inter, confirmed — Linear does not ship a custom typeface); Google Fonts; family verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "precise, restrained SaaS operator surface carried entirely by weight"
8
+ ---
9
+ Dense-operator entry: display and sans are the same registered family — identity moments (page titles, top-nav wordmark) take weight 600–700 of Inter Variable itself rather than a separate face; body/UI stays at 400–500. No display face touches table cells or buttons.
10
+
11
+ ```yaml values
12
+ display: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [600, 700] }
13
+ sans: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500] }
14
+ mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["page titles", "top-nav wordmark", "empty-state headlines"], sans: ["body copy", "buttons", "form labels", "table cells", "nav items"], mono: ["code", "IDs", "timestamps", "numeric data"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: libre-baskerville-libre-franklin
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Fontpair.co classic-serif list; Google Fonts (both by Impallari Type); families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "quiet civic literary register, restrained by shared foundry discipline"
8
+ ---
9
+ Libre Baskerville is a classic-book face with no variable axis and only three cuts — use it sparingly for titles; Libre Franklin's full variable range does the rest of the civic/documentation work.
10
+
11
+ ```yaml values
12
+ display: { family: "Libre Baskerville", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 700] }
13
+ sans: { family: "Libre Franklin Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
14
+ mono: { family: "IBM Plex Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["report titles", "cover pages", "section headers"], sans: ["body copy", "buttons", "form labels", "table cells"], mono: ["citations", "reference codes"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: newsreader-inter
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Google Fonts (Production Type, built for a Google News reading initiative); Typ.io case-study tag; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "hushed, long-form literary register that shrinks gracefully at small sizes"
8
+ ---
9
+ Newsreader's opsz axis is the point — let it size itself down for dense captions and up for display; pair only with a body sans that disappears, which Inter is built to do.
10
+
11
+ ```yaml values
12
+ display: { family: "Newsreader Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 500, 600] }
13
+ sans: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
14
+ mono: { family: "Roboto Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["article headlines", "pull quotes", "cover text"], sans: ["body copy", "nav", "buttons", "form labels", "table cells"], mono: ["timestamps", "citations", "code refs"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: playfair-display-source-sans
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Fontpair.co classic-pairings list; Typ.io Adobe-fonts popularity data; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "broadsheet gravity meeting a disciplined newsroom reading face"
8
+ ---
9
+ Use for long-form editorial and reports where headlines need didone drama but body copy must stay quiet and legible; the mono is a substitution note, not part of the source pairing — bring it in only if the surface needs inline code or IDs.
10
+
11
+ ```yaml values
12
+ display: { family: "Playfair Display Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 600, 700, 900] }
13
+ sans: { family: "Source Sans 3 Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
14
+ mono: { family: "IBM Plex Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500, 600] }
15
+ register-scope: { display: ["cover titles", "hero headlines", "section dividers"], sans: ["body copy", "captions", "buttons", "form labels", "table cells"], mono: ["figure references", "dataset IDs", "code snippets"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: public-sans-operator-single-family
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "U.S. Web Design System (USWDS) production typeface, Public Sans (18F/USWDS, Google Fonts); families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "quiet civic register, weight-carried hierarchy built for dense government data tables"
8
+ ---
9
+ Dense-operator entry: Public Sans Variable is the entire system — no separate display face. Identity moments take 600-700 weight; every table cell, form label, and button stays at 400-500. Built explicitly for accessibility-first government services, so it is the most conservative entry in this set.
10
+
11
+ ```yaml values
12
+ display: { family: "Public Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [600, 700] }
13
+ sans: { family: "Public Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500] }
14
+ mono: { family: "Roboto Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["page titles", "section headers", "identity moments"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["reference codes", "data values"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: sohne-inter-fintech
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Stripe's production marketing/dashboard stack — Söhne, a commercial Klim Type Foundry license (released 2019), reported via industry SaaS-typography surveys; open substitutes verified live against fonts.google.com/metadata/fonts"
6
+ license: licensed
7
+ feel: "fintech institutional precision — a paid grotesque for identity, an open workhorse for everything else"
8
+ ---
9
+ Söhne is a commercial Klim Type Foundry release, NOT distributed via Google Fonts — license it directly from Klim (or use the system-font fallback stack as a placeholder) before shipping; Inter Variable is the open substitute carrying every UI, table, and form role so the licensed face never has to.
10
+
11
+ ```yaml values
12
+ display: { family: "Söhne", fallback: "system-ui, -apple-system, \"Segoe UI\", sans-serif", weights: [400, 500, 700] }
13
+ sans: { family: "Inter Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
14
+ mono: { family: "JetBrains Mono Variable", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["marketing hero type", "brand lockups", "cover moments"], sans: ["body copy", "buttons", "form labels", "table cells", "dashboard UI"], mono: ["code", "API examples", "numeric data"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: source-serif-source-sans
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Adobe/Google Fonts superfamily (Source series); Typ.io Adobe-fonts popularity list; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "quiet institutional register — one design lineage front to back"
8
+ ---
9
+ Both faces share a metrics philosophy from the same Adobe type team, so swapping serif-for-sans mid-document (report body to callout) never jars; good for documentation, legal, and internal-tool surfaces that want restraint over personality.
10
+
11
+ ```yaml values
12
+ display: { family: "Source Serif 4 Variable", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 500, 600] }
13
+ sans: { family: "Source Sans 3 Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
14
+ mono: { family: "IBM Plex Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 500] }
15
+ register-scope: { display: ["document titles", "section headers", "cover pages"], sans: ["body copy", "buttons", "form labels", "table cells", "nav"], mono: ["reference IDs", "code", "version strings"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: space-grotesk-work-sans-space-mono
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Fontpair.co technical/startup list; Google Fonts; families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "geometric technical display over a neutral working body, monospace for code accents"
8
+ ---
9
+ A three-role technical system: Space Grotesk's squarish geometry announces sections, Work Sans stays out of the way for body copy, and its Colophon Foundry sibling Space Mono (static, 4 cuts) marks code — a common indie-SaaS combination.
10
+
11
+ ```yaml values
12
+ display: { family: "Space Grotesk Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [500, 700] }
13
+ sans: { family: "Work Sans Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600] }
14
+ mono: { family: "Space Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 700] }
15
+ register-scope: { display: ["section headers", "hero headlines", "feature callouts"], sans: ["body copy", "buttons", "form labels", "table cells"], mono: ["code", "terminal output", "data values"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,17 @@
1
+ ---
2
+ id: spectral-manrope
3
+ class: a1
4
+ sourced: 2026-07-12
5
+ source: "Fontpair.co editorial-meets-product list; Google Fonts (Production Type / Mikhail Sharanda); families verified live against fonts.google.com/metadata/fonts"
6
+ license: open
7
+ feel: "literary display warmth set against a crisp geometric grotesque body"
8
+ ---
9
+ Spectral has no variable axis — pick static weights deliberately (400 for long text, 600/700 for emphasis); Manrope is fully variable and should absorb every UI weight need.
10
+
11
+ ```yaml values
12
+ display: { family: "Spectral", fallback: "Georgia, Cambria, \"Times New Roman\", serif", weights: [400, 600, 700] }
13
+ sans: { family: "Manrope Variable", fallback: "\"Helvetica Neue\", Arial, sans-serif", weights: [400, 500, 600, 700] }
14
+ mono: { family: "Space Mono", fallback: "\"SFMono-Regular\", Consolas, \"Liberation Mono\", Menlo, monospace", weights: [400, 700] }
15
+ register-scope: { display: ["headlines", "cover statements", "section dividers"], sans: ["body copy", "buttons", "form labels", "table cells"], mono: ["code", "data labels"] }
16
+ oracle-verified: 2026-07-12
17
+ ```
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: bright-collaborator
3
+ class: c2
4
+ sourced: 2026-07-12
5
+ source: "Distilled from Slack's voice & tone guidance (api.slack.com/best-practices/voice-and-tone) — confident not cocky, witty not silly, clear-concise-human, tone as seasoning not the dish."
6
+ license: open
7
+ ---
8
+ # Voice: bright-collaborator
9
+
10
+ **Feel:** Confident and a little playful, but the point always lands first.
11
+
12
+ Conversational rhythm — short sentences mixed with one longer one for cadence, contractions standard, second person throughout. Personality is seasoning: light wit is reserved for confirmations and empty states, never for errors. Actions open with a verb. Numbers are digits. One idea per sentence — never two clauses competing for attention.
13
+
14
+ ## Tone map
15
+
16
+ Voice is constant; tone dials by situation.
17
+
18
+ - **routine action:** verb-first with a light conversational lift
19
+ - **error:** personality drops out entirely — plain statement, then the fix
20
+ - **success:** wit is allowed, one line, never stacked
21
+ - **destructive confirmation:** playfulness fully off, states the stakes plainly
22
+
23
+ ## Examples
24
+
25
+ - **button:** "Invite teammate"
26
+ - **empty state (heading + motivation):** "Quiet in here" / "Invite a teammate and this space starts filling up."
27
+ - **error:** "That invite didn't go through. Check the email and send it again."
28
+ - **tooltip:** "Only workspace admins can see this."
29
+ - **confirmation:** "Teammate invited — welcome aboard."
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: direct-operator
3
+ class: c2
4
+ sourced: 2026-07-12
5
+ source: "Distilled from Atlassian's 'bold, optimistic, practical' brevity mandate (atlassian.design/content/voice-and-tone-principles) and Material Design's clarity-to-anyone standard (m3.material.io/foundations/content-design)."
6
+ license: open
7
+ ---
8
+ # Voice: direct-operator
9
+
10
+ **Feel:** Brisk and task-first — reads like a command line, not a conversation.
11
+
12
+ Imperative mood by default; sentence fragments are acceptable where a full sentence adds nothing ("Upload failed. Retry."). No adjectives unless load-bearing. Numerals are always digits, units abbreviated once established. No exclamation points, no rhetorical questions, no throat-clearing openers ("Please note that…"). Density over politeness — every word has to justify its presence.
13
+
14
+ ## Tone map
15
+
16
+ Voice is constant; tone dials by situation.
17
+
18
+ - **routine action:** imperative, fragments allowed
19
+ - **error:** states failure plus count or reason, no softening
20
+ - **success:** single clipped phrase, no embellishment
21
+ - **destructive confirmation:** same flat register as everything else — no added urgency language, the plainness is the safeguard
22
+
23
+ ## Examples
24
+
25
+ - **button:** "Create workspace"
26
+ - **empty state (heading + motivation):** "No records" / "Import a file or add one manually to begin."
27
+ - **error:** "Save failed. 3 fields are invalid."
28
+ - **tooltip:** "Locks the row for editing by others."
29
+ - **confirmation:** "Workspace created."
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: earnest-helper
3
+ class: c2
4
+ sourced: 2026-07-12
5
+ source: "Distilled from Intercom's PREACH framework (intercom.com/blog/preach-framework-for-customer-support-tone) — Proud, Responsible, Empathetic, Articulate, Concise, Human."
6
+ license: open
7
+ ---
8
+ # Voice: earnest-helper
9
+
10
+ **Feel:** Owns the failure, states the fix, never grovels.
11
+
12
+ First-person-plural ownership when the product is at fault ("we couldn't…"), second person when guiding the user's next step. Sentences are short and declarative; empathy is shown through precision and a clear next step rather than apology words ("sorry," "oops" are avoided). No exclamation points, even on success — confidence doesn't need punctuation. Numbers are digits throughout.
13
+
14
+ ## Tone map
15
+
16
+ Voice is constant; tone dials by situation.
17
+
18
+ - **routine action:** second person, concise, no flourish
19
+ - **error:** first-person-plural ownership ("we couldn't…"), immediate next step
20
+ - **success:** short, no exclamation, confidence without decoration
21
+ - **destructive confirmation:** states irreversibility explicitly, still no apology language
22
+
23
+ ## Examples
24
+
25
+ - **button:** "Submit request"
26
+ - **empty state (heading + motivation):** "No requests yet" / "Submit one and track its progress here."
27
+ - **error:** "We couldn't submit that request. Reconnect and try again."
28
+ - **tooltip:** "Requests are visible to your whole team once submitted."
29
+ - **confirmation:** "Request submitted."
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: editorial-composed
3
+ class: c2
4
+ sourced: 2026-07-12
5
+ source: "Distilled from Material Design's AP-style clarity standard (m3.material.io/foundations/content-design/style-guide/ux-writing-best-practices) and Atlassian's 'practical, with a wink' brand register (atlassian.design/content/writing-style), slowed to an editorial cadence."
6
+ license: open
7
+ ---
8
+ # Voice: editorial-composed
9
+
10
+ **Feel:** Measured and literate — composed sentences, unhurried but exact.
11
+
12
+ Longer, fully-formed sentences that favor a subordinate clause over a fragment; still one idea per sentence, but the idea is given room. Verbs remain the engine of the sentence rather than being buried under nominalizations. Numbers under ten are spelled out even in most UI text; digits are reserved for data-dense contexts (tables, counters, timestamps). Restraint reads as taste, not coldness — warmth comes from word choice, never from exclamation.
13
+
14
+ ## Tone map
15
+
16
+ Voice is constant; tone dials by situation.
17
+
18
+ - **routine action:** a fuller sentence, still verb-led
19
+ - **error:** composed, no blame, the fix named in a complete sentence
20
+ - **success:** a complete, satisfying sentence rather than a clipped label
21
+ - **destructive confirmation:** the most fully-formed of the four — consequence and reversibility spelled out in full
22
+
23
+ ## Examples
24
+
25
+ - **button:** "Add collection"
26
+ - **empty state (heading + motivation):** "Nothing archived yet" / "Items you archive will be kept here, in order, for as long as you need them."
27
+ - **error:** "The collection couldn't be saved. Review the highlighted fields and try again."
28
+ - **tooltip:** "Determines the order collections appear in for every viewer."
29
+ - **confirmation:** "Collection added and ready to share."
@@ -0,0 +1,29 @@
1
+ ---
2
+ id: quiet-concierge
3
+ class: c2
4
+ sourced: 2026-07-12
5
+ source: "Distilled from Shopify Polaris content fundamentals (polaris-react.shopify.com — verb-first directness, plain language, 'remove until it breaks') and Atlassian voice & tone (atlassian.design — say it once, then get out of the way)."
6
+ license: open
7
+ ---
8
+ # Voice: quiet-concierge
9
+
10
+ **Feel:** Understated and precise — says the necessary thing once, then steps back.
11
+
12
+ Short-to-medium declarative sentences, verb-first for any instruction ("Add," "Move," "Archive"). Warmth comes from precision, not adjectives — no exclamation points, no stacked modifiers, no filler words ("just," "simply," "easily"). Numbers render as digits even under ten, to keep the eye moving. Contractions are allowed ("it's," "can't") to keep the register human. If a sentence can be cut without losing meaning, cut it.
13
+
14
+ ## Tone map
15
+
16
+ Voice is constant; tone dials by situation.
17
+
18
+ - **routine action:** plain, verb-first, no ornament
19
+ - **error:** flat statement of what happened, then the fix — no apology
20
+ - **success:** states the fact and stops there
21
+ - **destructive confirmation:** names exactly what's lost, in the same even register — precision is the only warning
22
+
23
+ ## Examples
24
+
25
+ - **button:** "Add customer"
26
+ - **empty state (heading + motivation):** "No reports yet" / "Reports appear here once your first one is generated."
27
+ - **error:** "The file didn't upload. Check your connection and try again."
28
+ - **tooltip:** "Archives the record without deleting its history."
29
+ - **confirmation:** "Customer added."