用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
直接命令不会经过审查 Prompt;运行前请先检查来源。
npx skills add https://github.com/diegosouzapw/awesome-omni-skill --skill figma命令会保持在同一行。复制前请横向滚动并检查完整内容。
想先保存到本地?可下载 SkillsMP 当前能够提供的文件。
正在显示 SKILL.md
Token-efficient tracking for AI orchestration. CLI-first for status updates (~50 tokens), agent fallback for complex ops (~1KB). Use when: updating task status, querying blockers, creating progress files, validating phases.
AshAi extension guidelines for integrating AI capabilities with Ash Framework. Use when implementing vectorization/embeddings, exposing Ash actions as LLM tools, creating prompt-backed actions, or setting up MCP servers. Covers semantic search, LangChain integration, and structured outputs.
This skill should be used when solving hard questions, complex architectural problems, or debugging issues that benefit from GPT-5 Pro or GPT-5.1 thinking models with large file context. Use when standard Claude analysis needs deeper reasoning or extended context windows.
基于 SOC 职业分类
| name | Figma |
| description | Use MCP Figma for design system integration, asset export, and design-to-code workflows. |
| version | 1.0.0 |
| category | modules |
| author | Rulebook |
| tags | ["modules","mcp"] |
| dependencies | [] |
| conflicts | [] |
CRITICAL: Use MCP Figma for design system integration, asset export, and design-to-code workflows.
// Get file
figma.getFile({ file_key: 'file-key' })
// Get file nodes
figma.getFileNodes({
file_key: 'file-key',
ids: ['node-id-1', 'node-id-2']
})
// Get file versions
figma.getFileVersions({ file_key: 'file-key' })
// Export images
figma.getImage({
file_key: 'file-key',
ids: 'node-id',
format: 'png', // png, jpg, svg, pdf
scale: 2 // @2x resolution
})
// Export multiple
figma.getImage({
file_key: 'file-key',
ids: 'node-1,node-2,node-3',
format: 'svg',
svg_outline_text: true
})
// Get components
figma.getFileComponents({ file_key: 'file-key' })
// Get component sets
figma.getFileComponentSets({ file_key: 'file-key' })
// Get team components
figma.getTeamComponents({ team_id: 'team-id' })
// Get file styles
figma.getFileStyles({ file_key: 'file-key' })
// Get team styles
figma.getTeamStyles({ team_id: 'team-id' })
// Get comments
figma.getComments({ file_key: 'file-key' })
// Post comment
figma.postComment({
file_key: 'file-key',
message: 'Approved for development',
comment_id: 'parent-comment-id' // For replies
})
// Export design tokens from Figma styles
const { data: { styles } } = await figma.getFileStyles({ file_key: fileKey })
const tokens = {
colors: {},
typography: {},
spacing: {}
}
for (const style of Object.values(styles)) {
if (style.style_type === 'FILL') {
tokens.colors[style.name] = extractColor(style)
} else if (style.style_type === 'TEXT') {
tokens.typography[style.name] = extractTextStyle(style)
}
}
// Write to tokens.json
fs.writeFileSync('tokens.json', JSON.stringify(tokens, null, 2))
// Sync Figma components to code
const { data: components } = await figma.getFileComponents({ file_key: fileKey })
for (const component of Object.values(components)) {
// Export component as SVG
const { data: images } = await figma.getImage({
file_key: fileKey,
ids: component.node_id,
format: 'svg'
})
// Save to assets folder
const svg = await fetch(images[component.node_id]).then(r => r.text())
fs.writeFileSync(`assets/icons/${component.name}.svg`, svg)
}
// Generate screenshots for documentation
const screens = ['home-screen', 'login-screen', 'dashboard']
for (const screenId of screens) {
const { data: images } = await figma.getImage({
file_key: fileKey,
ids: screenId,
format: 'png',
scale: 2
})
const imageUrl = images[screenId]
const response = await fetch(imageUrl)
const buffer = await response.buffer()
fs.writeFileSync(`docs/screenshots/${screenId}.png`, buffer)
}
// Check for new comments
const { data: comments } = await figma.getComments({ file_key: fileKey })
const unresolved = comments.filter(c => !c.resolved_at)
if (unresolved.length > 0) {
console.log(`${unresolved.length} unresolved design comments`)
// Create Jira issues for unresolved comments
for (const comment of unresolved) {
await jira.issues.createIssue({
fields: {
project: { key: 'DESIGN' },
summary: `Design feedback: ${comment.message.substring(0, 50)}`,
description: comment.message,
issuetype: { name: 'Task' }
}
})
}
}
// Generate component documentation
const { data: components } = await figma.getFileComponents({ file_key: fileKey })
let markdown = '# Design System Components\n\n'
for (const [id, component] of Object.entries(components)) {
// Export thumbnail
const { data: images } = await figma.getImage({
file_key: fileKey,
ids: id,
format: 'png',
scale: 1
})
markdown += `## ${component.name}\n\n`
markdown += `\n\n`
markdown += `**Description:** ${component.description || 'No description'}\n\n`
}
fs.writeFileSync('docs/design-system.md', markdown)
✅ DO:
❌ DON'T:
{
"mcpServers": {
"figma": {
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-figma"],
"env": {
"FIGMA_ACCESS_TOKEN": "your-personal-access-token"
}
}
}
}
Setup:
# Export icons on every design update
figma-export --file-key=$FIGMA_FILE --format=svg --output=src/assets/icons
# Optimize SVGs
svgo --folder src/assets/icons
# Commit if changes detected
git diff --quiet src/assets/icons || git commit -m "chore: Update design assets"
// 1. Detect design changes
const currentVersion = await figma.getFile({ file_key: fileKey })
const lastVersion = loadLastProcessedVersion()
if (currentVersion.version !== lastVersion) {
// 2. Export updated components
await exportComponents(fileKey)
// 3. Generate code
await generateComponentCode()
// 4. Run tests
await runVisualRegressionTests()
// 5. Create PR if tests pass
if (testsPass) {
await createPullRequest('Update components from Figma')
}
}