mta-mcp 3.16.3 → 3.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -8,7 +8,7 @@ user-invocable: true
8
8
  # Flutter 开发代理
9
9
 
10
10
  > 此 Agent 引导 AI 通过 MCP 工具获取 Flutter / Dart 开发规范、设计还原流程与故障排查方案
11
- > 版本: v5.0.0 | 最后更新: 2026-03-19
11
+ > 版本: v5.1.0 | 最后更新: 2026-03-20
12
12
 
13
13
  > 说明:这是供复制到项目 `.github/agents/` 或通过 `npm:mta-mcp/agents/flutter.agent.md` 引用的发布型 Agent,引导获取规范与流程入口,而不是本仓库 `.github/agents/` 下的 live 维护 Agent。
14
14
 
@@ -29,6 +29,22 @@ user-invocable: true
29
29
 
30
30
  ---
31
31
 
32
+ ## 🎨 设计稿还原直接路由
33
+
34
+ 当用户请求包含以下任一意图时,直接按设计稿还原流程处理,不要先退化成普通 UI 实现:
35
+
36
+ - `设计稿`、`Sketch`、`还原`、`测量`
37
+ - `UI还原`、`界面还原`、`spacing`、`对齐`
38
+ - `图标不对`、`结构漂移`、`像素级`、`视觉不一致`
39
+
40
+ 默认动作:
41
+
42
+ 1. 先确认目标文件、目标页面和 Sketch 选区或测量结果
43
+ 2. 首轮优先走 `compact` 测量,不要先凭截图或语义猜布局
44
+ 3. 如果用户只给截图、没有 Sketch 选区或测量结果,明确说明需要先测量,不能直接承诺精准还原
45
+
46
+ ---
47
+
32
48
  ## 🔴 问题诊断优先
33
49
 
34
50
  当用户描述任何问题时,必须先走诊断流程,而不是直接猜修复方案:
@@ -100,17 +116,48 @@ Flutter 设计稿还原必须遵循 measure-first 流程,禁止直接凭截图
100
116
  1. 先确认目标文件、目标页面、Sketch 选区或测量结果
101
117
  2. 调用 mcp_mta_mta({ skill: "sketch_measure", params: { cmd: "compact" } })
102
118
  3. 将返回脚本传给 mcp_sketch_run_code 执行
103
- 4. 先按 restorationContract 还原页面骨架和文案
104
- 5. 再消费 flutter* / layoutIntent / siblingGaps / relativePosition
119
+ 4. 首轮先读 restorationContract.pageTitle / blockOrder / bodyCopyLedger / navCopyLedger / hardRules
120
+ 5. 先按 restorationContract 还原页面骨架和文案,再消费 flutter* / layoutIntent / siblingGaps / relativePosition
105
121
  6. compact 不够解释局部样式时,再补 measure / style
