← 返回
未分类 Key 中文

Craw Figma

Full bidirectional Figma integration — read files via REST API, create/modify/delete layers via local WebSocket connector + Figma plugin. Audit accessibility...
完整的双向Figma集成——通过REST API读取文件,通过本地WebSocket连接器和Figma插件创建/修改/删除图层。审计可访问性……
missionarteemis-cloud missionarteemis-cloud 来源
未分类 clawhub v1.0.0 1 版本 100000 Key: 需要
★ 0
Stars
📥 73
下载
💾 0
安装
1
版本
#latest

概述

Craw Figma Skill

Complete Figma control for AI agents: read via REST API, write via a local plugin. Change design layers, extract design tokens, audit accessibility, export assets.

Architecture

Craw ──→ figma_client.mjs (REST API) ──────→ Figma cloud    (read: file, styles, export)
     ──→ figma_send.js    (WebSocket) ──→ figma_connector.js ──→ Figma Plugin → Figma Desktop
     ──→ style_auditor.mjs              (design system analysis, CSS tokens)
     ──→ accessibility_checker.mjs      (WCAG AA/AAA, contrast, touch targets)

Requirements

  • Figma Personal Access Token → for REST API (read). Get it: Figma → Settings → Account → Personal Access Tokens
  • Figma Desktop → required for write operations
  • Node.js 18+

Quick Start

1. Set up your token

export FIGMA_ACCESS_TOKEN="figd_your_token_here"

2. Read a Figma file

node scripts/figma_client.mjs get-file <file-key>
# Example: node scripts/figma_client.mjs get-file "ABC123xyz" --depth 4

Get a file key from: https://www.figma.com/design//...

3. Install the Figma Plugin (one-time, for write access)

  1. Clone/download the skill repository
  2. Open Figma DesktopPluginsDevelopmentImport plugin from manifest...
  3. Select plugin/manifest.json from this skill's directory
  4. The plugin "Craw Figma Connector" is now installed

4. Start the connector + run the plugin

# Terminal 1: Start the local WebSocket server
node scripts/figma_connector.js
# → Listening on ws://localhost:9199

In Figma Desktop:

  • Right-click canvas → PluginsCraw Figma Connector
  • The panel shows Connected to Craw when the WebSocket connects

5. Send write commands

# Create a rectangle
node scripts/figma_send.js createRectangle \
  --payload '{"x":100,"y":100,"width":400,"height":300,"fillColor":{"r":0.14,"g":0.49,"b":1},"cornerRadius":12,"name":"Hero Card"}'

# Get current selection
node scripts/figma_send.js getSelection

Available Commands

Write (Plugin — real-time in Figma Desktop)

CommandPayload (JSON)Description
-------------------------------------
createRectangle{x, y, width, height, fillColor?, cornerRadius?, name?}New rectangle
createFrame{x, y, width, height, fillColor?, name?}New frame/artboard
createEllipse{x, y, width, height, fillColor?, name?}New ellipse
createText{x, y, characters, fontSize?, fontName?, fillColor?, name?}New text layer
selectNode{id}Select + zoom into node
updateNode{id, x?, y?, resize?{width,height}, fillColor?, name?}Modify existing node
deleteNode{id}Remove node
setFillColor{id, color{r,g,b}, opacity?}Set fill color
groupSelection{}Group selected nodes
getSelection{}List selected nodes
getPageInfo{}Current page info
createPolygon{x, y, width, height, pointCount, fillColor?, name?}Regular polygon (N sides)
createStar{x, y, width, height, pointCount, innerRadius?, fillColor?, name?}Star shape
createVectorNetwork{x, y, width, height, vectorNetwork: {vertices, segments}, fills?, strokes?}Custom vector path
booleanOperation`{operation: UNIONSUBTRACTINTERSECTEXCLUDE, nodeIds, name?, fillColor?}`Union/subtract/intersect shapes
updateNode (auto-layout){id, layoutMode?, paddingLeft?, ..., itemSpacing?, primaryAxisAlignItems?, ...}Apply Auto Layout to frame

Shape Generator (advanced)

ScriptDescription
---------------------
node scripts/shape_generator.js test-basicDemo: rectangle, ellipse, polygon, star, heart in grid
node scripts/shape_generator.js test-unionDemo: union of two overlapping circles
node scripts/shape_generator.js generate '{"type":"heart","width":200}'Single shape by type

Auto Layout Module

ScriptDescription
---------------------
node scripts/auto_layout.js card '{"width":320}'Create card with auto-layout
node scripts/auto_layout.js button '{"name":"CTA"}'Create button with padding
node scripts/auto_layout.js row '{"padding":8}'Horizontal row
node scripts/auto_layout.js column '{"padding":16}'Vertical column

Style Dictionary Pipeline

ScriptDescription
---------------------
cd scripts/style-dictionary && npx style-dictionary buildGenerate CSS variables + Figma tokens
Output: scripts/style-dictionary/build/variables.cssDR's Lab CSS custom properties (--color-, --spacing-, etc.)
Output: scripts/style-dictionary/build/figma-tokens.jsonFigma-compatible nested tokens

