@chenguangyao/devflow-kit 0.1.43
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/CHANGELOG.md +232 -0
- package/LICENSE +21 -0
- package/README.md +539 -0
- package/bin/devflow.js +9 -0
- package/docs/RFC-001-devflow-kit.md +617 -0
- package/docs/RFC-002-workflow-kernel.md +134 -0
- package/docs/enterprise-integration-supplement.md +274 -0
- package/docs/internal-gitlab-setup.md +426 -0
- package/docs/marketplace-skills.md +231 -0
- package/docs/migration-from-arb.md +232 -0
- package/docs/tooling-overview.md +774 -0
- package/docs/workflow-orchestration.md +695 -0
- package/docs/workflow-ui-prototype.html +271 -0
- package/package.json +52 -0
- package/schemas/config.schema.json +51 -0
- package/schemas/delta.schema.json +22 -0
- package/schemas/state.schema.json +130 -0
- package/schemas/status-surface.schema.json +197 -0
- package/schemas/workflow-confirmation-surface.schema.json +70 -0
- package/schemas/workflow-picker.schema.json +94 -0
- package/scripts/postinstall.js +101 -0
- package/scripts/render-workflow-ui-prototype.js +271 -0
- package/skills/apply/SKILL.md +313 -0
- package/skills/apply/references/discipline-checklist.md +145 -0
- package/skills/apply/references/subagent-implementer-prompt.md +113 -0
- package/skills/apply/references/subagent-orchestration.md +150 -0
- package/skills/apply/references/subagent-reviewer-prompt.md +180 -0
- package/skills/apply/references/tdd-loop.md +287 -0
- package/skills/apply/references/when-plan-is-wrong.md +279 -0
- package/skills/apply/references/worktree-swarm.md +292 -0
- package/skills/archive/SKILL.md +229 -0
- package/skills/archive/references/conflict-resolution.md +336 -0
- package/skills/archive/references/knowledge-deposit.md +381 -0
- package/skills/archive/references/spec-merge.md +365 -0
- package/skills/brainstorm/SKILL.md +123 -0
- package/skills/brainstorm/references/proposal-template.md +244 -0
- package/skills/brainstorm/references/question-catalog.md +168 -0
- package/skills/brainstorm/references/session-template.md +184 -0
- package/skills/ci-fix/SKILL.md +63 -0
- package/skills/ci-fix/references/loop.md +25 -0
- package/skills/code-review/SKILL.md +279 -0
- package/skills/code-review/references/escalation-playbook.md +192 -0
- package/skills/code-review/references/language-cheatsheets/go.md +175 -0
- package/skills/code-review/references/language-cheatsheets/java-spring-mybatis.md +246 -0
- package/skills/code-review/references/language-cheatsheets/python.md +170 -0
- package/skills/code-review/references/language-cheatsheets/vue.md +199 -0
- package/skills/code-review/references/output-template.md +275 -0
- package/skills/code-review/references/review-checklist.md +251 -0
- package/skills/complexity-grading/SKILL.md +259 -0
- package/skills/deliver/SKILL.md +271 -0
- package/skills/deliver/references/delivery-modes.md +299 -0
- package/skills/deliver/references/notify.md +359 -0
- package/skills/deliver/references/pr-description.md +319 -0
- package/skills/dependency-upgrade/SKILL.md +57 -0
- package/skills/dependency-upgrade/references/risk-matrix.md +38 -0
- package/skills/df-orchestrator/SKILL.md +407 -0
- package/skills/df-orchestrator/references/complexity-grading.md +177 -0
- package/skills/df-orchestrator/references/escalation-matrix.md +191 -0
- package/skills/df-orchestrator/references/routing-rules.md +290 -0
- package/skills/df-orchestrator/references/workflow-state-machine.md +208 -0
- package/skills/frontend-quality/SKILL.md +61 -0
- package/skills/frontend-quality/references/checklist.md +35 -0
- package/skills/handoff-resume/SKILL.md +59 -0
- package/skills/handoff-resume/references/handoff-template.md +54 -0
- package/skills/plan/SKILL.md +166 -0
- package/skills/plan/references/task-breakdown.md +207 -0
- package/skills/plan/references/task-sequencing.md +143 -0
- package/skills/plan/references/task-template.md +248 -0
- package/skills/requirement-analysis/SKILL.md +499 -0
- package/skills/requirement-analysis/references/acceptance-criteria.md +183 -0
- package/skills/requirement-analysis/references/code-recon.md +151 -0
- package/skills/requirement-analysis/references/edge-case-catalog.md +164 -0
- package/skills/requirement-analysis/references/requirement-template.md +339 -0
- package/skills/requirement-analysis/references/scope-negotiation.md +162 -0
- package/skills/security-hardening/SKILL.md +60 -0
- package/skills/security-hardening/references/checklist.md +42 -0
- package/skills/tech-spec/SKILL.md +388 -0
- package/skills/tech-spec/references/api-contract-design.md +172 -0
- package/skills/tech-spec/references/decision-records.md +110 -0
- package/skills/tech-spec/references/design-template.md +301 -0
- package/skills/tech-spec/references/rollout-and-rollback.md +203 -0
- package/skills/tech-spec/references/spec-delta-conventions.md +250 -0
- package/skills/tech-spec/references/transaction-patterns.md +212 -0
- package/skills/test-spec/SKILL.md +219 -0
- package/skills/test-spec/references/coverage-strategy.md +218 -0
- package/skills/test-spec/references/edge-case-to-test.md +143 -0
- package/skills/test-spec/references/test-case-template.md +276 -0
- package/skills/verify/SKILL.md +232 -0
- package/skills/verify/references/nfr-verification.md +292 -0
- package/skills/verify/references/report-templates.md +510 -0
- package/skills/verify/references/self-test-guide.md +240 -0
- package/skills/verify/references/verify-rollback-map.md +247 -0
- package/src/cli/commands/_helpers.js +108 -0
- package/src/cli/commands/_submit.js +718 -0
- package/src/cli/commands/apply.js +198 -0
- package/src/cli/commands/archive.js +180 -0
- package/src/cli/commands/checkpoint.js +113 -0
- package/src/cli/commands/deliver.js +377 -0
- package/src/cli/commands/deploy.js +504 -0
- package/src/cli/commands/design.js +158 -0
- package/src/cli/commands/disable.js +21 -0
- package/src/cli/commands/doctor.js +178 -0
- package/src/cli/commands/enable.js +21 -0
- package/src/cli/commands/flow.js +645 -0
- package/src/cli/commands/help.js +93 -0
- package/src/cli/commands/ingest.js +602 -0
- package/src/cli/commands/init.js +341 -0
- package/src/cli/commands/knowledge.js +523 -0
- package/src/cli/commands/logs.js +43 -0
- package/src/cli/commands/new.js +202 -0
- package/src/cli/commands/plan.js +49 -0
- package/src/cli/commands/propose.js +27 -0
- package/src/cli/commands/provider.js +698 -0
- package/src/cli/commands/report.js +143 -0
- package/src/cli/commands/requirement.js +227 -0
- package/src/cli/commands/review.js +301 -0
- package/src/cli/commands/skills.js +457 -0
- package/src/cli/commands/status.js +925 -0
- package/src/cli/commands/switch.js +27 -0
- package/src/cli/commands/sync.js +47 -0
- package/src/cli/commands/test.js +366 -0
- package/src/cli/commands/uninstall.js +32 -0
- package/src/cli/commands/update.js +74 -0
- package/src/cli/commands/verify.js +354 -0
- package/src/cli/commands/worktree.js +78 -0
- package/src/cli/index.js +72 -0
- package/src/cli/parse-args.js +102 -0
- package/src/core/autodetect.js +271 -0
- package/src/core/change.js +208 -0
- package/src/core/checkpoint.js +217 -0
- package/src/core/config.js +60 -0
- package/src/core/delta.js +290 -0
- package/src/core/markers.js +59 -0
- package/src/core/paths.js +173 -0
- package/src/core/plan-tasks.js +36 -0
- package/src/core/project-routing.js +285 -0
- package/src/core/projects.js +200 -0
- package/src/core/state.js +200 -0
- package/src/core/workflow-check.js +177 -0
- package/src/core/workflow-init.js +34 -0
- package/src/core/workflow-picker.js +154 -0
- package/src/core/workflow-policy.js +119 -0
- package/src/core/workflow-suggest.js +181 -0
- package/src/core/workflow-verify.js +88 -0
- package/src/core/workflow.js +433 -0
- package/src/core/worktree.js +241 -0
- package/src/knowledge/categories.js +107 -0
- package/src/knowledge/classify.js +125 -0
- package/src/knowledge/deposit.js +414 -0
- package/src/knowledge/migrate.js +149 -0
- package/src/knowledge/mr.js +219 -0
- package/src/knowledge/query.js +131 -0
- package/src/knowledge/registry.js +151 -0
- package/src/knowledge/sync.js +179 -0
- package/src/providers/base.js +74 -0
- package/src/providers/drivers/api-yapi.js +78 -0
- package/src/providers/drivers/ci-jenkins.js +109 -0
- package/src/providers/drivers/intake-confluence.js +544 -0
- package/src/providers/drivers/kb-git.js +549 -0
- package/src/providers/drivers/kb-weknora.js +472 -0
- package/src/providers/drivers/notify-smtp.js +515 -0
- package/src/providers/drivers/observability-oss.js +43 -0
- package/src/providers/drivers/observability-sls.js +50 -0
- package/src/providers/lifecycle.js +135 -0
- package/src/providers/loader.js +132 -0
- package/src/providers/local.js +190 -0
- package/src/providers/userconfig.js +283 -0
- package/src/reports/aggregate.js +185 -0
- package/src/reports/coverage.js +163 -0
- package/src/reports/detect.js +143 -0
- package/src/reports/parse.js +236 -0
- package/src/templates/files/ci/github.yml +38 -0
- package/src/templates/files/ci/gitlab.yml +27 -0
- package/src/templates/files/design.md +63 -0
- package/src/templates/files/ide/devflow-workflow.md +58 -0
- package/src/templates/files/ide/project-overview-reference.md +1 -0
- package/src/templates/files/ide/project-overview.md +27 -0
- package/src/templates/files/knowledge-index.json +17 -0
- package/src/templates/files/knowledge.md +28 -0
- package/src/templates/files/meta.json +8 -0
- package/src/templates/files/plan.md +38 -0
- package/src/templates/files/proposal.md +33 -0
- package/src/templates/files/reports/contract-test.md +40 -0
- package/src/templates/files/reports/e2e-test.md +30 -0
- package/src/templates/files/reports/integration-test.md +36 -0
- package/src/templates/files/reports/joint-test.md +58 -0
- package/src/templates/files/reports/perf.md +24 -0
- package/src/templates/files/reports/regression.md +20 -0
- package/src/templates/files/reports/remote-test.md +55 -0
- package/src/templates/files/reports/self-test.md +43 -0
- package/src/templates/files/reports/smoke-test.md +22 -0
- package/src/templates/files/reports/unit-test.md +36 -0
- package/src/templates/files/requirement.md +51 -0
- package/src/templates/files/review.md +38 -0
- package/src/templates/files/tests.md +36 -0
- package/src/templates/files/verify.md +32 -0
- package/src/templates/index.js +21 -0
- package/src/utils/log.js +37 -0
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
# deliver / pr-description
|
|
2
|
+
|
|
3
|
+
PR / MR 描述的构造规则、reviewer 视角、范例、反模式。
|
|
4
|
+
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
## PR 描述的目标
|
|
8
|
+
|
|
9
|
+
reviewer 要在 5 分钟内判断:
|
|
10
|
+
|
|
11
|
+
1. **这个 change 在做什么?**(一句话)
|
|
12
|
+
2. **为什么做?**(背景和目标)
|
|
13
|
+
3. **做了什么?**(变更范围)
|
|
14
|
+
4. **怎么证明做对了?**(自测证据)
|
|
15
|
+
5. **上线风险?**(rollback 方案)
|
|
16
|
+
6. **我该重点看哪?**(reviewer guidance)
|
|
17
|
+
|
|
18
|
+
---
|
|
19
|
+
|
|
20
|
+
## 自动构造的结构
|
|
21
|
+
|
|
22
|
+
```markdown
|
|
23
|
+
# [<slug>] <change.title>
|
|
24
|
+
|
|
25
|
+
## 变更概要(从 requirement.md 抓)
|
|
26
|
+
|
|
27
|
+
<background + 3-5 行 why>
|
|
28
|
+
|
|
29
|
+
## 范围
|
|
30
|
+
|
|
31
|
+
- [F-01] <功能名>
|
|
32
|
+
- [F-02] <功能名>
|
|
33
|
+
- ...
|
|
34
|
+
|
|
35
|
+
## 影响
|
|
36
|
+
|
|
37
|
+
- 新增 API: `/api/v1/coupons/batch-grant`
|
|
38
|
+
- 新增表: `coupon_batch`
|
|
39
|
+
- 修改表: `coupon_log` 加字段 `batch_id`
|
|
40
|
+
- 依赖:无新增
|
|
41
|
+
|
|
42
|
+
## 提测自测(从 reports/test-report.md#self-test 抓)
|
|
43
|
+
|
|
44
|
+
<verbatim 粘贴 F-ID + AC 证据,不截断>
|
|
45
|
+
|
|
46
|
+
## 关联文档
|
|
47
|
+
|
|
48
|
+
- [需求 requirement.md](../blob/<branch>/devflow/changes/<slug>/requirement.md)
|
|
49
|
+
- [设计 design.md](../blob/<branch>/devflow/changes/<slug>/design.md)
|
|
50
|
+
- [计划 plan.md](../blob/<branch>/devflow/changes/<slug>/plan.md)
|
|
51
|
+
- [review review.md](../blob/<branch>/devflow/changes/<slug>/review.md)
|
|
52
|
+
- [verify verify.md](../blob/<branch>/devflow/changes/<slug>/verify.md)
|
|
53
|
+
|
|
54
|
+
## 回滚方案(从 design.md 抓)
|
|
55
|
+
|
|
56
|
+
<rollback section 原文>
|
|
57
|
+
|
|
58
|
+
## reviewer 提示(手写追加)
|
|
59
|
+
|
|
60
|
+
<作者对 reviewer 的引导,推荐写>
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
---
|
|
64
|
+
|
|
65
|
+
## 手写部分:reviewer 提示
|
|
66
|
+
|
|
67
|
+
自动部分事实陈述就行,reviewer 提示要**主观引导**:
|
|
68
|
+
|
|
69
|
+
```markdown
|
|
70
|
+
## reviewer 提示
|
|
71
|
+
|
|
72
|
+
**优先看**:
|
|
73
|
+
|
|
74
|
+
1. `CouponGrantService.java` L120-180 — 核心的批量逻辑 + 事务边界
|
|
75
|
+
2. `coupon_log_add_batch_id.sql` — DDL 迁移,特别注意已有数据 backfill
|
|
76
|
+
3. `reports/test-report.md#perf` — 压测 P99 在 180ms,接近 NFR 200ms 上限
|
|
77
|
+
|
|
78
|
+
**可以快速过**:
|
|
79
|
+
|
|
80
|
+
- `DTO` 类(自动生成 / 纯数据结构)
|
|
81
|
+
- 单元测试(和实现对称,逻辑简单)
|
|
82
|
+
|
|
83
|
+
**特别想听 feedback**:
|
|
84
|
+
|
|
85
|
+
- 事务边界设计:为什么拆成"校验 + 核销 + 日志"三段而不是一段?(见 `design.md#事务策略`)
|
|
86
|
+
- 错误消息国际化:目前只加了中文,是否要加英文?
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
---
|
|
90
|
+
|
|
91
|
+
## 写得好的 PR 描述范例(L2)
|
|
92
|
+
|
|
93
|
+
```markdown
|
|
94
|
+
# [coupon-batch-grant] 批量发放优惠券 API
|
|
95
|
+
|
|
96
|
+
## 变更概要
|
|
97
|
+
|
|
98
|
+
运营侧提出:当前只能一个一个发优惠券,节日活动 1 万用户要几小时。本 change 提供批量发放 API,
|
|
99
|
+
支持单批 ≤ 10000 条,整体体验目标 < 1 分钟。
|
|
100
|
+
|
|
101
|
+
## 范围
|
|
102
|
+
|
|
103
|
+
- [F-01] 批量发放 API /api/v1/coupons/batch-grant(3 条 AC)
|
|
104
|
+
- [F-02] 批量发放查询 API(2 条 AC)
|
|
105
|
+
- [F-03] 后台 UI 接入(CSV 上传)(4 条 AC)
|
|
106
|
+
|
|
107
|
+
## 影响
|
|
108
|
+
|
|
109
|
+
- 新增 API:
|
|
110
|
+
- POST `/api/v1/coupons/batch-grant`
|
|
111
|
+
- GET `/api/v1/coupons/batch-grant/{batchId}`
|
|
112
|
+
- 新增表:`coupon_batch`(batch metadata)
|
|
113
|
+
- 修改表:`coupon_log` 加字段 `batch_id`(VARCHAR(32),含索引)
|
|
114
|
+
- 依赖:无新增(复用已有 riskService / couponService)
|
|
115
|
+
|
|
116
|
+
## 提测自测
|
|
117
|
+
|
|
118
|
+
<... 粘贴 self-test 的所有 F-ID 证据,这里省略 ...>
|
|
119
|
+
|
|
120
|
+
## 关联文档
|
|
121
|
+
|
|
122
|
+
- [需求 requirement.md](./devflow/changes/coupon-batch-grant/requirement.md)
|
|
123
|
+
- [设计 design.md](./devflow/changes/coupon-batch-grant/design.md)
|
|
124
|
+
- [review review.md](./devflow/changes/coupon-batch-grant/review.md) — 3 轮,ROUND3 pass
|
|
125
|
+
- [verify verify.md](./devflow/changes/coupon-batch-grant/verify.md) — 243/243 单测,86% 覆盖,P99 180ms
|
|
126
|
+
|
|
127
|
+
## 回滚方案
|
|
128
|
+
|
|
129
|
+
**触发条件**:
|
|
130
|
+
|
|
131
|
+
- 线上 5 分钟 P99 > 400ms
|
|
132
|
+
- 5 分钟内 5xx 率 > 1%
|
|
133
|
+
- 发现数据不一致(grant 了但 coupon_log 没记录)
|
|
134
|
+
|
|
135
|
+
**步骤**:
|
|
136
|
+
|
|
137
|
+
1. Feature flag `coupon.batch_grant.enabled=false`(立即生效,< 30s)
|
|
138
|
+
2. 已发放的不撤(用户侧合法)
|
|
139
|
+
3. 若发现数据不一致:跑 `scripts/reconcile-coupon-log.py --batch-id=<bid>`
|
|
140
|
+
|
|
141
|
+
**影响**:
|
|
142
|
+
|
|
143
|
+
- 前端上传页显示"批量发放暂不可用",引导单张发放
|
|
144
|
+
- 已发放的用户不受影响
|
|
145
|
+
|
|
146
|
+
**验证**:
|
|
147
|
+
|
|
148
|
+
- 关闭后再跑一次 smoke(单张发放)确认仍正常
|
|
149
|
+
|
|
150
|
+
## reviewer 提示
|
|
151
|
+
|
|
152
|
+
优先看:
|
|
153
|
+
1. `CouponBatchGrantService.java#L80-L200` — 核心拆段事务(ADR-003)
|
|
154
|
+
2. `migration/V20260424__add_batch_id_to_coupon_log.sql` — 有 backfill 10W+ 历史数据
|
|
155
|
+
3. `reports/test-report.md#perf` 的 P99 分布(边缘接近 NFR)
|
|
156
|
+
|
|
157
|
+
特别想听 feedback:
|
|
158
|
+
- 事务拆三段 vs 一段 + 补偿,我选前者是因为...(见 ADR-003)
|
|
159
|
+
- batchId 用 ULID 而非 UUID,因排序需求
|
|
160
|
+
|
|
161
|
+
标签:label: feature / size: L2 / area: coupon
|
|
162
|
+
```
|
|
163
|
+
|
|
164
|
+
---
|
|
165
|
+
|
|
166
|
+
## 写得差的 PR 描述(反例)
|
|
167
|
+
|
|
168
|
+
```markdown
|
|
169
|
+
# fix coupon
|
|
170
|
+
|
|
171
|
+
改了一下批量发优惠券,跑了测试都通过了,麻烦看一下。
|
|
172
|
+
|
|
173
|
+
files:
|
|
174
|
+
- CouponService.java
|
|
175
|
+
- CouponMapper.java
|
|
176
|
+
- coupon.sql
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
问题:
|
|
180
|
+
|
|
181
|
+
- 没标题 slug
|
|
182
|
+
- 没目标 / 范围
|
|
183
|
+
- 没自测证据
|
|
184
|
+
- 没回滚方案
|
|
185
|
+
- reviewer 完全不知道要看啥
|
|
186
|
+
|
|
187
|
+
deliver 会拒绝这样的内容(要求 self-test + rollback + 关联文档至少齐全)。
|
|
188
|
+
|
|
189
|
+
---
|
|
190
|
+
|
|
191
|
+
## 粘贴 self-test 的规则
|
|
192
|
+
|
|
193
|
+
self-test 可能很长(L3 50+ AC)。deliver 会:
|
|
194
|
+
|
|
195
|
+
1. **完整粘**:L1 / L2 默认完整粘贴
|
|
196
|
+
2. **折叠长证据**:`<details>` 折叠每个 AC 的证据部分,reviewer 按需展开
|
|
197
|
+
3. **图片保留链接**:不重复粘截图,保留 `reports/screenshots/` 的路径(相对 PR 仓库根)
|
|
198
|
+
4. **跳过 skipped / partial**:明确标记 "⚠️ partial AC: ..."
|
|
199
|
+
|
|
200
|
+
**不建议**把 self-test 改写成简短列表,会丢失证据价值。
|
|
201
|
+
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 关联文档的链接
|
|
205
|
+
|
|
206
|
+
- 项目内:用仓库文件相对链接(renders in GitHub/GitLab preview)
|
|
207
|
+
- 外部 wiki / JIRA:用绝对 URL
|
|
208
|
+
- 链接时注意:不要带 branch 参数(如 `?ref=abc123`),除非就是想锁定某个 sha
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 回滚方案的要点
|
|
213
|
+
|
|
214
|
+
从 design.md 拷贝,不要改写。如果 design.md 写得烂,修 design.md 后重 deliver(回退 tech-spec)。
|
|
215
|
+
|
|
216
|
+
最小可接受回滚方案:
|
|
217
|
+
|
|
218
|
+
- 触发条件(明确的指标或现象)
|
|
219
|
+
- 步骤(1-N,不要"git revert")
|
|
220
|
+
- 影响(用户 / 数据 / 下游)
|
|
221
|
+
- 验证(回滚后如何确认恢复)
|
|
222
|
+
|
|
223
|
+
---
|
|
224
|
+
|
|
225
|
+
## PR 标题规范
|
|
226
|
+
|
|
227
|
+
格式:`[<slug>] <一句话 title>`
|
|
228
|
+
|
|
229
|
+
- slug 方括号标记,方便 filter
|
|
230
|
+
- title 动宾结构(做了什么),不是 "调整" / "优化" 这种模糊词
|
|
231
|
+
|
|
232
|
+
好例:
|
|
233
|
+
|
|
234
|
+
- `[coupon-batch-grant] 批量发放优惠券 API(最大 10000 条)`
|
|
235
|
+
- `[order-refund-rebuild] 重构退款流程,解决并发下状态不一致`
|
|
236
|
+
- `[auth-jwt-upgrade] 升级 JWT 算法 HS256 → RS256`
|
|
237
|
+
|
|
238
|
+
坏例:
|
|
239
|
+
|
|
240
|
+
- `fix coupon bug`(什么 bug?)
|
|
241
|
+
- `更新订单模块`(更新什么?)
|
|
242
|
+
- `WIP`(搁置了就用 --mode=keep,别提 PR)
|
|
243
|
+
|
|
244
|
+
---
|
|
245
|
+
|
|
246
|
+
## 附加字段的自动补充
|
|
247
|
+
|
|
248
|
+
### labels
|
|
249
|
+
|
|
250
|
+
按 change 自动加:
|
|
251
|
+
|
|
252
|
+
- `level: L1 / L2 / L3`
|
|
253
|
+
- `type: feature / bugfix / refactor / perf / security`
|
|
254
|
+
- `area: <module>`(从 Files 推断或手配)
|
|
255
|
+
|
|
256
|
+
### reviewers
|
|
257
|
+
|
|
258
|
+
来自 config:
|
|
259
|
+
|
|
260
|
+
```json
|
|
261
|
+
{
|
|
262
|
+
"delivery": {
|
|
263
|
+
"reviewers": {
|
|
264
|
+
"codeOwners": true, // 用 CODEOWNERS 文件
|
|
265
|
+
"required": ["@tech-lead"], // 固定要 @tech-lead
|
|
266
|
+
"default": ["@peer-1", "@peer-2"]
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
}
|
|
270
|
+
```
|
|
271
|
+
|
|
272
|
+
deliver 合并这几种来源。也可用 `--reviewers=@alice` 覆盖。
|
|
273
|
+
|
|
274
|
+
### milestone / iteration
|
|
275
|
+
|
|
276
|
+
从 change 的 link 里抓(if JIRA issue has sprint)。
|
|
277
|
+
|
|
278
|
+
---
|
|
279
|
+
|
|
280
|
+
## 附加检查
|
|
281
|
+
|
|
282
|
+
deliver 构造好 body 后,会 run:
|
|
283
|
+
|
|
284
|
+
1. **长度**:PR body > 100KB 警告(某些 VCS 有限制)
|
|
285
|
+
2. **链接失效**:本地 md 链接不可达 → 警告(可能是路径错)
|
|
286
|
+
3. **token 扫描**:再扫一遍 body(防护层)
|
|
287
|
+
4. **TODO 残留**:body 里有 `TODO` / `FIXME` → 警告(可能是模板占位没改)
|
|
288
|
+
|
|
289
|
+
警告默认继续,`--strict` 下强 fail。
|
|
290
|
+
|
|
291
|
+
---
|
|
292
|
+
|
|
293
|
+
## PR 描述和 commit message 的关系
|
|
294
|
+
|
|
295
|
+
- PR body:给 **reviewer**(一次性,PR 期间看)
|
|
296
|
+
- commit message:给**将来的人**(git log 永远)
|
|
297
|
+
|
|
298
|
+
PR body 可以长,commit message 要短但有营养(见 plan / task-template.md)。
|
|
299
|
+
|
|
300
|
+
merge 时:
|
|
301
|
+
|
|
302
|
+
- squash:使用 PR body 的第一段 + commit list
|
|
303
|
+
- merge commit:commit message 含 PR URL
|
|
304
|
+
- rebase:保留原 commit message
|
|
305
|
+
|
|
306
|
+
deliver 不强制哪种,跟项目配。
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
310
|
+
## reviewer 反馈后的迭代
|
|
311
|
+
|
|
312
|
+
收到 `Request changes` 或 comment:
|
|
313
|
+
|
|
314
|
+
1. `devflow apply --task new-iteration --reason="reviewer: ..."`(不是 `--resume`,是新 iteration)
|
|
315
|
+
2. 修完 commit + push(PR 自动更新)
|
|
316
|
+
3. reply 每条 comment("已修,commit <sha>")
|
|
317
|
+
4. 请求 re-review
|
|
318
|
+
|
|
319
|
+
不要在 PR 里"辩论"很久——见 `../code-review/references/escalation-playbook.md`。
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: devflow-dependency-upgrade
|
|
3
|
+
description: |
|
|
4
|
+
devflow-kit 依赖升级专项 skill。当用户要求升级 npm/maven/go module/pip 依赖、修漏洞、更新 lockfile、调整框架版本或依赖版本变更时触发。
|
|
5
|
+
按 patch/minor/major 和安全风险分级,执行 changelog/破坏性变更检查、lockfile 更新、最小测试和回滚说明。
|
|
6
|
+
when_to_use: |
|
|
7
|
+
用户说升级依赖、修依赖漏洞、更新 package-lock/pnpm-lock/go.sum/pom.xml/requirements、Renovate/Dependabot 类任务时使用。
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
# dependency-upgrade
|
|
11
|
+
|
|
12
|
+
依赖升级专项 skill。它通常是 L1/L2 的特化 apply 流,不一定需要完整 requirement/design,但必须有风险判断和验证证据,并在 verify 阶段把升级后的兼容性证据纳入 `reports/test-report.md`。
|
|
13
|
+
|
|
14
|
+
## 触发条件
|
|
15
|
+
|
|
16
|
+
- `package.json`、`pnpm-lock.yaml`、`package-lock.json`、`yarn.lock` 变更。
|
|
17
|
+
- `go.mod`、`go.sum` 变更。
|
|
18
|
+
- `pom.xml`、`build.gradle`、`gradle.lockfile` 变更。
|
|
19
|
+
- `requirements.txt`、`pyproject.toml`、`poetry.lock` 变更。
|
|
20
|
+
- 安全漏洞修复、框架版本升级、依赖冲突解决。
|
|
21
|
+
|
|
22
|
+
## 分级
|
|
23
|
+
|
|
24
|
+
| 类型 | 默认 level | 验证 |
|
|
25
|
+
| --- | --- | --- |
|
|
26
|
+
| patch 版本、小范围漏洞修复 | L1 | unit + smoke |
|
|
27
|
+
| minor 版本、多个包联动 | L2 | unit + integration + smoke |
|
|
28
|
+
| major 版本、框架升级、构建链升级 | L3 | unit + integration + regression/e2e + 回滚方案 |
|
|
29
|
+
|
|
30
|
+
## 执行流程
|
|
31
|
+
|
|
32
|
+
1. 识别包管理器和变更范围。
|
|
33
|
+
2. 区分直接依赖和传递依赖。
|
|
34
|
+
3. 查 changelog / release note / migration guide。若无法联网,说明未查到并基于 lockfile/diff 保守处理。
|
|
35
|
+
4. 更新 manifest 和 lockfile,不要只改其中一个。
|
|
36
|
+
5. 跑最小验证:
|
|
37
|
+
- Node:`npm test` / `npm run build` / 项目已有 lint。
|
|
38
|
+
- Go:`go test ./...`。
|
|
39
|
+
- Java:`mvn -pl <module> -am test` 或项目既有命令。
|
|
40
|
+
- Python:`pytest` 或项目既有命令。
|
|
41
|
+
6. 写入 `reports/test-report.md#unit` / `#integration`。
|
|
42
|
+
7. 在最终说明里写清升级列表、风险、回滚方式。
|
|
43
|
+
|
|
44
|
+
## 输出要求
|
|
45
|
+
|
|
46
|
+
- 变更列表:包名、旧版本、新版本、直接/传递依赖。
|
|
47
|
+
- 风险:breaking change、peer dependency、运行时兼容、构建链影响。
|
|
48
|
+
- 验证:实际执行命令和结果。
|
|
49
|
+
- 回滚:恢复 manifest + lockfile 的方式。
|
|
50
|
+
|
|
51
|
+
## 反模式
|
|
52
|
+
|
|
53
|
+
- 只改 lockfile 或只改 manifest。
|
|
54
|
+
- major 升级不看 breaking changes。
|
|
55
|
+
- 为了让测试过,顺手改业务逻辑。
|
|
56
|
+
- 漏掉 peer dependency warning。
|
|
57
|
+
- 把安全漏洞修复当成普通重构,没有记录 CVE/漏洞来源。
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# dependency upgrade risk matrix
|
|
2
|
+
|
|
3
|
+
## 风险判断
|
|
4
|
+
|
|
5
|
+
| 信号 | 风险 |
|
|
6
|
+
| --- | --- |
|
|
7
|
+
| major 版本变化 | 高 |
|
|
8
|
+
| 框架、ORM、HTTP client、序列化库、构建工具升级 | 高 |
|
|
9
|
+
| 安全漏洞修复但涉及鉴权/加密/网络 | 中到高 |
|
|
10
|
+
| 仅 patch 且 changelog 为 bugfix | 低 |
|
|
11
|
+
| lockfile 大量变化 | 中到高 |
|
|
12
|
+
| peer dependency warning | 中 |
|
|
13
|
+
|
|
14
|
+
## 必查文件
|
|
15
|
+
|
|
16
|
+
- Node:`package.json` + lockfile。
|
|
17
|
+
- Go:`go.mod` + `go.sum`。
|
|
18
|
+
- Java:`pom.xml` / `build.gradle` + lock / wrapper。
|
|
19
|
+
- Python:`requirements.txt` / `pyproject.toml` + lockfile。
|
|
20
|
+
|
|
21
|
+
## 报告建议
|
|
22
|
+
|
|
23
|
+
```markdown
|
|
24
|
+
## 依赖升级说明
|
|
25
|
+
|
|
26
|
+
| 包 | 旧版本 | 新版本 | 类型 | 原因 |
|
|
27
|
+
| --- | --- | --- | --- | --- |
|
|
28
|
+
|
|
29
|
+
## 风险
|
|
30
|
+
|
|
31
|
+
- ...
|
|
32
|
+
|
|
33
|
+
## 验证
|
|
34
|
+
|
|
35
|
+
- `npm test`: pass
|
|
36
|
+
- `npm run build`: pass
|
|
37
|
+
```
|
|
38
|
+
|