From 0b6ae1512b5755c6522829226bfaecc168e05878 Mon Sep 17 00:00:00 2001 From: yourname Date: Wed, 8 Apr 2026 07:29:00 +0000 Subject: [PATCH] =?UTF-8?q?sync:=20=E6=96=B0=E5=A2=9E=20d8d-iterate=20?= =?UTF-8?q?=E9=9C=80=E6=B1=82=E8=BF=AD=E4=BB=A3=E8=87=AA=E5=8A=A8=E5=8C=96?= =?UTF-8?q?=E7=BC=96=E6=8E=92=E6=8A=80=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 需求迭代的智能路由器,根据变更类型(feature/bugfix/refactor/ greenfield/regression/design)自动编排 d8d-requirements/d8d-prototype/ d8d-dev 的增量执行路径。 6 个 Phase:项目扫描 → 变更分析 → 文档增量更新 → 原型更新 → 增量开发 → 回归验证+旅程验证。全程零人工干预。 --- .claude/skills/d8d-iterate/SKILL.md | 33 +++ .claude/skills/d8d-iterate/phase-00-scan.md | 119 +++++++++++ .../skills/d8d-iterate/phase-01-analyze.md | 155 ++++++++++++++ .claude/skills/d8d-iterate/phase-02-docs.md | 195 +++++++++++++++++ .../skills/d8d-iterate/phase-03-prototype.md | 56 +++++ .claude/skills/d8d-iterate/phase-04-dev.md | 98 +++++++++ .claude/skills/d8d-iterate/phase-05-verify.md | 146 +++++++++++++ .claude/skills/d8d-iterate/workflow.md | 201 ++++++++++++++++++ 8 files changed, 1003 insertions(+) create mode 100644 .claude/skills/d8d-iterate/SKILL.md create mode 100644 .claude/skills/d8d-iterate/phase-00-scan.md create mode 100644 .claude/skills/d8d-iterate/phase-01-analyze.md create mode 100644 .claude/skills/d8d-iterate/phase-02-docs.md create mode 100644 .claude/skills/d8d-iterate/phase-03-prototype.md create mode 100644 .claude/skills/d8d-iterate/phase-04-dev.md create mode 100644 .claude/skills/d8d-iterate/phase-05-verify.md create mode 100644 .claude/skills/d8d-iterate/workflow.md diff --git a/.claude/skills/d8d-iterate/SKILL.md b/.claude/skills/d8d-iterate/SKILL.md new file mode 100644 index 0000000..7a5163a --- /dev/null +++ b/.claude/skills/d8d-iterate/SKILL.md @@ -0,0 +1,33 @@ +--- +name: d8d-iterate +description: '需求迭代自动化编排技能。智能检测项目状态,分析变更类型,自动编排 d8d-requirements / d8d-prototype / d8d-dev 技能的增量执行路径。支持新功能、Bug修复、重构、设计更新等多种迭代场景,包含回归验证+旅程验证,全程零人工干预。' +--- + +# D8D Iterate — 需求迭代自动化编排 + +**智能路由器**:检测项目状态 → 分析变更意图 → 选择最优路径 → 自动编排子技能。 + +**立即加载 [workflow.md](workflow.md) 开始执行工作流。** + +## 支持的变更类型 + +| 类型 | 触发条件 | 执行路径 | +|------|----------|----------| +| **feature** | 已有完整文档,需增加新 Epic | edit-prd → update docs → new epic → dev | +| **greenfield** | 无现有文档 | d8d-requirements → d8d-prototype → d8d-dev | +| **bugfix** | 代码已实现但有问题 | dev single-story 或直接修复 | +| **refactor** | 需调整架构但功能不变 | correct-course → update arch → dev | +| **regression** | 验证已有功能 | dev regression | +| **design** | 只改 UI 不改逻辑 | prototype → dev 相关 story | + +## 使用方式 + +``` +/d8d-iterate <变更描述> + +示例: +/d8d-iterate 增加多城市批量任务调度功能 +/d8d-iterate 修复搜索结果为空的问题 +/d8d-iterate 重构数据模型为多城市支持 +/d8d-iterate 回归验证所有功能 +``` diff --git a/.claude/skills/d8d-iterate/phase-00-scan.md b/.claude/skills/d8d-iterate/phase-00-scan.md new file mode 100644 index 0000000..6314848 --- /dev/null +++ b/.claude/skills/d8d-iterate/phase-00-scan.md @@ -0,0 +1,119 @@ +# Phase 0: 项目状态扫描 + +**目标**:全面扫描项目当前状态,建立基线用于后续变更分析。 + +## 扫描清单 + +### 1. 规划文档检测 + +扫描 `{planning_artifacts}/` 目录(默认:`_bmad-output/planning-artifacts/`): + +``` +检测文件: +├── *brief*.md → 产品简报 +├── *prd*.md → PRD +├── *architecture*.md → 技术架构 +├── *ux*.md / *ui*.md → UX 设计 +├── *epic*.md → 史诗与故事 +└── *readiness*.md → 就绪检查报告 +``` + +对每个存在的文档,记录: +- 文件路径 +- 文件大小(行数) +- 最后修改时间 +- 关键章节概要(前 20 行 + 标题结构) + +### 2. 实施状态检测 + +扫描 `{implementation_artifacts}/` 目录(默认:`_bmad-output/implementation-artifacts/`): + +``` +检测文件: +├── pipeline-state.yaml → 开发流水线状态 +├── sprint-status.yaml → Sprint 状态 +└── story-specs/ → Story 规格文件 +``` + +从 `pipeline-state.yaml` 提取: +- 已完成 Epic 数量和 ID 列表 +- 已完成 Story 数量和 ID 列表 +- 失败/未验证的 Story 列表 +- 当前流水线状态 (completed/in_progress/failed) + +### 3. 代码库扫描 + +扫描项目根目录: + +``` +检测: +├── package.json → 技术栈、依赖 +├── prisma/schema.prisma → 数据模型定义 +├── src/ → 源代码结构 +│ ├── app/api/ → API 路由列表 +│ ├── components/ → 组件列表 +│ └── lib/ → 工具库 +├── prototype/ → 原型文件(如果存在) +└── next.config.* → Next.js 配置 +``` + +从 `prisma/schema.prisma` 提取: +- 所有模型名称 +- 关键字段 +- 模型间关系 + +### 4. 技术栈识别 + +从 `package.json` 提取: +- 框架 (Next.js 版本) +- UI 库 (shadcn/ui, Tailwind) +- 数据库 (Prisma, PostgreSQL) +- 其他关键依赖 + +## 输出 + +将扫描结果写入 `iterate-context.md` 的「项目状态快照」部分: + +```markdown +## 项目状态快照 + +### 文档状态 +| 文档 | 路径 | 状态 | +|------|------|------| +| PRD | _bmad-output/planning-artifacts/prd.md | ✅ 存在 (234 行) | +| 架构 | _bmad-output/planning-artifacts/architecture.md | ✅ 存在 (189 行) | +| ... | ... | ... | + +### 开发状态 +- 已完成 Epic: 6 (epic-1 到 epic-6) +- 已完成 Story: 26/26 +- 流水线状态: completed + +### 数据模型 +- Store: 门店信息 +- SearchTask: 搜索任务 +- (无 BatchTask) + +### 技术栈 +- Next.js 16 + App Router +- PostgreSQL 17 + Prisma +- shadcn/ui + Tailwind CSS +``` + +## 判断规则 + +``` +IF 无任何规划文档: + → 项目类型: greenfield + +IF 有完整规划文档 + pipeline-state 显示 completed: + → 项目类型: mature (成熟项目,支持迭代) + +IF 有部分规划文档 + pipeline-state 显示 in_progress: + → 项目类型: in-progress (进行中项目,需续跑) + +IF 有规划文档但无 pipeline-state: + → 项目类型: planned (已规划未开发) +``` + +将项目类型写入 `iterate-checkpoint.md`。 diff --git a/.claude/skills/d8d-iterate/phase-01-analyze.md b/.claude/skills/d8d-iterate/phase-01-analyze.md new file mode 100644 index 0000000..63118b9 --- /dev/null +++ b/.claude/skills/d8d-iterate/phase-01-analyze.md @@ -0,0 +1,155 @@ +# Phase 1: 变更分析与分类 + +**目标**:理解用户变更意图,分类变更类型,评估影响范围,确定执行路径。 + +## 输入 + +1. **用户需求描述**:来自 `/d8d-iterate <描述>` 的参数 +2. **项目状态快照**:来自 Phase 0 的扫描结果(iterate-context.md) + +## 分析步骤 + +### Step 1.1: 需求理解 + +解析用户描述,提取: + +``` +- 核心意图:用户想要做什么? +- 涉及领域:哪些功能模块受影响? +- 变更规模:是小改动还是大功能? +- 紧急程度:是否需要立即处理? +``` + +### Step 1.2: 变更类型分类 + +根据需求描述和项目状态,分类变更类型: + +| 类型 | 判定关键词 | 典型描述 | +|------|-----------|----------| +| **feature** | 增加、新增、添加、支持、扩展 | "增加多城市批量任务"、"支持导出 PDF" | +| **bugfix** | 修复、解决、bug、问题、异常、报错 | "修复搜索结果为空"、"解决导出失败" | +| **refactor** | 重构、优化、调整架构、迁移 | "重构数据模型"、"优化性能" | +| **greenfield** | 新建、从零开始、新项目 | 在无文档的项目上执行 | +| **regression** | 验证、测试、回归、检查 | "回归验证所有功能" | +| **design** | 界面、UI、样式、布局、交互 | "调整搜索面板布局" | + +**混合类型处理**:如果包含多种意图,按优先级 feature > refactor > bugfix > design 取主要类型,次要类型记录为附加任务。 + +### Step 1.3: 影响范围评估 + +根据变更类型,评估影响范围: + +#### Feature 类型影响评估 + +``` +1. 读取现有 PRD + → 是否需要修改已有功能需求? + → 是否只是新增章节? + +2. 读取现有架构文档 + → 是否需要新数据模型? + → 是否需要新 API 路由? + → 是否影响现有模型(加字段/改关系)? + +3. 读取现有 UX 设计 + → 是否需要新页面/组件? + → 是否修改现有页面布局? + +4. 读取现有 Epic 列表 + → 需要创建多少新 Story? + → 是否影响已有 Epic 的 Story? +``` + +#### Bugfix 类型影响评估 + +``` +1. 定位问题文件 + → 读取相关代码文件 + → 确认 bug 根因 + +2. 评估修复范围 + → 是否只涉及单个文件? + → 是否需要改数据模型? + → 是否影响多个 Epic? +``` + +### Step 1.4: 风险等级 + +| 等级 | 条件 | 示例 | +|------|------|------| +| **low** | 纯增量,不影响现有代码 | 新增 BatchTask 表 + 新页面 | +| **medium** | 需修改现有模型或 API | SearchTask 加字段、修改搜索路由 | +| **high** | 重构核心架构或数据模型 | 更换数据库、重写认证系统 | + +### Step 1.5: 执行路径确定 + +根据变更类型和影响评估,确定执行路径: + +``` +greenfield: + → 调用 d8d-requirements (全量) + → 完成后自动触发 d8d-prototype + → 完成后自动触发 d8d-dev + +feature (low risk): + → Phase 2: edit-prd + update arch/ux + new epic + → Phase 4: d8d-dev --epic {new-epic} + → Phase 5: d8d-dev --regression + +feature (medium/high risk): + → Phase 2: edit-prd + correct-course + update docs + new epic + → Phase 3: d8d-prototype --incremental (如果新 UI) + → Phase 4: d8d-dev --epic {new-epic} + → Phase 5: d8d-dev --regression + +bugfix (single file): + → Phase 4: 直接修复 + d8d-dev --story {story-id} + → Phase 5: d8d-dev --regression (可选) + +bugfix (multi file): + → Phase 2: 如果需要更新文档 + → Phase 4: d8d-dev --story {story-id} + → Phase 5: d8d-dev --regression + +refactor: + → Phase 2: correct-course + update docs + → Phase 4: d8d-dev --epic {affected-epic} + → Phase 5: d8d-dev --regression + +regression: + → Phase 5 only: d8d-dev --regression + +design: + → Phase 3: d8d-prototype --incremental + → Phase 4: d8d-dev --story {affected-stories} + → Phase 5: d8d-dev --regression (可选) +``` + +## 输出 + +将分析结果写入 `iterate-context.md`: + +```markdown +## 变更分析 + +### 需求理解 +- 核心意图: 支持多城市批量任务调度 +- 涉及领域: 任务管理、数据采集、UI 交互 +- 变更规模: 大功能(需要新数据模型+新页面+新 API) + +### 分类结果 +- 变更类型: feature +- 风险等级: low (纯增量,不影响现有代码) + +### 影响范围 +- PRD: 需要添加新功能需求章节 +- 架构: 需要添加 BatchTask 模型和批量执行器 +- UX: 需要添加批量任务面板和仪表盘 +- Epic: 需要创建新 Epic (估计 7 个 Story) + +### 执行路径 +Phase 2 → Phase 4 → Phase 5 +(跳过 Phase 3 原型,因为遵循现有 UI 模式) +``` + +更新 `iterate-checkpoint.md` 的 `change_type` 和 `current_phase` 字段。 diff --git a/.claude/skills/d8d-iterate/phase-02-docs.md b/.claude/skills/d8d-iterate/phase-02-docs.md new file mode 100644 index 0000000..7e2aa72 --- /dev/null +++ b/.claude/skills/d8d-iterate/phase-02-docs.md @@ -0,0 +1,195 @@ +# Phase 2: 文档增量更新 + +**目标**:根据变更分析结果,增量更新项目文档(PRD、架构、UX、Epic),保留所有已有内容。 + +## 铁律 + +1. **增量更新**:只添加/修改必要部分,绝不删除或覆盖已有内容 +2. **向后兼容**:所有文档变更必须保持与已完成 Epic 的兼容性 +3. **先读后写**:修改任何文档前必须先完整读取当前内容 + +## 执行步骤 + +### Step 2.1: 更新 PRD + +**条件**:变更涉及新功能需求或需求变更。 + +**方法 A:使用 bmad-edit-prd(推荐)** + +调用 bmad-edit-prd 技能,传入精确的编辑指令: + +``` +Skill tool: bmad-edit-prd +Arguments: + PRD 路径: {planning_artifacts}/prd.md + + === 编辑指令 === + 1. 定位排除范围章节(通常是 §9.x),移除与新功能相关的排除项 + 2. 在功能需求章节添加新需求: + - FR-0XX: <需求标题> + - 描述: <详细描述> + - 验收标准: + 3. 在里程碑章节添加新里程碑(如果适用) + + === 约束 === + - 不要修改任何已有的功能需求 + - 不要修改已完成 Epic 相关的内容 + - 保持文档整体结构不变 +``` + +**方法 B:直接编辑(小改动)** + +对于简单的文档更新(如移除排除项),直接使用 Edit tool 进行精确修改。 + +### Step 2.2: 更新架构文档 + +**条件**:变更涉及新数据模型、API 路由、或系统组件。 + +**操作**: + +1. 读取 `{planning_artifacts}/architecture.md` +2. 确定需要添加的位置(通常是追加新章节) +3. 使用 Edit tool 在合适位置插入新内容: + +```markdown +追加内容包括: +- 新数据模型定义(字段、关系、约束) +- 新 API 路由(方法、路径、请求/响应格式) +- 新系统组件(如批量执行器、任务队列) +- 更新目录结构(新增文件) +``` + +**架构更新模板**(新功能): + +``` +## X. {新功能名称} + +### 数据模型 + +\`\`\`prisma +model NewModel { + id Int @id @default(autoincrement()) + // ... 字段定义 + createdAt DateTime @default(now()) +} +\`\`\` + +### API 路由 + +| 方法 | 路径 | 描述 | +|------|------|------| +| POST | /api/new | 创建 | + +### 新增文件 + +- src/app/api/new/route.ts +- src/components/features/new-panel.tsx +``` + +### Step 2.3: 更新 UX 设计文档 + +**条件**:变更涉及新页面、新组件、或 UI 交互变更。 + +**操作**: + +1. 读取 `{planning_artifacts}/ux-design-specification.md`(或 `*ux*.md`) +2. 在合适位置追加新的 UX 模式描述: + +```markdown +追加内容包括: +- 新页面描述(布局、组件、交互) +- 新组件规格(props、状态、行为) +- 新交互流程(用户操作序列) +- 线框图描述(文本形式) +``` + +### Step 2.4: 创建新 Epic 和 Story + +**条件**:变更类型为 feature 或 refactor。 + +**操作**: + +1. 读取 `{planning_artifacts}/*epic*.md` +2. 确定下一个 Epic 编号(如 Epic 7) +3. 追加新 Epic 及其 Story: + +```markdown +## Epic {N}: {Epic 标题} + +**目标**: {一句话描述} + +### Story 列表 + +| Story | 标题 | 复杂度 | 依赖 | +|-------|------|--------|------| +| {N}-1 | ... | Low | - | +| {N}-2 | ... | Medium | {N}-1 | +| ... | ... | ... | ... | + +### Story 详情 + +#### Story {N}-1: {标题} + +**描述**: {详细描述} + +**验收标准**: +- AC1: ... +- AC2: ... + +**技术要点**: +- 改动文件: ... +- 关键实现: ... +``` + +### Step 2.5: 更新 Pipeline 状态文件 + +**条件**:创建了新 Epic。 + +**操作**: + +1. 读取 `{implementation_artifacts}/pipeline-state.yaml` +2. 更新关键字段: + +```yaml +# 修改 +total_epics: {原值 + 1} +total_stories: {原值 + 新 Story 数} + +# 追加 +epics: + # ... 已有 epic 不变 + epic-{N}: + title: "{Epic 标题}" + status: pending + stories: + {N}-1: + title: "{Story 标题}" + status: pending + # ... 其他 Story +``` + +3. 同步更新 `sprint-status.yaml` + +## 质量检查 + +每个文档更新后,验证: + +``` +✅ 已有内容未被删除或修改 +✅ 新内容与已有内容的格式一致 +✅ 新 Story 的依赖关系正确 +✅ pipeline-state 的计数正确 +✅ 所有新增文件路径符合项目约定 +``` + +## 输出 + +更新 `iterate-progress.md`: +```yaml +phase-02-docs: + prd_updated: true | false + architecture_updated: true | false + ux_updated: true | false + epic_created: true | false + pipeline_state_updated: true | false +``` diff --git a/.claude/skills/d8d-iterate/phase-03-prototype.md b/.claude/skills/d8d-iterate/phase-03-prototype.md new file mode 100644 index 0000000..71fd0a3 --- /dev/null +++ b/.claude/skills/d8d-iterate/phase-03-prototype.md @@ -0,0 +1,56 @@ +# Phase 3: 原型更新(可选) + +**目标**:当变更涉及新 UI 页面或重大交互变更时,更新原型系统。 + +## 触发条件 + +``` +IF 变更类型 == design → 执行 Phase 3 +IF 变更类型 == feature 且涉及新页面/组件 → 执行 Phase 3 +IF 变更类型 == bugfix → 跳过 +IF 变更类型 == refactor 且不涉及 UI → 跳过 +IF 变更类型 == regression → 跳过 +``` + +## 执行方式 + +### 方式 A: 调用 d8d-prototype 全量更新 + +当新增多个页面时: + +``` +Skill tool: d8d-prototype +Arguments: + 项目: {project_name} + PRD: {planning_artifacts}/prd.md + UX设计: {planning_artifacts}/ux-design-specification.md + 架构: {planning_artifacts}/architecture.md + 输出目录: {planning_artifacts}/prototypes +``` + +### 方式 B: 只生成新增页面 + +当只新增少量页面时,直接生成单个 HTML 文件: + +1. 读取现有原型页面,了解样式规范 +2. 为新增页面创建独立 HTML 文件 +3. 更新 admin-index.html,将新页面加入 iframe 网格 + +### 方式 C: 跳过 + +当变更不涉及新 UI 时,直接跳过此 Phase。 + +``` +在 iterate-progress.md 中记录: +phase-03-prototype: skipped (reason: no UI changes) +``` + +## 输出 + +更新 `iterate-progress.md`: +```yaml +phase-03-prototype: + status: completed | skipped + new_pages: [page-name-1, page-name-2] # 如果执行了 + reason: "..." # 如果跳过了 +``` diff --git a/.claude/skills/d8d-iterate/phase-04-dev.md b/.claude/skills/d8d-iterate/phase-04-dev.md new file mode 100644 index 0000000..1c198dc --- /dev/null +++ b/.claude/skills/d8d-iterate/phase-04-dev.md @@ -0,0 +1,98 @@ +# Phase 4: 增量开发 + +**目标**:调用 d8d-dev 技能执行增量开发,只实现新增或变更的部分。 + +## 执行路径选择 + +根据变更类型和 Phase 2 的分析结果,选择 d8d-dev 的运行模式: + +| 场景 | d8d-dev 模式 | 参数 | +|------|-------------|------| +| 新 Epic | 单 Epic 模式 | `--epic epic-{N}` | +| 新 Story | 单 Story 模式 | `--story {story-id}` | +| Bug 修复 | 单 Story 模式 | `--story {story-id}` | +| 重构 | 单 Epic 模式 | `--epic epic-{N}` | +| 设计变更 | 单 Story 模式 | `--story {affected-story}` | + +## 执行方式 + +### 方式 A: 新 Epic 开发 + +Phase 2 创建了新 Epic(如 Epic 7)时: + +``` +Skill tool: d8d-dev +Arguments: + --epic epic-7 + + 项目: {project_name} + PRD: {planning_artifacts}/prd.md + 架构: {planning_artifacts}/architecture.md + UX设计: {planning_artifacts}/ux-design-specification.md + Epic: {planning_artifacts}/epics.md (Epic 7 部分) + + === 前置产物 === + 已完成 Epic: 1-6 (全部 PASS) + 新增 Epic: 7 (7 个 Story, 全部 pending) + + === 上下文 === + 这是一个增量开发,在已有 MVP 基础上添加新功能。 + 请只实现 Epic 7 的 Story,不要修改已有 Epic 的代码。 + 如果需要修改已有文件(如添加 import、增加字段), + 确保不破坏已有功能。 + + === 指令 === + 使用单 Epic 模式,依次实现 Epic 7 的所有 Story。 + 每个 Story 执行完整的 CREATE-SPEC → IMPLEMENT → TEST → REVIEW → MARK-DONE 循环。 +``` + +### 方式 B: 单 Story 修复 + +定位到具体 Story 进行修复: + +``` +Skill tool: d8d-dev +Arguments: + --story {story-id} + + 项目: {project_name} + PRD: {planning_artifacts}/prd.md + Epic: {planning_artifacts}/epics.md (相关 Story) + + === Bug 上下文 === + 问题描述: {bug 描述} + 根因分析: {分析结果} + 修复方案: {方案} + + === 指令 === + 使用单 Story 模式,修复指定 Story 的问题。 + 不做额外的代码改动。 +``` + +### 方式 C: Bug 直接修复(无 Story) + +对于简单的 bug,无需创建 Story,直接修复: + +1. 读取相关代码文件 +2. 定位问题 +3. 使用 Edit tool 修复 +4. 运行测试验证 + +## 注意事项 + +1. **不要调用 `d8d-dev --force`**:这会清除所有已有状态 +2. **不要调用 `d8d-dev` 无参数**:可能触发完整模式,重跑所有 Epic +3. **确认 pipeline-state 已更新**:Phase 2 必须先更新 pipeline-state.yaml +4. **监控执行结果**:如果 d8d-dev 报错,检查是否因为 pipeline-state 不一致 + +## 输出 + +更新 `iterate-progress.md`: +```yaml +phase-04-dev: + mode: single-epic | single-story | direct-fix + target: epic-7 | story-7-3 | direct + result: success | partial | failed + stories_completed: 7 + stories_failed: 0 +``` diff --git a/.claude/skills/d8d-iterate/phase-05-verify.md b/.claude/skills/d8d-iterate/phase-05-verify.md new file mode 100644 index 0000000..0f6aaff --- /dev/null +++ b/.claude/skills/d8d-iterate/phase-05-verify.md @@ -0,0 +1,146 @@ +# Phase 5: 回归验证 + 旅程验证 + +**目标**:回归验证已有功能未退化 → 旅程验证跨 Story 用户流程 → 生成最终变更报告。 + +**验证顺序**(与 d8d-dev 铁律一致):回归验证 → 旅程验证,不得跳过回归直接旅程。 + +## 执行步骤 + +### Step 5.1: 回归测试 + +调用 d8d-dev 的回归验证模式: + +``` +Skill tool: d8d-dev +Arguments: + --regression + + 项目: {project_name} + + === 指令 === + 使用回归验证模式,逐 Story 验证已有功能。 + 跳过本次新增的 Epic/Story(已在 Phase 4 验证过)。 + 只验证 Epic 1-6 的功能点。 +``` + +**条件跳过**: + +``` +IF 变更类型 == bugfix 且只修改了单个文件: + → 可选执行回归(取决于风险等级) + +IF 变更类型 == regression: + → 这就是主要任务,执行完整回归 + +IF 变更类型 == feature 且 risk == low: + → 执行回归(推荐但不强制) +``` + +### Step 5.2: 旅程验证 + +回归测试全部通过后,**零暂停**自动执行旅程验证: + +``` +Skill tool: d8d-dev +Arguments: + --journey + + === 指令 === + 使用旅程验证模式,验证跨 Story 的用户旅程。 + 包含已有旅程 + 新增功能的旅程。 +``` + +**铁律**:回归验证 PASS 后才能执行旅程验证。功能不存在时测旅程无意义。 + +### Step 5.3: 生成变更报告 + +汇总所有 Phase 的执行结果,生成变更报告: + +```markdown +# 变更报告 + +## 概要 +- 变更类型: feature +- 用户需求: 增加多城市批量任务调度功能 +- 执行路径: Phase 2 → Phase 4 → Phase 5 +- 风险等级: low + +## Phase 2 — 文档增量更新 +| 文档 | 操作 | 状态 | +|------|------|------| +| PRD | 添加 FR-013~018 | ✅ | +| 架构 | 添加 BatchTask 模型 | ✅ | +| UX | 添加批量任务面板 | ✅ | +| Epic | 创建 Epic 7 | ✅ | +| Pipeline State | 更新计数 | ✅ | + +## Phase 4 — 增量开发 +| Story | 标题 | 状态 | +|-------|------|------| +| 7-1 | BatchTask 数据模型 | ✅ PASS | +| 7-2 | 批量任务 API | ✅ PASS | +| 7-3 | 任务调度引擎 | ✅ PASS | +| 7-4 | 批量任务面板 UI | ✅ PASS | +| 7-5 | 批量任务仪表盘 | ✅ PASS | +| 7-6 | 批量导出 | ✅ PASS | +| 7-7 | 历史记录集成 | ✅ PASS | + +## Phase 5 — 回归验证 +- Epic 1-6: ✅ 全部 PASS (26/26) + +## Phase 5 — 旅程验证 +- 10/10 旅程全部 PASS + +## 文件变更统计 +- 新增文件: {count} +- 修改文件: {count} +- 删除文件: {count} + +## 测试结果 +- 单元测试: {passed}/{total} passed +- E2E 测试: {passed}/{total} passed +- 回归测试: {passed}/{total} passed +- 旅程验证: {passed}/{total} passed +``` + +### Step 5.4: 更新最终状态 + +更新 `iterate-checkpoint.md`: +```yaml +pipeline: d8d-iterate +status: completed +completed_phases: [phase-00, phase-01, phase-02, phase-04, phase-05] +user_request: "..." +change_type: feature +target_epic: epic-7 +result: success +``` + +更新 `iterate-progress.md`: +```yaml +phase-05-verify: + regression: completed + regression_result: PASS | FAIL + journey: completed # 回归 PASS 后自动执行 + journey_result: PASS | FAIL +``` + +## 错误处理 + +``` +IF 回归测试发现退化: + → 记录退化的 Story + → 生成退化报告 + → 不自动修复,建议用户决定处理方式 + → 跳过旅程验证(功能不完整时测旅程无意义) + +IF 回归 PASS 但旅程验证 FAIL: + → 记录失败的旅程 + → 尝试自动修复(最多 3 轮) + → 仍然 FAIL 则报告给用户 + +IF Phase 4 开发部分失败: + → 跳过 Phase 5 + → 在报告中标注失败项 + → 建议用户使用 d8d-dev --story 逐个修复 +``` diff --git a/.claude/skills/d8d-iterate/workflow.md b/.claude/skills/d8d-iterate/workflow.md new file mode 100644 index 0000000..350a281 --- /dev/null +++ b/.claude/skills/d8d-iterate/workflow.md @@ -0,0 +1,201 @@ +# D8D Iterate — 需求迭代自动化工作流 + +**全自动化**迭代编排:检测状态 → 分析变更 → 更新文档 → 增量开发 → 回归验证 → 旅程验证。全程零人工干预。 + +## 核心理念 + +``` +用户输入: "增加多城市批量任务" + ↓ +┌──────────────────────────────────────────────────────────┐ +│ D8D Iterate 自动化编排器 │ +│ │ +│ Phase 0: 项目状态扫描 │ +│ ↓ │ +│ Phase 1: 变更分析 → 分类 + 影响评估 + 路径选择 │ +│ ↓ │ +│ Phase 2: 文档增量更新 (按需) │ +│ ↓ │ +│ Phase 3: 原型更新 (可选) │ +│ ↓ │ +│ Phase 4: 增量开发 │ +│ ↓ │ +│ Phase 5: 回归验证 + 旅程验证 + 变更报告 │ +│ │ +│ 全程无暂停、无确认、全自动执行 │ +└──────────────────────────────────────────────────────────┘ +``` + +## 状态机 + +``` + ┌──────────────┐ + │ Phase 0 │ 项目状态扫描 + │ SCAN │ 检测文档、代码、pipeline 状态 + └──────┬───────┘ + ↓ + ┌──────────────┐ + │ Phase 1 │ 变更分析 + │ ANALYZE │ 分类变更类型、评估影响 + └──────┬───────┘ + ↓ + ┌──────────────────────┐ + │ 决策路由 │ + │ greenfield? ───→ 全量流程 (d8d-requirements → prototype → dev) + │ feature? ───→ Phase 2 → 4 → 5 + │ bugfix? ───→ Phase 4 (single-story) + │ refactor? ───→ Phase 2 → 4 → 5 + │ regression?───→ Phase 5 only + │ design? ───→ Phase 3 → 4 + └────────┬─────────┘ + ↓ + ┌─────────────────┐ + │ Phase 2 │ 文档增量更新 (按需) + │ UPDATE-DOCS │ edit-prd → update arch/ux → new epic + └────────┬────────┘ + ↓ + ┌─────────────────┐ + │ Phase 3 │ 原型更新 (可选) + │ PROTOTYPE │ d8d-prototype --incremental + └────────┬────────┘ + ↓ + ┌─────────────────┐ + │ Phase 4 │ 增量开发 + │ DEV │ d8d-dev --epic 或 --story + └────────┬────────┘ + ↓ + ┌─────────────────┐ + │ Phase 5 │ 回归验证 + 旅程验证 + │ VERIFY │ d8d-dev --regression → --journey + 变更报告 + └─────────────────┘ +``` + +## 三文件状态管理 + +与 d8d-requirements/d8d-dev 保持一致的 3-file 模式: + +``` +{planning_artifacts}/.iterate-checkpoint.md — 当前阶段、完成步骤 +{planning_artifacts}/.iterate-context.md — 变更类型、影响分析、执行方案 +{planning_artifacts}/.iterate-progress.md — 各阶段执行状态 +``` + +### 状态文件格式 + +**iterate-checkpoint.md**: +```yaml +pipeline: d8d-iterate +status: in_progress | completed | failed +current_phase: phase-XX +completed_phases: [...] +user_request: "用户的原始需求描述" +change_type: feature | bugfix | refactor | greenfield | regression | design +target_epic: epic-N # 如果适用 +``` + +**iterate-context.md**: +```markdown +# 变更上下文 + +## 项目状态快照 +- 已有文档: PRD, 架构, UX, Epic 1-6 +- 已完成 Story: 26/26 +- 代码状态: MVP 完成 + +## 变更分析 +- 类型: feature +- 影响范围: [PRD, 架构, UX, 新 Epic] +- 风险等级: low | medium | high +- 执行路径: Phase 2 → 4 → 5 + +## 需要更新的文档 +- PRD: 移除排除、添加新功能需求 +- 架构: 添加新模型/路由 +- UX: 添加新页面模式 +- Epic: 创建新 Epic 及 Story +``` + +**iterate-progress.md**: +```yaml +phase-00-scan: completed | skipped | failed +phase-01-analyze: completed | skipped | failed +phase-02-docs: completed | skipped | failed +phase-03-prototype: completed | skipped | failed +phase-04-dev: completed | skipped | failed +phase-05-verify: completed | skipped | failed +``` + +## 执行流程 + +### Step 0: 读取用户输入 + +**输入**: 用户通过 `/d8d-iterate <描述>` 提供的变更需求。 + +如果用户未提供描述,询问:请描述您需要的变更。 + +### Step 1: 执行 Phase 0 — 项目状态扫描 + +**零暂停**加载 [phase-00-scan.md](phase-00-scan.md) 执行扫描。 + +扫描完成后,将项目状态写入 `iterate-context.md`。 + +### Step 2: 执行 Phase 1 — 变更分析 + +**零暂停**加载 [phase-01-analyze.md](phase-01-analyze.md) 执行分析。 + +分析完成后,将变更类型、影响范围、执行路径写入 `iterate-context.md`。 + +### Step 3: 路由决策 + +根据 Phase 1 的分析结果,选择执行路径: + +| 变更类型 | 执行路径 | 跳过 | +|----------|----------|------| +| **greenfield** | Phase 0 → 调用 d8d-requirements → d8d-prototype → d8d-dev(内置回归+旅程) | Phase 1-5 全跳过 | +| **feature** | Phase 2 → (Phase 3 可选) → Phase 4 → Phase 5 | 按需 | +| **bugfix** | Phase 4 (single-story) → Phase 5 | Phase 2, 3 | +| **refactor** | Phase 2 → Phase 4 → Phase 5 | Phase 3 | +| **regression** | Phase 5 only | Phase 2, 3, 4 | +| **design** | Phase 3 → Phase 4 (相关 story) | Phase 2 | + +### Step 4: 按 Phase 顺序执行 + +每个 Phase 加载对应的 phase-XX 文件,**零暂停**依次执行。 + +### Step 5: 输出变更报告 + +所有 Phase 完成后,生成变更报告: + +``` +📋 变更报告 +=========== +变更类型: feature +执行路径: Phase 2 → 4 → 5 + +Phase 2 — 文档更新: + ✅ PRD: 添加 FR-013~018 + ✅ 架构: 添加 BatchTask 模型 + ✅ UX: 添加批量任务面板 + ✅ Epic: 创建 Epic 7 (7 个 Story) + +Phase 4 — 增量开发: + ✅ Epic 7: 7/7 Story PASS + +Phase 5 — 回归验证: + ✅ Epic 1-6: 全部 PASS + +Phase 5 — 旅程验证: + ✅ 10/10 旅程全部 PASS + +新增文件: 8 +修改文件: 5 +测试通过: 33/33 +``` + +## 铁律 + +1. **零暂停执行**:Phase 完成后立即执行下一个 Phase,不等待用户确认 +2. **增量优先**:只修改需要变更的部分,保留所有已有工作 +3. **状态持久化**:每个 Phase 完成后更新三个状态文件 +4. **错误恢复**:Phase 失败时记录状态,支持从断点恢复 +5. **复用子技能**:通过 Skill tool 调用 d8d-requirements/d8d-prototype/d8d-dev,不重新实现 -- 2.49.1