OHOS 方案选型决策分析
SkillDev toolsUse when selecting an OHOS solution direction in Phase 0.3, especially for 03-arch-decision-record.md, candidate options comparison, or when the main session needs structured ADR output with user-provided decision. Do NOT use for feasibility analysis (ohos-req-feasibility-analysis), feature baseline (ohos-req-feature-baseline), or review gate (ohos-req-review-gate).
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the OHOS 方案选型决策分析 skill
What this skill tells your AI
The instructions your AI receives, as published by openharmonyinsight/openharmony-skills in skills/ohos-req-arch-decision/SKILL.md and read by ahel’s review.
Announce at start: "我正在使用 ohos-req-arch-decision skill 生成 03-arch-decision-record.md。"
定位
03-arch-decision-record.md 记录候选方案对比和用户决策结论,为 SIG 初审提供选型依据。OHOS SIG 采用集体评审制度,方案选型权归属 SIG 评审会议(由 SIG Maintainer + 领域 Owner 组成),AI 仅提供候选方案对比和推荐倾向参考,不代行决策权——决策结论必须由用户(代表 SIG 评审结论)提供。
核心原则 ⭐
决策结论必须由用户提供,AI 不替代用户做决策。
两阶段执行:
- 阶段 A(候选方案分析):生成候选方案对比表和 AI 推荐倾向,输出草稿供用户决策参考。
- 阶段 B(决策定稿):用户提供决策结论后,填入 §5-§6,输出定稿。
⚠️ 阶段 A 完成后必须暂停,主 Session 向用户展示候选方案并等待用户决策。不允许跳过用户决策直接推进到阶段 B 或后续 Step。
输入
{docs_dir}/01-requirement.md{docs_dir}/02-feasibility.md- 阶段 B 额外输入:用户决策结论(选定方案、理由、决策者)+ 用户评审会议认定的遗留问题清单
自省提示(Mindset Prompts)
在执行关键步骤前,自问以下问题。这些问题把 SIG 评审会议的真实约束传递给 AI——方案选型权归属评审会议,AI 只负责候选对比与推荐倾向参考,任何一步替用户决策都会让未评审的方案进入下游。
- Before writing §1 (背景与问题), ask yourself: am I reading constraints from 01-requirement.md,还是在自行推断硬约束?硬约束应一行简述,不展开为表格。
- Before constructing §3 (候选方案对比表), ask yourself: 候选方案是 feasibility 给出的客观路径,还是我在自行扩充/裁剪?每个方案是否都有一句话描述 + 工作量 + 优势 + 劣势 + 风险 + AI 推荐倾向?对比表是否中立呈现,未夹带选型结论?
- Before writing §5 (决策结论), ask yourself: 这份结论来自用户(代表 SIG 评审),还是我在替用户拍板?§5 是否仍为占位?
- Before writing §6 (遗留问题), ask yourself: 这份清单是评审会议提供的,还是我在从 feasibility 条件项/风险自动推演?AI 推演会引入虚构风险项。
- Before pausing after 阶段 A, ask yourself: 我是否真的暂停等待用户决策了,还是直接推进到了阶段 B?status 是否保持
PendingDecision? - Before triggering 单方案快速路径, ask yourself: feasibility §6 是否明确标注其他路径 ❌不可行 且有证据支撑?还是只有一个方案被标 ✅ 而其余未排除?触发条件不满足时必须回到标准两阶段流程。
- Before writing §6 占位 in 阶段 B(用户未提供遗留问题), ask yourself: 我是否保留了
[待用户评审会议后填写]并保持 status=PendingDecision,而不是自行补全 §6 凑闭环?
阶段 A:候选方案分析(subagent 执行)
- 读取
reference/arch-decision-record.md和输入文件。模板文件不带03-阶段编号前缀;03-arch-decision-record.md仅作为{docs_dir}下的产物文件名。模板只定义产物结构(6个章节),流程规则(两阶段写入、AI不代行决策等)全部由本 skill 控制,不在模板中呈现。 - 定义决策问题和硬约束 → 写入 §1 背景与问题(约束条件写为一行简述,不展开为表格)。
- 从 feasibility 候选路径中提取方案,生成候选方案对比表(一句话描述 + 工作量 + 主要优势 + 主要劣势 + 主要风险 + AI 推荐倾向)→ 写入 §3 候选方案对比。
- §5 决策结论、§6 遗留问题 留空占位(标注
[待用户评审会议决策后填写])。注意:§5和§6均由用户提供,AI不代行。§5来自用户方案选型决策,§6来自用户评审会议认定的遗留问题清单。模板中 §5/§6 无阶段提示注释,这些流程规则由本 skill 控制。 - 输出到
{docs_dir}/03-arch-decision-record.md,frontmatter 添加status: PendingDecision(模板 frontmatter 不含 status 字段,由 skill 注入)。
阶段 A 回传
≤15 行:路径 + 候选方案 A/B/C 一句话 + AI 推荐倾向 + 关键风险 + 阻塞条件。
阶段 B:决策定稿(subagent 执行)
前置条件: 用户已在 Step 0.3.2 明确提供决策结论。
- 读取
{docs_dir}/03-arch-decision-record.md(阶段 A 草稿)。 - 读取用户决策结论(由主 Session 注入 task 描述):
- 选定方案:方案 A / B / C(或自定义)
- 决策理由:用户给出的选择理由
- 决策者:拍板人姓名/角色
- 将用户结论写入 §5 决策结论(选定方案 + 理由 + 决策者)。
- 读取用户评审会议认定的遗留问题清单(由主 Session 注入 task 描述),写入 §6 决策后遗留问题。表格列结构:
| 遗留项 | 描述 | 负责人 | 解决动作 | 计划关闭时间 | 状态 |(与模板 arch-decision-record.md §6 一致)。每条遗留项必须包含:描述、负责人、解决动作、计划关闭时间。- ⚠️ §6遗留问题必须由用户提供,AI 不代行生成。 AI不得从feasibility条件项或风险自动推演遗留问题。如用户未提供遗留问题清单,§6保留占位标注
[待用户评审会议后填写],status 保持PendingDecision,不允许推进到后续 Step。
- ⚠️ §6遗留问题必须由用户提供,AI 不代行生成。 AI不得从feasibility条件项或风险自动推演遗留问题。如用户未提供遗留问题清单,§6保留占位标注
- 更新 frontmatter
status: Accepted(由 skill 注入,模板不含 status 字段)。 - 输出到
{docs_dir}/03-arch-decision-record.md。
阶段 B 回传
≤15 行:路径 + 选定方案 + 决策理由一句话 + 遗留问题数 + status(Accepted)。
阶段判定规则
| 阶段 | 触发条件 | status 值 | 产出 |
|---|---|---|---|
| A | Step 0.3.1(requirement+feasibility 就绪) | PendingDecision | §1-§3 填充,§5-§6 占位 |
| B | Step 0.3.3(用户提供决策结论 + 遗留问题清单) | Accepted | §5 填充(用户决策),§6 填充(用户遗留问题),全文定稿 |
不允许在阶段 A 直接输出 status: Accepted 或自行填写 §5 决策结论。
不允许在阶段 B 用户未提供遗留问题清单时输出 status: Accepted 或自行填充 §6。
强制规则
- 遗留问题闭环门禁:§6 每条遗留项必须有负责人、解决动作、计划关闭时间。任一遗留项缺少这三字段 → 阻断 Phase 0→1-9 交接。
- AI 推荐倾向仅为参考:§3候选方案对比表的"AI 推荐倾向"列仅供用户决策参考,不是最终结论。
单方案例外
只有一个客观可行方案时允许不构造虚假备选,但必须写明其他路径不可行的证据。
单方案快速路径(简化两阶段为一阶段):
当 feasibility 阶段已明确排除其他方案(客观上只有一条可行路径)时,可跳过候选方案对比表,采用简化流程:
- 阶段 A 简化:直接呈现唯一方案分析(方案描述 + 工作量 + 优势 + 不可行证据),不生成候选方案对比表(§3 标注"单方案场景,无可行备选")
- 单次确认:向用户一次性呈现唯一方案 + 其他路径不可行证据,用户一次确认采纳即可,无需两阶段暂停
- 用户确认采纳后直接定稿 §5(选定方案 + 理由:"唯一可行方案,无备选" + 决策者),status 直接设为
Accepted
触发条件:feasibility.md §6 结论中仅有一个方案标记为 ✅可行 或 ⚠️有条件可行,其余方案均标记为 ❌不可行,且不可行有证据支撑。
不满足触发条件时(≥2 个可行方案),仍执行标准两阶段流程。
职责边界
本 skill 只产出方案选型决策,不产出 Feature 评审基线(目标/非目标/AC/交付影响),这些由 ohos-req-feature-baseline skill 负责。
NEVER
- 禁止 AI 代行决策:§5 选定方案、决策理由和决策者由用户提供,AI 不代行(原因:方案选型权归属 SIG 评审会议,AI 推荐倾向仅为参考)
- 禁止 AI 生成遗留问题:§6 遗留问题由用户评审会议输入,不得从 feasibility 条件项或风险自动推演(原因:遗留问题反映用户认定的开放风险,AI 推演会引入虚构风险项)
- 禁止阶段 A 直接定稿:不允许在阶段 A 输出
status: Accepted或自行填写 §5(原因:跳过用户决策会导致未评审的方案进入下游) - 禁止用户未提供遗留问题时填充 §6:阶段 B 时如用户未提供,§6 保留占位,status 保持
PendingDecision(原因:遗留问题未经评审会议认定则不构成闭环)
自检
- status 字段由 skill 注入(PendingDecision→Accepted),非模板填写
- §5 方案比较来自用户提供,非 AI 推断
- §6 遗留问题来自评审会议,非 AI 推演
- 阶段A完成后已暂停等待用户决策
- 单方案例外仍执行了两阶段流程
- 每条遗留问题含负责人/解决动作/计划关闭时间
错误处理
| 场景 | 行为 |
|---|---|
| 01-02 未就绪 | 提示用户先完成上游 Step 0.1-0.2,列出缺失文档 |
| 用户未提供候选方案 | 追问用户:"请提供至少 2 个候选方案用于比较" |
| 用户未做决策(阶段A后) | 保持 status: PendingDecision,追问:"请提供评审会议决策结论" |
| 遗留问题未提供 | §6 保留占位符 [待用户评审会议后填写],不自行填充 |
输出
- 路径:
{docs_dir}/03-arch-decision-record.md - 阶段 A 回传:路径、候选方案概要、AI 推荐倾向、关键风险、阻塞条件
- 阶段 B 回传:路径、选定方案、决策理由、遗留问题数、status
Signals
- GitHub stars
- 34
- Forks
- 7
- Last commit
- Sep 2026
Advanced
- Catalog kind
- skill
- Gateway key
ohos-req-arch-decision- Source
- github.com/openharmonyinsight/openharmony-skills