1. Penpot MCP调研

资料来源:https://help.penpot.app/mcp/

1.1 Penpot MCP 能做什么

Penpot MCP server 把支持 MCP 的 AI 客户端连接到你的 Penpot 文件。连接后,AI Agent 可以用自然语言与设计稿交互,同时辅助设计开发两类任务。因为 Agent 可以读取和修改 Penpot 文件结构(组件、样式、tokens、页面、图层等),所以既能自动化创意工作,也能做"维护性"工作,实现设计与代码之间的双向工作流。

① 设计类任务(Design tasks)怎么做:

  • 创建间距/排版/颜色 tokens,并统一应用到整个文件
  • 生成组件变体(component set 变大时也能保持整洁)
  • 按命名规范批量重命名图层(或审计命名一致性)
  • 整理组件与文件结构(页面、分组、库)
  • 审计设计系统的一致性与冗余(样式、组件、使用情况)
  • 跨文件应用大范围视觉修改(如整体换色板)
  • 基于现有设计系统创建新页面(design-to-design)

典型提示词写法:先用只读提示词确认连接正常(“列出文件里的所有页面”、“分析并总结这个设计的结构”、“列出所有颜色样式并说明用途”),再逐步过渡到轻量写操作(“基于这个页面创建一套主色 color token”、“按统一命名规范重命名图层,应用前先说明你要改什么”)。

② 开发类任务(Developer tasks)怎么做:

  • 从页面中提取布局结构和关键 UI 元数据
  • 从设计稿生成 HTML/CSS(语义化、模块化,design-to-code)
  • 检查 tokens 和样式,翻译成代码变量
  • 导出资源(如只导出文件中用到的图标)
  • 把组件映射到代码:对齐命名/标识符并记录规则
  • 根据设计变更更新前端样式(必要时反向同步)
  • 原型化交互,验证 design-to-code 的翻译质量

1.2 Penpot MCP 怎么工作

架构与数据流:三部分组成

  1. MCP server:向 AI 客户端暴露工具的服务。接收客户端请求并转发给 Penpot。
  2. Penpot 内的 MCP plugin(插件):运行在 Penpot 内部,把你当前打开的文件连接到 MCP server,是 server 能访问"当前聚焦页面"的关键。
  3. MCP client:你输入提示词的工具(Cursor、Claude Code、Copilot 类等),通过 server URL + MCP key(本地模式下则用当前激活的 Penpot 浏览器会话)连接 MCP server。

基础概念

  • Integrations 页面:MCP 在 Your account → Integrations → MCP Server 下配置,可启用/禁用、获取 server URL、管理 MCP key。
  • MCP key:个人、不可恢复的令牌,用于 AI 客户端向 MCP server 认证。每个用户同一时间只能有一个 key(远程模式使用)。
  • 当前聚焦页面:MCP 永远作用于你在 Penpot 中聚焦的页面;切换聚焦页面(即使在另一个浏览器窗口),MCP 上下文跟着走。
  • Active MCP tab:MCP 同时只能在一个浏览器标签页中激活,多开 Penpot 时须明确指定哪个标签拥有 MCP。

工具与能力:本地 MCP 当前暴露 5 个工具——execute_codehigh_level_overviewpenpot_api_infoexport_shapeimport_image。远程 MCP 不暴露本地文件系统访问:import_image 本地路径不可用;export_shape 可用但受限(如不能直接导出到本地文件路径)。

安全提醒:MCP 连接后,AI 客户端可以执行会修改当前聚焦页面的写操作(创建、重命名、移动、删除、改样式等)。建议:先跑只读操作验证配置;让 Agent 先描述打算做的修改再应用;用小步可逆的操作代替"全量重构"式的大请求。

1.3 Claude Code 如何通过 MCP client 连接 Penpot MCP server

官方给 Claude Code 的连接方式:

  1. 打开 Claude Code 的 MCP 配置
  2. 添加 Penpot server,使用 http transport + 对应模式的 URL
  3. 重启 Claude Code 或重新加载工具
{
  "mcpServers": {
    "penpot": {
      "transport": "http",
      "url": "REMOTE_OR_LOCAL_URL"
    }
  }
}
  • 远程模式 URL:https://<your-penpot-domain>/mcp/stream?userToken=YOUR_MCP_KEY(官方 SaaS 域名是 design.penpot.app
  • 本地模式 URL:http://localhost:4401/mcp(无需 key,用浏览器激活会话认证)

其他客户端对照:Cursor 用 mcpServers + "type": "http";VS Code/Copilot 用 mcp.servers + "transport": "http";Codex/OpenCode 用 servers + transport.type: http

最终检查:在 Penpot 中打开文件,用 File → MCP Server → Connect 连接插件,先跑一个只读提示词验证工具已列出。

1.4 远程 MCP server 怎么用

远程 MCP 是最简单的起步方式:官方托管,本机不需要安装/运行任何东西,适合大多数用户;代价是没有本地文件系统权限,只能操作 Penpot 暴露的内容(设计文件、库、tokens 等)。

5 步快速开始:

  1. Enable MCPYour account → Integrations → MCP Server,启用功能(状态按用户记忆,跨会话保留)
  2. Generate your MCP key:生成 key,只显示一次,务必妥善保存
  3. Copy the server URL:同一页面复制已内嵌 userToken=你的MCP key 的 server URL
  4. Add the server to your MCP client:在 Cursor/Claude Code 等客户端添加指向该 URL 的 server
  5. Open a Penpot file and connect:在 Penpot 打开设计文件,File → MCP Server → Connect 连接插件

完成后,AI 客户端应能列出 Penpot 工具。日常使用:启用 MCP → 连接插件 → 客户端里先只读提示词(list/inspect/analyze)、再写操作。MCP 始终作用于活动 Penpot 标签页中当前聚焦的页面。

管理要点

  • 启用/禁用:Status 开关,禁用时 Agent 即无法修改文件(即使客户端仍配置着)
  • 重新生成 key:旧 key 立即失效,用旧 key 的客户端会停止工作,需要更新配置
  • key 过期:连接失败,需重新生成 key 清除错误状态
  • 安全:key 当密码用,不要出现在截图/日志/代码示例中;疑似泄露立即重新生成

