@zhouhao4221/devflow-skills 0.3.6 → 0.3.7
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/package.json +1 -1
- package/plugins/diag/templates/services.yaml.template +31 -0
- package/plugins/req/skills/branch/SKILL.md +48 -377
- package/plugins/req/skills/dev/SKILL.md +1 -1
- package/plugins/req/skills/dev-guide/SKILL.md +74 -399
- package/plugins/req/skills/do/SKILL.md +1 -1
- package/plugins/req/skills/done/SKILL.md +2 -2
- package/plugins/req/skills/edit/SKILL.md +1 -1
- package/plugins/req/skills/fix/SKILL.md +1 -1
- package/plugins/req/skills/init/SKILL.md +66 -430
- package/plugins/req/skills/issue/SKILL.md +1 -1
- package/plugins/req/skills/migrate/SKILL.md +1 -1
- package/plugins/req/skills/natural-language-dispatcher/SKILL.md +78 -438
- package/plugins/req/skills/new/SKILL.md +1 -1
- package/plugins/req/skills/pr/SKILL.md +1 -1
- package/plugins/req/skills/prd/SKILL.md +1 -1
- package/plugins/req/skills/prd-edit/SKILL.md +1 -1
- package/plugins/req/skills/release/SKILL.md +1 -1
- package/plugins/req/skills/review/SKILL.md +1 -1
- package/plugins/req/skills/review-pr/SKILL.md +74 -601
- package/plugins/req/skills/test/SKILL.md +41 -355
- package/plugins/req/skills/test_new/SKILL.md +36 -356
- package/plugins/req/skills/test_regression/SKILL.md +1 -1
- package/plugins/req/skills/update-template/SKILL.md +1 -1
- package/plugins/req/skills/use/SKILL.md +1 -1
- package/plugins/req/templates/claude-md-snippets/frontend-react.md +48 -0
- package/plugins/req/templates/claude-md-snippets/generic.md +43 -0
- package/plugins/req/templates/claude-md-snippets/go-backend.md +47 -0
- package/plugins/req/templates/claude-md-snippets/java-backend.md +46 -0
- package/plugins/req/templates/docker-compose.test.yml +84 -0
- package/plugins/req/templates/index-template.md +60 -0
- package/plugins/req/templates/module-template.md +79 -0
- package/plugins/req/templates/prd-template.md +338 -0
- package/plugins/req/templates/quick-template.md +71 -0
- package/plugins/req/templates/release-prompt-template.md +51 -0
- package/plugins/req/templates/requirement-template.md +256 -0
- package/plugins/req/templates/scripts/test-env.sh +226 -0
- package/plugins/req/templates/tests/e2e/playwright.config.ts +86 -0
- package/plugins/uat/templates/flow-template.md +116 -0
- package/plugins/uat/templates/testid-convention.md +42 -0
|
@@ -1,531 +1,171 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: natural-language-dispatcher
|
|
3
|
-
description: 自然语言需求调度器。当用户用自然语言描述下列意图时自动触发并映射到对应命令: - 需求文档:新增/新建/创建需求、修改/编辑/变更需求(带编号) - 修复与开发:修 bug、修复报错、优化/重构/升级/统一代码、快速修复、小功能 - 状态流转:开发/测试/评审通过/评审驳回/完成/归档需求(必须带编号) - 版本 PR:规范提交、创建 PR、审查 PR、合并 PR、拉 PR 评论 - Issue 操作:提/建/开 issue、评论讨论、关闭/重开/查看/列出 issue - URL 识别:识别 issue/PR
|
|
3
|
+
description: 自然语言需求调度器。当用户用自然语言描述下列意图时自动触发并映射到对应命令: - 需求文档:新增/新建/创建需求、修改/编辑/变更需求(带编号) - 修复与开发:修 bug、修复报错、优化/重构/升级/统一代码、快速修复、小功能 - 状态流转:开发/测试/评审通过/评审驳回/完成/归档需求(必须带编号) - 版本 PR:规范提交、创建 PR、审查 PR、合并 PR、拉 PR 评论 - Issue 操作:提/建/开 issue、评论讨论、关闭/重开/查看/列出 issue - URL 识别:识别 issue/PR 链接并映射到对应命令 - 确认偏好:开启/关闭/查询 git commit 前的原生确认弹框
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# 自然语言需求调度器
|
|
7
7
|
|
|
8
|
-
|
|
8
|
+
解析用户自然语言意图,映射到对应命令。本技能只做**意图识别与命令映射**,解析完成后读取对应技能文件按原流程执行。
|
|
9
9
|
|
|
10
|
-
>
|
|
10
|
+
> 唯一例外:§七「确认偏好开关」不对应任何命令,由本技能直接执行文件动作。
|
|
11
11
|
|
|
12
12
|
---
|
|
13
13
|
|
|
14
14
|
## 编号解析规则
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
| 输入 | 解析结果 |
|
|
19
|
-
|------|---------|
|
|
16
|
+
| 输入 | 解析 |
|
|
17
|
+
|------|------|
|
|
20
18
|
| `REQ-025` / `REQ025` | REQ-025 |
|
|
21
19
|
| `QUICK-003` / `QUICK003` | QUICK-003 |
|
|
22
|
-
| 纯数字 `025` / `
|
|
23
|
-
| `#42`
|
|
20
|
+
| 纯数字 `025` / `3` | REQ-XXX(补零到 3 位) |
|
|
21
|
+
| `#42` / `issue 42` | issue `#42`,映射为 `--from-issue=#42` |
|
|
24
22
|
|
|
25
|
-
|
|
23
|
+
纯数字默认 REQ。当前分支暗示 QUICK(如 `fix/QUICK-XXX-...`)时优先 QUICK。无法确定时询问。
|
|
26
24
|
|
|
27
25
|
---
|
|
28
26
|
|
|
29
27
|
## 一、需求文档操作
|
|
30
28
|
|
|
31
|
-
###
|
|
32
|
-
|
|
33
|
-
**触发**:消息中包含"新增需求"、"新建需求"、"创建需求"(**不要求**需求编号,编号由系统自动生成)。
|
|
34
|
-
|
|
35
|
-
**参数提取**:
|
|
36
|
-
|
|
37
|
-
| 字段 | 示例 |
|
|
38
|
-
|------|------|
|
|
39
|
-
| 标题 | "新增需求 用户积分管理" → 标题="用户积分管理" |
|
|
40
|
-
| 类型 | "新增后端需求" → `--type=后端` |
|
|
41
|
-
| 模块 | "用户模块的需求" → `--module=用户模块` |
|
|
42
|
-
| issue | "从 #42 创建需求" → `--from-issue=#42` |
|
|
43
|
-
|
|
44
|
-
**示例**:
|
|
45
|
-
- "新增需求 用户积分管理" → `/req:new 用户积分管理`
|
|
46
|
-
- "新建一个后端需求,做订单导出" → `/req:new 订单导出 --type=后端`
|
|
47
|
-
- "从 #12 创建需求" → `/req:new --from-issue=#12`
|
|
29
|
+
### 新增需求 → `/req:new`
|
|
48
30
|
|
|
49
|
-
|
|
31
|
+
触发:"新增需求"、"新建需求"、"创建需求"(不要求编号,系统自动生成)。
|
|
50
32
|
|
|
51
|
-
|
|
52
|
-
1. 关键词:"修改需求"、"编辑需求"、"变更需求"
|
|
53
|
-
2. 需求编号:`REQ-XXX` 或纯数字
|
|
33
|
+
提取字段:标题、类型(`--type`)、模块(`--module`)、issue(`--from-issue`)。
|
|
54
34
|
|
|
55
|
-
|
|
35
|
+
### 修改需求 → `/req:edit`
|
|
56
36
|
|
|
57
|
-
|
|
58
|
-
- "修改025需求,增加导出功能" → `/req:edit REQ-025`(编辑意图="增加导出功能")
|
|
59
|
-
- "变更需求 REQ-003,调整业务规则" → `/req:edit REQ-003`(编辑意图="调整业务规则")
|
|
37
|
+
触发:"修改/编辑/变更需求" + 编号(缺编号不触发)。
|
|
60
38
|
|
|
61
39
|
---
|
|
62
40
|
|
|
63
|
-
##
|
|
64
|
-
|
|
65
|
-
### 2.1 修 bug → `/req:fix`
|
|
66
|
-
|
|
67
|
-
**触发**(同时满足):
|
|
68
|
-
1. 动词:"修"、"修复"、"修一下"、"修个"
|
|
69
|
-
2. 问题词:"bug"、"问题"、"报错"、"异常"、"错误"
|
|
70
|
-
3. **有具体问题描述**(不是单纯讨论)
|
|
71
|
-
|
|
72
|
-
**示例**:
|
|
73
|
-
- "修个登录超时的 bug" → `/req:fix 登录超时`
|
|
74
|
-
- "修复订单分页数据重复" → `/req:fix 订单分页数据重复`
|
|
75
|
-
- "修一下 Excel 导出中文乱码" → `/req:fix Excel 导出中文乱码`
|
|
76
|
-
- "修 #42 这个 bug" / "修复 issue #42" → `/req:fix --from-issue=#42`
|
|
77
|
-
|
|
78
|
-
**`--auto` 非交互模式触发词**(用户希望一键跑完,跳过方案确认并自动提交 + 发 PR):
|
|
79
|
-
|
|
80
|
-
- "一键修"、"一键修复"、"直接修"、"自动修"、"自动修复"
|
|
81
|
-
- "修完直接发 PR"、"改完自动提交"、"修好就发 PR"
|
|
82
|
-
- "不用确认"、"别问我"、"自动来"、"跑完再说"
|
|
83
|
-
- 显式带 "--auto"
|
|
41
|
+
## 二、修复与开发(无文档)
|
|
84
42
|
|
|
85
|
-
|
|
86
|
-
- "一键修复登录超时" → `/req:fix 登录超时 --auto`
|
|
87
|
-
- "直接修 Excel 导出乱码并发 PR" → `/req:fix Excel 导出乱码 --auto`
|
|
88
|
-
- "自动修 #42" → `/req:fix --from-issue=#42 --auto`
|
|
89
|
-
- "修下登录超时,不用确认" → `/req:fix 登录超时 --auto`
|
|
43
|
+
### 修 bug → `/req:fix`
|
|
90
44
|
|
|
91
|
-
|
|
45
|
+
触发:"修/修复/修一下" + "bug/问题/报错/异常/错误" + 具体描述。
|
|
92
46
|
|
|
93
|
-
|
|
94
|
-
🧠 识别:/req:fix <问题> --auto
|
|
47
|
+
`--auto` 触发词:"一键修"、"自动修"、"修完直接发 PR"、"不用确认"等。识别到 `--auto` 时说明能力边界(跳过哪些确认、哪些无法跳过)。
|
|
95
48
|
|
|
96
|
-
|
|
97
|
-
✓ 修复方案确认
|
|
98
|
-
✓ git commit 前的原生确认弹框(默认就不存在;若已开启提交确认,通过 .claude/.req-auto marker 放行)
|
|
99
|
-
✓ /req:commit 的类型交互式选择(AI 推断为"修复")
|
|
100
|
-
✓ --from-issue 时的关闭 issue 询问
|
|
101
|
-
✓ /req:pr 创建后的分支清理询问
|
|
102
|
-
✓ 手工串联 commit → push → PR
|
|
49
|
+
不触发:提问/讨论语气("这个 bug 怎么修")。
|
|
103
50
|
|
|
104
|
-
|
|
105
|
-
- 首次调用 Bash/Write/Edit 的工具权限确认
|
|
106
|
-
- Plan Mode approval(若你开了 Plan Mode)
|
|
51
|
+
### 优化/重构/升级 → `/req:do`
|
|
107
52
|
|
|
108
|
-
|
|
109
|
-
- 保护分支(main/master/develop)上的提交 —— 必须切分支
|
|
110
|
-
- AI 对代码的实际分析与修改(核心执行,非确认)
|
|
53
|
+
触发:祈使语气动词(优化、重构、升级、统一、整理、抽取、迁移)+ 具体对象。
|
|
111
54
|
|
|
112
|
-
|
|
113
|
-
```
|
|
55
|
+
不触发:讨论语气("可以优化")、无对象("优化一下")。
|
|
114
56
|
|
|
115
|
-
|
|
57
|
+
### 快速修复/小功能 → `/req:new-quick`
|
|
116
58
|
|
|
117
|
-
|
|
118
|
-
- "这个 bug 怎么修"(提问)
|
|
119
|
-
- "这个 bug 得修"(讨论,无具体描述)
|
|
120
|
-
|
|
121
|
-
### 2.2 优化/重构/升级/规范 → `/req:do`
|
|
122
|
-
|
|
123
|
-
**触发**(同时满足):
|
|
124
|
-
1. 动词:**"优化"、"重构"、"升级"、"统一"、"整理"、"抽取"、"迁移"**(祈使语气)
|
|
125
|
-
2. 动词后带**具体对象**(名词短语)
|
|
126
|
-
|
|
127
|
-
**示例**:
|
|
128
|
-
- "优化订单查询性能" → `/req:do 优化订单查询性能`
|
|
129
|
-
- "重构用户服务层" → `/req:do 重构用户服务层`
|
|
130
|
-
- "升级 Go 到 1.23" → `/req:do 升级 Go 到 1.23`
|
|
131
|
-
- "统一错误码格式" → `/req:do 统一错误码格式`
|
|
132
|
-
- "做一下 #42" / "处理 issue #42" → `/req:do --from-issue=#42`
|
|
133
|
-
|
|
134
|
-
**不触发**:
|
|
135
|
-
- "这段代码可以优化"(讨论性)
|
|
136
|
-
- "是不是该重构了"(问句)
|
|
137
|
-
- "优化一下"(无对象)
|
|
138
|
-
|
|
139
|
-
### 2.3 快速修复/小功能(需文档)→ `/req:new-quick`
|
|
140
|
-
|
|
141
|
-
**触发**:
|
|
142
|
-
- "快速修复"、"快速改一下"、"快速改"、"小改动"、"小功能"、"快速需求"
|
|
143
|
-
|
|
144
|
-
与 `/req:fix` 的区别:`/req:fix` 无文档,`/req:new-quick` 会创建 QUICK 文档。用户语气偏向"要有记录"时选此项。
|
|
145
|
-
|
|
146
|
-
**示例**:
|
|
147
|
-
- "快速改一下分页默认值" → `/req:new-quick 分页默认值`
|
|
148
|
-
- "小功能:导出按钮加权限控制" → `/req:new-quick 导出按钮加权限控制`
|
|
149
|
-
- "快速修复,从 #42" → `/req:new-quick --from-issue=#42`
|
|
59
|
+
触发:"快速修复"、"小功能"、"快速需求"等。会创建 QUICK 文档(与 `/req:fix` 无文档的区别)。
|
|
150
60
|
|
|
151
61
|
---
|
|
152
62
|
|
|
153
63
|
## 三、需求状态流转(必须带编号)
|
|
154
64
|
|
|
155
|
-
**共同触发条件**:动作关键词 **+** 需求编号(REQ-XXX / QUICK-XXX / 纯数字),缺编号不触发。
|
|
156
|
-
|
|
157
|
-
### 3.1 开发 → `/req:dev`
|
|
158
|
-
|
|
159
|
-
**触发**:"开发"、"开始开发"、"进入开发" + 编号
|
|
160
|
-
|
|
161
|
-
**示例**:
|
|
162
|
-
- "开始开发025" → `/req:dev REQ-025`
|
|
163
|
-
- "开发 QUICK-003" → `/req:dev QUICK-003`
|
|
164
|
-
|
|
165
|
-
### 3.2 测试 → `/req:test`
|
|
166
|
-
|
|
167
|
-
**触发**:"测试"、"开始测试"、"进入测试"、"做测试" + 编号
|
|
168
|
-
|
|
169
|
-
**示例**:
|
|
170
|
-
- "025 开始测试" → `/req:test REQ-025`
|
|
171
|
-
- "测试 REQ-003" → `/req:test REQ-003`
|
|
172
|
-
|
|
173
|
-
### 3.3 评审 → `/req:review`
|
|
174
|
-
|
|
175
|
-
**触发**:"评审通过"、"通过评审"、"评审驳回"、"驳回评审" + 编号
|
|
176
|
-
|
|
177
65
|
| 自然语言 | 映射 |
|
|
178
66
|
|---------|------|
|
|
179
|
-
| "
|
|
180
|
-
| "
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
**触发**:"完成"、"归档"、"做完了"、"搞完了" + 编号
|
|
185
|
-
|
|
186
|
-
**示例**:
|
|
187
|
-
- "完成025" → `/req:done REQ-025`
|
|
188
|
-
- "025 做完了" → `/req:done REQ-025`
|
|
189
|
-
- "归档 QUICK-003" → `/req:done QUICK-003`
|
|
190
|
-
|
|
191
|
-
> `/req:done` 本身要求 y/n 确认,由原命令保证。
|
|
67
|
+
| "开发/开始开发" + 编号 | `/req:dev` |
|
|
68
|
+
| "测试/开始测试" + 编号 | `/req:test` |
|
|
69
|
+
| "评审通过" + 编号 | `/req:review pass` |
|
|
70
|
+
| "评审驳回/驳回" + 编号 | `/req:review reject` |
|
|
71
|
+
| "完成/归档/做完了" + 编号 | `/req:done` |
|
|
192
72
|
|
|
193
73
|
---
|
|
194
74
|
|
|
195
75
|
## 四、版本与 PR 操作
|
|
196
76
|
|
|
197
|
-
### 4.1 规范提交 → `/req:commit`
|
|
198
|
-
|
|
199
|
-
**触发**:
|
|
200
|
-
- "规范提交"、"提交代码"、"提 commit"、"写 commit"
|
|
201
|
-
- 或"提交" + 修饰语("这次修改"、"本次改动")
|
|
202
|
-
|
|
203
|
-
**示例**:
|
|
204
|
-
- "规范提交" → `/req:commit`
|
|
205
|
-
- "提交这次改动" → `/req:commit`
|
|
206
|
-
|
|
207
|
-
**不触发**:
|
|
208
|
-
- 孤立的"提交"字眼(如"提交到仓库"可能指 push)
|
|
209
|
-
|
|
210
|
-
### 4.2 创建 PR → `/req:pr`
|
|
211
|
-
|
|
212
|
-
**触发**:"创建 PR"、"提 PR"、"发 PR"、"开 PR"
|
|
213
|
-
|
|
214
|
-
**示例**:
|
|
215
|
-
- "创建 PR" → `/req:pr`
|
|
216
|
-
- "提 PR 025" → `/req:pr REQ-025`
|
|
217
|
-
|
|
218
|
-
### 4.3 审查/合并 PR → `/req:review-pr`
|
|
219
|
-
|
|
220
77
|
| 自然语言 | 映射 |
|
|
221
78
|
|---------|------|
|
|
222
|
-
| "
|
|
223
|
-
| "
|
|
224
|
-
| "
|
|
79
|
+
| "规范提交"、"提交代码" | `/req:commit` |
|
|
80
|
+
| "创建 PR"、"提 PR" | `/req:pr` |
|
|
81
|
+
| "审 PR"、"审查 PR" | `/req:review-pr review` |
|
|
82
|
+
| "合并 PR" | `/req:review-pr merge` |
|
|
83
|
+
| "拉 PR 评论"、"处理 PR 反馈" | `/req:review-pr fetch-comments` |
|
|
225
84
|
|
|
226
|
-
|
|
85
|
+
`review` 子命令 `--auto` 触发词:"自动审查"、"审查并提交"、"不用确认"等。
|
|
227
86
|
|
|
228
|
-
-
|
|
229
|
-
- "不用确认"、"别问我"、"跑完再说"
|
|
230
|
-
- 显式带 "--auto"
|
|
231
|
-
|
|
232
|
-
**示例**:
|
|
233
|
-
- "一键审查 PR" → `/req:review-pr review --auto`
|
|
234
|
-
- "自动审查 owner/repo/pulls/158" → `/req:review-pr review --auto`(先切分支)
|
|
235
|
-
- "审 PR,别问我" → `/req:review-pr review --auto`
|
|
236
|
-
|
|
237
|
-
识别到 `--auto` 时回复须说明能力边界(详见 `commands/review-pr.md` 步骤 5.3)。
|
|
238
|
-
|
|
239
|
-
> `/req:review-pr merge` 和 `/req:review-pr fetch-comments` 自身的交互点不走 `--auto`:
|
|
240
|
-
> - `merge` 合并后的分支清理询问由 `branchStrategy.deleteBranchAfterMerge` 配置控制
|
|
241
|
-
> - `fetch-comments` 的"是否应用修改"询问保留,避免 AI 误改代码
|
|
87
|
+
> `merge` 和 `fetch-comments` 各自交互点不走 `--auto`。
|
|
242
88
|
|
|
243
89
|
---
|
|
244
90
|
|
|
245
91
|
## 五、Issue 操作
|
|
246
92
|
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
**触发**(同时满足):
|
|
256
|
-
1. 动词:"提"、"建"、"开"、"新建"、"创建"、"报"
|
|
257
|
-
2. 对象:**"issue"** 或 **"bug"**(带"报"字时)
|
|
258
|
-
|
|
259
|
-
**示例**:
|
|
260
|
-
- "提个 issue: 登录超时" → `/req:issue new 登录超时`
|
|
261
|
-
- "新建 issue 导出 Excel 乱码" → `/req:issue new 导出 Excel 乱码`
|
|
262
|
-
- "开 issue 积分排行榜排序异常" → `/req:issue new 积分排行榜排序异常`
|
|
263
|
-
- "报个 bug:订单分页数据重复" → `/req:issue new 订单分页数据重复`
|
|
264
|
-
- "给 REQ-001 建 issue 讨论实现方案" → `/req:issue new 讨论实现方案 --req=REQ-001`
|
|
265
|
-
|
|
266
|
-
**不触发**:
|
|
267
|
-
- "这个 bug 提给谁?"(提问)
|
|
268
|
-
- "怎么提 issue"(询问用法,走 `/req:help`)
|
|
269
|
-
|
|
270
|
-
### 5.2 评论 / 讨论 → `/req:issue comment`
|
|
271
|
-
|
|
272
|
-
**触发**(同时满足):
|
|
273
|
-
1. 动词:"评论"、"回复"、"回帖"、"留言"、"追评"、"补一句"
|
|
274
|
-
2. issue 编号
|
|
275
|
-
|
|
276
|
-
**示例**:
|
|
277
|
-
- "给 #42 回复 已修复" → `/req:issue comment 42 已修复`
|
|
278
|
-
- "在 issue 170 评论:已定位到 auth.ts" → `/req:issue comment 170 已定位到 auth.ts`
|
|
279
|
-
- "#42 追评:测试环境验证通过" → `/req:issue comment 42 测试环境验证通过`
|
|
280
|
-
- "看下 #42 的讨论" / "列出 #42 的评论" → `/req:issue comment 42 --list`
|
|
281
|
-
|
|
282
|
-
### 5.3 关闭 → `/req:issue close`
|
|
283
|
-
|
|
284
|
-
**触发**:
|
|
285
|
-
- "关闭 issue 42" / "close #42" / "把 issue 42 关了"
|
|
286
|
-
- "关闭 issue 42 并留言 xxx" → `/req:issue close 42 --comment=xxx`
|
|
287
|
-
|
|
288
|
-
**不触发**:
|
|
289
|
-
- "关闭需求 REQ-042"(走 `/req:done`,不是 issue)
|
|
290
|
-
|
|
291
|
-
### 5.4 重开 → `/req:issue reopen`
|
|
292
|
-
|
|
293
|
-
**触发**:"重开 issue 42" / "reopen #42" / "把 issue 42 打开"
|
|
294
|
-
|
|
295
|
-
### 5.5 查看详情 → `/req:issue show`
|
|
296
|
-
|
|
297
|
-
**触发**:
|
|
298
|
-
- "看下 issue 42" / "issue 42 详情" / "展示 #42"
|
|
299
|
-
- "issue 42 有哪些评论" → `/req:issue show 42`(show 会包含评论列表)
|
|
300
|
-
|
|
301
|
-
### 5.6 列表 → `/req:issue list`
|
|
302
|
-
|
|
303
|
-
**触发**:
|
|
304
|
-
- "列出 issue" / "列表 issue" / "open 的 issue" → `/req:issue list --state=open`
|
|
305
|
-
- "已关闭 issue" → `/req:issue list --state=closed`
|
|
306
|
-
- "我的 issue" / "分给我的 issue" → `/req:issue list --assignee=@me`
|
|
307
|
-
- "紧急 issue" / "bug issue" → `/req:issue list --labels=<匹配词>`
|
|
308
|
-
|
|
309
|
-
### 5.7 编辑 → `/req:issue edit`
|
|
93
|
+
| 自然语言 | 映射 |
|
|
94
|
+
|---------|------|
|
|
95
|
+
| "提/建/开 issue: <标题>" | `/req:issue new <标题>` |
|
|
96
|
+
| "给 #N 回复/评论 <内容>" | `/req:issue comment N <内容>` |
|
|
97
|
+
| "关闭/close issue N" | `/req:issue close N` |
|
|
98
|
+
| "重开/reopen issue N" | `/req:issue reopen N` |
|
|
99
|
+
| "看下 issue N" | `/req:issue show N` |
|
|
100
|
+
| "列出 issue" | `/req:issue list` |
|
|
310
101
|
|
|
311
|
-
|
|
312
|
-
- "给 issue 42 加标签 bug" → `/req:issue edit 42 --add-labels=bug`
|
|
313
|
-
- "改 issue 42 标题为 xxx" → `/req:issue edit 42 --title=xxx`
|
|
314
|
-
- "把 issue 42 指派给 @haiqing" → `/req:issue edit 42 --assignees=haiqing`
|
|
102
|
+
编辑类:"给 issue N 加标签 X" → `/req:issue edit N --add-labels=X`
|
|
315
103
|
|
|
316
104
|
---
|
|
317
105
|
|
|
318
106
|
## 六、Git 平台 URL 识别
|
|
319
107
|
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
### 6.1 识别模式
|
|
323
|
-
|
|
324
|
-
统一正则(支持带协议头和纯路径两种形式):
|
|
325
|
-
|
|
326
|
-
```
|
|
327
|
-
(?:https?://[^/\s]+/)?([^/\s]+)/([^/\s]+)/(issues|pull|pulls)/(\d+)
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
**捕获分组**:域名(可选)、`owner`、`repo`、类型(`issues` / `pull` / `pulls`)、编号 `N`。
|
|
108
|
+
### 识别模式
|
|
331
109
|
|
|
332
|
-
|
|
110
|
+
支持完整 URL 和纯路径:`owner/repo/issues/N`、`owner/repo/pulls/N`。`pull` 和 `pulls` 均识别为 PR。
|
|
333
111
|
|
|
334
|
-
|
|
335
|
-
|------|------|
|
|
336
|
-
| 完整 URL | `https://github.com/pipexerp/diciai/pull/158` |
|
|
337
|
-
| 完整 URL(Gitea) | `https://git.example.com/pipexerp/diciai/pulls/158` |
|
|
338
|
-
| 纯路径 | `pipexerp/diciai/issues/169` |
|
|
339
|
-
| 纯路径 | `pipexerp/diciai/pulls/158` |
|
|
340
|
-
|
|
341
|
-
`pull` 和 `pulls` 都识别为 PR(GitHub 用单数,Gitea 用复数)。
|
|
342
|
-
|
|
343
|
-
### 6.2 仓库匹配检查
|
|
344
|
-
|
|
345
|
-
解析出 `owner/repo` 后,与当前仓库对比:
|
|
346
|
-
|
|
347
|
-
```bash
|
|
348
|
-
git remote get-url origin
|
|
349
|
-
```
|
|
350
|
-
|
|
351
|
-
从 remote URL 提取 `owner/repo`,与 URL 中的 `owner/repo` 比较:
|
|
352
|
-
- **匹配**:继续按意图映射
|
|
353
|
-
- **不匹配**:提示并退出,不自动跨仓库执行:
|
|
354
|
-
```
|
|
355
|
-
⚠️ URL 指向的仓库 pipexerp/diciai 与当前仓库 xxx/yyy 不同
|
|
356
|
-
💡 请切换到对应仓库目录后再执行
|
|
357
|
-
```
|
|
112
|
+
### 仓库匹配
|
|
358
113
|
|
|
359
|
-
|
|
114
|
+
解析 `owner/repo` 与 `git remote get-url origin` 对比。不匹配则提示切换仓库,不跨仓库执行。
|
|
360
115
|
|
|
361
|
-
|
|
116
|
+
### Issue URL
|
|
362
117
|
|
|
363
|
-
|
|
118
|
+
- **仅 URL**(无动词)→ 展示操作选项(修 bug / 创建需求 / 快速修复 / 智能开发 / 查看 / 评论 / 关闭)
|
|
119
|
+
- **URL + 动词**(如"修 .../issues/169")→ 直接映射到对应命令
|
|
364
120
|
|
|
365
|
-
|
|
121
|
+
### PR URL
|
|
366
122
|
|
|
367
|
-
|
|
368
|
-
🔗 识别到 issue #169(pipexerp/diciai)
|
|
369
|
-
请选择操作:
|
|
370
|
-
1. 修 bug → /req:fix --from-issue=#169
|
|
371
|
-
2. 创建正式需求 → /req:new --from-issue=#169
|
|
372
|
-
3. 创建快速修复 → /req:new-quick --from-issue=#169
|
|
373
|
-
4. 智能开发 → /req:do --from-issue=#169
|
|
374
|
-
5. 查看 issue 详情 → /req:issue show 169
|
|
375
|
-
6. 评论该 issue → /req:issue comment 169 <文本>
|
|
376
|
-
7. 关闭该 issue → /req:issue close 169
|
|
377
|
-
```
|
|
123
|
+
先检查当前分支的 PR 编号是否匹配 URL 中的编号,不匹配则提示切换分支。
|
|
378
124
|
|
|
379
|
-
|
|
125
|
+
- **仅 URL** → 展示选项(查看状态 / 审查 / 拉评论 / 合并)
|
|
126
|
+
- **URL + 动词** → 直接映射
|
|
380
127
|
|
|
381
|
-
|
|
382
|
-
|---------|------|
|
|
383
|
-
| "修复 .../issues/169" / "修 .../issues/169 的 bug" | `/req:fix --from-issue=#169` |
|
|
384
|
-
| "创建需求 .../issues/169" / "从 .../issues/169 新建需求" | `/req:new --from-issue=#169` |
|
|
385
|
-
| "快速修复 .../issues/169" | `/req:new-quick --from-issue=#169` |
|
|
386
|
-
| "处理 .../issues/169" / "做一下 .../issues/169" | `/req:do --from-issue=#169` |
|
|
387
|
-
| "看下 .../issues/169" / "展示 .../issues/169" | `/req:issue show 169` |
|
|
388
|
-
| "评论 .../issues/169 xxx" / "回复 .../issues/169 xxx" | `/req:issue comment 169 xxx` |
|
|
389
|
-
| "关闭 .../issues/169" / "close .../issues/169" | `/req:issue close 169` |
|
|
390
|
-
| "重开 .../issues/169" / "reopen .../issues/169" | `/req:issue reopen 169` |
|
|
391
|
-
|
|
392
|
-
### 6.4 PR URL → 审查/合并类命令
|
|
393
|
-
|
|
394
|
-
**URL 形式**:`.../pull/<N>` 或 `.../pulls/<N>`
|
|
395
|
-
|
|
396
|
-
#### 分支匹配检查(必须先做)
|
|
397
|
-
|
|
398
|
-
`/req:review-pr` 通过**当前分支**匹配关联的 PR。识别到 PR URL 后,先验证:
|
|
399
|
-
|
|
400
|
-
```bash
|
|
401
|
-
# 获取当前分支对应的 PR 编号
|
|
402
|
-
gh pr view --json number 2>/dev/null # GitHub
|
|
403
|
-
# 或通过 Gitea API 按 head branch 查询(参考 _issue.md 的 Issue 拉取规范)
|
|
404
|
-
```
|
|
405
|
-
|
|
406
|
-
- **当前分支的 PR 编号 = URL 中的编号** → 可直接执行对应子命令
|
|
407
|
-
- **不匹配** → 提示切换分支:
|
|
408
|
-
```
|
|
409
|
-
⚠️ PR #158 对应的分支不是当前分支
|
|
410
|
-
当前分支:main
|
|
411
|
-
PR 分支:feat/REQ-001-user-points
|
|
412
|
-
💡 请先切换:git checkout feat/REQ-001-user-points
|
|
413
|
-
```
|
|
414
|
-
|
|
415
|
-
#### 单独粘贴 PR URL(无动词)
|
|
416
|
-
|
|
417
|
-
分支匹配后展示选项:
|
|
418
|
-
|
|
419
|
-
```
|
|
420
|
-
🔗 识别到 PR #158(pipexerp/diciai)
|
|
421
|
-
请选择操作:
|
|
422
|
-
1. 查看状态 → /req:review-pr
|
|
423
|
-
2. AI 审查代码 → /req:review-pr review
|
|
424
|
-
3. 拉评论应用到代码 → /req:review-pr fetch-comments
|
|
425
|
-
4. 合并 PR → /req:review-pr merge
|
|
426
|
-
```
|
|
427
|
-
|
|
428
|
-
#### PR URL + 动词(直接映射)
|
|
429
|
-
|
|
430
|
-
| 用户消息 | 映射 |
|
|
431
|
-
|---------|------|
|
|
432
|
-
| "看下 .../pulls/158"、"状态 .../pulls/158" | `/req:review-pr` |
|
|
433
|
-
| "审查 .../pulls/158"、"review .../pulls/158"、"审 .../pulls/158" | `/req:review-pr review` |
|
|
434
|
-
| "拉评论 .../pulls/158"、"应用评论 .../pulls/158" | `/req:review-pr fetch-comments` |
|
|
435
|
-
| "合并 .../pulls/158"、"merge .../pulls/158" | `/req:review-pr merge` |
|
|
436
|
-
|
|
437
|
-
### 6.5 处理优先级
|
|
128
|
+
### 优先级
|
|
438
129
|
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
1. **动词 + URL**(最明确)→ 直接按动词映射(§6.3 / §6.4 的第二子节)
|
|
442
|
-
2. **仅 URL**(需用户选择)→ 展示选项列表
|
|
443
|
-
3. **动词 + 需求编号**(无 URL)→ 走 §一~§五 的原有规则
|
|
444
|
-
|
|
445
|
-
例:"修 pipexerp/diciai/issues/169" → 动词"修" + Issue URL → `/req:fix --from-issue=#169`,不再询问其它选项。
|
|
130
|
+
动词 + URL > 仅 URL > 动词 + 需求编号
|
|
446
131
|
|
|
447
132
|
---
|
|
448
133
|
|
|
449
|
-
##
|
|
450
|
-
|
|
451
|
-
用户可用自然语言开/关 Bash 原生确认弹框(git commit / mv / rm 需求文件)。本项由 Claude 直接执行文件动作并写入 memory,不走 `/req:*` 命令。
|
|
134
|
+
## 七、确认偏好开关
|
|
452
135
|
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
| 意图 | 关键词 |
|
|
456
|
-
|------|-------|
|
|
457
|
-
| 开启 | "开启提交确认"、"commit 前帮我确认"、"以后 commit 要弹框"、"提交前问我一下" |
|
|
458
|
-
| 关闭 | "关闭提交确认"、"不用确认了"、"别再弹框"、"不要提交确认" |
|
|
459
|
-
| 查询 | "现在弹确认吗"、"提交确认开着吗"、"查看确认状态" |
|
|
136
|
+
用户自然语言开/关 Bash 原生确认弹框,不走命令映射。
|
|
460
137
|
|
|
461
138
|
**执行动作**:
|
|
139
|
+
- 开启 → `mkdir -p .claude && touch .claude/.req-confirm-commit`,写入 memory
|
|
140
|
+
- 关闭 → `rm -f .claude/.req-confirm-commit`,更新 memory
|
|
141
|
+
- 查询 → 检查 marker 是否存在,告知状态
|
|
462
142
|
|
|
463
|
-
|
|
464
|
-
- 关闭 → `rm -f .claude/.req-confirm-commit`;在 memory 中把对应偏好改为"关闭"或删除该条。
|
|
465
|
-
- 查询 → 直接检查 `.claude/.req-confirm-commit` 是否存在,告知当前状态,不修改任何文件。
|
|
466
|
-
|
|
467
|
-
**边界**:
|
|
468
|
-
|
|
469
|
-
- 只影响 Bash 侧 Hook,不拦截 Write/Edit
|
|
470
|
-
- 仅当 req 插件已安装时有效;downstream 项目的 `req` hook 会读取该 marker
|
|
471
|
-
- marker 已加入 `.gitignore`,每台机器独立
|
|
143
|
+
> 只影响 Bash 侧 Hook,不拦截 Write/Edit。marker 已加入 `.gitignore`。
|
|
472
144
|
|
|
473
145
|
---
|
|
474
146
|
|
|
475
|
-
##
|
|
476
|
-
|
|
477
|
-
以下情况**不应触发**本技能,避免误匹配:
|
|
478
|
-
|
|
479
|
-
### 查询/展示类(走 `/req:show`、`/req:status`,本技能不处理)
|
|
480
|
-
- "看一下025需求"
|
|
481
|
-
- "025 什么状态"
|
|
482
|
-
- "展示025详情"
|
|
483
|
-
|
|
484
|
-
### 讨论/提问性语句
|
|
485
|
-
- "这段代码可以优化"
|
|
486
|
-
- "是不是该重构了"
|
|
487
|
-
- "这个 bug 怎么修"
|
|
488
|
-
- "这个需求太大了"
|
|
489
|
-
- "怎么新增需求"(询问用法)
|
|
147
|
+
## 不触发的情况
|
|
490
148
|
|
|
491
|
-
|
|
492
|
-
- "
|
|
493
|
-
- "优化一下"
|
|
494
|
-
-
|
|
495
|
-
-
|
|
496
|
-
|
|
497
|
-
### 插件/工具本身的维护
|
|
498
|
-
- "修改需求模板"
|
|
499
|
-
- "优化这个技能" / "调整 dispatcher"
|
|
500
|
-
- 涉及 `templates/`、`skills/`、`commands/` 文件的修改
|
|
501
|
-
|
|
502
|
-
### URL 相关的反例
|
|
503
|
-
- 链接指向其他仓库(与 `git remote` 不匹配)→ 提示后退出,不自动执行
|
|
504
|
-
- 链接指向 `/commits/`、`/blob/`、`/tree/`、`/compare/`、`/releases/` 等非 issue/PR 路径 → 不处理
|
|
505
|
-
- 纯域名或仓库首页(如 `github.com/owner/repo`)→ 不处理
|
|
506
|
-
- 讨论 URL 本身(如"这条链接怎么打开")→ 不处理
|
|
507
|
-
|
|
508
|
-
### 已明确用斜杠命令
|
|
509
|
-
- 用户消息以 `/req:`、`/pm:`、`/api:` 开头时,不介入,由原命令系统处理
|
|
149
|
+
- 查询/展示类:"看一下025需求" → 走 `/req:show`
|
|
150
|
+
- 讨论/提问:"可以优化"、"怎么修"、"是不是该重构了"
|
|
151
|
+
- 缺必要信息:"修改需求"无编号、"优化一下"无对象
|
|
152
|
+
- 涉及插件自身维护:修改模板、优化技能
|
|
153
|
+
- URL 指向其他仓库、非 issue/PR 路径、纯域名
|
|
154
|
+
- 用户消息以 `/req:` 等斜杠命令开头
|
|
510
155
|
|
|
511
156
|
---
|
|
512
157
|
|
|
513
158
|
## 执行流程
|
|
514
159
|
|
|
515
|
-
|
|
160
|
+
1. **确认意图**:一行说明,如 `🧠 识别:/req:fix 登录超时`
|
|
161
|
+
2. **读取对应技能文件**,按原流程执行
|
|
162
|
+
3. **传入解析出的参数**
|
|
163
|
+
4. **后续与原命令完全一致**
|
|
516
164
|
|
|
517
|
-
|
|
518
|
-
```
|
|
519
|
-
🧠 识别:/req:fix 登录超时后 token 未清除
|
|
520
|
-
```
|
|
165
|
+
特殊情况:多意图逐个询问、有歧义先确认、命令需用户输入时进入原交互流程。
|
|
521
166
|
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
3. **传入解析出的参数**:标题、编号、类型、模块、issue、编辑意图等
|
|
167
|
+
---
|
|
525
168
|
|
|
526
|
-
|
|
169
|
+
## 用户输入
|
|
527
170
|
|
|
528
|
-
|
|
529
|
-
- 同一条消息包含**多个意图**时:按对话顺序逐个询问,不并行执行
|
|
530
|
-
- 解析结果**有歧义**时:先向用户展示推断,确认后再执行
|
|
531
|
-
- 命令本身需要用户输入(如章节选择、方案确认)时:进入对应命令后按其原有交互继续
|
|
171
|
+
$ARGUMENTS
|
|
@@ -10,7 +10,7 @@ description: 创建 PR - 根据仓库类型自动创建 Pull Request
|
|
|
10
10
|
> **Audience:** Engineer
|
|
11
11
|
> 不受仓库角色限制,readonly 也可执行。不触发缓存同步。
|
|
12
12
|
>
|
|
13
|
-
> **CLI 优先级**:GitHub 走 `gh pr create`;Gitea 按
|
|
13
|
+
> **CLI 优先级**:GitHub 走 `gh pr create`;Gitea 按 `_gitea_cli.md` 检测,可用 `tea` 时走 `tea pulls create --base <target> --head <branch> --title ... --description ...`,否则回退本文 curl 示例。
|
|
14
14
|
|
|
15
15
|
## 命令格式
|
|
16
16
|
|
|
@@ -9,7 +9,7 @@ description: 颁布版本 - 合并 SQL、生成回滚、打 tag、创建 Release
|
|
|
9
9
|
|
|
10
10
|
> **Audience:** Engineer
|
|
11
11
|
> readonly 仓库可用。不触发缓存同步。
|
|
12
|
-
> CLI 优先:GitHub → `gh`;Gitea → 检测 `tea`,不支持的接口回退 curl。详见
|
|
12
|
+
> CLI 优先:GitHub → `gh`;Gitea → 检测 `tea`,不支持的接口回退 curl。详见 `_gitea_cli.md`。
|
|
13
13
|
> 设计原理和边界情况详见 [`release-rationale.md`](./release-rationale.md)。
|
|
14
14
|
|
|
15
15
|
## 参数
|