@routerhub/agent-rules 1.5.84 → 1.5.85

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.
package/AGENTS.base.md CHANGED
@@ -336,6 +336,37 @@ Closes #456
336
336
  - Figma 中配置或表达的跳转、链接、页面流、弹窗、hover/click 等交互必须同步实现;原型未明确但影响流程闭环的交互,需先核对现有产品或询问用户,禁止自行脑补。
337
337
  - 交付前必须对照 Figma 做视觉和交互验收,发现无法完全还原的素材、字体、数据或平台限制时,必须明确说明差异和原因。
338
338
 
339
+ ### Figma 设计还原规范(MCP 三步验证法)
340
+
341
+ ⚠️ Figma 设计还原时,**禁止直接使用 `get_design_context` 生成的 Tailwind 代码**。`get_design_context` 的代码是大模型推导的近似值,数值(px、间距、尺寸)、布局结构(flex 方向、嵌套关系)和定位方式(absolute/flex)都可能与 Figma 真实设计不符,必须通过以下三步验证:
342
+
343
+ **第 1 步:`get_design_context` → 获取设计意图**
344
+ - 用 `get_design_context` 了解组件的整体结构、颜色、字体、视觉效果
345
+ - ⚠️ 仅用于理解设计意图,**数值和结构不可信**
346
+
347
+ **第 2 步:`get_metadata` → 获取精确坐标(唯一事实源)**
348
+ - `get_metadata` 返回的是 Figma 内部每个节点的**真实 x/y/width/height 坐标**,这是所有尺寸、间距、定位的唯一事实源
349
+ - 用 metadata 坐标反推间距:section 内子元素 y 坐标 = section 的 top padding,子元素高度 + 上边距 + 下边距 = 父级高度
350
+ - 用 metadata 验证布局结构:同级兄弟节点的 x/y 关系决定它们是横向还是纵向排列,子节点 x 坐标决定它是 flex 子元素还是 absolute 定位
351
+
352
+ **第 3 步:`get_metadata` 坐标反推规则**
353
+
354
+ | 场景 | 反推方法 |
355
+ |------|----------|
356
+ | Section 上下 padding | 子元素 y 坐标 = 上 padding;父级高度 - 子元素 y - 子元素高度 = 下 padding |
357
+ | 元素间距(gap) | 兄弟元素之间的 y 差值(纵向)或 x 差值(横向) |
358
+ | 元素是 flex 还是 absolute | 子元素 x 超出父元素左边界 → absolute;子元素在父元素范围内 → flex |
359
+ | 固定宽度还是自适应 | metadata 有明确 width 值 → 固定宽度;否则 → 自适应 |
360
+ | 元素是否有旋转/变换 | `get_design_context` 中有 `rotate`、`-translate-` 等类名 |
361
+
362
+ **常见踩坑清单:**
363
+
364
+ 1. **`get_design_context` 生成的 padding 不准** → 必须以 metadata 坐标为基准重新计算
365
+ 2. **按钮被嵌套在文字 `flex-col` 内部** → metadata 中同级 x 坐标不同、y 坐标相近 = 横向并排,不应嵌套
366
+ 3. **固定宽度容器被改成了全宽** → metadata 中有明确 width 的容器不能去掉固定宽度
367
+ 4. **装饰图片被当成 flex 子元素** → metadata 中 x 坐标超出父元素范围 = absolute 定位
368
+ 5. **`justify-between` + 全宽把元素推到极端两端** → 必须先确认 metadata 中内容行的宽度
369
+
339
370
  ## 文件约束
340
371
 
341
372
  - 不随意修改核心业务文件和 API 相关代码,不编写或修改 `README.md`。
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@routerhub/agent-rules",
3
- "version": "1.5.84",
3
+ "version": "1.5.85",
4
4
  "description": "Shared Copilot agent rules and guidelines for RouterHub projects",
5
5
  "main": "AGENTS.base.md",
6
6
  "bin": {
package/rules/frontend.md CHANGED
@@ -10,6 +10,37 @@ outputName: "frontend"
10
10
  - Figma 中配置或表达的跳转、链接、页面流、弹窗、hover/click 等交互必须同步实现;原型未明确但影响流程闭环的交互,需先核对现有产品或询问用户,禁止自行脑补。
11
11
  - 交付前必须对照 Figma 做视觉和交互验收,发现无法完全还原的素材、字体、数据或平台限制时,必须明确说明差异和原因。
12
12
 
13
+ ### Figma 设计还原规范(MCP 三步验证法)
14
+
15
+ ⚠️ Figma 设计还原时,**禁止直接使用 `get_design_context` 生成的 Tailwind 代码**。`get_design_context` 的代码是大模型推导的近似值,数值(px、间距、尺寸)、布局结构(flex 方向、嵌套关系)和定位方式(absolute/flex)都可能与 Figma 真实设计不符,必须通过以下三步验证:
16
+
17
+ **第 1 步:`get_design_context` → 获取设计意图**
18
+ - 用 `get_design_context` 了解组件的整体结构、颜色、字体、视觉效果
19
+ - ⚠️ 仅用于理解设计意图,**数值和结构不可信**
20
+
21
+ **第 2 步:`get_metadata` → 获取精确坐标(唯一事实源)**
22
+ - `get_metadata` 返回的是 Figma 内部每个节点的**真实 x/y/width/height 坐标**,这是所有尺寸、间距、定位的唯一事实源
23
+ - 用 metadata 坐标反推间距:section 内子元素 y 坐标 = section 的 top padding,子元素高度 + 上边距 + 下边距 = 父级高度
24
+ - 用 metadata 验证布局结构:同级兄弟节点的 x/y 关系决定它们是横向还是纵向排列,子节点 x 坐标决定它是 flex 子元素还是 absolute 定位
25
+
26
+ **第 3 步:`get_metadata` 坐标反推规则**
27
+
28
+ | 场景 | 反推方法 |
29
+ |------|----------|
30
+ | Section 上下 padding | 子元素 y 坐标 = 上 padding;父级高度 - 子元素 y - 子元素高度 = 下 padding |
31
+ | 元素间距(gap) | 兄弟元素之间的 y 差值(纵向)或 x 差值(横向) |
32
+ | 元素是 flex 还是 absolute | 子元素 x 超出父元素左边界 → absolute;子元素在父元素范围内 → flex |
33
+ | 固定宽度还是自适应 | metadata 有明确 width 值 → 固定宽度;否则 → 自适应 |
34
+ | 元素是否有旋转/变换 | `get_design_context` 中有 `rotate`、`-translate-` 等类名 |
35
+
36
+ **常见踩坑清单:**
37
+
38
+ 1. **`get_design_context` 生成的 padding 不准** → 必须以 metadata 坐标为基准重新计算
39
+ 2. **按钮被嵌套在文字 `flex-col` 内部** → metadata 中同级 x 坐标不同、y 坐标相近 = 横向并排,不应嵌套
40
+ 3. **固定宽度容器被改成了全宽** → metadata 中有明确 width 的容器不能去掉固定宽度
41
+ 4. **装饰图片被当成 flex 子元素** → metadata 中 x 坐标超出父元素范围 = absolute 定位
42
+ 5. **`justify-between` + 全宽把元素推到极端两端** → 必须先确认 metadata 中内容行的宽度
43
+
13
44
  ## 文件约束
14
45
 
15
46
  - 不随意修改核心业务文件和 API 相关代码,不编写或修改 `README.md`。