模型建议:用强模型 + 高质量推理配置;理解图片必须用视觉语言模型(VLM,大多数商用 LLM 都是);官方推荐始终使用 frontier 模型,任务越复杂模型对结果质量影响越大。

1.5 本地 MCP server 怎么用

本地 MCP 面向需要更多控制权或需要访问本地资源的高级用户,运行在你自己的机器上,可通过 npm 包直接启动(无需克隆整个 Penpot 仓库),可提供受控的本地文件系统访问(读/写资源文件等,取决于配置)。

安装与激活(npm 路径):

  1. 确认已安装 Node.js(官方测试 v22,v20 应该也可用)
  2. 终端启动 MCP server 和 plugin server:
npx @penpot/mcp@stable

使用期间保持该终端运行。
3. 打开 https://design.penpot.app 及任意设计文件
4. Plugins → Load from URL,加载:http://localhost:4400/manifest.json
5. 运行插件并点击 Connect to MCP server,确认插件显示 Connected,工作期间保持插件窗口打开

注意:部分 Chromium 系浏览器可能拦截 https://design.penpot.apphttp://localhost 的连接;遇到时显式允许本地网络访问,或改用 Firefox。

连接与使用:客户端使用 http://localhost:4401/mcp(HTTP transport,无 MCP key,认证用当前激活的 Penpot 浏览器会话)。日常管理:Ctrl+C 停止 server(不干净就从系统进程管理器结束 Node.js 进程);插件断开后重新从 manifest.json 加载并再次 Connect。

远程 vs 本地 对比:

维度 远程 MCP 本地 MCP
运行位置 官方托管 本机
门槛 低,适合大多数人 需会用终端
文件系统访问 可受控访问本地文件
URL https://<domain>/mcp/stream?userToken=KEY http://localhost:4401/mcp
认证 MCP key(userToken) 激活的 Penpot 浏览器会话
import_image 本地路径 不可用 可用
export_shape 到本地路径 不可用 可用

1.6 故障排查(Troubleshooting)

连接失败时按顺序检查:

  1. 重启 MCP server 进程
  2. 在 Penpot 中重启插件连接
  3. 重启 MCP 客户端(或触发其 MCP server 重连)
  4. 使用 MCP 期间保持 Penpot 中插件窗口打开

其他求助渠道:GitHub issue、Penpot Community 论坛、官方邮件。官方还推荐参考:Good prompting practices(设计)、token-aware 提示词技巧、设计文件结构与最佳实践、Penpot MCP 视频播放列表。

2. Claude Code + Penpot MCP 实操说明

以下是在本地 Claude Code 环境里配置和使用 Penpot MCP 工具与技能的实操记录。

2.1 mcp client配置

在claude code环境里配置mcp client, 在系统目录下创建: .mcp.json。
错误的mcp client配置:

{
  "mcpServers": {
    "penpot": {
      "url": "http://localhost:9001/mcp/stream?userToken=eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0.U_taj6nw-FOw_8144b-SyH1DKyPv7vU7EzH8E6DX2fPXnhaVOe0LGQ.RxJn-7w4m95309h6.YeNOB32bwaWygFFeHMUY7AGXUvYQpZRGhG8etZgbUMUn9_AGxrVeaEw3MC879VtlvoR0aHtMnNil6Rqba4pNiCTuRJ2GesP0ZSLseaFUgb8RU1QhVtOqyMNi7LwK22mhejCINtPWo7XUBb-lf5jcrfWNkWuvvcM54Sgjy1JPacDAcqGyV1D-XKMuOZea8xG9V1oK6U4tv29c.ZP7gqyvIh1sUwLPHkeQrlQ"
    }
  }
}

正确的mcp client配置:

{
  "mcpServers": {
    "penpot": {
      "command": "npx",
      "args": [
        "-y",
        "mcp-remote",
        "http://localhost:9001/mcp/stream?userToken=eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0.U_taj6nw-FOw_8144b-SyH1DKyPv7vU7EzH8E6DX2fPXnhaVOe0LGQ.RxJn-7w4m95309h6.YeNOB32bwaWygFFeHMUY7AGXUvYQpZRGhG8etZgbUMUn9_AGxrVeaEw3MC879VtlvoR0aHtMnNil6Rqba4pNiCTuRJ2GesP0ZSLseaFUgb8RU1QhVtOqyMNi7LwK22mhejCINtPWo7XUBb-lf5jcrfWNkWuvvcM54Sgjy1JPacDAcqGyV1D-XKMuOZea8xG9V1oK6U4tv29c.ZP7gqyvIh1sUwLPHkeQrlQ",
        "--allow-http"
      ]
    }
  }
}

验证是否连接正常:

(base) PS D:\ai\llmmaster> claude mcp list
plugin:everything-claude-code:github: npx -y @modelcontextprotocol/server-github@2025.4.8 - ✓ Connected
plugin:everything-claude-code:context7: npx -y @upstash/context7-mcp@2.1.4 - ✓ Connected
plugin:everything-claude-code:exa: https://mcp.exa.ai/mcp (HTTP) - ✓ Connected
plugin:everything-claude-code:memory: npx -y @modelcontextprotocol/server-memory@2026.1.26 - ✓ Connected
plugin:everything-claude-code:playwright: npx -y @playwright/mcp@0.0.69 --extension - ✓ Connected
plugin:everything-claude-code:sequential-thinking: npx -y @modelcontextprotocol/server-sequential-thinking@2025.12.18 - ✓
Connected
gitnexus: D:\app\nvm4w\nodejs\gitnexus.cmd mcp - ✗ Failed to connect
penpot: npx -y mcp-remote http://localhost:9001/mcp/stream?userToken=eyJhbGciOiJBMjU2S1ciLCJlbmMiOiJBMjU2R0NNIn0.U_taj6nw-FOw_8
144b-SyH1DKyPv7vU7EzH8E6DX2fPXnhaVOe0LGQ.RxJn-7w4m95309h6.YeNOB32bwaWygFFeHMUY7AGXUvYQpZRGhG8etZgbUMUn9_AGxrVeaEw3MC879VtlvoR0a
HtMnNil6Rqba4pNiCTuRJ2GesP0ZSLseaFUgb8RU1QhVtOqyMNi7LwK22mhejCINtPWo7XUBb-lf5jcrfWNkWuvvcM54Sgjy1JPacDAcqGyV1D-XKMuOZea8xG9V1oK
6U4tv29c.ZP7gqyvIh1sUwLPHkeQrlQ --allow-http - ✓ Connected

