Agent skill

Design Import

by yonatangross in yonatangross/orchestkit

Scaffolds React components from a Claude Design handoff bundle and stops at files on disk: no stories, no tests, no pull request.

MITAuto-check: notesDevelopment

Install Design Import

skills CLI
$ npx skills add yonatangross/orchestkit --skill design-import -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install yonatangross/orchestkit design-import --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/yonatangross/orchestkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/src/skills/design-import .claude/skills/design-import && rm -rf skills-src

Use ~/.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/

Facts

Skill name
design-import
GitHub stars
290
Token cost
~2.9k tokens
SKILL.md length
403 words
Files
1
Skills in repo
108
Repo updated
First seen
Licence
MIT

At a glance

Scaffolds React components from a Claude Design handoff bundle and stops at files on disk: no stories, no tests, no pull request.

  • Works in 5 steps: Parse + validate → Reconcile tokens → Dedup components → …
  • Handed a claude.ai/design URL
  • SKILL.md covers When to use, Pipeline, Argument resolution and Phase 1 — Parse + validate, plus 9 more sections
  • Reaches claude.ai

What it does

Design Import is an agent skill from yonatangross/orchestkit. Scaffolds React components from a Claude Design handoff bundle and stops at files on disk: no stories, no tests, no pull request. Use when handed a claude.ai/design URL or a local bundle file; when that same scaffold should carry on through test generation, browser verification and an opened PR, run /ork:design-ship instead.

Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Claude Code 2.1.277+. Requires: claude-design-orchestrator agent. Optional: stitch, 21st-dev-magic, storybook-mcp MCP servers (used transitively via…

It sits in Development, covering Project scaffolding, React components and Test generation. The repository describes itself as: The Complete AI Development Toolkit for Claude Code. 106 skills, 36 agents, 171 hooks. Install ork for stable (v9.x), or ork-alpha for the v10 line, which ships daily. The licence is MIT.

When your agent uses it

  • Handed a claude.ai/design URL
  • A local bundle file
  • That same scaffold should carry on through test generation
  • Browser verification and an opened PR

Example prompts

  • “Use the design-import skill to scaffold React components from a Claude Design handoff bundle and stops at files on disk: no stories, no tests, no…”
  • “/design-import”

Requirements

  • Python 3
  • Compatibility (from SKILL.md): Claude Code 2.1.277+. Requires: claude-design-orchestrator agent. Optional: stitch, 21st-dev-magic, storybook-mcp MCP servers (used transitively via design-to-code).
  • Pre-approved tools (allowed-tools): Read, Write, Edit, Glob, Grep, Bash, WebFetch, AskUserQuestion, Agent, TaskCreate, TaskUpdate, TaskList

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Parse + validate
  2. Reconcile tokens
  3. Dedup components
  4. Scaffold
  5. Provenance

What it can do on your machine

Read from SKILL.md and the folder at commit 02bbf9a. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Edit
    • Glob
    • Grep
    • Bash
    • WebFetch
    • AskUserQuestion
    • Agent
    • TaskCreate

    …and 2 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are python and bash).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • claude.ai

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Claude Code 2.1.277+. Requires: claude-design-orchestrator agent. Optional: stitch, 21st-dev-magic, storybook-mcp MCP servers (used transitively via design-to-code).

    From compatibility in the SKILL.md frontmatter.

Context cost

Design Import loads about 2.9k tokens when it runs. Until then it costs about 85 tokens; SKILL.md has 403 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~85
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Edit, Glob, Grep, Bash, WebFetch, AskUserQuestion, Agent, TaskCreate, TaskUpdate, TaskL

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.

SKILL.md

The full file from yonatangross/orchestkit at commit 02bbf9a, republished under its MIT licence (© yonatangross). 403 words, ~2,871 tokens.

