OD '26
All Chapters

PART III: SYSTEMS & TEAMS · SECTION 09

The Plugin Ecosystem

261 official plugins, Figma migration, and code-refresh-to-brand

Reading time

16 min

Chapter

09

The Plugin Ecosystem

261 official plugins, Figma migration, and code-refresh-to-brand

Plugins are how Open Design moves from generating new artifacts to transforming existing ones, and the migration and code-refresh scenarios are the design-engineer's highest-leverage tools.

9.1 The Plugin Taxonomy

What lives in plugins/_official/ and why the count matters less than the categories

Skills make things. Plugins do jobs. That is the mental model for this chapter. As of June 2026, Open Design ships 261 official plugins in plugins/_official/, organized into six distinct categories that cover everything from image templates to complete design-engineering scenarios. The number is notable, but the structure is what actually matters for your workflow.

The v0.8.0 release --- named "Plugin Everything" (May 22, 2026) --- made the plugin system the primary extensibility layer. Before that, skills and brand systems were the main surface. After it, almost every capability you can add to Open Design arrives as a plugin. The v0.9.0 release (June 2, 2026) consolidated that shift.

Here is how the 261 plugins break down:

Plugin Categories — Open Design plugins/_official/, as of June 2026
Category Count What it provides Last verified
Scenario plugins 11 End-to-end workflows: Figma migration, code refresh, React/Next.js/Vue export, media generation, plugin authoring June 2026
Image templates 45 Branded static image outputs: social cards, banners, thumbnails, open-graph June 2026
Video templates 50 HyperFrames motion templates: intros, looping graphics, animated slides June 2026
Design systems 142 Brand systems wrapped as plugins; overlaps with the 150-system library but plugin-installable June 2026
UI atoms 13 Reusable component fragments: buttons, cards, modals, navbars June 2026
Reference examples 140 Worked artifact examples demonstrating skill and brand combinations; also used as test fixtures June 2026

Note the discrepancy: the six category counts above sum to 401, but the README reports 261 total. The most likely explanation is that design-system plugins are counted separately from the featured "261" headline figure, which refers to scenario, template, atom, and example plugins only. The README language is "261 official plugins" with the design-system category noted separately as "142 design systems wrapped as plugins." Treat the 261 as the non-design-system total and the 142 design-system plugins as additive.

Plugin counts change with every release. The figures here reflect Open Design v0.9.0 (June 2, 2026). Before quoting them in a decision document, run ls plugins/_official/ | wc -l against the repo or check the README's version-stamped count.

