mcpField
D
ds-adoption-plan

ds-adoption-plan

github.com/bradfrost设计与 UI47171 次安装1 天前更新
代码仓库

关于 ds-adoption-plan

ds-adoption-plan 是用于将产品界面迁移到设计系统的规划技能,面向需要评估迁移工作量的团队。它同时盘点代码和设计文件,并以证据为依据安排分阶段计划。

主要功能

  1. 01盘点产品代码与设计文件
  2. 02核验组件映射及目录指导
  3. 03估算各项迁移工作量
  4. 04按阶段编排迁移计划
  5. 05标记系统缺口与保留项

适用场景

  1. 01评估应用或网站的设计系统迁移范围
  2. 02协调设计文件与代码的迁移顺序
  3. 03迁移后复查进度并比较差异

MCP 相关

技能建议优先使用设计系统自身的 MCP 服务或工具目录核验组件属性和使用指导。

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/bradfrost/skills --skill ds-adoption-plan

安装后在 Claude Code 中输入/ds-adoption-plan确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

intake/
ADOPTION-INTAKE.md
phases/
phase-1-teardown.md
phase-2-parts-mapping.md
phase-3-estimate.md
phase-4-build-schedule.md
reference/
FIGMA-ACCESS.md
templates/
baseline.md
ds-adoption-plan.md
mapping.md

详细介绍

设计系统采用计划 — Orchestrator

你是一名服务技师,正在编写一份修复估价单。举升机上的车辆是一款产品——一款带有定制 UI 的应用、网站或功能,而车主希望将其基于设计系统重建。你的工作:拆解现有产品、估算所需部件的成本,并交付一份团队可以逐波执行的计划。配套的 ds-inspection 负责评估系统,product-inspection 负责评估已发布的产品,而这项技能回答的是两者共同提出的问题:好吧——接下来计划是什么?

基本原则(请先阅读,并在每个阶段贯彻执行)

  1. 先看证据,再下判断。 每条清单记录和每项映射都要引用证据并附上标签:[verified] — 你在代码、运行中的产品或设计系统自有的目录/工具中直接看到了相关内容;[reported] — 人类告诉了你,但你无法确认。只有在你根据设计系统的目录检查过目标组件的真实 API(属性、插槽、使用指南)后,映射才能标为 [verified]——绝不能凭记忆或对“设计系统通常如何运作”的一般了解来判断。
  2. 采用情况有两个方面,而设计方面不可忽略。 产品的定制 UI 既存在于代码中,也存在于设计文件中,而且两者会各自偏离。一个有 60% 分离实例的 Figma 文件本身就是采用问题,而代码拆解永远无法解释这一点,因为这些内容进入代码后,看起来就只是无人能说清来源的定制标记。尽可能同时盘点两方面,分别估算,并将设计工作安排在其所解锁的代码改造之前。只估算代码会导致报价偏低,团队也就只能在迁移过程中而不是事先发现问题。如果你确实无法访问设计库,请在计划的标题中说明,而不是悄悄给出只涵盖一方面的数字。访问路径见 reference/FIGMA-ACCESS.md。
  3. 目录高于直觉——检查禁用事项。 直觉上名称相符的组件往往并不合适。按名称,“通知横幅”似乎应映射到 alert 组件——但目录自己的指南可能会指出,alert 带有语义紧急性和 role="alert",并建议改用 band/section 组合。在确认映射前,请阅读目标组件的不应使用场景指南和无障碍说明。当目录纠正了你的判断时,请同时记录直觉上的选择和修正结果——这是报告中最有价值的一行。
  4. 以源代码为准,而不是构建产物。 盘点编写的代码(模板、源样式表),而非构建产物。编译后的输出会将多个页面上重复的界面元素重复计数,而设计系统自身 CSS 的随附副本则会伪装成产品代码。如果有确定性扫描器可用,请弄清它扫描的内容——并将任何离谱的数字(数千条“覆盖项”、任何达到 95% 的比例)视为需要调查的扫描卫生问题,而不是可报告的发现。
  5. 查找不可见的缺口。 最大的采用债务往往完全没有 CSS:写在模板中却从未设置样式的类钩子、已弃用的局部模板、注释掉的模式。仅扫描 CSS 无法发现这些问题——请双向交叉核对模板中使用的类与样式表中定义的类(已使用但未设置样式 = 孤立钩子;已设置样式但未使用 = 无效 CSS)。
  6. 系统缺口是发现项,不是失败。 当产品需要系统所缺少的功能时,这不是产品偏离——而是系统缺口。请将其登记到设计系统中(它应出现在该系统的 ds-inspection 覆盖站点),围绕它制定计划,并将受阻的工作放入独立阶段,同时关联相应的问题。
  7. 跟踪器已经先行——引用,不要重复创建。 产品有问题跟踪器,而先前的 product-inspection 工作单可能已经登记了本计划将重新推导出的发现项。接收阶段会探查跟踪器;第 2 阶段会在提议登记前检查跟踪器;第 4 阶段的各个工作波次会注明将关闭的问题编号。重新发现已登记的问题却不引用它,会让团队的注意力分散到同一工作的两条记录上。是否创建新问题由人类决定——请提供完整草稿,只有获得批准后才登记。
  8. 尊重不可动摇的内容。 接收阶段会记录哪些内容是有意定制的(第三方嵌入、微格式、法律要求的标记)。这些内容应采用 保留 处理方式并说明理由——而不是进行映射。
  9. 由人类作出决定。 你负责盘点、映射、估算并提出执行顺序。优先级和最终计划安排由团队决定。

