客户端ui定位

SKILL前端设计
前端设计 未标注权限 许可证不明确
安装这个技能

定位客户端 UI 组件、按设计稿 1:1 还原、快速定位要改的 UI 代码。当用户描述一个界面效果但不知道用什么组件(「下方抽屉效果」「左右滑动切卡」「A-Z 字母索引」),问「这是什么组件/该用什么控件」,或要求按设计图还原、检查还原度、比对截图差异,或要改现有界面的圆角/颜色/间距/文案时使用。覆盖 Android Compose、Flutter、SwiftUI、Web 与小程序,可自动判定项目所属端。

一句话选型结论

按资料字段整理

客户端ui定位是前端设计类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类前端设计 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_56c01990/ui-component-locator
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

前端设计
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_56c01990仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验2026-11-06上游最后核验时间 · 数据更新 2026-11-06
正文体量10.3 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
出页面与组件

按描述生成页面结构和组件草稿。

调整样式与布局

改间距、配色与响应式布局。

生成设计说明

把设计稿整理成开发能接的说明。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在前端设计场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
客户端ui定位当前 未标注权限 未标注 未标注 未标注 有
前端设计 只读 GitHub 仓库 882.3 万 Codex、Claude、Cursor 有
Vercel 组合模式 联网访问 GitHub 仓库 385.9 万 Codex、Claude、Cursor 有
Vercel React native skills 前端 只读 GitHub 仓库 246.9 万 Codex、Claude、Cursor 有
adapt 搜索 浏览器控制 GitHub 仓库 202.7 万 Codex、Claude、Cursor 有
使用我的浏览器 浏览器控制 GitHub 仓库 184.8 万 Codex、Claude、Cursor 有

SKILL.md 全文

10.3 KB
模型实际读到的说明书原文,来自技能仓库

UI 组件定位与还原

三个流程:A 定位组件、B 1:1 还原、C 改现有 UI。

用户说 走
"这效果用什么组件""有没有现成的""这是啥组件"(配图) A
"按设计稿还原""1:1 对齐""还原度不够" B
"把那个按钮改成…""圆角小一点""这个间距不对" C

铁律

  1. 数值不能凭手感。 每个 dp/sp 必须能说出从哪来:设计稿实测(A)、比例推算(B)、M3 默认(C)。三者之外没有第四种,C 档必须注明"默认值"。详见 references/design-rules.md。
  2. 端判断错了,后面全错。 宁问一次,别猜;问完记住,同一轮不再问。
  3. 不编 API。 索引表里没有的组件,先确认存在再报。版本敏感的 API(SearchBar、CircularProgressIndicator)先确认 material3 版本。
  4. 没设计稿就没有还原,只有实现。 用户说"按设计稿还原"却拿不出图时,先要图,别用默认值假装还原。
  5. 禁止空词。 不写"更美观""更现代""有呼吸感"。要么给数值,要么不给建议。
  6. 别凭文件名猜脚本能力。 不确定支持哪些格式就跑 --help 或看源码里的常量。scan_ui.py 支持 .kt/.dart/.swift,diff_ui.py 和语言完全无关——它们不是 Android 专用的。

先定端

命中即停:

顺序 信号 动作
1 用户明说("安卓端""iOS""小程序") 直接采信
2 贴了代码 看 import,比项目文件还准
3 有项目目录 python scripts/detect_platform.py <路径>
4 都没有 问一次,给编号选项

脚本三档置信度:high 直接用、medium 说一句"按 X 处理"、low 问一句。

必须知道的坑:

  • 看到 AndroidManifest.xml 不等于 Android——Flutter/RN 项目的 android/ 是宿主壳,脚本已降权。
  • KMP 项目 Compose 代码共享,平台 API 走 expect/actual,别按纯 Android 报。
  • 中文术语「组件/页面/界面」不分端;「控件」偏 Android、「视图」偏 iOS 但都不可靠;「前端」在有些团队指 App 客户端。

