@szc-ft/mcp-szcd-client 0.34.2 → 0.38.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.
Files changed (117) hide show
  1. package/agents/build.js +59 -1
  2. package/agents/platforms.json +7 -0
  3. package/agents/szcd-component-expert.qoder.md +2 -0
  4. package/opencode-extension/opencode.json +9 -0
  5. package/opencode-extension/skills/local-browser-test/SKILL.md +91 -0
  6. package/opencode-extension/skills/local-browser-test/config.example.yaml +51 -0
  7. package/opencode-extension/skills/local-browser-test/lib/api-call-executor.js +251 -0
  8. package/opencode-extension/skills/local-browser-test/lib/browser-engine.js +95 -21
  9. package/opencode-extension/skills/local-browser-test/lib/config-loader.js +104 -0
  10. package/opencode-extension/skills/local-browser-test/lib/console-archiver.js +100 -0
  11. package/opencode-extension/skills/local-browser-test/lib/global-setup.js +72 -0
  12. package/opencode-extension/skills/local-browser-test/lib/har-collector.js +124 -0
  13. package/opencode-extension/skills/local-browser-test/lib/html-reporter.js +248 -0
  14. package/opencode-extension/skills/local-browser-test/lib/projects.js +46 -0
  15. package/opencode-extension/skills/local-browser-test/lib/raw-script-helpers.js +93 -0
  16. package/opencode-extension/skills/local-browser-test/lib/redact.js +94 -0
  17. package/opencode-extension/skills/local-browser-test/lib/report-retain.js +84 -0
  18. package/opencode-extension/skills/local-browser-test/lib/retry-policy.js +160 -0
  19. package/opencode-extension/skills/local-browser-test/lib/storage-state.js +111 -0
  20. package/opencode-extension/skills/local-browser-test/lib/tag-runner.js +103 -0
  21. package/opencode-extension/skills/local-browser-test/lib/test-plan.js +2 -0
  22. package/opencode-extension/skills/local-browser-test/lib/trace-collector.js +94 -0
  23. package/opencode-extension/skills/local-browser-test/lib/trend-aggregator.js +97 -0
  24. package/opencode-extension/skills/local-browser-test/lib/workspace-init.js +178 -0
  25. package/opencode-extension/skills/local-browser-test/local-browser-executor.js +226 -2
  26. package/opencode-extension/skills/local-browser-test/tests/integration/pr-01.test.js +254 -0
  27. package/opencode-extension/skills/local-browser-test/tests/integration/pr-02.test.js +263 -0
  28. package/opencode-extension/skills/local-browser-test/tests/integration/pr-03.test.js +308 -0
  29. package/opencode-extension/skills/local-browser-test/tests/integration/pr-04.test.js +168 -0
  30. package/opencode-extension/skills/local-browser-test/tests/integration/pr-05.test.js +183 -0
  31. package/opencode-extension/skills/local-browser-test/tests/integration/pr-06.test.js +252 -0
  32. package/opencode-extension/skills/local-browser-test/tests/integration/pr-07.test.js +168 -0
  33. package/opencode-extension/skills/local-browser-test/tests/integration/pr-08.test.js +293 -0
  34. package/opencode-extension/skills/shadcn-design-to-code/SKILL.md +352 -0
  35. package/opencode-extension/skills/shadcn-design-to-code/examples/1.1-overview-page.tsx +382 -0
  36. package/opencode-extension/skills/shadcn-design-to-code/references/install-pitfalls.md +526 -0
  37. package/opencode-extension/skills/shadcn-design-to-code/references/layouts.md +551 -0
  38. package/opencode-extension/skills/shadcn-design-to-code/references/sketch-mapping.md +247 -0
  39. package/opencode-extension/skills/shadcn-design-to-code/references/tokens.md +534 -0
  40. package/opencode-extension/skills/szcd-upload-zip/SKILL.md +45 -0
  41. package/package.json +70 -70
  42. package/qwen-extension/qwen-extension.json +10 -1
  43. package/qwen-extension/skills/local-browser-test/SKILL.md +91 -0
  44. package/qwen-extension/skills/local-browser-test/config.example.yaml +51 -0
  45. package/qwen-extension/skills/local-browser-test/lib/api-call-executor.js +251 -0
  46. package/qwen-extension/skills/local-browser-test/lib/browser-engine.js +95 -21
  47. package/qwen-extension/skills/local-browser-test/lib/config-loader.js +104 -0
  48. package/qwen-extension/skills/local-browser-test/lib/console-archiver.js +100 -0
  49. package/qwen-extension/skills/local-browser-test/lib/global-setup.js +72 -0
  50. package/qwen-extension/skills/local-browser-test/lib/har-collector.js +124 -0
  51. package/qwen-extension/skills/local-browser-test/lib/html-reporter.js +248 -0
  52. package/qwen-extension/skills/local-browser-test/lib/projects.js +46 -0
  53. package/qwen-extension/skills/local-browser-test/lib/raw-script-helpers.js +93 -0
  54. package/qwen-extension/skills/local-browser-test/lib/redact.js +94 -0
  55. package/qwen-extension/skills/local-browser-test/lib/report-retain.js +84 -0
  56. package/qwen-extension/skills/local-browser-test/lib/retry-policy.js +160 -0
  57. package/qwen-extension/skills/local-browser-test/lib/storage-state.js +111 -0
  58. package/qwen-extension/skills/local-browser-test/lib/tag-runner.js +103 -0
  59. package/qwen-extension/skills/local-browser-test/lib/test-plan.js +2 -0
  60. package/qwen-extension/skills/local-browser-test/lib/trace-collector.js +94 -0
  61. package/qwen-extension/skills/local-browser-test/lib/trend-aggregator.js +97 -0
  62. package/qwen-extension/skills/local-browser-test/lib/workspace-init.js +178 -0
  63. package/qwen-extension/skills/local-browser-test/local-browser-executor.js +226 -2
  64. package/qwen-extension/skills/local-browser-test/tests/integration/pr-01.test.js +254 -0
  65. package/qwen-extension/skills/local-browser-test/tests/integration/pr-02.test.js +263 -0
  66. package/qwen-extension/skills/local-browser-test/tests/integration/pr-03.test.js +308 -0
  67. package/qwen-extension/skills/local-browser-test/tests/integration/pr-04.test.js +168 -0
  68. package/qwen-extension/skills/local-browser-test/tests/integration/pr-05.test.js +183 -0
  69. package/qwen-extension/skills/local-browser-test/tests/integration/pr-06.test.js +252 -0
  70. package/qwen-extension/skills/local-browser-test/tests/integration/pr-07.test.js +168 -0
  71. package/qwen-extension/skills/local-browser-test/tests/integration/pr-08.test.js +293 -0
  72. package/qwen-extension/skills/shadcn-design-to-code/SKILL.md +352 -0
  73. package/qwen-extension/skills/shadcn-design-to-code/examples/1.1-overview-page.tsx +382 -0
  74. package/qwen-extension/skills/shadcn-design-to-code/references/install-pitfalls.md +526 -0
  75. package/qwen-extension/skills/shadcn-design-to-code/references/layouts.md +551 -0
  76. package/qwen-extension/skills/shadcn-design-to-code/references/sketch-mapping.md +247 -0
  77. package/qwen-extension/skills/shadcn-design-to-code/references/tokens.md +534 -0
  78. package/qwen-extension/skills/szcd-upload-zip/SKILL.md +45 -0
  79. package/scripts/lib/common.js +8 -1
  80. package/standard-skill/local-browser-test/SKILL.md +91 -0
  81. package/standard-skill/local-browser-test/config.example.yaml +51 -0
  82. package/standard-skill/local-browser-test/lib/api-call-executor.js +251 -0
  83. package/standard-skill/local-browser-test/lib/browser-engine.js +95 -21
  84. package/standard-skill/local-browser-test/lib/config-loader.js +104 -0
  85. package/standard-skill/local-browser-test/lib/console-archiver.js +100 -0
  86. package/standard-skill/local-browser-test/lib/global-setup.js +72 -0
  87. package/standard-skill/local-browser-test/lib/har-collector.js +124 -0
  88. package/standard-skill/local-browser-test/lib/html-reporter.js +248 -0
  89. package/standard-skill/local-browser-test/lib/projects.js +46 -0
  90. package/standard-skill/local-browser-test/lib/raw-script-helpers.js +93 -0
  91. package/standard-skill/local-browser-test/lib/redact.js +94 -0
  92. package/standard-skill/local-browser-test/lib/report-retain.js +84 -0
  93. package/standard-skill/local-browser-test/lib/retry-policy.js +160 -0
  94. package/standard-skill/local-browser-test/lib/storage-state.js +111 -0
  95. package/standard-skill/local-browser-test/lib/tag-runner.js +103 -0
  96. package/standard-skill/local-browser-test/lib/test-plan.js +2 -0
  97. package/standard-skill/local-browser-test/lib/trace-collector.js +94 -0
  98. package/standard-skill/local-browser-test/lib/trend-aggregator.js +97 -0
  99. package/standard-skill/local-browser-test/lib/workspace-init.js +178 -0
  100. package/standard-skill/local-browser-test/local-browser-executor.js +226 -2
  101. package/standard-skill/local-browser-test/tests/integration/pr-01.test.js +254 -0
  102. package/standard-skill/local-browser-test/tests/integration/pr-02.test.js +263 -0
  103. package/standard-skill/local-browser-test/tests/integration/pr-03.test.js +308 -0
  104. package/standard-skill/local-browser-test/tests/integration/pr-04.test.js +168 -0
  105. package/standard-skill/local-browser-test/tests/integration/pr-05.test.js +183 -0
  106. package/standard-skill/local-browser-test/tests/integration/pr-06.test.js +252 -0
  107. package/standard-skill/local-browser-test/tests/integration/pr-07.test.js +168 -0
  108. package/standard-skill/local-browser-test/tests/integration/pr-08.test.js +293 -0
  109. package/standard-skill/shadcn-design-to-code/SKILL.md +352 -0
  110. package/standard-skill/shadcn-design-to-code/examples/1.1-overview-page.tsx +382 -0
  111. package/standard-skill/shadcn-design-to-code/references/install-pitfalls.md +526 -0
  112. package/standard-skill/shadcn-design-to-code/references/layouts.md +551 -0
  113. package/standard-skill/shadcn-design-to-code/references/sketch-mapping.md +247 -0
  114. package/standard-skill/shadcn-design-to-code/references/tokens.md +534 -0
  115. package/standard-skill/szcd-upload-zip/SKILL.md +45 -0
  116. package/opencode-extension/skills/local-browser-test/local-browser-executor.cjs +0 -742
  117. package/qwen-extension/skills/local-browser-test/local-browser-executor.cjs +0 -742
