Skip to content

Output

Deliverables land at the output root. There is no nested design/ folder. source/ and extracted/ are deleted after a successful extract unless you pass --keep-intermediates.

out/
├── LLM.md                        # per-extract summary + static read order
├── ui-flow.json
├── llm-annotations.json          # written by annotate, not by extract
├── manifest.json                 # schemaVersion: 2, counts, index paths
├── pages.json
├── screens.json                  # origin, sourceScreenId, role, semantic, tree
├── components.json
├── component-sets.json
├── text-content.json
├── STRUCTURE.md
├── COMPONENTS.md
├── trees/
│   ├── index.json                # schemaVersion: 2
│   ├── boards/                   # pre-split board trees when a board was split
│   └── <page>__<screen>.json
├── tokens/
│   ├── tokens.css
│   ├── color-styles.json
│   ├── color-styles.flat.json
│   ├── color-styles.conflicts.json
│   ├── variables.json
│   ├── typography.json
│   ├── effects.json
│   └── fonts.json
├── components/
│   └── index.json
├── assets/
│   ├── images/
│   ├── svg/                      # shared vector assets
│   ├── manifest.json             # rasters + vector rows (unified index)
│   ├── vectors.json
│   ├── index.json                # points at rasters + vectors
│   └── missing-hashes.json
├── structure/
│   └── <page>.md
├── screens/<slug>/screen.json    # reference bundle (no embedded tree)
├── catalog/                      # with extract --toon or figma-extractor toon
│   ├── index.json
│   └── screen-hashes.json
├── toon/
│   ├── screens.toon
│   ├── components.toon
│   ├── assets.toon
│   └── tokens.toon
├── document/
│   ├── document.json
│   └── llm-summary.json          # after annotate when catalog exists
├── patterns/
├── diagnostics/
│   ├── truncated.json
│   ├── unsupported.json
│   ├── assets.json
│   ├── layout.json               # constraint counts; breakpoints never invented
│   ├── interactions.json
│   └── performance.json          # vectorRef path-byte savings
└── prompts/                      # after LLM annotate with artifacts enabled

--clean (the default) deletes those deliverable files and directories, plus a legacy design/ folder, before writing. llm-annotations.json is in that list, so a later extract removes a previous annotation file.

What each file is for

Path Produced by Contents
pages.json extract Page records
screens.json extract Screen records: tree, origin (top-level / board-child / crop), optional sourceScreenId / boardTree, role, optional semantic, regions
components.json extract Component records with prop defs when present
component-sets.json extract Variant sets ([] when the file has none)
text-content.json extract Unique strings grouped by page
STRUCTURE.md extract Structure outline
COMPONENTS.md extract Component outline
LLM.md extract Per-file counts/header plus static read-order instructions
ui-flow.json extract Pages, roles, regions, suggestedRoutes (inferred: true), prototype interactions
trees/index.json extract Screen list and tree summary (schemaVersion: 2)
trees/boards/*.json extract Pre-split board trees when a multi-UI board was split
trees/<page>__<screen>.json extract Layout, fills, text, styleRefs / variableRefs, vectorRef, expanded instances
tokens/tokens.css extract CSS custom properties
tokens/*.json extract Colour styles, variables, typography, effects (kind: explicit when authored)
components/index.json extract Variant-set axes
assets/manifest.json extract Unified rasters (kind: raster) and vectors (kind: vector)
assets/vectors.json extract Shared SVG vector records
assets/index.json extract Pointers to raster + vector indexes
assets/missing-hashes.json extract Image refs that were not materialized
screens/<slug>/screen.json extract Reference bundle: paths, semantic, route, optional reconstruction hints
structure/<page>.md extract Per-page outline
diagnostics/* extract Truncation, unsupported outlines, layout facts, performance
llm-annotations.json annotate Model suggestions, or the deterministic screen rows
catalog/index.json extract --toon or toon Reference index with screen, component, and asset refs
toon/*.toon extract --toon or toon TOON tables for transport
document/llm-summary.json annotate Summary when catalog/index.json already exists
prompts/ annotate (LLM) Prompt artifacts when LLM_WRITE_ARTIFACTS is true

suggestedRoutes in ui-flow.json are slug guesses marked inferred: true. Specimen/gallery crops are omitted from that list. Prototype edges live under interactions and are empty when the file has none. Screen role is a keyword match on the screen name (not the kit page title).

Tree nodes may include layout.padding beside layout.pad, constraints, layout.sizing, styleRefs, variableRefs, and vectorRef / vectorScale for shared icons. No breakpoint table is invented.

info() loads pages.json, screens.json, components.json, component-sets.json, text-content.json, tokens/variables.json, tokens/typography.json, tokens/effects.json, assets/manifest.json, and ui-flow.json. When present, it also reports a compact llm block from document/llm-summary.json or llm-annotations.json.