@gapra/vyre-skill

AI skill for frontend design: 50+ UI styles, 177 palettes, 90+ UX rules. Works with Claude Code, Cursor, Windsurf, Copilot, Codex.
1,268
Install
npm install @gapra/vyre-skill
Latest Version:0.6.0
License:MIT
Last Updated:May 5, 2026
Links: npm
Maintainer: gapra

@gapra/vyre-skill

Gives your AI coding agent the design taste of a senior frontend engineer.

An Agent Skill that loads 50+ UI styles, 177 OKLCH-verified color palettes, and 90+ UX rules into Claude Code, Cursor, Windsurf, GitHub Copilot, or any agent that reads Markdown.

npm install @gapra/vyre-skill
# or
pnpm add @gapra/vyre-skill

npm npm downloads license


Why

Without this skill, agents default to raw hex values, inconsistent spacing, inaccessible contrast, and no coherent visual system. With it:

Without With
background: #3b82f6 var(--vyre-interactive-primary)
No focus ring :focus-visible ring from token
WCAG unknown APCA Lc 60+ guaranteed
Random spacing 8-px grid, always
Generic look Chosen from 50+ named styles

Quick start by tool

Claude Code

mkdir -p .claude/skills
cp -r node_modules/@gapra/vyre-skill .claude/skills/vyre

The skill loads automatically when you ask for UI work — no extra config needed.

Cursor

Create .cursor/rules/vyre.mdc:

---
description: Vyre design system. Use for all UI, styling, components, colors, layout, a11y work.
globs: ["**/*.tsx","**/*.vue","**/*.svelte","**/*.css","**/*.html"]
alwaysApply: false
---

Then paste the contents of node_modules/@gapra/vyre-skill/SKILL.md below the frontmatter.

Windsurf

Create .windsurf/rules/vyre.md and paste the contents of node_modules/@gapra/vyre-skill/SKILL.md.

GitHub Copilot

Add to .github/copilot-instructions.md:

This project uses the Vyre design system (@gapra/vyre-skill).
For all UI work, always use var(--vyre-*) CSS custom properties — never raw hex or px values.
Full rules: node_modules/@gapra/vyre-skill/SKILL.md

Any agent (AGENTS.md)

cat node_modules/@gapra/vyre-skill/SKILL.md >> AGENTS.md

What's inside

50+ UI styles

Named, machine-readable recipes — each with do/don't rules, required tokens, performance cost, and accessibility notes.

Category Styles
Surface morphisms glassmorphism, neumorphism, claymorphism, skeuomorphic
Flat & modern flat, clean-modern, minimal, material-3, fluent-2
Atmospheric aurora, dreamcore, vaporwave, synthwave, sunset-gradient
Editorial swiss, magazine, broadsheet, monospace-doc, terminal
Brutalist brutalism, neo-brutalism, anti-design, raw-html
Bento / dashboard bento, dashboard-dense, financial-dense, admin
Playful memphis, blob, claymation, sticker, 3d-extruded
Retro retro-futurism, y2k, 8-bit, terminal-amber, crt
Premium dark-luxury, gallery-monochrome, apple-store-clean
Functional high-density-table, kiosk, accessibility-first

Browse: references/styles/_index.json

177 color palettes

OKLCH-native palettes, each validated for APCA Lc 60 (body text) and Lc 45 (UI elements). Tagged for filtering.

Tag Example palettes
editorial nordic, paper-white, newsprint, gallery, broadsheet
brand aurora, electric-violet, coral-reef, ocean-depth
dashboard admin, data-viz, financial, slate-pro
neon cyberpunk, neon-noir, acid, electric
pastel cotton-candy, sakura, lavender-mist
colorblind-safe a11y-deuteranopia, a11y-protanopia, a11y-tritanopia
high-contrast a11y-high-contrast, a11y-print-safe

Browse: references/palettes/_index.json

90+ UX rules

Machine-readable rules grouped into 7 buckets. The agent loads only what's relevant to each request.

Bucket Count Examples
Gestalt 10 proximity, similarity, figure-ground, common-region
Nielsen heuristics 12 system-status, error-prevention, user-control
Accessibility (WCAG 2.2) 25 focus-visible, touch-target-size, color-not-only-channel
Interaction laws 10 feedback-latency, destructive-confirmation, loading-skeleton
Motion 8 motion-easing, respect-reduced-motion, spatial-continuity
Content & microcopy 15 error-messages, button-labels, empty-states
Forms 10 form-labels, form-validation-timing, form-single-column

Browse: references/ux-rules/_index.json


Utility scripts

Three CLI utilities the agent (or you) can run directly:

apply-palette — switch color palette

Outputs a CSS override file that applies any of the 177 palettes on top of your base tokens.

# List all palettes with tags
node node_modules/@gapra/vyre-skill/scripts/apply-palette.mjs --list

