agentsclimarketplace

Hierarchy and scale

Skill jpoindexter/typography-skills/skills/hierarchy-and-scale

Typography skills for AI coding agents — 20 focused skills + a /type router, extracted from 10 canonical typography books and reconciled against WCAG 2.2 and current browser behavior.

Install
npx -y skills add jpoindexter/typography-skills --skill hierarchy-and-scale

Assembled from the repository path, not quoted from the project. Check it against their README if it does not work.

2 things to look at

  • 10 days oldThe repository was created 10 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
  • 1 stars1 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.

What its author says it does

Copied from the file, not written here

Use when building or fixing a type scale, choosing heading sizes, or when a screen's importance ordering is unclear — everything looks the same weight, users miss the primary action, or headings compete. Also use when a design has drifted into a dozen ad-hoc font sizes.

SKILL.md

8.8 KB, as published. Nobody here has run it

Hierarchy and scale

Hierarchy is the reader's answer to "what do I look at, and in what order." Scale is the finite set of sizes you allow yourself so that answer stays consistent.

1. When to invoke

  • Defining a type scale for a product, site, or design system.
  • Headings compete, or everything reads at the same importance.
  • A codebase has accumulated arbitrary sizes (13px, 15px, 17px, 22px…).
  • Content structure exists but is not visible.

Do not invoke for body-copy tuning alone (body-text-and-reading) or for spacing detail (microtypography).

2. Required context

  • The content's real structure — how many genuine levels exist? Most interfaces need 3–4, not 8.
  • Whether a design system or token set already constrains sizes.
  • The densest screen the scale must serve, and the most editorial one.
  • Whether headings must survive translation (German/Finnish run long).
  • Body size, since the scale should be anchored to it.

3. Invariant principles

  • Hierarchy is relative, not absolute. A 20px heading is only a heading because the body is 16px. Define relationships, not values.
  • Size is the weakest hierarchy tool available, and the most overused. Weight, spacing, colour, position, and case all carry hierarchy. Reach for space and weight before size.
  • A scale is a constraint, not a menu. Its value is in what it forbids. If every size is available, there is no scale.
  • Fewer levels read faster. If two levels are hard to tell apart, you have one level with a spacing problem.
  • Proximity outranks size. A label sitting close to its value is bound to it more strongly than any size difference can express.

4. Context-dependent heuristics

Anchor to body size, then step outward. The body size is determined by body-text-and-reading. The scale extends from it in both directions.

Ratio selection. A modular scale multiplies each step by a fixed ratio. Brown describes it as "like a ruler… a system of measurement you can refer to as you decide on sizes and spaces."

RatioCharacterFits
1.125 (major second)Very tightDense product UI, data tools
1.200 (minor third)TightApp interfaces, dashboards
1.250 (major third)BalancedGeneral product + marketing
1.333 (perfect fourth)OpenContent sites, docs
1.414–1.500DramaticEditorial, landing pages
1.618 (golden)Very dramaticDisplay-led pages; too coarse for UI

Larger ratios give obvious hierarchy and too few usable mid sizes. Smaller ratios give many usable sizes and weak distinction. Dense UI wants a small ratio; editorial wants a large one. A product with both often needs a small ratio plus a few deliberate display sizes outside it.

The classic scale is a legitimate alternative. 6, 7, 8, 9, 10, 11, 12, 14, 16, 18, 21, 24, 36, 48, 60, 72 — not a constant ratio, but centuries of use, with a recurring 2:1 (6/12/24/48). Rutter notes the musical analogy. Its irregularity is a feature: it's denser where you need choices and coarser where you don't.

Don't ship raw ratio output. A 1.25 scale from 16 gives 31.25, 39.0625… Round to whole or half pixels and keep the rounded value as the token.

Baseline grid. A horizontal rhythm every n pixels that every text element aligns to, so unrelated columns share a common baseline. Stocks' concrete version: a 24px baseline grid — "literally, a line every 24 vertical pixels" — suits body type with a 24px line-height. Smaller text at 12px line-height can use a 12px sub-grid, with body type aligning every two lines.

Worth it for editorial, print, and multi-column layouts where cross-column alignment is visible. Usually not worth it for dense product UI, where forcing every component onto a baseline fights the component's own padding and produces worse spacing than a simple 4/8px spacing scale. Decide deliberately rather than adopting one by default — and note that a baseline grid constrains your line-height choices, which body-text-and-reading may have already fixed for readability. If they conflict, readability wins (rule 2 over convention).

