skills/web-design/typography-master/SKILL.md
Expert web typography consultant. ALWAYS use this skill when working on any web design task that involves choosing fonts, type pairings, typographic hierarchy, or font-related decisions. Triggers include: "pick a font", "what font should I use", "typography for my site", "font pairing", "heading font", "body font", "what typeface fits", or any moment during web page/UI design when fonts come up — even if the user just says "make it look better". When triggered, this skill instructs Claude to recommend a curated shortlist of 4–7 fonts, explain the rationale for each, then build an interactive HTML font picker page with a live hero section so the user can visually compare fonts and make an informed choice. Also covers type scale, line height, letter spacing, and variable font usage for production-ready web typography.
npx skillsauth add michailbul/laniameda-skills typography-masterInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
You are now operating as a typography expert. Your job is to help the user pick the perfect typeface(s) for their web project, then make the choice visual and interactive.
Before recommending fonts, extract the following from the conversation (ask if missing):
If the user has already provided enough context (e.g. they showed you a design or described a project), skip directly to Phase 2.
Based on context, select 4 to 7 fonts from the curated library in references/font-library.md.
Rules for selection:
For each font, provide:
#precise #modern #editorial)After presenting the shortlist, say:
"Let me build you a live font picker so you can see all of these in action on a real hero section."
Then generate a single self-contained HTML file using the template and rules below.
Structure:
Content to use in the hero:
Technical specs:
<!-- Load all fonts via Google Fonts @import in one <link> or <style> block -->
<!-- Font switching via JS: document.documentElement.style.setProperty('--hero-font', fontName) -->
<!-- CSS custom property --hero-font drives all text in the hero -->
<!-- Smooth transition: font-family change + opacity flash (150ms) for visual feedback -->
Visual design of the picker page:
#0a0a0a or #0f0f0f) unless user's project calls for lightFont loading:
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
<!-- Generate one combined Google Fonts URL for all selected fonts -->
<!-- Example: https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&family=Playfair+Display:wght@400;700&display=swap -->
Each font entry is a complete type system, not just one font family. Define a display, heading, sub, body, and ui role per system. Switching a font applies ALL roles simultaneously.
JS Font Switcher pattern:
const systems = [
{
name: 'Syne',
class: 'Geometric Sans · Display',
tags: ['#avant-garde', '#bold', '#editorial'],
// Each role maps to a CSS custom property
vars: {
'--font-display': "'Syne', sans-serif", // hero / giant headlines
'--font-heading': "'Syne', sans-serif", // H1, H2, H3
'--font-sub': "'DM Sans', sans-serif", // H4, subheadings, callouts
'--font-body': "'DM Sans', sans-serif", // paragraphs, lists
'--font-ui': "'DM Sans', sans-serif", // labels, nav, buttons, captions
}
},
// ... one system object per font option
];
function switchSystem(index) {
const sys = systems[index];
// Apply ALL CSS vars at once
Object.entries(sys.vars).forEach(([prop, val]) => {
document.documentElement.style.setProperty(prop, val);
});
// flash, update pills, update details panel
}
CSS must use ALL five custom properties throughout:
:root {
--font-display: 'Syne', sans-serif;
--font-heading: 'Syne', sans-serif;
--font-sub: 'DM Sans', sans-serif;
--font-body: 'DM Sans', sans-serif;
--font-ui: 'DM Sans', sans-serif;
}
.hero-headline { font-family: var(--font-display); }
h1, h2, h3 { font-family: var(--font-heading); }
h4, .subhead { font-family: var(--font-sub); }
p, li, blockquote { font-family: var(--font-body); }
nav, label, button, caption, .tag { font-family: var(--font-ui); }
Font details panel should show all roles, e.g.:
After the user sees the picker, help them decide:
references/type-spec-template.md)Use a modular scale (1.25 or 1.333 ratio). Example at 1.333:
base: 16px
sm: 12px
md: 16px
lg: 21px
xl: 28px
2xl: 37px
3xl: 50px
4xl: 67px
references/font-library.md — Curated list of 80+ fonts organized by category (geometric sans, humanist sans, serifs, display, monospace) with personality descriptorsreferences/type-spec-template.md — Final production typography specification template to deliver after font is chosenreferences/pairing-guide.md — Rules and examples for heading/body font pairingsLoad a reference file when the task requires it (e.g., load font-library when building the shortlist, load pairing-guide when user asks about combining two fonts).
development
Seedance 2.0 video prompt director. Converts plain-text scene descriptions into production-ready bilingual EN+ZH video prompts optimized for the Seedance 2.0 video generator. Handles all Seedance work — action (combat, pursuit, stunts), general (landscapes, journeys, atmosphere), dialogue (confrontations, negotiations, interrogations), and non-narrative commercial work (ad spots, music videos, fashion films, automotive inserts, product shots, pet/character demos, cutaway montages, social reels for TikTok / Reels / YouTube Shorts). Use whenever the user wants to create a Seedance video prompt, mentions Seedance, or describes a cinematic scene for video generation. For NARRATIVE screenplay-integrated work, use seedance-screenwriter instead.
development
Write Seedance 2.0 prompts in screenplay format for narrative storytelling — when the prompts will be cut into a film, short, or scene. Use whenever you're generating shots that will be edited into a continuous story with dialogue, character beats, scene continuity, or coverage. Pairs with the screenwriter skill — read the scene's screenplay first (or the project's `scene.md` if it exists), then translate each shot into a Seedance prompt that reads as a screenplay page, not as an engineering spec.
documentation
Скилл-инструмент для сценариста полнометражного фильма или сериала. Используй всегда, когда пользователь хочет писать сценарий, поэпизодник, разрабатывать сцены, бит-шит, диалоги, делать ревизии, считать экранное время, резать длину, работать с персонажами или мифологией истории. Скилл работает на основе методологий Макки, Кэмпбелла и Аристотеля, выдаёт Hollywood-формат .docx, поддерживает билингвальные сценарии (диалог на одном языке + перевод в скобках под ним), и помогает аудитировать структуру по причинности и движению ценности. Скилл не привязан к конкретной истории — пользователь приносит свою.
development
Extract shot composition DNA from any car photograph into structured JSON — camera angle, lens, framing, lighting — stripped of car-specific details. Then reuse extracted angles with any car identity to generate new images at scale. Use when: extracting angles from reference photos, building a shot library, batch-analyzing car photography, replicating a great angle with a different car, running extraction pipelines in Freepik or Flora. Triggers: "extract this angle", "steal this composition", "shot DNA", "analyze this car photo", "replicate this shot with my car", "batch extract angles", "car photography analysis", "angle extraction", "build a shot library".