2.2 Penpot MCP 工具

claude penpot mcp工具主要是用于设计稿交互操作.

  ┌─────────────────────┬─────────────────────────────────┐
  │        工具                              │              用途                                                │
  ├─────────────────────┼─────────────────────────────────┤
  │ high_level_overview                      │ Penpot 工具使用总览(必须先读)                                  │
  ├─────────────────────┼─────────────────────────────────┤
  │ penpot_api_info                          │ 查询 Penpot API 类型/成员文档                                    │
  ├─────────────────────┼─────────────────────────────────┤
  │ execute_code                             │ 在 Penpot 插件上下文执行 JS                                      │
  ├─────────────────────┼─────────────────────────────────┤
  │ export_shape                             │ 将 shape 导出为 PNG/SVG                                          │
  └─────────────────────┴─────────────────────────────────┘

Penpot MCP 工具集是底层执行模式——没有封装好的 create_page 等高级工具,而是通过 execute_code 直接在 Penpot 插件上下文中跑 JavaScript。这意味着自由度更高,但 Prompt 策略需要调整。

2.3 Penpot 技能安装

直接使用penpot mcp 工具太原始,操作太复杂繁琐,需要使用skill进行包装和简化,故安装一个skill。
ar27111994/penpot-mcp是目前最成熟的 Penpot MCP Skill,S 级社区项目,直接基于官方 Penpot Plugin API 文档构建,专门为 Claude Code 优化

安装命令:

npx skills add ar27111994/penpot-mcp

2.4 Openpot系统创建项目

Penpot MCP 的工作原理是:通过浏览器插件与当前已打开的 Penpot 文件通信。没有文件 = 没有操作目标。
因此先创建一个新项目,然后打开一个新文件,命名是什么不重要,我就简单命名为v1.0。

验证是否就绪

在 Claude Code 中,让 Claude 执行:

请通过 execute_code 获取当前 Penpot 文件的名称和 ID,确认连接正常。

如果返回了文件名和 ID,说明一切就绪,可以开始设计。
一句话:先手动在 Penpot Web 里创建 Project → File → 保持打开,然后 Claude Code 才能通过 MCP 往里面画原型。

2.5 设计原型

在claude code cli输入:

请读取项目 openspec/specs/ 下的所有 spec.md 文件,解析其中的 Requirements 和 GIVEN/WHEN/THEN Scenarios,推断出所有需要的前端页面和交互流程。然后在当前 Penpot 文件中:

1. 创建一套完整的设计系统(颜色、字体、组件)
2. 按推断出的页面清单,逐个创建高保真原型页面
3. 根据 Scenarios 中的用户操作流程,添加页面跳转交互

要求:所有文本中文,桌面端 1440×900,每个 Scenario 的初始状态、用户操作、系统反馈都要在原型中体现。

由于是对以往界面功能做一个重新原型设计,时间很漫长,中途可以看到Penpot系统界面上不断进行自动设计,添加新生成的界面,最后出来结果,Claude Code cli输出:

全部 14 项任务完成。最终汇报: 完成情况 Penpot 文件:LLM Master 智能视觉分析平台原型(10 个页面、27 个 1440×900 画板) 1. 设计系统(01 设计系统页) - 颜色 token:主色 #2563EB、成功/错误/警告/信息色、深色侧边栏 #0F172A 等 20+ 色板 - 字体:Noto Sans SC(中文,全字重)+ JetBrains Mono(代码/数字) - 组件库:按钮(5 种变体)、输入框、标签、开关、表格、提示条、上传区、空状态、卡片、KV 字段 2. 高保真页面(每页 3 态,覆盖 spec 全部 Scenario) ┌───────────────┬───────────────────────────────────────────────────────────────────────────────────────┐ │ 页面 │ 状态覆盖 │ ├───────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ 首页 │ 8 功能卡片导航 │ ├───────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ 语音识别 │ 初始 / 录音中+50MB 超限 / 识别结果+<0.5s 提示 │ ├───────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ 人脸登录验证 │ 摄像头 640×480 / 验证通过(0.91≥0.75)/ 验证失败(0.42<0.75)+异常场景 │ ├───────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ 人脸检测分析 │ 5 参数(buffalo_l/640/0.4/50/embedding)/ 分析中 / 3 人脸结果+标注图+512 维向量 │ ├───────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ YOLO 目标检测 │ 参数 0.25/640/300 / 3 目标卡片(中英文类别+裁剪子图)/ 超时错误"检测超时,请稍后重试" │ ├───────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ 图片分析 │ 4 预设类别+max_tokens 4096/temperature 0.3 / 报告+原始 JSON / 多轮对话 3 轮 │ ├───────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ 视频异常分析 │ 500MB 上传+摄像头 / 采集 8/16 帧 / 风险评分 72+事件列表+"未检测到异常"态 │ ├───────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ OCR 文字识别 │ ≤10MB 上传 / 6 行结果表格(置信度+坐标)+完整文本 / "未识别到文字" │ ├───────────────┼───────────────────────────────────────────────────────────────────────────────────────┤ │ 员工管理 │ 列表(20 条/页 ID 降序+分页)/ 表单+身份证重复 400 红框 / 空状态+删除确认弹窗 │ └───────────────┴───────────────────────────────────────────────────────────────────────────────────────┘ 3. 交互跳转:共 141 个 click 交互 - 首页 8 卡片 → 各功能页初始态 - 每页侧边栏 9 导航热区 + 返回按钮 → 首页 - 页内状态流:开始录音→录音中→结果、开始验证→通过/失败、开始分析→分析中→结果、重试检测、新增员工→表单→保存回列表、重新上传等 需要注意 1. 无法截图验证:Penpot 渲染导出服务(localhost:9001)未运行,所有 shape 均通过 API 数据验证(数量/位置/命名),但视觉细节请在 Penpot UI 中查看。 2. 交互已写入:API 调用全部成功、审计计数正确,但插件读回 destination 引用显示为空(已知的 API 读模型限制)。建议打开 Penpot 原型模式(Prototype)点击验证,如有跳转失效告诉我具体位置,我可以立即修复。