Read (REST API)

ActionArgsDescription
---------------------------
get-file [--depth N]Full file document tree
get-file-nodes ...Specific nodes by ID
get-stylesPublished styles (color, text, effects)
get-componentsPublished components
get-versionsVersion history
render-images` [--format png\svg\pdf] [--scale N]`Export as images
get-image-fillsImage fill URLs used in file
get-metadataLightweight file info
meCurrent user info

Analysis

ActionArgsDescription
---------------------------
style_auditor.mjs [--brand-colors "#HEX,#HEX"] [--generate-css]Analyze colors, fonts, consistency, CSS tokens
accessibility_checker.mjs` [--level AA\AAA] [--format json\report]`WCAG contrast, touch targets, font sizes

Color Format

Figma uses RGB in 0–1 range:

{"r": 0.14, "g": 0.49, "b": 1}     // #247DFF (blue)
{"r": 1, "g": 0.42, "b": 0.21}      // #FF6B35 (orange)
{"r": 1, "g": 1, "b": 1}            // #FFFFFF (white)

Auto-setup for AI Agents

When a user installs this skill, the AI agent should:

  1. Check if FIGMA_ACCESS_TOKEN is set — if not, instruct the user to generate one and export it
  2. For write operations, check if the Figma plugin is installed — if not:
    • Guide the user through importing plugin/manifest.json in Figma Desktop
    • Suggest running node scripts/figma_connector.js separately
    • Offer to run figma_connector.js if the agent has shell access
  3. Test connectivity with figma_client.mjs me before proceeding

Tips

  • Keep figma_connector.js running while working with write commands
  • The plugin auto-reconnects if the connector restarts (3s retry)
  • Commands sent while the plugin is offline are queued and sent on reconnect
  • Health check: http://localhost:9200 shows status and pending queue
  • Use --generate-css to extract Figma styles as CSS custom properties
  • Command timeout defaults to 30s. Override: FIGMA_CMD_TIMEOUT=60000 node figma_connector.js
  • Boolean operations (union/subtract) may take longer — timeout is automatically handled and logged

Files

skills/craw-figma/
├── SKILL.md
├── scripts/
│   ├── figma_client.mjs          — Figma REST API client (read)
│   ├── figma_connector.js        — Local HTTP server (run this) — timeout 30s configurable
│   ├── figma_send.js             — Send commands to Figma plugin
│   ├── shape_generator.js        — General-purpose shape creation (polygons, stars, hearts, union)
│   ├── auto_layout.js            — Auto Layout module (cards, rows, buttons, spacing)
│   ├── heart_generator.js        — Legacy heart shape generator
│   ├── star_generator.js         — Legacy star generator
│   ├── design_engine.js          — Design orchestration engine
│   ├── design_orchestrator.js    — Orchestrator with NotebookLM consultation
│   ├── design_critic.js          — Design critique pipeline
│   ├── craw_design_cmd.sh        — Shell wrapper for design commands
│   ├── svg_to_figma.js           — SVG path → Figma Vector Network converter
│   ├── style_auditor.mjs         — Design system analysis
│   ├── accessibility_checker.mjs — WCAG compliance
│   └── style-dictionary/
│       ├── config.json           — Style Dictionary configuration
│       ├── tokens/               — DTCG tokens → SD format
│       ├── build/variables.css   — Generated CSS custom properties
│       └── build/figma-tokens.json — Figma-compatible tokens
├── plugin/
│   ├── manifest.json             — Figma plugin manifest
│   ├── code.js                   — Plugin code (ES5, production)
│   ├── code.ts                   — Plugin code (TypeScript source)
│   └── ui.html                   — Plugin panel UI
├── design-tokens/
│   ├── design-tokens.json        — Core tokens (DTCG format)
│   ├── projects/drs-lab.json     — DR's Lab project tokens
│   └── load-tokens.js            — Token loader utility
└── references/
    ├── figma-api-reference.md    — REST API docs
    └── design-patterns.md        — UI patterns & best practices

版本历史

共 1 个版本

  • v1.0.0 当前
    2026-06-09 19:12 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

dev-programming

YouTube

byungkyu
使用托管OAuth集成YouTube Data API,支持搜索视频、管理播放列表、获取频道数据及评论互动,适用于用户需要时使用此技能。
★ 142 📥 41,684
dev-programming

Mcporter

steipete
使用 mcporter CLI 直接列出、配置、认证及调用 MCP 服务器/工具(支持 HTTP 或 stdio),涵盖临时服务器、配置编辑及 CLI/类型生成功能。
★ 195 📥 67,741
dev-programming

Github

steipete
使用 `gh` CLI 与 GitHub 交互,通过 `gh issue`、`gh pr`、`gh run` 和 `gh api` 管理议题、PR、CI 运行及高级查询。
★ 679 📥 328,048