OD '26
All Chapters

PART I: FOUNDATIONS · SECTION 04

The Skills System

How 100+ design skills shape what agents produce

Reading time

17 min

Chapter

04

The Skills System

How 100+ design skills shape what agents produce

A skill is a reusable instruction package that turns a vague prompt into a brand-consistent artifact, and Open Design ships 100+ of them. The skill is the recipe---and once you see that, the black box opens.

4.1 What a Skill Is

Skills as Recipes

Before I ran Open Design with explicit skills, I did what most people do: I wrote long, detailed prompts and hoped the agent would produce something consistent. Sometimes it did. More often, the same prompt produced a different layout, a different color treatment, and a different component style on every run. Skills fix that. A skill is a recipe the agent follows: it constrains structure, applies a brand system, and fixes the output format, so the same prompt produces reliable results across runs.

The skill is the recipe in exactly the way a kitchen recipe works. A recipe doesn't just list ingredients---it specifies quantities, sequence, temperature, and the expected result. A good recipe is repeatable: the same cook, the same kitchen, the same result. Open Design skills do the same thing for design artifacts. They tell the agent how to lay out a dashboard, which brand tokens to pull, how many KPI cards to render, and what self-check to run before returning the artifact.

Without a skill, generation is raw-prompt generation. With a skill, it's recipe-driven generation. The difference shows immediately.

Skill-driven generation:

Use the dashboard skill with the Stripe brand system
to build an analytics overview with four KPI cards
and a revenue chart.

The agent reads the dashboard skill, pulls brand tokens from the active DESIGN.md, applies the platform-desktop layout, inlines SVG charts, and self-checks that every color came from DESIGN.md---on every run.

Raw-prompt generation:

Build an analytics dashboard with four cards
and a revenue chart.

The agent improvises layout, chooses colors arbitrarily, may or may not self-check, and produces a different result on the next run with the same prompt.

Figure 4.1 — Skill-driven vs raw-prompt generation for the same dashboard request. The skill constrains structure, brand, and the self-check step; raw prompting leaves all three to chance.

A skill file is small---most are under 80 lines of YAML frontmatter plus Markdown prose. The frontmatter declares the skill's identity, triggers, and Open Design extensions. The prose body is the workflow the agent reads verbatim: what to do first, how to classify the request, how to lay out the regions, and what to check before calling the artifact done.

As of June 2026, Open Design ships with 100+ skills (the repository contains 157 total items across the skills/ and design-templates/ directories; the README uses the conservative "100+" figure).

The "100+" count in Open Design's README is a conservative floor, not a ceiling. As of June 2026, the repository contains 157 skill directories spanning 54+ functional skills and roughly 100 design templates. That count grows with every release. Always verify against the live repository when the exact number matters.

4.2 The Skill Catalog

Seven artifact modes, hundreds of variations

Skills are organized by artifact mode. Each mode corresponds to a distinct type of output: prototype, deck, template, design-system, image, video, or audio. Most teams use the prototype and deck modes daily; the rest exist for specific pipelines. Knowing which mode covers your artifact lets you route a prompt to the right skill immediately instead of guessing.

Open Design skill picker UI showing skill cards organized by artifact mode, with search and filter controls
Figure 4.2 — The Open Design design-systems and skill library: skills are browsable by artifact mode, searchable by description, and filterable by platform. Official Open Design screenshot, reproduced under Apache-2.0. As of June 2026, Open Design v0.9.0.
Skill Families and Artifacts --- as of June 2026, Open Design v0.9.0
Skill family (mode) Produces Typical brand pairing Example skill
prototype Single-page interactive HTML for web, desktop, or mobile viewports Any DESIGN.md with color + typography sections dashboard, landing-page, onboarding
deck HTML slide deck, exportable to PPTX Brand systems with strong typographic identity (Vercel, Linear) magazine-web-ppt, swiss-international
template Reusable HTML/CSS/JS component template Design systems requiring consistent UI atoms email-template, card-grid
design-system Generated component library or style guide House brand DESIGN.md files design-system-overview
image AI-generated images via configured provider Brand with color and voice sections hero-image, social-card
video HTML-to-MP4 motion graphics via HyperFrames Brand with animation and accent color tokens motion-intro, explainer-clip
audio Text-to-speech or ambient audio generation Voice and tone sections of DESIGN.md narration