2.6 把 Penpot 原型拉到本地 Git 仓库

2.6.1 Claude Code + MCP 自动化导出(批量操作)
请通过 Penpot MCP 完成以下批量导出任务:

1. 导出当前文件的所有 Design Tokens 为 JSON,保存到本地 penpot-assets/tokens/design-tokens.json
2. 导出所有页面的画板为 PNG(1x 和 2x),保存到 penpot-assets/exports/pages/
3. 导出所有组件为 SVG,保存到 penpot-assets/exports/components/
4. 读取当前文件结构,生成一份《设计资产清单》Markdown 文档

请分批执行,每批不超过 10 个操作。

失败了,提示MCP tool不支持导出功能, 只把design-tokens.json导出来了,还有设计资产清单文档, 相当于把第1,4点执行成功。
但是提示:让我用「插件内序列化 SVG + @resvg/resvg-js 栅格化」的替代方案自动产出。 故继续执行:

2. 导出所有页面的画板为 PNG(1x 和 2x),保存到 penpot-assets/exports/pages/

执行很长时间,最后终于成功:

 画板 PNG 导出任务全部完成。

  根因与修复:排查发现之前 8 个板 panic、9 个板渲染空白其实是同一个 bug —— 序列化器误用了
  boardX/boardY(画布绝对坐标,三行画板在画布上分别位于 y=0 / -1000 /
  -2000),导致第二行内容整体移出画布(渲染为空白)、第三行触发 resvg 崩溃。改用画板相对坐标 s.x/s.y 后重序列化全部 27
  板并重转,ok=27 fail=0。

  交付物(penpot-assets/exports/pages/,共 54 个文件,7.7MB):
  - 27 个画板 × 1x(1440×900)/ 2x(2880×1800),命名如 ASR-03_识别结果@2x.png
  - 已校验:无空白文件(最小 49KB)、IHDR 尺寸正确、3 个原问题板(IA-02 / YD-03 /
  ASR-03)目检渲染正常(中文、布局、状态色均正确)

  收尾:design-asset-inventory.md 导出状态已更新(含实现路线与命名规则);临时文件(_server.js、_exporter/、中间
  _svg/)已清理,本地接收服务已停止。

继续执行第3步导出:

3. 导出所有组件为 SVG,保存到 penpot-assets/exports/components/

出现输出上下文超限,一次输出超过我设置的8K:


  Thought for 24m 21s, called penpot (ctrl+o to expand)
  ⎿  API Error: Claude's response exceeded the 8192 output token maximum. To configure this behavior, set the
     CLAUDE_CODE_MAX_OUTPUT_TOKENS environment variable.

改为分批导出:

修复之前的任务:导出 DS-02 组件库为 SVG

  问题:
  1. 之前因返回数据量过大导致 token 超限
  2. DS-02 中的"组件"是平铺元素,非 Penpot Component 对象

  新策略:

  1. 先用 execute_code 执行轻量查询,只获取元素名称和 ID,不获取样式属性
  2. 我确认分组规则后,再按组批量导出
  3. 每批最多导出 3 个 SVG,避免超时

  请现在执行 Step 1:获取 DS-02 画板中所有元素的名称列表和 ID。

第3步导出SVG成功:

 Step 1 完成。116 个元素清单已取得(上方工具输出),引用已缓存到 storage.ds02kids,后续按序号取用,无需再全文件扫描。

  注意:所有元素短 ID 前缀相同(53b0bcca,文件级前缀),无法用于区分——实际定位用序号(000–115)。

  分组规则提案(请确认)

  DS-02 是平铺元素(无嵌套组),"组件" = 功能相关的兄弟元素集合。按视觉组合归组如下:

  ┌─────────┬───────────────────────────────────────┬────────────────────────────────────┬────────────────────────────────┐
  │   组    │            组件(文件名)             │              包含序号              │              尺寸              │
  ├─────────┼───────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────┤
  │         │ btn-开始验证 / btn-次要按钮 /         │ 004+005 / 007+008 / 010+011 /      │                                │
  │ 按钮 ×6 │ btn-删除 / btn-确认通过 /             │ 013+014 / 016+017 / 019+020        │ 96×40(删除 68×40)            │
  │         │ btn-文字按钮 / btn-禁用状态           │                                    │                                │
  ├─────────┼───────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────┤
  │         │ input-占位态 / input-已输入 /         │ 026+027 / 029+030 / 032+033 /      │                                │
  │ 输入框  │ input-数字 / input-参数 /             │ 034+035 / 037+038+039 /            │ 280×38、140×38、120×38、190×36 │
  │ ×7      │ input-错误态 / input-下拉模型 /       │ 044+045+046 / 048+049+050          │  等                            │
  │         │ input-下拉embedding                   │                                    │                                │
  ├─────────┼───────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────┤
  │ 开关 ×2 │ toggle-开 / toggle-关                 │ 052+053 / 055+056                  │ 44×24                          │
  ├─────────┼───────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────┤
  │ 标签 ×6 │ tag-通过 / tag-失败 / tag-处理中 /    │ 059+060 / 061+062 / 063+064 /      │ 46~124 × 24(正常 60×22)      │
  │         │ tag-降级 / tag-COCO80类 / tag-正常    │ 065+066 / 067+068 / 100+101        │                                │
  ├─────────┼───────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────┤
  │ 表格 ×1 │ table                                 │ 089–095(表头)+ 103–110(行1)+   │ 1288×132                       │
  │         │                                       │ 111–115(斑马纹/边框)             │                                │
  ├─────────┼───────────────────────────────────────┼────────────────────────────────────┼────────────────────────────────┤
  │ 可选    │ card-01~`card-05`                     │ 003 / 024 / 041 / 070 / 088        │ 各区块白色容器背景             │
  │ 卡片 ×5 │                                       │                                    │                                │
  └─────────┴───────────────────────────────────────┴────────────────────────────────────┴────────────────────────────────┘

  核心组件共 27 个(去重后标签 6 个:表中两个 tag:正常 完全相同只导出 1 次);含卡片则 32 个。

  默认排除:text: 开头的区块标题与规格注释(primary/danger/高度 40 等)、card 容器背景(除非勾选可选项)。

  技术方案:组件为平铺兄弟元素,无需 <g>
  嵌套;坐标归零到组件包围盒原点,有阴影的元素(卡片)外扩阴影余量。落盘走本地接收服务(与 PNG 导出同一路线)——每次
  execute_code 只返回成功计数(几十字节),不回传 SVG 内容,所以不存在 token 超限问题,27 个可一次 POST 完成,无需 3 个一批。

  请确认:① 分组与排除规则是否 OK;② 是否导出 5 个 card 背景;③ 文件名前缀/命名是否要调整。确认后我即执行。