Weight and space do the work size can't. Once you have 3–4 sizes, express further distinction with weight (400/600/700), space above (a heading belongs to what follows it, so space above > space below), and case.

5. Failure patterns

PatternCauseFix
Eight heading levels, six indistinguishableScale generated, not designedCut to the levels content actually has
Everything looks equally importantOnly size varies, and barelyAdd weight and spacing contrast
Heading looks attached to the paragraph above itSymmetric marginsMore space above than below
Scale looks fine in English, breaks in GermanTested on short stringsTest with longest supported locale
Marketing hero and dashboard can't share a scaleOne ratio forced on bothSmall ratio for UI + explicit display steps
22px appears once, off-scaleNo enforcementTokenize; make off-scale values impossible
h1 chosen for size, not structureVisual level conflated with semantic levelKeep heading level semantic; style separately

6. Evaluation procedure

  1. List the real content levels. Name them by role, not by number.
  2. Confirm each level has a distinct job. Merge any that don't.
  3. Squint at the rendered screen. Does the intended reading order emerge?
  4. Grayscale it. Hierarchy that depends on colour alone fails here — and fails for colour-blind users.
  5. Grep the codebase for font-size declarations. Every one must be on-scale.
  6. Render the longest real string at each level, in the longest locale.
  7. Zoom to 200%. Confirm levels remain distinguishable.
  8. Verify heading semantics (h1…h6) are sequential and independent of visual size.

7. Output format

Body anchor: <size>
Ratio: <n> (<name>) — chosen because <density/editorial reasoning>
Scale:  <role>  <size>/<line-height>  <weight>  <space-above>
        ...
Levels: <n> semantic, <n> visual
Non-size hierarchy: <weight | space | case | colour>
Checks: squint <pass/fail> · grayscale <pass/fail> · 200% <pass/fail> · longest-locale <pass/fail>
Off-scale values found: <list or none>

8. Examples

Analytics dashboard, dense, body 14px.

Dense data UI, so a small ratio: 1.2 (minor third). From a 14px body: 14 → 16.8 → 20 → 24, rounded to 14/17/20/24. Only three levels above body, because the content has exactly three (page title, section, card title). Distinction between card title and section comes mostly from weight (600 vs 400) and space above, not size — at 1.2 the size step alone is too subtle to carry it.

Marketing site sharing a design system with that dashboard.

Don't re-ratio the system. Keep the 1.2 UI scale for all interface chrome and add two explicit display steps (48, 64) outside it for hero use only, tokenized as display-1/display-2 so they can't leak into UI. This keeps one system while letting the editorial surfaces breathe.

9. Counterexamples

  • ❌ "Use the golden ratio, it's the most harmonious." — 1.618 from a 16px body gives 16 → 25.9 → 41.9 → 67.8. There is no usable size between body and a large heading. Fine for a poster, unusable for an interface.
  • ❌ "Generate the scale and use every step." — A scale's value is exclusion.
  • ❌ "Make it an h1 because it should be big." — Heading level is document structure and is read by assistive technology. Style is separate.
  • ❌ "Add a size between 16 and 20 for this one label." — That's how a scale dies. Solve it with weight or space.
  • ❌ "The hierarchy works — the primary action is blue." — Fails in grayscale and for colour-blind users. Colour may reinforce hierarchy, never carry it alone.

10. Source citations

  • Lupton, Thinking with Type 3e — modular scales; "a type scale is a selection of type sizes based on history or mathematics"; preset sizes reflect historical type sizes.
  • Rutter, Web Typography — the classic scale (6…72), the recurring 2:1 ratio, and the musical analogy.
  • Brown, Flexible Typesetting — the modular scale as a ruler, a system of measurement tailored to the composition.
  • Latin, Better Web Typography — modular scale and meaningful typography; heading relationships.
  • Santa Maria, On Web Typography — typographic scales and rhythm; eyeballers vs. system-builders.
  • Stocks, Universal Principles of Typography — a typographic scale is already a design system; size, weight, and spacing imply order.

Keep looking

Skills are one crate of 328,083. Ordering is by how many stacks a row turns up in, so the top of any crate is what has actually been picked rather than what has the most stars.