Figma Design System Builder
warpdotdev/warp
Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.
A skill your agent uses when the user says they adjusted the design in Figma, mentions "fix", "correct", "learn from", "I changed", "diff", "what changed", or wants the system to incorporate manual…
$ npx skills add noemuch/bridge --skill learning-from-corrections -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install noemuch/bridge learning-from-corrections --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/noemuch/bridge.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/learning-from-corrections .claude/skills/learning-from-corrections && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "learning-from-corrections" agent skill from https://github.com/noemuch/bridge/tree/main/skills/learning-from-corrections into .claude/skills/learning-from-corrections/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learning-from-corrections", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/noemuch/bridge/tree/main/skills/learning-from-correctionsType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add noemuch/bridge --skill learning-from-corrections -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install noemuch/bridge learning-from-corrections --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noemuch/bridge.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/learning-from-corrections .agents/skills/learning-from-corrections && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "learning-from-corrections" agent skill from https://github.com/noemuch/bridge/tree/main/skills/learning-from-corrections into .agents/skills/learning-from-corrections/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learning-from-corrections", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add noemuch/bridge --skill learning-from-corrections -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install noemuch/bridge learning-from-corrections --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noemuch/bridge.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/learning-from-corrections .cursor/skills/learning-from-corrections && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "learning-from-corrections" agent skill from https://github.com/noemuch/bridge/tree/main/skills/learning-from-corrections into .cursor/skills/learning-from-corrections/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learning-from-corrections", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/noemuch/bridge.git --path skills/learning-from-corrections--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add noemuch/bridge --skill learning-from-corrections -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install noemuch/bridge learning-from-corrections --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noemuch/bridge.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/learning-from-corrections .gemini/skills/learning-from-corrections && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "learning-from-corrections" agent skill from https://github.com/noemuch/bridge/tree/main/skills/learning-from-corrections into .gemini/skills/learning-from-corrections/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learning-from-corrections", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install noemuch/bridge learning-from-correctionsInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add noemuch/bridge --skill learning-from-corrections -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/noemuch/bridge.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/learning-from-corrections .github/skills/learning-from-corrections && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "learning-from-corrections" agent skill from https://github.com/noemuch/bridge/tree/main/skills/learning-from-corrections into .github/skills/learning-from-corrections/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learning-from-corrections", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add noemuch/bridge --skill learning-from-corrections -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install noemuch/bridge learning-from-corrections --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/noemuch/bridge.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/learning-from-corrections .opencode/skills/learning-from-corrections && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "learning-from-corrections" agent skill from https://github.com/noemuch/bridge/tree/main/skills/learning-from-corrections into .opencode/skills/learning-from-corrections/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "learning-from-corrections", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
learning-from-correctionsA skill your agent uses when the user says they adjusted the design in Figma, mentions "fix", "correct", "learn from", "I changed", "diff", "what changed", or wants the system to incorporate manual…
Learning From Corrections is an agent skill from noemuch/bridge. Use when the user says they adjusted the design in Figma, mentions "fix", "correct", "learn from", "I changed", "diff", "what changed", or wants the system to incorporate manual Figma edits back into the spec. Diffs the current Figma state against the last snapshot, classifies each change as a DS learning or a hardcoded flag, persists learnings, and patches the active recipe.
Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Frontend & Design. It works with Figma. The repository describes itself as: Design in Figma with Claude Code. Bridge connects your terminal to the Figma Plugin API via WebSocket. The licence is MIT.
12 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 414977f. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
makeFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Learning From Corrections loads about 2.4k tokens when it runs. Until then it costs about 101 tokens; SKILL.md has 879 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from noemuch/bridge at commit 414977f, republished under its MIT licence (© noemuch). 879 words, ~2,440 tokens.
.claude/skills/learning-from-corrections/SKILL.md (or your agent's skills folder).{{ACTIVE_RULES}}
Closes the feedback loop from manual Figma edits back into Bridge's knowledge base. Diffs the live Figma state against the saved snapshot, classifies each correction as a LEARNING (DS-compliant → persisted) or a FLAG (hardcoded → surfaced), updates learnings.json, and auto-patches the active recipe when eligible.
Invoke when the user:
specs/active/ with a snapshotDo NOT use if:
make first (use generating-figma-design)generating-figma-design with a new descriptionshipping-and-archivingBefore starting, load:
references/transport-adapter.md (repo-root) — for Figma state re-readreferences/compiler-reference.md (repo-root) — for scene graph recompile (if re-executing after fix)specs/active/ (abort if missing: "No active CSpec. Run: make <description>")specs/active/{name}-snapshot.json (abort if missing: "No snapshot found. The design must have been generated with make. Run make first.")references/transport-adapter.md (repo-root) Section F)specs/active/{name}.cspec.yamlspecs/active/{name}-snapshot.jsonknowledge-base/learnings.json (create empty structure if file doesn't exist)knowledge-base/registries/variables.json for token resolutionRun a node tree extraction script via Plugin API execution, using the rootNodeId and fileKey from the snapshot's meta.
Console transport:
figma_execute({
code: "return (async function() { ... extraction script with rootNodeId ... })();"
})Official transport:
use_figma({
fileKey: "{fileKey}",
description: "Re-extract node tree for fix diff",
code: "... extraction script without IIFE wrapper ..."
})The extraction script walks the node tree and captures: id, name, type, layoutMode, itemSpacing, padding*, cornerRadius, fills, boundVariables, width, height, componentKey, children.
Compare the two JSON trees in context. Claude performs this comparison directly.
Match strategy:
id (stable across edits)layoutMode, itemSpacing, paddingTop/Bottom/Left/RightcornerRadius, fills, boundVariableswidth, heightcomponentKey (detect swapped components)Ignore:
For each detected change:
Does the new value use a DS token (bound variable)?
-> YES: Classify as LEARNING (DS-compliant correction)
-> NO (hardcoded hex, raw px, unbound): Classify as FLAG (needs attention)Token resolution: Check boundVariables in the current tree. If the property has a bound variable ID, resolve it against registries/variables.json to get the token name.
For each LEARNING-classified change:
Determine context:
screenType: from the CSpec's meta.pattern or intentcomponent: nearest component ancestor name, or the node's own name if it's a component instancesection: parent frame name (e.g., "header", "content", "sidebar")Check for existing learning: Search learnings.json for a learning with matching context + change.property + change.to.token
signals, append to historyGenerate rule: Write a human-readable rule describing the preference (e.g., "For settings screens, cards use spacing/medium (not large)")
Check promotion: After updating signals, check if any contextual learning qualifies for global promotion:
signals >= 3screenType valuesFor each FLAG-classified change:
flags array in learnings.jsonIf a recipe was used (check snapshot.meta.recipe):
graph to reflect the learned changesversion, update lastEvolvedAtevolution_logIf a learning is promoted to global scope, scan ALL recipes and patch any where the change applies.
If learnings were extracted (DS-compliant changes):
Write updated learnings.json to knowledge-base/learnings.json.
Update meta.lastUpdated to today's date.
Re-save the snapshot with the current Figma state (so future fix runs diff against the latest corrections, not the original generation).
## Fix: {name}
### Changes detected: {total count}
### Learnings extracted: {count}
| # | Context | Property | From | To | Rule |
|---|---------|----------|------|----|------|
| 1 | settings / card | itemSpacing | spacing/large (24) | spacing/medium (16) | Cards in settings use medium spacing |
### Flags: {count}
| # | Node | Issue | Suggestion |
|---|------|-------|------------|
| 1 | StatusBadge | Hardcoded hex #FF5722 | Use $color/text/error/default |
### Recipe patches: {count}
- Recipe "{name}" v{version}: {description of patch}
### Promotions: {count}
- "{rule}" promoted to global (signals: {n}, screenTypes: {list})
### CSpec updated: {yes/no}
{list of CSpec changes if any}Fix complete for {name}.
Learnings: {n} extracted ({n} new, {n} reinforced, {n} promoted)
Flags: {n} hardcoded values flagged
Recipe: {patched | not applicable}
Options:
- Continue editing in Figma, then run `fix` again
- "done" to archive and shipfix again after more changesdone" (handled by shipping-and-archiving)<HARD-GATE>
Every correction MUST be classified before `learnings.json` is written.
Unclassified changes are a gate failure.
Every LEARNING MUST reference a token from the current
registries/variables.json / registries/text-styles.json. A
LEARNING that points to a non-existent token is a gate failure.
Every FLAG MUST be surfaced to the user before saving the snapshot.
</HARD-GATE>
See the full catalog at references/red-flags-catalog.md (repo-root).
Top flags for this skill:
This skill is gated by references/verification-gates.md (repo-root):
Evidence to surface: diff summary, classification table, updated learnings.json diff.
digraph fix_flow {
"User says 'fix'" [shape=doublecircle];
"Diff Figma vs snapshot" [shape=box];
"DS-compliant changes?" [shape=diamond];
"Hardcoded primitives?" [shape=diamond];
"Persist as LEARNING" [shape=box];
"Surface as FLAG" [shape=box style=filled fillcolor=lightyellow];
"Recipe eligible?" [shape=diamond];
"Auto-patch recipe" [shape=box];
"Update snapshot" [shape=doublecircle style=filled fillcolor=lightgreen];
"User says 'fix'" -> "Diff Figma vs snapshot";
"Diff Figma vs snapshot" -> "DS-compliant changes?";
"DS-compliant changes?" -> "Persist as LEARNING" [label="yes"];
"DS-compliant changes?" -> "Hardcoded primitives?" [label="check next"];
"Hardcoded primitives?" -> "Surface as FLAG" [label="yes"];
"Persist as LEARNING" -> "Recipe eligible?";
"Recipe eligible?" -> "Auto-patch recipe" [label="yes"];
"Auto-patch recipe" -> "Update snapshot";
"Recipe eligible?" -> "Update snapshot" [label="no"];
"Surface as FLAG" -> "Update snapshot";
}© noemuch, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/learning-from-corrections of noemuch/bridge.
Open the folder on GitHubat commit 414977f
Learning From Corrections next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Learning From Corrections this skillnoemuch/bridge | 156 | — | ~2.4k | Automated safety check: Pass | MIT | |
| Figma Design System Builderwarpdotdev/warp | 65k | 2 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| Figma use_figma Plugin API Ruleswarpdotdev/warp | 65k | 4 repos | ~4.4k | Automated safety check: Pass | AGPL-3.0 | |
| Figma Design to Codewarpdotdev/warp | 65k | 4 repos | ~2.9k | Automated safety check: Pass | AGPL-3.0 | |
| Figma Design System Rules Generatorwarpdotdev/warp | 65k | 3 repos | ~4.6k | Automated safety check: Pass | AGPL-3.0 | |
| Figma Code Connect Componentswarpdotdev/warp | 65k | 2 repos | ~4.2k | Automated safety check: Pass | AGPL-3.0 |
warpdotdev/warp
Builds or updates a design system in Figma from a codebase in ordered phases: discovery, variables and tokens, components, theming and documentation, with checkpoints.
warpdotdev/warp
Required groundwork before any use_figma call: the rules and reference files for running JavaScript in a Figma file through the Plugin API without common failures.
warpdotdev/warp
Turns a Figma frame or component into production code that matches the design, using the Figma MCP server and the project's own design system.
warpdotdev/warp
Creates project-specific design system rules from your codebase so coding agents implement Figma designs with your components, naming and tokens.
warpdotdev/warp
Maps published Figma components to their code implementations with Code Connect, using the Figma MCP suggestion and mapping tools.
ZeroZ-lab/cc-design
High-fidelity HTML design and prototype creation. An agent skill from ZeroZ-lab/cc-design.
noemuch/bridge
A skill your agent uses when the user requests to design, create, build, generate, or make a new Figma component or screen — including phrases like "make a button", "design a settings page", "build…
noemuch/bridge
A skill your agent uses when the user says "setup", "setup bridge", "extract", "extract DS", "onboard", "build knowledge base", "initialize bridge", or is starting Bridge in a project for the first…
noemuch/bridge
A skill your agent uses when the user says "done", "ship it", "finish", "complete", "archive", or otherwise indicates the current design is ready to be shipped.
noemuch/bridge
A skill your agent uses when any Bridge command is invoked (make, fix, done, setup, drop, status) or any Figma / design-system / compiler / Bridge workflow topic is raised.
Works with
Categories
A skill your agent uses when the user says they adjusted the design in Figma, mentions "fix", "correct", "learn from", "I changed", "diff", "what changed", or wants the system to incorporate manual…. Learning From Corrections is an agent skill from noemuch/bridge. Use when the user says they adjusted the design in Figma, mentions "fix", "correct", "learn from", "I changed", "diff", "what changed", or wants the system to incorporate manual Figma edits back into the spec.
Learning From Corrections fits situations like: the user says they adjusted the design in Figma; wants the system to incorporate manual Figma edits back into the spec.
Run `npx skills add noemuch/bridge --skill learning-from-corrections -a claude-code`. Or copy the skill folder (skills/learning-from-corrections in noemuch/bridge) into .claude/skills/learning-from-corrections in your project. Claude Code loads it when a task matches its description.
Run `npx skills add noemuch/bridge --skill learning-from-corrections -a codex`. Or copy the skill folder (skills/learning-from-corrections in noemuch/bridge) into .agents/skills/learning-from-corrections in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add noemuch/bridge --skill learning-from-corrections -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/learning-from-corrections, .gemini/skills/learning-from-corrections, .github/skills/learning-from-corrections and .opencode/skills/learning-from-corrections in your project.
Going by SKILL.md and its folder, Learning From Corrections needs the command-line tools its instructions call (make).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Learning From Corrections is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.4k tokens (SKILL.md is roughly 9.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Learning From Corrections: Figma Design System Builder (warpdotdev/warp, 65k stars), Figma use_figma Plugin API Rules (warpdotdev/warp, 65k stars), Figma Design to Code (warpdotdev/warp, 65k stars) and Figma Design System Rules Generator (warpdotdev/warp, 65k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
noemuch (a GitHub user) maintains it in noemuch/bridge, which has 156 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on June 3, 2026.
Source: noemuch/bridge on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.