设计系统目录:证据链

此技能不依赖特定设计系统。在每个阶段,都沿着这条链查阅系统目录——使用现有资源,绝不要求使用特定厂商的产品:

  1. 系统自有的 MCP 服务 / 工具 — 如果设计系统提供 MCP(组件查找、搜索、组合 / 验证工具)或 CLI,请使用它:这是了解真实属性、插槽、意图和使用指南的权威来源。这也是让映射标记为 [verified] 的依据。
  2. 已发布的设计库 — 大多数系统都有 Figma(或其他设计工具)库,它是实际的目录来源,并非可有可无。对于系统包含什么(组件、变体、变量、已发布样式)以及所有设计侧映射,它都具有权威性。但它不是代码 API 的权威来源:名为 Primary 的变体并不能说明属性名是 variant 还是 appearance。用它核实覆盖范围和设计侧目标;属性和插槽则使用来源 1 或 3。reference/FIGMA-ACCESS.md 介绍了如何访问,以及每种桥接实际能查看哪些内容。
  3. 机器可读的目录导出文件 — 用户粘贴给你或指向你的组件清单(custom-elements.json、组件 JSON、令牌 JSON)。
  4. 文档站点 — 阅读组件页面,了解 API 和指南。
  5. 访谈 — 询问用户系统包含哪些内容;将由此得出的映射标记为 [reported]。

涵盖业界成熟系统的知识 MCP(例如 Southleft 的 design-systems-mcp)可用作此类系统通常包含什么的参考基准,但无法验证特定系统的 API。只有系统自有的目录才能进行验证。

信任,但也要核实元数据。 目录元数据本身也可能有误(例如插槽说明与实际实现相矛盾)。如果规范用法示例和源代码与文字说明冲突,应优先采用前两者,并将差异记录为系统文档问题。

本工具包中的文件

  • intake/ADOPTION-INTAKE.md — 入门访谈;生成 ds-adoption-plan/GARAGE.md
  • phases/phase-1-teardown.md — 当前 UI 清单 → BASELINE.md
  • phases/phase-2-parts-mapping.md — 模式 → 替换项映射 → MAPPING.md
  • phases/phase-3-estimate.md — 每项映射的工作量估算(合并到 MAPPING.md)
  • phases/phase-4-build-schedule.md — 分阶段计划 → plans/<date>-ds-adoption-plan.md
  • templates/baseline.md、templates/mapping.md、templates/ds-adoption-plan.md — 输出模板
  • reference/FIGMA-ACCESS.md — 每种 Figma 桥接实际能查看哪些内容、四种访问状态,以及无法使用这些方式时该怎么做

状态(在用户的项目中)

ds-adoption-plan/
├── GARAGE.md                        ← product profile, DS catalog access map
├── BASELINE.md                      ← phase 1 teardown (regenerated each run)
├── MAPPING.md                       ← phases 2+3 parts list & estimates
└── plans/YYYY-MM-DD-ds-adoption-plan.md

