Skip to content
Back to skills

Best Practices Font

ASecurity

Evidence-first typography and font-system guidance for digital products, websites, portfolios, dashboards, and design systems. Use when choosing or changing fonts, pairing typefaces, auditing overused font warnings, creating meaningful typographic hierarchy, validating font loading/provenance, or mapping typography to a visual world from best-practices-bespoke-design.

  • 6 stars
  • 0 votes
  • 0 copies
  • 7 views
  • Added September 11, 2026
designgitperformance

Works with

  • terminal

Security analysis

A100/100

Pro scans all 10 files and shows the line behind each finding

Scanned September 11, 2026

npx -y skills add grahama1970/agent-skills --skill best-practices-font --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Best Practices Font?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Best Practices Font
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/grahama1970-best-practices-font/badge)](https://www.skillsdirectory.com/skills/grahama1970-best-practices-font)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: best-practices-font
description: >
  Evidence-first typography and font-system guidance for digital products,
  websites, portfolios, dashboards, and design systems. Use when choosing or
  changing fonts, pairing typefaces, auditing overused font warnings, creating
  meaningful typographic hierarchy, validating font loading/provenance, or
  mapping typography to a visual world from best-practices-bespoke-design.
triggers:
  - choose fonts
  - pair fonts
  - font hierarchy
  - typography hierarchy
  - type direction
  - overused font warning
  - font provenance
  - world-fit typography
  - best practices font
provides:
  - font-world-contract
  - type-role-hierarchy
  - font-pairing-rationale
  - font-proof-receipt
  - font-template-residue-audit
composes:
  - best-practices-bespoke-design
  - brave-search
  - agentic-evals
complies:
  - best-practices-skills
  - best-practices-bespoke-design
taxonomy:
  - design
  - typography
  - validation
  - accessibility
runtime_self_improvement: basic
domains:
  - marketing
disciplines:
  - ui-design-engineering
  - content-creation
  - engineering-standards
---

# Best Practices: Font Systems

## Position

Fonts are not decoration. A font system is a contract between the product's
world model, the user's reading job, and the browser's rendered behavior.

Use this skill to select, pair, tune, and audit type. For bespoke work, typography
inherits the world model from `best-practices-bespoke-design`; this skill owns
the font-specific decision and proof.

## Required Inputs

Collect or mark missing:

- visual-world brief, product/design contract, or incumbent typography source;
- audience, reading setting, primary user job, and dense/awkward content;
- required type roles: display, reading, utility, data, annotation, code;
- existing fonts, licenses, asset locations, and loading method;
- language coverage, fallback needs, browser targets, and performance budget;
- mechanical detector output, if a warning triggered the task.

Do not invent brand values to justify a font. If the visual world is missing,
create or request it before making a major type change.

## Workflow

1. **Map roles before families.** Name each typographic role and what it must do.
   Use `references/pairing-and-hierarchy.md` when choosing or pairing faces.
2. **Fit the world model.** Compare font character to the premise: posture,
   width, contrast, terminals, rhythm, tone, and whether the face strengthens the
   user's job. Use `references/world-fit.md`.
3. **Reject residue.** Treat overused fonts, mono-as-costume, one global font,
   generic startup display italics, and card-label microtype as warnings to
   resolve or explicitly justify.
4. **Prove delivery.** Prefer self-hosted selected assets for production unless
   broad language coverage or product constraints justify runtime provider
   requests. Record source, license, subset, weights, fallbacks, and preload.
5. **Render stress cases.** Inspect browser screenshots, not just CSS. Minimum:
   mobile, tablet, desktop, long headline, dense section, 200% text zoom, and
   fallback-font behavior when feasible.
6. **Emit a receipt.** Validate receipts with
   `scripts/validate_font_receipt.py`. A font receipt can prove a bounded type
   decision; it cannot prove full brand distinctiveness, accessibility, or
   performance alone.

## Acceptance Gates

Use `PASS`, `FAIL`, `NOT_TESTED`, or `BLOCKED`.

| Gate | Must Prove |
| --- | --- |
| F0 World Input | Type decision cites a visual world or marks it missing. |
| F1 Role Map | Display, reading, utility, data/annotation, and code roles are separated by structure, not color alone. |
| F2 Pairing Fit | Families have non-overlapping jobs and a documented relationship. |
| F3 Hierarchy | Repeated roles have stable size, weight, measure, leading, and spacing. |
| F4 Reading | Body copy remains readable at real widths and text zoom. |
| F5 Distinctiveness | The display voice avoids unexamined overused-font/template residue. |
| F6 Delivery | Assets, license/source, fallback, preload, and subset decisions are recorded. |
| F7 Accessibility | Contrast, reflow, zoom, focus, and language/fallback behavior are tested or marked missing. |
| F8 Render Proof | Screenshots and computed styles show the intended fonts actually load. |
| F9 Receipt Integrity | `font-receipt.json` validates and names what remains unproved. |

`READY` is only legal when every required gate is `PASS`.

## Anti-patterns

Reject:

- treating a font pairing as a complete visual world;
- picking a face because it is popular, trendy, or "premium" without source fit;
- suppressing overused-font warnings without a receipt;
- using monospace for human labels, navigation, or marketing copy;
- using a display face for dense reading because it looks distinctive at hero size;
- adding multiple families when size, weight, spacing, and measure would solve the hierarchy;
- loading broad remote font CSS when a small self-hosted subset satisfies the product need;
- claiming accessibility, performance, or bespoke distinctiveness from typography alone.

## Output Shape

Return:

```markdown
## Type Position
One sentence naming the typographic point of view.

## Role Map
Families, roles, weights, sizes, measures, and fallback behavior.

## Fit Rationale
How the type matches the world model and user job.

## Residue Removed Or Retained
Warnings resolved, warnings intentionally retained, and why.

## Evidence
Commands, screenshots, computed styles, asset paths, and receipt path.

## Acceptance
Gate table with PASS/FAIL/NOT_TESTED/BLOCKED.

## Next Slice
Smallest verifiable typography change still needed.
```

## Stop Conditions

Stop and report the blocker when:

- the world model or product truth is unavailable for a major type change;
- a font license, source, or asset provenance cannot be established;
- the proposed face harms readability or accessibility;
- changing typography would alter an approved brand direction without authority;
- rendered proof or receipt validation cannot be collected.

## Resources

- `references/world-fit.md` — fit typography to a world model.
- `references/pairing-and-hierarchy.md` — pairing and hierarchy rules.
- `references/proof.md` — receipt and screenshot requirements.
- `scripts/validate_font_receipt.py` — validate machine-readable receipts.

Files in this skill

  • SKILL.md6.2 KB
  • agents/openai.yaml231 B
  • fixtures/agentic_eval.json825 B
  • fixtures/invalid-font-receipt.json160 B
  • fixtures/valid-font-receipt.json1.2 KB
  • references/pairing-and-hierarchy.md2 KB
  • references/proof.md1.2 KB
  • references/world-fit.md1.6 KB
  • sanity.sh569 B
  • scripts/validate_font_receipt.py3.2 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.