The philosophy behind the taxonomy is "everything is a plugin" --- a phrase that emerged from the v0.8.0 release discussion on GitHub (discussion #1727, 1k+ engagement). In that model, even the core generation behaviors are backed by the od-default scenario plugin, which means you can override or extend default generation by swapping or layering plugins.

Open Design Plugins sidebar with Available tab showing marketplace plugin cards and install actions
Figure 9.1 — The plugin browser (v0.15.1). Plugin workflows are discovered and installed from the sidebar before they become executable context in a project. Mock-safe screenshot from Open Design desktop v0.15.1 (July 2026).

9.2 Installing and Running Plugins

The od mcp install pattern and plugin discovery path

Every plugin in plugins/_official/ is available immediately after Open Design is installed --- official plugins are bundled, not downloaded on demand. Third-party and custom plugins are added through the plugin discovery path.

The Discovery Path

Plugin discovery follows a priority-ordered scan across three locations. Understanding this order is critical when you add a custom plugin that shares a name with an official one:

Output
# Skill/plugin discovery priority (first match wins)
1. ./.claude/skills/   -- project-private, highest priority
2. ./skills/           -- project-committed
3. ~/.claude/skills/   -- user-global

# Conflicts resolve to the highest-priority version.
# In dev mode, chokidar watches all paths for changes.
# In production, re-scan is triggered on SIGHUP.

This means a plugin in ./.claude/skills/ overrides an official plugin of the same name. That is the correct mechanism for customizing official behavior without forking the repo.

Running a Plugin via the Agent

From within your agent CLI, invoke a plugin the same way you invoke a skill --- by name in a natural-language prompt. The agent resolves the name against the discovery path and hands execution to the plugin:

Prompt
Use the landing-page-hero plugin with the Vercel brand system.
Headline: "Build Faster on Your Machine"
Subheading: "Local-first. Agent-native. Open source."

Plugin File Structure

Every plugin --- official or custom --- is a directory containing a SKILL.md file plus optional assets/ and references/ subdirectories. The SKILL.md format is the base format for all skills and plugins in Open Design, adopted from the Claude Code skill convention (as of June 2026):

Config
name: landing-page-hero
description: "Build a single-hero landing page with CTA"
triggers:
  - "landing page"
  - "hero page"
  - "homepage"

od:
  mode: prototype
  preview:
    type: html
  design_system:
    requires: true
  inputs:
    - name: headline
      type: text
      required: true
    - name: subheading
      type: text

The od: block is the Open Design extension to the base SKILL.md format. It defines the generation mode (prototype, image, video), the preview type, whether a design system is required, and the named inputs that the agent will collect from the user's prompt.

Output
plugins/_official/landing-page-hero/
├── SKILL.md
├── assets/
│   └── hero-layout-reference.png
└── references/
    └── examples.md

The MCP Install Shorthand

For agent-side plugin setup (wiring the MCP server into your agent's config), the od mcp install command handles the plumbing. Plugin invocation itself does not require a separate install step once the MCP server is connected:

Command
$ od mcp install claude-code
$ od mcp install cursor
$ od mcp install opencode

After any one of these, the agent can invoke every official plugin by name. Plugins do not need separate install commands; they are discovered automatically from the known paths.

9.3 Figma Migration

Moving a Figma or Pencil file to a React/Next.js/Vue component library

The od-figma-migration scenario plugin converts Figma and Pencil design files into React, Next.js, or Vue component libraries, with auto-layout structure preserved and a brand system applied. This is one of the two scenario plugins that, in my judgment, justify the entire adoption case for a design-engineering team. The other is covered in section 9.4.

What the Plugin Does

The migration scenario takes a Figma file export (or a Pencil .pen file), reads the component tree and auto-layout structure, and produces a component library in your target framework. The brand system you provide becomes the token layer --- the generated components reference brand variables rather than raw Figma color values.

Scenario Plugins — Open Design v0.9.0, as of June 2026
Scenario plugin Input Output
od-default Any generation prompt Artifact per the matched skill
od-design-refine Existing artifact + refinement prompt Refined artifact
od-figma-migration Figma/Pencil file + target framework + brand system React/Next.js/Vue component library
od-code-migration Git repo URL + DESIGN.md path PR with brand-compliant refactored code
od-react-export Prototype artifact React component bundle
od-nextjs-export Prototype artifact Next.js page + component bundle
od-vue-export Prototype artifact Vue SFC bundle
od-media-generation Prompt + brand system Image or video media artifact
od-new-generation Generation prompt New artifact (alternate to od-default)
od-tune-collab Artifact + collaborative annotation Tuned artifact reflecting annotations
od-plugin-authoring Plugin spec description Scaffolded plugin directory with SKILL.md

Running the Figma Migration

1

Export your Figma file. From Figma, use File → Export → JSON or File → Export → Figma archive. If you are working in Pencil, the .pen file is already in the right format.

2

Open your agent CLI and connect it to Open Design. If you haven't done this, run od mcp install <your-agent> first (see Section 3.1).

3

Invoke the migration with a precise prompt. Specify the target framework and brand system explicitly --- the plugin will use the brand system to replace raw Figma token values with brand variables:

Prompt
Migrate this Figma file to a Next.js component library
using the Linear brand system; preserve the auto-layout structure.
4

Review the generated component files. The plugin produces a directory of .tsx components (for React/Next.js) or .vue single-file components, plus a tokens.ts or equivalent that maps brand variables to the design system. Check that auto-layout has converted correctly to flexbox or grid --- this is the most common point of manual adjustment.

5

Iterate with follow-up prompts. If a component has lost its layout fidelity, describe the problem and ask the plugin to correct it. The plugin maintains session context and can re-run the migration for specific components without re-migrating the whole file.

Complex Figma files with multiple component families do not migrate perfectly in one pass. I treat the first migration output as a ~70% draft: the structure and token wiring are correct, but spacing and interaction states need review. Set that expectation with your team before presenting migration results.

Open Design workspace showing a fictional Figma migration plugin prompt, generated migration files, process trace, and rendered migration report
Figure 9.2 — A plugin-driven migration run in the Open Design workspace. The prompt asks for a fictional Figma-to-Next transformation, the assistant turn lists the generated files, and the preview shows the process from mock source frame to token-bound component. Mock-safe screenshot from Open Design v0.11.0, captured June 2026.

9.4 Refresh a Codebase to a Brand Spec

The od-code-migration plugin: turning a drift audit into a pull request

The od-code-migration scenario plugin takes a live git repository and a DESIGN.md brand specification, audits every source file for ad-hoc colors, non-brand spacing values, and component patterns that diverge from the spec, and produces a pull request with the corrected code. This is design-as-code as a maintenance capability, not a generation novelty.

Skills make things; plugins do jobs. This is the clearest example of that distinction. You are not asking Open Design to generate a new artifact. You are asking it to bring an existing codebase into compliance with a brand contract.

How the Code-Refresh Works

Input

Git repo URL + DESIGN.md path

Audit

Scan source files for brand deviations: colors, spacing, type

Refactor

Replace ad-hoc values with brand tokens

Output

Pull request with diff and change log

Figure 9.3 — The od-code-migration code-refresh pipeline: repo in, brand-compliant PR out.

Running the Code-Refresh

The code-refresh plugin modifies existing source files. Run it against a clean git state --- uncommitted work or untracked changes will be caught in the diff but create confusion. Branch first, review the diff before merging. An automated brand refactor is a strong first pass, not a merge-ready change.

1

Commit or stash all pending work in your target repository. The plugin expects a clean tree so its diff is unambiguous.

Command
$ git checkout -b brand-refresh/od-run-2026-06
$ git status   # confirm clean
2

Make sure your DESIGN.md is in the repo root or at a known path. The plugin reads it as the source-of-truth spec. If you don't have one yet, Chapter 05 covers authoring a house DESIGN.md.

3

Invoke the scenario with a precise prompt that names the repo and the spec file:

Prompt
Refresh this React codebase to match our DESIGN.md:
replace ad-hoc colors and spacing with the brand tokens,
report what changed.
4

The plugin scans src/components/*.tsx and related files, replaces ad-hoc values, and writes a docs/CHANGES.md that logs every substitution. It then opens a pull request (or stages a commit, depending on your git configuration).

Config
# Pseudo-representation of the plugin's execution model
od-code-migration:
  input:
    - repo_url: "https://github.com/myorg/myapp"
    - design_md_path: "./DESIGN.md"
  output:
    - pull_request: "docs/CHANGES.md"
    - refactored_code: "src/components/*.tsx"
5

Review the pull request diff file by file. Pay particular attention to: (a) color values replaced in CSS-in-JS that now reference a token that doesn't exist in the running theme; (b) spacing values that were intentionally non-standard for a specific layout; (c) any third-party component overrides the plugin may have touched.

My Take

Of the 261 plugins in the ecosystem, od-code-migration is the one that justifies adoption for an engineering org by itself. Skills and brand systems are excellent for generating new artifacts. But most teams have an existing codebase with years of accumulated brand drift --- hardcoded hex values, overrides on top of overrides, one component that uses the primary color and another that uses a slightly different hex that predates the design system. No amount of new generation fixes that. The code-refresh plugin does. Treat it as a strong first pass and review the diff carefully --- but that first pass will surface every deviation, and that list alone is worth the run.

Open Design workspace showing a fictional code refresh diff that replaces hard-coded component values with design tokens and writes CHANGES.md
Figure 9.4 — A code-refresh plugin run shown as a PR-style diff. The visible process replaces hard-coded colors, radius, spacing, and typography with design-system tokens, while the generated CHANGES.md panel records the handoff summary before review. Mock-safe screenshot from Open Design v0.11.0, captured June 2026.

9.5 Templates and UI Atoms

Image and video templates, reusable UI atoms, and reference examples

The three non-scenario plugin categories --- image templates (45), video templates (50), and UI atoms (13) --- cover the most-repeated, least-differentiated generation tasks. They are the production-line layer: high frequency, low variance, always on-brand.

Image Templates

Image templates produce static branded images for repeatable use cases: social cards, open-graph images, announcement banners, and thumbnail frames. Each template takes a brand system and a small set of named inputs (headline, subhead, background variant) and produces a sized, export-ready image artifact.

As of June 2026, Open Design includes 45 image templates covering social media formats (16:9, 1:1, 9:16), open-graph dimensions, and print-optimized sizes. The image generation backend routes through the configured image provider (see Section 7.4 for provider setup).

Video Templates

The 50 HyperFrames video templates are pre-authored HTML-to-MP4 motion sequences. Unlike generating a new motion artifact from scratch, video templates give you a tested layout and timing, with your brand system applied as the styling layer. They are the fastest path to a branded 15-second intro or a looping social video.

Template and Atom Categories, as of June 2026
Category Count Typical use case Brand system required
Image templates 45 Social cards, open-graph images, announcement banners Yes
Video templates 50 15–30s intros, looping social graphics, animated slide reveals Yes
UI atoms 13 Button sets, card components, modal shells, navigation bars Recommended
Reference examples 140 Worked artifact examples; test fixtures; learning references Bundled in example

UI Atoms

The 13 UI atom plugins are reusable component fragments: buttons, cards, modals, navbars. They are smaller than full skills and intended for composition into larger artifacts. When your artifact prompt says "include a confirmation modal," the agent will resolve that to the modal atom plugin, which ensures the modal follows the brand system's component rules rather than improvising a layout.

Reference Examples

The 140 reference example plugins are worked artifact examples demonstrating specific skill-and-brand combinations. They serve two purposes: as learning references (see how an experienced prompt produces a given result) and as test fixtures (the Open Design team uses them to validate generation quality across releases).

9.6 Composing Plugins

Combining plugins with skills and brand systems in a single workflow

Skills make, plugins do. The full power of the ecosystem comes from combining them: a skill to shape the artifact's structure, a brand system to apply consistent visual language, and a plugin to transform or extend the result. That three-layer composition is what moves Open Design from a generation tool to a design-engineering workflow.

The Composition Pattern

Skill

Defines artifact structure and constraints

Brand system

Applies visual language (tokens, voice, components)

Plugin

Transforms or exports the result

Output

Brand-compliant artifact or transformed codebase

Figure 9.5 — Plugin composition: skill + brand system + plugin produces either a new branded artifact or a transformed existing one.

A Composed Example

Here is a composed prompt that chains a skill, a brand system, and an export plugin in a single agent invocation:

Prompt
Use the dashboard skill with the Linear brand system to build
an analytics overview with four KPI cards and a revenue chart.
Then export the result as a Next.js page using od-nextjs-export.

The agent executes this in sequence: the dashboard skill shapes the layout, the Linear brand system applies the visual layer, the preview streams into the sandboxed iframe, and then od-nextjs-export serializes the artifact into a Next.js page component bundle.

Layering Design-System Plugins

The 142 design-system plugins can be layered on top of a base brand system. A common pattern is to apply a house brand system as the primary contract and then layer a product-specific design-system plugin for component-level overrides:

Prompt
Generate a settings page using our house DESIGN.md as the base brand,
then apply the shadcn/ui design-system plugin for component styling.
Use the web-app skill.
My Take

Most teams that adopt Open Design spend their first two weeks on skills and brand systems, and never look at the plugin ecosystem in depth. That's understandable --- the generation loop is immediately rewarding. But the scenario plugins are where the leverage shifts from "this is interesting" to "this changes how our team works." I'd recommend making the code-refresh plugin the first plugin every new team runs, even before exploring the template library. A single run against your production repo will tell you more about your brand-drift debt than any design audit.

Plugin Authoring

The od-plugin-authoring scenario plugin --- one of the 11 official scenarios --- scaffolds new plugins from a description. You describe what the plugin should do, and it produces a skeleton SKILL.md and directory structure. This is a meta-capability: the plugin ecosystem can generate new additions to itself.

Prompt
Use od-plugin-authoring to scaffold a plugin that generates
email signature blocks in HTML, accepting a name, title,
and brand system as inputs.

The output is a plugin directory you can place in ./.claude/skills/ to make it immediately available to your agent, at the highest priority in the discovery order.

When to Write a Custom Plugin

Write a custom plugin when:

You have a generation workflow you run more than twice a week. You need inputs the bundled skills don't accept. You want to enforce organization-specific constraints that aren't in any bundled brand system. You are exporting to a framework or format not covered by the official export plugins.

Don't write a custom plugin when:

A bundled skill or scenario plugin handles the job, even approximately. You are tempted to fork an official plugin to change one parameter --- override it via the discovery path instead. Your "custom" plugin is just a renamed copy of an official one.

Crystallize a successful run into a skill

When you iterate to a pattern that works --- prompt, skill invocation, and design system state aligned --- you should not reconstruct it from chat history on the next project. The Automations surface includes a Crystallize successful run into skill template that packages the run's prompt, skill invocation, and design-system attachment into a reusable skill recipe. Use it after a generation you would happily repeat. Save as template on the export menu covers project-level recycling; crystallize covers recipe-level recycling. The full Automations gallery is in Figure D.27 (Appendix D).

Next: Chapter 10 covers the MCP (Model Context Protocol) server that makes all of this agent-agnostic --- the infrastructure that lets any of 21 supported CLIs drive Open Design's skills, brand systems, and plugins through a single standard connection.

Next Chapter

The MCP Server

How Open Design connects to coding-agent CLIs via the Model Context Protocol

Continue Reading

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