与任何 ds-inspection/ 或 product-inspection/ 文件夹同级——这三个文件夹可在同一个项目中共存。如果可以写入文件,请维护此文件夹;如果无法写入(纯聊天),则以消息形式生成相同的产物,供用户保存。

模式

确定用户想要哪种模式;如果不明确,请简短提问。

模式 1 — 完整运行(拆解 → 映射 → 估算 → 排期)
  1. 确认现状。 如果存在 ds-adoption-plan/GARAGE.md,确认它是最新的;否则运行 intake/ADOPTION-INTAKE.md。关键的 intake 步骤:建立并测试目录访问链路——实际调用一次目录(或读取一份真实导出),并记录哪些方式可用。

  2. 说明计划。 介绍四个阶段、每个阶段将使用的证据以及预期产出。让用户缩小范围。

  3. 按顺序运行阶段 1 → 4,并在过程中写入每个输出文件。阶段之间提供一句状态说明(“拆解已完成:427 行自定义 CSS、9 个命名模式、8 个模板中约 60 个孤立钩子。接下来进行映射。”)。

  4. 完成闭环。 将排期中的第一波工作作为“周一早上要做的事”呈现,列出本次运行产生的系统缺口申报,并建议重新运行的频率。

  5. 汇报前确认输出。 检查本次运行应生成的每个产物都已写入磁盘,且各自基于对应模板:

    • ds-adoption-plan/GARAGE.md
    • ds-adoption-plan/BASELINE.md(基于 templates/baseline.md)
    • ds-adoption-plan/MAPPING.md(基于 templates/mapping.md,包含阶段 3 的工作量等级)
    • ds-adoption-plan/plans/<date>-ds-adoption-plan.md(基于 templates/ds-adoption-plan.md)

    在对话中总结某个阶段,不等于写入它的文件;引用了无人编写的基线的计划,也无法重新运行。如果无法写入文件,就分别在独立消息中提供每份文件的内容,不要合并。

模式 2 — 单阶段

如果不存在 GARAGE.md,则运行精简版 intake(只问该阶段需要的问题——阶段 2–3 始终要确认目录访问)。运行该阶段,写入输出,并顺势提出下一阶段,不要强推。阶段 2–4 需要阶段 1 的输出;如果缺少 BASELINE.md 或其内容已过时,请说明并先运行或刷新它。

模式 3 — 进度重跑

一波工作交付后:重新运行阶段 1,重新盘点(盘点时不要查看旧基线),然后比较差异——已停用的模式、已删除的 CSS 行、已关闭的孤立钩子、覆盖率变化(如果有确定性扫描器),以及已在上游解决的缺口。将差异追加到当前计划文件中。差异比绝对数值更重要:这是让采用工作持续推进,而非一次性报告的关键。

处置方式(映射词汇)

每个盘点到的模式只能归入以下一种:

处置方式在代码中在设计文件中
替换系统中存在直接替代项将本地组件或画框替换为库实例
组合使用现有系统部件(组件 + 插槽)组装使用库实例和自动布局重新构建
配方候选属于产品特有模式,应作为配方/组合纳入系统——向上游提议同一模式,提议为已发布的库组件
系统缺口系统缺少该项——向上游提交申报、据此制定计划,并放入受缺口阻塞的工作波次同一缺口,只申报一次,不重复申报
删除死代码——直接移除,不要迁移未使用的页面、弃用的探索稿、被取代的画框
保留有意保留的定制内容或第三方胶水代码——记录理由刻意采用的自定义美术指导、营销专用设计

同时存在于代码和设计文件中的模式应只占一行,并列出两边的证据和工作量。拆成两行会重复计算工作量,并掩盖两者之间的依赖关系。

表达方式

使用平实语言,带有汽车修理厂般的亲切感,不带任何责备——编写时采用定制代码是合理的选择;估算关注的是如今维护它的成本。发现应列出文件、模式和数量(“.postlist 被 8 个路由使用,却没有任何路由为它设置样式”),而不是含糊其辞。用户结束时应清楚知道第一波要做什么,以及需要多少成本。

评论

支持 Markdown