确认,真正执行导出:

 确认:1,OK, 2. 导出, 3. 不用调整。
  执行吧。
组件 SVG 导出完成。

  交付:penpot-assets/exports/components/ 共 31 个 SVG

  ┌──────────┬──────┬─────────────────────────────────────────────────────────────────────────┐
  │   组件   │ 数量 │                                  文件                                   │
  ├──────────┼──────┼─────────────────────────────────────────────────────────────────────────┤
  │ 按钮     │ 6    │ btn-开始验证 / 次要按钮 / 删除 / 确认通过 / 文字按钮 / 禁用状态         │
  ├──────────┼──────┼─────────────────────────────────────────────────────────────────────────┤
  ├──────────┼──────┼─────────────────────────────────────────────────────────────────────────┤
  │ 输入框   │ 7    │ input-占位态 / 已输入 / 数字 / 参数 / 错误态 / 下拉模型 / 下拉embedding │
  ├──────────┼──────┼─────────────────────────────────────────────────────────────────────────┤
  │ 开关     │ 2    │ toggle-开 / 关                                                          │
  ├──────────┼──────┼─────────────────────────────────────────────────────────────────────────┤
  │ 标签     │ 6    │ tag-通过 / 失败 / 处理中 / 降级 / COCO80类 / 正常                       │
  ├──────────┼──────┼─────────────────────────────────────────────────────────────────────────┤
  │ 提示条   │ 4    │ banner-错误 / 成功 / 警告 / 信息                                        │
  ├──────────┼──────┼─────────────────────────────────────────────────────────────────────────┤
  │ 表格     │ 1    │ table(1288×132,含表头、行数据、状态标签)                             │
  ├──────────┼──────┼─────────────────────────────────────────────────────────────────────────┤
  │ 卡片背景 │ 5    │ card-01 ~ 05(带阴影的含 feDropShadow 滤镜与外扩留白)                  │
  └──────────┴──────┴─────────────────────────────────────────────────────────────────────────┘

  保真核验:期间发现 table 组尾部有 3 个不透明 #B1B2B5 矩形,对照 DS-02 画板 PNG
  确认这正是画布实际渲染(表格内容被设计残留矩形覆盖),SVG 忠实还原,未擅自修改。按钮文本位置等亦逐一与画布比对一致。

  收尾:临时接收服务(9999 端口)已停止,_server.js 已删除;design-asset-inventory.md 第 6 节组件行已更新为「✅ 已完成(31
  个组件)」并附实现说明。至此该文件全部设计资产(tokens JSON + 54 个画板 PNG + 31 个组件 SVG)导出完毕。

✻ Sautéed for 50m 32s
  收尾:临时接收服务(9999 端口)已停止,_server.js 已删除;design-asset-inventory.md 第 6 节组件行已更新为「✅ 已完成(31
  个组件)」并附实现说明。至此该文件全部设计资产(tokens JSON + 54 个画板 PNG + 31 个组件 SVG)导出完毕。

不懂前端开发,继续学习一下:

这个项目在Penpot系统上生成的所有东西,都导出完毕了吗?目前有3个目录tokens, componects,
  pages,分析一下里面的内容,是否有导出缺失。还有,这些导出的东西,各是是什么作用啊?
核对完成。以下是完整分析。

  一、三个目录的内容与作用

  目录: tokens/
  内容: design-tokens.json(W3C DTCG 格式):品牌色 5、功能色 11、中性色 13、字体 2、字号 5、字重 3、行高 2、间距 5、圆角
    3、阴影 1
  大小: 5.5 KB
  作用: 代码级设计系统。用于生成 CSS 变量 / Tailwind 主题 / UI 库配置,保证开发代码的色值、字体、间距与设计严格一致
  ────────────────────────────────────────
  目录: exports/pages/
  内容: 27 画板 × 2(@1x 1440×900 + @2x 2880×1800)= 54 个 PNG,覆盖设计系统 2 板 + 首页 + 8 功能模块各 3 状态
  大小: 7.7 MB
  作用: 视觉对照基准。开发时逐像素比对、设计评审、验收截图。位图,不能反推代码
  ────────────────────────────────────────
  目录: exports/components/
  内容: 31 个 SVG:按钮 ×6、输入框 ×7、开关 ×2、标签 ×6、提示条 ×4、表格 ×1、卡片背景 ×5
  大小: 50 KB
  作用: 矢量组件参照。SVG 是矢量+文本,可直接查看色值/圆角/坐标,也可作为内联 SVG 使用,用于实现组件样式

  二、导出完整性核对(全文件扫描:11 页 / 27 画板 / 2517 元素)

  ┌──────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────────────┐
  │           Penpot 中的内容            │                                    导出状态                                     │
  ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
  │ 画板(27 个)                        │ ✅ 54 个 PNG 一一对应,无缺失                                                   │
  ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
  │ Design Tokens(DS-01 板)            │ ✅ 完整                                                                         │
  ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
  │ 组件(DS-02 板 31 组)               │ ✅ 完整                                                                         │
  ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
  │ 图片 / 图标类资产                    │ ✅ 无缺失——全部 2517 个元素均为矢量图形+文本,0                                 │
  │                                      │ 个图片填充,不存在需要单独导出的位图资产                                        │
  ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
  ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
  │ Design Tokens(DS-01 板)            │ ✅ 完整                                                                         │
  ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
  │ 组件(DS-02 板 31 组)               │ ✅ 完整                                                                         │
  ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
  │ 图片 / 图标类资产                    │ ✅ 无缺失——全部 2517 个元素均为矢量图形+文本,0                                 │
  │                                      │ 个图片填充,不存在需要单独导出的位图资产                                        │
  ├──────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────────────┤
  │ 交互/原型数据(141 个                │ ⚠️ 唯一未导出的内容                                                             │
  │ click→navigate-to)                  │                                                                                 │
  └──────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────────────┘

  三、顺带发现的 3 个小问题

  1. exports/pages/ 里混入 1 个无关文件 bash.exe.stackdump(Windows bash 崩溃转储,非导出产物),建议删除;
  2. Penpot「04 人脸登录验证」页有一个游离元素:100×100 的 Ellipse,不在任何画板内,是设计残留(未进入任何导出,不影响产物);
  3. 清单文档第 3 节中性色数量写 12,实际 JSON 为 13 个,可顺手修正。

  结论

  视觉与设计系统层面的导出已全部完成,无缺失。 唯一没导出的是 141
  条原型交互(页面跳转关系)——如果前端开发路由时需要「哪个元素点击后跳到哪个画板」的对照,可以补一份交互清单(JSON 或
  Markdown)。

  需要我执行哪些后续操作?① 删除 bash.exe.stackdump;② 在 Penpot 里删掉残留的 Ellipse;③ 补导出 141 条交互清单;④
  修正文档中性色计数。
