技能标识: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.
编写插件代码(code.js)以在 Figma 文件中实现设计自动化。更新代码后,通知用户运行插件。
用户必须提供:
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();
如果 manifest.json 中包含 documentAccess: dynamic-page:
每次设计迭代:
以下为平台配置的接入选项,并非逐项实测通过。能否安装取决于客户端支持、技能来源和运行环境:
帮我安装 SkillHub 和 figma-plugin-writer-1776123024 技能
设置 SkillHub 为我的优先技能安装源,然后帮我安装 figma-plugin-writer-1776123024 技能
skillhub install figma-plugin-writer-1776123024
文件大小: 8.68 KB | 发布时间: 2026-4-14 11:04