nexu-io/od-figma-migration
Default reference pipeline for the figma-migration taskKind — figma-extract → token-map → generate → critique.
npx skills add https://github.com/nexu-io/open-design --skill od-figma-migration
Spec §1 / §10.1 / §21.3.1 / §23.3.3: the canonical figma-migration
flow. The pipeline is sequenced so each stage's output is the next
stage's input — figma-extract writes figma/tree.json,
token-map writes token-map/colors.json (etc.), and generate
reads both before producing the HTML artifact.
{
"stages": [
{ "id": "extract", "atoms": ["figma-extract"] },
{ "id": "tokens", "atoms": ["token-map"] },
{ "id": "generate", "atoms": ["file-write", "live-artifact"] },
{
"id": "critique", "atoms": ["critique-theater"],
"repeat": true,
"until": "critique.score>=4 || iterations>=3"
}
]
}
The scenario expects two oauth-prompt / form surfaces from the
plugin layer:
figma-oauth — oauth.route='connector', connectorId='figma',persists at the project tier so multi-conversation work doesn't
re-prompt.
file-pick — kind='form', captures the Figma file URL on thefirst turn so figma-extract knows where to read.
The daemon auto-derives the figma-oauth surface when
od.connectors.required[].id='figma' is declared and the connector
isn't yet authorised (spec §10.3.1 implicit oauth-prompt rule).
Take nexu-io/od-figma-migration from the repository into ~/.claude/skills for personal
use, or into .claude/skills inside a project.
The agent identifies a skill by the name field in its header. Two skills with the
same name cannot sit side by side — one of them will be ignored.