# Apply the aurora palette in dark mode
node node_modules/@gapra/vyre-skill/scripts/apply-palette.mjs \
  --palette aurora --mode dark --out ./src/styles/palette.css
/* In your global CSS */
@import "@gapra/vyre-tokens/css";
@import "./src/styles/palette.css";  /* palette override */

audit-contrast — validate color contrast

Checks all semantic token pairs (18 pairs) against WCAG 2.2 AA and APCA Lc thresholds. Exits 1 on failure — safe for CI.

node node_modules/@gapra/vyre-skill/scripts/audit-contrast.mjs --theme light
node node_modules/@gapra/vyre-skill/scripts/audit-contrast.mjs --theme dark
node node_modules/@gapra/vyre-skill/scripts/audit-contrast.mjs --verbose

Example output:

Vyre contrast audit — theme: light
────────────────────────────────────────────────────────────────────────
✓ All 18 pairs pass (0 skipped — missing tokens).

generate-component — scaffold a token-native component

Generates a starter component for your framework. Every value is a token reference — zero raw colors or spacing.

# List available components
node node_modules/@gapra/vyre-skill/scripts/generate-component.mjs --list-components

# React Button
node node_modules/@gapra/vyre-skill/scripts/generate-component.mjs \
  --component Button --framework react --out ./src/components/

# Vue Card
node node_modules/@gapra/vyre-skill/scripts/generate-component.mjs \
  --component Card --framework vue --out ./src/components/

Components: Button, Card, Input, Badge, Alert Frameworks: react, vue, svelte, angular, html


Pair with @gapra/vyre-tokens

This package is the rules layer. The token layer is @gapra/vyre-tokens — install it in your project to get the CSS custom properties:

npm install @gapra/vyre-tokens
/* Plain CSS / any framework */
@import "@gapra/vyre-tokens/css";
@import "@gapra/vyre-tokens/themes/dark";    /* optional dark mode */
/* Tailwind v4 */
@import "tailwindcss";
@import "@gapra/vyre-tokens/tailwind";       /* @theme { … } */
// React (Next.js / Vite)
import "@gapra/vyre-tokens/css";

Themes available: light, dark, high-contrast, tritanopia, colorblind


How the skill loads (progressive disclosure)

The agent never dumps all 177 palettes and 90 rules into context at once. It uses three tiers:

Tier 1 — SKILL.md            Always in context (~1.5K tokens)
Tier 2 — _index.json files   Loaded when a category is needed
Tier 3 — Individual .md      Loaded only for the specific rule or style

This keeps context usage low while still giving the agent access to the full library on demand.


Validate the skill

pnpm --filter @gapra/vyre-skill validate
# or from this directory:
node scripts/validate-skill.mjs

Package structure

SKILL.md                        ← AI entry point (< 5K tokens)
references/
  styles/                       ← 50+ UI style recipes
    _index.json                 ← manifest: id, category, cost, a11y
    glassmorphism.md            ← recipe: tokens, do/don't, CSS
    aurora.md
    brutalism.md
    ...
  palettes/                     ← palette selector
    _index.json                 ← 177 palettes with tags + hue info
  ux-rules/                     ← UX rule library
    _index.json                 ← 90 rules with severity + summary
    gestalt/                    ← 10 Gestalt rules
    heuristics/                 ← 12 Nielsen heuristics
    a11y/                       ← 25 WCAG 2.2 rules
    interaction/                ← 10 interaction laws
    motion/                     ← 8 motion rules
    content/                    ← 15 content/microcopy rules
    forms/                      ← 10 form UX rules
  layout/
    grid-system.md
    flex-patterns.md
    spacing.md
  typography/
    scales.md
    pairing.md
    rhythm.md
  frameworks/
    react.md  vue.md  svelte.md  angular.md  tailwind.md
scripts/
  apply-palette.mjs             ← palette switcher CLI
  audit-contrast.mjs            ← WCAG/APCA contrast checker
  generate-component.mjs        ← component scaffolder
evals/
  evals.json                    ← 72 trigger/behavior test cases

Related

License

MIT © gapra

Related Packages

design-warden

CI check for design-system drift in frontend pull requests, built for UI written...

556
@tesserai/cli

Install a tesserai design system into your project as components you own, keep i...

2,584 0
@mkatogui/universal-design-system

A production-grade design system with 9 structural palettes, 72 components, and...

2,736 5
@peaui/ui

UI components with shared design tokens and accessible interactions for Vue, Rea...

1,200 0
@aestheticfunction/dspack-export

Bootstrap a current-spec dspack design-system snapshot from a component codebase...

861 0

Version History

Version Released License
0.6.0 MIT
0.5.0 MIT
0.4.0 MIT
0.3.0 MIT
0.2.0 MIT