@comate/zulu 1.0.0-beta.4 → 1.0.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.
@@ -38,7 +38,7 @@ hidden: true
38
38
 
39
39
  | 命令 | 参数 | 说明 |
40
40
  |------|------|------|
41
- | `snapshot` | — | 获取无障碍快照(包含元素 UID 的 YAML 树) |
41
+ | `snapshot` | — | 获取无障碍快照(包含元素 UID 的 YAML 树),用于了解页面结构和获取交互所需的元素 UID |
42
42
  | `html [selector]` | `selector`(可选,CSS 选择器) | 获取页面 HTML,可通过选择器过滤 |
43
43
  | `screenshot` | 见下方选项 | 对当前页面截图 |
44
44
  | `status` | — | 显示浏览器状态和所有打开的标签页 |
@@ -80,12 +80,13 @@ hidden: true
80
80
 
81
81
  ## 执行行为
82
82
 
83
- - **自动执行模式**(默认):命令立即执行,无需用户确认。
84
- - **保护模式**:当设置中启用 `browserProtection` 时,每条命令进入 `pending` 状态,等待用户确认。
83
+ - **手动确认模式**(默认):命令进入 `pending` 状态,等待用户手动确认。
84
+ - **自动执行模式**:当设置中启用 `autoExecute` 时,命令立即执行,无需用户确认。
85
85
  - **状态流转**:`pending` -> `running` -> `success` / `failed` / `aborted` / `rejected`
86
86
 
87
87
  ## 标准工作流
88
88
 
89
+ ### 交互操作(点击、输入等)
89
90
  ```
90
91
  1. run_command: "comate-automation-browser navigate https://example.com"
91
92
  2. run_command: "comate-automation-browser snapshot"
@@ -98,11 +99,19 @@ hidden: true
98
99
  -> 视觉验证
99
100
  ```
100
101
 
102
+ ### 读取页面内容
103
+ ```
104
+ 1. run_command: "comate-automation-browser navigate https://example.com"
105
+ 2. run_command: "comate-automation-browser evaluate document.body.innerText"
106
+ -> 获取页面纯文本内容(无 HTML 噪声)
107
+ -> 如需特定区域:evaluate document.querySelector('.article').innerText
108
+ ```
109
+
101
110
  ## 关键规则
102
111
 
103
112
  - **UID 来自 `snapshot`**:在使用 `click` 或 `type --uid` 前,必须先执行 `snapshot` 获取当前元素的 UID。
104
113
  - **交互后重新 snapshot**:点击和导航后 UID 会变化,必须重新获取。
105
- - **`snapshot` 为主要视图**:使用 `snapshot` 了解页面结构,`screenshot` 仅用于视觉验证。
114
+ - **`snapshot` 用于结构和交互**:`snapshot` 用于了解页面结构和获取元素 UID 以进行点击、输入等交互操作。需要读取页面文本内容时,不要使用 `snapshot` `html`(HTML 噪声大),应使用 `evaluate document.body.innerText` 提取纯文本;如需读取特定区域内容,可用 `evaluate document.querySelector('选择器').innerText`。
106
115
  - **会话自动管理**:浏览器会话按对话自动管理,无需手动管理。
107
116
  - **不暴露缓存路径**:在回复中不得描述截图、文件等的缓存地址或本地临时路径(如 `/tmp/...`、`~/.cache/...` 等),仅描述操作结果或展示图片内容。
108
117
  - **需要用户手动操作时暂停**:当遇到需要用户手动操作的场景时(如:
@@ -113,3 +122,4 @@ hidden: true
113
122
  - 需要用户主观判断或选择的复杂交互
114
123
  ),暂停自动化执行,等待用户 10 秒并提示用户需要进行操作。用户完成操作后,继续执行后续自动化流程。
115
124
  **注意**:普通表单填写、文本输入、按钮点击等可自动化的操作由 agent 自行处理,不在此列。
