SuperAPI AI 工具集

ui-kit-from-code

设计与创作

查看项目

更新于 10-16 02:41

技能介绍

用途

ui-kit-from-code 用于把项目现有的设计系统(颜色 token、尺寸阶梯、组件)从代码或运行中的网站 URL 提取出来,生成一个独立的 HTML 参考页,供设计师、开发者或 agent 像使用 Figma UI kit 一样查阅和复用。触发场景包括“把它拆成 UI kit”“用 HTML 做 Figma UI kit”“设计系统参考页”“可复用的组件画廊”。常见于项目已有稳定 token 和组件、但还没有页面把它们汇总起来的时候。

非目标:不创作新系统或调整审美;不克隆整页用于运行;不导出真正的 Figma 文件、Storybook 或 npm 包;不修改项目的组件代码。

主要能力

  • 从 token 源(TS/CSS/Tailwind/Compose 等)运行出 JSON token,转成 CSS 变量 --<ns>-<role> 和 --k。
  • 读取代码中的组件尺寸、变体、名称,生成只依赖变量的 .<ns>-* 类。
  • 对运行中的网站 URL 执行 discover.mjs:同源链接 BFS、滚动内部容器、点击展开 accordion/tab/details、按类型+样式+子形状生成签名去重,并通过 CDP CSS.forcePseudoState 强制 HOVER/ACTIVE/FOCUS-VISIBLE 状态,通过 aria-pressed/selected/current、data-state、class is-active 合并 SELECTED 变体。
  • 产出 inventory.json、crops/*.png 和整页截图。
  • 生成 ui-kit.html,包含 7 个必需部分:粘性控制栏、侧边目录、Intro、基础(颜色/字体/形状/布局尺寸)、组件、示例屏幕、脚本。
  • 通过 --coverage 检查每个 pattern 是否有 data-sig 或 ui-kit-skip,状态是否有 data-sig-state,要求 100% 覆盖。
  • 用 Playwright 验证:0 个 JS 错误、390px 下 scrollWidth - innerWidth = 0、亮色/暗色/示例屏幕截图。
  • 可将通过验证的 kit 同步到 PRIVATE 仓库 Rheinmir/ui-kits(W09),生成 <id>/vN/index.html、manifest.json 和 registry.json 记录。

使用方式

输入需要:token 源(生成颜色、字体、形状、尺寸的文件或函数)、组件清单(类型名 + 分组)、目标平台(mobile/desktop/两者及真实框尺寸)。输出为 docs/ui-kit.html(或用户指定路径)、来源报告、Playwright 证据,以及可选的私有仓库版本。

主要流程:W01 判断 token 源和组件清单;W01b 用 NODE_PATH=$(npm root -g) node references/discover.mjs <url> --out <scratch>/disc --pages 32 --saturate 4 做发现;W01c 人工查看截图并归类 pattern;W02 写临时测试/脚本 dump token JSON 后删除;W03 精简为 ROLES + PALETTES 嵌入模板;W04 编写基础与组件部分;W05 拼接示例屏幕;W05b 运行 node references/discover.mjs --coverage <scratch>/disc/inventory.json <kit.html>;W06 用 Playwright 验证;W07 人工检查截图;W08 汇报;W09 用 python3 references/sync-kit.py <kit.html> --source <目录|URL> 同步。

适用场景

  • 项目已有 token 和组件,但缺少统一的设计系统参考页。
  • 需要从运行中的网站提取设计系统,且网站允许爬取。
  • 需要生成可离线打开、自包含的 HTML 参考页。
  • 需要把 kit 同步到私有仓库做版本管理。

限制

  • 找不到 token 源(颜色硬编码分散在组件中)时只能做部分提取,需注明“无 token 源,颜色从组件推断”。
  • 网站禁止爬虫(robots.txt 或条款禁止自动采集)时,discover.mjs 会停止并返回 rc 3,不能自动添加 --i-have-permission,需用户确认有许可,或改用 B05 让用户自行保存页面。
  • 来源是他人网站时,不得嵌入其图片、logo、wordmark SVG 或受版权保护内容,需用占位块注明。
  • 仅同步通过验证的 kit,且只能同步到 PRIVATE 仓库;版本只增不覆盖。
  • 状态依赖 JS 时可能漏测;页面很重时需要提高 --page-timeout。
  • 发现达到页面预算上限且仍有新 pattern 时,需告知用户增加 --pages 或收窄 --include。
  • 项目只有单一平台时,示例屏幕部分只包含该平台并注明原因。
  • Playwright 报 JS 错误或横向溢出,修复 3 轮后仍失败则停止并报告剩余错误。
  • 同步失败(网络、权限、仓库非 PRIVATE)时脚本输出“未同步,原因…”并返回 rc 0,本地 kit 仍有效。