Web Typography logo

Web Typography

Organization
KyaniteLabs
web-typography

Use when a web product needs a contextual type system, resilient font loading, multilingual glyph or wrap coverage, or readable hierarchy across operational and editorial surfaces.

Overview

PublisherKyaniteLabs
Repositorytastecheck
Skill nameweb-typography
Stars
10
Forks
7
Bundled files
8
LicenseMIT
Links
  • Markdown instructions

    A SKILL.md file the model loads on demand, so it only costs tokens when a request actually matches.

  • Works with any LLM

    AI skills are plain Markdown, not provider-specific code, so this works with GPT, Claude, Gemini, Grok, or a local model.

  • 8 bundled files

    Scripts, templates, and references the model can read while it works. Files are read-only and never executed.

  • Open source

    Published by KyaniteLabs on GitHub. Read the source before you install it.

Installation

Install the Web Typography AI skill in TypingMind to use it with any LLM, or drop it into another agent that reads SKILL.md.

1

Install in TypingMind

TypingMind installs a skill straight from its GitHub folder — it reads SKILL.md, bundles the resource files, and stores the result locally.

  1. Open the app and go to Plugins → Skills.
  2. Choose "Install from GitHub".
  3. Paste the skill folder URL below and confirm.
    https://github.com/KyaniteLabs/tastecheck/tree/main/skills/web-typography
  4. Enable the skill in any chat where you want it available.
Plugins → Skills → Add skill → From GitHub URL, then paste the folder URL and press Continue.
2

Install in another agent

Any agent that reads the Agent Skills format can use this skill — copy the folder into that agent's skills directory.

Claude Code — .claude/skills
git clone --depth 1 https://github.com/KyaniteLabs/tastecheck.git /tmp/tastecheck
mkdir -p .claude/skills
cp -r /tmp/tastecheck/skills/web-typography .claude/skills/web-typography
Restart Claude Code after copying so it picks up the new skill.

Use it in TypingMind

Enable Web Typography in any TypingMind chat and the model takes it from there. Its name and description sit in the system prompt, and the moment a request matches, the model loads the full instructions itself — you never invoke it by hand, and it costs no tokens until it is actually used.

The model loads Web Typography on its own as soon as a request matches it.

Works with any AI model

AI skills are plain Markdown instructions rather than provider-specific code, so Web Typography is not tied to the model it was written for. Install it once in TypingMind and use it with GPT-5, Claude, Gemini, Grok, DeepSeek, Mistral, Llama, or a local model you run yourself — all on your own API keys.

  • Loaded only when it is needed

    The system prompt carries just the name and description. The instructions are fetched on the first matching request, so an idle skill costs nothing.

  • Switch models mid-chat

    Because the skill is instructions rather than code, changing model does not break it — the next model reads the same SKILL.md.

Skill instructions

This is the SKILL.md content the model loads. Read it before installing — a skill is instructions your model will follow.

Web Typography

Set type for screens, not print: legible, readable, and hierarchically clear across viewports, zoom, and font preferences. Work top-down: roles, measure, scale, loading, polish. Fit reading task, language coverage, density, and brand.

The decision order

Make these decisions in sequence; each constrains the next.

  1. Font choice — A fast system stack is deliberate for operational UI. For brand, marketing, portfolio, or launch surfaces, start from the design-system interview and choose a display/body stance. Plan web-font loading (step 6) up front.
  2. Base size & measure — Start around 1rem and 45–75 characters per line; test the actual face, language, density, and viewport.
  3. Type scale — Define a small role scale. Use a modular ratio to start, then set optical values; use fluid sizing only where the role benefits.
  4. Vertical rhythm — Start body line-height around 1.4–1.6, tighten display roles, and verify clipping/spacing with the chosen face and scripts.
  5. Hierarchy & polish — Use weight/size/space contrast, text-wrap: balance on headings, pretty on body where supported, OpenType features, and optical tracking. Numeric tracking recipes are starting points, not universal values.
  6. Loading & performance — Choose font-display, preload only a genuinely critical known resource, prefer WOFF2, and metric-match the fallback where reflow matters.
  7. Accessibility pass — Check contrast, zoom to 200%, WCAG 1.4.12 text-spacing overrides, enabled zoom, and rendered justified-reading text.

Derive a type stance from use, not a sample pairing

Quick-start faces and scales show constraints, not defaults. Start from reading task, density, language coverage, brand direction, and loading budget. Public narrative, data-dense operations, and multilingual transactions may need different hierarchy and fallbacks. Record intended reading behavior plus computed-size, wrap/measure, glyph-coverage, and loading evidence; variation must change the type system without weakening those checks.

Non-negotiables (the rules that prevent the common failures)

Apply these rules to novel cases, not just the sample.

  • Use user-relative units. Prefer rem for document roles and em for components that scale with context. Pixels are not inherently inaccessible, but a pixel-only system detaches from user preferences and scales poorly.
  • Use unitless line-height. line-height: 1.5 inherits a ratio and recomputes per element; line-height: 24px inherits a computed pixel value and breaks on children.
  • Bound fluid type. Include a relative-unit contribution and test zoom/text resize: clamp(2rem, 1rem + 3vw, 4rem).
  • Constrain measure. Lines over ~75 characters lose the return sweep; under ~45 become choppy. max-width: 66ch is a high-leverage readability fix.
  • Default sustained reading to ragged text. Justification needs language-aware hyphenation, adequate measure, and rendered review or it creates rivers.
  • Control layout shift. Pair font-display with a metric-matched fallback (size-adjust + ascent/descent/line-gap-override) and measure it. This reduces font reflow but cannot support a zero-CLS claim without observation.

