Typography Audit
78 rules in 10 categories for web typography. Every finding names file, rule, and fix.
- IS: typography only: font loading, sizing, punctuation, spacing, hierarchy, text layout, OpenType features, typeface pairing, brand type, display type.
- IS NOT: broad UI review (accessibility, forms, navigation: use
ui-designAudit mode), or a redesign (new typefaces, scales: useui-designDirection mode).
Audit Workflow
Track this checklist:
- Scope to changed files unless a full sweep is requested. For a PR, use the diff against its actual base merge-base, including committed changes, filtered to
.css,.scss,.html,.tsx/.jsx, and template files. - Map code to categories via the signal table; skip categories with no signal.
- Load rule files by prefix (
rules/font-*.md, etc.), only for the categories the signals selected. - Run categories in priority order so CRITICAL findings surface even if the audit is cut short.
- After fixes, re-run only the rules that produced findings, then finalize the report.
Scoping Signals → Categories
Rule Categories by Priority
Category map and impact rationale: rules/_sections.md. Each rule file gives why it matters plus an incorrect and a correct example. Category impact reflects the category's worst-case rules; report findings with the rule's own frontmatter impact, which frequently differs (e.g. brand-color is HIGH inside the MEDIUM brand- category because it holds the WCAG contrast floor).
Review Output Contract
Report findings as:
- Group by file; order by impact within file.
- Every finding: impact tag, rule ID,
file:line, one-line issue, fix. - Include clean files as
✓ passso coverage is visible. - End with a summary: counts per impact level.
Gotchas
- Don't preload every rule file. Load only the prefixes the signal table selects; a full load spends the budget on categories with no signal in scope.
- Report the rule's frontmatter
impact, never the category's. Two rules get misreported most:brand-coloris HIGH (an accessibility floor, not a brand nicety) andpunct-daggersis LOW-MEDIUM (decoration, despite sitting in a CRITICAL category). - Punctuation rules apply to rendered copy only. Flagging straight quotes or
--inside<code>,<pre>, or JS/TS string literals is a false positive; "fixing" them breaks the code. - Confirm the rendered font and computed styles through
ui-verificationwhen a finding depends on them. A CSS declaration alone does not prove which face loaded. - Don't flag missing OpenType features without confirming the loaded font ships them. Browsers silently ignore unsupported
font-feature-settingstags, so the fix does nothing. - Every finding needs
file:lineand a concrete fix; an unactionable finding forces a redo. - An audit is not a redesign. Proposing new pairings or scales turns a 10-minute review into a design project; flag the issue and route redesign asks to
ui-design. - Don't equalize priorities. A LOW-MEDIUM
display-nit above a CRITICAL faux-bold finding buries what actually looks broken.
Related Skills
ui-designAudit mode: broad frontend quality (accessibility, forms, navigation, motion); its typography coverage is shallower.ui-designDirection mode: choosing typefaces, scales, and visual direction from scratch; run when a finding becomes a redesign request.ghostwriter: heading and label wording. This skill governs only the casing of that copy (punct-case-rules).
Maintenance only: evals/evals.json contains regression scenarios for changes to this skill; it does not load during a user task.

