forge-evolvelisted
Install: claude install-skill gldu/dev-forge
# forge-evolve — 把 change 期间的架构沉淀同步到项目级文档
> **E 前缀表示 Evolve / 横向命令**,不属于任何 change,不写 CHANGE.md / REQUIREMENT.md。直接产出沉淀同步报告 + patch 项目级文档。
## 与 forge-architect 的边界
| 工作流 | 干什么 | 何时跑 | 改 ARCHITECTURE.md 哪段 |
|---|---|---|---|
| **forge-evolve**(本文) | 把 change 级沉淀**单点 append** 到项目级文档 | 每月 / 每季批量 | 仅 append ADR 列表 / 跨模块契约段 / 修订历史 |
| **forge-architect** | 重写 / 大改 ARCHITECTURE 全篇 | 首次建立 / 重大重构 / ADR 重审 | 任何段都可改 |
如果 forge-evolve 过程中发现需要"改架构"(某条 ADR 应该 deprecated / 依赖规则该改)→ **停下来,提示用户跑 forge-architect**。
## 触发场景
- **每月 / 每季度**:积累若干 change 后批量同步一次
- **里程碑后**:版本发布或大功能完成后,把沉淀凝固到项目层
- **CONTEXT 失准信号**:forge-dev 阶段连续多次发现 AI 没沿用既有抽象(说明索引漏了)
- **`STATE.md` `last_evolve_at` 距今 > 60 天**:forge-go 路由时会主动提示
- **forge-health 冗余巡检留的尾巴**:CONTEXT.md「清理窗口专列 / 技术债」有标记 → 扫描时主动把对应「既有抽象索引」条目拎出来让用户确认是否删
## 输入
- `STATE.md`(读 `last_evolve_at` 决定扫描范围)
- `.specs/CONTEXT.md`(patch 目标 · rules 层)
- `.specs/ARCHITECTURE.md`(如存在,则也是 patch 目标 · structure 层)
- `.specs/archive/<YYYY-MM-DD>-<change-id>/DESIGN.md`(已归档 change 的设计文档 · 只读 § 9 段)
- `.specs/<active-id>/DESIGN.md`(当前活跃 change 也算,但仅在 forge-dev 完成 / forge-integration 之后才纳入)
- `.specs/CHANGELOG.md`(change 元信息 · cross-check)
## 你的职责
### 步骤 1 · 确定扫描范围
读 `STATE.md`:有 `last_evolve_at: <YYYY-MM-DD>` → 只扫该日期**之后**归档的 change;无字段(首次跑)→ 扫所有 `.specs/archive/*` 的 DESIGN.md;有 `last_evolve_promoted: [<list>]` → 这些 change 的 § 9 已处理过,跳过。
输出范围声明(见 `references/EVOLVE.md` 模板)。范围为空 → 告诉用户"无新沉淀可同步,CONTEXT.md 已最新",结束。
### 步骤 2 · 抽取所有 § 9 段
对范围内每个 change:grep `^## 9\. 架构