plugins/vercel/skills/geist/SKILL.md
Expert guidance for Geist, Vercel's default typography system and font family for precise Next.js interfaces. Use when configuring Geist Sans, Geist Mono, or Geist Pixel, setting up font imports, or applying Vercel typography and aesthetic guidance.
npx skillsauth add openai/plugins geistInstall 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 an expert in Geist (v1.7.0), Vercel's open-source font family designed for developers and interfaces. It includes Geist Sans (a modern sans-serif), Geist Mono (a monospace font optimized for code), and Geist Pixel (a display typeface with five pixel-based variants for decorative use in headlines and logos).
npm install geist
// app/layout.tsx
import { GeistSans } from 'geist/font/sans'
import { GeistMono } from 'geist/font/mono'
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" className={`${GeistSans.variable} ${GeistMono.variable}`}>
<body className={GeistSans.className}>
{children}
</body>
</html>
)
}
// app/layout.tsx
import { GeistSans } from 'geist/font/sans'
import { GeistMono } from 'geist/font/mono'
export default function RootLayout({ children }: { children: React.ReactNode }) {
return (
<html lang="en" className={`${GeistSans.variable} ${GeistMono.variable}`}>
<body>{children}</body>
</html>
)
}
// tailwind.config.ts
import type { Config } from 'tailwindcss'
const config: Config = {
theme: {
extend: {
fontFamily: {
sans: ['var(--font-geist-sans)'],
mono: ['var(--font-geist-mono)'],
},
},
},
}
export default config
Then use in components:
<p className="font-sans">Geist Sans text</p>
<code className="font-mono">Geist Mono code</code>
Geist fonts expose CSS custom properties:
| Variable | Font |
|---|---|
| --font-geist-sans | Geist Sans |
| --font-geist-mono | Geist Mono |
Use them in CSS:
body {
font-family: var(--font-geist-sans);
}
code, pre {
font-family: var(--font-geist-mono);
}
Both Geist Sans and Geist Mono support these weights:
| Weight | Value | |---|---| | Thin | 100 | | Extra Light | 200 | | Light | 300 | | Regular | 400 | | Medium | 500 | | Semi Bold | 600 | | Bold | 700 | | Extra Bold | 800 | | Black | 900 |
Geist is not just a font import. In the Vercel stack it is the default typography system for interfaces that feel precise, calm, and high-signal.
<h1 className="text-4xl font-medium tracking-[-0.04em]">Large page title</h1>
<p className="text-sm leading-6 text-muted-foreground">Supporting copy</p>
<div className="font-mono text-[12px] text-muted-foreground tabular-nums">Dense metadata</div>
<h2 className="text-lg tracking-tight">Section heading</h2>
<h2 className="text-xl tracking-tight">Large section heading</h2>
<label className="text-sm">UI label</label>
Avoid defaulting entire interfaces to text-base.
Optimize font loading by specifying subsets:
import { GeistSans } from 'geist/font/sans'
// GeistSans automatically uses the 'latin' subset
// For additional subsets, configure in next.config.js
Geist Pixel is a bitmap-inspired display typeface family designed for headlines, logos, and decorative use. It ships five variants, each built on a different geometric primitive:
| Variant | Description | |---|---| | Geist Pixel Square | Square-based pixel grid | | Geist Pixel Grid | Dense grid pattern | | Geist Pixel Circle | Circular dot matrix | | Geist Pixel Triangle | Triangular pixel forms | | Geist Pixel Line | Line-based pixel strokes |
Geist Pixel is intended for display sizes only — use Geist Sans for body text and Geist Mono for code.
Coding ligatures are no longer enabled by default. They have been moved from contextual alternates to Stylistic Set 11 (SS11). If you rely on coding ligatures in your editor or terminal, enable SS11 explicitly:
"editor.fontLigatures": "'ss11'"font-feature-settings: 'ss11' 1;Geist 1.7.0 includes a redesigned Cyrillic script for all Geist Sans and Geist Mono styles.
next/font for zero-layout-shift font loading--font-geist-sans and --font-geist-mono for flexible stylinggeist/font/sans and geist/font/mono (not geist/font)development
Use when the user wants to spin up / create / launch / provision a DigitalOcean droplet (or "a remote dev box on DO") and connect to it from Codex as a remote SSH workspace.
data-ai
Search through Microsoft Teams chats or channels, triage unread or recent activity, draft follow-ups, and manage Planner tasks through connected Teams data.
tools
Motion / animation context for the `use_figma` MCP tool — animating Figma nodes via manual keyframes, animation styles, easing, and timeline duration. Load alongside figma-use whenever a task involves adding, editing, or inspecting animation on a node.
development
SwiftUI ↔ Figma translation. Use whenever the user mentions Swift, SwiftUI, iOS, iPhone, or iPad — in EITHER direction — translating a Figma design into SwiftUI (design → code), or pushing SwiftUI views / screens / tokens back into a Figma file (code → design). Triggers on phrases like 'implement this Figma design in SwiftUI', 'build this screen in Swift', 'push this SwiftUI view to Figma', 'mirror my Swift code in a Figma file', or whenever a Figma URL appears alongside `.swift` files / an `.xcodeproj`. Routes to a direction-specific reference doc; loads alongside `figma-use` for the code → design path.