| name | arkweb-design-doc |
| description | ArkWeb 设计文档生成。可作为独立 subagent 运行。Phase 4 产出两个文档:requirement.md(需求基线评审)和 design.md(架构设计)。触发词:写设计文档、生成需求评审、写功能设计、输出 Spec。 |
ArkWeb 设计文档生成
Announce at start: "我正在使用 arkweb-design-doc skill 生成设计文档。"
运行模式
模式 A:Subagent 模式(推荐)
作为独立 subagent 被 arkweb-architect 调用时,方案和代码分析结果已在 task 描述中提供,直接生成文档。
输入格式(从 task 描述中解析):
## 确认的方案
{方案详情:方案类型、架构思路、关键修改点}
## 代码分析结果(读取此文件)
{DOCS_REPO}/analysis/{date}-{feature}-analysis.md
## 参考资料(按需读取)
- proposal 文档:{DOCS_REPO}/docs/features/{feature-name}/proposal.md
- brainstorm 文档:{DOCS_REPO}/docs/{date}-{feature}-brainstorm.md
- 架构参考:{DOCS_REPO}/references/arkweb-architecture.md
- 兼容性检查:{DOCS_REPO}/docs/api-compatibility-check-arkweb.md
输出: 两个文档 → 保存到指定路径 → 回复文档结构摘要
requirement.md:需求基线评审文档(模板:assets/templates/requirement.md)
design.md:架构设计文档(模板:assets/templates/design.md)
模式 B:交互模式
在主 session 中直接调用,用户确认方案后生成文档,生成后请用户审阅。
概述
基于 brainstorm 阶段确定的方案,按标准模板输出正式设计文档。
核心原则:单一方案文档。 设计文档中只体现最终确认的一个方案,不呈现方案 A/B/C 对比或多方案选型过程。brainstorm 阶段的方案对比分析保留在 brainstorm 文档中,设计文档聚焦于选定方案的完整实现细节。如果某功能存在降级/回退路径(如 CDP 不可用时回退 JS 注入),应在实现方案中作为异常处理章节说明,而非独立方案。
知识库驱动规则
通用规则统一引用:../_shared/KB_RULES.md。本 skill 的增量要求:
- 设计文档必须在「需求功能设计」或附录提供「知识依据清单」。
- 章节中的关键结论(子系统归属、组件选型、接口建议)必须可追溯到证据包。
文档类型
| 阶段 | 模板 | 适用场景 |
|---|
| 需求导入检查 | requirement-import-checklist.md | 需求刚进入时的 17 项检查 |
| 需求基线评审 | requirement-baseline-review-template.md | 正式评审(推荐) |
| 功能设计说明书 | widget-ai-functional-design.md | 复杂需求,含 DFX 分析 |
| API Spec | template-openharmony-spec.md | API 设计 Spec |
流程
Step 1: 读取参考资料
根据 brainstorm 的方案类型,读取相关文档:
- 兼容性参考:
{DOCS_REPO}/docs/api-compatibility-check-arkweb.md
- 架构参考:
{DOCS_REPO}/references/arkweb-architecture.md
- 竞品参考:
{DOCS_REPO}/references/competitor-analysis.md
- 设备矩阵:
{DOCS_REPO}/references/device-matrix.md
- 代码索引:
{DOCS_REPO}/analysis/arkweb-ace-engine-analysis.md
- 代码分析(来自 Sub-2):
{DOCS_REPO}/analysis/{date}-{feature}-analysis.md
Step 1 输出要求(强制):
- 候选子系统(1
3)、候选部件(38)、关键 API(5~20),每项附证据来源与置信度
- 【强制持久化】 证据包 Write 到
{DOCS_REPO}/tmp/,详见 _shared/KB_RULES.md 第 10 节
Step 2: 分析项选择(交互模式)或直接填充(Subagent 模式)
交互模式:先列出分析项清单
在生成文档前,先向用户展示模板分析项清单,让用户选择哪些章节需要分析,哪些不需要:
📋 模板分析项清单(回复序号,不需要分析的项我会标记"不涉及"):
1. 诉求方
2. 需求背景(问题背景/现状/目标/技术说明)
3. 竞品分析(各竞品现状/竞品分析总结)
4. 需求描述(功能范围、典型场景、验收标准)
5. 功能点(AR)拆解
6. 功能概述
7. 0层架构设计(周边依赖、进程/线程模型、数据流)
8. 实现方案(架构图/类图/时序图)
9. 接口设计(参数表、类型定义、示例代码,标注内部/外部)
10. 芯片平台和产品约束(1+8 设备差异表,仅有效功能点)
11. 周边依赖关系
12. 安全隐私设计
12. 性能功耗设计(表格格式:性能/内存/功耗)
13. 本地数据库设计
14. DFX 分析(可靠性/基础安全保障/埋点规格/可服务性/可扩展性/可配置/兼容性/可测试性)
15. 其他非功能性分析(分档分级/边界场景矩阵/演进路线)
回复示例:`1-8, 10, 14-15`(跳过 9/11/12/13)
或:`全部分析`
用户选择后:
- 选中的项:正常填充详细内容
- 未选中的项:仅填写
> 不涉及,不展开
Subagent 模式:task 描述中指定
在 task 描述中通过 ## 分析项范围 字段指定,格式同上。若未指定,默认全部分析。
模板结构
Phase 4 产出两个文档,各自使用独立模板:
【强制】生成文档前,必须先 Read 模板文件,严格按模板的章节结构、中文章节标题、表格格式填充内容。不得自行改为英文结构或英文标题。这是硬性要求,不是建议。
1. requirement.md(需求基线评审)
- 模板:
{DOCS_REPO}/assets/templates/requirement.md
- 生成时读取该模板,按以下规则填充:
- 用户选中的分析项:正常填充详细内容
- 用户未选中的分析项:仅填写
> 不涉及,不展开
- 模板中
> 引用块为格式规范说明,生成时删除
2. design.md(架构设计)
- 模板:
{DOCS_REPO}/assets/templates/design.md
- 生成时读取该模板,按以下规则填充:
- 设计元数据:从 proposal.md 和 brainstorm.md 提取
- 涉及仓和模块:从 code-analysis 结果提取
- 关键设计决策:从 brainstorm 确认方案中提取
- 骨架 Spec 拆分:从 requirement.md 接口设计中提取
各章节内容规范
【需求背景】(四段式,必选 + 可选)
- 问题背景(必选):简要描述原始需求,不讲具体代码
- 现状(必选):当前系统/模块的现有能力与不足
- 目标(必选):本次需求要达成的目标
- 技术说明(可选):涉及的具体代码、API、类名等实现细节
【竞品分析】(表格化呈现)
- 必须使用表格列出各竞品,列包含:竞品 | 功能范围 | 实现方式 | 限制
- 给出竞品分析总结:当前方案对标哪个竞品,还是独立实现
- 竞品分析中仅体现当前现状,不体现未来设计实现
- 需求导入如有竞品对标,需设计人员在 AI 分析阶段进行导入
【需求描述】
- 功能范围:只讲具体规格,不讲实现方式。实现仅在实现方案章节呈现
- 典型场景:每个场景需标明 Web 在场景中的角色(如:被控方/主动方)
- 典型场景中冗余/重复的场景应去除
- 验收标准:通过标准必须关联具体场景上下文,禁止写无场景的模糊描述
【功能点(AR)拆解】
- 替代原"工作量评估",设计文档中不出现工期/人天估算
- 按功能点列出,包含涉及领域、说明、优先级
- 可附 Phase 分期实施路线图
【0层架构设计】(作为 2.0 子章节,位于实现方案内)
- 位于架构上下文之前,展示各领域间的调用关系(明确有周边交互的)
- 必须体现进程模型和线程模型
- 如有数据传递,给出数据约束信息(数据大小、数据类型)及数据流层图
【性能功耗设计】(表格格式)
- 使用三列表格:维度(性能/内存/功耗)、结论(涉及/不涉及)、说明
- 不涉及就写"不涉及"加简短原因,涉及才展开专项指标
【DFX 分析】
- 9.1 可靠性分析:场景/处理方式/返回错误码表格
- 9.2 基础安全保障
- 9.3 DFX 埋点规格:埋点位置/内容/级别/关键词表格,明确标注日志(HiLog)或 trace
- 9.4 可服务性设计:错误码覆盖/DFX 日志/远程排查
- 9.5 可扩展性隔离设计
- 9.6 可配置设计
- 9.7 兼容性设计
- 9.8 可测试性设计:必须包含「不可测试点及解决方案」表格
【其他非功能性分析】
- 11.1 分档分级说明:不涉及就写一行说明
- 11.2 边界场景矩阵:表格格式(场景/预期行为/风险)
- 11.3 演进路线:表格格式(方向/说明/阶段)
Step 3: 自检
📋 章节内容职责规则
设计文档只做三件事:讲清楚为什么做、怎么做、验收标准是什么。不堆砌实现细节。
各章节"该放什么 / 不该放什么"
| 章节 | ✅ 该放 | ❌ 不该放 |
|---|
| 需求背景 | 问题背景、现状、目标(三段式) | 具体代码/API/类名 |
| 竞品分析 | 表格对比(竞品/场景/实现/限制) | 未来设计实现方案 |
| 需求描述 | 功能范围、典型场景、验收标准 | 实现方式、架构细节 |
| 功能概述 | 关键设计特点、设计约束 | 代码实现链路(5仓库表)、调用链路图、ASCII 详细伪代码 |
| 0层架构 | 进程划分、数据流、核心类关系 | 数据约束表、错误码枚举 |
| 接口设计 | 参数表、错误码、C++ 签名 | 架构图、实现伪代码细节 |
| DFX 埋点 | 埋点内容 + 触发示例 + 全局关键词 | 埋点位置(代码层面)、性能 trace 数据 |
| 可服务性设计 | 错误码覆盖、DFX 日志、远程排查 | |
| 测试方式 | 测试方式、边界场景 | 框架兼容性矩阵、不可测试点 |
| 其他非功能分析 | 分档分级、边界场景矩阵、兼容性说明 | 参考文档索引 |
🎯 "最小必要文档"原则
- 不堆砌实现细节 — 功能概述只讲"设计约束和关键特点",不放代码实现链路表、仓库级 PR 清单
- 不重复已有内容 — 已在 brainstorm/analysis/pr 中详述的内容(方案对比、代码索引、竞品对标),设计文档用引用方式关联,不复制
- 不放参考文档索引 — 附录、参考文档路径不在设计文档中列出
- 不展示修改历史 — 历史版本的变更记录留在 PR commit message 中,不体现在文档正文
🔍 术语规范(强制)
| 场景 | ✅ 正确 | ❌ 错误 |
|---|
| 设计文档类型 | 需求基线评审文档 | 代码实现文档、PR 摘要 |
🤖 评审前置自动校验
在 arkweb-spec-review skill 的自检中新增模板合规检查项,评审前自动扫描以下问题:
checklist = [
("章节职责", "0层架构.*数据约束|功能概述.*PR清单|接口设计.*架构图|DFX.*埋点位置"),
("最小必要", "附录|调用链路|参考文档|框架兼容性矩阵"),
("风险标注", "低|中|高.*无.*风险.*说明"),
]
Step 4: 输出
Subagent 模式
保存两个文档并回复结构摘要。不等待用户审阅(由主 session 的决策 2 处理)。
交互模式
输出文档后请用户审阅,修改后重新自检。
产出规范
- 目录:
{DOCS_REPO}/docs/features/{feature-name}/
- 文件:
{date}-{feature}-requirement.md(需求基线评审)
{date}-{feature}-design.md(架构设计)
- 语言:中文
- 图表:ASCII 格式(不依赖外部工具)
- 注释:关键决策点添加
<!-- architect: ... -->
- 元数据:不要在文档顶部放日期/版本/状态/变更说明等元数据块
Subagent 回复格式
✅ design-doc 完成
📄 requirement.md:{file_path}
📄 design.md:{file_path}
📋 requirement.md 结构:
- 需求描述:{N} 个典型场景,{N} 个验收标准
- 功能点(AR):{N} 个(P0: {N}, P1: {N})
- 0层架构:进程模型 ✅ 线程模型 ✅ 数据流 ✅
- 功能设计:架构图 ✅ 类图 ✅ 时序图 {N}个
- 接口设计:{N} 个外部接口,{N} 个内部接口
- 设备矩阵:{N} 个有效功能点 × 6 类设备
- DFX:8/8 维度覆盖,日志 {N} 处,trace {N} 处
📋 design.md 结构:
- 涉及仓:{N} 个
- ADR:{N} 项
- 骨架 Spec:{N} 个 Task