pencil-to-code

🎨 设计稿秒转 React 生产代码

基于 MCP 协议的纯文档型设计转码工具,可将 Pencil .pen 文件精准转换为 React/Tailwind 生产代码,消除设计与开发鸿沟。

收藏
3k
安装
897
版本
v0.1.0
CLS 安全扫描中
预计需要 3 分钟...

使用说明

核心用法

pencil-to-code 是一个专注于设计到代码转换的专用技能,核心功能是将 Pencil 设计工具生成的 .pen 文件转换为生产级的 React/Tailwind 代码。用户只需提供 Frame ID 或文件路径,技能便会通过 MCP (Model Context Protocol) 协议调用 mcp__pencil__batch_get 等工具读取设计结构,提取设计变量(Design Tokens),并按照预设的映射规则将 .pen 节点转换为对应的 React 组件。整个过程涵盖六个明确阶段:读取设计结构、提取设计令牌、节点映射、代码生成、可选的截图验证以及最终输出。支持 React(默认)、Vue 和 HTML 多种目标框架,输出包含完整的 TypeScript 组件代码和 Tailwind 主题配置。

显著优点

该技能的最大优势在于其"单一职责"的设计理念,专注于导出功能而不修改设计,确保转换过程纯粹且可预测。它实现了设计系统到代码的精准映射,特别是将 .pen 变量自动提取为 Tailwind 4 的 @theme 配置,保持设计令牌的一致性。转换规则遵循严格的 8-point 网格系统,自动将间距、字体大小等映射为标准的 Tailwind 类名(如 p-4、text-2xl)。生成的代码具备生产级质量,采用语义化 HTML 标签、TypeScript 类型定义,并包含可访问性属性(ARIA)。此外,技能提供详细的节点映射参考文档和翻译规则表,使转换过程透明可控。

潜在缺点或局限性

作为 T3 来源的个人开发者项目,其长期维护性和社区支持相对有限。技能严重依赖 MCP Pencil 工具的可用性和版本兼容性,若 MCP 服务器更新可能导致功能中断。转换质量高度依赖于输入的 .pen 文件结构规范性,复杂的设计系统或非常规布局可能无法完美转换。目前仅支持特定框架(React/Vue/HTML),对其他技术栈(如 Svelte、Angular)支持不足。生成的代码虽可直接使用,但在复杂交互逻辑、状态管理等方面仍需开发者手动补充,无法完全替代人工编码。

适合的目标群体

该技能最适合前端开发者与设计师协作的场景,特别是使用 Pencil 进行设计并采用 React/Tailwind 技术栈的团队。适用于需要快速将设计原型转换为可运行代码的敏捷开发流程、设计系统初始化搭建、以及需要保持设计令牌一致性的中后台系统开发。对于希望减少设计与开发之间沟通成本、提升交付效率的初创团队和产品部门尤为适用。不适合对代码生成质量有极高要求且不愿人工复核的企业级核心系统,或完全不了解 Pencil 设计工具的用户。

使用风险

主要风险在于对 MCP 生态系统的依赖,需确保 MCP Pencil 工具来源可信且版本稳定。由于技能本身为纯文档型资产,实际执行依赖外部工具,存在工具链断裂风险。输入的 .pen 文件若来自不可信来源,可能包含恶意设计结构(虽然转换为代码后风险较低,但仍建议审查)。生成代码的性能和可维护性取决于原设计文件的复杂度,过度复杂的设计可能导致生成臃肿的组件。此外,作为个人维护项目,存在更新滞后或停止维护的潜在风险,建议企业用户在使用前进行充分测试并考虑 fork 维护。

安全解读

核心用法

Pencil-to-Code 是一款专注于设计到代码转换的单一用途 Skill,核心功能是将 .pen 格式的 Pencil 设计文件导出为可直接投入生产的 React/Tailwind 代码。

使用流程
1. 输入设计:通过 Frame ID 或文件路径指定要导出的 .pen 设计

2. 提取结构:调用 mcp__pencil__batch_get 读取完整的设计树结构,包括节点层级、布局信息和变量

3. 设计令牌转换:将 .pen 中的颜色、字体、间距等变量映射为 Tailwind 4 的 @theme CSS 自定义属性

4. 节点映射:按规则将设计节点转换为 React 组件——Frame 映射为 div 或组件容器,Text 映射为语义化 HTML 标签,Image 映射为 img 或 CSS 背景

5. 代码生成:输出 TypeScript React 组件(含 cn 工具函数整合 Tailwind 类名)和 Tailwind 配置文件

6. 可选验证:通过截图对比确保设计还原度

关键转换规则

  • 布局:verticalflex flex-colhorizontalflex flex-row
  • 间距:遵循 8pt 网格系统,[16,24,16,24]py-4 px-6
  • 字体:fontSize: 24text-2xlfontWeight: 700font-bold
  • 圆角:[8,8,8,8]rounded-lg[9999...]rounded-full

显著优点

1. 单一职责,专注可靠:明确限定为"导出代码",不做设计修改,避免功能蔓延
2. 生产级输出:生成 TypeScript + Tailwind 现代技术栈代码,含 props 接口定义和语义化 HTML

3. 设计系统一致性:自动提取 .pen 变量生成 Tailwind 主题配置,确保设计与代码令牌同步

4. MCP 工具链集成:与 mcp__pencil__* 工具深度整合,可读取设计结构、获取截图验证

5. 开发者体验友好:清晰的映射规则表、可预测的类名生成、支持组件名自定义

潜在缺点与局限性

1. 框架支持有限:默认仅支持 React,Vue/HTML 为可选目标,Svelte/Angular 等框架未覆盖
2. Tailwind 版本锁定:针对 Tailwind 4 的 @theme 系统优化,旧版本兼容性需手动调整

3. 复杂交互缺失:仅转换静态视觉结构,动画、状态管理、事件处理需人工补充

4. 设计约束依赖:要求设计遵循 8pt 网格和规范的自动布局,手工绝对定位可能映射不佳

5. 引用文档待完善references/node-mapping.md 等引用文件存在路径问题,实际使用中可能缺失

适合人群

  • 前端开发者:需要将设计师交付的 Pencil 文件快速转为可维护代码
  • 独立开发者/全栈工程师:无专业设计协作流程,需自助完成设计到实现
  • 设计系统维护者:需保持设计令牌与代码令牌双向同步的团队
  • 原型验证场景:快速将高保真设计稿转为可交互原型代码

常规风险

| 风险类型 | 等级 | 说明 |
|---------|------|------|
| 运行时安全 | 极低 | 纯 Markdown 文档,无可执行代码,无代码注入风险 |
| 依赖安全 | 无 | 不引入第三方 npm 依赖,代码生成结果由用户自主控制 |
| 数据隐私 | 无 | 不收集用户数据,MCP 工具调用仅限于本地设计文件读取 |
| 输出质量 | 中 | 自动生成的代码可能需要人工调整响应式布局、可访问性属性(ARIA)和性能优化 |
| 维护性 | 低 | 技能引用文件路径存在编码问题(`\n` 转义),长期维护需修复 |

建议:生成的代码建议通过 ESLint/Tailwind CSS 插件校验,复杂组件补充单元测试,生产部署前进行可访问性审计(a11y)。

pencil-to-code 内容

references文件夹
手动下载zip · 5.1 kB
node-mapping.mdtext/markdown
请选择文件