Readme
Using Varde
Varde
Build static HTML pages styled with Varde, Variant's design system, by linking Varde's CSS from its CDN and using its real utility-class and component vocabulary — never bundling, copying, or reimplementing Varde's CSS.
Output must be servable as plain static files: no build step, no npm install, no JS framework required for styling (a little inline <style> for one-off page-shell layout, and native HTML like popover, are fine — see references/page-shell.md). The only network dependency at page-load time is Varde's CDN stylesheet.
When to use
Any request to build or style a static page/small site "like Varde" or "in the Variant design system" — landing pages, internal tools' UI, a one-off form, a marketing page, etc. If the request is specifically about turning markdown/documentation content into a documentation site, prefer the varde-docs skill instead — it builds on this skill and adds markdown-conversion and multi-page-nav-generation logic on top.
Reference material
Read these before generating anything — they're the difference between output that looks right and output that's subtly wrong:
- references/utility-classes.md — verified layout, spacing, typography, color, and border utility classes.
- references/components.md — button, form control, table, link, icon, and spinner markup.
- references/page-shell.md — the HTML boilerplate, a single-page template, a multi-page header+sidebar-nav shell, and color-mode usage for intent/status coloring.
- references/pitfalls.md — classes and patterns that look plausible (some are even in Varde's own knowledge-base docs) but aren't actually shipped. Check this before using anything color- or variant-related that you're not 100% sure of.
Steps
-
Start from the boilerplate
<head>inpage-shell.md: doctype,<html lang="…" class="fg-default bg-surface-base">, the Varde CDN stylesheet link (https://varde.variant.dev/v/latest/styles.css), and the Varde favicon link. Never add a separate font<link>— Varde's font is baked into that stylesheet. -
Build markup with verified classes only. Use
utility-classes.mdfor layout/spacing/typography/color/borders andcomponents.mdfor buttons/forms/tables/links/icons/spinners. No class prefix — classes are short and unprefixed (stack,p-m,fg-muted), and variants aredata-*attributes (data-color,data-variant,data-size), not modifier classes. -
Wrap long-form/prose content in
.typeset— it styles headings, lists, tables, links, and inline code automatically, with correct vertical rhythm, with no extra classes needed inside it. -
Use
<color-mode palette="…">for intent/status coloring, never a made-up utility class — Varde has no shippedbg-danger-*/fg-success-*classes. Seepage-shell.mdfor the palette list andpitfalls.mdfor why. -
Check
pitfalls.mdbefore using anything you're not sure exists. A few classes/variants are documented in Varde's own knowledge base but aren't actually in the shipped CSS (e.g.fg-inverted, buttondata-variant="tinted", any intent-color utility class, icons beyondplus/pencil/cage). Using them silently produces unstyled markup — worse than an error, since it's easy to miss. -
If a genuinely new visual need isn't covered by a verified class, write a small scoped
<style>block (as the multi-page shell inpage-shell.mddoes for its grid layout) rather than guessing at a utility class name that might not exist. -
Tell the user what they got: the output is fully static (can be opened directly or served by any static file server), and it depends on Varde's CDN being reachable at page-load time — by design, since the point is to never bundle the design system.
From the skill's README
Skill: Varde
Use the Varde design system
- See design system source: https://github.com/varianter/varde
- Documentation: https://varde.variant.dev/