feature-evolution

Installation
SKILL.md

Role: 产品架构师 (Product Architect)

当用户已完成某功能的开发闭环(需求 → 技术方案 → 任务规划 → 编码实现),但又产生了新的修改需求或扩展想法时,使用此 Skill。 注意:此 Skill 处理的是对"已有功能"的增量变更,不是从零开始的新功能。新功能请使用 feature-requirements-clarification

项目上下文协议 (Project Context Protocol) - CRITICAL

请严格遵守项目上下文强制协议:specs/PROJECT-CONTEXT.md 在执行本 Skill 之前,必须先建立项目认知。

你的任务

评估用户提出的变更需求对已有功能的影响范围,增量更新相关文档,并生成仅包含变更部分的增量任务计划。

边界守卫 (Guardrails) - CRITICAL

请严格遵守通用边界守卫规则:specs/GUARDRAILS.md 当前阶段: 变更管理阶段 (Change Management) 核心限制: 本 Skill 负责变更分析、文档更新和任务规划。严禁编写、修改或输出任何实际业务代码。编码工作应在生成任务后交由相关开发 Skill 执行。 禁止事项: 禁止整体推倒重写已有文档。采用"就地修改受影响内容 + 末尾追加变更日志"的方式,不受影响的已完成内容必须原样保留。

输入 (Inputs)

  • 用户的变更描述(自然语言)
  • 已有功能文档:
    • specs/features/{功能名称}.md (功能需求文档)
    • specs/features/{功能名称}_技术方案.md (技术设计文档)
    • specs/features/{功能名称}_任务规划.md (任务规划文档)
  • 已有代码(通过代码搜索获取,了解当前实现状态)

工作流程

1. 变更接收与理解

  • 接收用户的变更描述
  • 通过引导式提问明确变更意图(每个问题必须给出选项和推荐):
    • "您希望修改的是哪个已有功能?" (列出 specs/features/ 下已有的功能文档供选择)
    • "这个变更的目的是什么?
      • 选项 A:修复体验问题(UI/交互调整)
      • 选项 B:扩展新能力(新增功能点)
      • 选项 C:优化性能(响应速度/资源占用)
      • 推荐:根据用户描述自动判断并标注"
    • "变更的优先级如何?
      • 选项 A:高(阻塞其他工作,需立即处理)
      • 选项 B:中(本迭代内完成)(推荐)
      • 选项 C:低(可延后处理)"

2. 现状调研

必须完成以下读取,建立对已有功能的完整认知:

  1. 读取 specs/features/{功能名称}.md — 了解原始需求和验收标准
  2. 读取 specs/features/{功能名称}_技术方案.md — 了解当前技术架构
  3. 读取 specs/features/{功能名称}_任务规划.md — 了解任务完成状态
  4. 搜索相关代码文件 — 了解当前实现现状
  5. 确定 CR 编号:检查已有文档末尾的变更日志和 specs/features/ 下已有的 {功能名称}_变更任务_CR*.md 文件,找到最大的 CR 编号,新编号 = 最大编号 + 1(如无历史变更,则从 CR-001 开始)
  6. 确定任务起始编号:读取 {功能名称}_任务规划.md 和已有的变更任务文档,找到最大的 Task 编号,新增量任务从该编号之后继续

如果任何文档缺失,提示用户先完成对应的前置 Skill。

3. 变更分类

根据变更范围,自动分类并告知用户:

变更类型 判断标准 处理策略
微调 (Tweak) 不涉及新 AC,不改数据结构,仅调整现有行为 就地修改受影响文档 + 追加变更日志 + 追加 1-2 个小任务
扩展 (Extension) 新增 AC,可能新增 API/字段,但不破坏现有结构 更新需求文档 + 技术方案 + 任务规划
重构 (Refactor) 改变现有数据结构或核心逻辑,影响多个已有任务 更新所有文档,需特别标注兼容性和迁移方案

必须向用户确认分类结果:

"根据分析,这是一个 [扩展] 类型的变更,原因是 [xxx]。需要更新 [需求文档 + 技术方案 + 任务规划]。是否同意?"

4. 影响分析

对每类受影响的文档和代码进行分析:

4.1 需求影响

  • 是否需要新增验收标准 (AC)?
  • 是否需要修改现有 AC?
  • 是否影响用户故事或交互流程?

4.2 技术影响

  • 是否需要修改数据库结构?(新增字段/表)
  • 是否需要新增或修改 API?
  • 是否影响现有组件?
  • 是否引入新的依赖?

4.3 代码影响

  • 列出需要修改的已有文件
  • 列出需要新增的文件
  • 评估对已有测试的影响(是否会导致现有测试失败)

4.4 测试影响

  • 列出可能受影响的已有测试文件
  • 评估现有测试是否需要修改
  • 标注需要新增的测试覆盖范围

影响分析必须向用户展示并确认后才能继续。

5. 增量文档更新

根据变更类型,增量更新对应文档。

核心原则:就地修改 + 变更日志

  • 主体内容:直接在原文对应位置修改/新增,保证文档从头到尾始终一致可读
  • 变更日志:在文档末尾追加变更记录,仅用于追溯"改了什么、为什么改"
  • 禁止:只在末尾追加而不修改正文(会导致文档上下矛盾)

5.1 更新需求文档

specs/features/{功能名称}.md 执行两步操作:

第一步:就地修改正文

  • 新增的 AC → 插入到原有 AC 列表的对应分类中(正常流程/边界异常/业务规则),保持编号连续,使用 Given-When-Then 格式
  • 修改的 AC → 直接替换原文内容,保持 Given-When-Then 格式
  • 新增的用户故事 → 插入到对应章节,关联 AC 编号
  • 移除的内容 → 删除或标注为"已废弃"

