Design & Medialow risk

design-extract

Extract design tokens (color / typography / spacing) from imported source code, screenshots, or Figma exports into the canonical token bag token-map consumes.

nexu-io/open-design·plugins/_official/atoms/design-extract/SKILL.md
60/ 100推薦值

匯入這個 Skill

選擇你的 coding agent,複製專案級或個人級安裝指令。

固定至平台收錄的 commit
匯入目前專案.agents/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a codex -y
匯入個人環境~/.agents/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a codex -g -y
手動放置目錄.agents/skills/design-extractOfficial docs ↗
匯入目前專案.claude/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a claude-code -y
匯入個人環境~/.claude/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a claude-code -g -y
手動放置目錄.claude/skills/design-extractOfficial docs ↗
匯入目前專案.agents/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a github-copilot -y
匯入個人環境~/.copilot/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a github-copilot -g -y
手動放置目錄.agents/skills/design-extractOfficial docs ↗
匯入目前專案.agents/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a cursor -y
匯入個人環境~/.cursor/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a cursor -g -y
手動放置目錄.agents/skills/design-extractOfficial docs ↗
匯入目前專案.agents/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a gemini-cli -y
匯入個人環境~/.gemini/skills/design-extract
npx skills add https://github.com/nexu-io/open-design/tree/7533db3f4342d09b27368fa5d907ebd3cdb93b75/plugins/_official/atoms/design-extract -a gemini-cli -g -y
Native Gemini CLIgemini skills install https://github.com/nexu-io/open-design.git --scope workspace --path plugins/_official/atoms/design-extract
手動放置目錄.agents/skills/design-extractOfficial docs ↗
⚠ 安裝指令使用開源 skills CLI。執行前請檢查來源、腳本與權限。
# Design extract

Spec §10 / §21.3.2: tokens scattered across a repo's CSS / theme
files / Tailwind config / styled-components helpers / SCSS partials
need to be lifted into one bag before `token-map` can crosswalk
them onto the active OD design system. This atom does the lifting;
the input shape is intentionally generic so the same atom serves
both code-migration and figma-migration when fed different sources.

## Inputs

- `code/index.json` from `code-import` (code-migration), OR
- `figma/tree.json` from `figma-extract` (figma-migration), OR
- A folder of screenshot images (tune-collab quick-tune flows).

## Output

```text
project-cwd/
└── code/
    └── tokens.json     # { colors[], typography[], spacing[], radius[], shadow[] }
```

Each token entry carries:

```jsonc
{
  "kind":     "color",
  "name":     "primary-500",     // optional source name
  "value":    "#5b8def",          // canonical value
  "sources": ["styles/global.css:42", "tailwind.config.js:24"],
  "usage":   ["Header.tsx", "Footer.tsx"]
}
```

`sources[]` and `usage[]` are the audit trail `token-map.unmatched.json`
references when a target token can't be found.

## Convergence

The atom completes when `code/tokens.json` exists. Empty token bags
emit a warning event but do not abort — `token-map` handles the
empty case by skipping its mapping pass.

## Anti-patterns the prompt fragment forbids

- Hard-coded hex values inside JSX literals (`color: '#fff'`) are
  tokens for this atom's purposes; record them with `kind:'color'`
  and a synthetic name so they don't disappear into the noise.
- Tailwind utility scans must dedupe palette references against the
  active theme — never list `bg-blue-500` and `bg-blue-600` as one
  token.

## Status

Reserved id, prompt-only fragment in v1.