Download SKILL.mdSave it as .claude/skills/design-import/SKILL.md (or your agent's skills folder).
name
design-import
description
Scaffolds React components from a Claude Design handoff bundle and stops at files on disk: no stories, no tests, no pull request. Use when handed a claude.ai/design URL or a local bundle file; when that same scaffold should carry on through test generation, browser verification and an opened PR, run /ork:design-ship instead.
allowed-tools
Read, Write, Edit, Glob, Grep, Bash, WebFetch, AskUserQuestion, Agent, TaskCreate, TaskUpdate, TaskList
compatibility
Claude Code 2.1.277+. Requires: claude-design-orchestrator agent. Optional: stitch, 21st-dev-magic, storybook-mcp MCP servers (used transitively via design-to-code).
license
MIT
argument-hint
<handoff-url | path-to-bundle.json>
context
fork
background
false
user-invocable
true
effort
high
model
sonnet
agent
claude-design-orchestrator
skills
design-to-code, component-search, design-context-extract, design-system-tokens, remember, memory
metadata.category
workflow-automation

Design Import

Turn a Claude Design handoff bundle into scaffolded React components, with provenance and dedup against the existing codebase.

bash
design-import https://claude.ai/design/abc123      # From handoff URL
design-import /tmp/handoff-bundle.json             # From local file

When to use

After exporting a handoff bundle from claude.ai/design. This skill is the entry point — it does NOT open a PR, run tests, or deploy. For the end-to-end flow (import → tests → PR), use design-ship instead.

Pipeline

Handoff bundle (URL or file)
  │
  ▼
┌──────────────────────────────┐
│ 1. PARSE + VALIDATE          │  via claude-design-orchestrator agent
│    - Fetch bundle             │  Schema validation
│    - Compute bundle_id (sha)  │  Surface deviations
└──────────┬───────────────────┘
           │
           ▼
┌──────────────────────────────┐
│ 2. RECONCILE TOKENS           │  Diff bundle tokens vs project tokens
│    - Read project tokens      │  Conflicts → AskUserQuestion
│    - Apply additions          │  Additions → write to design-tokens.json
└──────────┬───────────────────┘
           │
           ▼
┌──────────────────────────────┐
│ 3. DEDUP COMPONENTS           │  For each proposed component:
│    Storybook MCP first        │   • exact match → reuse (skip)
│    21st.dev next              │   • similar match → adapt
│    Filesystem grep last       │   • no match → scaffold
└──────────┬───────────────────┘
           │
           ▼
┌──────────────────────────────┐
│ 4. SCAFFOLD                   │  Delegate to design-to-code per component
│    (skipped components        │  Use bundle's tsx_scaffold as seed
│     logged but not touched)   │  Apply project tokens
└──────────┬───────────────────┘
           │
           ▼
┌──────────────────────────────┐
│ 5. WRITE PROVENANCE           │  .claude/design-handoffs/<bundle_id>.json
│    Bundle → files → (PR)      │  PR field empty until design-ship
└──────────┬───────────────────┘
           │
           ▼
   Import manifest (stdout)

Argument resolution

python
ARG = "$1"  # First positional argument

if ARG.startswith("http://") or ARG.startswith("https://"):
    bundle_source = "url"
    bundle_input = ARG
elif Path(ARG).exists():
    bundle_source = "file"
    bundle_input = ARG
else:
    AskUserQuestion(questions=[{
      "question": "I couldn't resolve that as a URL or file. What is it?",
      "header": "Bundle source",
      "options": [
        {"label": "Paste handoff URL", "description": "claude.ai/design URL"},
        {"label": "Paste file path", "description": "Local handoff JSON"},
        {"label": "Cancel", "description": "Abort import"}
      ],
      "multiSelect": False
    }])

Phase 1 — Parse + validate

Delegate to the orchestrator agent. The agent fetches, extracts the tarball, reads the README + chats, parses the HTML prototypes, and produces a normalized payload. Do NOT reimplement parsing here — the agent owns the (real, tarball-based) schema.

python
Agent(
  subagent_type="ork:claude-design-orchestrator",
  description="Parse and normalize handoff bundle",
  prompt=f"""Parse the Claude Design handoff bundle at {bundle_input}.

  This is a gzipped tarball (NOT a JSON manifest). Layout:
    <project>/README.md          ← read first
    <project>/chats/*.md         ← read all (load-bearing)
    <project>/project/*.html     ← prototypes (may be absent if incomplete)

  Tasks:
  1. Fetch the bundle (WebFetch if URL → saved .bin path; Read if local file)
  2. Extract: `tar -xzf <bin> -C /tmp/<scratch>/`
  3. Read README.md, then every chats/*.md (intent + clarifications live here)
  4. Compute bundle_id = sha256(canonical bundle URL or absolute path)
  5. If project/ is MISSING → return status="incomplete" with the assistant's
     last unanswered question; do NOT crash. Surface "what user should do".
  6. If project/ exists → pick primary HTML:
     - Prefer the file matching the URL's ?open_file= query param
     - Else first alphabetical
  7. From the primary HTML, extract:
     - Inline `:root { --... }` CSS custom properties as design tokens
     - Component sections (named via class/id/data-screen-label)
     - Asset references (<link>, <img>) — keep as URLs, do not download
     - EDITMODE JSON block (design-time state — capture as ANNOTATION only)
  8. Produce normalized output payload (see agent spec)
  9. Write provenance to .claude/design-handoffs/<bundle_id>.json:
     - bundle_url, bundle_id, fetched_at, status, components: [], pr: null
  10. Return the normalized payload as JSON

  Surface any deviations from the expected tarball layout explicitly.
  Never expect a JSON `components[]` field — that was the old (wrong) shape.
  """
)

Phase 2 — Reconcile tokens

Read the normalized token_diff from the agent's payload.

Diff fieldAction
addedAppend to project's design-tokens.json (or Tailwind config). No prompt — additions are safe.
modifiedShow diff. AskUserQuestion: keep project value, accept bundle value, or open editor.
conflictsBlock scaffolding. AskUserQuestion to resolve before continuing.
python
if token_diff["conflicts"]:
    AskUserQuestion(questions=[{
      "question": f"Token conflict on {conflict.path}. Project says {conflict.project}, bundle says {conflict.bundle}. Resolve?",
      "header": "Token conflict",
      "options": [
        {"label": "Keep project value", "description": "Bundle adapts to project"},
        {"label": "Accept bundle value", "description": "Project adapts to bundle (writes new token)"},
        {"label": "Both — namespace bundle's", "description": f"Add as {conflict.path}.imported"}
      ],
      "multiSelect": False
    }])

Phase 3 — Dedup components

The agent already ran component-search per component. Read decisions from the normalized payload:

decisionBehavior
reuseLog "skipped (existing: <path>)" — do nothing on disk
adaptPipe through ork:design-to-code with --adapt-from <existing-path> context
scaffoldPipe through ork:design-to-code with the bundle's tsx_scaffold as seed

Phase 4 — Scaffold

For each component with decision scaffold or adapt, invoke design-to-code:

python
for component in payload["components"]:
    if component["decision"] in ("scaffold", "adapt"):
        # Compose, don't reimplement — design-to-code owns the EXTRACT/MATCH/ADAPT/RENDER pipeline
        Agent(
          subagent_type="ork:frontend-ui-developer",
          description=f"Scaffold {component['name']} from bundle",
          prompt=f"""Use the design-to-code skill to scaffold this component.

          Source: handoff bundle {payload['bundle_id']}
          Component: {component['name']}
          Target path: {component['target_path']}
          Bundle scaffold seed:
          ```tsx
          {component['tsx_scaffold']}
          ```
          Resolved tokens: {component['tokens_resolved']}
          Decision: {component['decision']}
          {f"Adapt from: {component['existing_match']}" if component['decision'] == 'adapt' else ''}

          Write the component, mirror existing project file structure, use project tokens.
          """
        )

Phase 5 — Provenance

Update the provenance file with the actual file paths written:

python
provenance = Read(payload["provenance_path"])
provenance["components"] = [
    {"name": c["name"], "decision": c["decision"], "path": c["target_path"]}
    for c in payload["components"]
]
provenance["imported_at"] = now()
Write(payload["provenance_path"], provenance)

Output — import manifest

Print a concise summary (not a wall of JSON):

Imported bundle <bundle_id>
  Source: <bundle_url>
  Provenance: .claude/design-handoffs/<bundle_id>.json

Components:
  ✓ PricingCard          scaffold  src/components/pricing/PricingCard.tsx
  ↻ Button               reuse     existing: src/components/ui/Button.tsx
  ⤳ Hero                 adapt     adapted from: src/components/Hero.tsx

Tokens:
  + 3 new (added to design-tokens.json)
  ~ 1 modified (user accepted bundle value)
  ✗ 0 conflicts unresolved

Next: design-ship <bundle_id>   # to open PR
      expect                     # to verify

Hooks

  • After completion, the post-design-import hook recommends expect (non-blocking, see hook for details).
Show full SKILL.md (158 more words)Show less

Composition

SkillRole
design-to-codeOwns the actual scaffold pipeline (EXTRACT/MATCH/ADAPT/RENDER). This skill delegates to it per component.
component-searchUsed by the orchestrator agent for dedup
design-context-extractUsed if bundle is missing design_tokens block
design-system-tokensToken reconciliation reference
remember / memoryProvenance + prior-import detection

NOT this skill's job

ConcernOwned by
Open PRdesign-ship
Run testspost-design-import hook → expect
Generate Storybook storiescover (called by design-ship)
Re-prompt Claude DesignNot yet — no public API

Limitations

  • No public Claude Design API yet: bundles are one-shot exports. To iterate, re-export from claude.ai/design and re-import. The reverse-path (drift detection + refinement prompt) is tracked in M124 — Claude Design Drift Sync (Bet B): #1391, #1393, #1394, #1395, #1397.
  • Schema is provisional: Claude Design has not published a stable bundle schema. The orchestrator agent adapts to deviations but may need updates as the format stabilizes.
  • Asset URLs are referenced, not downloaded: bundle asset_urls are kept as-is. If you need them in-repo, run a separate sync step.

© yonatangross, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in src/skills/design-import of yonatangross/orchestkit.

Open the folder on GitHubat commit 02bbf9a

Compare with similar skills

Design Import 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.

Design Import compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Design Import this skillyonatangross/orchestkit290—~2.9kAutomated safety check: NotesMIT
Core PR Helpercalimero-network/core171—~614Automated safety check: PassCustom licence
Corvus Query Languagescorvus-dotnet/Corvus.JsonSchema199—~2.1kAutomated safety check: PassApache-2.0
Create Ryos Appryokun6/ryos1.3k—~3.7kAutomated safety check: PassAGPL-3.0
Reviewquran/quran.com-frontend-next1.9k—~1.1kAutomated safety check: PassNone
Veomni Patchgen ModelByteDance-Seed/VeOmni2.2k—~9.6kAutomated safety check: PassApache-2.0

Similar skills

  • Core PR Helper

    calimero-network/core

    Suggests one appropriate branch name and a PR description in the project template (title, Description, Test plan, Documentation update) for Calimero core.

    171 GitHub stars~614 tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Corvus Query Languages

    corvus-dotnet/Corvus.JsonSchema

    Work with JSONata, JMESPath, JsonLogic, and JSONPath query and transformation languages.

    199 GitHub stars~2.1k tokensUpdated today
    DevelopmentAuto-check passed
  • Create Ryos App

    ryokun6/ryos

    Create new applications for ryOS following established patterns and conventions.

    1.3k GitHub stars~3.7k tokensUpdated yesterday
    DevelopmentAuto-check passed
  • Review

    quran/quran.com-frontend-next

    Reviews PR(s) using comprehensive review guidelines including security, correctness, clean code, TypeScript, React patterns, i18n/RTL, performance, and accessibility.

    1.9k GitHub stars~1.1k tokensUpdated 5 mo ago
    DevelopmentAuto-check passed
  • Veomni Patchgen Model

    ByteDance-Seed/VeOmni

    Author or refresh a VeOmni model's patchgen-generated modeling under generated/ — GPU and/or NPU config, dense or MoE, text / VLM / Omni.

    2.2k GitHub stars~9.6k tokensUpdated today
    Testing & QAAuto-check passed
  • Raise PR

    Shopify/flash-list

    Official

    Create a GitHub PR for FlashList. An agent skill from Shopify/flash-list.

    7.2k GitHub stars~1.2k tokensUpdated 8 days ago
    DevelopmentAuto-check passed

More from yonatangross/orchestkit

All 108 skills in this repo
  • API Design

    yonatangross/orchestkit

    API contract design for REST and GraphQL, covering resource shape, URL and header versioning with deprecation windows, RFC 9457 Problem Details error handling, and OpenAPI specs.

    290 GitHub stars~2.9k tokensUpdated today
    Auto-check passed
  • Architecture Decision Record

    yonatangross/orchestkit

    ADR templates in the Nygard format with context, decision, consequences, and alternatives.

    290 GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Audit Full

    yonatangross/orchestkit

    Single-pass codebase analysis leveraging a 1M-token context window for comprehensive security scanning, architecture review, and dependency auditing.

    290 GitHub stars~3.5k tokensUpdated today
    Auto-check: notes
  • Code Review Playbook

    yonatangross/orchestkit

    Structured review processes, conventional comments, language-specific checklists, and feedback templates.

    290 GitHub stars~2.2k tokensUpdated today
    Auto-check passed
  • Create PR

    yonatangross/orchestkit

    Creates GitHub pull requests with pre-flight validation, conventional title formatting, and structured summary generation.

    290 GitHub stars~4.5k tokensUpdated today
    Auto-check: notes
  • Explore

    yonatangross/orchestkit

    Multi-angle codebase exploration spawning 3-5 parallel agents for code structure, data flow, architecture patterns, and health assessment.

    290 GitHub stars~3.9k tokensUpdated today
    Auto-check: notes

Questions about Design Import

What does Design Import do?

Scaffolds React components from a Claude Design handoff bundle and stops at files on disk: no stories, no tests, no pull request. Design Import is an agent skill from yonatangross/orchestkit. Scaffolds React components from a Claude Design handoff bundle and stops at files on disk: no stories, no tests, no pull request.

When should I use Design Import?

Design Import fits situations like: handed a claude.ai/design URL; A local bundle file; that same scaffold should carry on through test generation; browser verification and an opened PR.

How do I install Design Import in Claude Code?

Run `npx skills add yonatangross/orchestkit --skill design-import -a claude-code`. Or copy the skill folder (src/skills/design-import in yonatangross/orchestkit) into .claude/skills/design-import in your project. Claude Code loads it when a task matches its description.

How do I install Design Import in Codex?

Run `npx skills add yonatangross/orchestkit --skill design-import -a codex`. Or copy the skill folder (src/skills/design-import in yonatangross/orchestkit) into .agents/skills/design-import in your project. Codex loads it when a task matches its description.

Can I use Design Import in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add yonatangross/orchestkit --skill design-import -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/design-import, .gemini/skills/design-import, .github/skills/design-import and .opencode/skills/design-import in your project.

What does Design Import need to run?

SKILL.md names no scripts, command-line tools or credentials: Design Import is instructions for the agent only. Our summary lists: Python 3. Its frontmatter pre-approves these tools: Read, Write, Edit, Glob, Grep, Bash, WebFetch, AskUserQuestion, Agent, TaskCreate, TaskUpdate, TaskList. Compatibility (from SKILL.md): Claude Code 2.1.277+. Requires: claude-design-orchestrator agent. Optional: stitch, 21st-dev-magic, storybook-mcp MCP servers (used transitively via design-to-code)..

Does Design Import access the network?

SKILL.md names 1 domain. In commands or code: claude.ai; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Design Import safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Design Import use?

Design Import is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Design Import use?

About 2.9k tokens (SKILL.md is roughly 11k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Design Import?

Skills that share tags, products or a category with Design Import: Core PR Helper (calimero-network/core, 171 stars), Corvus Query Languages (corvus-dotnet/Corvus.JsonSchema, 199 stars), Create Ryos App (ryokun6/ryos, 1.3k stars) and Review (quran/quran.com-frontend-next, 1.9k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Design Import?

yonatangross (a GitHub user) maintains it in yonatangross/orchestkit, which has 290 GitHub stars. The repository holds 108 skills in this directory. The repository was last updated on October 9, 2026.

Source: yonatangross/orchestkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.