From fe6985b4a0fa0a647e3e6ce863a886f84d6d780e Mon Sep 17 00:00:00 2001 From: yourname Date: Wed, 8 Apr 2026 12:41:10 +0000 Subject: [PATCH] =?UTF-8?q?sync:=20=E9=93=81=E5=BE=8B=E5=85=AD=20=E2=80=94?= =?UTF-8?q?=20=E9=A1=B5=E9=9D=A2=E5=8F=98=E6=9B=B4=E5=BF=85=E9=A1=BB?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E5=8E=9F=E5=9E=8B=20+=20=E5=85=B3=E8=81=94?= =?UTF-8?q?=E9=A1=B5=E9=9D=A2=E5=90=8C=E6=AD=A5=E6=9C=BA=E5=88=B6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 变更内容: - d8d-dev: 新增铁律六(页面变更必须同步原型)+ 关卡5质量检查 - d8d-iterate phase-01: feature+新UI 路由强制走 Phase 3(拆分 low-risk 有无新UI) - d8d-iterate phase-03: MANDATORY 标记 + 文档中心更新(Step 3.5) + 关联页面同步(Step 3.6) - d8d-iterate workflow: 状态机和路由表更新 - d8d-prototype workflow: [P]/[A] 增量模式增加关联页面同步 + 入口页重生成 --- .claude/skills/d8d-dev/iron-laws.md | 34 +++++++++++++++++++ .claude/skills/d8d-dev/phase-05-review.md | 6 ++++ .../skills/d8d-iterate/phase-01-analyze.md | 14 +++++--- .../skills/d8d-iterate/phase-03-prototype.md | 22 ++++++++++-- .claude/skills/d8d-iterate/workflow.md | 6 ++-- .claude/skills/d8d-prototype/workflow.md | 6 ++-- 6 files changed, 76 insertions(+), 12 deletions(-) diff --git a/.claude/skills/d8d-dev/iron-laws.md b/.claude/skills/d8d-dev/iron-laws.md index 4c5ffa4..29bb8ef 100644 --- a/.claude/skills/d8d-dev/iron-laws.md +++ b/.claude/skills/d8d-dev/iron-laws.md @@ -260,3 +260,37 @@ Epic N+1 完成 - ❌ API 返回 500 但未检查源码 try-catch 就标记"环境问题"或"已知问题" - ❌ 页面 navigateBack 后数据未刷新但标记"已通过 API 验证"(必须检查 onShow) +## 铁律六:页面变更必须同步原型 + +**铁律一说速度,铁律二说质量,铁律三说粒度,铁律四说深度,铁律五说自愈,铁律六说原型同步。** + +任何涉及新 UI 页面或页面修改的 Story,完成后必须同步更新原型系统。原型是 UI 的唯一参考来源,代码实现与原型不同步 = 规格与实现不一致。 + +``` +❌ 错误做法(实现后不管原型): + Story 7-4 实现了批量任务面板 UI → 原型仍只有 Epic 1-6 的页面 + 结果:新页面在原型中无法预览,文档中心缺少新页面卡片 + +✅ 正确做法(实现后同步原型): + Story 7-4 实现了批量任务面板 UI + → 原型系统更新:添加批量任务面板页面 + → 文档中心更新:docs-index.html 添加新文档卡片 + → 统一入口更新:index.html 更新页数和快速导航 +``` + +**判断规则**: + +| Story 类型 | 原型同步 | 文档中心更新 | 入口页更新 | +|------------|---------|------------|-----------| +| 新 UI 页面 | **必须** | **必须** | **必须** | +| 修改现有 UI 布局/组件 | **必须** | 可选 | 可选 | +| 纯后端/API | 跳过 | 可选 | 跳过 | +| 纯配置/Schema | 跳过 | 跳过 | 跳过 | + +**违反此规则的行为**: +- ❌ 实现了新 UI 页面但原型中无对应页面 +- ❌ d8d-iterate feature 类型涉及新页面但跳过 Phase 3 +- ❌ 原型页面更新了但文档中心未更新 +- ❌ 统一入口页 (index.html) 页数未更新或快速导航缺少新页面 +- ❌ 用"遵循现有 UI 模式"作为跳过原型的理由 + diff --git a/.claude/skills/d8d-dev/phase-05-review.md b/.claude/skills/d8d-dev/phase-05-review.md index a3bbed4..3d62e54 100644 --- a/.claude/skills/d8d-dev/phase-05-review.md +++ b/.claude/skills/d8d-dev/phase-05-review.md @@ -150,5 +150,11 @@ echo "journey_results=$JOURNEY_COUNT" - 通过: 所有旅程 PASS - 阻断: Epic 不得标记 done(可标记 `done-with-issues`) +### 关卡 5: 原型同步(⚠️ 铁律六,d8d-iterate 编排下生效) +- 检测: 检查本次 Epic 是否有新 UI 页面,原型中是否已对应 +- 通过: 无新 UI 页面,或所有新 UI 页面在原型中已有对应文件 +- 阻断: 仅在 d8d-iterate 编排模式下生效;d8d-dev 独立运行时记录为 WARN +- 修复: 调用 d8d-prototype --incremental 更新原型 + > 完整的 FAIL 分类标准、GATE-CHECK 和修复流程见 ./auto-fix-engine.md diff --git a/.claude/skills/d8d-iterate/phase-01-analyze.md b/.claude/skills/d8d-iterate/phase-01-analyze.md index 63118b9..df6652f 100644 --- a/.claude/skills/d8d-iterate/phase-01-analyze.md +++ b/.claude/skills/d8d-iterate/phase-01-analyze.md @@ -91,14 +91,20 @@ greenfield: → 完成后自动触发 d8d-prototype → 完成后自动触发 d8d-dev -feature (low risk): +feature (low risk, 无新 UI 页面): → Phase 2: edit-prd + update arch/ux + new epic → Phase 4: d8d-dev --epic {new-epic} → Phase 5: d8d-dev --regression +feature (low risk, 有新 UI 页面): + → Phase 2: edit-prd + update arch/ux + new epic + → Phase 3: d8d-prototype --incremental [P] 或 [A](⛔ 铁律六 MANDATORY) + → 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 3: d8d-prototype --incremental(⛔ 如有新 UI 则 MANDATORY,铁律六) → Phase 4: d8d-dev --epic {new-epic} → Phase 5: d8d-dev --regression @@ -148,8 +154,8 @@ design: - Epic: 需要创建新 Epic (估计 7 个 Story) ### 执行路径 -Phase 2 → Phase 4 → Phase 5 -(跳过 Phase 3 原型,因为遵循现有 UI 模式) +Phase 2 → Phase 3 → Phase 4 → Phase 5 +(Phase 3: [P] 特定页面更新 — 铁律六:有新 UI 页面不可跳过) ``` 更新 `iterate-checkpoint.md` 的 `change_type` 和 `current_phase` 字段。 diff --git a/.claude/skills/d8d-iterate/phase-03-prototype.md b/.claude/skills/d8d-iterate/phase-03-prototype.md index 68128d4..f6b3b6e 100644 --- a/.claude/skills/d8d-iterate/phase-03-prototype.md +++ b/.claude/skills/d8d-iterate/phase-03-prototype.md @@ -1,4 +1,4 @@ -# Phase 3: 原型更新(可选) +# Phase 3: 原型更新(⛔ 有新 UI 时 MANDATORY,铁律六) **目标**:当变更涉及新 UI 页面、交互变更或文档变更时,利用 d8d-prototype 的增量更新能力精确更新原型系统。 @@ -6,7 +6,7 @@ ``` IF 变更类型 == design → 执行 Phase 3 -IF 变更类型 == feature 且涉及新页面/组件 → 执行 Phase 3 +IF 变更类型 == feature 且涉及新页面/组件 → ⛔ Phase 3 MANDATORY(铁律六) IF 变更类型 == feature 且只有后端变更 → 看是否有文档变更 IF 变更类型 == bugfix → 跳过 IF 变更类型 == refactor 且不涉及 UI → 跳过 @@ -68,6 +68,24 @@ IF status=completed → 增量更新(进入 Step 3.2) 1. 先执行 step-05b 更新文档中心 2. 再按需重新生成变更的页面 +### Step 3.5: 文档中心更新(⛔ 所有非跳过模式必须执行) + +无论选择 [D]、[P] 还是 [A] 模式,最后都必须更新文档中心: + +1. 全量扫描 `_bmad-output/` 所有 `.md` 和 `.yaml` 文件 +2. 重建 `docs-index.html`,包含所有文档卡片(含新增 Epic 的文档) +3. 此步骤不可跳过 + +### Step 3.6: 关联页面同步(⛔ 有新 UI 时必须执行) + +检查新功能是否影响了共享组件(Header/Nav/Sidebar/Footer): + +1. 对比变更前后的共享组件(如 Header 添加了新按钮) +2. 列出所有使用该共享组件的现有原型页面 +3. 对这些页面重新生成以保持一致性 +4. 重新生成入口页 `index.html`(更新页数和快速导航) +5. 重新生成平铺入口 `admin-index.html`(更新页数和网格) + ### Step 3.3: 首次生成(原型不存在时) ``` diff --git a/.claude/skills/d8d-iterate/workflow.md b/.claude/skills/d8d-iterate/workflow.md index 350a281..a3a1363 100644 --- a/.claude/skills/d8d-iterate/workflow.md +++ b/.claude/skills/d8d-iterate/workflow.md @@ -42,7 +42,7 @@ ┌──────────────────────┐ │ 决策路由 │ │ greenfield? ───→ 全量流程 (d8d-requirements → prototype → dev) - │ feature? ───→ Phase 2 → 4 → 5 + │ feature? ───→ Phase 2 → (has UI? → Phase 3 ⛔) → Phase 4 → 5 │ bugfix? ───→ Phase 4 (single-story) │ refactor? ───→ Phase 2 → 4 → 5 │ regression?───→ Phase 5 only @@ -55,7 +55,7 @@ └────────┬────────┘ ↓ ┌─────────────────┐ - │ Phase 3 │ 原型更新 (可选) + │ Phase 3 │ 原型更新 (有新UI时 ⛔ MANDATORY) │ PROTOTYPE │ d8d-prototype --incremental └────────┬────────┘ ↓ @@ -152,7 +152,7 @@ phase-05-verify: completed | skipped | failed | 变更类型 | 执行路径 | 跳过 | |----------|----------|------| | **greenfield** | Phase 0 → 调用 d8d-requirements → d8d-prototype → d8d-dev(内置回归+旅程) | Phase 1-5 全跳过 | -| **feature** | Phase 2 → (Phase 3 可选) → Phase 4 → Phase 5 | 按需 | +| **feature** | Phase 2 → (Phase 3: 有新UI则⛔MANDATORY) → 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 | diff --git a/.claude/skills/d8d-prototype/workflow.md b/.claude/skills/d8d-prototype/workflow.md index d97bc16..e87e104 100644 --- a/.claude/skills/d8d-prototype/workflow.md +++ b/.claude/skills/d8d-prototype/workflow.md @@ -116,9 +116,9 @@ page_counts: → 询问用户: [R] 重新生成(删除状态文件,从头开始) [U] 增量更新 — 选择更新范围: - [D] 更新文档中心 — 重新扫描 _bmad-output/,更新 docs-index.html + view-doc.html → 加载 step-08-commit.md - [P] 更新特定页面 — 选择前台/后台/特定页面重新生成 → 加载 step-08-commit.md - [A] 全部更新 — 文档 + 页面一起更新 → 加载 step-08-commit.md + [D] 更新文档中心 — 重新扫描 _bmad-output/,更新 docs-index.html + view-doc.html → 重新生成 step-03 + step-04 → 加载 step-08-commit.md + [P] 更新特定页面 — 选择前台/后台/特定页面重新生成 → 关联页面同步(铁律六) → 重新生成 step-03 + step-04 → 加载 step-08-commit.md + [A] 全部更新 — 文档 + 页面一起更新 → 关联页面同步(铁律六) → 重新生成 step-03 + step-04 → 加载 step-08-commit.md [V] 查看当前原型(启动服务器) ``` -- 2.49.1