各环节的端支持

环节 Compose Flutter SwiftUI Web / 小程序
判端 ✅ ✅ ✅ ✅
组件索引 ✅ ✅ ✅ 部分(12 条高频)
代码模板 compose-m3.md flutter-dart.md 无专属,靠索引表 无专属,靠索引表
UI 索引扫描 .kt .dart .swift —
截图 adb adb(Android 端) 手动 手动
量化比对 ✅ ✅ ✅ ✅

这个表是为自己看的:判完端先来对一眼,别拿 Compose 的模板去答 Flutter 项目。SwiftUI / Web 没有专属模板文件,代码靠索引表 + 当场写。


A. 定位组件

A1. 拆成意图三元组

别直接拿词去搜。先拆三件事,形态相近但意图不同的组件靠这个区分:

维度 问什么 例子
交互意图 临时操作 / 常驻对照 / 选一项 ModalBottomSheet(看完就关)vs BottomSheetScaffold(边看边操作)
视觉形态 从哪出、占多少屏、有无遮罩 抽屉 / 面板 / 弹窗 / 内联
触发方式 点击 / 长按 / 滑动 / 滚动 手势组件 vs 状态驱动

A2. 检索

grep -n -i -E "抽屉|弹出" references/intent-index.md

搜碎片,不搜整句:把用户原话拆成「动词 + 名词」各搜一次。两次搜不到就是该端无内置 → 转 references/compose-m3.md 的手搓方案,给最小骨架,别硬套。

A3. 回答格式(五段,缺一不可)

组件:ModalBottomSheet(Compose Material3)
理由:底部滑出 + 遮罩 + 临时选择的标准解,自带拖拽关闭

[能编译的最小代码]

坑:
- 要半截高度必须 skipPartiallyExpanded = false
- 关闭带滑出动画要 sheetState.hide()

备选:需要常驻、可与主界面同时操作 → BottomSheetScaffold

代码模板按端选:Compose → references/compose-m3.md,Flutter → references/flutter-dart.md。SwiftUI / Web 没有专属模板,照索引表当场写。

取色取字一律走主题(Compose MaterialTheme.colorScheme,Flutter Theme.of(context).colorScheme),不硬编码 hex。尺寸间距标来源。

A4. 给图认组件

比 intent-index.md 末尾的形态识别表。拿不准就给「最可能的 + 两个相似的」,各附一句区分依据。


B. 1:1 还原

先量化,再动手。 肉眼判断"间距不对"改完还是不对。

B0. 体检(可选)

扫圆角/间距/硬编码颜色的分布,提前发现「怎么对都对不上」的根因。

# Compose
grep -rho "RoundedCornerShape([0-9]*\.dp)" --include="*.kt" . | sort | uniq -c | sort -rn
# Flutter
grep -rho "BorderRadius.circular([0-9.]*)" --include="*.dart" . | sort | uniq -c | sort -rn

注意:统计异常 ≠ 漂移。 宽 28、圆角 14 是半宽胶囊,改 12 会露直角。先逐处看用途,再决定动不动。

B1. 取基准

优先:MasterGo MCP > 设计稿原文件 > 用户贴图。

get_selection_node(projectDir, targetNodeId)      → 图层宽高/颜色/字体(真实数值)
get_variables(projectDir)                          → 设计 token
get_screenshot(projectDir, targetNodeId, scale=2)  → 落盘 PNG

拿到数值后、写代码前,先出「数值来源表」(模板见 references/design-rules.md),逐项标 A/B/C。这张表要交付给用户看。

B2. 取现状

python scripts/capture_android.py -o build/ui/current.png   # Android

打印出的设备 dp 宽直接喂下一步。其他端手动截图到同路径。截图状态必须一致:同滚动位置、同数据、无键盘、无动画中间帧。

B3. 量化

python scripts/diff_ui.py design.png build/ui/current.png -o build/ui/diff \
    --design-width 411 --device-width 411