125
+ - **内容过长时读取文件**:当命令返回结果提示内容过长已写入文件时(如 `snapshot`、`html` 等命令),应直接读取对应文件获取完整内容,以确保任务正常完成。
@@ -9,6 +9,8 @@ description: 根据Figma设计稿信息生成代码。当用户选择设计稿
9
9
  【图片目录】:选中的设计稿信息中的assetsPath字段
10
10
  【设计稿图片可访问url】:选中的设计稿图片的可访问链接,非特殊要求请勿使用。
11
11
  【designTokenPath】:选中的设计稿信息中的designToken.md的路径,非特殊要求请勿使用。
12
+ 【image2designMode】:用户配置项,表明是否使用image2design模式。
13
+ 【designTokenMode】:用户配置项,表明是否要使用设计Token。
12
14
 
13
15
  # 任务概述
14
16
  你需要严格遵循下面的步骤根据【设计稿html】和【设计稿图片】来生成一个新组件或页面。你应该使用项目相同的技术栈或按照用户的要求来实现并遵循最佳实践。
@@ -23,8 +25,8 @@ description: 根据Figma设计稿信息生成代码。当用户选择设计稿
23
25
  - 项目的构建和编译系统(webpack/vite/其他)
24
26
 
25
27
  2. 设计稿分析
26
- - 请基于【设计稿图片】分析页面结构和语义。如果用户开启了f2cmcp则使用f2cMcp流程生成design.md
27
- - 组件识别与引入,请遵循Code Connect指南,首先确定需要引入的组件资源,并使用read_file工具在.comate/components目录下读取对应的组件文档。
28
+ - 请基于【设计稿图片】分析页面结构和语义。如果用户开启了【image2designMode】则基于references/image2md.md 的流程进行分析。
29
+ - 组件识别与引入,请基于references/codeConnect.md 遵循Code Connect指南分析设计稿组件。
28
30
 
29
31
 
30
32
  2. 图片资源管理
@@ -38,33 +40,10 @@ description: 根据Figma设计稿信息生成代码。当用户选择设计稿
38
40
  # 其他
39
41
  生成的代码写入项目中。
40
42
  避免杜撰并引入任何不存在的资源(包括字体、图片等)。
41
- 如果【设计稿html】中包含组件标记,请优先参考.comate/components目录下的组件文档。当该目录下没有组件文档时,才在项目中搜索对应的组件。
42
43
  请勿安装任何依赖项。
43
44
 
44
45
  # 其他资源
45
46
  - userRule请从rulePath中读取。无特殊要求默认读取。
