Agent Skills: ArkWeb 设计文档生成

ArkWeb 设计文档生成。可作为独立 subagent 运行。Phase 4 产出两个文档:requirement.md(需求基线评审)和 design.md(架构设计)。触发词:写设计文档、生成需求评审、写功能设计、输出 Spec。

UncategorizedID: openharmonyinsight/openharmony-skills/arkweb-design-doc

Install this agent skill to your local

pnpm dlx add-skill https://github.com/openharmonyinsight/openharmony-skills/tree/HEAD/workflows/arkweb/.aceharness/skills/arkweb-design-doc

Skill Files

Browse the full folder contents for arkweb-design-doc.

Download Skill

Loading file tree…

workflows/arkweb/.aceharness/skills/arkweb-design-doc/SKILL.md

Skill Metadata

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

输出: 两个文档 → 保存到指定路径 → 回复文档结构摘要

  1. requirement.md:需求基线评审文档(模板:assets/templates/requirement.md)
  2. 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)、候选部件(3~8)、关键 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
  • [ ] 组件路由通过 subsystems/*.json -> component_files,未使用字符串拼路径
  • [ ] DeepWiki 仅作为补充证据,未替代离线主证据
  • [ ] 文档包含「知识依据清单」,每条证据含来源/对象/路径(或URL)/命中原因/置信度
  • [ ] 若"需求背景"被选中:包含问题背景/现状/目标三段(技术说明可选),不含具体代码
  • [ ] 若"竞品分析"被选中:使用表格(竞品/功能范围/实现方式/限制)呈现,含对标总结结论
  • [ ] 若"需求描述"被选中:功能范围只讲规格不讲实现;典型场景标明 Web 角色;无冗余场景
  • [ ] 若"验收标准"被选中:通过标准关联具体场景上下文,无模糊描述
  • [ ] 功能点(AR)拆解替代工作量评估,文档中无工期/人天估算
  • [ ] 0层架构设计作为 2.0 子章节位于实现方案内
  • [ ] 若"0层架构设计"被选中:含进程模型、线程模型;有数据传递时含数据约束和数据流图
  • [ ] 若"实现方案"被选中:包含 ASCII 架构图/类图/时序图
  • [ ] 若"接口设计"被选中:每个接口标注内部/外部;有参数表和示例代码
  • [ ] 若"接口设计"被选中:每个字段说明列包含描述/前置条件/规格/异常处理四段式
  • [ ] 若"接口设计"被选中:字段关联关系已说明(互斥/依赖/联动)
  • [ ] 若"接口设计"被选中:四段式内容过多时引用具体表格或章节
  • [ ] 若"芯片平台和产品约束"被选中:按功能点×设备矩阵格式,仅保留有效功能点
  • [ ] 若"性能功耗设计"被选中:使用表格格式(维度/结论/说明),性能/内存/功耗三列
  • [ ] 若"DFX 分析"被选中:9.1~9.8 共 8 项全部覆盖
  • [ ] 若"DFX 埋点规格"被选中:使用表格(埋点位置/内容/级别/关键词),明确标注日志(HiLog)或 trace
  • [ ] 若"DFX 基础安全保障"被选中:包含安全检查项
  • [ ] 若"DFX 可服务性设计"被选中:包含错误码覆盖/DFX 日志/远程排查
  • [ ] 若"DFX 可测试性"被选中:含「不可测试点及解决方案」表格
  • [ ] 若"其他非功能性分析"被选中:11.1 分档分级/11.2 边界场景矩阵/11.3 演进路线
  • [ ] 文档中无"刷新到全量设计特性文档"章节
  • [ ] 类名/接口名与代码分析结果一致(交叉验证)

📋 章节内容职责规则

设计文档只做三件事:讲清楚为什么做、怎么做、验收标准是什么。不堆砌实现细节。

各章节"该放什么 / 不该放什么"

| 章节 | ✅ 该放 | ❌ 不该放 | |------|---------|-----------| | 需求背景 | 问题背景、现状、目标(三段式) | 具体代码/API/类名 | | 竞品分析 | 表格对比(竞品/场景/实现/限制) | 未来设计实现方案 | | 需求描述 | 功能范围、典型场景、验收标准 | 实现方式、架构细节 | | 功能概述 | 关键设计特点、设计约束 | 代码实现链路(5仓库表)、调用链路图、ASCII 详细伪代码 | | 0层架构 | 进程划分、数据流、核心类关系 | 数据约束表、错误码枚举 | | 接口设计 | 参数表、错误码、C++ 签名 | 架构图、实现伪代码细节 | | DFX 埋点 | 埋点内容 + 触发示例 + 全局关键词 | 埋点位置(代码层面)、性能 trace 数据 | | 可服务性设计 | 错误码覆盖、DFX 日志、远程排查 | | | 测试方式 | 测试方式、边界场景 | 框架兼容性矩阵、不可测试点 | | 其他非功能分析 | 分档分级、边界场景矩阵、兼容性说明 | 参考文档索引 |

🎯 "最小必要文档"原则

  1. 不堆砌实现细节 — 功能概述只讲"设计约束和关键特点",不放代码实现链路表、仓库级 PR 清单
  2. 不重复已有内容 — 已在 brainstorm/analysis/pr 中详述的内容(方案对比、代码索引、竞品对标),设计文档用引用方式关联,不复制
  3. 不放参考文档索引 — 附录、参考文档路径不在设计文档中列出
  4. 不展示修改历史 — 历史版本的变更记录留在 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