◂ 主题中心  全网聚合 · 2026-07-14 核对至 2026-08-17
⚡ 全网最新实践聚合 · 核对至 2026-08-17

pen.dev × Claude Code
最佳实践全景指南

pen.dev 是住进 IDE 的 AI 设计画布,Claude Code 是终端里的智能编码代理,MCP 把两者连成一条「设计上下文零损耗」的流水线。本指南聚合官方文档、社区教程、实战博客与开源技能,整理出一套可直接落地的完整打法。

9+ 来源交叉验证覆盖入门到 CI/CD附完整提示词模板
0 损耗设计上下文直达代码生成,无需截图猜测
.pen = JSON设计文件可 Git 版本化、可 diff、可合并
7 种官方支持的 AI 助手(Claude Code / Cursor / Codex…)
本地运行MCP 服务器跑在本机,设计数据不出本地
导读 00

为什么是 pen.dev + Claude Code

它解决的核心问题:设计-代码鸿沟

传统流程里,设计师在 Figma 精雕细琢,开发者对着标注重写一遍——间距差一点、字重不对、hover 态没文档,最终上线的东西「像设计稿的表亲」。这不是谁的错,而是设计与开发两套工具链、两个事实来源的结构性问题。

通用 AI 编码工具也没能根治:它们看不到你的设计系统、品牌色和间距阶梯,只能基于全网见过的模式生成「看起来还行」但不属于你产品的组件。

这对组合的答案pen.dev 把设计放进代码仓库(.pen 文件),Claude Code 通过 MCP 直接读取画布的精确坐标、令牌与结构来生成代码——不是看图猜,而是读数据。设计与代码同仓库、同上下文、同一次提交。社区把这种体验称为「vibe design」:自然语言生成 UI → Git 直接管理 → 一句话转成代码。

能力版图

角色提供什么
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

上手 01

环境搭建标准流程

综合官方文档与 DevelopersIO 实测教程,这是社区验证过的最稳妥路径(以 VS Code 为例,Cursor 同理):

  1. 安装 Claude Code 并认证:官方首推 native 安装器 curl -fsSL https://claude.ai/install.sh | bash(Windows 用 irm https://claude.ai/install.ps1 | iex);运行 claude 走浏览器登录。装不上/登不上查环境急救手册。
  2. 安装 pen.dev 扩展:VS Code 扩展面板搜索 "pen.dev",认准发布者标识 highagency.pencildev。
  3. 启动 pen.dev:点击状态栏左下角的 pen.dev 铅笔图标(不出现就重启 VS Code)。
  4. 邮箱激活:首次启动输入邮箱 → 收验证码 → 填码登录。
  5. 验证 MCP 连接:启动 Claude Code,执行 /mcp,确认 pencil 显示为 connected。MCP 配置在安装时已自动写好,无需手工配置。
  6. 创建 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"
  }
}
VS Code 状态栏中的 Pencil 图标
装好扩展后,从状态栏左下角的 Pencil 图标启动 · 图:DevelopersIO
Claude Code 中 /mcp 显示 pencil connected
Claude Code 内执行 /mcp,pencil 显示 connected 即就绪 · 图:DevelopersIO
新项目接入的推荐姿势(官方)先建 design.pen → 在 IDE 打开 → 激活 → 保持 .pen 与代码同仓库。首次可右键画布 → Open Welcome File 跟着内置练习走一遍。
三个高频坑① 一切 AI 功能的前提是 claude 已登录——大多数「连不上」都出在这;② 暂无自动保存,勤按 Cmd/Ctrl + S;③ 用 Codex 的用户注意 config.toml 可能被改动,先备份。

来源:DevelopersIO 实测教程 · 官方 Installation · 官方 Troubleshooting

上手 02

四种核心工作流

社区实践收敛出四种可复用的工作流范式,可按项目阶段自由组合:

WORKFLOW A
自然语言原型(Vibe Design)

在 Claude Code 里用几行中文/英文描述,直接生成整页设计;再到画布上手工微调。DevelopersIO 实测:旅行相册、面包店点单页、咖啡店仪表盘、社区公告板、员工门户五种页面,均达到「可直接当原型用」的质量。

描述需求 → AI 生成 .pen → 画布微调 → Git 提交
WORKFLOW B
设计 → 代码

画布定稿后,一句 "Generate a Next.js page from this design" 让 Claude Code 读取精确结构与令牌生成代码。提示词中写明技术栈(React/Vue/Tailwind/shadcn-ui…)效果最好。

画布设计 → Cmd/Ctrl+K → 指定技术栈生成 → 审查合并
WORKFLOW C
代码 → 设计