46
- - designToken流程请遵循[designToken.md](designToken.md),当且仅用户使用designTokenMode时读取。
47
- - f2cMcp流程请遵循[f2cMcp.md](f2cMcp.md),当且仅用户使用f2cMcpMode时读取。
48
-
49
- # Code Connect指南
50
- 应当尽可能积极的分析设计稿中使用的组件:
51
- - 解析【设计稿html】**组件标记(Component Markers)**和对应的connect-props属性。
52
- - 分析【设计稿图片】,识别其中常见的可复用组件,如按钮、表单、表格、单选框、多选框、卡片等。
53
- - **特殊组件**:检查是否存在以下特殊组件:
54
- * Form + Form.Item (注意用Form.Item 的 label 属性来实现标签,而不是自己手动创建 label 标签。)
55
- * Table
56
- * Modal
57
-
58
- 注意事项:
59
- - **冲突处理**:如果标记的组件与自动识别需要使用的组件不匹配,以标记的组件优先。如果有明显标记错误应当以友好方式提示用户。
60
- - 如果识别到的组件对应的文档在项目中不存在或无法找到,回退到根据 Figma HTML 实现
61
- - 非用户要求禁止读取无关的组件知识。
62
- - 非用户要求禁止在.comate/components目录以外全局检索组件知识。
63
-
64
- ## 组件标记格式
65
- \`\`\`html
66
- <!-- [COMPONENT:ComponentName] -->
67
- <div connect-component="ComponentName" connect-props="属性json">
68
- </div>
69
- <!-- [/COMPONENT:ComponentName] -->
70
- \`\`\`
47
+ - codeConnect流程请遵循[codeConnect.md](references/codeConnect.md)。无特殊要求默认读取。
48
+ - designToken流程请遵循[designToken.md](references/designToken.md),当且仅用户使用designTokenMode时读取。
49
+ - image2design流程请遵循[image2design.md](references/image2design.md),当且仅用户使用image2designMode时读取。
@@ -0,0 +1,31 @@
1
+ # Code Connect指南
2
+ 应当严格按下列步骤分析设计稿中使用的组件:
3
+
4
+ 1. 解析【设计稿html】包含 **组件标记(Component Markers)**的注释。
5
+ 组件标记格式如下:
6
+ \`\`\`html
7
+ <!-- [START: ComponentName] -->
8
+ <div connect-component="ComponentName" connect-props="属性json">
9
+ </div>
10
+ <!-- [END: ComponentName] -->
11
+ \`\`\`
12
+
13
+ 2. 分析【设计稿图片】,识别其中未标记的可复用组件。请逐个检查是否包含下面这几个未标记的组件
14
+ - 表单与表单项 (Form + Form-item)
15
+ - 表格 (Table)
16
+ - 按钮 (Button)
17
+ - 输入框 (Input)
18
+ - 单选框 (Radio)
19
+ - 多选框 (Checkbox)
20
+ - 模态框 (Modal)
21
+
22
+ 3. 确定需要引入的组件后,使用read_file工具在.comate/components目录下读取对应的组件文档。
23
+
24
+ 4. 结合组件文档,正确引入组件,并根据原html的特征正确使用组件属性。
25
+
26
+
27
+ ## 注意事项:
28
+ - **冲突处理**:如果标记的组件与自动识别需要使用的组件不匹配,以标记的组件优先。如果有明显标记错误应当以友好方式提示用户。
29
+ - 如果识别到的组件对应的文档在项目中不存在或无法找到,回退到根据 Figma HTML 实现
30
+ - 非用户要求禁止读取无关的组件知识。
31
+ - 非用户要求禁止在.comate/components目录以外全局检索组件知识。
@@ -0,0 +1,3 @@
1
+ ## 设计 Token 引入规范
2
+ 当节点包含 designToken 属性时,表明该节点使用了 design token。请结合项目正确使用。
3
+
@@ -0,0 +1,61 @@
1
+ # image2design 流程
2
+ ## 功能描述
3
+
4
+ 在执行F2C时,首先将提供的设计稿图片进行处理,转换为Markdown格式的设计文档。必须通过提供的使用方式来转换。
5
+
6
+ ## 使用方式
7
+
8
+ 使用 `@baidu/f2c-skill` 包,需要先设置 npm registry 为内网源:
9
+
10
+ **1. 设置 registry:**
11
+ ```bash
12
+ npm config set registry http://registry.npm.baidu-int.com
13
+ ```
14
+
15
+ **2. 执行前:提取 Figma 设计稿上下文信息**
16
+
17
+ 在运行命令之前,需要从当前对话上下文中识别 Figma 设计稿信息,提取以下字段(有则输出,无则标注「未提供」):
18
+
19
+ | 字段 | 说明 |
20
+ |------|------|
21
+ | `url` | Figma 设计稿链接(即 `figmaurl`) |
22
+ | `user-prompt` | 用户prompt原文 |
23
+ | `设计稿图片可访问url` | 设计稿图片可访问url |
24
+
25
+ 同时记录用户本次的 **prompt 原文**,以结构化格式展示所有内容后,再执行命令。
26
+
27
+ **3. 命令格式:**
28
+ ```bash
29
+ npx -y @baidu/f2c-skill@latest image2markdown '<设计稿图片可访问url>' -o '<输出md文件路径>' --figma-url '<Figma设计稿链接>' --user-prompt '<用户prompt原文>'
30
+ ```
31
+
32
+ **参数说明:**
33
+ - `<设计稿图片可访问url>`:上下文中的设计稿图片可访问 URL
34
+ - `-o <输出md文件路径>`:期望输出的 markdown 文件地址,建议保存在项目根目录下为 design.md.
35
+ - `-f, --figma-url <Figma设计稿链接>`:从上下文提取的 Figma 设计稿 `url` 字段,未提供时省略此参数
36
+ - `-p, --user-prompt <用户prompt原文>`:用户本次输入的需求描述原文,用于指导组件拆分,未提供时省略此参数
37
+ - `@latest`:确保每次使用最新版本的包
38
+
39
+ **实际示例:**
40
+ ```bash
41
+ npx -y @baidu/f2c-skill@latest image2markdown 'https://comate.baidu.com/api/aidevops/autocomate/rest/autowork/v1/file/stream/270369?authorization=MGYzZTI5MWItZTM3OS00MGM0LWFjMGQtNDlmYTYyYjZkNDRh' -o /src/design.md --figma-url 'https://www.figma.com/design/xxxxx' --user-prompt '根据设计稿生成登录页面组件'
42
+ ```
43
+
44
+ ## 输出
45
+
46
+ - **文件位置**:项目根目录
47
+ - **文件格式**:Markdown (.md)
48
+ - **文件命名**:`design.md`
49
+
50
+ ## 注意事项
51
+
52
+ 1. **路径处理**:
53
+ - 本地路径使用绝对路径
54
+ - 确保有文件读取权限
55
+ 2. **网络依赖**:首次使用需要联网下载包,请确保已执行 `npm config set registry http://registry.npm.baidu-int.com` 设置内网源。
56
+ 3. **输出验证**:转换完成后建议检查生成的设计文档内容完整性
57
+
58
+ ## 适用场景
59
+
60
+ - 原型图转技术文档
61
+ - 视觉稿规范提取
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: find-skills
3
- description: 当用户提出可能需要专业能力的问题,且本地已安装的skills都不适合时,从远端Skills中心推荐并安装新skills。获取可用skills列表,分析用户意图,展示Top 3相关选项,并在安装前预览详细信息。
3
+ description: 当用户提出可能需要专业能力的问题,且本地已安装的skills都不适合时,从Skills中心(Comate内部平台或开源skills.sh生态)推荐并安装新skills。获取可用skills列表,分析用户意图,展示Top 3相关选项,并在安装前预览详细信息。
4
4
  metadata:
