Explore Canonical's Vanilla Framework design system documentation. Covers 49 UI constructs and 26 concepts including their properties, anatomy, usage guidelines, and relationships. Use when answering questions about Vanilla constructs, concepts, design patterns, or implementation details.
How this skill is triggered — by the user, by Claude, or both
Slash command
/vanilla-design-system:vanilla-design-systemThe summary Claude sees in its skill listing — used to decide when to auto-load this skill
This skill provides structured access to the complete documentation for Canonical's Vanilla Framework design system — 49 constructs (UI components, complex components, patterns, and mental models) and 26 concepts (architecture, decision guides, and principles).
data/concepts/animation.jsondata/concepts/block.jsondata/concepts/bubble.jsondata/concepts/color.jsondata/concepts/content-guide.jsondata/concepts/content-layout.jsondata/concepts/content-primitive.jsondata/concepts/diagrams-and-data-visualization.jsondata/concepts/footer.jsondata/concepts/form-placement.jsondata/concepts/grid.jsondata/concepts/icons.jsondata/concepts/illustrations.jsondata/concepts/intentional-friction.jsondata/concepts/logos.jsondata/concepts/navigation.jsondata/concepts/page.jsondata/concepts/photography.jsondata/concepts/section.jsondata/concepts/site.jsonThis skill provides structured access to the complete documentation for Canonical's Vanilla Framework design system — 49 constructs (UI components, complex components, patterns, and mental models) and 26 concepts (architecture, decision guides, and principles).
Every claim must be sourced from the data and cited. Follow these rules without exception:
NEVER invent or fabricate documentation. Every statement about a construct or concept — its properties, anatomy, usage, behavior, relationships — MUST come from the data files. If something is not documented in the data, say so explicitly: "This is not documented in the Vanilla Framework design system documentation." Do NOT guess, infer, or fill in gaps with general knowledge.
ALWAYS look up the data before answering. Even if you think you know the answer, query the data files to confirm. The data is the single source of truth.
Cite using numbered references. Place a bracketed number at the end of a paragraph or logical grouping of related claims, not after every single sentence. If multiple consecutive sentences come from the same source, use ONE citation at the end of the group. Do NOT repeat the same citation number on every sentence. Collect all references at the end of your response under a ## References heading. Every number used inline MUST appear there. Every entry there MUST be used inline.
Get the URL from the url field in each construct's or concept's data file.
The data is organized in two layers for efficient exploration:
data/index.json)A lightweight catalogue of all constructs and concepts. Use this first to browse, filter, and find items.
Top-level metadata includes: generatedAt, constructCount, conceptCount, constructTypes, constructTiers, conceptTypes.
Each construct entry contains: name, slug, type, tiers, description (full markdown description).
Each concept entry contains: name, slug, type, tier, description.
data/constructs/<slug>.json)Full documentation for each construct. Fields include:
| Field | Description |
|---|---|
name, slug | Construct name and URL-safe identifier |
type | One of: Component, Complex component, Pattern, Mental model |
tiers | One of: Global, Sites, Apps |
url | Canonical documentation URL |
description | Full markdown description |
usage | Usage guidelines (markdown) |
examples | Usage examples (markdown) |
interactions | Interaction specifications (markdown) |
properties[] | Each with: name, type, required, description, constraint, options, defaultOption |
anatomy.table[] | Each with: number, name, description |
mentionedIn[] | Items that reference this one (name, slug) |
mentionsComponents[] | Items this one references (name, slug) |
appliedRules[] | Rule row IDs that apply to this construct |
exceptionFromRules[] | Rule row IDs this construct is excepted from |
changeLog[] | Edit history (who, when, what) |
decisionLog[] | Design decisions (where, what, link, when) |
figmaLink | Figma design file URL |
codeLink | Source code URL |
data/concepts/<slug>.json)Full documentation for each concept. Fields include:
| Field | Description |
|---|---|
name, slug | Concept name and URL-safe identifier |
type | One of: Architecture, Decision guide, Principle |
tier | One of: Global, Sites |
url | Canonical documentation URL |
description | Short description |
content | Full concept content (markdown) |
mentionedIn[] | Items that reference this concept (name, slug) |
appliedRules[] | Rule row IDs that apply to this concept |
exceptedFromRules[] | Rule row IDs this concept is excepted from |
changeLog[] | Edit history (who, when, what) |
decisionLog[] | Design decisions (where, what, link, when) |
Data files are in the data/ directory next to this file. Always use absolute paths in all commands, resolved from the known location of this file. Do not use bare relative paths like data/index.json — they will fail if the working directory is different.
Use jq and bash to query the JSON data files. Do NOT attempt to load entire files into context. Instead, use targeted jq queries to extract only the fields you need for each question.
data/index.json to find relevant constructs or conceptsurl from every item you referenceThe following are examples to illustrate the kinds of queries you can run. Adapt them to the question at hand — these are not an exhaustive list:
# List all construct names
jq -r '.constructs[].name' data/index.json
# List all concept names
jq -r '.concepts[].name' data/index.json
# Filter constructs by type
jq -r '.constructs[] | select(.type == "Pattern") | .slug' data/index.json
# Filter concepts by type
jq -r '.concepts[] | select(.type == "Architecture") | .slug' data/index.json
# Search construct descriptions for a keyword
jq -r '.constructs[] | select(.description | test("form"; "i")) | .slug' data/index.json
# Get a construct's properties
jq '.properties[] | {name, type, required, defaultOption}' data/constructs/button.json
# Get anatomy parts
jq '.anatomy.table[] | {name, description}' data/constructs/button.json
# What items mention Button?
jq '.mentionedIn[] | .name' data/constructs/button.json
# What items does Button reference?
jq '.mentionsComponents[] | .name' data/constructs/button.json
# Get usage guidelines
jq -r '.usage' data/constructs/input.json
# Get the documentation URL
jq -r '.url' data/constructs/button.json
# List all constructs with their types (compact overview)
jq -r '.constructs[] | "\(.type) | \(.name)"' data/index.json | sort
# List all concepts with their types
jq -r '.concepts[] | "\(.type) | \(.name)"' data/index.json | sort
# Get a concept's full content
jq -r '.content' data/concepts/site.json
# Get counts
jq '{constructCount, conceptCount}' data/index.json
npx claudepluginhub canonical/component-wiki --plugin vanilla-design-systemOrganizes UI components using Atomic Design hierarchy: quarks (design tokens), atoms, molecules, organisms, templates, pages. Covers principles for scalable, maintainable design systems.
Senior-level UI/UX design expert for building data-driven, premium production interfaces. Use when you need to: 1. Design complex applications (dashboards, SaaS, AI tools) from scratch 2. Generate comprehensive design systems (tokens, palettes, typography) 3. Audit existing UI for quality, accessibility, and "craft" 4. Search for proven real-world design patterns and implementation details Trigger: "design a...", "audit this...", "create a design system", "find icons", "fintech dashboard", "landing page"
Provides cross-stack UI/UX design intelligence covering layout, color, typography, charts, and accessibility. Includes 67 styles, 96 palettes, 57 font pairings, and 99 UX guidelines for web and mobile apps.