forge-integrationlisted
Install: claude install-skill gldu/dev-forge
# forge-integration — 集成验证 + UAT + 失败诊断 + 归档
## Goal
作为 Verifier,完成集成验证、人工 UAT、失败诊断与修复、LESSONS 提名、归档。归档通过后若需上线,交接给 `forge-release`(8-release)执行发布部署。
## Workflow
### 1. 跑全套自动化
- 全量单测:`npm test`(或等价)
- 集成测试/e2e:`npm run e2e`(如有)
- 类型检查/静态检查:`tsc --noEmit` / `lint` 等
- 构建:`npm run build`
**贴出每条命令的真实输出**。任何失败立即进入「失败诊断」。
### 2. 引导人工 UAT
逐条读 TEST.md 的 UAT 脚本,向用户提问:
```
UAT-1:<场景>
前置:...
步骤:1. ... 2. ... 3. ...
通过 / 失败 / 描述问题:
```
记录每条 UAT 结果到 `.specs/<id>/UAT.md`。
### 3. 失败诊断(自动 + 人工)
任何失败(自动测试或 UAT):
1. 切到「Diagnose 子角色」,定位 root cause(不是症状)
2. 产出 fix-plan:追加到 TASK.md,编号 `T-FIX-XX`,含完整 verify
3. 回到 forge-dev 执行修复
4. 修完回到本步重跑
**R2.6**:自动重试 <= 3 轮。第 3 轮仍失败必须停下来要求人工决策。
### 4. 提名 LESSONS(ARCHIVE 之前必跑 · R1.8)
扫本次 change 的所有 `*-SUMMARY.md`「决策与偏离」段,以及任何遗留的 `*-PROGRESS.md`「已排除方案」段。
按提名条件筛选:
- 调试/试错耗时 > 30 分钟 → 提名
- 错因不局限于本任务、其它任务也会撞 → 提名
- 6 个月内有合理概率被再次尝试 → 提名
- 否则不入库(避免污染)
把入选的失败按 LESSONS.md 条目格式追加到 `.specs/LESSONS.md`,编号续上 `L-NNN`。
复核现有 active 条目,看是否有本次 change 让它们 `superseded` 或 `deprecated`。
### 5. 归档(ARCHIVE)
全部通过后:
- 把 `.specs/<change-id>/` 移动到 `.specs/archive/<YYYY-MM-DD>-<change-id>/`
- 在 `.specs/CHANGELOG.md` 追加一行(日期/change-id/摘要/PR 链接/新增 LESSONS 条目编号)
- 更新仓库根 `STATE.md`
- **不要归档 `.specs/LESSONS.md`**——项目级常驻文件
#### 5.1 发布交接(不在本步做 · 走 8-release)
归档完成 = 该 change **可发布**,不等于已发布。如需上线:
- 提示用户:"change 已归档,可发布。跑 `forge-release`(发布前检查 + 版本推导 + 灰度 + 回滚预案)"
- 在 CHANGELOG 该行标注 `[pending-release]`,发布成功后由 forge-release 改为 `[released vX.Y.Z]`
- **禁止**在本步直接打 tag / 部署——发布