---
name: feature-development
description: Use when 在 Nucleus V2 目标仓库中基于需求设计与特性拆解输入开发一个或多个特性。
---
# 特性开发
> 前置:使用本 Skill 前,先按 `using-nucleus` 完成 Nucleus 入口识别(Claude Code 会话由插件 SessionStart hook 自动注入该纪律)。
## 核心原则
特性开发是按特性分组的 task / todo 编排,不是脚本循环,也不是一个大开发任务。
未读取需求设计产物和特性拆解结果,未确认需求分支,或当前特性缺少设计评审、实施计划、独立评审、整改复核事实时,不得进入对应下游写入或解锁动作。
当前特性涉及 UI,且 `docs/ui-design/**`、Pencil 文件、`ui-prototype.md` 或用户明确设计稿存在时,未把相关 UI 设计源纳入实施计划、实现任务和完成评审证据前,不得写 UI 源码或把当前特性标记完成;仅发现仓库候选设计源时,未完成人工相关性确认前不得写 UI 源码。
当前特性实施计划缺少 `developmentSpecs`,或目标仓库 `docs/specs/**` 规范缺失但没有 setup gap 处理结论时,不得写源码、测试或把当前特性标记完成。
当前特性实施计划缺少 `specAnchor`,或上下文压缩 / 会话恢复 / 阶段切换后没有从磁盘重读 `.nucleus/runs//spec-anchor.json` 及其 `sourceEvidencePaths` 时,不得写源码、测试、样式或请求完成评审。
未创建宿主 todo/task 任务包,不得执行 `feature-doc-design`、`feature-development-prepare`、`feature-implementation`、`multi-review` 或进入下一个特性。
每个特性设计评审、实施计划确认和特性完成评审请求发给人之前,必须先按 `_shared/references/subagent-precheck-protocol.md` 调度独立 reviewer 完成 `subagentPreReview`;未取得“材料可提交人工审查”结论时,不得请求人工评审通过。
## Checklist
启动本 Skill 后,必须先为以下每一项创建宿主 todo/task,并按顺序执行;Codex 使用计划 / 任务工具,Claude Code 使用 TodoWrite 或等价宿主 todo。每完成、阻塞或等待一项,都必须逐项更新状态。`.nucleus/runs//feature-development/tasks.json` 和 `tasks.md` 只是这些宿主任务包的镜像证据,不能替代宿主任务、设计评审、计划确认、review、整改复核或 PMS 状态。
1. **读取需求设计产物**:读取需求实现方案、拆解结果和 `.nucleus/context/.json`;不把上游评审是否文件化作为本阶段 input 阻塞。
2. **读取特性拆解输入**:读取 `requirement-decomposition` 输出的特性路径、优先级、依赖和 `feature-doc-design` 输入。
3. **确认需求分支**:调用或执行 `requirement-branch`;缺分支授权时 `ALERT_AND_BLOCK`。
4. **读取现有特性树**:读取目标仓库 `docs/features/**` 既有结构,避免跨特性误写。
5. **创建宿主特性任务包**:为每个特性创建独立 task 包;当前特性未完成前不得开始下一个特性。
6. **执行当前特性设计**:调用 `feature-doc-design` 直接写入 `docs/features/**` 待评审特性文档,先按 `_shared/references/subagent-precheck-protocol.md` 完成 `subagentPreReview`;通过后按 `_shared/references/interaction-format.md` 的确认型格式呈现给人评审,未通过时修订设计。
7. **生成并确认实施计划**:设计评审通过后生成实施计划,先按 `_shared/references/subagent-precheck-protocol.md` 完成 `subagentPreReview`;通过后按 `_shared/references/interaction-format.md` 的确认型格式请求确认,未确认时不得写源码或测试。计划必须包含 `specAnchor` 和 `developmentSpecs`,列出 `docs/specs/**` 规范证据、适用 rules、缺失状态、facts manifest hash、reload policy 和 setup gap 处理要求。当前特性存在相关 UI 设计源时,计划必须包含 UI 设计源发现证据、Pencil frame / UI 状态映射、公共组件 / 公共样式契约和视觉证据路径;仅发现候选设计源时,计划必须要求人工确认相关性。
8. **按计划实现并验证**:每个 task 写源码、测试或样式前,先重读 `specAnchor.sourceEvidencePaths` 指向的 specs、UI 设计证据和实施计划,再补测试或测试资产,再实现当前特性覆盖内容,并运行计划声明的验证命令。若计划 `uiDesign.applicability=required`,必须先导出或读取设计 frame,按 frame / 状态映射实现,并采集浏览器截图、人工视觉证据或等价 UI 对照证据。
9. **完成多维评审**:调用 `multi-review` 做 code-review、方案一致性评审和计划满足度评审。
10. **整改并复核**:整改评审意见或写明不采纳理由,再完成复核。
11. **收口当前特性证据**:确认当前特性证据完整且无越界改动后,才允许解锁下一个特性。
## 本 Skill 解决什么
本 Skill 只负责编排特性开发任务:
- 读取需求设计和特性拆解输入。
- 确认需求分支。
- 为每个特性创建 task / todo 任务包。
- 规定任务顺序、停点和证据。
- 调用对象型 Skill 完成具体设计、计划、实现、评审和收口。
它不替代 `feature-doc-design`、不替代实施计划、不开启脚本自动开发、不替人评审 PR、不批准合入或发布。
## 必须先做
1. 读取 `.nucleus/context/.json`。
2. 读取需求实现方案和 `requirement-decomposition` 的特性拆解结果。
3. 记录本阶段后续写入动作需要引用的人工事实字段,但不把上游评审文件化状态作为 input。
4. 调用或执行 `requirement-branch` 的分支检查纪律。
5. 读取目标仓库 `docs/features/**` 既有结构。
6. 创建宿主 todo/task 列表,并逐项更新状态。
## 单个特性任务包
每个特性必须按以下任务顺序执行:
1. 读取当前特性输入和关联需求设计产物。
2. 确认当前仍在需求分支,且工作区没有污染当前特性的无关改动。
3. 执行 `feature-doc-design`,生成或更新当前特性的 `docs/features/**` 待评审文档。
4. 设计材料先按 `_shared/references/subagent-precheck-protocol.md` 完成 `subagentPreReview`,确认材料可提交人工审查后再呈现并等待人工评审通过。
5. 基于当前特性文档和输入生成实施计划;实施计划输出后再进入本阶段计划确认门禁。
6. 实施计划先按 `_shared/references/subagent-precheck-protocol.md` 完成 `subagentPreReview`,确认材料可提交人工审查后再呈现并等待确认。
7. 读取实施计划 `specAnchor`、`.nucleus/runs//spec-anchor.json`、`developmentSpecs` 和 `.nucleus/runs//development-specs-evidence.json`;存在 `docs/specs/rules/**` 时先读适用规则,缺失时确认 setup gap 已补齐或已有人工计划豁免。
8. 上下文压缩、恢复、切换 task、写源码前、写 UI 前和进入评审前,都必须重读 spec anchor 的 `sourceEvidencePaths`,确认 `factsManifestHash` 未 stale;stale 时回到实施计划评审或重新生成 anchor。
9. 如果实施计划声明 `uiDesign.applicability=required`,先完成 UI 设计源到 route / modal / tab / state 的映射,并确认公共组件 / 公共样式读取对象;缺映射或证据路径时回到计划评审。如果声明 `candidate-found`,先取得候选设计源是否相关的人工确认;相关则回到计划补齐 required 映射,无关则记录理由后按公共组件 / 既有样式实现。
10. 按计划先补测试或测试资产,再实现当前特性覆盖内容。
11. 运行计划声明的验证命令;UI 设计源存在时,同时采集计划声明的截图、Pencil frame 导出或人工视觉对照证据。
12. 调用 `multi-review` 做 code-review、方案一致性评审、计划满足度评审和 spec compliance 复核。
13. 整改评审意见,或写明不采纳的技术理由和证据。
14. 复核整改结果。
15. 收口当前特性证据。
当前特性未完成全部任务,不得开始下一个特性。
## STOP 点
- 未读取需求设计产物和特性拆解结果:`ALERT_AND_BLOCK`。
- 当前不在需求分支,且没有明确创建或切换授权:`ALERT_AND_BLOCK`。
- 当前特性未完成 `feature-doc-design`:不得写实施计划、源码或测试。
- 特性设计未人工评审通过:不得写实施计划、源码或测试。
- 实施计划未生成或未确认:不得开发。
- 实施计划缺少 `specAnchor`,或实现前没有重读 spec anchor 及其 source evidence:不得开发。
- 实施计划缺少 `developmentSpecs`,或缺 `docs/specs/**` 处理结论:不得开发。
- UI 设计源存在但实施计划没有 UI 映射、公共组件 / 公共样式契约或视觉证据路径:不得写 UI 源码。
- 仅发现候选 UI 设计源但缺人工计划相关性确认:不得写 UI 源码。
- UI 实现缺少计划声明的截图、Pencil frame 对照或公共组件 / 样式契约复核:不得进入特性完成评审。
- 发现计划不成立或 scope 变化:停住,回到计划或特性设计评审节点。
- code-review、方案一致性评审、计划满足度评审缺任一项:不得进入下一个特性。
- 完成评审前没有按 changed files 重新计算 applicable rules -> evidence coverage:不得进入下一个特性。
- 评审意见未整改并复核:不得进入下一个特性。
- 所有特性未全部完成:不得准备 MR/PR。
## Runtime 边界
`scripts/feature_development.py` 只能生成或校验 task list 证据。它不得执行开发、写源码、写测试、写正式特性文档、创建提交、创建 MR/PR、批准评审或发布。
## 证据
任务清单可写入 `.nucleus/runs//feature-development/tasks.json` 和 `tasks.md`,仅作宿主任务包的镜像证据,只证明任务被编排或校验,不证明宿主任务已逐项执行。