The prototype mode is the highest-volume category by a wide margin. Most bundled skills target prototype with platform: desktop or platform: mobile. Decks come second, with several magazine and Swiss International variants. The remaining five modes cover specialized pipelines: design system documentation, image generation, video, audio.

One distinction the catalog makes explicit is that design templates and functional skills are not the same thing, even though both use SKILL.md and appear in the picker. Functional skills (under skills/) describe complete workflows. Design templates (under design-templates/) are reference implementations of a specific visual layout. Both use the same API shape, but templates are more like examples than instructions.

4.3 How Agents Select and Compose Skills

From prompt to skill to artifact

When you submit a generation request in Open Design, the daemon doesn't immediately hand it to the agent. It first resolves which skill to apply. That resolution is brief-matching: the daemon scans skill description and triggers fields against your prompt and surfaces the best match in the skill picker. You confirm it---or pick a different skill---before the agent reads the skill body and begins generating.

Prompt

User submits a generation brief in the UI

Skill Selection

Daemon matches brief against skill descriptions and triggers; surfaced in the picker

Brand Application

Active DESIGN.md is injected into the skill's context window

Artifact

Agent executes the skill workflow, returns a branded, self-contained artifact

Figure 4.3 — The four-stage resolution path from prompt to artifact. The skill is resolved and confirmed before the agent reads it; the brand system is injected automatically when od.design_system.requires: true.

Skill Discovery and Precedence

Open Design scans three locations for skills, in priority order:

Skill Discovery Locations and Priority --- as of June 2026, Open Design v0.9.0
Location Priority Use
./.claude/skills/ 1 (highest) Project-private; not committed to source control; overrides bundled and global skills
./skills/ 2 Project-committed; shared with the team via version control
~/.claude/skills/ 3 (lowest) User-global; applies to every project on this machine

When two skills share the same name, the higher-priority location wins. This lets you override a bundled skill at the project level---write a project-private version of dashboard in .claude/skills/ and it shadows the bundled one for that project alone.

Brand Injection

Skills that declare od.design_system.requires: true get the active DESIGN.md injected automatically at the top of their context window before the agent reads any prompt content. The sections list controls which parts of DESIGN.md are injected---a dashboard skill that only needs color and typography requests those two sections, keeping the context tight.

od:
  mode: prototype
  design_system:
    requires: true
    sections: [color, typography, layout, components]

Skills that don't declare requires: true don't see the DESIGN.md at all. Image-generation and audio skills often skip it because their output format can't consume CSS tokens directly.

Craft References

As of June 2026 (v0.9.0), Open Design supports a third input axis alongside the skill body and DESIGN.md: craft references, stored under craft/. Craft references are brand-agnostic rules---things like letter-spacing conventions, accent color frequency rules, and anti-AI-slop typography checks. They shipped with v0.8.0 and are documented in skills-protocol.md §5.5. A skill can request specific craft references in its frontmatter:

od:
  craft:
    requires: [state-coverage, accessibility-baseline, laws-of-ux]

Craft references (shipping since v0.8.0) are a newer concept and are likely to evolve. Think of them as a quality layer below brand: they ensure the artifact meets baseline design principles regardless of which brand system is active.

You don't need to understand craft references to use built-in skills---they're already declared in bundled skills like dashboard. They matter when you're writing a custom skill and want to borrow the same quality checks the built-in skills use. Reference them by filename (without extension) from the craft/ directory.

