create-anatomy
Generate a visual anatomy annotation in Figma showing numbered markers on a component…
Generate motion specification annotations from After Effects timeline data. Use when the user mentions "motion", "motion spec", "animation spec", "timeline", or wants to document a component's animation properties.
$ npx -y skills add redongreen/uSpec --skill create-motion --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/create-motionContext preview
The summary Claude sees to decide when to auto-load this skill.
Generate motion specification annotations from After Effects timeline data. Use when the user mentions "motion", "motion spec", "animation spec", "timeline", or wants to document a component's animation properties.
name: create-motion description: Generate motion specification annotations from After Effects timeline data. Use when the user mentions "motion", "motion spec", "animation spec", "timeline", or wants to document a component's animation properties.
Generate a motion specification directly in Figma — timeline bars and detail tables documenting all animated properties from an After Effects composition.
> **Out of scope of the Component Markdown (`.md`) consumer contract.** The other `create-*` skills require the component `.md` (produced by {{skill:create-component-md}}) and render from its `render-meta`. `create-motion` is the deliberate exception: its input is an After Effects timeline export (`{{ref:motion/export-timeline.jsx}}`), not a Figma component walk — there is no `_base.json`, no `extract-motion`, and no Motion section in the `.md`. This skill does NOT require a `.md` and does NOT participate in the require-`.md`/fail-fast/whitelisted-reads refactor.
**Execution contract (read first).**
Read `uspecs.config.json` → `mcpProvider`. Follow the matching column for every MCP call in this skill.
| Operation | `figma-console` | `figma-mcp` | |-----------|-----------------|-------------| | Verify connection | `figma_get_status` | Skip — implicit. If first `use_figma` call fails, guide user to check MCP setup. | | Navigate to file | `figma_navigate` with URL | Extract `fileKey` from URL (`figma.com/design/:fileKey/...`). No navigate needed. | | Take screenshot | `figma_take_screenshot` | `get_screenshot` with `fileKey` + `nodeId` | | Execute Plugin JS | `figma_execute` with `code` | `use_figma` with `fileKey`, `code`, `description`. **JS code is identical** — no wrapper changes. | | Search components | `figma_search_components` | `search_design_system` with `query` + `fileKey` + `includeComponents: true` | | Get file/component data | `figma_get_file_data` / `figma_get_component` | `get_metadata` or `get_design_context` with `fileKey` + `nodeId` | | Get variables (file-wide) | `figma_get_variables` | `use_figma` script: `return await figma.variables.getLocalVariableCollectionsAsync();` | | Get token values | `figma_get_token_values` | `use_figma` script reading variable values per mode/collection | | Get styles | `figma_get_styles` | `search_design_system` with `includeStyles: true`, or `use_figma`: `return figma.getLocalPaintStyles();` | | Get selection | `figma_get_selection` | `use_figma` script: `return figma.currentPage.selection.map(n => ({id: n.id, name: n.name, type: n.type}));` |
**`figma-mcp` requires `fileKey` on every call.** Extract it once from the user's Figma URL at the start of the workflow. For branch URLs (`figma.com/design/:fileKey/branch/:branchKey/:fileName`), use `:branchKey` as the fileKey.
**`figma-mcp` page context:** `use_figma` resets `figma.currentPage` to the first page on every call. When a script accesses a node from a previous step via `getNodeByIdAsync(ID)`, the page content may not be loaded — `findAll`, `findOne`, and `characters` will fail with `TypeError` until the page is activated. Insert this page-loading block immediately after `getNodeByIdAsync`:
let _p = node; while (_p.parent && _p.parent.type !== 'DOCUMENT') _p = _p.parent; if (_p.type === 'PAGE') await figma.setCurrentPageAsync(_p);
This walks up to the PAGE ancestor and loads its content. Console MCP does not need this — `figma_execute` inherits the Desktop page context.
The user triggers this skill with one of these patterns:
**Required:** The exported JSON data — either pasted inline or referenced as a file.
**Optional:**
Copy this checklist and update as you progress:
Task Progress: - [ ] Step 1: Read instruction file - [ ] Step 2: Verify MCP connection - [ ] Step 3: Read template key from uspecs.config.json - [ ] Step 4: Gather context (JSON from paste, file reference, or prompt user) - [ ] Step 5: Parse and validate JSON (including segments[] and hasAnimatedSegments) - [ ] Step 6: Transform data (read pre-computed segments, compute track width, timeline positions) - [ ] Step 7: Re-read instruction file (Errors and Anti-Patterns, Validation Checklist) and audit - [ ] Step 8: Import and detach the Motion template - [ ] Step 9: Fill header fields - [ ] Step 10: Generate time ruler - [ ] Step 11: Render timeline layers (one figma_execute per layer) - [ ] Step 12: Hide templates - [ ] Step 13: Render table rows - [ ] Step 14: Visual validation
Read [agent-motion-instruction.md]({{ref:motion/agent-motion-in
Generate design system documentation for your UI components, directly from your AI agent. Describe a component to your agent.
Repo: redongreen/uSpec
Generate a visual anatomy annotation in Figma showing numbered markers on a component…
Generate API overview specifications documenting component properties, values, defaults, and…
Generate color annotation specifications mapping UI elements to design tokens. Use when the…
Generate a canonical JSON contract and a self-contained implementation Markdown specification…
Generate a visual property annotation in Figma showing each configurable property axis with…
Generate structure specifications documenting component dimensions, spacing, padding, and how…