Figma 素材准备
运行时边界:${CLAUDE_PLUGIN_ROOT}/protocols/runtime-boundaries.md(判断产物写入位置或项目事实与插件默认冲突时读)
共享契约:${CLAUDE_PLUGIN_ROOT}/protocols/figma-workflow-contract.md(校验 session、决定素材扁平化或写 manifest 前读)
执行方法:${CLAUDE_PLUGIN_ROOT}/guides/figma/assets.md(进入素材发现、下载或转换前读)
只负责素材发现、下载、合成导出、转换、落位与 manifest;不得实现或精修 UI。
输入和关联
解析主 Figma URL、已存在的目标文件、重复 --asset-url 和 --video-source nodeId=source。调用 ${CLAUDE_PLUGIN_ROOT}/scripts/figma-session.py resolve 校验并规范化 target-file,session 复用/归档/创建/多选决策按共享契约的 Session Resolve 表执行。
开始前读取目标项目 AGENTS.md/CLAUDE.md、目标文件邻近资产用法、DESIGN.md(若有)、docs/figma-rules.md(若有)和当前 session 候选。探测正式资产目录、命名和引用方式;存在多个同等合理目录时询问。
工作流
- 同一 MCP 窗口内保存主节点 metadata、design context、screenshot、variables 到 session
source/;这些文件后续不得覆盖。 - 从主节点收集素材。缺失时用无 nodeId metadata 列 pages,再按 metadata 筛选同文件候选;显式
--asset-url直接加入。匹配不唯一时展示 page/node/name/size 询问,不盲选。 - 图片上存在文字时检查最小共同视觉父节点。无交互、动态或本地化语义则选定该父节点并标记 flattened;否则询问。
- 确认图片、图标或合成父节点后,必须调用 Figma MCP
download_assets导出;不得把get_design_context返回的素材 URL 直接作为下载源。defaultScale默认传3,banner、hero 和主要内容图保持 3 倍;仅明确属于小型、非关键的图标或装饰素材时传2。将download_assets返回的临时 URL 立即下载到 raw。视频没有 MCP 源时按 node id 使用--video-source;缺失则停止并要求 URL 或项目内本地文件。 - 按
${CLAUDE_PLUGIN_ROOT}/protocols/subagent-dispatch.md注入并委派figma-assets,完成转换、落位、hash 和 manifest;由download_assets导出的条目将 manifestsource记录为download-assets。 - 无素材时也写
[]。全部成功后把 session stage 设为assets,更新 index。
门禁
- 图片转换和视频处理调用
${CLAUDE_PLUGIN_ROOT}/scripts/figma-assets.py;缺 ffmpeg/ffprobe 时停止并给安装提示。 - 同名同 hash 复用,同名异 hash 停止;不写半成功 manifest。
- 只记录经过本次证据支持的规则候选,不直接写
docs/figma-rules.md;规则晋升在 impl/fix 验收收敛后进行。 - 输出下载、合成、转换、复用、失败项和 manifest 路径,不声称完成 UI。