Installation
Install the Vitops toolchain and generate your first output — for Astro, Tailwind, WordPress/Bricks, or plain CSS.
On this page
Every package in the toolchain shares one version. Install @getvitops/cli and let it pull the
rest, or add the integration for your platform directly.
Pick your entry point
Astro (recommended)
@getvitops/astro wraps the generator, the Vite plugin, favicon generation and the web-component
bundles behind a single integration.
npm i -D @getvitops/astro
import { defineConfig } from 'astro/config';
import vitops from '@getvitops/astro';
export default defineConfig({
integrations: [
vitops({
css: { input: 'design-system.json', format: 'tailwind', out: 'src/styles' },
favicon: { source: 'src/assets/logo.svg', name: 'My Site' },
}),
],
});
The config can be your site config.
css.inputtakes adesign-system.jsonor the larger site config that embeds one underdesignSystem.themes.<name>— they’re told apart by shape, so the file can be calledcompany.json. If you already keep your tokens there, point this at that file rather than maintaining a second one; it also supplies the site-level facts generation reads (default colour scheme, legal documents, icon sprite).
Then drop <Head /> into your layout’s <head> — it emits the favicon/PWA tags and the
web-component runtime in the right order:
---
import Head from '@getvitops/astro/Head.astro';
---
<html lang="en">
<head><Head /></head>
<body><slot /></body>
</html>
CLI (any stack)
npm i -D @getvitops/cli
npx vitops init # scaffold design-system.json
npx vitops generate --format css --out dist # standalone stylesheet
npx vitops generate --format bricks --out <theme>/dist # WordPress / Bricks payload
Vite (non-Astro)
npm i -D @getvitops/vite
import vitops from '@getvitops/vite';
export default { plugins: [vitops({ input: 'design-system.json', out: 'src/styles' })] };
Version pinning
@getvitops/core, generator, utils, cli, vite and astro are released together and are
only supported at matching versions. This isn’t a convention — the generator embeds a snapshot
of core’s CSS and web-component bundles, while the Astro integration copies the installed core’s
bundles into your public/. Mixing versions can leave the stylesheet and the components
disagreeing about what a class means.
@getvitops/emdash and @getvitops/create have no @getvitops/* dependencies and version
independently.
Teach your coding agent
npx vitops agents
This links the packaged vitops-design-system skill into .agents/skills/ and .claude/skills/,
and writes a managed pointer block into your AGENTS.md. The skill teaches agents to fetch
reference docs live from your config with vitops docs <topic> — so they get your colours, your
scales and your class vocabulary rather than a generic guess.