让 AI 把 src/components 里的既有组件在画布上重建("Recreate the Button component from src/components/Button.tsx"),结构、布局、样式一并导入,老项目也能补出设计稿。

读取组件源码 → 画布重建 → 视觉改进 → 回写代码
WORKFLOW D
双向同步 + Git 单一事实源

变量层打通 CSS ↔ pen.dev("Create pen.dev variables from my globals.css"),.pen 与代码一起提交、一起回滚——设计与实现之间「零漂移」。改设计的 PR 里能直接 diff 设计变更。

变量同步 → 设计/代码并行迭代 → 同一 commit 提交

Workflow A 的实测效果

DevelopersIO 用「三要素提示词」各生成一次、零手工修改的直出结果:

旅行照片个人站设计结果
旅行照片个人站(地图钉 + 瀑布流相册 + 大地色系)
面包店在线点单页设计结果
面包店点单页(轮播 + 分类菜单 + 奶油棕暖色)
咖啡店销售管理仪表盘设计结果
咖啡店经营仪表盘(销售柱图 + 排行 + 库存预警)
社区公告板设计结果
小区居民公告板(灰绿低饱和、全龄友好)
企业员工门户设计结果
企业员工门户(公告 + 打卡 + 内部链接 + 企业蓝)
在 Pencil 画布上微调 AI 生成的设计
生成的 .pen 可直接在画布上继续手工微调

以上图片来源:DevelopersIO 实测文章

给既有项目改版的完整链路(实测)

DevelopersIO 演示了对现有项目「设置页」改版的两步法:

  1. 生成设计:向 Claude Code 描述页面要求(用 pen.dev MCP 设计当前项目的 Settings 页:白色卡片表单、AI 分析设置分区、模型单选按钮、每个模型下方灰色小字说明……)——先产出 .pen 设计稿。
  2. 应用设计:确认设计后一句 请应用这个设计,AI 把设计落到项目的 CSS/组件代码上。
设计应用到既有项目设置页后的效果
「生成 .pen → 一句话应用」后,既有项目设置页的实际改版效果 · 图:DevelopersIO