2.6.2 手动导出

手工操作太麻烦,不考虑。

2.6.3 Locofy Lightning 插件(一键生成 Vue 代码)

类似手工操作,不是自动生成到git仓库目录下,不直接,不考虑。

2.7 编写前端系统

继续边问边学:

❯ 这些导出的文件有什么用?我怎么才能使用这些文件和对应openspec文件,通过claude code
  来自动编写前端系统代码,做一个基于vue3框架的可运行的web系统来?给一个操作步骤方案。

回答:

项目现状已摸清,关键发现:frontend/ 已有一个功能完整的旧版 Vue3(13 个 view、6774 行、已接 FastAPI 7000
  端口),所以你的任务不是"从零生成",而是**"用 Penpot 设计系统重构现有前端的视觉层 + 补设计系统基建"**。这反而让 Claude Code
  自动化更可靠(业务逻辑和 API 层不用动)。

  一、导出文件 × 使用环节对照

  ┌─────────────────────────────┬─────────────────────────────────────────────┬───────────────────────────────────────────┐
  │            文件             │                    性质                     │              在开发中的用法               │
  ├─────────────────────────────┼─────────────────────────────────────────────┼───────────────────────────────────────────┤
  │ tokens/design-tokens.json   │ 设计真值(色值/字体/间距/圆角/阴影)        │ Step 1 生成 tokens.css(CSS 变量),全局  │
  │                             │                                             │ 唯一颜色来源,禁止代码里再写死 hex        │
  ├─────────────────────────────┼─────────────────────────────────────────────┼───────────────────────────────────────────┤
  │ exports/components/*.svg(3 │ 组件规格书(SVG 源码即可读文本:精确色值、  │ Step 2 让 Claude Code 读 SVG 源码 →       │
  │ 1 个)                      │ 圆角、字号、坐标)                          │ 逐个实现 ui/ 基础组件                     │
  ├─────────────────────────────┼─────────────────────────────────────────────┼───────────────────────────────────────────┤
  │ exports/pages/*.png(54     │                                             │ Step 3/4 每做一个页面,把对应 PNG         │
  │ 张)                        │ 视觉验收基准                                │ 路径写进 prompt(Claude Code              │
  │                             │                                             │ 能看图),做完截图对比                    │
  ├─────────────────────────────┼─────────────────────────────────────────────┼───────────────────────────────────────────┤
  │ design-asset-inventory.md   │ 导航地图(哪个画板对应哪个页面/状态)       │ 全程检索"我该参照哪张图"                  │
  ├─────────────────────────────┼─────────────────────────────────────────────┼───────────────────────────────────────────┤
  │ openspec/specs/*/spec.md(1 │ 需求真值(Requirement + WHEN/THEN 场景,含  │ Step 4                                    │
  │ 0 份)                      │ API 端点)                                  │ 每个模块的行为规格,验收标准直接来自      │
  │                             │                                             │ Scenario                                  │
  └─────────────────────────────┴─────────────────────────────────────────────┴───────────────────────────────────────────┘

  二、操作步骤方案(6 步,每步 = 一个 Claude Code 任务)

  Step 0 · 准备(手动,10 分钟)

  cd D:\ai\llmmaster\backend  && 启动 FastAPI(7000 端口,参考 backend/run.sh)
  cd D:\ai\llmmaster\frontend && npm run dev   # 3001 端口,已配好 /api 代理
  打开 http://localhost:3001 截一张"改造前"全家福存底,用于最后对比。

  Step 1 · 设计令牌落地

  - 输入:penpot-assets/tokens/design-tokens.json
  - 产物:frontend/src/styles/tokens.css(CSS 变量 --color-brand-primary 等 3 组 30 色 + 字体/间距/圆角/阴影);改写 main.css
  引用变量
  - 验收:npm run build 通过;全项目 grep 不到 tokens.css 之外的硬编码 hex
  - Prompt 示例:
  ▎ 读取 penpot-assets/tokens/design-tokens.json,在 frontend/src/styles/tokens.css 中生成 W3C 命名对应的 CSS
  自定义属性(:root),并把 main.css 中所有硬编码颜色替换为变量引用。不要引入新依赖。

  Step 2 · 基础组件库(最关键的一步)

  - 输入:31 个 SVG + design-asset-inventory.md 第 4 节
  - 产物:frontend/src/components/ui/:Button.vue(primary/secondary/danger/success/ghost/disabled 6
  变体)、Input.vue(占位/已输入/错误态/下拉 等)、Tag.vue(6 色)、Toggle.vue、Banner.vue(4
  类可关闭)、Card.vue(阴影)、DataTable.vue
  - 验收:每个组件一个 vitest 快照测试;建一个临时 DevComponentsView 预览页目检
  - Prompt 示例:
  ▎ 以 penpot-assets/exports/components/ 下 31 个 SVG 的源码为唯一样式规格(色值、圆角、字号、padding 必须与 SVG
  完全一致),实现 frontend/src/components/ui/ 下的 Button/Input/Tag/Toggle/Banner/Card/DataTable 组件,使用 tokens.css
  变量。每个组件附 vitest 测试。

  Step 3 · 全局布局

  - 输入:首页@1x.png(深色侧栏 #0F172A + 8 功能入口 + 顶栏)
  - 产物:App.vue 布局重构 + router/index.js 路由表对齐(8 模块 + 首页)
  - 验收:侧栏导航高亮、跳转、返回首页全部可用

  Step 4 · 8 个功能模块逐个对齐(8 个任务,建议一个会话做一个)

  每个模块的固定输入包:3 张状态 PNG + 1 份 spec.md + 现有 View + ui 组件

  ┌──────┬───────────┬──────────────┬──────────────────────────────┬──────────────────────────────────────┐
  │ 顺序 │   模块    │    参照图    │             spec             │               改造对象               │
  ├──────┼───────────┼──────────────┼──────────────────────────────┼──────────────────────────────────────┤
  │ 1    │ 语音识别  │ ASR-01/02/03 │ speech-to-text               │ AsrView                              │
  ├──────┼───────────┼──────────────┼──────────────────────────────┼──────────────────────────────────────┤
  │ 2    │ OCR 识别  │ OCR-01/02/03 │ ocr-recognize                │ OcrRecognizeView                     │
  ├──────┼───────────┼──────────────┼──────────────────────────────┼──────────────────────────────────────┤
  │ 3    │ 员工管理  │ EM-01/02/03  │ employee-management          │ EmployeeList/Form                    │
  ├──────┼───────────┼──────────────┼──────────────────────────────┼──────────────────────────────────────┤
  │ 4    │ 人脸检测  │ FD-01/02/03  │ face-detect                  │ FaceDetectView                       │
  ├──────┼───────────┼──────────────┼──────────────────────────────┼──────────────────────────────────────┤
  │ 5    │ 人脸验证  │ FV-01/02/03  │ face-verify                  │ FaceVerifyView                       │
  ├──────┼───────────┼──────────────┼──────────────────────────────┼──────────────────────────────────────┤
  │ 6    │ YOLO 检测 │ YD-01/02/03  │ yolo-detect / yolo-detection │ YOLODetectView                       │
  ├──────┼───────────┼──────────────┼──────────────────────────────┼──────────────────────────────────────┤
  │ 7    │ 视频异常  │ VA-01/02/03  │ video-anomaly-analysis       │ VideoAnalyzeView                     │
  ├──────┼───────────┼──────────────┼──────────────────────────────┼──────────────────────────────────────┤
  │ 8    │ 图片分析  │ IA-01/02/03  │ image-analysis               │ ImageAnalysisView(1158 行,最后做) │
  └──────┴───────────┴──────────────┴──────────────────────────────┴──────────────────────────────────────┘

  - Prompt 模板(每模块替换参数):
  ▎ 重构 frontend/src/views/AsrView.vue,使其与 penpot-assets/exports/pages/ASR-01_初始状态@1x.png、ASR-02_…、ASR-03_…
  三张设计图一致(1440×900)。行为规格以 openspec/specs/speech-to-text/spec.md 的全部 Scenario 为准。样式只用 tokens.css 变量和
   ui/ 组件,保留现有 services/api.js 调用逻辑。完成后 npm run test 必须通过。
  - 每模块验收:① 三状态截图与设计 PNG 目检一致;② spec 中每个 Scenario 可走通;③ API 真实调用成功。

  Step 5 · 交互与细节收尾

  - 141 条原型跳转主要是侧栏/返回首页/状态流转,Step 3/4 已覆盖大部分;如需要精确对照,让我先导出交互清单 JSON
  - 处理上次发现的残留:删 bash.exe.stackdump、Penpot 里删 Ellipse

  Step 6 · 整体验收
  3. 一次一个模块,做完验收再下一个:避免 8 个模块一起改导致上下文爆炸、互相覆盖(你之前导出任务 token
  超限就是大任务一次性做的教训)。

  四、需要你拍板的 2 件事

  4. 样式方案:CSS 变量(推荐,零新依赖,现有 main.css 直接演进)还是 TailwindCSS(需新装依赖、改构建配置)?
  5. 改造策略:原地重写现有 view(推荐,保留 API 逻辑和路由结构)还是另起新目录 src-v2 并行开发?

  确认后,我建议从 Step 1 + Step 2 开始(一个会话内可完成),你只需把上面的 Prompt 粘给 Claude Code(或告诉我"开始执行 Step
  1",我直接做)。

再问:

说明更正一下:frontend确实是我已经开发完成的前端web系统,但是它是我手工开发的;现在主要尝试使用claude code + openspec +
  penpot mcp进行原型设计, 然后用penpot系统导出的东西,使用claude
  code来自动编写前端web系统,看看是否成功,我们可以创建frontend2来放新前端系统代码。你再根据我的需求分析一下,更新一下方案。

回答:

明白了——这是一个流水线可行性实验:openspec(需求)+ Penpot 导出资产(设计)→ Claude Code → 可运行的
  frontend2,验证这条自动化路径是否走得通。frontend/ 保持不动,只作为后端 API 的现成参照。方案更新如下。

  一、实验定义(先定标准,否则"是否成功"无法判定)

  ┌──────────┬──────────────────────────────────────────────────────────────────────────────────────────────────────────────┐
  │    项    │                                                     内容                                                     │
  ├──────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ 输入     │ ① penpot-assets/ 三个目录 + 清单文档 ② openspec/specs/ 10 份 spec ③ 后端 API 端点(spec 里已含               │
  │          │ /api/...,另可参照 frontend/src/services/api.js 的现成清单)                                                 │
  ├──────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ 输出     │ frontend2/:可 npm run dev 运行、8 大功能模块可走通、视觉贴近设计的 Vue3 系统                                │
  ├──────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ 成功判据 │ ① 功能:每个模块的 spec Scenario 基本走通 ② 视觉:截图与设计 PNG 明显同构(不必像素级) ③                    │
  │          │ 人工干预次数(实验核心指标:几次纠正才收敛) ④ 效率:每模块耗时/token ⑤ 构建/测试通过                        │
  ├──────────┼──────────────────────────────────────────────────────────────────────────────────────────────────────────────┤
  │ 实验纪律 │ 代码尽量让 Claude Code 生成;每次人工纠正都记录(纠正内容 +                                                  │
  │          │ 原因),最后汇总成实验报告——干预点分布就是这条流水线的短板地图                                               │
  └──────────┴──────────────────────────────────────────────────────────────────────────────────────────────────────────────┘

  二、执行步骤(frontend2 从零)

  Step 0 · 环境准备(手动/我代做,10 分钟,不计入实验)

  # 后端(7000)保持运行
  cd D:\ai\llmmaster && mkdir frontend2   # 脚手架:Vite+Vue3+router+axios
  # vite 端口 3002,proxy /api → 127.0.0.1:7000(与 frontend 同款配置)
  脚手架建议直接搭好(复制 frontend 的 package.json/vite.config,清空 src),把"搭脚手架"这个无关变量排除在实验外。

  Step 1 · 写 frontend2/CLAUDE.md 实验宪法(1 个任务)

  这是整条流水线的"控制变量",内容:
  - 技术栈锁定:Vue3 + CSS 变量(禁 Tailwind/禁 UI 库,减少变量)
  - 设计真值路径:tokens.json / components SVG / pages PNG 各自用途
  - 硬性规则:颜色只准用 --token 变量;组件必须来自 ui/;每个 view 头部注释标明对应的 3 张设计图路径
  - 验收命令:npm run build + npm run test

  Step 2 · 设计令牌(实验任务 1)

  tokens.json → src/styles/tokens.css。验收:build 通过、无裸 hex。

  Step 3 · ui 组件库(实验任务 2,最吃设计资产的环节)

  31 个 SVG 源码 → src/components/ui/(Button/Input/Tag/Toggle/Banner/Card/DataTable)。
  这一步直接检验"SVG 作为组件规格书"是否够用——如果 Claude Code 从 SVG 读出的样式有偏差,就是第一个干预点,记录下来。

  Step 4 · 布局 + 路由(实验任务 3)

  首页@1x.png → App.vue 布局(深色侧栏 8 入口)+ 路由表。

  Step 5 · 8 模块逐个生成(实验任务 4–11,一个会话一个模块)

  每个模块固定 prompt 模板:

  ▎ 在 frontend2 中实现 XX 模块:视图规格参照 penpot-assets/exports/pages/XX-01/02/03 三张 PNG(1440×900),行为规格以
  ▎ openspec/specs/xx/spec.md 全部 Scenario 为准,API 端点见 spec 中 /api 路径。样式只用 tokens 变量 + ui 组件。完成后 build 与
  ▎  test 必须通过。

  顺序按复杂度递增:ASR → OCR → 员工管理 → 人脸检测 → 人脸验证 → YOLO → 视频异常 → 图片分析。
  每模块完成后:Playwright/浏览器截图 vs 设计 PNG 目检 → 记录差异 → 一次纠正 prompt → 再截图 → 收敛即下一模块。

  Step 6 · 整体验收 + 实验报告(实验任务 12)

  - 27 画板截图 vs 设计图总对比
  - 产出 docs/frontend2-experiment.md:各步干预点清单、失败案例、token
  消耗、结论(这条流水线在什么粒度上可用、什么粒度上必须人兜底、导出资产是否足够——若某处必须回 Penpot MCP
  实时查数据,说明导出物需补强)

  三、与上一版方案的差异

  ┌──────────────────────────────────────────────┬─────────────────────────────────────────────────────────────────────────┐
  │                    变化点                    │                                  原因                                   │
  ├──────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────┤
  │ 前端从零(frontend2),不再复用 frontend 的  │ 实验要测"自动生成"能力,复用旧代码会让结果失真                          │
  │ view/组件                                    │                                                                         │
  ├──────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────┤
  │ frontend 降级为参照物:API                   │ 你的手工系统是最好的"标准答案",验收时可比对功能行为                    │
  │ 端点清单、行为正确性对照                     │                                                                         │
  ├──────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────┤
  │ 增加实验记录机制(干预点 + 耗时 + token)    │ "看看是否成功"需要量化结论,不是凭感觉                                  │
  ├──────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────┤
  │ 脚手架、CLAUDE.md 不计入实验任务             │ 排除无关变量,只测"资产 → 代码"这一段                                   │
  ├──────────────────────────────────────────────┼─────────────────────────────────────────────────────────────────────────┤
  │ 评估中加入"导出资产是否够用"维度             │ 若 Claude Code 频繁回查 Penpot                                          │
  │                                              │ MCP,说明导出物(SVG/PNG/tokens)缺信息,反哺导出流程                   │
  └──────────────────────────────────────────────┴─────────────────────────────────────────────────────────────────────────┘

  四、需要你拍板(4 个,都是实验前置变量)

  1. 脚手架:我直接搭好 frontend2 骨架(推荐),还是让 Claude Code 连脚手架一起生成?
  2. 样式:CSS 变量(推荐)还是 Tailwind?
  3. 测试:每模块配 vitest 测试(更严谨但费 token),还是只做 build + 截图目检(更省)?
  4. 启动时机:现在就从 Step 0 + Step 1 开始执行?

  你回复这 4 点后我立即开工。

开工:

  1. 让 Claude Code 连脚手架一起生成;
  2.  样式:CSS 变量;
  3. 测试:每模块配 vitest 测试(更严谨但费 token);
  4. 启动时机:现在就从 Step 0 + Step 1 开始执行!

最后生成前端代码倒是很顺利,一个可运行的web系统就轻松出来了。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
对我这种以前打死不做前端开发的人来说,做一点要求不高的web管理系统,现在也不用求人了。

2.8 总结

本次从openspec(需求)开始,Claude Code连接Penpot MCP server, 用需求spec去驱动Penpot系统进行原型设计, 在用Claude Code连接Penpot MCP server导出Penpot生成的资产(设计)到git仓库目录penpot-assets里,最后Claude Code利用openspec和penpot-assets进行编码,生成基于Vite+Vue3+router+axios脚手架的可运行的frontend2前端系统代码,验证这条自动化路径是走得通的,而且效果还不错。

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