@szc-ft/mcp-szcd-client 0.21.0 → 0.23.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.
- package/agents/build.js +152 -130
- package/agents/opencode-extension/agents/szcd-component-expert.md +138 -12
- package/agents/platforms.json +17 -7
- package/agents/qwen-extension/agents/szcd-component-expert.md +137 -12
- package/agents/src/szcd-component-expert.md +211 -6
- package/agents/src/tools.json +10 -5
- package/agents/szcd-component-expert.md +139 -14
- package/agents/szcd-component-expert.qoder.md +227 -15
- package/agents/szcd-component-expert.trae.md +217 -13
- package/opencode-extension/agents/szcd-component-expert.md +138 -12
- package/opencode-extension/commands/szcd-mcp-api-config.md +48 -0
- package/opencode-extension/commands/szcd-mcp-auth.md +39 -0
- package/opencode-extension/commands/szcd-mcp-browser-test.md +57 -0
- package/opencode-extension/commands/szcd-mcp-coding-config.md +40 -0
- package/opencode-extension/commands/szcd-mcp-feedback.md +42 -0
- package/opencode-extension/commands/szcd-mcp-url.md +37 -0
- package/opencode-extension/opencode.json +15 -0
- package/opencode-extension/skills/local-api-tool/SKILL.md +246 -0
- package/opencode-extension/skills/local-browser-test/SKILL.md +249 -0
- package/opencode-extension/skills/szcd-component-helper/SKILL.md +523 -0
- package/opencode-extension/skills/szcd-design-to-code/SKILL.md +177 -0
- package/package.json +3 -2
- package/qwen-extension/QWEN.md +29 -8
- package/qwen-extension/agents/szcd-component-expert.md +137 -12
- package/qwen-extension/qwen-extension.json +6 -1
- package/qwen-extension/skills/szcd-component-helper/SKILL.md +81 -1
- package/qwen-extension/skills/szcd-design-to-code/SKILL.md +177 -0
- package/scripts/lib/claude-code.js +45 -1
- package/scripts/lib/common.js +17 -0
- package/scripts/lib/opencode.js +108 -12
- package/scripts/lib/qoder.js +42 -1
- package/scripts/lib/trae-cli.js +39 -1
- package/scripts/lib/trae-ide.js +40 -1
- package/scripts/postinstall.js +28 -0
- package/standard-skill/szcd-component-helper/SKILL.md +81 -1
- package/standard-skill/szcd-design-to-code/SKILL.md +177 -0
|
@@ -1,18 +1,19 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: |
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
3
|
+
szcd 组件库专家,用于查询组件信息、匹配需求到组件、生成基于 szcd 组件库的 React 代码。
|
|
4
|
+
当用户需要使用 @szc-ft/szcd 组件库开发页面、选择组件、查询组件 API、根据设计稿生成代码时,应使用此 agent。
|
|
5
|
+
|
|
6
|
+
典型触发场景:
|
|
7
|
+
- 用户想查询 szcd 组件库中有哪些组件
|
|
8
|
+
- 用户想获取某个组件的 Props 和使用示例
|
|
9
|
+
- 用户提供了设计稿截图/描述,要求生成页面代码
|
|
10
|
+
- 用户描述页面需求(如"做一个左侧树+右侧表格的页面"),要求生成代码
|
|
11
|
+
- 用户提到"根据设计稿生成页面"、"设计稿转代码"、"需求转组件"等关键词
|
|
11
12
|
tools:
|
|
12
13
|
write: true
|
|
13
14
|
edit: true
|
|
14
15
|
bash: true
|
|
15
|
-
|
|
16
|
+
mode: all
|
|
16
17
|
---
|
|
17
18
|
|
|
18
19
|
# szcd-component-expert: szcd 组件库专家
|
|
@@ -67,10 +68,136 @@ szcd 是基于 Ant Design 5.27 封装的企业级 React 组件库,采用分层
|
|
|
67
68
|
- 缺少交互细节时,询问"编辑操作用弹窗还是抽屉?"并提供选项
|
|
68
69
|
|
|
69
70
|
|
|
71
|
+
### 步骤2.5:Sketch 文件解析(条件执行)
|
|
72
|
+
|
|
73
|
+
**当用户提供 .sketch 设计文件时**,使用 `sketch-mcp-server`(独立 MCP Server,stdio 模式)解析,直接提取结构化数据,结合组件库架构推理组件方案,无需经过视觉模型和 `map_design_data`。
|
|
74
|
+
|
|
75
|
+
**核心原则**:写代码前必须先 `getMultipleNodeInfo` 拉取所有 `text` 和 `rectangle` 节点的完整样式 Token(`style.fills[0].color.hex`、`text.color`、`style.fontSize`),禁止凭节点名猜测颜色和样式。一次批量查询(50-100 个 ID)比逐个 `getNodeInfo` 快 10 倍以上,且不会遗漏。
|
|
76
|
+
|
|
77
|
+
**工作流(6步深度探查,像素级还原)**:
|
|
78
|
+
|
|
79
|
+
1. **加载文件**:
|
|
80
|
+
- `loadSketchByPath` 加载 .sketch 文件
|
|
81
|
+
- `listPages` 列出所有页面
|
|
82
|
+
- `listNodesByPage`(type="artboard")获取画板列表
|
|
83
|
+
- 根据画板名称选择目标页面
|
|
84
|
+
|
|
85
|
+
2. **获取完整节点树**:
|
|
86
|
+
- `getPageStructure`(pageId)**或** `getDocumentStructure`(includeDetails=true)— 拿到完整节点树 + 所有节点 ID
|
|
87
|
+
- 必须 `includeDetails=true`,否则拿不到初始样式
|
|
88
|
+
- 拿到所有节点 ID 列表,为下一步分组做准备
|
|
89
|
+
|
|
90
|
+
3. **按类型分组统计**:
|
|
91
|
+
- `getNodesSummary`(pageId, groupBy="type")— 按类型分组,统计 text/rectangle/group 各多少个
|
|
92
|
+
- 识别组件模式:
|
|
93
|
+
- `group(rectangle + text)` = 标签组件(如状态徽章)
|
|
94
|
+
- `group(text + text + rectangle...)` = 表单项
|
|
95
|
+
- `group(text 列表 + 边框)` = 表格行
|
|
96
|
+
- 决定下一批 `getMultipleNodeInfo` 的目标节点范围(所有 type=text + type=rectangle)
|
|
97
|
+
|
|
98
|
+
4. **批量拉取样式 Token**:
|
|
99
|
+
- `getMultipleNodeInfo`([id1, id2, ...])— 每次 ≤ 100 个节点
|
|
100
|
+
- 关键字段提取:
|
|
101
|
+
- 背景色:`style.fills[0].color.hex`
|
|
102
|
+
- 文字色:`text.color`(部分版本在 `style.fills[0].color`)
|
|
103
|
+
- 字号:`style.fontSize`
|
|
104
|
+
- 字重:`style.fontWeight`
|
|
105
|
+
- 边框:`style.borders[0].color.hex` + `thickness`
|
|
106
|
+
- **禁止**逐个 `getNodeInfo` 探查
|
|
107
|
+
|
|
108
|
+
5. **获取组件库架构**(复用步骤1结果):
|
|
109
|
+
- `get_architecture_overview` 的 `templatePatterns` 提供模板组合模式
|
|
110
|
+
- `llmMappingHints` 提供常见错误修正
|
|
111
|
+
|
|
112
|
+
6. **LLM 推理组件范围 + 批量获取组件详情**:
|
|
113
|
+
- 从 Sketch 结构 + 样式 Token 推断:画板名称→`pageName`,区域分布→`layoutType`,图层类型+颜色→组件映射
|
|
114
|
+
- 对照 `templatePatterns` 选择最匹配的模板(TreeQueryTable/QueryTabsTables/LeftRight/UpDown)
|
|
115
|
+
- 输出组件候选列表(如 `["Query","TableOrList","LeftTree","TemplateMode"]`)
|
|
116
|
+
- 调用 `get_component_full_profile`(name="Query,TableOrList,LeftTree,TemplateMode", depth="deep")一次性获取所有需要的组件 API
|
|
117
|
+
- 如需样式注入细节,追加 `get_style_injection_guide`
|
|
118
|
+
|
|
119
|
+
**Sketch → szcd 工作流(结构化直传 + 样式 Token,无需视觉模型)**:
|
|
120
|
+
```
|
|
121
|
+
.sketch → loadSketchByPath → listPages → listNodesByPage(type=artboard)
|
|
122
|
+
→ getPageStructure(includeDetails=true) / getDocumentStructure(includeDetails=true)
|
|
123
|
+
→ getNodesSummary(groupBy="type")
|
|
124
|
+
→ getMultipleNodeInfo([所有text+rectangle节点ID]) ← 关键:批量拿样式 Token
|
|
125
|
+
→ [步骤1架构数据] → LLM推理组件
|
|
126
|
+
→ get_component_full_profile(批量) → 编码
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
**首轮常见错误 → 正确做法对照表**:
|
|
130
|
+
|
|
131
|
+
| 步骤 | 第一次做错的 | 应该做的 |
|
|
132
|
+
|------|------------|---------|
|
|
133
|
+
| 结构获取 | `getDocumentStructure(includeDetails=false)` 只有名称和位置 | `includeDetails=true` 或 `getPageStructure`,拿到初始样式 |
|
|
134
|
+
| 样式提取 | 没做 | `getMultipleNodeInfo` 批量拉取所有 type=text 和 type=rectangle 节点 |
|
|
135
|
+
| 组件识别 | 凭节点名猜测(如看到 "tag" 节点就写 `<Tag>`) | `getNodesSummary(groupBy="type")` 统计类型分布,识别 text+rectangle 组合 → 标签组件 |
|
|
136
|
+
| 颜色提取 | 跳过 | 对每个 rectangle(背景)+ text(文字)取 `style.fills[0].color.hex` + `text.color` |
|
|
137
|
+
|
|
138
|
+
**提示**:
|
|
139
|
+
- 大型 .sketch 文件先 `listNodesByPage(type="artboard")` 锁定目标画板,避免一次性加载整个文档
|
|
140
|
+
- `getNodesSummary` 是 token 节省关键:先按类型分组统计,再决定要查哪些节点 ID
|
|
141
|
+
- 批量 `getMultipleNodeInfo` 严格 ≤ 100 个/次,超过需分批
|
|
142
|
+
- 仅当结构化样式数据仍不足(如复杂渐变、阴影)时,才回退到 `renderNodeAsBase64` + `analyze_design_image`
|
|
143
|
+
- 如果 sketch-mcp-server 工具不可用,提示用户安装:`npm install -g sketch-mcp-server`
|
|
144
|
+
|
|
145
|
+
**Sketch 结构 → 组件映射规则**:
|
|
146
|
+
|
|
147
|
+
*页面级布局*:
|
|
148
|
+
| Sketch 特征 | 推断结果 | 依据 |
|
|
149
|
+
|---|---|---|
|
|
150
|
+
| 画板名称(如 "4.1-编目审核-待办") | `pageName` | 直接使用 |
|
|
151
|
+
| 左右分区布局 | `TemplateMode(templateTpye="LeftRight")` | 区域分布 |
|
|
152
|
+
| 上下分区布局 | `TemplateMode(templateTpye="TopBottom")` | 区域分布 |
|
|
153
|
+
| 标签页(Tabs) + 每个 Tab 内有表格 | `QueryTabsTables` 或 `TemplateMode` + Tabs | templatePatterns.QueryTabsTables |
|
|
154
|
+
|
|
155
|
+
*区域级组件*:
|
|
156
|
+
| Sketch 特征 | 推断结果 | 依据 |
|
|
157
|
+
|---|---|---|
|
|
158
|
+
| 左侧窄区域 + 树形图层 | `LeftTree` 组件 | templatePatterns.TreeQueryTable |
|
|
159
|
+
| 顶部输入框/下拉框/日期选择器 | `Query` 组件 | 搜索区域特征 |
|
|
160
|
+
| 中间表头 + 数据行图层 | `TableOrList` 组件 | 表格区域特征 |
|
|
161
|
+
| 弹窗/抽屉图层 | `ModelOrDrawer` 组件 | 弹窗交互特征 |
|
|
162
|
+
| 页面标题 + 返回箭头 | `TitleAndBack` 组件 | 标题栏特征 |
|
|
163
|
+
| 详情展示区域(只读字段) | `FormItemOrDetailItem(type="detail")` | 详情区特征 |
|
|
164
|
+
|
|
165
|
+
*数据可视化*:
|
|
166
|
+
| Sketch 特征 | 推断结果 | 依据 |
|
|
167
|
+
|---|---|---|
|
|
168
|
+
| 折线趋势图/时间序列图 | `Line` | ECharts 层图表组件 |
|
|
169
|
+
| 柱状对比图/条形图 | `Bar` | ECharts 层图表组件 |
|
|
170
|
+
| 饼图/环形图/占比图 | `Pie` | ECharts 层图表组件 |
|
|
171
|
+
| 雷达图/多维度对比 | `Radar` | ECharts 层图表组件 |
|
|
172
|
+
| 仪表盘/进度指示 | `Gauge` | ECharts 层图表组件 |
|
|
173
|
+
| 漏斗图/转化率 | `Funnel` | ECharts 层图表组件 |
|
|
174
|
+
|
|
175
|
+
*表格子类型*:
|
|
176
|
+
| Sketch 特征 | 推断结果 | 依据 |
|
|
177
|
+
|---|---|---|
|
|
178
|
+
| 可编辑表格(单元格直接输入) | `TableOrList(componentType="EditableProTable")` | 可编辑表格特征 |
|
|
179
|
+
| 拖拽排序表格(有序号/拖拽手柄) | `TableOrList(componentType="DragSortTable")` | 拖拽排序特征 |
|
|
180
|
+
| 卡片列表(非表格式数据卡片) | `TableOrList(componentType="ProList")` | 卡片布局特征 |
|
|
181
|
+
| 步骤条表单(分步填写) | `ModelOrDrawer(componentType="steps")` | StepsForm 特征 |
|
|
182
|
+
|
|
183
|
+
*辅助/插槽组件*:
|
|
184
|
+
| Sketch 特征 | 推断结果 | 依据 |
|
|
185
|
+
|---|---|---|
|
|
186
|
+
| 树标题栏添加按钮/操作入口 | `CustomOption` | LeftTree 的 CustomOption 插槽 |
|
|
187
|
+
| 树节点右键菜单/增删改操作 | `TreeNode` | LeftTree 的 CustomTreeNode 插槽 |
|
|
188
|
+
| 圆形头像/头像编辑区 | `ModeAvatar` | 头像区域特征 |
|
|
189
|
+
| 文件上传区/拖拽上传框 | `Upload`(Cover 层) | 上传区域特征 |
|
|
190
|
+
|
|
191
|
+
**提示**:
|
|
192
|
+
- 大型 .sketch 文件用 `getPageStructure(maxDepth=1-2)` 即可获取布局概况,避免深层递归超时
|
|
193
|
+
- `listNodesByPage(type="artboard")` 优先于 `getPageStructure`,更轻量
|
|
194
|
+
- 仅当结构化数据不足以判断视觉细节(颜色、间距、字体)时,才回退到 `renderNodeAsBase64` + `analyze_design_image`
|
|
195
|
+
- 如果 sketch-mcp-server 工具不可用,提示用户安装:`npm install -g sketch-mcp-server`
|
|
196
|
+
|
|
70
197
|
### 步骤3:分析设计稿(条件执行)
|
|
71
198
|
|
|
72
199
|
当用户提供了设计稿图片时:
|
|
73
|
-
-
|
|
200
|
+
- 如果**主代理已提供图片描述**(设计稿已被解读为文字),直接使用该描述,跳过图像分析
|
|
74
201
|
- 如果图片未被解读,调用 `analyze_design_image` 工具分析
|
|
75
202
|
- 如果该工具不可用,告知用户需要提供设计稿的文字描述
|
|
76
203
|
|
|
@@ -84,8 +211,7 @@ szcd 是基于 Ant Design 5.27 封装的企业级 React 组件库,采用分层
|
|
|
84
211
|
使用 MCP 工具获取组件信息和 API,**优先使用 Repowiki 语义搜索工具**:
|
|
85
212
|
|
|
86
213
|
- `search_components_semantic` — 基于 Repowiki 知识库的语义搜索,用自然语言描述匹配最适合的组件(**优先使用**)
|
|
87
|
-
- `get_component_full_profile` — 一站式获取组件全景画像。`name` 支持逗号分隔批量查询(如 `"Query,TableOrList"`),`depth="deep"` 获取 Props 链 + 源码摘要 + 样式注入,**返回值是紧凑 Markdown 格式**(**推荐首选,一次调用替代多次查询**)
|
|
88
|
-
- `get_component_dependencies` — 查询组件依赖关系图,确认 hooks 和插槽关系
|
|
214
|
+
- `get_component_full_profile` — 一站式获取组件全景画像。`name` 支持逗号分隔批量查询(如 `"Query,TableOrList"`),`depth="deep"` 获取 Props 链 + 依赖关系 + 源码摘要 + 样式注入,**返回值是紧凑 Markdown 格式**(**推荐首选,一次调用替代多次查询**)
|
|
89
215
|
- `get_best_practices` — 获取组件使用最佳实践,指定 scenario 可获取组合最佳实践(如"左树右表页面")
|
|
90
216
|
- `get_style_injection_guide` — 查询组件样式注入方法,获取 CSS 覆盖路径和分配策略
|
|
91
217
|
- `read_file` — 读取组件源码(deep 模式信息不足时)
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 管理API工具(YApi+Swagger)的默认配置(baseUrl/account/password/cookies/swagUser/swagPass)
|
|
3
|
+
argument-hint: <get|set|clear> [--baseUrl=xxx] [--account=yyy] [--password=zzz] [--cookies=ccc] [--swgUser=admin] [--swgPass=xxx]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
请帮我管理 szcd MCP 的 API 工具默认配置(同时支持 YApi 和 Swagger)。
|
|
7
|
+
|
|
8
|
+
**交互流程**:
|
|
9
|
+
|
|
10
|
+
1. **向用户询问要执行的操作**,提供以下选项:
|
|
11
|
+
- "查看配置" -> 执行 get
|
|
12
|
+
- "设置配置" -> 执行 set(需进一步追问参数)
|
|
13
|
+
- "清除配置" -> 执行 clear
|
|
14
|
+
|
|
15
|
+
2. **根据用户选择执行**:
|
|
16
|
+
|
|
17
|
+
- **查看配置**:直接执行 `npx szcd-mcp-api-config get`
|
|
18
|
+
|
|
19
|
+
- **设置配置**:逐项向用户询问以下参数,选项中提供当前值作为默认,用户也可自由输入新值:
|
|
20
|
+
- YAPI_BASE_URL - YApi 基础地址,如 `http://yapi.smartcitysz.work`
|
|
21
|
+
- YAPI_ACCOUNT - YApi 登录账号/邮箱
|
|
22
|
+
- YAPI_PASSWORD - YApi 密码
|
|
23
|
+
- YAPI_COOKIES - YApi Cookie 字符串(推荐,优先使用)
|
|
24
|
+
- SWAGGER_DEFAULT_USERNAME - Swagger 默认鉴权用户名
|
|
25
|
+
- SWAGGER_DEFAULT_PASSWORD - Swagger 默认鉴权密码(留空则跳过鉴权)
|
|
26
|
+
收集完参数后执行:
|
|
27
|
+
```bash
|
|
28
|
+
npx szcd-mcp-api-config set --baseUrl="<baseUrl>" --account="<account>" --password="<password>" --cookies="<cookies>" --swgUser="<swgUser>" --swgPass="<swgPass>"
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
- **清除配置**:确认后执行 `npx szcd-mcp-api-config clear`
|
|
32
|
+
|
|
33
|
+
3. **命令回退**:如果 npx 不可用,依次尝试:
|
|
34
|
+
- `node $(npm root -g)/@szc-ft/mcp-szcd-client/scripts/update-api-config.js <args>`
|
|
35
|
+
- `node /scity/zengzhijie/mcp/szcd-mcp-client/scripts/update-api-config.js <args>`
|
|
36
|
+
|
|
37
|
+
**配置字段说明**:
|
|
38
|
+
- `YAPI_BASE_URL` - YApi 基础地址
|
|
39
|
+
- `YAPI_ACCOUNT` - YApi 登录账号/邮箱
|
|
40
|
+
- `YAPI_PASSWORD` - YApi 密码(敏感)
|
|
41
|
+
- `YAPI_COOKIES` - YApi Cookie 字符串(敏感,推荐优先使用)
|
|
42
|
+
- `SWAGGER_DEFAULT_USERNAME` - Swagger 默认鉴权用户名(如 `admin`)
|
|
43
|
+
- `SWAGGER_DEFAULT_PASSWORD` - Swagger 默认鉴权密码(敏感,**留空则跳过鉴权**)
|
|
44
|
+
|
|
45
|
+
配置保存在 `~/.szcd-mcp-config.json` 中,设置后 `api_tool` 的 fetch 操作可自动读取对应平台的认证信息。
|
|
46
|
+
|
|
47
|
+
当前配置:
|
|
48
|
+
!`cat ~/.szcd-mcp-config.json 2>/dev/null | grep -E "YAPI|SWAGGER|MCP_SERVER" || echo "配置文件不存在或无 API 配置"`
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 管理MCP服务器鉴权密钥(get/set/clear API Key)
|
|
3
|
+
argument-hint: <get|set|clear> [--apiKey=xxx]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
请帮我管理 szcd MCP 的鉴权配置。
|
|
7
|
+
|
|
8
|
+
**交互流程**:
|
|
9
|
+
|
|
10
|
+
1. **向用户询问要执行的操作**,提供以下选项:
|
|
11
|
+
- "查看鉴权配置" -> 执行 get
|
|
12
|
+
- "设置 API Key" -> 执行 set(需进一步追问参数)
|
|
13
|
+
- "清除 API Key" -> 执行 clear
|
|
14
|
+
|
|
15
|
+
2. **根据用户选择执行**:
|
|
16
|
+
|
|
17
|
+
- **查看鉴权配置**:直接执行 `npx szcd-mcp-auth get`
|
|
18
|
+
|
|
19
|
+
- **设置 API Key**:向用户询问 API Key(由 MCP 服务端管理员提供),收集后执行:
|
|
20
|
+
```bash
|
|
21
|
+
npx szcd-mcp-auth set --apiKey="<apiKey>"
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
- **清除 API Key**:确认后执行 `npx szcd-mcp-auth clear`
|
|
25
|
+
|
|
26
|
+
3. **命令回退**:如果 npx 不可用,依次尝试:
|
|
27
|
+
- `node $(npm root -g)/@szc-ft/mcp-szcd-client/scripts/update-auth.js <args>`
|
|
28
|
+
- `node /scity/zengzhijie/mcp/szcd-mcp-client/scripts/update-auth.js <args>`
|
|
29
|
+
|
|
30
|
+
**配置字段说明**:
|
|
31
|
+
- `MCP_API_KEY` — MCP 服务器鉴权密钥(敏感)
|
|
32
|
+
- 设置后,客户端连接时自动通过 `X-API-Key` 请求头传递
|
|
33
|
+
- 服务端需配置相同的 `MCP_API_KEY` 环境变量才会校验
|
|
34
|
+
- 未设置时,若服务端也未开启鉴权,客户端可正常连接
|
|
35
|
+
|
|
36
|
+
配置保存在 `~/.szcd-mcp-config.json` 中,设置后重启 IDE/CLI 生效。
|
|
37
|
+
|
|
38
|
+
当前配置:
|
|
39
|
+
!`cat ~/.szcd-mcp-config.json 2>/dev/null | grep -E "MCP_API_KEY|MCP_SERVER" || echo "配置文件不存在"`
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 在本地浏览器中执行自动化测试(设计稿还原度对比/功能验证/页面检查)
|
|
3
|
+
argument-hint: <目标页面URL> [可选:设计稿图片路径]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
请帮我在本地浏览器中执行测试。
|
|
7
|
+
|
|
8
|
+
**执行流程**:
|
|
9
|
+
|
|
10
|
+
1. **收集测试信息**:
|
|
11
|
+
|
|
12
|
+
- **目标页面 URL**(必需):如果用户在命令参数中已提供,直接使用;否则向用户询问要测试的页面地址
|
|
13
|
+
- **设计稿图片**(可选):如果用户在命令参数中提供了图片路径,用于还原度对比;否则跳过视觉对比
|
|
14
|
+
- **测试范围**:向用户提供选项:
|
|
15
|
+
- "设计稿还原度对比"(需提供设计稿)
|
|
16
|
+
- "功能验证"(点击/输入/导航等交互测试)
|
|
17
|
+
- "页面检查"(JS 错误检测 + 页面截图)
|
|
18
|
+
- "全部测试"(以上全部)
|
|
19
|
+
|
|
20
|
+
2. **读取 `local-browser-test` skill 文档**,了解 Plan Schema 和执行命令格式:
|
|
21
|
+
- 按 skill 中定义的步骤类型构造测试计划 JSON
|
|
22
|
+
- selector 从用户项目代码中读取(`id`/`className`/`data-testid`),不要猜测
|
|
23
|
+
- 根据用户选择的测试范围选择对应场景(A/B/C/D)
|
|
24
|
+
|
|
25
|
+
3. **构造测试计划 JSON** 并写入临时文件(避免命令行参数过长):
|
|
26
|
+
```bash
|
|
27
|
+
cat > /tmp/browser-test-plan.json << 'EOF'
|
|
28
|
+
{测试计划 JSON}
|
|
29
|
+
EOF
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
4. **执行测试**:
|
|
33
|
+
```bash
|
|
34
|
+
node {client_install_path}/local-browser-executor.js \
|
|
35
|
+
--plan-file /tmp/browser-test-plan.json \
|
|
36
|
+
--output /tmp/browser-test-result.json
|
|
37
|
+
```
|
|
38
|
+
|
|
39
|
+
命令回退(如果上面的路径不可用):
|
|
40
|
+
- `npx szcd-mcp-browser-test --plan-file /tmp/browser-test-plan.json --output /tmp/browser-test-result.json`
|
|
41
|
+
- `node $(npm root -g)/@szc-ft/mcp-szcd-client/local-browser-executor.js --plan-file /tmp/browser-test-plan.json --output /tmp/browser-test-result.json`
|
|
42
|
+
- `node /scity/zengzhijie/mcp/szcd-mcp-client/local-browser-executor.js --plan-file /tmp/browser-test-plan.json --output /tmp/browser-test-result.json`
|
|
43
|
+
|
|
44
|
+
5. **读取并解读结果**:
|
|
45
|
+
读取 `/tmp/browser-test-result.json`,按以下标准解读:
|
|
46
|
+
- **还原度**:fidelity >= 95% 优秀 / 90-95% 良好 / < 90% 不足
|
|
47
|
+
- **功能测试**:passed = total 全部通过,否则列出失败步骤及原因
|
|
48
|
+
- **diff 图**:如有 diffImagePath,展示 diff 图路径供用户查看
|
|
49
|
+
|
|
50
|
+
6. **闭环建议**:
|
|
51
|
+
- 如有问题,给出具体的修复建议
|
|
52
|
+
- 询问用户是否需要重新测试
|
|
53
|
+
|
|
54
|
+
**注意事项**:
|
|
55
|
+
- 首次使用需确保 Chrome 以调试模式启动:`google-chrome --remote-debugging-port=9222`
|
|
56
|
+
- 如执行器报错依赖缺失,引导用户安装:`npm install puppeteer-core pixelmatch pngjs sharp`
|
|
57
|
+
- connect 模式下天然继承用户浏览器的登录态和微前端环境
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 管理CODING Issue工具的默认配置(baseUrl/account)
|
|
3
|
+
argument-hint: <get|set|clear> [--baseUrl=xxx] [--account=yyy]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
请帮我管理 szcd MCP 的 CODING 默认配置。
|
|
7
|
+
|
|
8
|
+
**交互流程**:
|
|
9
|
+
|
|
10
|
+
1. **向用户询问要执行的操作**,提供以下选项:
|
|
11
|
+
- "查看配置" → 执行 get
|
|
12
|
+
- "设置配置" → 执行 set(需进一步追问参数)
|
|
13
|
+
- "清除配置" → 执行 clear
|
|
14
|
+
|
|
15
|
+
2. **根据用户选择执行**:
|
|
16
|
+
|
|
17
|
+
- **查看配置**:直接执行 `npx szcd-mcp-coding-config get`
|
|
18
|
+
|
|
19
|
+
- **设置配置**:逐项向用户询问以下参数,选项中提供当前值作为默认,用户也可自由输入新值:
|
|
20
|
+
- CODING_BASE_URL — CODING 基础地址,如 `http://e-kjr1wok.coding.smartcitysz.work`
|
|
21
|
+
- CODING_ACCOUNT — 默认账号(邮箱)
|
|
22
|
+
收集完参数后执行:
|
|
23
|
+
```bash
|
|
24
|
+
npx szcd-mcp-coding-config set --baseUrl="<baseUrl>" --account="<account>"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- **清除配置**:确认后执行 `npx szcd-mcp-coding-config clear`
|
|
28
|
+
|
|
29
|
+
3. **命令回退**:如果 npx 不可用,依次尝试:
|
|
30
|
+
- `node $(npm root -g)/@szc-ft/mcp-szcd-client/scripts/update-coding-config.js <args>`
|
|
31
|
+
- `node /scity/zengzhijie/mcp/szcd-mcp-client/scripts/update-coding-config.js <args>`
|
|
32
|
+
|
|
33
|
+
**配置字段说明**:
|
|
34
|
+
- `CODING_BASE_URL` — CODING 基础地址
|
|
35
|
+
- `CODING_ACCOUNT` — 默认账号(邮箱)
|
|
36
|
+
|
|
37
|
+
配置保存在 `~/.szcd-mcp-config.json` 中,设置后 `coding_fetch_issue` 工具可省略 `baseUrl` 参数。
|
|
38
|
+
|
|
39
|
+
当前配置:
|
|
40
|
+
!`cat ~/.szcd-mcp-config.json 2>/dev/null | grep -E "CODING|MCP_SERVER" || echo "配置文件不存在或无 CODING 配置"`
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 提交本次会话的代码生成反馈,用于优化 szcd MCP 服务质量
|
|
3
|
+
argument-hint: [可选:评分1-5] [可选:采纳/不采纳]
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
请帮我提交本次会话的反馈。
|
|
7
|
+
|
|
8
|
+
**执行流程**:
|
|
9
|
+
|
|
10
|
+
1. **自动收集上下文**:从当前会话历史中提取以下信息,**不要重复询问用户已经说过的内容**:
|
|
11
|
+
- `userQuery`:用户最初的原始需求描述(从会话开头的消息中提取)
|
|
12
|
+
- `toolsUsed`:本次会话中实际调用过的 MCP 工具名称列表(从工具调用记录中提取)
|
|
13
|
+
- `generatedCodeSummary`:最近一次生成的代码摘要或关键组件列表(从生成的代码中提取前几行或核心结构,不超过 500 字)
|
|
14
|
+
- `toolType`:当前使用的 IDE 类型(根据运行环境判断:Qoder → "qoder",Trae → "trae",Claude → "claude",Qwen → "qwen",Cursor → "cursor",VS Code → "vscode",其他 → "generic")
|
|
15
|
+
|
|
16
|
+
2. **向用户确认或补充**(仅询问缺失的信息):
|
|
17
|
+
- **准确性评分**:请用户评分 1-5 分(5 分最准确)。如果用户在命令参数中已提供,直接使用
|
|
18
|
+
- **是否采纳**:用户是否计划采纳生成的代码。如果用户在命令参数中已提供("采纳"/"不采纳"),直接使用
|
|
19
|
+
- **如不采纳**:询问具体原因(组件不匹配、API 错误、缺少功能、不符合设计稿等)
|
|
20
|
+
|
|
21
|
+
3. **调用 MCP 工具提交反馈**:
|
|
22
|
+
调用 `submit_feedback` 工具,参数如下:
|
|
23
|
+
```
|
|
24
|
+
sessionId: "<当前会话 ID 或时间戳>"
|
|
25
|
+
toolsUsed: [自动提取的工具列表]
|
|
26
|
+
userQuery: "<自动提取的用户需求>"
|
|
27
|
+
generatedCodeSummary: "<自动提取的代码摘要>"
|
|
28
|
+
accuracyRating: <用户评分 1-5>
|
|
29
|
+
adopted: <true/false>
|
|
30
|
+
rejectionReason: "<不采纳原因,采纳则为空>"
|
|
31
|
+
contextSnapshot: {
|
|
32
|
+
可选:从会话中提取的组件方案信息
|
|
33
|
+
}
|
|
34
|
+
toolType: "<自动判断的 IDE 类型>"
|
|
35
|
+
```
|
|
36
|
+
|
|
37
|
+
4. **输出结果**:告知用户反馈是否提交成功,显示 feedbackId
|
|
38
|
+
|
|
39
|
+
**注意事项**:
|
|
40
|
+
- 如果当前会话中没有代码生成记录,提示用户"当前会话中没有代码生成记录,反馈提交需要有生成代码的上下文"
|
|
41
|
+
- 尽可能从会话历史自动提取信息,减少用户手动输入
|
|
42
|
+
- 反馈提交失败不影响已生成的代码
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: 更新szcd MCP服务器地址并同步Trae/Claude配置
|
|
3
|
+
argument-hint: <new-mcp-server-url>
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
请帮我更新 szcd MCP 服务器地址。
|
|
7
|
+
|
|
8
|
+
**交互流程**:
|
|
9
|
+
|
|
10
|
+
1. **向用户询问要执行的操作**,提供以下选项:
|
|
11
|
+
- "更新服务器地址" → 输入新 URL 并同步所有 IDE 配置
|
|
12
|
+
- "同步现有配置" → 用 `~/.szcd-mcp-config.json` 中已有的 MCP_SERVER_URL 重新同步 IDE 配置
|
|
13
|
+
- "查看当前配置" → 显示当前 MCP 服务器地址
|
|
14
|
+
|
|
15
|
+
2. **根据用户选择执行**:
|
|
16
|
+
|
|
17
|
+
- **更新服务器地址**:向用户询问新的 MCP 服务器 URL,可提供常用地址选项,用户也可自由输入。收集到 URL 后执行:
|
|
18
|
+
```bash
|
|
19
|
+
npx szcd-mcp-update-url "<newUrl>"
|
|
20
|
+
```
|
|
21
|
+
|
|
22
|
+
- **同步现有配置**:直接执行(不带参数):
|
|
23
|
+
```bash
|
|
24
|
+
npx szcd-mcp-update-url
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
- **查看当前配置**:显示 `~/.szcd-mcp-config.json` 中的 MCP_SERVER_URL
|
|
28
|
+
|
|
29
|
+
3. **命令回退**:如果 npx 不可用,依次尝试:
|
|
30
|
+
- `node $(npm root -g)/@szc-ft/mcp-szcd-client/scripts/update-mcp-url.js "<newUrl>"`
|
|
31
|
+
- `node /scity/zengzhijie/mcp/szcd-mcp-client/scripts/update-mcp-url.js "<newUrl>"`
|
|
32
|
+
- 手动步骤:编辑 `~/.szcd-mcp-config.json`,再逐个 IDE 同步:
|
|
33
|
+
- trae-cli: `trae-cli mcp remove szcd-component-helper && trae-cli mcp add-json szcd-component-helper '{"type":"http","url":"<URL>/mcp"}'`
|
|
34
|
+
- claude: `claude mcp remove --scope user szcd-component-helper && claude mcp add --transport http --scope user szcd-component-helper <URL>/mcp`
|
|
35
|
+
|
|
36
|
+
当前配置:
|
|
37
|
+
!`cat ~/.szcd-mcp-config.json 2>/dev/null || echo "配置文件不存在"`
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "https://opencode.ai/config.json",
|
|
3
|
+
"mcp": {
|
|
4
|
+
"szcd-component-helper": {
|
|
5
|
+
"type": "remote",
|
|
6
|
+
"url": "http://localhost:3456/mcp"
|
|
7
|
+
},
|
|
8
|
+
"sketch-mcp-server": {
|
|
9
|
+
"type": "local",
|
|
10
|
+
"command": [
|
|
11
|
+
"sketch-mcp-server"
|
|
12
|
+
]
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
}
|