@@ -0,0 +1,247 @@
1
+ # Sketch 节点 → shadcn 组件反查表
2
+
3
+ > 把 sketch 视觉特征 → shadcn 组件候选的快速反查表
4
+ > 避免每次都调 shadcn MCP 搜索
5
+ > 复杂组合走 LLM 推理 + search_items
6
+
7
+ ## 使用方法
8
+
9
+ 1. 从 .sketch 解析出节点数据(步骤 2.5)
10
+ 2. 对每个节点/节点组,按下表的"Sketch 特征"列匹配
11
+ 3. 命中后,看"shadcn 组件"列选组件
12
+ 4. 看"Sketch signals" 列做二次确认
13
+ 5. 复杂组合(如 DataTable、Form、Chart)调 `mcp__shadcn__search_items` 进一步搜索
14
+
15
+ ---
16
+
17
+ ## 1. 基础原子组件
18
+
19
+ | Sketch 特征 | shadcn 组件 | Sketch signals | 备注 |
20
+ |---|---|---|---|
21
+ | 矩形带文字(按钮) | Button | 圆角矩形 + 单行文字 + hover/active 态 | 必装,cva variants 固定 |
22
+ | 矩形/输入框(文本输入) | Input | 矩形 + 占位文字 + 边框 | 配 Form 使用 |
23
+ | 矩形 + 文字标签 | Label | 与 Input 紧邻的小字 | 配 Form 使用 |
24
+ | 矩形(多行输入) | Textarea | 高 ≥ 80px 的矩形 + 占位文字 | 配 Form 使用 |
25
+ | 矩形(下拉选择) | Select | 矩形 + 占位文字 + 右侧 chevron | 含 Trigger/Content/Item |
26
+ | 圆角矩形(卡片容器) | Card | 矩形 + 阴影 + Header/Content/Footer 分割 | 必有 Card |
27
+ | 单行/多行文字 | Typography (h1-h4 / p) | text 节点 | 走 Tailwind `text-*` |
28
+ | 单图 | img 标签 | bitmap 节点 | extractBitmaps → base64 |
29
+ | 头像(圆形图片) | Avatar | 圆形 bitmap 或圆形 rectangle + 文字 | lucide-react User 图标兜底 |
30
+ | 徽章(小标签) | Badge | 小圆角矩形 + 短文字 | variants: default/secondary/destructive/outline |
31
+ | 复选框 | Checkbox | 小方框 + 文字 | 配 react-hook-form |
32
+ | 单选框 | RadioGroup | 小圆点 + 文字 | 配 react-hook-form |
33
+ | 开关 | Switch | 圆角矩形 + 圆点 | boolean 状态 |
34
+ | 分隔线 | Separator | 细线(height 1-2px) | 横/竖 |
35
+
36
+ ## 2. 导航组件
37
+
38
+ | Sketch 特征 | shadcn 组件 | Sketch signals | 备注 |
39
+ |---|---|---|---|
40
+ | 顶部水平导航 | NavigationMenu | 多个文字水平排列 + 下拉 | 含 Trigger/Content/List/Item |
41
+ | 左侧垂直菜单 | Sidebar (block sidebar-07) | 200-280px 固定宽 + 多行图标+文字 | 必装 Sidebar block |
42
+ | 水平 Tab 切换 | Tabs | 文字带下划线/底色切换 | 配 TabsContent |
43
+ | 垂直 Tab 切换 | Tabs (vertical orientation) | 左侧 200-240px 文字列表 | 配 TabsContent |
44
+ | 面包屑 | Breadcrumb | `首页 / 列表 / 详情` 文字链 | 含 Item/Link/Separator |
45
+ | 分页器 | Pagination | `< 1 2 3 ... 10 >` | 配 table |
46
+ | 步骤条 | Stepper (自写) | 圆点 + 连接线 + 数字 | shadcn 无原生 Stepper |
47
+ | 命令面板 | Command | 模态搜索框 | 配 ⌘K |
48
+
49
+ ## 3. 数据展示
50
+
51
+ | Sketch 特征 | shadcn 组件 | Sketch signals | 备注 |
52
+ |---|---|---|---|
53
+ | 数据表格 | DataTable (基于 @tanstack/react-table) | 多列多行矩形 + 表头 + 分页 | shadcn 官方有完整示例 |
54
+ | 简单表格 | Table | 静态表格,无排序/筛选 | 用 Table/TableHeader/TableBody |
55
+ | 列表(卡片网格) | Card 网格 | 多个 Card 横竖排列 | 走 grid |
56
+ | 列表(行) | div 列表 | 多行内容 | 走 space-y-2 |
57
+ | 折线图 | Chart (Line) | 折线 + 坐标轴 + 图例 | 基于 Recharts |
58
+ | 柱状图 | Chart (Bar) | 竖向矩形 + 坐标轴 | 基于 Recharts |
59
+ | 饼图 | Chart (Pie) | 圆形扇区 + 图例 | 基于 Recharts |
60
+ | 面积图 | Chart (Area) | 折线 + 下方填充 | 基于 Recharts |
61
+ | 雷达图 | Chart (Radar) | 多边形网格 | Recharts Radar |
62
+ | 散点图 | Chart (Scatter) | 散点 | Recharts Scatter |
63
+ | 数据卡片(含数字) | Card + 大字号数字 | 矩形 + 64-96px 字号数字 + 小字标签 | 配 Trend 指示器 |
64
+ | 进度条 | Progress | 矩形 + 内部填充矩形 | 含 value 属性 |
65
+ | 圆形进度 | 自写(基于 div) | 圆形 + 弧形 | 用 SVG 或 Conic-gradient |
66
+ | 头像组 | AvatarGroup (自写) | 多个圆形头像横排 | 用 flex -space-x-2 |
67
+ | 工具提示 | Tooltip | 悬停弹窗 | Radix Tooltip |
68
+ | 弹出卡片 | Popover | 悬停/点击弹卡 | Radix Popover |
69
+ | 折叠面板 | Accordion / Collapsible | 可展开/折叠的卡片 | 含 Item/Trigger/Content |
70
+ | 标签页(卡片) | Tabs (type=card) | 矩形 tab 头 | TabsList |
71
+ | 树形结构 | 自写(基于 div) | 嵌套缩进的列表 | 配 lucide ChevronRight/Down |
72
+
73
+ ## 4. 反馈组件
74
+
75
+ | Sketch 特征 | shadcn 组件 | Sketch signals | 备注 |
76
+ |---|---|---|---|
77
+ | 全局消息 | Sonner (Toast) | 浮层 + 状态色 | shadcn 官方推荐 Sonner |
78
+ | 警告框 | Alert | 矩形 + 图标 + 文字 + 状态色 | variants: default/destructive |
79
+ | 对话框(确认) | AlertDialog | 居中模态 + 标题 + 描述 + 按钮 | 二次确认用 |
80
+ | 弹窗(一般) | Dialog | 居中模态 + Header + Content | 配 Form |
81
+ | 抽屉 | Sheet | 右侧滑入面板 | 配 side="right/left/top/bottom" |
82
+ | 加载占位 | Skeleton | 矩形 + 浅色 + 动画 | loading 状态 |
83
+ | 加载旋转 | 自写(基于 div) | 圆圈 + 旋转动画 | 或 lucide Loader2 |
84
+ | 空状态 | 自写 | 居中图标 + 标题 + 描述 + 按钮 | 用 Card 包裹 |
85
+ | 错误状态 | Alert (destructive) | 矩形 + 红色 + 图标 + 文字 | |
86
+ | 成功状态 | Alert (default) | 矩形 + 绿色 + 图标 + 文字 | |
87
+ | 下拉菜单 | DropdownMenu | 矩形 + 多行选项 | 配 MenuItem |
88
+
89
+ ## 5. 表单组件
90
+
91
+ | Sketch 特征 | shadcn 组件 | Sketch signals | 备注 |
92
+ |---|---|---|---|
93
+ | 表单容器 | Form | FormProvider + Field 组合 | 基于 react-hook-form |
94
+ | 表单字段包装 | FormField + FormItem | label + control + message | 必装 |
95
+ | 表单验证错误 | FormMessage | 红色文字 | 配 zod |
96
+ | 输入框 | Input / Textarea | 同上 | |
97
+ | 选择器 | Select | 同上 | |
98
+ | 多选 | 自写(基于 Checkbox) | 多个 Checkbox | |
99
+ | 开关 | Switch | 同上 | |
100
+ | 单选 | RadioGroup | 多个 Radio | |
101
+ | 日期选择 | 自写(基于 Calendar) | 日期输入框 | shadcn 有 Calendar 组件 |
102
+ | 文件上传 | 自写(基于 Input) | 上传按钮 | 或拖拽区 |
103
+ | 标签输入 | 自写(基于 Badge) | 多个 Badge + 删除按钮 | |
104
+ | 自动补全 | Command | 同上 | |
105
+
106
+ ## 6. 布局容器
107
+
108
+ | Sketch 特征 | shadcn 组件 | Sketch signals | 备注 |
109
+ |---|---|---|---|
110
+ | 单列垂直布局 | div + space-y-* | 元素垂直堆叠 | flex flex-col |
111
+ | 多列网格 | div + grid | 元素水平排列 | grid grid-cols-N |
112
+ | 响应式网格 | div + grid | 上面 + 断点前缀 | md:grid-cols-2 lg:grid-cols-3 |
113
+ | 固定侧边栏 | aside | 左侧 200-280px | 配 main flex-1 |
114
+ | 粘性头部 | header + sticky | 顶部 56-64px | sticky top-0 z-50 |
115
+ | 模态遮罩 | div + bg-black/50 | 全屏黑色半透明 | Dialog 内部 |
116
+ | 响应式隐藏 | div + hidden / md:block | Sketch 中只在某断点出现 | |
117
+ | 滚动区域 | ScrollArea | 内容超出滚动 | shadcn ScrollArea |
118
+ | 响应式容器 | div + container | 居中 + 最大宽度 | container mx-auto |
119
+
120
+ ## 7. 业务组件(基于 block)
121
+
122
+ shadcn 官方提供完整 block,覆盖常见业务场景。**优先看 block 再组合**:
123
+
124
+ | Sketch 特征 | shadcn block | 内容 |
125
+ |---|---|---|
126
+ | Dashboard 完整布局 | `dashboard-01` | sidebar + 4 stat + 2 chart + 1 table |
127
+ | 登录页 | `login-01` ~ `login-05` | 居中表单 + 背景 |
128
+ | 注册页 | `signup-01` ~ `signup-05` | 居中表单 + 背景 |
129
+ | 定价页 | `pricing-01` ~ `pricing-04` | 3-4 列定价卡片 |
130
+ | 用户主页 | `profile-01` ~ `profile-05` | Cover + 头像 + 信息 |
131
+ | 团队成员 | `team-01` ~ `team-04` | 成员卡片列表 |
132
+ | 任务管理 | `tasks-01` ~ `tasks-04` | 看板 / 列表 |
133
+ | 日历 | `calendar-01` | 月视图 |
134
+ | 邮件 | `mail-01` ~ `mail-06` | 左右分栏 + 列表 + 详情 |
135
+ | 聊天 | `chat-01` | 联系人 + 对话窗口 |
136
+ | 设置 | `settings-01` ~ `settings-05` | 垂直 Tab + 表单 |
137
+ | 404 | `not-found-01` | 居中插图 + 文字 + 按钮 |
138
+
139
+ **block 命名规律**:`{category}-{NN}` 格式。
140
+
141
+ **调用方式**:
142
+ ```
143
+ mcp__shadcn__search_items_in_registries(registries=["@shadcn"], query="dashboard")
144
+ mcp__shadcn__view_items_in_registries(items=["@shadcn/dashboard-01"])
145
+ mcp__shadcn__get_add_command_for_items(items=["@shadcn/dashboard-01"])
146
+ → npx shadcn@latest add @shadcn/dashboard-01
147
+ ```
148
+
149
+ ## 8. 缺失能力(必须自写)
150
+
151
+ | Sketch 特征 | 解决方案 | 备注 |
152
+ |---|---|---|
153
+ | Stepper(步骤条) | 自写 | shadcn 无原生 |
154
+ | DatePicker | 基于 Calendar 包装 | 选完日期填到 Input |
155
+ | TimePicker | 自写(基于 Input) | 配 lucide Clock |
156
+ | Cascader 级联选择 | 自写 | shadcn 无 |
157
+ | Tree 树形控件 | 自写 | Radix Accordion 改造 |
158
+ | Transfer 穿梭框 | 自写 | |
159
+ | Upload 上传 | 自写 | 配合 react-dropzone |
160
+ | RichText 富文本 | 集成 Tiptap | |
161
+ | Mention @ 提及 | 自写 | 基于 Tiptap 扩展 |
162
+ | Cropper 图片裁剪 | 集成 react-image-crop | |
163
+ | Signature 签名 | 集成 react-signature-canvas | |
164
+ | ColorPicker | 集成 react-colorful | |
165
+ | Slider 数值滑块 | Slider (shadcn 有) | 但 range 要 Slider.Range |
166
+ | Rating 评分 | 自写(基于 lucide Star) | |
167
+ | Carousel 轮播 | Carousel (基于 embla-carousel) | shadcn 有 |
168
+ | Code 代码块 | SyntaxHighlighter | |
169
+ | Diff 代码差异 | react-diff-viewer-continued | |
170
+ | Sticky 吸顶 | 自写(基于 div + sticky) | |
171
+ | Floating 悬浮 | 自写(基于 div + fixed) | |
172
+ | Print 打印 | window.print() | |
173
+ | Fullscreen 全屏 | 自写 | |
174
+ | Resizable 可拖拽 | Resizable (基于 react-resizable-panels) | shadcn 有 |
175
+ | Masonry 瀑布流 | 自写 | CSS columns 或 react-masonry-css |
176
+ | VirtualList 虚拟列表 | 基于 @tanstack/react-virtual | |
177
+ | Dock(macOS 风格) | 自写 | |
178
+ | Command Palette | Command (shadcn 有) | 配 ⌘K |
179
+ | Context Menu | ContextMenu (shadcn 有) | 右键菜单 |
180
+
181
+ ## 9. 反查决策树(快速定位)
182
+
183
+ ```
184
+ Sketch 节点是什么?
185
+ ├── 文字 → h1-h4 / p / span (Typography)
186
+ ├── 矩形(无文字)→ 容器 / 卡片 / 装饰
187
+ │ ├── 阴影 + 圆角 + 内部有内容 → Card
188
+ │ ├── 圆角 + 单色填充 + 小尺寸 → Badge
189
+ │ ├── 进度条形状 → Progress
190
+ │ └── 装饰几何 → div + bg-*
191
+ ├── 矩形(带文字)→ Button / Label / Tab / MenuItem
192
+ ├── 圆形/椭圆形 → Avatar / Switch / Radio / 装饰
193
+ ├── 输入框形状 → Input / Textarea / Select
194
+ ├── 复选框形状 → Checkbox
195
+ ├── 列表/菜单 → 走 NavigationMenu 或 Sidebar
196
+ ├── 树形 → 自写 Tree
197
+ ├── 图表 → Chart (Recharts)
198
+ ├── 表格 → Table / DataTable
199
+ ├── 模态 → Dialog / Sheet / AlertDialog / Popover
200
+ ├── 弹窗消息 → Sonner
201
+ ├── 折叠面板 → Accordion / Collapsible
202
+ ├── 标签页 → Tabs
203
+ ├── 进度条 → Progress
204
+ ├── 滑块 → Slider
205
+ ├── 评分 → 自写(Star)
206
+ ├── 头像 → Avatar
207
+ ├── 工具提示 → Tooltip
208
+ ├── 弹出菜单 → DropdownMenu / ContextMenu
209
+ └── 完整页面 → 搜 block(dashboard-01 等)
210
+ ```
211
+
212
+ ## 10. 缺失时如何扩列
213
+
214
+ 如果 Sketch 有上表未覆盖的视觉特征:
215
+ 1. 先调 `mcp__shadcn__search_items_in_registries(query="<中文描述>")` 看是否有匹配
216
+ 2. 搜不到 → 调 `mcp__shadcn__list_items_in_registries(types=["block"])` 看所有 block
217
+ 3. 还找不到 → 可能是 Radix primitive,需要 `mcp__shadcn__view_items_in_registries(items=["@radix-ui/react-xxx"])`(**注意:Radix 组件不在 shadcn registry,需要另外装**)
218
+ 4. 都没有 → 自写(参考 lucide-react 图标 + Tailwind utility)
219
+
220
+ ## 11. 必备 shadcn 组件清单
221
+
222
+ 任何中等复杂度的页面都建议装:
223
+
224
+ ```
225
+ npx shadcn@latest add button card input label form textarea select
226
+ npx shadcn@latest add checkbox radio-group switch slider
227
+ npx shadcn@latest add dialog sheet alert-dialog dropdown-menu
228
+ npx shadcn@latest add tabs accordion collapsible separator
229
+ npx shadcn@latest add table tooltip popover avatar badge
230
+ npx shadcn@latest add navigation-menu sidebar breadcrumb pagination
231
+ npx shadcn@latest add alert sonner progress skeleton
232
+ npx shadcn@latest add chart # 图表(基于 Recharts)
233
+ npx shadcn@latest add data-table # 高级表格(基于 @tanstack/react-table)
234
+ npx shadcn@latest add calendar # 日期选择
235
+ npx shadcn@latest add command # 命令面板
236
+ npx shadcn@latest add resizable # 可拖拽面板
237
+ npx shadcn@latest add carousel # 轮播
238
+ npx shadcn@latest add drawer # 抽屉(与 sheet 类似但从底部)
239
+ ```
240
+
241
+ **精简版**(小型页面):
242
+ ```
243
+ npx shadcn@latest add button card input label form textarea select
244
+ npx shadcn@latest add dialog sheet dropdown-menu
245
+ npx shadcn@latest add tabs table tooltip avatar badge
246
+ npx shadcn@latest add alert sonner skeleton
247
+ ```