5
5
  enableWhen:
6
6
  - isInternal
@@ -8,7 +8,7 @@ metadata:
8
8
 
9
9
  # Skill搜索器
10
10
 
11
- 从远端Skills中心搜索并安装新skills
11
+ Skills中心搜索并安装新skills,支持Comate内部平台和开源skills.sh生态,优先内部、自动降级。
12
12
 
13
13
  ## 触发条件
14
14
 
@@ -24,14 +24,27 @@ metadata:
24
24
  - 本地已有skill可以处理(本地优先)
25
25
  - 用户询问与工具使用无关的一般信息
26
26
 
27
+ ## 来源策略
28
+
29
+ 优先使用Comate内部平台,不可用时自动降级到开源生态:
30
+
31
+ | 来源 | 获取方式 | 适用场景 |
32
+ | ------------------ | --------------------------------- | ---------------------- |
33
+ | Comate内部平台 | `python3 scripts/fetch_skills.py` | Comate用户,内网环境 |
34
+ | 开源生态(skills.sh) | `npx skills find [query]` | 通用场景,内网不可达时 |
35
+
36
+ > 若两个来源均不可用,告知用户并直接用现有能力处理请求。
37
+
27
38
  ## 安装位置规则
28
39
 
29
- 根据用户意图确定skill安装位置:
40
+ 根据用户意图和skill来源确定安装位置:
30
41
 