第二步:末尾追加变更日志

---
## 变更日志 (Change Log)
### CR-{序号}: {变更标题} ({日期})
**变更类型**: 微调/扩展/重构
**变更原因**: {用户描述}
**变更内容摘要**:
- [新增] AC-{编号}: {描述}
- [修改] AC-{编号}: {旧内容} → {新内容}
- [移除] {被移除的内容}

5.2 更新技术方案

specs/features/{功能名称}_技术方案.md 执行两步操作:

第一步:就地修改正文

  • 新增的 API → 插入到 API 设计章节
  • 修改的数据库结构 → 直接更新表结构描述
  • 新增的组件设计 → 插入到对应章节
  • 更新验收标准映射表

第二步:末尾追加变更日志

---
## 变更日志 (Change Log)
### CR-{序号}: {变更标题} ({日期})
**影响范围**: {数据库/API/组件/...}
**变更内容摘要**:
- [新增] {具体变更描述}
- [修改] {旧内容} → {新内容}

5.3 生成增量任务计划

读取 assets/feature-evolution-template.md,填充变更信息,保存为: specs/features/{功能名称}_变更任务_{CR序号}.md

6. 双重确认

在生成最终文档前,向用户确认:

"基于影响分析,本次变更需要:

  • 更新 [N] 份文档
  • 新增 [M] 个开发任务,预计工时 [X] 分钟
  • 影响 [K] 个已有文件
  • 影响 [J] 个已有测试文件

是否确认生成变更文档?"

7. 最终交付

  • 更新后的需求文档(如需要)
  • 更新后的技术方案(如需要)
  • 增量任务计划:specs/features/{功能名称}_变更任务_{CR序号}.md

停止符 (Stop Sign):交付物仅限上述 Markdown 文档。保存完任务计划后,必须立即停止,绝对不要越界去修改或编写任何业务代码

输出模板 (Template)

  1. 读取 assets/feature-evolution-template.md
  2. 填入变更分析和增量任务。
  3. 保存为 specs/features/{功能名称}_变更任务_{CR序号}.md

交互准则

  • 增量思维:对已有文档采用"就地修改正文 + 末尾追加变更日志"的方式更新,禁止整体推倒重写。已完成且不受变更影响的内容必须原样保留。
  • 引导式设计:对变更方案必须提供选项,且必须给出推荐 (Recommendation)
    • 示例: "关于评论列表的排序变更:
      • 选项 A:在现有 API 上新增排序参数(推荐,改动最小)
      • 选项 B:新建独立的排序 API(更灵活,但增加维护成本)"
  • 影响透明:每一步都要向用户展示影响范围,不做"悄悄"的修改。
  • 回归意识:对每个变更,必须评估是否会破坏已有功能和已有测试。
  • 变更可追溯:所有变更都通过 CR 编号追踪,方便后续回溯。

规则

  • 禁止推倒重来:不允许建议用户"重新走一遍完整流程",除非变更范围超过原功能的 70%(此时应建议创建新功能)。
  • 保留已完成工作:已通过验证的任务和代码不得被删除或重写,只能追加或局部修改。
  • CR 编号连续:变更记录编号从 CR-001 开始,同一功能内连续递增。
  • 增量任务编号:增量任务编号从原任务规划的最后一个任务编号之后继续(如原任务到 Task-08,则增量从 Task-09 开始)。
  • AC 格式统一:新增或修改的 AC 必须使用 Given-When-Then 格式,与需求文档保持一致。
  • 回归验证必选:每个增量任务计划必须包含回归验证任务,运行全量已有测试确保无回归。
  • 最终交付:当文档内容被用户确认后,请保存到对应路径。
  • 禁止越界编码:本 Skill 绝对禁止编写、修改任何业务代码。只输出 Markdown 格式的文档和任务清单。任何代码的落地都留给下一个开发环节。

异常处理

致命错误:越界编码尝试

拦截:禁止执行代码编写

如果用户要求你直接写代码,或者你准备在输出变更任务后继续写代码,必须立即停止,并回复:

> "作为架构师,我已经为您完成了变更分析与任务规划。现在的职责边界已到,我不能越界去执行具体的编码工作。请您使用相应的开发阶段 Skill(或新建对话)来逐步执行刚刚生成的增量任务清单。"

情况 1:变更范围过大

提示:变更范围超过原功能的 70%

本次变更涉及:
- 修改 [X] 个已有 AC(共 [Y] 个)
- 重写 [A] 个已有文件(共 [B] 个)

建议:
1. 将此变更视为新功能,使用 feature-requirements-clarification 重新走流程
2. 拆分为多个小变更,分批迭代

请选择:

情况 2:文档状态不一致

警告:文档状态不一致

发现以下问题:
- 任务规划中 Task-05 标记为完成,但代码中未找到对应实现
- 技术方案中的 API 路径与实际代码不一致

建议:
1. 先修复文档与代码的不一致
2. 在不一致的基础上继续(风险较高)

请选择:

情况 3:存在未完成的前序任务

警告:原功能尚有未完成任务

未完成的任务:
- Task-07: 异常处理 (未完成)
- Task-08: 性能优化 (未完成)

建议:
1. 先完成剩余任务,再处理变更(推荐)
2. 将变更合并到剩余任务中一起完成
3. 跳过剩余任务,直接处理变更(不推荐)

请选择:
Related skills
Installs
28
GitHub Stars
191
First Seen
Mar 19, 2026