Role map and metric budget

Build the role map before naming faces. Separate scanning roles (labels, identifiers, tables: stable width, clear wraps, numeric behavior) from sustained reading (calmer measure, hierarchy, rhythm). Record job, size/measure, language coverage, numeric feature, fallback, and verification.

Test longest translation, accents, punctuation, dense labels, and comparison values (including tabular figures). A family is a hypothesis until loaded face and fallback render specimens without clipping, substitution, or unstable hierarchy.

For each loaded face, record fallback, metric overrides, critical reflow text, and observed layout shift. A system stack is valid when it fits; a custom face needs coverage and metric proof. Missing measurements are gates, never zero-CLS claims.

Quick-start

Use assets/starter.css for the complete scale and metric-matched font example. Keep contextual roles, readable measure, fluid sizing, language coverage, measured loading/CLS, and no duplicate reduced-motion contract here.

Canonical tokens

TokenRole
--step--2Fine print / legal / footnotes
--step--1Captions / small labels
--step-0Body text
--step-1 through --step-5Headings through display
--font-body / --font-display / --font-monoFont role stacks
--measureMax line length (~66ch)

Reference files

  • references/decision-records.md — ADR rationale/rejected alternatives; read for novel judgments and the "principle, not property" boundary.
  • references/foundations.md — web anatomy, measure, hierarchy, pairing, alignment; read for font pairing or unexplained layout problems.
  • references/fluid-scale.md — clamp() math, modular ratios, Utopia, and cqi; read for scale or container-driven type.
  • references/font-loading.md — loading, WOFF2, subsetting, variable fonts, and metric-matched fallbacks; read for custom-font or layout-shift issues.
  • references/accessibility.md — WCAG 2.2 contrast, 200% resize (1.4.4), text-spacing (1.4.12), zoom, readability, and reduced motion; read before accessibility/compliance claims.
  • references/modern-css.md — text wrapping, OpenType, text-box, punctuation, lh/cap/ ch/ic, line-clamp, and color-mix; read for polish/enhancement checks.

How to deliver

Explain the type decision, edit existing tokens, and keep unsupported features progressive. Report contrast, 200% zoom, text-spacing, loading, and glyph evidence; pair multilingual work with i18n-ready.

Completion evidence

Close with a five-field evidence ledger. Start Reason with the check ID; record an observed result or explicit verification gate.

StatusReasonRemediationEvidenceProvenance
role-map — contextual type stance and language coverage
reading-behavior — scale, measure, wrap, and numeric behavior
metrics — loading and fallback measurement
accessibility — zoom, text-spacing, and contrast result
handoff — responsive-layout boundary

Contract (generated)

Canonical detail: contract.json.

  • Route: A web interface needs a contextual type stance, scale, readable measure, or font-loading plan (+1 in contract.json); avoid: The request is to write or rewrite product copy (+1 in contract.json)
  • Exclude: Do not choose a font from examples instead of the brief (+1 in contract.json)
  • Stop / handoff: Pause when a requested font lacks required language coverage and no fallback is agreed (+1 in contract.json); receives [design-system-interview, deslop-ui, improve-existing-website, tasteroll] -> sends [responsive-layout, i18n-ready, a11y-pass, spacing-system]
  • Output: A contextual type system with tokens, loading plan, and tested reading constraints
  • Evidence: table_with_evidence with status, reason, remediation, evidence, provenance.

Bundled files

The model reads these on demand while the skill is loaded. They are exposed as readable files and are never executed.

Frequently asked questions

What does the Web Typography AI skill do?

Use when a web product needs a contextual type system, resilient font loading, multilingual glyph or wrap coverage, or readable hierarchy across operational and editorial surfaces.

Why use Web Typography on TypingMind?

Because you install it once and use it with any model. Web Typography is plain Markdown rather than provider-specific code, so the same skill runs on GPT-5, Claude, Gemini, Grok, or a local model — and you can switch model mid-chat without it breaking. TypingMind runs on your own API keys, so you pay providers directly instead of a per-seat subscription, and your skills and chats stay in your own storage.

How do I install Web Typography in TypingMind?

Open Plugins → Skills → Install from GitHub in TypingMind and paste https://github.com/KyaniteLabs/tastecheck/tree/main/skills/web-typography. TypingMind reads its SKILL.md and bundles its files and installs it as a skill you can enable per chat.

Which AI models can use Web Typography?

Any model you connect in TypingMind. AI skills are plain Markdown instructions rather than provider-specific code, so GPT, Claude, Gemini, Grok, and local models can all load this skill when a request matches it.

How many AI models can I use with Web Typography?

As many as you like. As long as a model supports skills, you can use Web Typography with it — GPT, Claude, Gemini, Grok, DeepSeek, Mistral, Llama and more — all on TypingMind with your own API keys.

Is the Web Typography AI skill free?

Yes. It is published on GitHub by KyaniteLabs under the MIT license. You only pay your own AI provider for the tokens you use.

What are AI skills?

An AI skill is a reusable instruction bundle that teaches an AI model how to do one specific task. It follows the open Agent Skills format: a SKILL.md file with a name and description, plus any scripts, templates or reference files the model may need. The model reads the instructions only when your request matches the skill, so an installed skill costs nothing until it is used.

How are AI skills different from plugins or MCP servers?

A plugin or MCP server gives a model new tools to call — code that runs somewhere and returns a result. An AI skill gives the model knowledge and process instead: how to approach a task, which steps to follow, what good output looks like. Skills are plain Markdown, so they need no server, no API key and no runtime, and they work with any model.

View all

Set up your own AI workspace now

Get notified about new features and future giveaways by subscribing to our newsletter 👇