onewave-ai/typography-scale-builder
Build a complete typographic system -- modular or fluid type scale, line-height and tracking per size, weight roles, and vertical rhythm -- exported as tokens, Tailwind config, and CSS. Pairs with font-pairing-suggester (which picks the fonts; this builds the system they live in).
npx skills add https://github.com/OneWave-AI/claude-skills --skill typography-scale-builder
Typography is the design system's skeleton: most products that look "off" have inconsistent type long before they have bad colors. Build the scale as a system with roles and math, then make the codebase actually use it. Input: the chosen fonts (or run font-pairing-suggester first), the product type (marketing site, dense app UI, long-form editorial), and the target range of devices.
clamp() per step so headings scale between viewport bounds without breakpoint jumps; fixed steps are fine for app UI.display, h1-h4, body-lg, body, body-sm, caption, overline, code. Each role = size step + line-height + tracking + weight + family, as one token. Components consume roles; nobody composes raw steps.text-wrap: balance on headings, and measure limits (65-75ch for body prose) so line length stays readable at every viewport.typography-tokens.json, Tailwind fontSize config (size + line-height + tracking tuples per role; v4 @theme), typography.css with role classes, and TYPOGRAPHY.md. Then map the step-1 inventory onto roles and replace -- with a per-case flag on anything that does not cleanly map (it is either a missing role or drift to delete).text-h2, never text-[28px] -- and no role means the component asks the system for one, not the developer for a number.clamp() minimum must stay readable on a 320px phone and the max must not blow the layout on ultrawide.Take onewave-ai/typography-scale-builder from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.