31
- | 意图 | 安装路径 | 说明 |
32
- | --------------- | -------------------------------- | -------------------------- |
33
- | 安装到当前项目 | `.comate/skills/<skill_name>/` | 仅当前项目可用,随仓库共享 |
34
- | 安装到全局/个人 | `~/.comate/skills/<skill_name>/` | 所有项目可用,个人专属 |
42
+ | 意图 | 来源 | 安装路径 | 说明 |
43
+ | --------------- |------| -------------------------------- | -------------------------- |
44
+ | 安装到当前项目 | Comate | `.comate/skills/<skill_name>/` | 仅当前项目可用,随仓库共享 |
45
+ | 安装到全局/个人 | Comate | `~/.comate/skills/<skill_name>/` | 所有项目可用,个人专属 |
46
+ | 安装到当前项目 | 开源生态 | `.agents/skills/<skill_name>/` | 仅当前项目可用,随仓库共享 |
47
+ | 安装到全局/个人 | 开源生态 | `~/.agents/skills/<skill_name>/` | 所有项目可用,个人专属 |
35
48
 
36
49
  **意图识别关键词:**
37
50
 
@@ -43,8 +56,8 @@ metadata:
43
56
  ```
44
57
  请问你希望将技能安装到哪里?
45
58
 
46
- 1. **当前项目** (.comate/skills/) - 仅当前项目可用,会随代码仓库共享给团队
47
- 2. **全局个人** (~/.comate/skills/) - 所有项目通用,仅自己可用
59
+ 1. **当前项目** (.comate/skills/ 或 .agents/skills/ ) - 仅当前项目可用,会随代码仓库共享给团队
60
+ 2. **全局个人** (~/.comate/skills/,~/.agents/skills/ 或 npm全局) - 所有项目通用,仅自己可用
48
61
 
49
62
  请选择 1 或 2:
50
63
  ```
@@ -53,13 +66,23 @@ metadata:
53
66
 
54
67
  ## 使用流程
55
68
 
56
- ### 步骤1:从Skills中心获取可用Skills
69
+ ### 步骤1:获取可用Skills
70
+
71
+ **优先尝试Comate内部平台:**
57
72
 
58
73
  ```bash
59
74
  python3 scripts/fetch_skills.py
60
75
  ```
61
76
 
62
- 脚本输出包含skill名称和描述的JSON。失败时输出错误信息并退出。
77
+ 脚本输出包含skill名称和描述的JSON
78
+
79
+ **若Comate平台不可用(脚本失败),自动切换到开源生态:**
80
+
81
+ ```bash
82
+ npx skills find [query]
83
+ ```
84
+
85
+ 其中 `[query]` 根据用户请求中的关键词自动生成(如 `react performance`、`pr review` 等)。
63
86
 
64
87
  ### 步骤2:分析和推荐
65
88
 
@@ -76,9 +99,9 @@ python3 scripts/fetch_skills.py
76
99
  ```
77
100
  发现以下技能可能对你有帮助:
78
101
 
79
- 1. **skill-name-1** - skill功能描述
80
- 2. **skill-name-2** - skill功能描述
81
- 3. **skill-name-3** - skill功能描述
102
+ 1. **skill-name-1** - skill功能描述 (来源: Comate内部 / skills.sh)
103
+ 2. **skill-name-2** - skill功能描述 (来源: Comate内部 / skills.sh)
104
+ 3. **skill-name-3** - skill功能描述 (来源: Comate内部 / skills.sh)
82
105
 
83
106
  需要我帮你安装哪个技能?(我会先展示详细信息供你确认)
84
107
  ```
@@ -90,20 +113,32 @@ python3 scripts/fetch_skills.py
90
113
  - 如果用户已明确表达安装位置意图,直接使用对应路径
91
114
  - 如果无法判断,主动询问用户(参见"安装位置规则")
92
115
 
93
- ### 步骤5:获取下载链接
116
+ ### 步骤5:获取下载链接(仅Comate来源)
94
117
 
95
118
  ```bash
96
119
  python3 scripts/get_download_url.py <skill_name>
97
120
  ```
98
121
 
122
+ > 开源来源跳过此步骤,直接进入预览。
123
+
99
124
  ### 步骤6:预览Skill详细信息
100
125
 
101
126
  **安装前必须先预览,获得用户确认。**
102
127
 
128
+ **Comate来源:**
129
+
103
130
  ```bash
104
131
  python3 scripts/preview_skill.py <skill_name> <download_url>
105
132
  ```