来源: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、Troubleshooting 两篇文档以及两篇社区实测文章,没有任何一处给出「.pen 文件产生 Git 冲突标记后具体怎么解决」的操作步骤。以下先摆官方原话,再说清楚缺口在哪、目前能做的规避手段是什么——不把推测包装成官方结论。
  • 官方原话(乐观的一面):「可分支合并——设计跟着功能分支走,一起合并、一起回滚」(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 等三篇被本站引用的社区文章均未提及这个场景的处理办法。

在没有官方指引的情况下,以下是本文作者基于上述两条已发布规则反推出的可行规避思路,不是官方教程:

  1. 优先靠流程规避,而不是靠合并技术解决:Troubleshooting 页给的协作方式本质是「分支并行 + PR 评审」,没有说「放心并发改同一文件」。同一个 Frame/页面同一时间只给一个人改,是目前唯一被官方认可的路径。
  2. 用 imports 拆分文件,缩小冲突面:.pen 格式支持文档级 imports 字段(键为别名、值为相对路径,见 .pen 文件格式),可以把大设计拆成多个按页面/组件划分的 .pen 文件、在根文件里 import——和代码里拆模块减少合并冲突是同一个思路,只是官方文档没有把这一点明确写成「防冲突手段」,这是本文的推断用法。
  3. 真出现冲突标记,别手改 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.primarycolor(色板色块)
--color-text-secondary: #5a6272;color.text-secondarycolor
--radius-md: 12px;radius.mdnumber
--font-body: "Inter", sans-serif;font.bodystring

CSS 一侧不会有任何变化——AI 只读取 globals.css,把每条 --自定义属性 映射成 pen.dev 变量面板里的一条新记录(命名把 -- 前缀去掉、连字符按语义拆成点号分段,这是 .pen 格式变量键名惯用的 色板.用途 写法,而不是逐字保留 CSS 变量名)。画布上的元素这时还没有自动引用这些新变量——同步命令只负责「把 CSS 里已有的值搬进变量面板」,要让画布元素用上它们,得再来一句类似「所有按钮改用 $color.primary」的指令,或手动在属性面板里把硬编码值换成变量引用。反向的「Update globals.css with these pen.dev variables」同理:只搬运值,不会自动重构还在用旧硬编码值的 CSS 规则。

实战 03

实战提示词范例集

以下范例来自社区实测与官方文档,可直接改造使用。经验规律:「页面类型 + 内容清单 + 配色气质」三要素的提示词,一次成型率最高。

整页生成(三要素模板)

模板
设计一个〔页面类型/目标用户〕 〔功能与内容清单:模块 1、模块 2、模块 3……〕 〔配色与气质:色系 + 形容词〕

DevelopersIO 用该模式实测五种页面全部一次可用,例如:

范例 · 面包店点单页
为社区面包店设计一个在线点单页 今日现烤面包照片轮播、分类菜单、自提时间选择、购物车功能 奶油色与棕色的温暖设计
范例 · 经营仪表盘
为独立咖啡店设计一个销售管理仪表盘 每日销售柱状图、热门菜单排行、库存预警、今日预约列表 暖棕色系配色

设计 → 代码(指定技术栈)

组件级
Create a React component for this button Generate TypeScript types for this form Export this card as a reusable component
页面级 + 技术栈
Generate 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
找灵感官方维护了公开的提示词画廊 pencil.dev/prompts,可以直接借用社区验证过的整页提示词。

来源:DevelopersIO · 官方 Design ↔ Code · 官方 AI Integration

实战 04

设计系统工程化

单页生成只是起点;社区里最成熟的打法,是把 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 导入它,下一个新工具还导入它——第二个项目起,视觉语言就不用从零搭。
  • 他的原话概括:「有了共享设计库,你不再纠结用哪种蓝,而开始思考界面真正要做什么。」
Lullabot 设计库:色板、字体、间距与可复用组件
Lullabot 设计库:色板、字体令牌、间距阶梯与 16 个可复用组件,全部装进一个可导入的 .pen 库 · 图:Jerad Bitner
对应的 pen.dev 机制把品牌文件转成 .lib.pen 设计库(图层面板 → Libraries → Turn this file into a library),即可被任意项目导入;库内组件更新会同步到所有使用处。注意:转库操作不可逆。

来源:TobyScr / create-design-system skill · Jerad Bitner: Designing with Pencil and Claude Code · 官方 Design Libraries

实战 05

高效提示词模式

具体性法则

❌ 低效"弄好看点" / "加个表单" / "做个页面"
✅ 高效"按钮内边距加到 16px,颜色改为蓝色" / "登录表单:邮箱、密码、记住我、提交按钮" / "三要素:页面类型+内容清单+配色气质"

迭代金字塔(官方推荐节奏)

  1. 先框架 — "创建仪表盘布局"
  2. 再细化 — "加带导航项的侧边栏"
  3. 后打磨 — "导航项加 hover 态"
  4. 终收尾 — "间距对齐 8px 网格"

社区共识与此一致:抵制「一个巨型提示词生成完整应用」的诱惑。小块设计 → 生成 → 审查 → 精修 → 下一块,质量远高于一次性梭哈。

上下文注入技巧

  • 引用既有资产:"用我们现有的按钮组件"、"遵循变量里的间距阶梯"、"和 Header 组件风格保持一致"——让 AI 复用而不是重造。
  • 点名设计系统:"按 Material Design 原则"、"用 shadcn/ui 风格"、"遵循 design-system.pen 里的规范"。
  • 画布选区即上下文:在画布上选中的元素会自动进入 AI 上下文;话题切换时点 "New Agent" 清空上下文重开。
  • 要求先解释再动手:对大改动,让 AI 先说明打算怎么改,确认后再执行,配合 Claude Code 的计划模式(Plan Mode)效果更佳——计划错了一句话就能纠正,改完了才发现错,代价是几百行 diff。

验证闭环

  1. 画布上目视检查;
  2. 图层面板核对结构;
  3. 让 AI 调 get_screenshot 截图自检复杂布局;
  4. 用 get_app_state(旧版工具名 snapshot_layout)排查重叠与错位。

来源:官方 AI Integration / Best Practices · Pencil.dev + Claude Code Workflow · DEV: Claude Code Workflow Best Practices

进阶 06

高级玩法

pen.dev CLI:无头设计与批量生产

2026-07-28 编者注官方 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 单独做不到、必须靠出图来补的那一半。

下面这份 workflow 是本文作者按官方文档已核实的 CLI 参数(见《pen.dev 文档中文版 · CLI》)手工搭的示意流水线,不是官方发布的模板,用前请按自己仓库的实际情况调整。PR 评论里贴的是「本次运行的 Artifacts 链接」而不是内联图片——GitHub Actions 的 Artifact 本身不提供公开直链,要做到评论里直接嵌图,还需要额外接一个图床/对象存储步骤,这里没有替你验证过那一步,所以没有写进示例。
# .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 提供现成的图表/网格/纹样脚本。

让 AI 直接写脚本
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

进阶 07

避坑清单

方法论层面

最大的坑:先画像素,后想目的Jerad Bitner 复盘 OpptyNet 项目时的核心教训——一上来就让 AI 出 UI,产出「看着挺像回事」却是在没打地基的房子上刷漆。正确顺序:先定义目的(给谁用?成功长什么样?例如「业务同事要在 60 秒内从邮件摘要做出 go/no-go 判断」)→ 内容建模 → 设计令牌 → 然后才是像素。他发现的关键规律:缺筛选器、AI 功能被藏进标签页,这些是「目的问题」,再多视觉打磨也修不好。

操作层面

坑规避方法
元素散落画布,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

进阶 08

真实案例研究

案例一:OpptyNet — 七个版本,三小时,一条对话线

Lullabot 内部的政府招标(RFP)筛选工具,全程用 pen.dev + Claude Code 对话式设计:

版本方案结论
V1卡片列表 + 筛选栏 + 分页好看但视觉太重,扫 20–50 条太慢
V2密集表格 + 行内评分条扫得快但太冷,「比不过她已有的表格」
V3邮件客户端式分栏:左列表右详情定稿布局:左扫右判,无页面跳转
V4–V5分栏 + 深色 Hero + 统计卡片混搭方向对但拥挤
V6按设计评审修正:统计压成单行、加筛选药丸、Ask AI 固定底部常驻解决的是「目的问题」
V7质感打磨:评分徽章环境光、面板渐变、柔和阴影信息架构不动,只换「皮肤」
OpptyNet V1 卡片式列表
V1 · 卡片列表:好看,但扫描效率低
OpptyNet V3 左右分栏布局
V3 · 邮件式分栏:最终定稿的骨架
OpptyNet V6 加筛选与常驻 AI
V6 · 修「目的问题」:筛选药丸 + AI 常驻底部
OpptyNet V7 最终打磨版
V7 · 质感打磨:同样的骨架,更好的皮肤

以上图片来源:Jerad Bitner 博客

作者的三点收获:① 方法论先于像素——缺筛选器这种坑,七轮像素迭代也发现不了;② 对话式迭代快得惊人——「统计压成一行」一句话就是一轮;③ 设计与代码同环境,从一开始就共享上下文。

案例二:Upstraker — 库复用的复利

第二个内部工具直接导入第一个项目沉淀的 Lullabot 设计库(56 色彩变量 + 16 组件),概念成型明显更快;亮暗双主题同出于一套库令牌。设计库的价值在第二个项目开始兑现,并随项目数量复利增长。

Upstraker 仪表盘亮色主题
Upstraker 贡献仪表盘 · 亮色主题
Upstraker 仪表盘暗色主题
同一仪表盘 · 暗色主题,两套主题同源于库令牌

图片来源: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 冲突官方没有给出解法」,代价会被放大。
这套流程会更慢的场景高保真交付给外部客户团队(对方要的是能实时打开评论、拖拽调整的 Figma 文件,不是要跑 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)

附录 09

资源与来源索引

官方资源

资源说明
pencil.dev官网与下载
docs.pencil.dev官方文档(安装 / AI 集成 / 设计↔代码 / CLI / .pen 格式)
pencil.dev/prompts官方提示词画廊
highagency/pencil-scripts官方 Script 节点示例脚本库
Claude Code 文档安装、MCP 配置、Skills、Plan Mode

本文引用的社区实践(按主题)

主题来源
端到端工作流与 Pro TipsPencil.dev + Claude Code Workflow: From Design to Production Code in Minutes(2026-02)
安装实测 + 五页面自然语言设计DevelopersIO: Claude Code × Pencil MCP 网页设计实测(2026-03)
五阶段设计系统 SkillTobyScr: /create-design-system(2026-02)
企业内部工具实战(两项目)Jerad Bitner: Designing with Pencil and Claude Code(2026-04)
工具综述Geeky Gadgets: Turn Claude Code Into a Design Tool · Pencil.dev Design Tool: Claude Code Canvas
Vibe Design 入门daily.dev: Vibe Design with Pencil and Claude Code
.pen → React 转换 SkillMCP Market: pencil-to-code
完整评测Inverness Design Studio: Pencil.dev Review 2026 · bkamp: Pencil.dev Complete Guide
协作能力边界批评(案例三来源)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)
中文社区讨论知乎:Claude Code 加持 Pencil 的行业影响 · CSDN:pencil on claude
Claude Code 通用最佳实践DEV: Claude Code Workflow Best Practices · Medium: A Designer's Guide to Claude Code
本知识库相关主题Claude Code 使用指南 · 干货版 · Codex 使用指南 · pen.dev 官方文档中文版 · AI 提效全景与心法 · 环境与登录急救手册
一句话带走AI 生成代码的质量,正比于你喂给它的上下文质量。pen.dev × Claude Code 的本质,就是一套「把正确上下文交给 AI」的系统——画布、风格指南、变量、仓库结构,缺一不可。其余一切实践都由此推导而来。