零依赖,纯标准库解 PNG。输出全局差异、合并后的差异区域、差异点位、热力图、report.json。

判定:<2% 一致 / 2~8% 微调 / 8~20% 明显不符 / >20% 没对齐。

两轮法:粗网格(默认 24 列)抓系统性错误 → 细网格(--cols 72)抓 1~3dp 位移。粗网格块约 30-40px,小于块宽 1/3 的位移检不出来,第一轮干净不代表细节对。

B4. 归因

差异形态比数值有信息量,完整表见 references/restore-flow.md:

形态 大概原因
横向带 整体/整行位移、行内 padding
纵向条 边距、圆角、分割线
块状 元素尺寸 / 色值 / 字重
大面积色差形状不变 token 用错,或暗色模式没适配
文字块高度差几像素 lineHeight,不是 fontSize

先修系统性错误,80% 的差异来自 2~3 个系统性问题。

B5. 复测

改完重跑,看 mismatch_pct 是否收敛,目标 < 2%。


C. 改现有 UI

价值全在"快",别让用户等你去翻整个项目。

C1. 定位到行

文案是最强锚点:同一个 Button 一个文件里可能五个,但「保存」两个字通常只有一处。

python scripts/scan_ui.py &lt;项目&gt; --query &quot;保存&quot;
AddPasswordScreen.kt:50  AddPasswordScreen
  文案: 取消@76 / 保存@89 / 标题 *@111
  组件: Scaffold@71, TopAppBar@73, TextButton@76

没文案可锚就按组件类型或页面名 grep。

扫描器认 .kt / .dart / .swift 和 res/layout 下的 xml。Flutter 认 extends StatelessWidget|StatefulWidget,State 类的内容会算进对应的 Widget。

C2. 只读那一段

拿到行号后用 offset/limit 卡上下 20~30 行。一个 Screen 动辄四五百行,整文件读既费上下文又容易看花。

C3. 查影响面(改之前必做)

grep -rn &quot;被改的组件名(&quot; --include=&quot;*.kt&quot; .      # Compose
grep -rn &quot;被改的组件名(&quot; --include=&quot;*.dart&quot; .    # Flutter

一处引用直接改;多处引用改默认参数会波及全部,改成新增可选参数。

注意把定义行本身减掉:grep 会同时命中 class TaskCard / const TaskCard({...}) 这类声明,那不是调用点。

C4. 改哪个属性

见 references/design-rules.md 的定位表:「圆角太大」→ shape =;「太灰」→ 换 colorScheme token;「太挤」→ padding/spacedBy。

C5. 交代四件事

改了 AddPasswordScreen.kt:89
  内容:Text(&quot;保存&quot;) 外层 TextButton → Button
  范围:只此一处,未被其他文件调用
  影响:在 TopAppBar 的 actions,宽度变大可能挤压标题

禁止只回一句"已经改好了"。


资源

文件 内容 何时读
references/intent-index.md 口语 → 多端组件映射(165 条)+ 形态识别表 流程 A
references/compose-m3.md Compose 参数骨架、版本坑、手搓方案 出 Compose 代码前
references/flutter-dart.md Flutter 骨架、特有坑、手搓方案 出 Flutter 代码前
references/design-rules.md 数值来源三档、正反例、改 UI 定位表 出数值 / 流程 C
references/restore-flow.md px→dp 换算、归因表、报告模板 流程 B
scripts/detect_platform.py 判端(目录 / 代码片段) A 第一步
scripts/scan_ui.py UI 索引,按文案定位到行 C1
scripts/diff_ui.py 网格色差比对 + 热力图 B3
scripts/capture_android.py adb 截图 + 设备 dp 宽 B2

常见问题

5 问
答案由本站依据条目字段整理
客户端ui定位怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_56c01990/ui-component-locator。安装方式为未标注。装完刷新技能列表或重开客户端。

客户端ui定位支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

客户端ui定位权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

客户端ui定位收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

客户端ui定位用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 2026-11-06。