106
122
  ```
107
123
 
124
+ 补充执行细节:
125
+
126
+ - 不要手动拼接 `_SKETCH_CMD` 或回退到旧测量脚本,Sketch 入口以 `sketch_measure` 返回结果为准
127
+ - `bodyCopyLedger` / `navCopyLedger` 默认视为文案真值,禁止直接换成现有页面标题、业务分组名或路由文案
128
+ - 如果通用页面壳会自动带出多余 section、标题或 CTA,优先做贴合设计稿的局部实现,不要为了复用把结构带偏
129
+
130
+ ### 详细规范补加载顺序
131
+
132
+ - 设计稿还原首轮:`get_standard_by_id({ id: 'design-restoration' })` + `get_standard_by_id({ id: 'sketch-mcp' })`
133
+ - 图标尺寸、位图复用、对齐异常:再补 `get_standard_by_id({ id: 'sketch-pitfalls' })`
134
+ - 跨端语法映射或代码落地不稳:再补 `get_standard_by_id({ id: 'syntax-mapping' })`
135
+
136
+ ### 首轮硬边界
137
+
138
+ - `restorationContract` 优先于现有页面标题、业务分组、路由文案和常见 CTA 习惯
139
+ - 如果存在 `topPrimaryEntry`,禁止擅自迁移成底部固定按钮
140
+ - 如果 `bottomNavigation.present=true` 且 contract 未声明额外 bottom CTA,禁止再叠加一层底部固定操作条
141
+ - 搜索框、输入框、选择器、Tab、提交按钮必须至少具备最小可用交互,不能只还原成静态容器
142
+ - 图标和顶部入口先搜项目现有素材目录,再决定是否新增资产;`@2x/@3x/@4x` 只是倍率后缀,不是主体语义
143
+ - Sketch 测得是 `Image` 时,必须按位图处理,禁止伪造为 SVG
144
+ - `Image` 类型的 help/customer-service/support/button/arrow 入口,优先按设计稿图层名主体查找现有 PNG,不要先做语义联想或 canonical 合并
145
+ - `Help Button`、`Customer Service Button`、`Customer Service Icon` 不能只因为位置相近就复用成同一语义资源
146
+ - 如果 `bitmapLookupCandidates` 与现有素材都未命中,必须明确说明“设计资产未确认”,不要回退到语义相近资源
147
+ - 顶部关键位图入口落地时,必须明确写出测得块名和最终采用的 assetPath;未确认前禁止继续猜图标
148
+ - 如果测量结果给出 `iconContentBounds.containerSize` 与 `contentSize`,必须分离占位尺寸与图形渲染尺寸,不能直接用 `Group frame` 作为图标尺寸
149
+ - 如果存在 `siblingIconAlignment.maxSlotSize`,同行 Icon 先统一槽位,再在槽位内居中实际图形尺寸,避免文字错位
150
+ - 如果 `iconSvgMeta.colorStrategy=preserve`,或 SVG 含多色/透明度/渐变路径,禁止再加 `ColorFilter`
151
+ - 带 `<filter>`、整按钮阴影或页面级 transform 的 SVG,不要直接当普通 `SvgPicture.asset` 贴上去;优先还原容器,再单独处理箭头/路径
152
+
108
153
  ### 高频硬边界
109
154
 
110
- - 先搜项目现有素材目录,再决定是否新增资产
155
+ - 先按设计稿块名主体搜现有素材,关键位图入口不做语义猜测
111
156
  - Sketch 测得是 `Image` 时,禁止伪造为 SVG
112
- - `restorationContract` 优先于现有页面标题、分组和 CTA 习惯
157
+ - `restorationContract` 与 copy ledgers 优先于现有页面标题、分组和 CTA 习惯
113
158
  - 顶部入口不能擅自迁移成底部固定按钮
159
+ - Icon 必须区分槽位尺寸与图形尺寸;同行 Icon 要统一槽位
160
+ - preserve SVG 禁止二次染色
114
161
  - 搜索框、输入框、选择器、Tab、提交按钮必须至少具备最小可用交互
115
162
  - 设计资产未确认时必须停止说明,不能靠语义猜图标
116
163
 
@@ -120,6 +167,8 @@ Flutter 设计稿还原必须遵循 measure-first 流程,禁止直接凭截图
120
167
  - 结构与业务语义冲突:`get_standard_by_id({ id: 'design-restoration' })`
121
168
  - 测量字段与 Flutter 映射:`get_standard_by_id({ id: 'sketch-mcp' })`
122
169
  - 跨端语法转换:`get_standard_by_id({ id: 'syntax-mapping' })`
170
+ - 位图入口、旧资源复用或 help/customer-service 语义混用:`get_standard_by_id({ id: 'sketch-pitfalls' })`
171
+ - preserve SVG 被二次染色、viewBox 偏移或多色图标异常:先 `troubleshoot`,再补 `get_standard_by_id({ id: 'sketch-pitfalls' })`
123
172
 
124
173
  ---
125
174
 
@@ -134,6 +183,8 @@ Flutter 设计稿还原必须遵循 measure-first 流程,禁止直接凭截图
134
183
  - ✅ 复杂问题先诊断,再改代码
135
184
  - ✅ 设计稿还原先服从 `restorationContract`
136
185
  - ✅ 优先复用现有资产与项目模式
186
+ - ✅ 关键位图入口先给出测得块名与 assetPath,再决定是否继续还原
187
+ - ✅ 高交互控件至少补最小可用行为,即使先用本地状态或占位数据
137
188
 
138
189
  ### 禁止
139
190
 
@@ -142,6 +193,8 @@ Flutter 设计稿还原必须遵循 measure-first 流程,禁止直接凭截图
142
193
  - ❌ 用 `Group frame` 直接当作 Icon 渲染尺寸
143
194
  - ❌ 用现有业务语义覆盖设计稿骨架
144
195
  - ❌ 对复杂状态仍然直接堆 `setState`
196
+ - ❌ 把 help/customer-service/support 这类 `Image` 入口替换成语义相近但来源不明的旧位图
197
+ - ❌ 对 preserve SVG 再套统一 `ColorFilter`
145
198
 
146
199
  ### Token 快捷方式
147
200