4.4 Anatomy of a Skill File

What every skill is made of

Every skill is a single file: SKILL.md. It combines YAML frontmatter with Markdown prose. The frontmatter is machine-read by the daemon and the skill picker; the prose is agent-read during generation. The split is important---you design the frontmatter for the machine, and you write the prose for the agent.

File Structure

my-skill/
├── SKILL.md          # required: frontmatter + workflow prose
├── example.html      # required if od.preview.type is "html"
├── assets/           # optional: static files referenced by example.html
└── references/       # optional: extra documents the agent should read

The minimum viable skill is just SKILL.md with an example.html when the skill produces HTML output. Everything else is optional. The references/ folder is useful when a skill needs the agent to consult supplementary material---a data schema, a component spec, a copywriting guide.

The SKILL.md Frontmatter Fields

SKILL.md Frontmatter Fields --- as of June 2026, Open Design v0.9.0
Field Namespace Purpose Required
name base Unique identifier; used for skill precedence resolution Yes
description base Multi-line description used by the picker for brief-matching Yes
triggers base Exact phrases that should surface this skill; must be concrete, not generic Yes
od.mode od Artifact mode: prototype, deck, template, design-system, image, video, audio Recommended
od.preview od Declares the preview type (html) and entry file; required for HTML preview Conditional
od.design_system od Controls DESIGN.md injection: requires: true and optional sections list Recommended
od.example_prompt od A prompt that should produce a working artifact end-to-end; used in the merge checklist Recommended
od.craft.requires od List of craft reference names to inject as quality rules Optional

A Real Skill: The Dashboard

The dashboard skill in the Open Design repository is the clearest example of a well-authored skill. Its frontmatter is precise, its triggers are concrete, and its workflow prose is explicit about what the agent must do at each step. The excerpt below is reproduced for commentary from design-templates/dashboard/SKILL.md in the Open Design repository (Apache-2.0 licensed; source: github.com/nexu-io/open-design, as of June 2026). The workflow steps are abbreviated here; the full prose is in the source file.

---
name: dashboard
description: |
  Admin / analytics dashboard in a single HTML file. Fixed left sidebar,
  top bar with user/search, main grid of KPI cards and one or two charts.
  Use when the brief asks for a "dashboard", "admin", "analytics", or
  "control panel" screen.
triggers:
  - "dashboard"
  - "admin panel"
  - "analytics"
  - "control panel"
od:
  mode: prototype
  platform: desktop
  scenario: operations
  preview:
    type: html
    entry: index.html
  design_system:
    requires: true
    sections: [color, typography, layout, components]
  craft:
    requires: [state-coverage, accessibility-baseline, laws-of-ux]
---

# Dashboard Skill

Produce a single-screen admin / analytics dashboard.

## Workflow

1. Read the active DESIGN.md (injected above). Colors, typography,
   spacing, component styling all come from it. Do not invent new tokens.
2. Classify what the dashboard monitors...
3. Lay out required regions...
4. Write one self-contained HTML document...
5. Charts: inline SVG only...
6. Self-check:
   - Every color comes from DESIGN.md tokens.
   - Accent used at most twice...

Notice what the skill enforces: tokens come from DESIGN.md (never invented), the output is a single HTML file, SVG charts are inlined, and a self-check runs before the artifact is returned. The recipe is the recipe---no run should skip those steps.

The Trigger Quality Bar

Triggers are the most commonly mis-authored part of a skill. The Open Design merge checklist (in docs/skills-contributing.md, Apache-2.0) explicitly rejects vague triggers. The concrete trigger examples below are illustrative of the accepted/rejected pattern documented in docs/skills-protocol.md §5 (Apache-2.0):

Concrete triggers (accepted):

triggers:
  - "magazine deck"
  - "杂志风 PPT"
  - "horizontal swipe presentation"

Vague triggers (rejected):

