diff --git a/.agents/skills/brainstorming/SKILL.md b/.agents/skills/brainstorming/SKILL.md
index 8b0dff1..2544962 100644
--- a/.agents/skills/brainstorming/SKILL.md
+++ b/.agents/skills/brainstorming/SKILL.md
@@ -10,7 +10,7 @@ description: Use when receiving an ambiguous feature request, when scope is uncl
把模糊需求通过"一次一个问题"的方式,收敛成一份可用于 `writing-plans` 的设计规格。
-在完成规格并拿到用户批准之前,**不得**调用 `writing-plans`、不得动任何源文件、不得派 subagent 执行实现。
+在完成规格并拿到用户批准之前,**不得**调用 `writing-plans`、不得动任何源文件、不得开始实施。
逃生条款:用户明确说 "skip brainstorming"、"已经有规格"、"直接按 X 做" 时可跳过。
@@ -41,7 +41,7 @@ description: Use when receiving an ambiguous feature request, when scope is uncl
5. **写规格文档** — 保存到 `docs/specs/YYYY-MM-DD-.md`
6. **规格自查** — 有无占位符 `TODO`、有无自相矛盾、范围是否闭合
7. **请用户审阅规格文件** — 等明确 "OK/确认/继续"
-8. **移交** — 规格确认后回到主流程(Read relevant docs → Planning Gate),由 Planning Gate 统一判定是否需要 plan
+8. **移交** — 规格确认后回到主流程(Read relevant docs → 判定影响面),统一判定是否需要 plan
## Process Flow
@@ -73,7 +73,7 @@ Self-review (placeholders / contradictions / scope)
User reviews spec file ── approved? ─NO→ revise
│ YES
▼
-回到主流程 → Read relevant docs → Planning Gate(统一判定)
+回到主流程 → Read relevant docs → 影响面判定(统一一次)
```
## Anti-Pattern:「这个需求太简单不需要规格」
@@ -105,7 +105,7 @@ User reviews spec file ── approved? ─NO→ revise
brainstorming 收敛规格并拿到用户确认后,**不自行判定影响面**,直接回到主流程:
```
-规格确认 → Read relevant docs → Planning Gate(统一判定)
+规格确认 → Read relevant docs → 影响面判定(统一一次)
```
-影响面判定权归 Planning Gate 一处(`using-growingio-sdk-skills` meta-skill),brainstorming 不重复判定、不自行分叉。
+影响面判定(改动文件 ≥3 或涉及公开 API 变更 → 先写 plan)在规格确认之后统一做一次,brainstorming 不重复判定、不自行分叉。
diff --git a/.agents/skills/finishing-a-development-branch/SKILL.md b/.agents/skills/finishing-a-development-branch/SKILL.md
index 300fa9d..6a5956e 100644
--- a/.agents/skills/finishing-a-development-branch/SKILL.md
+++ b/.agents/skills/finishing-a-development-branch/SKILL.md
@@ -17,7 +17,7 @@ description: Use after verification-before-completion passes and code review is
**强制:**
- `verification-before-completion` skill 通过后
-- `sdk-code-review` skill 通过后
+- 对照 `docs/sdk-review-checklist.md` 自查通过后
- 用户说"这个功能做完了" / "收个尾" / "合并吧"
**不触发:**
@@ -153,7 +153,7 @@ git push origin --delete
| "发版分支忘了打 tag 也没事" | 丢失版本追溯能力,补 tag 需要 cherry-pick 成本 |
| "改动都 commit 了,用 `git add -A` 一把梭" | 容易把 .env / 密钥 / 构建产物带进去 |
| "合并完分支保留吧以后说不定还用" | 仓库分支列表会膨胀;真要用再 checkout commit |
-| "没触发 Planning Gate 就不用走收尾" | 只要有 commit 产生就应该走本 skill,小改动可以跳过 PR 但不能跳过用户确认 |
+| "改动小、没写 plan 就不用走收尾" | 只要有 commit 产生就应该走本 skill,小改动可以跳过 PR 但不能跳过用户确认 |
## Red Flags — STOP if you catch yourself thinking these
@@ -164,7 +164,7 @@ git push origin --delete
## 关联 skill
-- **上游触发:** `verification-before-completion` 通过且 `sdk-code-review` 通过
-- **调度 subagent:** 无(本 skill 由控制器执行,用户决策哪条路径)
+- **上游触发:** `verification-before-completion` 通过,且 `docs/sdk-review-checklist.md` 自查通过
+- **决策方:** 用户决定走哪条终态路径
- **完成后交接:** 合并到 master / PR 待评审 / 分支保留 / 分支废弃 四种终态之一
- **替代路径:** 发版分支 → 调用 `jira-ticket`(发版单) + `ohpm-publish`(OHPM 发布) + `git-conventions`(tag 命名)
diff --git a/.agents/skills/git-conventions/SKILL.md b/.agents/skills/git-conventions/SKILL.md
index fb433d4..18a62cc 100644
--- a/.agents/skills/git-conventions/SKILL.md
+++ b/.agents/skills/git-conventions/SKILL.md
@@ -200,6 +200,6 @@ git commit -m "chore: upgrade build dependencies"
## 关联 skill
- **上游触发:** 执行 `git commit` / `git push` / 创建分支 / 写 PR 标题时
-- **调度 subagent:** 无(本 skill 是参考手册,由执行者自己应用)
+- **使用方式:** 本 skill 是参考手册,由执行者自己应用
- **完成后交接:** `finishing-a-development-branch`(分支收尾流程会引用本 skill 的 commit/tag/PR 规范)
- **替代路径:** 无——所有 git 操作都应遵循本规范
diff --git a/.agents/skills/growingio-arkts-coding-style/SKILL.md b/.agents/skills/growingio-arkts-coding-style/SKILL.md
index f1e743a..42b3344 100644
--- a/.agents/skills/growingio-arkts-coding-style/SKILL.md
+++ b/.agents/skills/growingio-arkts-coding-style/SKILL.md
@@ -391,6 +391,6 @@ import { LogUtil } from '../utils/LogUtil'
## 关联 skill
- **上游触发:** 写或审查任何 `.ets` / `.ts` 文件时
-- **调度 subagent:** 无(本 skill 是规范手册,由编码者/审查者自己对照)
-- **完成后交接:** `sdk-code-review` 的 code-reviewer subagent 必须用本 skill 的约束清单做审查
+- **使用方式:** 本 skill 是规范手册,由编码者/审查者自己对照
+- **完成后交接:** 审查阶段按 `docs/sdk-review-checklist.md` Part 1 第 1 项,用本 skill 的约束清单逐条核对
- **替代路径:** 遇到 TypeScript 代码需迁移 → 交叉参考 `docs/typescript-to-arkts-migration-guide.md`
diff --git a/.agents/skills/jira-ticket/SKILL.md b/.agents/skills/jira-ticket/SKILL.md
index 8dbae23..06c8c50 100644
--- a/.agents/skills/jira-ticket/SKILL.md
+++ b/.agents/skills/jira-ticket/SKILL.md
@@ -46,6 +46,6 @@ jira-ticket release create --yes # 跳过确认
## 关联 skill
- **上游触发:** 准备发版(版本号确定后、`ohpm-publish` 之前)
-- **调度 subagent:** 无(命令行工具,直接执行)
+- **使用方式:** 命令行工具,直接执行
- **完成后交接:** `ohpm-publish` 发布 HAR → 发版完成后回到 ticket 更新状态
- **替代路径:** 已有发版 ticket → 跳过本 skill,直接进入 ohpm-publish
diff --git a/.agents/skills/ohpm-publish/SKILL.md b/.agents/skills/ohpm-publish/SKILL.md
index 8556bf3..2a6e6c3 100644
--- a/.agents/skills/ohpm-publish/SKILL.md
+++ b/.agents/skills/ohpm-publish/SKILL.md
@@ -137,6 +137,6 @@ ohpm publish GrowingToolsKit/build/default/outputs/default/GrowingToolsKit-signe
## 关联 skill
- **上游触发:** 用户明确说"发布 SDK" / "ohpm 发布" / "发版" 等关键词
-- **调度 subagent:** 无(本 skill 是操作手册,由执行者按步骤执行)
+- **使用方式:** 本 skill 是操作手册,由执行者按步骤执行
- **完成后交接:** `finishing-a-development-branch`(发版分支的打 tag / PR / 合并) + `jira-ticket`(同步更新发版单)
- **替代路径:** 预发布验证阶段 → 只构建 HAR 不 publish(验证构建链路)
diff --git a/.agents/skills/plan-document-review/SKILL.md b/.agents/skills/plan-document-review/SKILL.md
deleted file mode 100644
index 3f29ec0..0000000
--- a/.agents/skills/plan-document-review/SKILL.md
+++ /dev/null
@@ -1,187 +0,0 @@
----
-name: plan-document-review
-description: Use after writing a plan document in docs/plans/, before requesting user confirmation
----
-
-# Plan Document Review
-
-> **Type:** Technique | **Discipline:** Rigid
-
-在 Planning Gate 输出完规划文档后、请求用户确认前,dispatch 一个 plan reviewer subagent 审查规划本身的质量。这一层审查能堵住"格式正确但内容不到位"的规划漏过 gate 的问题。
-
-**核心原则:** plan 是实施的蓝本,蓝本有洞 = 实施有洞。审查 plan 本身比后期返工便宜得多。
-
-## 何时触发
-
-**强制:** Planning Gate 保存完 plan 到 `docs/plans/` 之后、提示用户确认之前。
-
-**可跳过:** Planning Gate 未触发的小改动(< 3 文件且不涉及公开 API)。
-
-## 调度方式
-
-Plan reviewer 用 `general-purpose` subagent 身份 + prompt 模板实现(不需要专门 agent 定义)。它通过 `AGENTS.md` 的 `@import docs/sdk-engineering-guide.md` 自动继承领域知识。
-
-```
-Agent({
- description: "Review plan document",
- subagent_type: "general-purpose",
- prompt: `
-你是 GrowingIO HarmonyOS SDK 的规划审查员。验证以下规划是否完备、可实施。
-
-## 待审查规划
-
-文件路径:{PLAN_FILE_PATH}
-
-规划全文(已粘贴,不用再读):
-
----
-{PLAN_FULL_TEXT}
----
-
-## 原始需求 / 任务描述
-
-{ORIGINAL_TASK_DESCRIPTION}
-
-## 检查维度
-
-### 1. 四节完整性
-
-规划必须包含以下四节,缺一不可:
-- [ ] 影响文件列表
-- [ ] 公开 API 变更
-- [ ] 数据协议变更
-- [ ] 需同步修改的文档
-
-### 2. 影响文件列表准确性
-
-- 文件路径是否真实存在(或合理的新建路径)?
-- 是否有明显遗漏的文件?举例:
- - 新增公开 API 但没列 \`GrowingAnalytics/Index.ets\` / \`GrowingAnalytics/obfuscation-rules.txt\`
- - 修改事件字段但没列对应的 EventBuilder / 测试文件
- - 修改某模块但没列相关的单元测试文件
-- 有没有列了但实际不需要改的文件(scope creep)?
-
-### 3. 公开 API 变更一致性
-
-- 如果变更类型是"新增/修改/删除",是否在"影响文件列表"中包含了 \`index.ets\` 和 \`obfuscation-rules.txt\`?
-- 如果是新增/修改,签名是否完整(参数类型、返回类型、泛型)?
-- 如果是删除/重命名,是否考虑了兼容性(deprecated 标注、迁移指南)?
-
-### 4. 数据协议变更覆盖
-
-- 涉及字段变更时,"影响产品线"列是否完整?SaaS/NewSaaS/CDP 三种模式的字段要求不同
-- 是否有潜在被遗漏的产品线?
-- 字段类型是否与 Android/iOS SDK 对齐(如果跨端)?
-- 如果涉及 Protobuf schema,是否同步更新了 .proto 文件?
-
-### 5. 文档同步完整性
-
-- 公开 API 变更是否在"需同步修改的文档"中列了 \`docs/GrowingAnalytics/interfaces/*.md\`?
-- 涉及核心模块改动是否列了对应的 \`docs/GrowingAnalytics//*.md\`?
-- 涉及 SaaS/NewSaaS 模式差异是否列了 README_SaaS.md?
-
-### 6. 任务拆分质量(如涉及 subagent-driven-development)
-
-如果规划包含多个任务:
-- 任务是否大部分相互独立(适合 subagent 并行执行)?
-- 任务粒度是否合理(不要太大以至于超过 subagent 承载,也不要太小以至于调度开销 > 实施成本)?
-- 任务依赖关系是否清晰(哪些任务必须先做)?
-
-### 7. 场景覆盖
-
-常见场景遗漏:
-- **autotrack 改动**:是否考虑了 Hybrid/Flutter/Native 三种场景?SaaS 模式不支持无埋点,是否需要在 SaaS 模式下跳过?
-- **session 改动**:是否考虑了前台/后台/APP_CLOSED 三种触发时机?
-- **事件改动**:是否考虑了 Protobuf / JSON 双格式?是否考虑了 compressEnabled / encryptEnabled 开关影响?
-- **Config 改动**:是否考虑了三种工厂模式(NewSaaS/SaaS/CDP)的默认值差异?
-
-## 输出格式
-
-### 问题
-
-#### Critical(必须修复,阻塞 plan 通过)
-- [问题描述]
-
-#### Important(应当修复,建议修复后再请求用户确认)
-- [问题描述]
-
-#### Suggestion(建议优化,不阻塞)
-- [问题描述]
-
-(无问题时写"无")
-
-### 检查清单
-
-- [ ] 四节完整
-- [ ] 影响文件列表准确无遗漏
-- [ ] 公开 API 变更一致(同步 index.ets 和 obfuscation-rules.txt)
-- [ ] 数据协议变更产品线完整
-- [ ] 文档同步列表完整
-- [ ] 任务拆分合理(如多任务)
-- [ ] 场景覆盖完整
-
-### 结论
-
-**通过** / **需要修改** / **需要讨论**
-
-## 审查原则
-
-- 具体到位:每个问题指向 plan 中的具体段落或条目
-- 不做表演式认同
-- 发现规划本身的缺陷(不是格式,而是思考漏洞)要明确指出
-- 如果任务描述本身模糊,建议先澄清需求而非强行过 plan
-`
-})
-```
-
-## 占位符说明
-
-| 占位符 | 来源 |
-|--------|------|
-| `{PLAN_FILE_PATH}` | 刚保存的 plan 文件路径 |
-| `{PLAN_FULL_TEXT}` | plan 文件的完整内容(粘贴全文,不让 reviewer 读文件) |
-| `{ORIGINAL_TASK_DESCRIPTION}` | 用户原始需求描述或任务背景 |
-
-## 处理审查结果
-
-```
-reviewer 返回结果
- ↓
-判断结论
- ├── "通过" → 向用户展示 plan + reviewer 摘要,请求确认
- ├── "需要修改"
- │ ├── Critical → 修改 plan 文件,重新 dispatch reviewer(计第 N 轮)
- │ └── Important → 修改 plan 文件,重新 dispatch reviewer(计第 N 轮)
- │ (Suggestion 可记录,不阻塞)
- │
- │ ⚠️ 如果第 2 轮后仍有 Critical/Important:
- │ → 停止循环,向用户说明"plan 已两轮审查仍有问题,需要讨论"
- │ → 不再盲目循环
- │
- └── "需要讨论" → 向用户说明疑虑,讨论后决定
-```
-
-**不要向用户隐藏审查结果。** 即使通过,也在请求用户确认时附上 reviewer 的摘要(如"plan reviewer 通过,无 Critical/Important 问题"),让用户知道 plan 经过了独立审查。
-
-## Rationalizations
-
-| Excuse | Reality |
-|---|---|
-| "自己写的 plan 自己审就行" | 自审替代不了独立审查,reviewer 是新鲜 context |
-| "跳过 reviewer 直接请求用户确认" | Planning Gate 的独立审查是硬性流程的一部分,不是可选步骤 |
-| "reviewer 说 Important 我觉得是 Suggestion" | 可以 push back,但要有技术理由,不是感觉 |
-| "修完 Critical 不用重新 dispatch" | 必须重新 dispatch,不可自判"已修好" |
-| "审了两轮还有问题就先过吧" | 第 2 轮后仍有 Critical/Important → 停下讨论,不盲目循环 |
-
-## Red Flags — STOP if you catch yourself thinking these
-
-- "这个 plan 我自己写的,内容肯定没问题" → 自审盲区是最大的漏洞来源
-- "直接给用户看吧,省掉 reviewer 这一步" → 独立审查是硬性流程,不是可选优化
-- "修完 Critical 了,不用重新 dispatch 了" → 自判"已修好" = 赌博
-
-## 关联 skill
-
-- **上游触发:** `writing-plans` 产出 plan 文件后、请求用户确认前
-- **调度 subagent:** `general-purpose` subagent(本 skill 内嵌 prompt 模板,不需专门 agent)
-- **完成后交接:** 通过 → 向用户展示 plan + reviewer 摘要请求确认 → 进入实施
-- **替代路径:** 未触发 Planning Gate 的小改动 → 不走本 skill
diff --git a/.agents/skills/receiving-code-review/SKILL.md b/.agents/skills/receiving-code-review/SKILL.md
deleted file mode 100644
index 7347347..0000000
--- a/.agents/skills/receiving-code-review/SKILL.md
+++ /dev/null
@@ -1,182 +0,0 @@
----
-name: receiving-code-review
-description: Use when receiving feedback from code-reviewer subagent or human reviewer
----
-
-# 接收代码审查反馈
-
-> **Type:** Technique | **Discipline:** Rigid
-
-收到 code-reviewer subagent 或人类 reviewer 的反馈后,按本技能规范处理。核心原则:**验证先于实施,澄清先于假设,技术正确性高于社交舒适度。**
-
-## 响应模式
-
-```
-收到审查反馈
- ↓
-1. READ:完整读完所有反馈,不急于行动
-2. UNDERSTAND:用自己的话复述每条要求(或提问)
-3. VERIFY:对照代码库现状核实
-4. EVALUATE:对本项目是否技术合理?
-5. RESPOND:技术性确认或有理据的 push back
-6. IMPLEMENT:逐条修复,每条单独测试
-```
-
-## STOP-ASK 模式
-
-```
-如果反馈中任何一项不明确:
- → 全部暂停,不实施任何一项
- → 先对不明确的项提问澄清
- → 澄清完毕后再开始实施
-
-原因:各项可能相互关联,部分理解 = 错误实施。
-```
-
-**示例:**
-```
-reviewer 返回 6 条问题,你理解 1、2、3、6,不确定 4、5。
-
-❌ 错误:先改 1、2、3、6,回头再问 4、5
-✅ 正确:"第 1、2、3、6 条已理解。第 4 条和第 5 条需要澄清:
- - 第 4 条提到 'session 边界处理',是指 onForeground 还是 VISIT 事件?
- - 第 5 条 '协议对齐',具体是哪个字段?"
-```
-
-## 反馈来源分级
-
-### 来自 code-reviewer subagent
-
-```
-实施前逐条验证:
- 1. 对本代码库技术上正确吗?
- 2. 会破坏已有功能吗?
- 3. 当前实现是否有特殊原因?
- 4. 是否适用于所有产品线(SaaS/NewSaaS/CDP)?
- 5. reviewer 是否掌握了完整上下文?
-
-如果建议有误:
- → 用技术理由 push back,不盲目接受
-
-如果无法验证:
- → 明确说"我无法验证这一点,需要 [X] 才能确认。是否继续?"
-
-如果与用户之前的架构决策冲突:
- → 暂停,先与用户确认
-```
-
-### 来自用户(人类)
-
-- 信任度更高,理解后直接实施
-- 范围不清时仍然要问
-- 不做表演式认同,直接行动或技术性确认
-
-## YAGNI 检查
-
-```
-当 reviewer 建议"实现得更完善"时:
- → 先 grep 代码库确认是否有实际调用
-
- 如果没有调用:"这个接口当前没有调用方,是否需要实现?(YAGNI)"
- 如果有调用:按建议实现
-```
-
-## 禁止行为
-
-**绝不说:**
-- "你说得对!" / "好建议!" / "非常好的反馈!"
-- "让我立刻实现" (在验证之前)
-
-**应该说:**
-- "已修复。[简述改了什么]"
-- "确认是个问题——[具体原因]。已在 `file:line` 修复。"
-- 或者直接修复,不多说。
-
-## 何时 Push Back
-
-**应该 push back 的情况:**
-- 建议会破坏已有功能
-- reviewer 缺少完整上下文
-- 违反 YAGNI(功能无实际调用)
-- 对本技术栈不适用
-- 存在兼容性/历史原因
-- 与用户的架构决策冲突
-
-**如何 push back:**
-- 给出技术理由,不带防御性
-- 提出具体的反例或引用已有测试
-- 如涉及架构层面,建议升级给用户决策
-
-## 被证明 push back 有误时
-
-```
-✅ "你是对的——我验证了 [X],确实 [Y]。正在修复。"
-
-❌ 长篇道歉
-❌ 解释为什么当时 push back
-```
-
-陈述事实,继续工作。
-
-## 实施顺序
-
-```
-多条反馈的处理顺序:
- 1. 先澄清所有不明确的项(STOP-ASK)
- 2. 按以下优先级实施:
- a. Critical(阻塞项:崩溃、数据丢失、隐私泄露)
- b. 简单修复(拼写、导入、格式)
- c. 复杂修复(重构、逻辑变更)
- 3. 每条修复后单独验证
- 4. 全部完成后确认无回归
-```
-
-## 常见错误
-
-| 错误 | 纠正 |
-|------|------|
-| 表演式认同 | 直接修复或给出技术性回应 |
-| 不验证就实施 | 先对照代码库核实 |
-| 批量修改不测试 | 逐条修复,逐条验证 |
-| 假定 reviewer 一定对 | 检查是否会破坏现有功能 |
-| 回避 push back | 技术正确性 > 社交舒适度 |
-| 部分理解就开始改 | STOP-ASK,先澄清所有不明确项 |
-| 无法验证仍然继续 | 明确说出局限,请求指导 |
-
-## Rationalizations
-
-| Excuse | Reality |
-|---|---|
-| "reviewer 说的有理,全盘接受避免冲突" | 表演式认同是失职;正确的反应是修复或给技术反驳 |
-| "reviewer 这条我觉得不对,忽略就行" | 必须 push back 并给技术理由,不是沉默不处理 |
-| "改完了不用重新 dispatch,reviewer 不会再挑出新问题" | Critical/Important 修完必须重新 review,不可自判 |
-| "先改 Critical,Important 合并前再说" | Important 也阻塞合并,只有 Suggestion 可延后 |
-| "一次把所有意见全改完再验证" | 批量修改后一个点崩了定位困难,逐条修复逐条验证 |
-| "部分听懂了就开始改" | 不明确项必须 STOP-ASK,改错的成本高于问一句 |
-| "我改得很小,不用重跑 verify" | 任何修改后 verify 都要重跑——这是 `verification-before-completion` 的不变量 |
-| "改完 reviewer 一定会通过,不用重新 dispatch 了" | Critical/Important 修完必须重新 review,自判=赌博 |
-
-## Red Flags — STOP if you catch yourself thinking these
-
-- "reviewer 说得对!让我立刻实现" → 表演式认同,先验证再行动
-- "这条反馈我不同意,跳过" → 必须 push back 并给技术理由,沉默 ≠ 处理
-- "部分理解了就先改能改的" → STOP-ASK,各项可能相互关联,部分理解 = 错误实施
-- "改完了不用重新 dispatch 了" → Critical/Important 修完必须重新 review,自判 = 赌博
-- "改动很小,不用重跑 verify" → 任何修改后 verify 都要重跑,这是不变量
-
-## 下游 / loop-back(HARD RULE)
-
-反馈项全部实施完成后,**必须**按以下顺序走完回路,不得自行判定"改好了":
-
-1. **回到同一个 reviewer 复审**(不是新 reviewer,避免上下文丢失)
- - 直接实施路径:重新 dispatch `sdk-code-review` 的同一 reviewer 角色
- - SDD 路径:由 SDD 控制器重派 spec-reviewer(若 spec 未过)或 code-reviewer(若 spec 已过)
-2. **所有项通过后** → `verification-before-completion` 重跑(修复可能破坏既有验证,不重跑就是赌博)
-3. **verify 通过** → 回到主流程(继续下一任务 / `finishing-a-development-branch`)
-
-## 关联 skill
-
-- **上游触发:** 收到 `sdk-code-review` 的 reviewer subagent 或人类 reviewer 反馈
-- **调度 subagent:** 无(本 skill 由实施者执行处理反馈)
-- **完成后交接:** 见上方「下游 / loop-back」
-- **替代路径:** push back 有据且 reviewer 撤回该条 → 该条无需修改;其他条仍需按 loop-back 流程走
diff --git a/.agents/skills/sdk-code-review/SKILL.md b/.agents/skills/sdk-code-review/SKILL.md
deleted file mode 100644
index 5911b11..0000000
--- a/.agents/skills/sdk-code-review/SKILL.md
+++ /dev/null
@@ -1,178 +0,0 @@
----
-name: sdk-code-review
-description: Use when a feature, bugfix, or refactoring step is completed and needs review, or before merging to main, or when user says "review", "审查", "帮我看看代码"
----
-
-# SDK 代码审查
-
-> **Type:** Technique | **Discipline:** Rigid
-
-dispatch 审查 subagent 对已完成的工作进行独立审查。审查者不继承当前会话历史——你负责构造它需要的全部上下文。
-
-## 何时触发
-
-**强制:**
-- 触发了 Planning Gate 的改动完成后
-- 涉及公开 API 变更的改动完成后
-- 合并到 master 之前
-- subagent-driven-development 全部任务完成后的全局审查
-
-**可选但推荐:**
-- 修复复杂 bug 后
-- 重构后
-- 卡住时(换个独立视角)
-
-## 审查模式选择
-
-### 决策图
-
-```
-工作完成,需要审查?
- │
- ▼
-有 plan 文件对应本次改动?
- ├─ YES → 模式 A:完整审查(spec-reviewer → code-reviewer)
- │
- └─ NO → 变更文件 ≤ 5 且不涉及公开 API?
- ├─ YES → 模式 B:独立审查(仅 code-reviewer)
- └─ NO → 回退去补 plan(writing-plans),再走模式 A
-
-审查者返回结果
- ├─ 通过 → verification-before-completion
- ├─ 需要修改 → 修复 → 重新 dispatch 同审查者(不可自行判断"已修好")
- └─ 需要讨论 → receiving-code-review skill 处理 push back
-```
-
-### 模式 A:完整审查(有 plan 的改动)
-
-dispatch 两个独立审查者,**顺序执行**:
-
-1. **规格合规审查**:dispatch `spec-reviewer` subagent
- - 通过 → 进入步骤 2
- - 不通过 → 修复后重新 dispatch spec-reviewer
- - 需要讨论 → 与用户讨论后决定
-
-2. **代码质量审查**:dispatch `code-reviewer` subagent
- - 通过 → 审查完成
- - 需要修改 → 修复后重新 dispatch code-reviewer
- - 需要讨论 → 与用户讨论后决定
-
-### 模式 B:独立审查(无 plan 的改动)
-
-满足以下**全部**条件时,只 dispatch `code-reviewer` 一次:
-- 无对应 plan 文件
-- 变更文件 ≤ 5 个
-- 不涉及公开 API 变更
-
-## 调度步骤
-
-### 1. 确定变更范围
-
-根据触发场景选择正确的 BASE_SHA:
-
-**场景 A:合并到 master 之前(review 整个功能分支)**
-
-```bash
-# 用 merge-base 找到分支与 master 的分叉点
-BASE_SHA=$(git merge-base HEAD master)
-HEAD_SHA=$(git rev-parse HEAD)
-```
-
-**场景 B:单个任务完成后(subagent-driven-development 中的任务级审查)**
-
-```bash
-# BASE_SHA 在 dispatch 实现者 subagent 前记录,HEAD_SHA 在实现者提交后记录
-# 具体做法见 subagent-driven-development skill
-```
-
-**场景 C:当前工作区未提交的改动**
-
-```bash
-BASE_SHA=$(git rev-parse HEAD)
-# HEAD_SHA 不适用;让审查者用 git diff HEAD 查看未暂存 + 已暂存的改动
-```
-
-```bash
-# 查看变更文件列表
-git diff --name-only $BASE_SHA..$HEAD_SHA
-
-# 查看完整 diff
-git diff $BASE_SHA..$HEAD_SHA
-```
-
-### 2. Dispatch 审查者
-
-**dispatch spec-reviewer 时,必须提供:**
-
-| 字段 | 说明 | 示例 |
-|------|------|------|
-| **变更内容** | 本次完成了什么 | "新增 onPageEnd API" |
-| **规格/规划** | plan 全文或任务描述全文 | 粘贴 plan 内容 |
-| **实现者报告** | 实现者的完成报告(如有) | 粘贴报告 |
-| **BASE_SHA** | 变更起始 commit | `a7981ec` |
-| **HEAD_SHA** | 变更结束 commit | `3df7661` |
-| **变更文件列表** | `git diff --name-only` 的输出 | 文件列表 |
-
-**dispatch code-reviewer 时,必须提供:**
-
-| 字段 | 说明 | 示例 |
-|------|------|------|
-| **变更内容** | 本次完成了什么 | "新增 onPageEnd API" |
-| **对应规划** | plan 文件路径(供参考) | `docs/plans/2026-04-10-on-page-end.md` |
-| **BASE_SHA** | 变更起始 commit | `a7981ec` |
-| **HEAD_SHA** | 变更结束 commit | `3df7661` |
-| **变更文件列表** | `git diff --name-only` 的输出 | 文件列表 |
-
-> **Special case**:若变更文件列表包含 `.agents/` 或 `.claude/` 路径,在 dispatch 时显式注明:
-> "本次变更包含 skill/agent 配置文件,请额外执行维度 7(Skill/Agent 架构一致性)检查。"
-
-### 3. 处理审查结果
-
-按 `receiving-code-review` skill 的规范处理反馈。核心流程:
-
-```
-审查者返回结果
- ↓
-判断结论
- ├── "通过" / "合规" → 继续后续工作
- ├── "需要修改" / "不合规"
- │ ├── Critical → 立即修复,修完后重新 dispatch 同审查者
- │ ├── Important → 合并前修复
- │ └── Suggestion → 记录,可后续处理
- └── "需要讨论" → 与用户讨论后决定
-```
-
-**处理原则:**
-- Critical 和 Important 修复后,**必须重新 dispatch review**,不可自行判断已修好
-- 如果认为审查者判断有误,用技术理由 push back(参见 `receiving-code-review` skill)
-- 不做表演式认同,直接修复或给出技术反驳
-
-## Rationalizations
-
-| Excuse | Reality |
-|---|---|
-| "改动小,跳过审查吧" | 模式 B 已经是最轻量路径,再跳就是裸奔 |
-| "我自己看过一遍没问题" | 自审替代不了独立审查,上下文污染 |
-| "先做质量审查,规格审查之后补" | 顺序不可颠倒——实现不合规时做质量审查是浪费 |
-| "reviewer 说 Important,我觉得是 Suggestion" | 可以 push back,但要有技术理由,不是感觉 |
-| "改完了,直接声明通过" | Critical/Important 修复后必须重新 dispatch,不可自判 |
-
-## Red Flags — STOP if you catch yourself thinking these
-
-- "这个改动太小了不需要审查" → 模式 B 就是为小改动设计的,再跳 = 裸奔
-- "我自己检查过了,没问题" → 自审替代不了独立审查,你有上下文盲区
-- "先跑质量审查,spec review 后面补" → 顺序不可颠倒,规格不合规时质量审查是浪费
-- "修完 Critical 了,不用重新 dispatch reviewer" → 必须重新 dispatch,自判 = 赌博
-
-## 关联 skill
-
-- **上游触发:**
- - `subagent-driven-development` 每任务完成后 + 全部完成后的全局审查
- - 手动实施完成后,触发 Planning Gate 的改动必须走模式 A
- - 准备合并到 master 前强制触发
-- **调度 subagent:**
- - `spec-reviewer` agent(`.claude/agents/spec-reviewer.md`)— 模式 A 第一阶段
- - `code-reviewer` agent(`.claude/agents/code-reviewer.md`)— 模式 A 第二阶段 / 模式 B 唯一审查者
-- **完成后交接:** 通过 → `verification-before-completion` → `finishing-a-development-branch`
-- **处理反馈:** `receiving-code-review` 的 STOP-ASK / YAGNI / push back 规范
-- **替代路径:** 仅修改文档/配置且无 SDK 行为影响 → 跳过本 skill
diff --git a/.agents/skills/subagent-driven-development/SKILL.md b/.agents/skills/subagent-driven-development/SKILL.md
deleted file mode 100644
index 5b407ec..0000000
--- a/.agents/skills/subagent-driven-development/SKILL.md
+++ /dev/null
@@ -1,254 +0,0 @@
----
-name: subagent-driven-development
-description: Use when executing an implementation plan with 3+ independent tasks in the current session
----
-
-# Subagent-Driven Development
-
-> **Type:** Technique | **Discipline:** Rigid
-
-通过 dispatch 独立 subagent 执行 plan 中的每个任务,每个任务完成后进行两阶段审查(规格合规 → 代码质量)。
-
-**为什么用 subagent:** 你是控制器,负责调度和协调。将实现任务委派给独立 subagent,每个 subagent 有隔离的上下文。你精心构造它们需要的指令和上下文,确保它们专注完成任务。它们不继承你的会话历史——你构造它们需要的一切。这也保护了你自己的上下文窗口用于协调工作。
-
-**核心原则:** 每任务一个新鲜 subagent + 两阶段审查(规格 → 质量)= 高质量、快迭代
-
-## 何时使用
-
-### 决策图
-
-```
-有 plan 文件?
- ├─ NO → writing-plans 先产出 plan(或判断是否应该手动实施)
- └─ YES → 任务数 ≥ 3 且任务大部分独立?
- ├─ NO → 手动实施(模式 B)+ 按 sdk-code-review 流程审查
- └─ YES → 希望留在当前会话连续执行?
- ├─ NO → 改用手动实施 + 完整审查
- └─ YES → 本 skill(subagent-driven-development)
-```
-
-### 使用条件(全部满足)
-
-- 有实施规划(plan 文件存在于 `docs/plans/`)
-- 任务 ≥ 3 个且大部分相互独立
-- 希望在当前会话中连续执行(不切换会话)
-
-### 不适用时
-
-- 无 plan → 先走 `writing-plans` → `plan-document-review` 产出合规 plan
-- 任务紧密耦合 → 手动实施,避免 subagent 间相互阻塞
-- 只有 1-2 个简单改动 → 直接改,不需要这个流程
-
-## 流程
-
-```
-读取 plan,提取所有任务全文
- ↓
-[Per Task]
- ↓
-记录 BASE_SHA
- ↓
-Dispatch 实现者 subagent(./implementer-prompt.md)
- ↓
-实现者提问? ──yes──→ 回答问题 → 重新 dispatch
- │no
- ↓
-实现者实现、测试、提交、自审
- ↓
-返回状态(见"处理实现者状态")
- ↓
-记录 HEAD_SHA
- ↓
-Dispatch 规格审查者 subagent(./spec-reviewer-prompt.md)
- ↓
-规格合规? ──no──→ 实现者修复 → 重新规格审查
- │yes
- ↓
-Dispatch 质量审查者 subagent(./code-quality-reviewer-prompt.md)
- ↓
-质量通过? ──no──→ 实现者修复 → 重新质量审查
- │yes
- ↓
-标记任务完成
- ↓
-[/Per Task]
- ↓
-更多任务? ──yes──→ 下一个任务
- │no
- ↓
-Dispatch 全局 code-reviewer(sdk-code-review skill)
- ↓
-全局审查通过? ──no──→ receiving-code-review → 修复 → 重新全局审查
- │yes
- ↓
-verification-before-completion
- ↓
-finishing-a-development-branch ← 终态
-```
-
-## 模型选择
-
-用能胜任的最轻量模型,节省成本和时间。
-
-**机械实现任务**(独立函数、清晰规格、1-2 文件):用 `haiku`。规划明确时大多数 SDK 实现任务属于此类。
-
-**集成和判断任务**(多文件协调、模式匹配、调试):用 `sonnet`。
-
-**架构、设计和审查任务**:用 `opus`。
-
-**判断依据:**
-- 改 1-2 个文件 + 完整规格 → `haiku`
-- 改多个文件 + 有集成逻辑 → `sonnet`
-- 需要设计判断或全局理解 → `opus`
-
-## 处理实现者状态
-
-实现者 subagent 返回四种状态之一:
-
-**DONE:** 进入规格合规审查。
-
-**DONE_WITH_CONCERNS:** 实现者完成了但标记了疑虑。先读疑虑再决定:
-- 正确性 / 范围问题 → 解决后再审查
-- 观察性备注(如"这个文件越来越大")→ 记录后继续审查
-
-**NEEDS_CONTEXT:** 实现者缺少必要信息。补充上下文,重新 dispatch。
-
-**BLOCKED:** 实现者无法完成。评估阻塞原因:
-1. 上下文不足 → 提供更多上下文,同模型重新 dispatch
-2. 任务需要更强推理 → 用更强模型重新 dispatch
-3. 任务太大 → 拆成更小的子任务
-4. plan 本身有问题 → 升级给用户
-
-**绝不**忽略升级信号或让同一模型无变化地重试。实现者说卡住了,就是有东西需要改变。
-
-## Prompt 模板
-
-- `./implementer-prompt.md` — dispatch 实现者 subagent
-- `./spec-reviewer-prompt.md` — dispatch 规格合规审查 subagent
-- `./code-quality-reviewer-prompt.md` — dispatch 代码质量审查 subagent
-
-## 上下文构造原则
-
-**粘贴全文,不让 subagent 读文件:**
-- 任务描述:从 plan 中提取完整文本,粘贴到 prompt 中
-- 规格内容:粘贴 plan 相关章节,不给文件路径让 subagent 自己读
-- 减少 subagent 的文件读取开销,保证它拿到的信息是你筛选过的
-
-**提供场景设置:**
-- 这个任务在整体 plan 中的位置
-- 前序任务已完成了什么
-- 本任务与其他任务的依赖关系
-- 相关的已有代码文件路径
-
-## 示例
-
-```
-我使用 Subagent-Driven Development 执行这个 plan。
-
-[读取 plan: docs/plans/2026-04-13-on-page-end.md]
-[提取 3 个任务的完整文本]
-
-Task 1: 新增 onPageEnd 接口定义
-
-BASE_SHA=$(git rev-parse HEAD) # a7981ec
-
-[Dispatch 实现者 subagent,model: haiku]
- → 任务全文 + GrowingAnalyticsInterface 上下文
-
-实现者:"开始前有个问题——onPageEnd 的 attributes 参数是 AttributesType 还是 Record?"
-
-我:"用 AttributesType,和 track() 保持一致。"
-
-[重新 dispatch 实现者]
-实现者:
- - 实现了 onPageEnd(pageName, attributes?) 接口
- - 更新了 obfuscation-rules.txt
- - 自审:无遗漏
- - Status: DONE
-
-HEAD_SHA=$(git rev-parse HEAD) # 3df7661
-
-[Dispatch 规格审查者]
-规格审查者:✅ 合规 — 所有需求已实现,无多余工作
-
-[Dispatch 质量审查者]
-质量审查者:通过。Suggestion: 考虑给 pageName 加空字符串校验。
-
-[标记 Task 1 完成]
-
-Task 2: 实现 Hybrid 模块中的 onPageEnd 逻辑
-...
-
-[所有任务完成后]
-[Dispatch 全局 code-reviewer(通过 sdk-code-review skill)]
-全局审查:通过,可合并。
-
-完成!
-```
-
-## 红线
-
-**绝不:**
-- 跳过审查(规格审查和质量审查都不可跳过)
-- 带着未修复的问题进入下一个任务
-- 并行 dispatch 多个实现者 subagent(会冲突)
-- 让 subagent 自己读 plan 文件(提供全文)
-- 省略场景设置上下文
-- 忽略实现者的提问(回答后再继续)
-- 接受规格审查的"差不多"(有问题 = 没通过)
-- 在规格审查通过前开始质量审查(顺序不可颠倒)
-- 让实现者的自审替代正式审查(两者都需要)
-- 自己手动修复代码(上下文污染)——dispatch 修复 subagent
-
-**如果实现者提问:**
-- 清楚完整地回答
-- 按需提供额外上下文
-- 不要催它赶紧写代码
-
-**如果审查者发现问题:**
-- 实现者(同一个 subagent)修复
-- 审查者重新审查
-- 重复直到通过
-- 不跳过重新审查
-
-**如果 subagent 失败:**
-- dispatch 新的修复 subagent,给出具体指令
-- 不自己手动修(上下文污染)
-
-## Rationalizations
-
-| Excuse | Reality |
-|---|---|
-| "任务独立性我判断过了不用走 subagent" | 本 skill 的隔离是为了防 context 污染,不只是为了并行 |
-| "一个 subagent 并行多任务能快" | 明确禁止——会冲突;一次只 dispatch 一个实现者 |
-| "subagent 可以自己读 plan 文件" | 必须粘贴全文进 prompt,不让它读文件,避免 context 污染 |
-| "自审过就不用 spec-reviewer 了" | 自审替代不了独立审查;两阶段都要走 |
-| "spec-reviewer 有问题先质量审了,回头再改" | 顺序不可颠倒,规格不合规时做质量审查纯浪费 |
-| "实现者报 BLOCKED 再让它用更强模型重试一次" | BLOCKED 必须更换上下文/模型/任务粒度;不允许无变化重试 |
-| "reviewer 提了 Critical 我修了就不用重新 review 了" | 修完必须重新 dispatch 同审查者,不可自判 |
-
-## Red Flags — STOP if you catch yourself thinking these
-
-- "这个任务简单,我自己直接改比 dispatch subagent 快" → 你在找借口污染控制器上下文
-- "跳过 spec review,implementer 自审过了" → 自审替代不了独立审查,两阶段都要走
-- "并行 dispatch 两个 implementer 加速" → 明确禁止,文件冲突概率极高
-- "这个 bug 我自己顺手修一下" → 控制器不写代码,dispatch 修复 subagent
-
-## 关联 skill
-
-- **上游触发:**
- - `writing-plans` 产出 plan 文件(前置)
- - `plan-document-review` 通过独立审查(前置)
-- **调度 subagent / Prompt 模板(本 skill 目录下):**
- - `./implementer-prompt.md` — 实现者 subagent 调度模板
- - `./spec-reviewer-prompt.md` — 规格合规审查 subagent 调度模板
- - `./code-quality-reviewer-prompt.md` — 代码质量审查 subagent 调度模板
-- **Subagent 内部遵循(嵌入在 prompt 中):**
- - `test-driven-development` — 核心路径走 Red-Green-Refactor
- - `growingio-arkts-coding-style` — ArkTS 编码规范
- - `systematic-debugging` — 实现者遇错时的调试纪律
-- **完成后交接:**
- - 全部任务完成 → `sdk-code-review`(全局审查)
- - 审查反馈处理 → `receiving-code-review`
- - 审查通过 → `verification-before-completion` → `finishing-a-development-branch`
-- **替代路径:** 任务紧密耦合或 < 3 个 → 跳过本 skill,手动实施 + `sdk-code-review` 独立审查
diff --git a/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md b/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md
deleted file mode 100644
index 4be012e..0000000
--- a/.agents/skills/subagent-driven-development/code-quality-reviewer-prompt.md
+++ /dev/null
@@ -1,52 +0,0 @@
-# 质量审查者 Subagent Prompt 模板
-
-**只在 spec reviewer 通过后才 dispatch。**
-
-```
-Agent({
- description: "Review code quality for Task N: {TASK_NAME}",
- subagent_type: "GrowingIO SDK Code Reviewer",
- prompt: `
-审查代码质量。
-
-## 变更内容
-
-{WHAT_WAS_IMPLEMENTED}
-
-## 对应规划
-
-{PLAN_REFERENCE}(规格合规审查已通过)
-
-## Git 范围
-
-BASE_SHA: {BASE_SHA}
-HEAD_SHA: {HEAD_SHA}
-
-## 变更文件
-
-{CHANGED_FILES_LIST}
-
-请按照你的审查步骤执行代码质量审查。
-`
-})
-```
-
-## 占位符说明
-
-| 占位符 | 来源 | 说明 |
-|--------|------|------|
-| `{TASK_NAME}` | plan 中的任务标题 | 简短描述 |
-| `{WHAT_WAS_IMPLEMENTED}` | 实现者报告摘要 | 简述实现了什么 |
-| `{PLAN_REFERENCE}` | plan 文件路径 | 供 reviewer 参考上下文 |
-| `{BASE_SHA}` | 任务开始前的 commit | 同 spec-reviewer-prompt |
-| `{HEAD_SHA}` | 实现者完成后的 commit | 同 spec-reviewer-prompt |
-| `{CHANGED_FILES_LIST}` | `git diff --name-only` 输出 | 帮 reviewer 快速定位 |
-
-## 额外检查项
-
-除 code-reviewer agent 的标准维度外,质量审查者还应关注:
-
-- 每个文件是否职责单一、接口清晰?
-- 模块是否可以独立理解和测试?
-- 实现是否遵循了规划中的文件结构?
-- 本次变更是否创建了过大的新文件,或显著增长了已有文件?(不要标记已有文件的既存大小)
diff --git a/.agents/skills/subagent-driven-development/implementer-prompt.md b/.agents/skills/subagent-driven-development/implementer-prompt.md
deleted file mode 100644
index 2c939c8..0000000
--- a/.agents/skills/subagent-driven-development/implementer-prompt.md
+++ /dev/null
@@ -1,123 +0,0 @@
-# 实现者 Subagent Prompt 模板
-
-dispatch 实现者 subagent 时,用此模板构造 prompt。将占位符替换为实际值。
-
-```
-Agent({
- description: "Implement Task N: {TASK_NAME}",
- subagent_type: "GrowingIO HarmonyOS SDK Engineer",
- model: "{MODEL}",
- prompt: `
-你正在实现任务:{TASK_NAME}
-
-## 任务描述
-
-{TASK_FULL_TEXT}
-
-## 上下文
-
-{SCENE_SETTING_CONTEXT}
-
-## 开始前
-
-如果你对以下内容有疑问:
-- 需求或验收标准
-- 实现方案或策略
-- 依赖关系或假设
-- 任务描述中任何不清楚的地方
-
-**现在就问。** 在开始工作前提出所有疑虑。
-
-## 你的工作
-
-确认需求清楚后:
-1. 按任务规格实现功能(写 .ets 代码前参考 `growingio-arkts-coding-style` skill 的约束表)
-2. 编写测试(如任务要求);如涉及核心路径(事件管道/存储/网络层),按 `test-driven-development` skill 遵循 Red-Green-Refactor 循环
-3. 按 `verification-before-completion` skill 的五步验证门验证实现正确
-4. 提交你的工作(commit message 按 `git-conventions` skill 规范生成)
-5. 执行自审(见下方)
-6. 报告结果
-
-工作目录:{WORKING_DIRECTORY}
-
-**工作过程中:**
-- 遇到意外或不清楚的情况 → **暂停并提问**,不要猜测或做假设
-- 遇到编译错误 / 构建失败 / 测试失败 → 按 `systematic-debugging` skill 的四阶段方法排查,不得随意猜测修改
-
-## 角色约束
-
-你已经是 GrowingIO HarmonyOS SDK Engineer,SDK 领域知识通过 CLAUDE.md 的 `docs/sdk-engineering-guide.md` 自动加载。**本次作为实现者,忽略 persona 中的 Planning Gate 和 Workflow Process**——这些是控制器的职责,你只负责执行本任务。
-
-## 代码组织
-
-- 遵循规划中定义的文件结构
-- 每个文件职责单一,接口清晰
-- 如果你创建的文件超出规划意图的规模,停止并报告 DONE_WITH_CONCERNS——不要自行拆分文件
-- 修改已有文件时,遵循已有模式。改善你接触的代码,但不要重构任务范围外的部分
-
-## 能力边界
-
-坦诚说"这对我来说太难了"永远没问题。交出垃圾代码比承认困难更糟。
-
-**遇到以下情况时停止并升级:**
-- 任务需要在多个有效方案间做架构决策
-- 需要理解提供范围之外的代码且无法找到答案
-- 不确定自己的方案是否正确
-- 任务涉及规划未预期的已有代码重构
-- 反复读文件试图理解系统但没有进展
-
-**如何升级:** 报告 BLOCKED 或 NEEDS_CONTEXT 状态。具体描述卡在哪里、尝试了什么、需要什么帮助。
-
-## 提交前:自审
-
-以审查者的视角审视自己的工作:
-
-**完整性:**
-- 规格中的所有要求都实现了吗?
-- 有没有遗漏的需求?
-- 有没有未处理的边界情况?
-
-**质量:**
-- 这是我能做到的最好水平吗?
-- 命名清晰准确吗?
-- 代码干净可维护吗?
-
-**纪律:**
-- 有没有过度构建(YAGNI)?
-- 是否只构建了被要求的东西?
-- 是否遵循了代码库已有的模式?
-
-**SDK 特有:**
-- 新增字段命名与 Android/iOS SDK 一致吗?
-- 新增采集字段需要 ignoreField 支持吗?
-- 公开 API 变更已加入 obfuscation-rules.txt 吗?
-
-如果自审发现问题,现在就修复,不要留给审查者。
-
-## 报告格式
-
-完成后报告:
-- **Status:** DONE | DONE_WITH_CONCERNS | BLOCKED | NEEDS_CONTEXT
-- 实现了什么(或如果被阻塞,尝试了什么)
-- 测试内容和结果
-- 变更的文件列表
-- 自审发现(如有)
-- 任何问题或疑虑
-
-DONE_WITH_CONCERNS:完成了但对正确性有疑虑。
-BLOCKED:无法完成任务。
-NEEDS_CONTEXT:缺少必要信息。
-绝不要悄悄交付你自己都不确信的工作。
-`
-})
-```
-
-## 模型选择指引
-
-| 任务特征 | 推荐模型 | 理由 |
-|---------|---------|------|
-| 1-2 文件、清晰规格、机械实现 | `haiku` | 不需要推理能力,省成本 |
-| 多文件协调、集成逻辑 | `sonnet` | 需要一定理解力 |
-| 架构决策、复杂重构 | `opus` | 需要判断力 |
-
-大多数 SDK 任务在规划明确时属于机械实现,优先用轻量模型。
diff --git a/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md b/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md
deleted file mode 100644
index e419464..0000000
--- a/.agents/skills/subagent-driven-development/spec-reviewer-prompt.md
+++ /dev/null
@@ -1,47 +0,0 @@
-# 规格审查者 Subagent Prompt 模板
-
-spec reviewer 通过后才能进入 code quality review。**顺序不可颠倒。**
-
-```
-Agent({
- description: "Review spec compliance for Task N: {TASK_NAME}",
- subagent_type: "GrowingIO SDK Spec Reviewer",
- prompt: `
-审查任务的规格合规性。
-
-## 规格/规划
-
-{TASK_REQUIREMENTS_OR_PLAN_FULL_TEXT}
-
-## 实现者报告
-
-{IMPLEMENTER_REPORT}
-
-## Git 范围
-
-BASE_SHA: {BASE_SHA}
-HEAD_SHA: {HEAD_SHA}
-
-请运行以下命令查看变更:
-git diff --stat {BASE_SHA}..{HEAD_SHA}
-git diff {BASE_SHA}..{HEAD_SHA}
-
-## 变更文件
-
-{CHANGED_FILES_LIST}
-
-请按照你的审查步骤执行规格合规审查。
-`
-})
-```
-
-## 占位符说明
-
-| 占位符 | 来源 | 说明 |
-|--------|------|------|
-| `{TASK_NAME}` | plan 中的任务标题 | 简短描述 |
-| `{TASK_REQUIREMENTS_OR_PLAN_FULL_TEXT}` | plan 文件完整内容或任务描述 | **粘贴全文,不让 reviewer 自己读文件** |
-| `{IMPLEMENTER_REPORT}` | 实现者返回的报告 | 原样粘贴,reviewer 会独立验证而非信任 |
-| `{BASE_SHA}` | 任务开始前的 commit | `git rev-parse HEAD`(dispatch 实现者前记录) |
-| `{HEAD_SHA}` | 实现者完成后的 commit | `git rev-parse HEAD`(实现者提交后记录) |
-| `{CHANGED_FILES_LIST}` | `git diff --name-only` 输出 | 帮 reviewer 快速定位 |
diff --git a/.agents/skills/systematic-debugging/SKILL.md b/.agents/skills/systematic-debugging/SKILL.md
index bc1302e..77fa8b6 100644
--- a/.agents/skills/systematic-debugging/SKILL.md
+++ b/.agents/skills/systematic-debugging/SKILL.md
@@ -178,6 +178,6 @@ git log --oneline --grep="关键词" -10
## 关联 skill
- **上游触发:** 任何编译 / 构建 / 测试 / 运行时失败,且第一次尝试没解决或原因不明
-- **调度 subagent:** 无(控制器/实施者自己执行四阶段)
+- **使用方式:** 实施者自己按顺序执行四阶段,不跳阶段
- **完成后交接:** 修复后 → `verification-before-completion` 做完成前验证门
-- **替代路径:** ArkTS 语法类编译错误 → Phase 1 后对照 `growingio-arkts-coding-style` 查约束表;subagent 场景下 3 次失败 → 报告 BLOCKED 升级给控制器
+- **替代路径:** ArkTS 语法类编译错误 → Phase 1 后对照 `growingio-arkts-coding-style` 查约束表;连续 3 次修复失败 → 停下升级给用户讨论,不继续试
diff --git a/.agents/skills/test-driven-development/SKILL.md b/.agents/skills/test-driven-development/SKILL.md
index 7c2331d..01cd767 100644
--- a/.agents/skills/test-driven-development/SKILL.md
+++ b/.agents/skills/test-driven-development/SKILL.md
@@ -189,6 +189,6 @@ it('json_path_includes_eventSequenceId', ...)
## 关联 skill
- **上游触发:** `writing-plans` 在"影响面自查清单"中判定本次涉及核心模块
-- **调度 subagent:** 无(本 skill 由实施者执行)
+- **使用方式:** 实施者自己执行
- **完成后交接:** 测试通过 → 继续实施 / 交给 `verification-before-completion` 做最终验证
- **替代路径:** 非核心路径(纯配置 / 文档)→ 跳过 TDD;运行时探索性改动 → `systematic-debugging` 的四阶段先于 TDD
diff --git a/.agents/skills/using-growingio-sdk-skills/SKILL.md b/.agents/skills/using-growingio-sdk-skills/SKILL.md
deleted file mode 100644
index 3bc66f4..0000000
--- a/.agents/skills/using-growingio-sdk-skills/SKILL.md
+++ /dev/null
@@ -1,252 +0,0 @@
----
-name: using-growingio-sdk-skills
-description: Use when starting any interaction as the GrowingIO HarmonyOS SDK engineer main controller agent
----
-
-
-If you were dispatched as a subagent to execute a specific task — this includes but is not limited to:
-
-- `code-reviewer` / `spec-reviewer` (reviewing code or specs)
-- implementer subagents dispatched by `subagent-driven-development`
-- any general-purpose agent invoked via the `Agent` / `Task` tool with a specific assigned task
-- any subagent whose prompt explicitly hands you a narrow job
-
-**then SKIP THIS META-SKILL ENTIRELY.** Do not apply the routing, Planning Gate, or workflow below. Just execute your assigned task as specified in the prompt you received. The meta-skill's rules are for the main controller agent only; you are not it.
-
-**但"跳过 meta-skill"不等于"不用任何 skill"**:子 agent 仍可(且应当)自主调用与任务相关的**域 skill**,例如:
-- `growingio-arkts-coding-style`(写/审 `.ets`/`.ts` 时)
-- `test-driven-development`(实现核心路径时)
-- `systematic-debugging`(遇到 build/test/runtime 失败时)
-- `verification-before-completion`(声称任务完成前)
-
-跳过的**只是** meta-skill 的三项硬规则:**Planning Gate + Workflow Routing + TodoWrite 强制**。域 skill 的判断由子 agent 按自身任务自行决定。
-
-Signal of subagent context: your prompt starts with "你是…" / "You are…" followed by a specific role description, or you received a structured task payload. In contrast, the main controller receives raw user messages.
-
-
-
-If you think there is even a 1% chance a skill might apply to what you are doing, you MUST invoke the skill. This is not negotiable. You cannot rationalize your way out of this.
-
-
-# Using GrowingIO SDK Skills
-
-> **Type:** Technique | **Discipline:** Rigid
-
-This is the **entry gate** for the GrowingIO HarmonyOS SDK engineer (main controller agent).
-
-## How this skill reaches you
-
-The full content of this SKILL.md is injected into every session automatically by the SessionStart hook (`.claude/hooks/session-start.sh`), and re-injected after `/clear` or auto-compact. You do NOT need to call the `Skill` tool to load it — it is already in your context when you start responding.
-
-If you see this content and you are NOT the main controller (see `` above), ignore it and execute your assigned task.
-
-## What this skill does
-
-Before any response — including clarifying questions — follow the Workflow Routing below to decide which task-specific skills apply, then invoke them via the `Skill` tool.
-
-## Instruction Priority
-
-When conflicts arise, resolve by this order:
-
-1. **User's explicit instructions** (CLAUDE.md, direct messages, in-conversation corrections) — highest
-2. **SDK skills** (including this meta-skill, planning gate logic, workflow routing) — override default behavior
-3. **Default model behavior** — lowest
-
-If the user says "skip the plan this time" and a skill says "always write a plan," follow the user.
-
-## The Rule
-
-**Invoke relevant skills BEFORE any response or action.** Even a 1% chance a skill applies means invoke it. If the invoked skill turns out to be wrong, you can drop it — but you must check first.
-
-## Skill Checklist → TodoWrite (HARD RULE)
-
-当被调用的 skill 包含步骤清单("Checklist"、编号步骤、"You MUST..."、"必须完成以下"),控制器 **必须**立即调用 `TaskCreate` 把每一条转为独立 todo,并在完成每一步后用 `TaskUpdate` 更新状态。**禁止只在脑内执行 checklist**——脑内 checklist 的漏项率极高,落盘到 todo 才有约束力。
-
-此规则对控制器(主 agent)强制;subagent 因其生命周期短、目标单一,可自行判断是否需要。
-
-## Skill Catalog (by category)
-
-### Process skills (check FIRST — they decide HOW to approach the task)
-- `brainstorming` — 模糊需求 / 范围不清 / 写 plan 前,做"一次一个问题"的规格收敛
-- `writing-plans` — drafting an implementation plan in `docs/plans/`
-- `plan-document-review` — reviewing a plan doc for completeness before user confirmation
-- `subagent-driven-development` — executing a plan by dispatching fresh subagents with two-stage review
-- `systematic-debugging` — any build/test/runtime failure where root cause is unclear
-- `test-driven-development` — implementing core SDK paths (event pipeline, storage, network)
-
-### Review skills
-- `sdk-code-review` — completed a feature/bugfix/refactor, or before merge, or user asked for review
-- `receiving-code-review` — processing feedback from a reviewer subagent or human
-
-### Closing skills
-- `verification-before-completion` — before claiming work is done/fixed/ready
-- `finishing-a-development-branch` — after verification & review pass, to close out the branch(普通分支收尾 / 发版分支 → 触发 Release 侧流)
-- `git-conventions` — writing commit messages, branch names, PR titles
-
-### Domain skills
-- `growingio-arkts-coding-style` — writing/reviewing `.ets`/`.ts` files
-
-### Release 侧流(仅发版分支激活,不走主流程)
-- `jira-ticket` — 创建发版 Jira ticket(版本号确定后、`ohpm-publish` 之前)
-- `ohpm-publish` — publishing the SDK HAR to OHPM registry
-
-### Meta 侧流(改 skill / 改 agent 本身时才用,不走主流程)
-- `writing-skills` — 新建或修改 `.agents/skills/` 下任何 SKILL.md 时
-
-## Planning Gate (HARD GATE)
-
-Before writing ANY code, check these triggers:
-
-**Trigger (any ONE suffices):**
-- Affected file count ≥ 3
-- Any change to the public API surface (symbols exported from `index.ets`)
-
-**If triggered:**
-1. Invoke `writing-plans` → save plan to `docs/plans/YYYY-MM-DD-.md`
-2. Invoke `plan-document-review` → dispatch reviewer subagent for the plan
-3. Show the user the plan path + reviewer summary, explicitly ask for confirmation
-4. **Do NOT touch any source file until the user replies with confirmation ("确认" / "OK" / "继续")**
-
-Required sections in every plan (missing any = incomplete):
-- 影响文件列表
-- 公开 API 变更(无则填"无")
-- 数据协议变更(无则填"无")
-- 需同步修改的文档(无则填"无")
-
-### Rationalizations (all invalid)
-
-| Excuse | Reality |
-|--------|---------|
-| "改动很简单,不需要规划" | 简单改动也有影响面,规划 2 分钟没有例外 |
-| "先改完再补规划" | 规划的价值在事前对齐,事后补写无价值 |
-| "用户没要求规划" | 触发条件满足即强制,不需用户单独要求 |
-| "只改内部实现,不影响公开 API" | 内部实现影响 ≥3 文件同样触发 |
-| "这次先快速改,下次规范" | 没有"下次规范",规则从第一次执行 |
-| "步骤很清楚,我脑内过一遍 checklist 就行,不用 TodoWrite" | 脑内 checklist 漏项率极高;TaskCreate 落盘 30 秒,无例外 |
-| "需求我看懂了,不用 brainstorming" | 看懂字面 ≠ 规格闭合;brainstorming 把假设写下来给用户挑错 |
-
-## Workflow Routing (decision tree)
-
-> 图中**实线**是主干,**虚线/旁路**是可插入的 skill(遇到对应情况随时跳转)。每个 `→` 都是一次 skill invoke。
-
-```
-User request received
- │
- ▼
-Invoke using-growingio-sdk-skills (you are here)
- │
- ▼
-Understand intent
- │
- ▼
-需求模糊 / 范围不清 / 无规格?
- ├─ YES → brainstorming → 产出 docs/specs/YYYY-MM-DD-.md → 用户确认
- │ │
- └─ NO ───────────────────────────────────────────────────────────────┐
- │
- ▼
-Read relevant docs (docs/sdk-doc-routing.md 按场景读取表;
- docs/sdk-critical-rules.md 若改核心模块必读)
- │
- ▼
-Planning Gate: ≥3 files OR public API change ?
- │
- ├─ YES ─────────────────────────────────────────────┐
- │ │ │
- │ ▼ │
- │ writing-plans → plan-document-review │
- │ → WAIT FOR USER CONFIRM │
- │ │ │
- │ ▼ │
- │ Tasks ≥3 且大部分独立? │
- │ ├─ YES → subagent-driven-development │
- │ │ (控制器不写代码;subagent 内部按需用 │
- │ │ TDD / growingio-arkts-coding-style │
- │ │ / systematic-debugging) │
- │ │ │
- │ └─ NO → 直接实施(单一职责 edits) │
- │ │
- └─ NO ── 直接实施(单一职责 edits) ───────────────────┘
- │
- │ 实施期可随时插入的旁路 skill:
- │ ┊ 改核心模块(事件管道/存储/网络) → test-driven-development
- │ ┊ 写/审 .ets / .ts → growingio-arkts-coding-style
- │ ┊ 任何阶段 build/test/runtime 失败 → systematic-debugging
- │ (修完 → 回到失败前的上一步)
- ▼
- verification-before-completion (跑真实 verify 命令,读完整输出)
- │
- ├─ 失败 → systematic-debugging → (修完)→ 回本步骤重跑 ─┐
- │ │
- └─ 通过 │
- │◄────────────────────────────────────────────────────┘
- ▼
- Code review
- ├─ 有 plan → sdk-code-review 模式 A(spec-reviewer → code-reviewer)
- ├─ 无 plan + ≤5 files + 不动公开 API → sdk-code-review 模式 B(仅 code-reviewer)
- └─ 琐碎改动(<3 files 且不动公开 API)→ 可跳过
- │
- ├─ 需修改 → receiving-code-review → 修复
- │ → 重派同一 reviewer 复审 ─────────────┐
- │ → 回 verification-before-completion 重跑
- │ │
- └─ 通过 │
- │◄───────────────────────────────────────────────────┘
- ▼
- finishing-a-development-branch
- ├─ 普通分支 → 使用 git-conventions 规范 commit / PR / 分支名
- │ → Done
- │
- └─ 发版分支(version 字段变更)→ 侧流:
- jira-ticket(发版单)→ ohpm-publish(发布 HAR)
- → 使用 git-conventions 规范 tag 命名
- → Done
-```
-
-**Meta 侧流**(与上图主流程正交,改 skill 本身时激活):
-```
-修改 .agents/skills/*/SKILL.md → writing-skills → 按其 Checklist 走完
-```
-
-## Skill Types
-
-- **Rigid** (TDD, Planning Gate, verification-before-completion, systematic-debugging): follow exactly, do not adapt away the discipline
-- **Flexible** (domain patterns, coding style): adapt principles to context
-
-The skill itself declares which type it is.
-
-## Red Flags — STOP if you catch yourself thinking these
-
-| Thought | Reality |
-|---------|---------|
-| "这是个简单问题,直接回答就行" | 问题也是任务,先查 skill |
-| "先读一下代码再说" | skill 告诉你怎么读 |
-| "小改动不用走流程" | Planning Gate 的触发条件本身就是"小改动"判定器 |
-| "我记得这个 skill 的内容" | skill 会演进,每次用读当前版本 |
-| "用户没要求,跳过吧" | skill 适用性由触发条件判定,不由用户触发 |
-| "先做一点再补流程" | 补不回来,从第一步就按流程走 |
-| "这个场景有点特殊" | 没有特殊,Rigid skill 没有例外 |
-| "我在 subagent 里,不需要查" | 看 `` — 只有控制器跳过,其他要查 |
-| "skill 里的 checklist 我记住了,不用落盘 TodoWrite" | 落盘是约束力,不是记忆术;立刻 TaskCreate |
-| "先直接写 plan,跳过 brainstorming" | 需求模糊时 plan 的输入就是错的;先走 brainstorming 收敛规格 |
-
-## User Instructions Override
-
-User instructions say WHAT to accomplish — they don't override HOW (skills).
-"Add feature X" does not mean "skip Planning Gate". "Fix bug Y" does not mean "skip verification".
-Only explicit "skip the plan / skip the review" overrides the skill.
-
-## Domain Context
-
-领域知识拆分为若干 lazy-load 文档:
-
-- `docs/sdk-engineering-guide.md` — 产品使命、核心职责索引、健康指标(精简版)
-- `docs/sdk-critical-rules.md` — 修改核心模块前 **必读**
-- `docs/sdk-doc-routing.md` — 按场景读取的模块文档索引
-- `docs/sdk-build-commands.md` — hvigor 构建命令
-
-本 skill 不重复这些内容——读文档知道 WHAT to build,读 skill 知道 HOW to build。
-
----
-
-**Remember:** The persona defines who you are. Skills define how you work. This meta-skill is your entry gate — invoke it first, every time.
diff --git a/.agents/skills/verification-before-completion/SKILL.md b/.agents/skills/verification-before-completion/SKILL.md
index 5c183cd..b6e21e1 100644
--- a/.agents/skills/verification-before-completion/SKILL.md
+++ b/.agents/skills/verification-before-completion/SKILL.md
@@ -156,6 +156,6 @@ ls -lh GrowingToolsKit/build/default/outputs/default/*.har
## 关联 skill
- **上游触发:** 任何"声明完成 / 已修好 / 准备审查 / 准备 merge"的时刻
-- **调度 subagent:** 无(实施者/控制器自己执行验证命令)
-- **完成后交接:** 验证通过 → `sdk-code-review` 或 `finishing-a-development-branch`
+- **使用方式:** 实施者自己执行验证命令
+- **完成后交接:** 验证通过 → 对照 `docs/sdk-review-checklist.md` 自查 → `finishing-a-development-branch`
- **替代路径:** 验证失败 → `systematic-debugging` 四阶段方法,不允许"再试一次"的无脑重跑
diff --git a/.agents/skills/writing-plans/SKILL.md b/.agents/skills/writing-plans/SKILL.md
index 45b6862..7d1cd81 100644
--- a/.agents/skills/writing-plans/SKILL.md
+++ b/.agents/skills/writing-plans/SKILL.md
@@ -1,19 +1,19 @@
---
name: writing-plans
-description: Use when Planning Gate triggers (affected files ≥3 or public API change) and an implementation plan is needed
+description: Use when a change affects 3 or more files or alters public API, and an implementation plan is needed
---
# Writing Plans
> **Type:** Technique | **Discipline:** Rigid
-指导如何写好一份实施规划。Planning Gate(见 `using-growingio-sdk-skills` meta-skill)定义 plan 的**格式**(四节结构),本 skill 定义**内容质量**。
+指导如何写好一份实施规划。改动文件 ≥3 或涉及公开 API 变更时,先写 plan 再实施。
**核心原则:** 写 plan 时多想 10 分钟,实施时少返工 1 小时。
## 何时触发
-Planning Gate 要求输出 plan 时(影响 ≥ 3 文件,或涉及公开 API 变更)。
+改动影响 ≥ 3 个文件,或涉及公开 API 变更时。
## 影响面自查清单
@@ -35,7 +35,7 @@ Planning Gate 要求输出 plan 时(影响 ≥ 3 文件,或涉及公开 API
**拆成多任务:** 变更逻辑独立且可并行 / 单任务描述 > 200 字还说不清。
**合并为单任务:** 接口与其使用者(拆开编译不过) / 同模块内部重构 / TDD 内测试与被测代码。
-拆分后按 `subagent-driven-development` skill 判定是否走 subagent 模式。
+拆分后在当前会话内按任务顺序实施,每个任务完成即验证,不留到最后一起验。
## Rationalizations
@@ -51,13 +51,12 @@ Planning Gate 要求输出 plan 时(影响 ≥ 3 文件,或涉及公开 API
## Red Flags — STOP if you catch yourself thinking these
-- "先改两个文件试试,plan 后面再写" → Planning Gate 触发那一刻就必须先写 plan
+- "先改两个文件试试,plan 后面再写" → 达到门槛那一刻就必须先写 plan
- "影响面我心里有数,不用列全" → 没列出来的文件 = 会返工的文件
- "这个字段变更只涉及 NewSaaS" → 三产品线必须逐一确认,未标注 = 后端出错
## 关联 skill
-- **上游触发:** 控制器判定 Planning Gate 触发
-- **调度 subagent:** 无(控制器直接执行)
-- **完成后交接:** `plan-document-review` → 用户确认 → `subagent-driven-development` 或直接实施
-- **替代路径:** 未触发 Planning Gate → 跳过本 skill,直接实施 + `sdk-code-review` 独立审查
+- **上游触发:** 改动文件 ≥3 或涉及公开 API 变更
+- **完成后交接:** 用户确认 plan → 按任务顺序实施 → `verification-before-completion`
+- **替代路径:** 改动面小于门槛 → 跳过本 skill 直接实施,完成后对照 `docs/sdk-review-checklist.md` 自查
diff --git a/.agents/skills/writing-skills/SKILL.md b/.agents/skills/writing-skills/SKILL.md
index 11f9ec7..a3104f5 100644
--- a/.agents/skills/writing-skills/SKILL.md
+++ b/.agents/skills/writing-skills/SKILL.md
@@ -65,7 +65,7 @@ Edit skill without testing? Same violation.
.md # Only when content >100 lines or is a reusable prompt template
```
-Naming: lowercase with hyphens, verb/gerund preferred: `brainstorming`, `writing-plans`, `subagent-driven-development`.
+Naming: lowercase with hyphens, verb/gerund preferred: `brainstorming`, `writing-plans`, `verification-before-completion`.
## Frontmatter (only two fields)
@@ -103,7 +103,7 @@ When the description was changed to just triggering conditions (no workflow summ
```yaml
# ❌ BAD: Summarizes workflow — Claude may follow this instead of reading skill
-description: Use when executing plans - dispatches subagent per task with code review between tasks
+description: Use when finishing a branch - run verification, then review against the checklist, then commit and tag
# ❌ BAD: Too much process detail
description: Use for TDD - write test first, watch it fail, write minimal code, refactor
@@ -115,7 +115,7 @@ description: 用于异步测试
description: I help you write skills
# ✅ GOOD: Just triggering conditions
-description: Use when executing an implementation plan with independent tasks in the current session
+description: Use when a change affects 3 or more files or alters public API, and an implementation plan is needed
# ✅ GOOD: Temporal trigger + symptoms
description: Use before claiming work is complete, fixed, or ready to review
diff --git a/.claude/agents/code-reviewer.md b/.claude/agents/code-reviewer.md
deleted file mode 100644
index b9529b5..0000000
--- a/.claude/agents/code-reviewer.md
+++ /dev/null
@@ -1,131 +0,0 @@
----
-name: GrowingIO SDK Code Reviewer
-description: |
- GrowingIO HarmonyOS SDK 代码质量审查 subagent。
- 通过 subagent-driven-development 或 sdk-code-review skill 调度,独立审查代码变更的质量、规范和安全性。
- 不负责规格/规划对齐检查(那是 spec-reviewer 的职责)。
-model: sonnet
----
-
-你是一名专注于 GrowingIO HarmonyOS SDK 代码库的高级代码质量审查员。你审查代码的质量、规范合规性和安全性。你不负责检查实现是否匹配规格/规划——那是 spec-reviewer 的职责。你的审查是独立的——你没有来自实现会话的任何先前上下文。
-
-## 审查步骤
-
-收到调度上下文后,按以下顺序执行审查:
-
-1. **查看变更范围**:运行 `git diff --stat BASE_SHA..HEAD_SHA` 确认变更文件列表和规模
-2. **阅读规划文档**:如果提供了 plan 路径,阅读 plan 了解变更背景(但不做规格对齐检查)
-3. **逐文件审查**:运行 `git diff BASE_SHA..HEAD_SHA -- ` 查看每个文件的具体变更
-4. **按维度逐项检查**:对照下方维度逐条评估
-5. **输出审查结果**:按输出格式填写审查报告
-
-## 审查维度
-
-仅当变更明显不涉及某个领域时,才可跳过该维度。
-
-### 1. ArkTS 合规与代码质量
-
-**按照 `growingio-arkts-coding-style` skill 中的规则检查**,重点关注:
-- 语言约束违反(`any`、解构赋值、索引访问、`var`、`#privateField` 等)
-- 格式规范违反(缩进、行宽、导入顺序、命名规范、许可证头等)
-
-### 2. SDK 设计红线
-
-- **初始化前零采集**:`GrowingAnalytics.start()` 调用前无任何采集、存储、网络行为
-- **主线程零阻塞**:所有 IO(RDB 读写、网络请求)在 `TaskPool` 或 `Worker` 中执行
-- **不重复上报**:事件上报成功(2xx/3xx)后从数据库物理删除,失败时保留等待重试;`isUploading` 标志防止并发发送
-- **最小权限**:仅 `ohos.permission.INTERNET` 和 `ohos.permission.GET_NETWORK_INFO`
-- **公开 API 仅通过 `index.ets` 导出**,内部实现不暴露
-
-### 3. 数据协议一致性
-
-- 新增/修改的事件字段命名与 Android/iOS SDK 保持一致
-- 字段类型对齐(string/number/boolean)
-- 产品线差异处理正确(SaaS vs NewSaaS vs CDP)
-- Protobuf schema 和 JSON schema 同步更新(如适用)
-
-### 4. 隐私合规
-
-- 新增采集字段是否需要 `ignoreField` 位掩码支持
-- 是否存在未经用户授权的敏感数据采集
-- `dataCollectionEnabled = false` 时新代码路径是否被正确拦截
-
-### 5. 混淆与打包
-
-- 新增公开 API 符号是否已加入 `obfuscation-rules.txt` 的 keep 规则
-- 新增内部类/方法是否意外暴露在 `index.ets` 中
-- HAR 打包配置(`byteCodeHar: true`)未被破坏
-
-### 6. 工程质量
-
-以下是 `growingio-arkts-coding-style` 未覆盖的、code-reviewer 特有的检查项:
-- 错误处理:外部操作使用 try-catch,不吞异常
-- 无冗余代码、无 TODO/FIXME 遗留
-- 无硬编码魔法值(应提取为常量)
-- 每个文件职责单一、接口清晰
-- 模块可独立理解和测试
-
-### 7. Skill / Agent 架构一致性(条件触发)
-
-**仅当变更文件列表包含 `.agents/` 或 `.claude/` 路径时执行。**
-
-- **Skill frontmatter**:`name` 字段与目录名一致;`description` 以 `Use when`/`Use before`/`Use after` 开头,仅描述触发条件,**不含流程摘要**(违反 = workflow in description → agent skips body)
-- **Skill 类型声明**:正文开头已声明 `Type`(Technique/Pattern/Reference)+ `Discipline`(Rigid/Flexible)两个维度
-- **Rigid skill 完整性**:`Discipline: Rigid` 的 skill 必须包含 Rationalizations 表 + Red Flags 章节,缺失即 Important 问题
-- **交叉引用有效性**:skill 里通过名称引用的其他 skill 确实存在于 `.agents/skills/` 或 `.claude/skills/` 目录
-- **Agent 格式一致**:新增/修改 agent 的 frontmatter(`name`/`description`/`model`)格式与 `.claude/agents/` 下现有 agent 文件保持一致
-- **Settings hooks 无冲突**:`settings.json` 中新增的 hook 不与现有 hook 重复触发同一逻辑(PreToolUse + PostToolUse 执行同一命令 = 冗余),且 hook 的触发时机与其保护意图匹配(PostToolUse 无法阻断已完成的操作)
-
-## 输出格式
-
-审查输出必须遵循以下结构:
-
-```
-## 代码质量审查
-
-**范围**:[简述审查的变更范围]
-**规划文档**:[对应的 plan 文件路径,或"无对应 plan"]
-
-## 问题
-
-### Critical(必须修复,阻塞合并)
-- [问题描述] — `file:line`
-
-### Important(应当修复,合并前处理)
-- [问题描述] — `file:line`
-
-### Suggestion(建议优化,不阻塞)
-- [问题描述] — `file:line`
-
-(无问题时写"无")
-
-## 检查清单
-
-- [ ] ArkTS 严格模式合规
-- [ ] SDK 设计红线无违反
-- [ ] 数据协议与 Android/iOS 一致
-- [ ] 隐私合规无遗漏
-- [ ] obfuscation-rules.txt 已更新(如需要)
-- [ ] 文档已同步更新(如需要)
-- [ ] Skill/Agent 架构一致性(`.agents/` / `.claude/` 变更时)
-
-## 结论
-
-**通过** / **需要修改** / **需要讨论**
-```
-
-## 结论判断标准
-
-| 结论 | 条件 |
-|------|------|
-| **通过** | 无 Critical 和 Important 问题,只有 Suggestion 或完全无问题 |
-| **需要修改** | 存在 Critical 或 Important 问题,需要实现者修复后重新提交审查 |
-| **需要讨论** | 涉及架构决策需要用户判断;发现的问题可能需要修改 plan |
-
-## 审查原则
-
-- **独立判断**:你不知道实现者的意图,只看代码。如果代码有问题,指出问题,不替实现者解释。
-- **具体而非模糊**:每个问题给出精确文件路径和行号,不要写"某处可能有问题"。
-- **Critical 要谨慎**:只有会导致数据丢失、崩溃、隐私泄露、协议不兼容的问题才标 Critical。
-- **肯定做得好的地方**:在摘要里简要提及亮点,但不要堆砌赞美。
-- **不做表演式认同**:不要写"做得好!",直接给出技术结论。
diff --git a/.claude/agents/engineering-harmonyos-sdk-engineer.md b/.claude/agents/engineering-harmonyos-sdk-engineer.md
deleted file mode 100644
index d978409..0000000
--- a/.claude/agents/engineering-harmonyos-sdk-engineer.md
+++ /dev/null
@@ -1,54 +0,0 @@
----
-name: GrowingIO HarmonyOS SDK Engineer
-description: GrowingIO HarmonyOS SDK developer specializing in ArkTS/ArkUI-based data collection, auto-track, event pipeline, privacy compliance, and SDK packaging for the GrowingIO analytics platform on HarmonyOS Next.
-color: blue
-emoji: 📊
-vibe: Builds the GrowingIO analytics SDK that powers data-driven decisions on HarmonyOS devices.
----
-
-# GrowingIO HarmonyOS SDK Engineer
-
-你是 **GrowingIO HarmonyOS SDK Engineer**,负责在 HarmonyOS Next 平台上开发和维护 GrowingIO 数据分析 SDK。
-
----
-
-## 🚪 工作流规则(自动注入)
-
-你的工作流规则(Planning Gate、workflow routing、skill 目录、Red Flags)由 SessionStart hook **自动注入**到每个会话的上下文中,你不需要再显式调用 `Skill` 工具加载 `using-growingio-sdk-skills`——它已经在你的上下文里了。
-
-如果你作为 subagent(code-reviewer、spec-reviewer、implementer 等)被分派了具体任务,忽略被注入的 meta-skill,直接执行被分派的任务即可。
-
----
-
-## 身份
-
-- **Role**: GrowingIO HarmonyOS SDK 的设计者、开发者与维护者
-- **Personality**: 数据精准优先、对 SDK 使用方友好、对隐私合规敬畏、对性能开销斤斤计较
-- **Experience**: 你构建过 GrowingIO Android/iOS SDK 并将其经验迁移到 HarmonyOS,深知跨平台 SDK 设计中数据一致性、采集精度与性能开销之间的权衡
-
-## 领域知识(lazy-load)
-
-SDK 的领域知识分散在几个按需读取的文档里,**不自动注入**,你需要按场景主动读取:
-
-- `docs/sdk-engineering-guide.md` — 产品使命 + 核心职责概要 + 健康指标(索引性质,经 CLAUDE.md 注入)
-- `docs/sdk-critical-rules.md` — **修改核心模块代码前必读**(SDK 设计红线 + ArkTS 开发规范)
-- `docs/sdk-doc-routing.md` — 按场景读取的模块文档索引表(改动哪个模块读哪个 `.md`)
-- `docs/sdk-build-commands.md` — hvigor 构建命令速查
-
-**硬性要求**:动任何 `GrowingAnalytics` 核心模块代码前,**必须**先读 `docs/sdk-critical-rules.md`。
-
----
-
-## 💭 沟通风格(面向开发者 —— 单一事实源)
-
-- **数据精准第一**:"这里的 `sessionId` 需要在 App 回到前台超过 30 秒(`sessionInterval` 默认值)后重新生成,否则服务端的访问次数指标会偏低"
-- **对接入方友好**:"初始化推荐用 `new GrowingConfig().NewSaaS()`/`CDP()`/`SaaS()` 实例方法,三种模式的字段要求不同,工厂方法帮接入方做了参数校验;调试工具 `GrowingToolsKit` 是插件,通过 `config.plugins` 注入,不要单独 start"
-- **性能意识**:"数据库写入必须异步,把它丢到 TaskPool 里,别在 onClick 回调里直接写 RDB"
-- **隐私合规敬畏**:"`setDataCollectionEnabled(false)` 必须在用户拒绝隐私协议后立即调用,SDK 收到 false 后需同时停止上报调度"
-- **多端一致性**:"这个字段在 Android SDK 里叫 `appVersion`,HarmonyOS 这边也必须保持一致,不然数据仓库会出现重复字段"
-
----
-
-**技术决策优先级**(单一事实源):在面对具体技术决策时,以「数据准确性 > 接入成本 > 性能开销 > 包体积」的优先级进行权衡。
-
-**工作流程**:由 `using-growingio-sdk-skills` meta-skill 负责路由。persona 不再嵌入流程描述——流程活在 skill 里。
diff --git a/.claude/agents/spec-reviewer.md b/.claude/agents/spec-reviewer.md
deleted file mode 100644
index 865f354..0000000
--- a/.claude/agents/spec-reviewer.md
+++ /dev/null
@@ -1,104 +0,0 @@
----
-name: GrowingIO SDK Spec Reviewer
-description: |
- GrowingIO HarmonyOS SDK 规格合规审查 subagent。
- 通过 subagent-driven-development skill 调度,独立验证实现是否匹配规格/规划,不检查代码质量。
-model: sonnet
----
-
-你是一名专注于 GrowingIO HarmonyOS SDK 代码库的规格合规审查员。你的唯一职责是验证**实现是否匹配规格**——不多、不少、不偏。你不评判代码质量、风格或架构,那是 code-reviewer 的工作。
-
-## 审查步骤
-
-收到调度上下文后,按以下顺序执行:
-
-1. **阅读规格**:完整阅读提供的规划文档 / 任务描述,理解预期实现内容
-2. **查看变更范围**:运行 `git diff --stat BASE_SHA..HEAD_SHA` 确认变更文件列表和规模
-3. **逐文件审查**:运行 `git diff BASE_SHA..HEAD_SHA -- ` 查看每个文件的具体变更
-4. **三维度对比**:按下方维度逐条核实
-
-## 关键原则:不信任报告
-
-实现者的报告可能不完整、不准确或过于乐观。你**必须独立验证一切**。
-
-**不要:**
-- 相信实现者声称完成了什么
-- 接受实现者对需求的解读
-- 因为报告说"已完成"就跳过检查
-
-**要做:**
-- 读实际代码,不读报告
-- 逐条对照规格验证
-- 查找实现者没提到的遗漏或多余部分
-
-## 审查维度
-
-### 1. 缺失需求
-
-- 规格中要求的功能是否全部实现?
-- 规划中列出的文件是否都已被修改?
-- 规划中的公开 API 签名是否被准确实现?
-- 规划中的数据协议变更是否被准确反映?
-- 规划中要求的文档更新是否已完成?
-
-### 2. 多余工作
-
-- 是否有规格未要求的额外功能?
-- 是否有规划外的文件被改动?
-- 是否过度工程化(YAGNI)?
-
-### 3. 理解偏差
-
-- 实现者是否曲解了需求?
-- 是否解决了错误的问题?
-- 功能方向对但实现方式与规格不符?
-
-## 输出格式
-
-```
-## 规格合规审查
-
-**规格来源**:[plan 文件路径 / 任务描述]
-**变更范围**:[简述审查的变更范围]
-
-## 核实结果
-
-### 缺失需求
-- [具体描述] — `file:line`
-(无缺失时写"无")
-
-### 多余工作
-- [具体描述] — `file:line`
-(无多余时写"无")
-
-### 理解偏差
-- [具体描述] — `file:line`
-(无偏差时写"无")
-
-## 规格对照清单
-
-- [ ] 规划中的文件全部已修改
-- [ ] 无规划外的额外文件被改动(或有合理理由)
-- [ ] 公开 API 签名与规划一致
-- [ ] 数据协议变更与规划一致
-- [ ] 规划要求的文档已更新
-
-## 结论
-
-**合规** / **不合规** / **需要讨论**
-```
-
-## 结论判断标准
-
-| 结论 | 条件 |
-|------|------|
-| **合规** | 无缺失、无多余、无偏差,或偏差极小且合理 |
-| **不合规** | 存在缺失需求、多余工作或理解偏差,需要实现者修复 |
-| **需要讨论** | 发现规格/规划本身有缺陷或歧义;实现与规格产生合理偏离但需要确认 |
-
-## 审查原则
-
-- **只看规格对齐**:不评价代码风格、性能、架构。那不是你的工作。
-- **具体而非模糊**:每个问题给出精确文件路径和行号。
-- **发现规格问题要说出来**:如果实现过程中暴露了规格的缺陷(遗漏场景、接口设计不合理),在报告中明确建议更新规格。
-- **不做表演式认同**:直接给出技术结论。
diff --git a/.claude/hooks/session-start.sh b/.claude/hooks/session-start.sh
deleted file mode 100755
index 8dd1c89..0000000
--- a/.claude/hooks/session-start.sh
+++ /dev/null
@@ -1,68 +0,0 @@
-#!/usr/bin/env bash
-# SessionStart hook for GrowingIO HarmonyOS SDK project.
-#
-# Injects the full content of the `using-growingio-sdk-skills` meta-skill
-# into the session via hookSpecificOutput.additionalContext — so that the
-# main controller agent always sees the meta-skill regardless of persona
-# state, /clear, or auto-compact.
-#
-# Aligned with superpowers/hooks/session-start design.
-# Platform: macOS (bash 4+).
-
-set -euo pipefail
-
-# Resolve project root. Claude Code sets CLAUDE_PROJECT_DIR; fall back to
-# walking up from this script for standalone testing.
-if [ -n "${CLAUDE_PROJECT_DIR:-}" ]; then
- PROJECT_ROOT="$CLAUDE_PROJECT_DIR"
-else
- SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
- PROJECT_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
-fi
-
-META_SKILL_PATH="${PROJECT_ROOT}/.agents/skills/using-growingio-sdk-skills/SKILL.md"
-
-if [ ! -f "$META_SKILL_PATH" ]; then
- # Fail loud via stderr so the problem is visible, but emit an empty-ish
- # JSON so the harness does not get malformed output.
- echo "session-start hook: meta-skill file missing at $META_SKILL_PATH" >&2
- printf '{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":""}}\n'
- exit 0
-fi
-
-meta_skill_content=$(cat "$META_SKILL_PATH")
-
-# Escape a string for embedding as a JSON string value.
-# Order matters: backslashes first, then quotes, then control characters.
-escape_for_json() {
- local s="$1"
- s="${s//\\/\\\\}"
- s="${s//\"/\\\"}"
- s="${s//$'\n'/\\n}"
- s="${s//$'\r'/\\r}"
- s="${s//$'\t'/\\t}"
- printf '%s' "$s"
-}
-
-wrapper_header='
-You are operating in the GrowingIO HarmonyOS SDK project.
-
-Below is the FULL content of the `using-growingio-sdk-skills` meta-skill,
-injected automatically. You do NOT need to call the Skill tool to load it
-again — it is already in your context. Follow its rules exactly.
-
-If you were dispatched as a subagent (code-reviewer, spec-reviewer,
-implementer, etc.), honor the `` marker inside the skill
-and ignore the meta-skill routing; just execute your assigned task.
-
---- BEGIN using-growingio-sdk-skills SKILL.md ---
-'
-
-wrapper_footer='
---- END using-growingio-sdk-skills SKILL.md ---
-'
-
-combined="${wrapper_header}${meta_skill_content}${wrapper_footer}"
-escaped=$(escape_for_json "$combined")
-
-printf '{"hookSpecificOutput":{"hookEventName":"SessionStart","additionalContext":"%s"}}\n' "$escaped"
diff --git a/.claude/settings.json b/.claude/settings.json
index 63cf4a4..7b49e1c 100644
--- a/.claude/settings.json
+++ b/.claude/settings.json
@@ -1,18 +1,5 @@
{
- "agent": "GrowingIO HarmonyOS SDK Engineer",
"hooks": {
- "SessionStart": [
- {
- "matcher": "startup|clear|compact",
- "hooks": [
- {
- "type": "command",
- "command": "bash $CLAUDE_PROJECT_DIR/.claude/hooks/session-start.sh",
- "timeout": 10
- }
- ]
- }
- ],
"PreToolUse": [
{
"matcher": "Bash",
diff --git a/.gitignore b/.gitignore
index fca20d8..33dd8cd 100644
--- a/.gitignore
+++ b/.gitignore
@@ -11,4 +11,5 @@
**/.test
oh-package-lock.json5
/.appanalyzer
-/build-profile.json5
\ No newline at end of file
+/build-profile.json5
+.DS_Store
diff --git a/AGENTS.md b/AGENTS.md
index 310441a..a74543a 100644
--- a/AGENTS.md
+++ b/AGENTS.md
@@ -20,3 +20,4 @@
> - `docs/sdk-critical-rules.md` — 修改核心模块 **必读**(SDK 设计红线 + ArkTS 开发规范)
> - `docs/sdk-doc-routing.md` — 按场景读取的模块文档索引表
> - `docs/sdk-build-commands.md` — hvigor 构建命令速查
+> - `docs/sdk-review-checklist.md` — 提 PR 前 **必读**(代码质量 + 规格对齐自查)
diff --git a/docs/agents-skills-flow.md b/docs/agents-skills-flow.md
deleted file mode 100644
index 832a196..0000000
--- a/docs/agents-skills-flow.md
+++ /dev/null
@@ -1,326 +0,0 @@
-# Agents & Skills 流转结构图
-
-> 基于当前 `.claude/agents/` 和 `.agents/skills/` 的实际内容分析。最后更新:2026-04-16。
-
-## 1. 整体架构概览
-
-```
-┌─────────────────────────────────────────────────────────────────────┐
-│ SESSION START │
-│ .claude/hooks/session-start.sh │
-│ → 注入 using-growingio-sdk-skills meta-skill 全文到会话上下文 │
-└──────────────────────────────┬──────────────────────────────────────┘
- │
- ▼
-┌─────────────────────────────────────────────────────────────────────┐
-│ MAIN CONTROLLER (主控制器 Agent) │
-│ Persona: .claude/agents/engineering-harmonyos-sdk-engineer.md │
-│ │
-│ 职责:理解用户意图 → 路由到正确 skill → 调度 subagent → 协调全流程 │
-│ 规则:不直接写代码(大型任务),通过 subagent 隔离上下文 │
-└──────────────────────────────┬──────────────────────────────────────┘
- │
- ▼
- ┌─────────────────────────┐
- │ using-growingio-sdk-skills │
- │ (Meta-Skill 入口门) │
- │ • Planning Gate (硬门) │
- │ • Workflow Routing │
- │ • Skill Checklist→Task │
- └─────────────┬─────────────┘
- │
- Workflow Routing
- (见下图)
-```
-
-## 2. 主流程(Workflow Routing)
-
-```mermaid
-flowchart TD
- START([用户请求]) --> META[using-growingio-sdk-skills
入口门 — 已由 Hook 注入]
-
- META --> INTENT{理解意图}
-
- INTENT -->|需求模糊/无规格| BS[🧠 brainstorming
一次一问收敛规格]
- INTENT -->|需求明确| DOCS
-
- BS --> SPEC_FILE[产出 docs/specs/*.md]
- SPEC_FILE --> USER_APPROVE_SPEC{用户审阅规格}
- USER_APPROVE_SPEC -->|拒绝/修改| BS
- USER_APPROVE_SPEC -->|确认| DOCS
-
- DOCS[读领域文档
sdk-doc-routing.md
sdk-critical-rules.md]
- DOCS --> GATE{Planning Gate
≥3 files OR 公开 API?}
-
- GATE -->|YES| WP[📋 writing-plans
产出 docs/plans/*.md]
- GATE -->|NO| IMPL_DIRECT[直接实施
单一职责 edits]
-
- WP --> PDR[📝 plan-document-review
dispatch general-purpose subagent
审查 plan 质量]
-
- PDR --> PDR_RESULT{plan 审查结论}
- PDR_RESULT -->|需要修改| WP
- PDR_RESULT -->|2轮仍有 Critical| ESCALATE[升级给用户讨论]
- PDR_RESULT -->|通过| USER_CONFIRM{用户确认 plan}
-
- USER_CONFIRM -->|拒绝/修改| WP
- USER_CONFIRM -->|确认| SDD_GATE{任务 ≥3 且大部分独立?}
-
- SDD_GATE -->|YES| SDD[🤖 subagent-driven-development
控制器不写代码]
- SDD_GATE -->|NO| IMPL_PLAN[直接实施
按 plan 逐步 edit]
-
- IMPL_DIRECT --> VERIFY
- IMPL_PLAN --> VERIFY
- SDD --> VERIFY
-
- VERIFY[✅ verification-before-completion
跑真实构建/测试命令
读完整输出]
-
- VERIFY --> VERIFY_RESULT{验证结论}
- VERIFY_RESULT -->|失败| DEBUG[🔧 systematic-debugging
四阶段方法]
- DEBUG --> VERIFY
- VERIFY_RESULT -->|通过| REVIEW_GATE{审查模式选择}
-
- REVIEW_GATE -->|有 plan| REVIEW_A[sdk-code-review 模式 A
spec-reviewer → code-reviewer]
- REVIEW_GATE -->|无 plan + ≤5 files| REVIEW_B[sdk-code-review 模式 B
仅 code-reviewer]
- REVIEW_GATE -->|琐碎改动| FINISH
-
- REVIEW_A --> REVIEW_RESULT
- REVIEW_B --> REVIEW_RESULT
-
- REVIEW_RESULT{审查结论}
- REVIEW_RESULT -->|通过| FINISH
- REVIEW_RESULT -->|需修改| RCR[receiving-code-review
STOP-ASK → 修复 → 重派 reviewer]
- RCR --> VERIFY
-
- FINISH[🏁 finishing-a-development-branch
五步收尾]
- FINISH --> IS_RELEASE{发版分支?
version 字段变更?}
-
- IS_RELEASE -->|YES| RELEASE_SIDE
- IS_RELEASE -->|NO| BRANCH_END
-
- subgraph RELEASE_SIDE [Release 侧流]
- JIRA[jira-ticket
创建发版 Jira] --> OHPM[ohpm-publish
发布 HAR 到 OHPM]
- OHPM --> TAG[git tag
按 git-conventions 命名]
- end
-
- BRANCH_END[git-conventions 规范
commit / PR / 分支名
→ Done ✅]
- RELEASE_SIDE --> BRANCH_END
-
- style META fill:#e1f5fe,stroke:#0277bd
- style GATE fill:#fff3e0,stroke:#ef6c00
- style SDD fill:#f3e5f5,stroke:#7b1fa2
- style VERIFY fill:#e8f5e9,stroke:#2e7d32
- style DEBUG fill:#fce4ec,stroke:#c62828
- style FINISH fill:#e0f2f1,stroke:#00695c
- style RELEASE_SIDE fill:#fff8e1,stroke:#f9a825
-```
-
-## 3. Subagent-Driven Development 内部流程
-
-```mermaid
-flowchart TD
- SDD_START([SDD 启动
读取 plan, 提取任务]) --> TASK_LOOP
-
- subgraph TASK_LOOP [Per Task 循环]
- BASE[记录 BASE_SHA] --> DISPATCH_IMPL[Dispatch 实现者 subagent
haiku/sonnet/opus 按复杂度选]
-
- DISPATCH_IMPL --> IMPL_STATUS{实现者状态}
-
- IMPL_STATUS -->|NEEDS_CONTEXT| ANSWER[补充上下文] --> DISPATCH_IMPL
- IMPL_STATUS -->|BLOCKED| BLOCKED_EVAL{评估阻塞原因}
- BLOCKED_EVAL -->|上下文不足| ANSWER
- BLOCKED_EVAL -->|需更强模型| UPGRADE[升级模型重 dispatch]
- BLOCKED_EVAL -->|任务太大| SPLIT[拆子任务]
- BLOCKED_EVAL -->|plan 有问题| USER_HELP[升级给用户]
-
- IMPL_STATUS -->|DONE / DONE_WITH_CONCERNS| HEAD[记录 HEAD_SHA]
-
- HEAD --> SPEC_REVIEW[Dispatch spec-reviewer subagent
.claude/agents/spec-reviewer.md]
- SPEC_REVIEW --> SPEC_OK{规格合规?}
- SPEC_OK -->|NO| FIX_SPEC[实现者修复] --> SPEC_REVIEW
- SPEC_OK -->|YES| CODE_REVIEW[Dispatch code-reviewer subagent
.claude/agents/code-reviewer.md]
-
- CODE_REVIEW --> CODE_OK{质量通过?}
- CODE_OK -->|NO| FIX_CODE[实现者修复] --> CODE_REVIEW
- CODE_OK -->|YES| TASK_DONE[标记任务完成 ✅]
- end
-
- TASK_DONE --> MORE{更多任务?}
- MORE -->|YES| TASK_LOOP
- MORE -->|NO| GLOBAL_REVIEW[全局 sdk-code-review
spec-reviewer + code-reviewer]
-
- GLOBAL_REVIEW --> GLOBAL_OK{全局审查通过?}
- GLOBAL_OK -->|NO| RCR[receiving-code-review
修复 → 重审]
- RCR --> GLOBAL_REVIEW
- GLOBAL_OK -->|YES| VBC[verification-before-completion]
-
- VBC --> FADB[finishing-a-development-branch]
-
- style TASK_LOOP fill:#f5f5f5,stroke:#9e9e9e
- style SPEC_REVIEW fill:#e8eaf6,stroke:#283593
- style CODE_REVIEW fill:#e8eaf6,stroke:#283593
-```
-
-## 4. SDK Code Review 详细流程
-
-```mermaid
-flowchart TD
- TRIGGER([审查触发]) --> HAS_PLAN{有 plan 文件?}
-
- HAS_PLAN -->|YES| MODE_A[模式 A: 完整审查]
- HAS_PLAN -->|NO| SMALL{≤5 files 且无公开 API?}
- SMALL -->|YES| MODE_B[模式 B: 独立审查]
- SMALL -->|NO| BACK_PLAN[回退补 plan
→ writing-plans]
-
- MODE_A --> SPEC_R[Phase 1: spec-reviewer subagent
规格合规审查]
- SPEC_R --> SPEC_PASS{合规?}
- SPEC_PASS -->|不合规| FIX1[修复 → 重新 dispatch] --> SPEC_R
- SPEC_PASS -->|合规| CODE_R
-
- MODE_B --> CODE_R[Phase 2: code-reviewer subagent
代码质量审查]
-
- CODE_R --> CODE_PASS{结论}
- CODE_PASS -->|通过| DONE([审查通过 →
verification-before-completion])
- CODE_PASS -->|需要修改| FIX2[receiving-code-review
逐条修复 → 重新 dispatch]
- FIX2 --> CODE_R
- CODE_PASS -->|需要讨论| DISCUSS[与用户讨论]
-
- style MODE_A fill:#e8eaf6,stroke:#283593
- style MODE_B fill:#e8eaf6,stroke:#283593
- style SPEC_R fill:#fce4ec,stroke:#880e4f
- style CODE_R fill:#e1f5fe,stroke:#0277bd
-```
-
-## 5. 旁路 Skills(实施期可随时插入)
-
-```
-实施过程中的任意时刻:
- │
- ├── 改核心模块(事件管道/存储/网络)
- │ → test-driven-development (Red-Green-Refactor)
- │
- ├── 写/审 .ets / .ts 文件
- │ → growingio-arkts-coding-style (ArkTS 编码规范)
- │
- ├── 任何 build/test/runtime 失败
- │ → systematic-debugging (四阶段方法)
- │ → 修完后回到失败前的上一步
- │
- └── 修改 .agents/skills/*/SKILL.md
- → writing-skills (Meta 侧流, 与主流程正交)
-```
-
-## 6. 组件清单
-
-### Hooks
-
-| Hook | 触发时机 | 作用 |
-|------|---------|------|
-| `session-start.sh` | 每次会话开始 | 注入 meta-skill 全文到上下文 |
-
-### Agents
-
-| Agent | 文件 | 角色 | 调度者 |
-|-------|------|------|--------|
-| **Main Controller** | `engineering-harmonyos-sdk-engineer.md` | 主控制器,理解意图、路由 skill、调度 subagent | — (入口) |
-| **Code Reviewer** | `code-reviewer.md` | 代码质量、规范、安全性审查 | `sdk-code-review` / SDD |
-| **Spec Reviewer** | `spec-reviewer.md` | 规格合规审查(实现 vs 规划) | `sdk-code-review` / SDD |
-| **Plan Reviewer** | _(inline prompt in `plan-document-review`)_ | 审查 plan 文档完整性 | `plan-document-review` |
-| **Implementer** | _(inline prompt in SDD)_ | 执行单个 plan 任务 | SDD |
-
-### Skills
-
-| 类别 | Skill | Type | Discipline | 触发条件 |
-|------|-------|------|------------|---------|
-| **入口** | `using-growingio-sdk-skills` | Technique | Rigid | 每次交互(Hook 自动注入) |
-| **探索** | `brainstorming` | Pattern | Flexible | 需求模糊/范围不清 |
-| **规划** | `writing-plans` | Technique | Rigid | Planning Gate 触发 |
-| **规划审查** | `plan-document-review` | Technique | Rigid | plan 产出后 |
-| **实施调度** | `subagent-driven-development` | Technique | Rigid | ≥3 独立任务 |
-| **验证** | `verification-before-completion` | Technique | Rigid | 声明完成前 |
-| **代码审查** | `sdk-code-review` | Technique | Rigid | 实施完成后 |
-| **反馈处理** | `receiving-code-review` | Technique | Rigid | 收到审查反馈 |
-| **收尾** | `finishing-a-development-branch` | Technique | Rigid | 验证+审查通过后 |
-| **调试** | `systematic-debugging` | Technique | Rigid | 任何失败 |
-| **TDD** | `test-driven-development` | Technique | Rigid | 核心路径实现 |
-| **编码规范** | `growingio-arkts-coding-style` | Reference | Flexible | 写/审 .ets/.ts |
-| **Git 规范** | `git-conventions` | Reference | Flexible | commit/PR/branch/tag |
-| **发版 Jira** | `jira-ticket` | Reference | Flexible | 发版分支 |
-| **OHPM 发布** | `ohpm-publish` | Technique | Rigid | 发版分支 |
-| **Skill 编写** | `writing-skills` | Technique | Rigid | 修改 SKILL.md |
-
-### Skill Type 说明
-
-两个正交维度(定义见 `writing-skills`):
-
-**本质分类(这个 skill 是什么):**
-
-| Type | 含义 | 示例 |
-|------|------|------|
-| **Technique** | 具体方法,有步骤可循 | `test-driven-development`, `systematic-debugging` |
-| **Pattern** | 思维模型,指导如何思考 | `brainstorming` |
-| **Reference** | 查询式,结构化条目 | `git-conventions`, `growingio-arkts-coding-style` |
-
-**执行纪律标签(这个 skill 怎么执行):**
-
-| Discipline | 含义 | 要求 |
-|---|---|---|
-| **Rigid** | 必须严格遵守,不得适配 | 必须带 Rationalizations 表 + Red Flags |
-| **Flexible** | 原则可按场景取舍 | 不需 Rationalizations |
-
-## 7. 信息流向总结
-
-```
-Hook 注入
- │
- ▼
-Meta-Skill (入口门 + 路由)
- │
- ├─→ 探索阶段: brainstorming → specs/
- │
- ├─→ 规划阶段: writing-plans → plan-document-review → 用户确认
- │
- ├─→ 实施阶段: SDD (subagent 隔离) 或 直接实施
- │ │
- │ ├── 旁路: TDD / coding-style / systematic-debugging
- │ │
- │ └── Subagents: implementer → spec-reviewer → code-reviewer
- │
- ├─→ 验证阶段: verification-before-completion ←→ systematic-debugging
- │
- ├─→ 审查阶段: sdk-code-review (spec-reviewer + code-reviewer)
- │ │
- │ └── receiving-code-review (反馈处理 loop-back)
- │
- └─→ 收尾阶段: finishing-a-development-branch
- │
- ├── 普通分支: git-conventions → Done
- └── 发版分支: jira-ticket → ohpm-publish → git tag → Done
-```
-
-## 8. Meta-Skill 边界:主控制器 vs Subagent
-
-```
-┌────────────────────────────────────────────────────────────┐
-│ Main Controller(受 meta-skill 约束) │
-│ │
-│ ✅ Planning Gate ✅ Workflow Routing ✅ TodoWrite │
-│ │
-│ 职责:理解意图 → 选 skill → 调度 subagent → 协调全流程 │
-│ 禁止:大型任务中直接写代码(上下文污染) │
-└────────────────────────┬───────────────────────────────────┘
- │ dispatch
- ▼
-┌────────────────────────────────────────────────────────────┐
-│ Subagents(跳过 meta-skill,见 ) │
-│ │
-│ ❌ Planning Gate ❌ Workflow Routing ❌ TodoWrite │
-│ ✅ 域 skill(按需): │
-│ growingio-arkts-coding-style / test-driven-development │
-│ systematic-debugging / verification-before-completion │
-│ │
-│ 包括:implementer / code-reviewer / spec-reviewer / │
-│ plan-reviewer / 任何 Agent() 派出的窄任务 subagent │
-└────────────────────────────────────────────────────────────┘
-```
-
-**判定依据:** prompt 以 "你是…" / "You are…" + 具体角色描述开头 = subagent。接收用户原始消息 = 主控制器。
diff --git a/docs/sdk-engineering-guide.md b/docs/sdk-engineering-guide.md
index 380febb..da83ad2 100644
--- a/docs/sdk-engineering-guide.md
+++ b/docs/sdk-engineering-guide.md
@@ -23,6 +23,10 @@
**hvigor 构建命令 → [`docs/sdk-build-commands.md`](./sdk-build-commands.md)**
+## ✅ 合并前自查
+
+**提 PR 前 → 必读 [`docs/sdk-review-checklist.md`](./sdk-review-checklist.md)**(含开发流程图)
+
---
## 🎯 SDK 健康指标
diff --git a/docs/sdk-review-checklist.md b/docs/sdk-review-checklist.md
new file mode 100644
index 0000000..d0ed4f2
--- /dev/null
+++ b/docs/sdk-review-checklist.md
@@ -0,0 +1,127 @@
+# SDK 代码审查清单
+
+变更完成后、合并前的自查清单。原先由 `code-reviewer` / `spec-reviewer` 两个 subagent 承载,现已沉淀为文档,由开发者(或 AI 助手)在同一会话内自查。
+
+红线定义见 [`sdk-critical-rules.md`](./sdk-critical-rules.md),本文档只列**审查动作**。
+
+## 本清单在开发流程中的位置
+
+本项目不使用 agent 编排层——没有 persona agent、没有 reviewer subagent、没有 SessionStart 注入。流程由规范文档承载,skill 靠自身 `description` 被动触发。
+
+```
+需求
+ │
+ ├─ 模糊 / 范围不清 → brainstorming(一次一问,收敛成 docs/specs/ 规格)
+ │
+ ▼
+读相关文档(docs/sdk-doc-routing.md 按场景路由)
+ │
+ ▼
+影响面判定:改动 ≥3 文件 或 涉及公开 API?
+ ├─ 是 → writing-plans(落地 docs/plans/YYYY-MM-DD-*.md,用户确认后实施)
+ └─ 否 → 直接实施
+ │
+ ▼
+实施(改核心模块走 test-driven-development)
+ │
+ ▼
+verification-before-completion(跑构建 + 测试,不靠"应该没问题")
+ │
+ ▼
+◀── 本清单:对照下方两部分自查 ──▶
+ │
+ ▼
+finishing-a-development-branch(commit / PR / tag / 分支清理)
+```
+
+## 审查步骤
+
+1. `git diff --stat BASE..HEAD` 确认变更文件列表和规模
+2. 有对应 plan(`docs/plans/`)则先读 plan,理解变更背景与预期范围
+3. `git diff BASE..HEAD -- ` 逐文件看具体变更
+4. 对照下方两部分逐条核实
+
+---
+
+## Part 1:代码质量
+
+### 1. ArkTS 合规
+
+按 `growingio-arkts-coding-style` skill 的规则检查,重点:
+
+- 语言约束:`any`、解构赋值、索引访问、`var`、`#privateField`
+- 格式规范:缩进、行宽、导入顺序、命名规范、许可证头
+
+### 2. SDK 设计红线
+
+逐条核对 [`sdk-critical-rules.md`](./sdk-critical-rules.md):初始化前零采集、主线程零阻塞、不重复上报、最小权限、公开 API 仅经 `index.ets` 导出。
+
+### 3. 数据协议一致性
+
+- 新增/修改的事件字段命名与 Android/iOS SDK 保持一致
+- 字段类型对齐(string / number / boolean)
+- 产品线差异处理正确(SaaS vs NewSaaS vs CDP)
+- Protobuf schema 与 JSON schema 同步更新(如适用)
+
+### 4. 隐私合规
+
+- 新增采集字段是否需要 `ignoreField` 位掩码支持
+- 是否存在未经用户授权的敏感数据采集
+- `dataCollectionEnabled = false` 时新代码路径是否被正确拦截
+
+### 5. 混淆与打包
+
+- 新增公开 API 符号已加入 `obfuscation-rules.txt` 的 keep 规则
+- 新增内部类/方法未意外暴露在 `index.ets` 中
+- HAR 打包配置(`byteCodeHar: true`)未被破坏
+
+> `git push` 前有 PreToolUse hook 跑 `scripts/check_obfuscation_rules.py` 做自动校验,但不要依赖它兜底。
+
+### 6. 工程质量
+
+- 错误处理:外部操作使用 try-catch,不吞异常
+- 无冗余代码、无 TODO/FIXME 遗留
+- 无硬编码魔法值(应提取为常量)
+- 每个文件职责单一、接口清晰,模块可独立理解和测试
+
+---
+
+## Part 2:规格对齐
+
+**前提:不信任自己的完成报告。** 读实际代码,不读报告;因为"我记得写了"就跳过检查,正是漏项的来源。
+
+### 1. 缺失需求
+
+- 规格要求的功能是否全部实现?
+- 规划中列出的文件是否都已被修改?
+- 公开 API 签名、数据协议变更是否被准确实现?
+- 规划要求的文档更新是否已完成?
+
+### 2. 多余工作
+
+- 是否有规格未要求的额外功能?规划外的文件被改动?
+- 是否过度工程化(YAGNI)?
+
+### 3. 理解偏差
+
+- 是否曲解了需求、解决了错误的问题?
+- 功能方向对但实现方式与规格不符?
+
+---
+
+## 问题分级
+
+| 级别 | 判定标准 | 处理 |
+|------|---------|------|
+| **Critical** | 会导致数据丢失、崩溃、隐私泄露、协议不兼容 | 必须修复,阻塞合并 |
+| **Important** | 违反规范或红线,但不直接造成上述后果 | 合并前处理 |
+| **Suggestion** | 可优化项 | 不阻塞 |
+
+存在 Critical 或 Important 即为「需要修改」;涉及架构决策或暴露了规格本身的缺陷,则为「需要讨论」——后者应同时提出修改 plan 的建议。
+
+## 审查原则
+
+- **只看代码,不替自己解释意图**:代码有问题就是有问题
+- **具体而非模糊**:每个问题给出精确 `file:line`,不写"某处可能有问题"
+- **Critical 要谨慎**:够不上上表标准的不要升级
+- **不做表演式认同**:直接给技术结论,不堆砌赞美