@zhouhao4221/devflow-skills 0.2.0 → 0.3.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/README.md +57 -235
- package/install.js +406 -116
- package/package.json +2 -1
- package/plugins/api/skills/api/SKILL.md +102 -0
- package/plugins/api/skills/api-field-mapper/SKILL.md +95 -0
- package/plugins/api/skills/config/SKILL.md +140 -0
- package/plugins/api/skills/gen/SKILL.md +345 -0
- package/plugins/api/skills/help/SKILL.md +121 -0
- package/plugins/api/skills/import/SKILL.md +95 -0
- package/plugins/api/skills/map/SKILL.md +152 -0
- package/plugins/api/skills/search/SKILL.md +95 -0
- package/plugins/diag/skills/audit/SKILL.md +103 -0
- package/plugins/diag/skills/diag/SKILL.md +41 -0
- package/plugins/diag/skills/diagnose/SKILL.md +167 -0
- package/plugins/diag/skills/init/SKILL.md +142 -0
- package/plugins/diag/skills/stack-analyzer/SKILL.md +150 -0
- package/plugins/pm/skills/ask/SKILL.md +89 -0
- package/plugins/pm/skills/brief/SKILL.md +95 -0
- package/plugins/pm/skills/export/SKILL.md +93 -0
- package/plugins/pm/skills/help/SKILL.md +257 -0
- package/plugins/pm/skills/milestone/SKILL.md +102 -0
- package/plugins/pm/skills/monthly/SKILL.md +111 -0
- package/plugins/pm/skills/plan/SKILL.md +96 -0
- package/plugins/pm/skills/pm/SKILL.md +174 -0
- package/plugins/pm/skills/progress/SKILL.md +113 -0
- package/plugins/pm/skills/report-generator/SKILL.md +104 -0
- package/plugins/pm/skills/risk/SKILL.md +223 -0
- package/plugins/pm/skills/standup/SKILL.md +96 -0
- package/plugins/pm/skills/stats/SKILL.md +158 -0
- package/plugins/pm/skills/weekly/SKILL.md +157 -0
- package/plugins/req/skills/branch/SKILL.md +447 -0
- package/plugins/req/skills/cache/SKILL.md +232 -0
- package/plugins/req/skills/changelog/SKILL.md +187 -0
- package/plugins/req/skills/changelog-generator/SKILL.md +106 -0
- package/plugins/req/skills/code-impact-analyzer/SKILL.md +48 -0
- package/plugins/req/skills/commit/SKILL.md +308 -0
- package/plugins/req/skills/dev/SKILL.md +229 -0
- package/plugins/req/skills/dev-guide/SKILL.md +530 -0
- package/plugins/req/skills/do/SKILL.md +191 -0
- package/plugins/req/skills/done/SKILL.md +95 -0
- package/plugins/req/skills/edit/SKILL.md +187 -0
- package/plugins/req/skills/fix/SKILL.md +300 -0
- package/plugins/req/skills/help/SKILL.md +136 -0
- package/plugins/req/skills/init/SKILL.md +505 -0
- package/plugins/req/skills/issue/SKILL.md +237 -0
- package/plugins/req/skills/issue-guide/SKILL.md +125 -0
- package/plugins/req/skills/migrate/SKILL.md +128 -0
- package/plugins/req/skills/modules/SKILL.md +195 -0
- package/plugins/req/skills/natural-language-dispatcher/SKILL.md +545 -0
- package/plugins/req/skills/new/SKILL.md +172 -0
- package/plugins/req/skills/new-quick/SKILL.md +246 -0
- package/plugins/req/skills/pr/SKILL.md +157 -0
- package/plugins/req/skills/prd/SKILL.md +187 -0
- package/plugins/req/skills/prd-analyzer/SKILL.md +131 -0
- package/plugins/req/skills/prd-edit/SKILL.md +201 -0
- package/plugins/req/skills/projects/SKILL.md +115 -0
- package/plugins/req/skills/quick-fix-guide/SKILL.md +51 -0
- package/plugins/req/skills/release/SKILL.md +300 -0
- package/plugins/req/skills/release-rationale/SKILL.md +213 -0
- package/plugins/req/skills/req/SKILL.md +173 -0
- package/plugins/req/skills/requirement-analyzer/SKILL.md +274 -0
- package/plugins/req/skills/review/SKILL.md +201 -0
- package/plugins/req/skills/review-pr/SKILL.md +699 -0
- package/plugins/req/skills/show/SKILL.md +302 -0
- package/plugins/req/skills/specs/SKILL.md +99 -0
- package/plugins/req/skills/split/SKILL.md +164 -0
- package/plugins/req/skills/status/SKILL.md +184 -0
- package/plugins/req/skills/test/SKILL.md +431 -0
- package/plugins/req/skills/test-guide/SKILL.md +304 -0
- package/plugins/req/skills/test_new/SKILL.md +417 -0
- package/plugins/req/skills/test_regression/SKILL.md +298 -0
- package/plugins/req/skills/update/SKILL.md +131 -0
- package/plugins/req/skills/update-template/SKILL.md +203 -0
- package/plugins/req/skills/upgrade/SKILL.md +178 -0
- package/plugins/req/skills/use/SKILL.md +158 -0
- package/plugins/req/skills/version-bumper/SKILL.md +113 -0
- package/plugins/uat/skills/bug/SKILL.md +153 -0
- package/plugins/uat/skills/init/SKILL.md +88 -0
- package/plugins/uat/skills/new/SKILL.md +131 -0
- package/plugins/uat/skills/report/SKILL.md +48 -0
- package/plugins/uat/skills/run/SKILL.md +78 -0
- package/plugins/uat/skills/uat/SKILL.md +64 -0
- package/plugins/uat/skills/uat-executor/SKILL.md +299 -0
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: branch
|
|
3
|
+
description: |
|
|
4
|
+
分支管理 - 配置分支策略、查看分支状态、创建紧急修复
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 分支管理
|
|
8
|
+
|
|
9
|
+
管理项目的 Git 分支策略,与需求流程(dev/commit/done)联动。
|
|
10
|
+
|
|
11
|
+
> **Audience:** Engineer
|
|
12
|
+
> 此命令**不受仓库角色限制**,readonly 仓库也可执行。
|
|
13
|
+
> 不触发缓存同步。
|
|
14
|
+
|
|
15
|
+
## 命令格式
|
|
16
|
+
|
|
17
|
+
```
|
|
18
|
+
/req:branch [子命令] [参数]
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
**子命令:**
|
|
22
|
+
- `/req:branch` — 无子命令时等同于 `status`
|
|
23
|
+
- `/req:branch init` — 交互式配置分支策略
|
|
24
|
+
- `/req:branch status` — 查看当前策略和分支状态
|
|
25
|
+
- `/req:branch hotfix [描述]` — 从主分支创建紧急修复分支
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## 子命令:init
|
|
30
|
+
|
|
31
|
+
交互式选择分支策略,写入 `.claude/settings.json`(`giteaToken` 除外,写入 `settings.local.json`)。
|
|
32
|
+
|
|
33
|
+
### 执行流程
|
|
34
|
+
|
|
35
|
+
#### 1. 选择策略模型
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
选择分支管理策略:
|
|
39
|
+
|
|
40
|
+
1. GitHub Flow(推荐)
|
|
41
|
+
所有分支从 main 拉,合回 main
|
|
42
|
+
适合:持续部署、Web 应用、中小团队
|
|
43
|
+
|
|
44
|
+
2. Git Flow
|
|
45
|
+
功能分支从 develop 拉,合回 develop
|
|
46
|
+
适合:版本发布制、APP、大型项目
|
|
47
|
+
|
|
48
|
+
3. Trunk-Based
|
|
49
|
+
短期分支或直接在 main 开发
|
|
50
|
+
适合:成熟团队、高频发布、完善的 CI/CD
|
|
51
|
+
|
|
52
|
+
请选择(1/2/3):
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
#### 2. 确认或自定义配置
|
|
56
|
+
|
|
57
|
+
根据选择生成默认配置,展示给用户确认:
|
|
58
|
+
|
|
59
|
+
**GitHub Flow 默认配置(写入 `settings.json`):**
|
|
60
|
+
```json
|
|
61
|
+
{
|
|
62
|
+
"branchStrategy": {
|
|
63
|
+
"model": "github-flow",
|
|
64
|
+
"repoType": "github",
|
|
65
|
+
"giteaUrl": null,
|
|
66
|
+
"mainBranch": "main",
|
|
67
|
+
"developBranch": null,
|
|
68
|
+
"featurePrefix": "feat/",
|
|
69
|
+
"fixPrefix": "fix/",
|
|
70
|
+
"hotfixPrefix": "hotfix/",
|
|
71
|
+
"branchFrom": "main",
|
|
72
|
+
"mergeTarget": "main",
|
|
73
|
+
"mergeMethod": "merge",
|
|
74
|
+
"deleteBranchAfterMerge": true,
|
|
75
|
+
"reviewers": []
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Git Flow 默认配置(写入 `settings.json`):**
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"branchStrategy": {
|
|
84
|
+
"model": "git-flow",
|
|
85
|
+
"repoType": "github",
|
|
86
|
+
"giteaUrl": null,
|
|
87
|
+
"mainBranch": "main",
|
|
88
|
+
"developBranch": "develop",
|
|
89
|
+
"featurePrefix": "feat/",
|
|
90
|
+
"fixPrefix": "fix/",
|
|
91
|
+
"hotfixPrefix": "hotfix/",
|
|
92
|
+
"branchFrom": "develop",
|
|
93
|
+
"mergeTarget": "develop",
|
|
94
|
+
"mergeMethod": "merge",
|
|
95
|
+
"deleteBranchAfterMerge": true,
|
|
96
|
+
"reviewers": []
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
**Trunk-Based 默认配置(写入 `settings.json`):**
|
|
102
|
+
```json
|
|
103
|
+
{
|
|
104
|
+
"branchStrategy": {
|
|
105
|
+
"model": "trunk-based",
|
|
106
|
+
"repoType": "github",
|
|
107
|
+
"giteaUrl": null,
|
|
108
|
+
"mainBranch": "main",
|
|
109
|
+
"developBranch": null,
|
|
110
|
+
"featurePrefix": "feat/",
|
|
111
|
+
"fixPrefix": "fix/",
|
|
112
|
+
"hotfixPrefix": "hotfix/",
|
|
113
|
+
"branchFrom": "main",
|
|
114
|
+
"mergeTarget": "main",
|
|
115
|
+
"deleteBranchAfterMerge": true,
|
|
116
|
+
"reviewers": []
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
#### 3. 自动检测主分支名
|
|
122
|
+
|
|
123
|
+
初始化时从 `origin/HEAD` 检测实际主分支名,不存在时按序探测 `main` / `master`。检测到的主分支与默认值不同时,自动更新配置:
|
|
124
|
+
```
|
|
125
|
+
检测到主分支为 master,已自动更新配置
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
#### 4. 选择仓库托管类型
|
|
129
|
+
|
|
130
|
+
```
|
|
131
|
+
仓库托管类型:
|
|
132
|
+
|
|
133
|
+
1. GitHub
|
|
134
|
+
使用 gh CLI 创建 PR
|
|
135
|
+
|
|
136
|
+
2. Gitea
|
|
137
|
+
使用 Gitea REST API 创建 PR
|
|
138
|
+
|
|
139
|
+
3. 其他(GitLab / Bitbucket / 本地)
|
|
140
|
+
仅展示合并命令,不自动创建 PR
|
|
141
|
+
|
|
142
|
+
请选择(1/2/3,默认 1):
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**选择 Gitea 时追加配置:**
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
Gitea 实例地址(如 https://git.example.com):
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
自动从 git remote URL 解析 owner/repo(SSH/HTTPS 均支持)。
|
|
152
|
+
|
|
153
|
+
**Gitea Token 说明:**
|
|
154
|
+
```
|
|
155
|
+
Gitea API Token:
|
|
156
|
+
token 存入 .claude/settings.local.json 的顶层 giteaToken 字段(不提交 git)
|
|
157
|
+
生成方式:Gitea → 设置 → 应用 → 生成令牌(需 repo 权限)
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
#### 5. 配置默认审核人(可选)
|
|
161
|
+
|
|
162
|
+
```
|
|
163
|
+
默认审核人(创建 PR 时自动设置,无需每次确认):
|
|
164
|
+
多个用逗号分隔,留空则不设置(如:alice,bob):
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
输入格式:
|
|
168
|
+
- 单人:`alice`
|
|
169
|
+
- 多人:`alice,bob,carol`
|
|
170
|
+
- 留空回车 → `reviewers: []`,PR 创建时不附带审核人
|
|
171
|
+
|
|
172
|
+
写入 `branchStrategy.reviewers`(数组)。用户名按平台规范:
|
|
173
|
+
- GitHub:账号 username
|
|
174
|
+
- Gitea:实例内 username
|
|
175
|
+
|
|
176
|
+
> 不在此校验用户是否存在;`/req:pr` 创建 PR 时调用平台 API,单个无效用户会输出 ⚠️ 但不阻塞 PR。
|
|
177
|
+
|
|
178
|
+
#### 6. Git Flow 额外步骤
|
|
179
|
+
|
|
180
|
+
如果选择 Git Flow,检查 develop 分支是否存在于远端:存在 → 使用;
|
|
181
|
+
- 不存在 → 提示创建:
|
|
182
|
+
```
|
|
183
|
+
develop 分支不存在,是否从 main 创建?
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
#### 7. 写入配置
|
|
187
|
+
|
|
188
|
+
> 写入规范见 [_storage.md](./_storage.md#settings-文件写入规范)。
|
|
189
|
+
|
|
190
|
+
**`branchStrategy`(不含 token)写入 `.claude/settings.json`**:读取已有内容,合并 `branchStrategy` 字段后写回。
|
|
191
|
+
|
|
192
|
+
**`giteaToken` 单独写入 `.claude/settings.local.json`**(顶层字段,非嵌套在 `branchStrategy` 内):
|
|
193
|
+
```json
|
|
194
|
+
{ "giteaToken": "<用户输入的 token>" }
|
|
195
|
+
```
|
|
196
|
+
非 Gitea 仓库时跳过此步骤(无需写入)。
|
|
197
|
+
|
|
198
|
+
⚠️ **禁止**创建独立的 `branchStrategy.json` 或其他文件。
|
|
199
|
+
|
|
200
|
+
```
|
|
201
|
+
✅ 分支策略已配置!
|
|
202
|
+
|
|
203
|
+
策略:GitHub Flow
|
|
204
|
+
仓库类型:Gitea(https://git.example.com)
|
|
205
|
+
主分支:main
|
|
206
|
+
功能分支:feat/REQ-XXX-slug(从 main 拉)
|
|
207
|
+
修复分支:fix/QUICK-XXX-slug(从 main 拉)
|
|
208
|
+
紧急修复:hotfix/xxx(从 main 拉)
|
|
209
|
+
合并目标:main
|
|
210
|
+
合并后删除分支:是
|
|
211
|
+
默认审核人:@alice, @bob ← reviewers 非空时输出,空数组不输出此行
|
|
212
|
+
|
|
213
|
+
后续使用:
|
|
214
|
+
- /req:dev 创建分支时会自动遵循此策略
|
|
215
|
+
- /req:commit 会检查分支合规性
|
|
216
|
+
- /req:done 会根据仓库类型自动创建 PR 或提示合并命令
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 子命令:status
|
|
222
|
+
|
|
223
|
+
查看当前分支策略和各需求分支的状态。
|
|
224
|
+
|
|
225
|
+
### 执行流程
|
|
226
|
+
|
|
227
|
+
#### 1. 读取策略配置
|
|
228
|
+
|
|
229
|
+
从 `.claude/settings.json` 读取 `branchStrategy`;若需要 `giteaToken`,再从 `.claude/settings.local.json` 读取顶层 `giteaToken` 字段。
|
|
230
|
+
|
|
231
|
+
**未配置时:**
|
|
232
|
+
```
|
|
233
|
+
⚠️ 未配置分支策略,使用默认行为
|
|
234
|
+
|
|
235
|
+
建议执行 /req:branch init 配置分支策略
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
#### 2. 展示策略信息
|
|
239
|
+
|
|
240
|
+
```
|
|
241
|
+
分支策略:GitHub Flow
|
|
242
|
+
|
|
243
|
+
| 配置项 | 值 |
|
|
244
|
+
|-------|-----|
|
|
245
|
+
| 模型 | github-flow |
|
|
246
|
+
| 仓库类型 | gitea(https://git.example.com)|
|
|
247
|
+
| 主分支 | main |
|
|
248
|
+
| 功能分支前缀 | feat/ |
|
|
249
|
+
| 修复分支前缀 | fix/ |
|
|
250
|
+
| 紧急修复前缀 | hotfix/ |
|
|
251
|
+
| 拉取基准 | main |
|
|
252
|
+
| 合并目标 | main |
|
|
253
|
+
| 合并后删除 | 是 |
|
|
254
|
+
| 默认审核人 | @alice, @bob(空数组显示 -) |
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
#### 3. 展示当前分支状态
|
|
258
|
+
|
|
259
|
+
获取当前分支名并展示:
|
|
260
|
+
```
|
|
261
|
+
当前分支:feat/REQ-001-user-points
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
#### 4. 展示活跃需求的分支信息
|
|
265
|
+
|
|
266
|
+
扫描活跃需求文档,提取 branch 字段:
|
|
267
|
+
|
|
268
|
+
```
|
|
269
|
+
需求分支状态:
|
|
270
|
+
|
|
271
|
+
| 需求 | 分支 | 状态 | 是否当前 |
|
|
272
|
+
|------|------|------|---------|
|
|
273
|
+
| REQ-001 用户积分 | feat/REQ-001-user-points | 开发中 | ← 当前 |
|
|
274
|
+
| QUICK-002 修复过滤 | fix/QUICK-002-order-filter | 开发中 | |
|
|
275
|
+
| REQ-003 订单管理 | - (未创建) | 评审通过 | |
|
|
276
|
+
```
|
|
277
|
+
|
|
278
|
+
#### 5. 检查分支健康状况
|
|
279
|
+
|
|
280
|
+
```
|
|
281
|
+
✅ 分支健康检查:
|
|
282
|
+
- 当前在需求分支,关联 REQ-001
|
|
283
|
+
- 需求分支与主分支无冲突
|
|
284
|
+
```
|
|
285
|
+
|
|
286
|
+
或:
|
|
287
|
+
|
|
288
|
+
```
|
|
289
|
+
⚠️ 分支注意事项:
|
|
290
|
+
- 当前在 main 分支,有 2 个活跃需求分支
|
|
291
|
+
- feat/REQ-001-user-points 落后 main 3 个提交,建议 rebase
|
|
292
|
+
```
|
|
293
|
+
|
|
294
|
+
---
|
|
295
|
+
|
|
296
|
+
## 子命令:hotfix
|
|
297
|
+
|
|
298
|
+
从主分支创建紧急修复分支,用于线上紧急问题。
|
|
299
|
+
|
|
300
|
+
### 执行流程
|
|
301
|
+
|
|
302
|
+
#### 1. 工作区检查
|
|
303
|
+
|
|
304
|
+
有未提交改动时终止,提示先 commit 或 stash。
|
|
305
|
+
|
|
306
|
+
#### 2. 收集信息
|
|
307
|
+
|
|
308
|
+
如果未提供描述,询问用户:
|
|
309
|
+
- 问题描述(必填)
|
|
310
|
+
|
|
311
|
+
#### 3. 生成分支名
|
|
312
|
+
|
|
313
|
+
```
|
|
314
|
+
hotfix/<slug>
|
|
315
|
+
```
|
|
316
|
+
|
|
317
|
+
- slug:问题描述的英文翻译,lowercase kebab-case,最多 5 词
|
|
318
|
+
|
|
319
|
+
#### 4. 创建分支
|
|
320
|
+
|
|
321
|
+
**关键**:hotfix 始终从**主分支**拉取,无论当前使用什么策略。
|
|
322
|
+
|
|
323
|
+
fetch 并基于 `branchStrategy.mainBranch`(默认 main)创建 `hotfix/<slug>` 分支。
|
|
324
|
+
|
|
325
|
+
```
|
|
326
|
+
紧急修复分支已创建
|
|
327
|
+
|
|
328
|
+
分支:hotfix/fix-order-total-calc
|
|
329
|
+
基于:main (最新)
|
|
330
|
+
完成后合并到:main
|
|
331
|
+
|
|
332
|
+
后续步骤:
|
|
333
|
+
1. 修复问题
|
|
334
|
+
2. /req:commit 修复订单金额计算错误
|
|
335
|
+
3. 合并到 main:git checkout main && git merge hotfix/fix-order-total-calc
|
|
336
|
+
4. 删除分支:git branch -d hotfix/fix-order-total-calc
|
|
337
|
+
```
|
|
338
|
+
|
|
339
|
+
#### 5. Git Flow 额外提醒
|
|
340
|
+
|
|
341
|
+
如果使用 Git Flow 策略,hotfix 完成后需要合并到**两个分支**:
|
|
342
|
+
|
|
343
|
+
```
|
|
344
|
+
完成后需合并到:
|
|
345
|
+
1. main(生产环境)
|
|
346
|
+
2. develop(开发分支同步)
|
|
347
|
+
|
|
348
|
+
合并命令:
|
|
349
|
+
git checkout main && git merge hotfix/fix-order-total-calc
|
|
350
|
+
git checkout develop && git merge hotfix/fix-order-total-calc
|
|
351
|
+
git branch -d hotfix/fix-order-total-calc
|
|
352
|
+
```
|
|
353
|
+
|
|
354
|
+
---
|
|
355
|
+
|
|
356
|
+
## 策略对各命令的影响
|
|
357
|
+
|
|
358
|
+
### /req:dev 分支创建
|
|
359
|
+
|
|
360
|
+
| 配置项 | 影响 |
|
|
361
|
+
|-------|------|
|
|
362
|
+
| `branchFrom` | `git checkout -b <branch> <branchFrom>` 的基准分支 |
|
|
363
|
+
| `featurePrefix` | REQ-XXX 分支前缀(替代硬编码的 `feat/`) |
|
|
364
|
+
| `fixPrefix` | QUICK-XXX 分支前缀(替代硬编码的 `fix/`) |
|
|
365
|
+
|
|
366
|
+
### /req:commit 分支检查
|
|
367
|
+
|
|
368
|
+
| 场景 | 行为 |
|
|
369
|
+
|------|------|
|
|
370
|
+
| 在 mainBranch 上,有活跃需求 | ⚠️ 警告并建议切换到需求分支 |
|
|
371
|
+
| 在 mainBranch 上,无活跃需求 | 正常提交 |
|
|
372
|
+
| 在 developBranch 上(Git Flow) | ⚠️ 警告,功能开发应在功能分支 |
|
|
373
|
+
| 在需求分支上 | 正常提交,自动关联对应需求 |
|
|
374
|
+
| 在 hotfix 分支上 | 正常提交,类型建议选「修复」 |
|
|
375
|
+
|
|
376
|
+
### /req:pr 审核人自动设置
|
|
377
|
+
|
|
378
|
+
| 配置项 | 影响 |
|
|
379
|
+
|-------|------|
|
|
380
|
+
| `reviewers` | 非空时创建 PR 后自动请求审核(GitHub: `gh pr create --reviewer ...`;Gitea: `POST /pulls/<N>/requested_reviewers`),不再询问用户 |
|
|
381
|
+
|
|
382
|
+
### /req:done 合并方式
|
|
383
|
+
|
|
384
|
+
根据 `repoType` 决定合并方式:
|
|
385
|
+
|
|
386
|
+
| 仓库类型 | 行为 |
|
|
387
|
+
|---------|------|
|
|
388
|
+
| `gitea` | 自动推送分支 + 调用 Gitea API 创建 PR |
|
|
389
|
+
| `github` | 提示使用 `gh pr create` 命令 |
|
|
390
|
+
| `other` | 仅展示 `git merge` 合并命令 |
|
|
391
|
+
|
|
392
|
+
合并目标根据策略决定:
|
|
393
|
+
|
|
394
|
+
| 策略 | 合并目标 |
|
|
395
|
+
|------|---------|
|
|
396
|
+
| GitHub Flow | `main` |
|
|
397
|
+
| Git Flow | `develop`(hotfix 额外合并到 main) |
|
|
398
|
+
| Trunk-Based | `main` |
|
|
399
|
+
|
|
400
|
+
---
|
|
401
|
+
|
|
402
|
+
## 配置兼容性
|
|
403
|
+
|
|
404
|
+
### 未配置策略时的行为
|
|
405
|
+
|
|
406
|
+
所有命令保持当前默认行为,不会报错:
|
|
407
|
+
- `/req:dev`:使用硬编码的 `feat/` 和 `fix/` 前缀,自动检测主分支
|
|
408
|
+
- `/req:commit`:不做分支检查
|
|
409
|
+
- `/req:done`:通用合并提醒
|
|
410
|
+
|
|
411
|
+
### 配置存储
|
|
412
|
+
|
|
413
|
+
```jsonc
|
|
414
|
+
// .claude/settings.json(纳入 git,团队共享)
|
|
415
|
+
{
|
|
416
|
+
"requirementProject": "my-saas",
|
|
417
|
+
"requirementRole": "primary",
|
|
418
|
+
"branchStrategy": {
|
|
419
|
+
"model": "github-flow",
|
|
420
|
+
"repoType": "gitea",
|
|
421
|
+
"giteaUrl": "https://git.example.com",
|
|
422
|
+
"mainBranch": "main",
|
|
423
|
+
"developBranch": null,
|
|
424
|
+
"featurePrefix": "feat/",
|
|
425
|
+
"fixPrefix": "fix/",
|
|
426
|
+
"hotfixPrefix": "hotfix/",
|
|
427
|
+
"branchFrom": "main",
|
|
428
|
+
"mergeTarget": "main",
|
|
429
|
+
"mergeMethod": "merge",
|
|
430
|
+
"deleteBranchAfterMerge": true,
|
|
431
|
+
"reviewers": ["alice", "bob"]
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
```jsonc
|
|
437
|
+
// .claude/settings.local.json(本地,加入 .gitignore,不提交)
|
|
438
|
+
{
|
|
439
|
+
"giteaToken": "YOUR_TOKEN_HERE"
|
|
440
|
+
}
|
|
441
|
+
```
|
|
442
|
+
|
|
443
|
+
---
|
|
444
|
+
|
|
445
|
+
## 用户输入
|
|
446
|
+
|
|
447
|
+
$ARGUMENTS
|
|
@@ -0,0 +1,232 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: cache
|
|
3
|
+
description: |
|
|
4
|
+
缓存管理 - 查看、清理全局需求缓存
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# 缓存管理
|
|
8
|
+
|
|
9
|
+
管理全局需求缓存,支持查看、清理、重建等操作。
|
|
10
|
+
|
|
11
|
+
## 命令格式
|
|
12
|
+
|
|
13
|
+
```
|
|
14
|
+
/req:cache <action> [project-name]
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## 子命令
|
|
18
|
+
|
|
19
|
+
| 子命令 | 说明 | 示例 |
|
|
20
|
+
|-------|------|------|
|
|
21
|
+
| `info` | 查看缓存信息 | `/req:cache info` |
|
|
22
|
+
| `clear` | 清理缓存 | `/req:cache clear my-project` |
|
|
23
|
+
| `clear-all` | 清理所有缓存 | `/req:cache clear-all` |
|
|
24
|
+
| `rebuild` | 重建当前项目缓存 | `/req:cache rebuild` |
|
|
25
|
+
| `export` | 导出需求 | `/req:cache export my-project` |
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## /req:cache info
|
|
30
|
+
|
|
31
|
+
显示全局缓存状态。
|
|
32
|
+
|
|
33
|
+
### 执行流程
|
|
34
|
+
|
|
35
|
+
检查 `~/.claude-requirements` 是否存在;不存在则提示未初始化。存在则统计 `projects/` 下的项目数量和缓存总大小。
|
|
36
|
+
|
|
37
|
+
### 输出
|
|
38
|
+
|
|
39
|
+
```
|
|
40
|
+
全局需求缓存信息
|
|
41
|
+
|
|
42
|
+
路径: ~/.claude-requirements/
|
|
43
|
+
大小: 1.2 MB
|
|
44
|
+
项目数: 3
|
|
45
|
+
|
|
46
|
+
项目统计:
|
|
47
|
+
| 项目 | 活跃 | 已完成 | 大小 | 关联仓库 |
|
|
48
|
+
|------|------|--------|------|---------|
|
|
49
|
+
| my-saas-product | 5 | 12 | 500 KB | 2 |
|
|
50
|
+
| internal-tools | 2 | 8 | 300 KB | 1 |
|
|
51
|
+
| client-portal | 0 | 0 | 50 KB | 0 |
|
|
52
|
+
|
|
53
|
+
当前仓库绑定: my-saas-product
|
|
54
|
+
|
|
55
|
+
可用操作:
|
|
56
|
+
- /req:cache clear <project> 清理指定项目
|
|
57
|
+
- /req:cache clear-all 清理所有缓存
|
|
58
|
+
- /req:cache export <project> 导出项目需求
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
---
|
|
62
|
+
|
|
63
|
+
## /req:cache clear <project-name>
|
|
64
|
+
|
|
65
|
+
清理指定项目的缓存。
|
|
66
|
+
|
|
67
|
+
### 执行流程
|
|
68
|
+
|
|
69
|
+
检查 `~/.claude-requirements/projects/<project-name>` 是否存在;不存在则报错。存在则统计 active/ 和 completed/ 下的需求文件数量,用于确认提示。
|
|
70
|
+
|
|
71
|
+
### 确认提示
|
|
72
|
+
|
|
73
|
+
```
|
|
74
|
+
⚠️ 即将删除项目: <project-name>
|
|
75
|
+
|
|
76
|
+
将删除的内容:
|
|
77
|
+
- 活跃需求: X 个
|
|
78
|
+
- 已完成需求: Y 个
|
|
79
|
+
- 模板文件: 1 个
|
|
80
|
+
|
|
81
|
+
关联仓库 (将自动解绑):
|
|
82
|
+
- /Users/xxx/backend
|
|
83
|
+
- /Users/xxx/frontend
|
|
84
|
+
|
|
85
|
+
⚠️ 此操作不可恢复!
|
|
86
|
+
|
|
87
|
+
确认删除?请输入项目名称以确认:
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
### 执行删除
|
|
91
|
+
|
|
92
|
+
删除项目目录,从 `index.json` 移除项目记录,并清理 `index.json` 中记录的所有关联仓库的 `.claude/settings.local.json` 中的 `requirementProject` 字段。
|
|
93
|
+
|
|
94
|
+
### 输出
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
✅ 项目 "<project-name>" 已删除
|
|
98
|
+
|
|
99
|
+
已清理:
|
|
100
|
+
- 需求文档: X 个
|
|
101
|
+
- 释放空间: XXX KB
|
|
102
|
+
|
|
103
|
+
以下仓库的绑定已自动解除:
|
|
104
|
+
- /Users/xxx/backend
|
|
105
|
+
- /Users/xxx/frontend
|
|
106
|
+
|
|
107
|
+
这些仓库现在将使用本地模式 (docs/requirements/)
|
|
108
|
+
```
|
|
109
|
+
|
|
110
|
+
---
|
|
111
|
+
|
|
112
|
+
## /req:cache clear-all
|
|
113
|
+
|
|
114
|
+
清理所有全局缓存。
|
|
115
|
+
|
|
116
|
+
### 确认提示
|
|
117
|
+
|
|
118
|
+
```
|
|
119
|
+
危险操作:清理所有全局缓存
|
|
120
|
+
|
|
121
|
+
将删除的内容:
|
|
122
|
+
- 项目数: 3 个
|
|
123
|
+
- 总需求: 27 个
|
|
124
|
+
- 总大小: 1.2 MB
|
|
125
|
+
|
|
126
|
+
项目列表:
|
|
127
|
+
- my-saas-product (17 个需求, 2 个关联仓库)
|
|
128
|
+
- internal-tools (10 个需求, 1 个关联仓库)
|
|
129
|
+
- client-portal (0 个需求, 0 个关联仓库)
|
|
130
|
+
|
|
131
|
+
⚠️ 此操作将删除所有项目和需求文档,不可恢复!
|
|
132
|
+
|
|
133
|
+
确认删除?请输入 "DELETE ALL" 以确认:
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
### 执行
|
|
137
|
+
|
|
138
|
+
删除整个 `~/.claude-requirements` 目录,并清理所有关联仓库的绑定配置。
|
|
139
|
+
|
|
140
|
+
### 输出
|
|
141
|
+
|
|
142
|
+
```
|
|
143
|
+
✅ 全局缓存已清理
|
|
144
|
+
|
|
145
|
+
已删除:
|
|
146
|
+
- 项目: 3 个
|
|
147
|
+
- 需求文档: 27 个
|
|
148
|
+
- 释放空间: 1.2 MB
|
|
149
|
+
|
|
150
|
+
所有仓库现在将使用本地模式
|
|
151
|
+
使用 /req:init <project-name> 重新创建项目
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
---
|
|
155
|
+
|
|
156
|
+
## /req:cache rebuild
|
|
157
|
+
|
|
158
|
+
从本地存储重建当前项目的全局缓存。
|
|
159
|
+
|
|
160
|
+
### 使用场景
|
|
161
|
+
|
|
162
|
+
- 缓存与本地不同步
|
|
163
|
+
- 缓存文件损坏或丢失
|
|
164
|
+
- 手动修改了本地需求文档
|
|
165
|
+
|
|
166
|
+
### 前置条件
|
|
167
|
+
|
|
168
|
+
当前仓库必须已绑定项目(`.claude/settings.local.json` 中有 `requirementProject`)
|
|
169
|
+
|
|
170
|
+
### 执行流程
|
|
171
|
+
|
|
172
|
+
1. 读取当前仓库绑定的项目名
|
|
173
|
+
2. 清空该项目的缓存目录
|
|
174
|
+
3. 从本地 `docs/requirements/` 完整复制到缓存
|
|
175
|
+
|
|
176
|
+
读取 `settings.local.json` 的 `requirementProject`,未绑定时报错退出。清空 `~/.claude-requirements/projects/$PROJECT/` 后,将 `docs/requirements/`(含 modules/、active/、completed/、INDEX.md)完整同步到缓存。
|
|
177
|
+
|
|
178
|
+
### 输出
|
|
179
|
+
|
|
180
|
+
```
|
|
181
|
+
重建项目缓存: my-saas-product
|
|
182
|
+
|
|
183
|
+
源目录: docs/requirements/
|
|
184
|
+
目标: ~/.claude-requirements/projects/my-saas-product/
|
|
185
|
+
|
|
186
|
+
同步内容:
|
|
187
|
+
modules/: 3 个文件
|
|
188
|
+
active/: 5 个文件
|
|
189
|
+
completed/: 12 个文件
|
|
190
|
+
INDEX.md
|
|
191
|
+
|
|
192
|
+
✅ 缓存重建完成
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
---
|
|
196
|
+
|
|
197
|
+
## /req:cache export <project-name>
|
|
198
|
+
|
|
199
|
+
导出项目需求到本地目录。
|
|
200
|
+
|
|
201
|
+
### 执行流程
|
|
202
|
+
|
|
203
|
+
将 `~/.claude-requirements/projects/<project-name>/` 下的所有文件复制到当前目录的 `requirements-export-<project-name>-<date>/` 目录。
|
|
204
|
+
|
|
205
|
+
### 输出
|
|
206
|
+
|
|
207
|
+
```
|
|
208
|
+
✅ 导出完成
|
|
209
|
+
|
|
210
|
+
导出路径: ./requirements-export-my-saas-product-2026-01-08/
|
|
211
|
+
导出内容:
|
|
212
|
+
- 活跃需求: 5 个
|
|
213
|
+
- 已完成需求: 12 个
|
|
214
|
+
- 模板文件: 1 个
|
|
215
|
+
|
|
216
|
+
可用于备份或分享给团队成员
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
---
|
|
220
|
+
|
|
221
|
+
## 错误处理
|
|
222
|
+
|
|
223
|
+
| 错误场景 | 处理方式 |
|
|
224
|
+
|---------|---------|
|
|
225
|
+
| 缓存不存在 | 提示使用 `/req:init` |
|
|
226
|
+
| 项目不存在 | 列出可用项目 |
|
|
227
|
+
| 权限不足 | 提示检查目录权限 |
|
|
228
|
+
| 索引损坏 | 建议执行 `/req:cache rebuild` |
|
|
229
|
+
|
|
230
|
+
## 用户输入
|
|
231
|
+
|
|
232
|
+
$ARGUMENTS
|