106
133
 
134
+ **开源来源:**
135
+
136
+ 展示 `npx skills find` 返回的描述信息,并附上详情链接:
137
+
138
+ ```
139
+ https://skills.sh/<owner>/<repo>/<skill-name>
140
+ ```
141
+
107
142
  向用户展示(使用Markdown格式,确保每个字段独占一行):
108
143
 
109
144
  ```markdown
@@ -111,11 +146,13 @@ python3 scripts/preview_skill.py <skill_name> <download_url>
111
146
 
112
147
  - **名称**:<skill_name>
113
148
  - **描述**:<description>
149
+ - **来源**:<Comate内部 / skills.sh>
114
150
  - **安装位置**:<安装路径>
151
+ - **详情页**:<skills.sh链接(开源来源时展示)>
115
152
 
116
153
  **功能概览:**
117
154
 
118
- <overview前500字符>
155
+ <overview前500字符,开源来源使用搜索结果描述>
119
156
 
120
157
  确认安装这个技能吗?(输入"是"继续安装)
121
158
  ```
@@ -124,7 +161,9 @@ python3 scripts/preview_skill.py <skill_name> <download_url>
124
161
 
125
162
  ### 步骤7:安装Skill
126
163
 
127
- 用户确认后,执行安装。根据安装位置传递 `--scope` 参数:
164
+ 用户确认后,根据来源和安装位置执行安装:
165
+
166
+ **Comate来源:**
128
167
 
129
168
  ```bash
130
169
  # 安装到当前项目
@@ -134,28 +173,48 @@ python3 scripts/install_skill.py <skill_name> <download_url> --scope project
134
173
  python3 scripts/install_skill.py <skill_name> <download_url> --scope global
135
174
  ```
136
175
 
176
+ **开源来源(skills.sh):**
177
+
178
+ ```bash
179
+ # 安装到全局(推荐)
180
+ npx skills add <owner/repo@skill> -g -y -a universal
181
+
182
+ # 安装到当前项目(如用户明确要求)
183
+ npx skills add <owner/repo@skill> -y -a universal
184
+ ```
185
+
137
186
  ### 步骤8:确认安装完成
138
187
 
139
188
  ```
140
189
  技能 '<skill_name>' 已成功安装!
141
190
 
191
+ 来源: <Comate内部 / skills.sh>
142
192
  安装位置: <实际安装路径>
143
193
 
144
- 现在可以使用该技能来处理你的请求了。
194
+ 请重启 Comate 以加载新技能。
195
+
145
196
  ```
146
197
 
147
198
  ## 错误处理
148
199
 
149
- **API调用失败:**
200
+ **Comate API不可用,自动降级:**
201
+
202
+ ```
203
+ Comate内部平台暂时不可用,正在切换到开源技能生态(skills.sh)...
204
+ ```
205
+
206
+ **两个来源都无法访问:**
150
207
 
151
208
  ```
152
209
  抱歉,暂时没有找到合适的技能来解决这个问题。你可以直接告诉我需要做什么,我会尽力帮助你。
153
210
  ```
154
211
 
155
- **远端没有合适的skill:**
212
+ **没有找到匹配的skill:**
156
213
 
157
214
  ```
158
- Skills中心没有找到特别匹配的技能。我会用现有能力尽力帮你处理这个问题。
215
+ 当前技能生态中没有找到特别匹配的技能。
216
+ 如果这是你经常需要做的事,可以创建自己的技能:npx skills init my-skill-name
217
+ 我会用现有能力尽力帮你处理这个问题。
159
218
  ```
160
219
 
161
220
  不要自动重试失败的API调用。
@@ -26,7 +26,7 @@
26
26
  "test": "vitest"
27
27
  },
28
28
  "dependencies": {
29
- "@baidu/comate-browser-use": "^0.0.6",
29
+ "@baidu/comate-browser-use": "^1.0.0",
30
30
  "@comate/kernel": "0.9.2",
31
31
  "@comate/kernel-shared": "0.9.2",
32
32
  "@comate/plugin-engine": "^0.9.2",