triggers:
  - "design something cool"
  - "make a nice layout"
  - "creative design"

Vague triggers match too broadly and surface the wrong skill. Concrete triggers match the actual language users reach for when they know what they want. Writing good triggers means reading a week's worth of your team's actual generation prompts and extracting the phrases that reliably predict this artifact type.

4.5 Authoring Your Own Skill

Step-by-step: from blank file to working recipe

Custom skills are where the skills system pays back the most. A house skill encodes your team's standards once and applies them on every run---every artifact from that skill will follow the same layout rules, use the same component patterns, and run the same self-checks. The barrier is low; the maintenance is real. Here's how to build one correctly.

1

Choose where to put the skill. For a project-private skill not committed to source control, create .claude/skills/my-skill/SKILL.md. For a team skill committed to the project, use skills/my-skill/SKILL.md. For a personal global skill, use ~/.claude/skills/my-skill/SKILL.md.

2

Write the frontmatter. Start with the three required base fields, then add the od extensions your artifact type needs.

---
name: pricing-table
description: |
  Pricing page with three tiers and a monthly/annual toggle.
  Use when the brief asks for a "pricing page", "pricing table",
  or "subscription plans" screen.
triggers:
  - "pricing page"
  - "pricing table"
  - "subscription plans"
  - "three tiers"

od:
  mode: prototype
  platform: desktop
  preview:
    type: html
    entry: index.html
  example_prompt: "Build a pricing page with three tiers and an annual toggle."
  design_system:
    requires: true
    sections: [color, typography, components]
---
3

Write the workflow prose. Below the frontmatter, add a Markdown workflow section. Be explicit. The agent reads this verbatim---write it as instructions to a skilled but literal interpreter.

# Pricing Table Skill

Produce a single-page pricing component.

## Constraints
- Three tiers only (Starter, Pro, Enterprise)
- Monthly/annual toggle with JS state
- Highlighted "recommended" tier

## Workflow
1. Read the active DESIGN.md. All colors come from it.
2. Build the toggle: monthly default, annual shows 20% off.
3. Three columns; each gets: tier name, price, feature list,
   CTA button.
4. Self-check: every color from DESIGN.md; toggle works
   without external dependencies.

## Output
Single self-contained index.html with inline CSS and JS.
4

Create example.html. The merge checklist (and good practice) requires a working example HTML when the skill produces HTML output. Generate one run first, save the output as example.html in the skill directory. This is the visual reference for the skill picker and future authors.

5

Test across several prompts. Run the example_prompt from the frontmatter. Then run two or three variations. A skill that only works for its own example prompt isn't reliable. Test: a minimal brief ("three-tier pricing page"), a detailed brief ("pricing page for a SaaS dev tool, two annual plans, enterprise contact-sales"), and an off-label brief ("comparison table for three subscription levels"). If any of these produce wrong output, tighten the constraints in the workflow prose.

6

Document what the skill does not do. Add a short "Out of scope" section to the prose. If your skill is for a three-tier pricing page, say it doesn't handle enterprise custom-quote flows or usage-based pricing. This shapes the triggers---don't add "billing page" as a trigger if the skill can't handle billing history.

My Take

Skills are the single biggest reason Open Design output beats raw-prompt generation, and most teams under-invest in writing their own. A house skill encodes a team's standards once and applies them on every run---the ROI appears immediately on the second artifact. I've seen teams generate 50 artifacts from one well-authored house skill with zero drift between runs. The caution is real, though: a bad custom skill is worse than no skill. A skill with vague triggers surfaces on the wrong prompt; a skill with weak constraints produces inconsistent output; a skill that wasn't tested across several prompts creates false confidence. Test it hard before you trust it.

4.6 When to Write a Skill vs Tweak a Prompt

The skill/prompt boundary

Not every generation problem needs a new skill. Tweaking a prompt handles one-off customizations; a skill handles structural patterns you repeat. The skill/prompt boundary is a judgment call, but it's not an arbitrary one. There are four signals that tell you when a skill is the right answer.

