pen.dev × Claude Code
最佳实践全景指南
pen.dev 是住进 IDE 的 AI 设计画布,Claude Code 是终端里的智能编码代理,MCP 把两者连成一条「设计上下文零损耗」的流水线。本指南聚合官方文档、社区教程、实战博客与开源技能,整理出一套可直接落地的完整打法。
为什么是 pen.dev + Claude Code
它解决的核心问题:设计-代码鸿沟
传统流程里,设计师在 Figma 精雕细琢,开发者对着标注重写一遍——间距差一点、字重不对、hover 态没文档,最终上线的东西「像设计稿的表亲」。这不是谁的错,而是设计与开发两套工具链、两个事实来源的结构性问题。
通用 AI 编码工具也没能根治:它们看不到你的设计系统、品牌色和间距阶梯,只能基于全网见过的模式生成「看起来还行」但不属于你产品的组件。
能力版图
| 角色 | 提供什么 |
|---|---|
| pen.dev | 无限画布、组件/变量/插槽体系、Figma 导入、内置 AI 聊天、.pen 文件格式、无头 CLI |
| Claude Code | 代理式编码:多文件读写、执行命令、计划模式、技能(Skills)与 MCP 扩展 |
| MCP | 桥梁协议:让 Claude Code 获得 execute、get_app_state、get_screenshot、export_nodes、get_guidelines 等设计操作工具(2026-07-27 官方文档已把工具集从 batch_design/batch_get/snapshot_layout/get_variables 等收拢为这 5 个,详见《pen.dev 文档中文版》) |
来源:Pencil.dev + Claude Code Workflow · 官方 AI Integration 文档 · Geeky Gadgets
环境搭建标准流程
综合官方文档与 DevelopersIO 实测教程,这是社区验证过的最稳妥路径(以 VS Code 为例,Cursor 同理):
- 安装 Claude Code 并认证:官方首推 native 安装器
curl -fsSL https://claude.ai/install.sh | bash(Windows 用irm https://claude.ai/install.ps1 | iex);运行claude走浏览器登录。装不上/登不上查环境急救手册。 - 安装 pen.dev 扩展:VS Code 扩展面板搜索 "pen.dev",认准发布者标识
highagency.pencildev。 - 启动 pen.dev:点击状态栏左下角的 pen.dev 铅笔图标(不出现就重启 VS Code)。
- 邮箱激活:首次启动输入邮箱 → 收验证码 → 填码登录。
- 验证 MCP 连接:启动 Claude Code,执行
/mcp,确认 pencil 显示为 connected。MCP 配置在安装时已自动写好,无需手工配置。 - 创建
design.pen:放在项目工作区根目录,与代码同仓库——这是后续一切「AI 同时看到设计与代码」玩法的前提。
自动写入 .claude.json 的 MCP 配置长这样(路径因平台而异):
"mcpServers": {
"pencil": {
"command": ".../highagency.pencildev-x.y.z/out/mcp-server-darwin-arm64",
"args": ["--app", "visual_studio_code"],
"type": "stdio"
}
}
/mcp,pencil 显示 connected 即就绪 · 图:DevelopersIOdesign.pen → 在 IDE 打开 → 激活 → 保持 .pen 与代码同仓库。首次可右键画布 → Open Welcome File 跟着内置练习走一遍。claude 已登录——大多数「连不上」都出在这;② 暂无自动保存,勤按 Cmd/Ctrl + S;③ 用 Codex 的用户注意 config.toml 可能被改动,先备份。四种核心工作流
社区实践收敛出四种可复用的工作流范式,可按项目阶段自由组合:
在 Claude Code 里用几行中文/英文描述,直接生成整页设计;再到画布上手工微调。DevelopersIO 实测:旅行相册、面包店点单页、咖啡店仪表盘、社区公告板、员工门户五种页面,均达到「可直接当原型用」的质量。
画布定稿后,一句 "Generate a Next.js page from this design" 让 Claude Code 读取精确结构与令牌生成代码。提示词中写明技术栈(React/Vue/Tailwind/shadcn-ui…)效果最好。
让 AI 把 src/components 里的既有组件在画布上重建("Recreate the Button component from src/components/Button.tsx"),结构、布局、样式一并导入,老项目也能补出设计稿。
变量层打通 CSS ↔ pen.dev("Create pen.dev variables from my globals.css"),.pen 与代码一起提交、一起回滚——设计与实现之间「零漂移」。改设计的 PR 里能直接 diff 设计变更。
Workflow A 的实测效果
DevelopersIO 用「三要素提示词」各生成一次、零手工修改的直出结果:
以上图片来源:DevelopersIO 实测文章
给既有项目改版的完整链路(实测)
DevelopersIO 演示了对现有项目「设置页」改版的两步法:
- 生成设计:向 Claude Code 描述页面要求(用 pen.dev MCP 设计当前项目的 Settings 页:白色卡片表单、AI 分析设置分区、模型单选按钮、每个模型下方灰色小字说明……)——先产出 .pen 设计稿。
- 应用设计:确认设计后一句
请应用这个设计,AI 把设计落到项目的 CSS/组件代码上。
来源:DevelopersIO · 官方 Design ↔ Code · daily.dev: Vibe Design with Pencil and Claude Code
Workflow D 深挖:.pen 的 diff 长什么样、冲突怎么办
本指南 hero 统计条把 .pen = JSON,可 Git 版本化、可 diff、可合并 立成第二大卖点,但「能 diff」不等于「diff 可读」,「能合并」也不等于「冲突好解决」。这三个问题拆开说清楚。
1. .pen 的 diff 实际长什么样
官方没有公开过完整的真实 .pen 导出文件(格式本身在 《pen.dev 文档中文版 · .pen 文件格式》一节有详细 schema),下面这段 diff 是按该 schema 手工构造的示意结构,不是真实文件导出,用来展示「文本 diff」大致的可读程度——一次按钮位置下移 + 文案改动 + 颜色变量切换:
diff --git a/design/settings.pen b/design/settings.pen
index 8a1f3c2..44e9b7a 100644
--- a/design/settings.pen
+++ b/design/settings.pen
@@ -18,11 +18,11 @@
{
"id": "save-button",
"type": "ref",
"ref": "primary-button",
- "x": 24, "y": 480,
+ "x": 24, "y": 512,
"descendants": {
"label": {
- "text": "Save",
- "fill": "$color.text-secondary"
+ "text": "Save changes",
+ "fill": "$color.text-primary"
}
}
},
结论是「介于两者之间」:比 Figma 的二进制/云端格式确实可读得多——审阅者能看出「按钮往下挪了、文案变了、颜色变量换了」;但比一段代码 diff噪音更大——组件实例的 id/ref/descendants 路径会占掉不少行,读起来更接近 review 一份 package-lock.json 而不是一段函数改动。「PR 里能看懂设计变了什么」成立,但「一眼看懂改得好不好」仍然做不到——这正是下方 高级玩法 · 接入 CI/CD 里「CI 自动出截图」要补的缺口。
2. 两人同时改一个 .pen,冲突怎么解
- 官方原话(乐观的一面):「可分支合并——设计跟着功能分支走,一起合并、一起回滚」(Design as Code);「没有实时协作:目前通过 Git 协作——分支并行、pull → 编辑 → commit → push → PR」(Troubleshooting)。
- 官方原话(矛盾的一面):「官方明确:不要手动编辑 .pen,走编辑器或 MCP 工具」(见下方避坑清单)。
- 缺口:.pen 是单棵 JSON 对象树,一旦两个分支都改了同一个
id的节点,Git 的三方合并会在 JSON 文本中间插入<<<<<<</=======/>>>>>>>冲突标记——这和代码冲突的形态完全一样,但解决它需要手工编辑 JSON 文本,而这恰恰是官方明确劝阻的操作。截至本文核对(2026-07-28),docs.pencil.dev与 Jerad Bitner、Tao An、Xinran Ma 等三篇被本站引用的社区文章均未提及这个场景的处理办法。
在没有官方指引的情况下,以下是本文作者基于上述两条已发布规则反推出的可行规避思路,不是官方教程:
- 优先靠流程规避,而不是靠合并技术解决:Troubleshooting 页给的协作方式本质是「分支并行 + PR 评审」,没有说「放心并发改同一文件」。同一个 Frame/页面同一时间只给一个人改,是目前唯一被官方认可的路径。
- 用
imports拆分文件,缩小冲突面:.pen 格式支持文档级imports字段(键为别名、值为相对路径,见 .pen 文件格式),可以把大设计拆成多个按页面/组件划分的 .pen 文件、在根文件里 import——和代码里拆模块减少合并冲突是同一个思路,只是官方文档没有把这一点明确写成「防冲突手段」,这是本文的推断用法。 - 真出现冲突标记,别手改 JSON,改「二选一 + 重做」:
git checkout --ours/--theirs整体选一侧,再让对方回到编辑器/MCP 工具里把自己那部分改动重新做一遍——这样冲突解决过程始终没有绕开「只用编辑器或 MCP 工具改 .pen」这条官方红线,代价是重做一遍改动。
3. 变量双向同步跑完,两边各自长什么样
「Create pen.dev variables from my globals.css」执行前后,CSS 和 pen.dev 变量面板的对应关系(命名规则依据官方 Variables 与 .pen 文件格式两篇文档描述整理,非真实截图——官方文档也没有给出这条命令的实际运行截图):
| globals.css(同步前) | pen.dev 变量面板(同步后) | 类型 |
|---|---|---|
--color-primary: #0ea5e9; | color.primary | color(色板色块) |
--color-text-secondary: #5a6272; | color.text-secondary | color |
--radius-md: 12px; | radius.md | number |
--font-body: "Inter", sans-serif; | font.body | string |
CSS 一侧不会有任何变化——AI 只读取 globals.css,把每条 --自定义属性 映射成 pen.dev 变量面板里的一条新记录(命名把 -- 前缀去掉、连字符按语义拆成点号分段,这是 .pen 格式变量键名惯用的 色板.用途 写法,而不是逐字保留 CSS 变量名)。画布上的元素这时还没有自动引用这些新变量——同步命令只负责「把 CSS 里已有的值搬进变量面板」,要让画布元素用上它们,得再来一句类似「所有按钮改用 $color.primary」的指令,或手动在属性面板里把硬编码值换成变量引用。反向的「Update globals.css with these pen.dev variables」同理:只搬运值,不会自动重构还在用旧硬编码值的 CSS 规则。
实战提示词范例集
以下范例来自社区实测与官方文档,可直接改造使用。经验规律:「页面类型 + 内容清单 + 配色气质」三要素的提示词,一次成型率最高。
整页生成(三要素模板)
设计一个〔页面类型/目标用户〕
〔功能与内容清单:模块 1、模块 2、模块 3……〕
〔配色与气质:色系 + 形容词〕DevelopersIO 用该模式实测五种页面全部一次可用,例如:
为社区面包店设计一个在线点单页
今日现烤面包照片轮播、分类菜单、自提时间选择、购物车功能
奶油色与棕色的温暖设计为独立咖啡店设计一个销售管理仪表盘
每日销售柱状图、热门菜单排行、库存预警、今日预约列表
暖棕色系配色设计 → 代码(指定技术栈)
Create a React component for this button
Generate TypeScript types for this form
Export this card as a reusable componentGenerate Next.js code with Tailwind CSS and the App Router
Use shadcn/ui components for this layout
Export using Lucide icons instead of Material Icons代码 → 设计
Recreate the Button component from src/components/Button.tsx
Import the LoginForm from my codebase into this design
Recreate all components from src/components in pen.dev变量与设计令牌
Create pen.dev variables from my globals.css
Update globals.css with these pen.dev variables
Sync typography variables between CSS and pen.dev设计系统一致性
Ensure all buttons use the primary color variable
Apply 8px spacing grid to all elements
Create 5 variations of this button component设计系统工程化
单页生成只是起点;社区里最成熟的打法,是把 pen.dev + Claude Code 当成设计系统的生产与消费流水线。
五阶段方法论(社区 Claude Code Skill)
社区流传较广的 /create-design-system 技能把「从想法到设计系统」拆成五个必须逐一确认的阶段,核心思想是每个阶段边界都停下来给人确认,绝不一口气冲到底:
| 阶段 | 做什么 | 关键动作 |
|---|---|---|
| ① 想法挖掘 | 把模糊想法问清楚:给谁用、核心工作流是什么、MVP 边界在哪 | 锁定平台(Web/移动)、气质(专业/活泼/极简)、5–7 个关键屏幕;主动抵制范围蔓延 |
| ② 风格方向 | 探索视觉方向 | 用风格标签生成 2–3 组方向;鼓励用户丢 Dribbble/Behance/竞品截图,真实视觉参考胜过千言万语 |
| ③ 品牌方向板 | 在 .pen 里做 2–3 块方向板供用户挑选 | 每块含:色板(主/辅/强调/中性/语义色)、字阶(H1–H4/正文/说明)、样例组件、3–5 个气质关键词;A 稳妥、B 大胆、C 出格 |
| ④ 组件库 | 按定稿方向构建可复用组件库 | 先设变量(设计令牌),再建必备组件(按钮三态、输入框、卡片、导航、徽章),全部标记 reusable;截图给用户确认 |
| ⑤ 关键屏幕 | 用组件库拼装第一阶段定下的屏幕 | 从最重要的屏幕开始定调;组件以 ref 实例插入;永远用真实感内容,拒绝 lorem ipsum;逐屏截图确认 |
企业级案例:Lullabot 品牌库
Lullabot 工程师 Jerad Bitner 的做法展示了「库文件」的正确姿势:把整个品牌系统装进一个可导入的设计库——56 个颜色变量、Circular + IBM Plex Mono 的字体令牌、4px 网格的间距阶梯、16 个可复用组件(按钮、卡片、表单输入、导航链接、徽章、标签、引用块)。
- 公司内部工具 OpptyNet 导入它,Upstraker 导入它,下一个新工具还导入它——第二个项目起,视觉语言就不用从零搭。
- 他的原话概括:「有了共享设计库,你不再纠结用哪种蓝,而开始思考界面真正要做什么。」
.lib.pen 设计库(图层面板 → Libraries → Turn this file into a library),即可被任意项目导入;库内组件更新会同步到所有使用处。注意:转库操作不可逆。来源:TobyScr / create-design-system skill · Jerad Bitner: Designing with Pencil and Claude Code · 官方 Design Libraries
高效提示词模式
具体性法则
迭代金字塔(官方推荐节奏)
- 先框架 — "创建仪表盘布局"
- 再细化 — "加带导航项的侧边栏"
- 后打磨 — "导航项加 hover 态"
- 终收尾 — "间距对齐 8px 网格"
社区共识与此一致:抵制「一个巨型提示词生成完整应用」的诱惑。小块设计 → 生成 → 审查 → 精修 → 下一块,质量远高于一次性梭哈。
上下文注入技巧
- 引用既有资产:"用我们现有的按钮组件"、"遵循变量里的间距阶梯"、"和 Header 组件风格保持一致"——让 AI 复用而不是重造。
- 点名设计系统:"按 Material Design 原则"、"用 shadcn/ui 风格"、"遵循 design-system.pen 里的规范"。
- 画布选区即上下文:在画布上选中的元素会自动进入 AI 上下文;话题切换时点 "New Agent" 清空上下文重开。
- 要求先解释再动手:对大改动,让 AI 先说明打算怎么改,确认后再执行,配合 Claude Code 的计划模式(Plan Mode)效果更佳——计划错了一句话就能纠正,改完了才发现错,代价是几百行 diff。
验证闭环
- 画布上目视检查;
- 图层面板核对结构;
- 让 AI 调
get_screenshot截图自检复杂布局; - 用
get_app_state(旧版工具名snapshot_layout)排查重叠与错位。
来源:官方 AI Integration / Best Practices · Pencil.dev + Claude Code Workflow · DEV: Claude Code Workflow Best Practices
高级玩法
pen.dev CLI:无头设计与批量生产
pencil 更名为 pen(npm 包 @pen.dev/cli,环境变量 PENCIL_CLI_KEY → PEN_CLI_KEY),下面已按新版更新。CLI 与桌面应用共用同一编辑引擎,却完全不需要 GUI——这让「设计」变成可脚本化的构建步骤:# 一句话生成设计文件
pen --out login.pen --prompt "Create a modern login page with email, password, social login"
# 修改既有设计并导出 2 倍图
pen --in dashboard.pen --out dashboard-v2.pen --prompt "Add a sidebar navigation"
pen --in design.pen --export hero.png --export-scale 2
# 批量任务(每个任务独立编辑器实例,顺序执行)
pen --tasks batch.json
# 简单任务换便宜模型,控制成本
pen --out simple.pen --model claude-haiku-4-5 --prompt "Create a simple 404 page"
接入 CI/CD
在组织设置的 Developer Keys 里创建 CLI Key,流水线中即可自动跑设计任务:
export PEN_CLI_KEY=pen_cli_...
export ANTHROPIC_API_KEY=sk-ant-...
pen --out onboarding.pen --prompt "Create a 3-step onboarding flow"
配合 pen interactive 交互 shell,还能在脚本里直接调 MCP 工具做精细操作(execute 建节点 → get_screenshot 出图 → save() 落盘;旧版工具名是 batch_design)。
CI 里跑设计,到底解决什么问题
不是「让 AI 在流水线里自动画设计」这种花活——最有说服力的用途是补上 Workflow D 深挖里提到的那个缺口:.pen 的文本 diff 能看出「改了什么节点」,但看不出「改完长什么样、好不好看」。让 CI 在每个改动 .pen 文件的 PR 里自动渲染一版截图,评审者不用装 pen.dev、不用切出 IDE,PR 页面里直接肉眼判断这版改动是否可接受——这是「设计变更能像代码一样被 review」这句话里,文本 diff 单独做不到、必须靠出图来补的那一半。
# .github/workflows/design.yml
name: pen.dev 设计预览
on:
pull_request:
paths:
- '**/*.pen'
jobs:
design-preview:
runs-on: ubuntu-latest
permissions:
contents: read
pull-requests: write
steps:
- name: 检出代码(需要能 diff 出改动的 .pen 文件)
uses: actions/checkout@v4
with:
fetch-depth: 0
# CLI 要求 Node.js 18+,见官方 Installation
- name: 安装 Node.js
uses: actions/setup-node@v4
with:
node-version: '20'
cache: 'npm'
- name: 安装 pen.dev CLI
run: npm install -g @pen.dev/cli
- name: 导出本次 PR 改动的 .pen 文件为 PNG
env:
PEN_CLI_KEY: ${{ secrets.PEN_CLI_KEY }}
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
run: |
mkdir -p design-previews
git fetch origin "${{ github.base_ref }}"
for f in $(git diff --name-only "origin/${{ github.base_ref }}"...HEAD -- '*.pen'); do
[ -f "$f" ] || continue
name=$(echo "$f" | tr '/' '_' | sed 's/\.pen$//')
pen --in "$f" --export "design-previews/${name}.png" --export-scale 2
done
- name: 上传设计预览 artifact
uses: actions/upload-artifact@v4
with:
name: design-previews
path: design-previews/
if-no-files-found: ignore
- name: 在 PR 里留言,附本次运行的预览链接
if: always()
uses: actions/github-script@v7
with:
script: |
const runUrl = `${context.serverUrl}/${context.repo.owner}/${context.repo.repo}/actions/runs/${context.runId}`;
github.rest.issues.createComment({
issue_number: context.issue.number,
owner: context.repo.owner,
repo: context.repo.repo,
body: `本次 PR 改动的 .pen 设计已渲染,预览图见[本次 workflow 运行的 Artifacts](${runUrl})。`
});
要点对照官方参数:pen --in <path> --export <path> 不加 --out 也合法(--out 仅在不使用 --export 时必填);--export-scale 2 出 2 倍图便于在小屏幕上看清细节;PEN_CLI_KEY 走 CI Key 而不是交互登录,优先于本机已存的会话令牌,这也是它能在无人值守的 runner 上工作的原因。
Script 节点:数据驱动的设计
对图表、网格、纹样这类「手搭很痛苦」的结构,用 Script 节点让代码生成图层:声明 @input 参数即可在属性面板获得可视化旋钮;把输入绑到变量(如 $primary)还能自动响应主题切换。官方示例仓库 highagency/pencil-scripts 提供现成的图表/网格/纹样脚本。
Create a script that renders a horizontal bar chart with 5 bars.
Add inputs for the bar color, gap between bars, and an array of values.与 Claude Code 生态组合
- Skills(技能):把重复流程固化成技能,如社区的
/create-design-system(五阶段设计系统)和 pencil-to-code(.pen → React 组件的规范化转换)。 - Plan Mode:大功能先规划后动手;规划阶段只读不写,方向错了一句话就能掉头。
- 设计令牌文件:让 Claude Code 维护一份
design-tokens.ts/design-tokens.css,作为设计与代码共同的单一事实源,项目演进时一处更新、两边生效。 - 版本控制兜底:代理式修改多文件时偶尔会弄坏东西——频繁 commit 给自己留检查点;.pen 的撤销/重做有限,Git 就是你的后悔药。
来源:官方 pen.dev CLI · 官方 Code on Canvas · Pencil.dev + Claude Code Workflow
避坑清单
方法论层面
操作层面
| 坑 | 规避方法 |
|---|---|
| 元素散落画布,AI 读不到 | 永远在命名的 Frame 里设计——MCP 工具按 Frame 读取数据 |
| 图层叫 "Group 47" / "Rectangle 12" | 语义化命名(如 PrimaryActionButton、NotificationBadge),名字会随 MCP 传给 AI,帮它理解意图而不只是外观 |
| 视觉之外的信息 AI 不知道 | 交互行为、断点、数据要求、无障碍要求——写进注释/说明,AI 无法推断它看不到的东西 |
| 一个巨型提示词生成全站 | 小步迭代:设计一小块 → 生成 → 审查 → 精修 → 下一块 |
| 忘保存丢工作 | 无自动保存;勤按 Cmd/Ctrl + S + 大改动前 Git 提交 |
| 撤销撤不回去 | 撤销/重做比常规设计工具受限,靠 Git 历史回滚 |
| 手改 .pen 文件改坏 | 官方明确:不要手动编辑 .pen,走编辑器或 MCP 工具 |
| Figma 图片粘贴失败 | 已知限制:复制粘贴不带图片,改用完整文件导入或单独导图 |
| 假文占位骗过了自己 | 用真实感内容评估设计,lorem ipsum 会掩盖信息层级问题 |
| 多人实时协作预期落空 | 暂无 multiplayer,用 Git 分支 + PR 评审设计 |
认知层面
- AI 产出质量 ∝ 你给的上下文质量——这是全部实践浓缩成的一句话。模糊提示 + 无上下文 = 通用模板;具体提示 + 画布/风格/仓库上下文 = 属于你产品的代码。
- pen.dev 不是 Figma 替代品(至少现在不是):功能没有 Figma 全,强项是内部工具、快速原型与设计-代码一体化场景;重协作、重高保真交付的团队仍需权衡。
- 工具迭代快:菜单位置、命令语法都可能变;掌握原理(上下文经由结构化协议流向代码代理)比记住界面更长久。
来源:Jerad Bitner · Best Practices and Pro Tips · 官方 Troubleshooting
真实案例研究
案例一:OpptyNet — 七个版本,三小时,一条对话线
Lullabot 内部的政府招标(RFP)筛选工具,全程用 pen.dev + Claude Code 对话式设计:
| 版本 | 方案 | 结论 |
|---|---|---|
| V1 | 卡片列表 + 筛选栏 + 分页 | 好看但视觉太重,扫 20–50 条太慢 |
| V2 | 密集表格 + 行内评分条 | 扫得快但太冷,「比不过她已有的表格」 |
| V3 | 邮件客户端式分栏:左列表右详情 | 定稿布局:左扫右判,无页面跳转 |
| V4–V5 | 分栏 + 深色 Hero + 统计卡片混搭 | 方向对但拥挤 |
| V6 | 按设计评审修正:统计压成单行、加筛选药丸、Ask AI 固定底部常驻 | 解决的是「目的问题」 |
| V7 | 质感打磨:评分徽章环境光、面板渐变、柔和阴影 | 信息架构不动,只换「皮肤」 |
以上图片来源:Jerad Bitner 博客
作者的三点收获:① 方法论先于像素——缺筛选器这种坑,七轮像素迭代也发现不了;② 对话式迭代快得惊人——「统计压成一行」一句话就是一轮;③ 设计与代码同环境,从一开始就共享上下文。
案例二:Upstraker — 库复用的复利
第二个内部工具直接导入第一个项目沉淀的 Lullabot 设计库(56 色彩变量 + 16 组件),概念成型明显更快;亮暗双主题同出于一套库令牌。设计库的价值在第二个项目开始兑现,并随项目数量复利增长。
图片来源:Jerad Bitner 博客
案例三:多人并行改同一设计——这套流程在这里会更慢
前两个案例都是「一个人 + 一条对话线」的场景,这也是 pen.dev + Claude Code 打法目前最擅长的形态。反过来,多人需要同时对着同一屏设计动手的场景,是它相对 Figma 更慢的地方——这不是一次具体项目翻车的复盘故事(没找到这样的公开案例),而是一条能在官方文档里找到出处、并被独立第三方评测反复印证的能力边界。
- 官方自己的定性:Troubleshooting 页原话——「没有实时协作:目前通过 Git 协作——分支并行、pull → 编辑 → commit → push → PR」。这不是「暂时的 bug」,而是架构选择:.pen 的协作模型是「分支 + PR」,不是「光标可见的多人同屏」。
- 独立评测的印证:Tao An 在复盘 pen.dev 的 Git-first 主张时写道,「there's no real-time collaboration, which is a notable gap for teams used to Figma's multiplayer editing」,并把两者的取舍概括为「Figma optimizes for designers collaborating on design. Pencil optimizes for design integrating with development」——言下之意是多人协同设计的场景,pen.dev 天然不是主场。
- 叠加效应:Xinran Ma 2026-04-19 的实测还提到一个放大因素——暂无自动保存,「it's relatively common to hit a crash」且「if it goes down mid-session, you lose work with no recovery option」。在单人场景下这只是「勤按 Cmd/Ctrl+S」的习惯问题;但换到多人并行、需要频繁交接同一文件的场景,一次意外崩溃加上前一节讨论过的「.pen 冲突官方没有给出解法」,代价会被放大。
git clone);多人同时对同一屏做设计评审式的并行微调;需要复杂点击交互原型给非技术干系人演示。来源:官方 Troubleshooting · Tao An: Design Files Don't Belong in Git. Pencil.dev Says We're All Wrong. · Xinran Ma: Exploring Pencil.dev — Walkthrough and Impressions(2026-04-19)
资源与来源索引
官方资源
| 资源 | 说明 |
|---|---|
| pencil.dev | 官网与下载 |
| docs.pencil.dev | 官方文档(安装 / AI 集成 / 设计↔代码 / CLI / .pen 格式) |
| pencil.dev/prompts | 官方提示词画廊 |
| highagency/pencil-scripts | 官方 Script 节点示例脚本库 |
| Claude Code 文档 | 安装、MCP 配置、Skills、Plan Mode |