闲社服务运行正常AI智能体自动化平台
f

Figma插件编码

技能标识:figma-plugin-writer

Write Figma plugin code to automate UI design in Figma files. Activate when user wants to create UI mockups, design systems, app screens, or visual prototypes directly in Figma via plugin code. NOT for: Figma API REST calls, file management, or commenting.

作者:admin | 来源记录:ClawHub
登记来源
ClawHub
版本
V 1.0.0
检测标记
后台标记通过
免费
免费获取
0
收藏
来源与检测标记为平台登记信息,并不代表已展示可复核的检测报告。使用前请核对版本、依赖和所需权限,建议先在隔离环境中运行。
概述
安装方式
版本历史

Figma插件编码

Figma 插件编写器

编写插件代码(code.js)以在 Figma 文件中实现设计自动化。更新代码后,通知用户运行插件。

前置条件

用户必须提供:

  1. 1. 插件目录 — 包含 code.js 和 manifest.json 的文件夹
  2. 代码文件 — 通常是 code.js
  3. 目标 Figma 文件 — 可选,用于提供上下文

工作流程

  1. 1. 接收用户的设计需求
  2. 将插件代码写入 code.js
  3. 通知用户:插件 → 开发 → <插件名称>
  4. 根据反馈进行迭代

API 参考

字体加载(创建文本前必需)

js
await figma.loadFontAsync({ family: Inter, style: Regular });
await figma.loadFontAsync({ family: Inter, style: Medium });
await figma.loadFontAsync({ family: Inter, style: Semi Bold });
await figma.loadFontAsync({ family: Inter, style: Bold });

画框(容器)

js
var frame = figma.createFrame();
frame.name = MyFrame;
frame.resize(width, height);
frame.cornerRadius = 12;
frame.fills = [{ type: SOLID, color: { r: 1, g: 1, b: 1 } }];
frame.x = 0;
frame.y = 0;

文本

js
var text = figma.createText();
text.characters = Hello World;
text.fontSize = 16;
text.fontName = { family: Inter, style: Regular };
text.fills = [{ type: SOLID, color: { r: 0, g: 0, b: 0 } }];

矩形

js
var rect = figma.createRectangle();
rect.resize(100, 50);
rect.fills = [{ type: SOLID, color: { r: 0.9, g: 0.2, b: 0.2 } }];
rect.cornerRadius = 8;

嵌套节点

js
frame.appendChild(text);
parentPage.appendChild(frame);

投影

js
frame.effects = [{
type: DROP_SHADOW,
color: { r: 0, g: 0, b: 0, a: 0.1 },
offset: { x: 0, y: 4 },
radius: 12,
spread: 0,
visible: true,
blendMode: NORMAL,
}];

描边

js
frame.strokes = [{ type: SOLID, color: { r: 0.8, g: 0.8, b: 0.8 } }];
frame.strokeWeight = 1;

文本对齐

js
text.textAlignHorizontal = CENTER; // LEFT | CENTER | RIGHT | JUSTIFIED
text.textAlignVertical = CENTER; // TOP | CENTER | BOTTOM

自动布局(画框内)

js
frame.layoutMode = VERTICAL; // 或 HORIZONTAL
frame.primaryAxisAlignItems = CENTER; // MIN | CENTER | MAX | SPACE_BETWEEN
frame.counterAxisAlignItems = CENTER;
frame.paddingTop = 16;
frame.paddingBottom = 16;
frame.paddingLeft = 16;
frame.paddingRight = 16;
frame.itemSpacing = 8;

页面导航

js
var pages = figma.root.children;
var targetPage = pages[pages.length - 1];
await figma.setCurrentPageAsync(targetPage);

清除页面内容

js
var old = targetPage.children.slice();
for (var i = 0; i < old.length; i++) {
old[i].remove();
}

视口

js
figma.viewport.scrollAndZoomIntoView([frame]);

通知

js
figma.notify(完成!, { timeout: 3000 });
figma.notify(错误: + e.message, { timeout: 10000 });

页面信息

js
var pages = figma.root.children;
var count = pages.length;
var pageName = pages[0].name;

代码模板

js
async function main() {
try {
// 1. 加载字体
await figma.loadFontAsync({ family: Inter, style: Regular });
await figma.loadFontAsync({ family: Inter, style: Bold });

// 2. 获取目标页面
var pages = figma.root.children;
var target = pages[pages.length - 1];
await figma.setCurrentPageAsync(target);

// 3. 清除旧内容
var old = target.children.slice();
for (var i = 0; i < old.length; i++) old[i].remove();

// 4. 创建设计...
var frame = figma.createFrame();
frame.name = 屏幕;
frame.resize(375, 812);
frame.fills = [{ type: SOLID, color: { r: 1, g: 1, b: 1 } }];
frame.x = 0;
frame.y = 0;
target.appendChild(frame);

// 5. 完成
figma.viewport.scrollAndZoomIntoView([frame]);
figma.notify(设计完成!, { timeout: 3000 });

} catch (e) {
figma.notify(错误: + e.message, { timeout: 10000 });
}
}

main();

陷阱与注意事项

documentAccess: dynamic-page 模式

如果 manifest.json 中包含 documentAccess: dynamic-page:

  • - ❌ figma.currentPage = page → ✅ await figma.setCurrentPageAsync(page)
  • ❌ figma.getNodeById() → ✅ await figma.getNodeByIdAsync()
  • ❌ figma.closePlugin() → ✅ await figma.closePluginAsync()

错误处理

  • - 始终将代码包裹在 try-catch 中
  • 通过 figma.notify(错误: + e.message, { timeout: 10000 }) 显示错误
  • 不要在文本内容中使用表情符号(字体可能不支持该字形)
  • 不要自动调用 figma.closePlugin()(让用户手动关闭)

免费版限制

  • - 最多 3 个页面 — 不要创建新页面
  • 在现有页面内工作(清除并重建)

字体

  • - 默认字体:Inter(Figma 内置)
  • 支持的样式:Regular、Medium、Semi Bold、Bold
  • 颜色使用 { r, g, b } 格式,取值范围 0-1

迭代模式

每次设计迭代:

  1. 1. 清除旧元素:page.children.slice().forEach(c => c.remove())
  2. 重新创建带有更改的设计
  3. 通知用户重新运行插件

标签

skill ai

通过对话安装

以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:

OpenClaw WorkBuddy QClaw Kimi Claude

方式一:安装 SkillHub 和技能

帮我安装 SkillHub 和 figma-plugin-writer-1776123024 技能

方式二:设置 SkillHub 为优先技能安装源

设置 SkillHub 为我的优先技能安装源,然后帮我安装 figma-plugin-writer-1776123024 技能

通过命令行安装

skillhub install figma-plugin-writer-1776123024

下载

⬇ 下载 figma-plugin-writer v1.0.0(免费)

文件大小: 8.68 KB | 发布时间: 2026-4-14 11:04

v1.0.0 最新 2026-4-14 11:04
- Major documentation overhaul for clarity and conciseness (SKILL.md rewritten in English).
- Better structure: clearer prerequisites, workflow, and explicit API/code example sections.
- Rules, best practices, and iteration patterns are now listed in a concise, step-by-step manner.
- Removed README.md; all setup and instructional info is consolidated in SKILL.md.
- No code/logic changes; examples remain, but doc organization and guidance are now much more user-friendly.
返回顶部