Skill vs Prompt Decision Guide
Signal Use a skill when... Tweak the prompt when...
Repetition You're writing the same structural constraints in every prompt for this artifact type This is a one-off request unlikely to recur in the same form
Consistency Multiple team members generate this artifact and the results vary unacceptably Variation across runs is acceptable or desirable
Complexity The instructions are complex enough that prompts routinely miss one requirement The instructions are simple enough to fit in one prompt without errors
Review feedback You're giving the same feedback ("always put the CTA in the top-right") on every artifact of this type Feedback is specific to this artifact's content, not its structure

The practical rule: if you've added the same constraint to three different prompts for the same artifact type, move that constraint into a skill. Three is the threshold where the maintenance cost of prompting exceeds the cost of authoring a skill.

Composition Over Forking

When a bundled skill is close but not quite right, the instinct is to fork it---copy the whole skill directory, edit the copy. Resist this. Forked skills diverge from upstream as Open Design updates its bundled skills. You'll be maintaining your own version of a skill that the repo is actively improving.

The better pattern is composition: create a new skill that augments a bundled one rather than replacing it. Reference the bundled skill by name in your prompt, then add the custom constraints in your own skill's prose. Or use the skill picker to select the bundled skill and add your constraints as a follow-up prompt in the iterate beat.

Forked skills diverge from upstream. As of June 2026, Open Design's merge checklist (in docs/skills-contributing.md, Apache-2.0) documents the guidance: "prefer composing on top of bundled skills over forking them wholesale." Every release of Open Design may improve a bundled skill's self-checks, trigger quality, or craft references---a forked copy misses all of those improvements and accumulates debt with each release. Layer your changes; don't replace.

Invoking a Skill Directly

You can invoke a named skill explicitly in your prompt without relying on the picker's brief-matching:

Use the dashboard skill with the Stripe brand system to build
an analytics overview with four KPI cards and a revenue chart.

Naming the skill directly is useful when you know exactly which skill you want and don't want the picker to surface alternatives. It also makes prompts more auditable---a prompt that names its skill is easier to review and reproduce than one relying on implicit matching.

My Take

Most teams I've talked to skip the skill layer entirely for the first few months, then discover it all at once when they're tired of writing the same constraints in every prompt. The inflection point is usually when a new team member generates their first artifact and it looks nothing like what the senior designer expected. That's the moment a house skill would have prevented. Don't wait for that moment. Write one skill for your highest-volume artifact type in the first week. Test it across five prompts. Adjust. The compound interest starts immediately.

The Merge Checklist (For Contributors)

If you intend to contribute a skill back to the Open Design repository, the merge checklist is the quality bar to clear. The key criteria from the checklist as of June 2026:

Open Design Skill Merge Checklist --- abbreviated, as of June 2026
Check Criterion Common failure
Triggers Concrete, not generic; "design something cool" is a hard reject Trigger overlaps with existing skill; too broad
Example prompt Must produce a working artifact end-to-end Example prompt works in one brand system, fails in others
Design quality No AI defaults: no purple gradients, no generic card styling, no lorem ipsum Outputs that look "AI-made" rather than designed
Brand agnosticism Skill must work with any DESIGN.md, not just the author's test brand Hardcoded colors or fonts that ignore DESIGN.md tokens
Self-check Workflow prose must include a self-check step No verification that DESIGN.md tokens were honored

Even if you're writing a private house skill that will never be contributed, these criteria are the right bar to hold yourself to. The merge checklist distills what makes a skill reliable versus one that only works when conditions are perfect.

Next Chapter

150 Brand Systems

DESIGN.md as the contract between brand and agent

Continue Reading

©2026 Mehran Mozaffari. Free for personal/noncommercial use (CC BY-NC-ND 4.0); commercial license required for business use.