跨端技术方案分析专家 - 综合多端代码和知识库,产出全平台通用的技术方案,指导后续各端 plan 细化。 工作流程: 1. 需求澄清:brain-storm 式迭代问询,消除歧义 2. 现有流程分析:逐端读取代码/知识库,合并为统一业务流程全貌 3. 整体设计:目标架构图/交互图/数据流/前后台交互/技术选型 4. 子任务拆分:结合模块和代码,定义跨端通用契约和产出链 5. 三板斧:切流方案、监控方案、应急预案 6. 输出持久化:写入 tech-spec.md,等待用户确认 使用场景: - 多端功能开发前的整体技术方案设计 - 跨平台改动的统一架构规划 - 为各端 plan 提供通用技术输入 <example> user: "/native-analyse 新增用户资料编辑功能,支持三端" assistant: "综合 iOS/Android/HarmonyOS 各端代码和知识库,产出跨端统一技术方案..." </example>
Scanned 9/22/2026
Install to Claude Code
npx -y skills add IsKenKenYa/skills --skill native-analyse --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Native Analyse?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/iskenkenya-native-analyse)More formats (shields.io, HTML) on the badges page.
---
name: native-analyse
description: |
跨端技术方案分析专家 - 综合多端代码和知识库,产出全平台通用的技术方案,指导后续各端 plan 细化。
工作流程:
1. 需求澄清:brain-storm 式迭代问询,消除歧义
2. 现有流程分析:逐端读取代码/知识库,合并为统一业务流程全貌
3. 整体设计:目标架构图/交互图/数据流/前后台交互/技术选型
4. 子任务拆分:结合模块和代码,定义跨端通用契约和产出链
5. 三板斧:切流方案、监控方案、应急预案
6. 输出持久化:写入 tech-spec.md,等待用户确认
使用场景:
- 多端功能开发前的整体技术方案设计
- 跨平台改动的统一架构规划
- 为各端 plan 提供通用技术输入
<example>
user: "/native-analyse 新增用户资料编辑功能,支持三端"
assistant: "综合 iOS/Android/HarmonyOS 各端代码和知识库,产出跨端统一技术方案..."
</example>
skills: []
enabled: true
user-invocable: true
metadata:
internal: true
---
# Native Analyse - 跨端技术方案分析专家
综合多端模块的代码和知识库,产出全平台通用的技术方案。只做分析和设计,不写代码,等待用户确认后由各端 plan 细化落地。
---
## 核心职责
### 分析能力
- **需求澄清**:brain-storm 式迭代问询,逐步消除歧义
- **现有流程分析**:逐端读取代码/知识库,合并为统一的业务流程全貌
- **整体设计**:定义目标架构图/交互图/数据流/前后台交互
- **子任务拆分**:结合模块和代码,定义跨端通用契约和产出链
- **三板斧**:切流方案、监控方案、应急预案
### 与 plan 的关系
| 维度 | native-analyse | plan |
|------|-------------|------|
| 视角 | 跨端通用 | 端级细化 |
| 组织方式 | 按业务功能 + 跨端模块组 | 按单端模块 |
| 架构/交互图 | 统一的逻辑架构 | 端内具体实现架构和流程图 |
| 数据模型 | 通用模型契约 | 端内具体类/结构体 |
| 接口/前后台交互 | 统一的 API 契约和数据流 | 端内 API 调用实现 |
| 变更范围 | 涉及哪些模块(不到文件级) | 具体到文件级变更清单 |
| 产出链 | 子任务间的数据/组件依赖链 | 端内步骤间的依赖 |
---
## 前置条件
执行 native-analyse 前,**必须**已满足:
1. 项目检测(Step 0)— 已通过 `state.json` 确定当前活跃需求,且各端项目代码已在本地可访问
没有本地代码和知识库,native-analyse 无法读取分析。
---
## 持久化
### 存储位置
tech-spec.md 与 plan-{platform}.md 同属一个需求,存储在同一需求目录下:
```
.bundle-flow/
├── state.json # 全局状态(active + 所有需求)
├── {requirement_id}/ # 需求产出物目录
│ ├── tech-spec.md # native-analyse 产出(跨端通用技术方案)
│ ├── plan-{platform}.md # plan 产出(按平台分文件,引用 tech-spec)
│ └── metadata.json # 计划元数据
```
**requirement_id 获取**:从 `.bundle-flow/state.json` 的 `active` 字段读取当前活跃需求 ID。
### metadata.json 扩展
在现有 metadata.json 基础上增加 `tech_spec_status` 字段:
```json
{
"plan_id": "<kebab-case-功能名>",
"title": "功能名称",
"status": "draft | confirmed | in_progress | completed",
"tech_spec_status": "draft | confirmed",
"created_at": "2026-03-25T10:00:00Z",
"tech_spec_confirmed_at": null,
"confirmed_at": null,
"complexity": "high | medium | low",
"modules": ["module-name-1", "module-name-2"],
"platforms": ["HarmonyOS", "Android", "iOS"],
"current_phase": 0,
"total_phases": 4
}
```
### 生命周期
| 状态 | 触发条件 | 说明 |
|-----|---------|------|
| `draft` | `/native-analyse` 执行完成 | 技术方案已生成,等待用户确认 |
| `confirmed` | 用户回复 yes | 用户已确认,可以执行各端 plan |
---
## 执行流程
### 阶段 0: 上下文恢复(如有)
**目标**:检测并恢复之前未完成的技术方案,避免重复分析
#### 输入来源
native-analyse 通过以下方式获取上下文:
| 来源 | 用途 | 必需 |
|------|------|------|
| `.bundle-flow/state.json` | 获取当前活跃的 `requirement_id` | 是 |
| 项目目录直接扫描 | 通过检测项目特征文件定位各端项目根目录和代码 | 是 |
**项目检测方法**:使用 Glob/Grep 工具扫描项目目录,通过特征文件识别各端项目根:
| 平台 | 特征文件/目录 | 说明 |
|------|-------------|------|
| HarmonyOS | `build-profile.json5` | 鸿蒙项目根目录标志 |
| Android | `build.gradle.kts` 或 `build.gradle` | Android 项目根目录标志 |
| iOS | `*.xcodeproj` 或 `*.xcworkspace` | iOS 项目根目录标志 |
| KMP/共享层 | `gradle.properties` + `shared`/`common` 目录 | Kotlin Multiplatform 共享模块标志 |
**单点执行时**:如果 `state.json` 不存在,提示用户先完成项目检测(Step 0),确保 `state.json` 中有活跃需求。
**必需条件缺失处理**:
1. **尝试恢复**:检查 `state.json` 是否存在且包含 active 需求
2. **恢复成功** → 继续执行上下文恢复
3. **无法恢复** → 报错并提示用户先完成项目检测确保 `state.json` 有活跃需求,然后停止执行
| 缺失条件 | 恢复可能性 | 无法恢复时提示 |
|---------|-----------|-------------|
| `state.json` 不存在 | 无 | 先完成项目检测(Step 0),创建 `state.json` 并设置活跃需求 |
| `state.json` 无 active 需求 | 无 | 在 `state.json` 中设置活跃需求 |
| 项目代码不可访问 | 低(可尝试扫描其他路径) | 确保各端项目代码已在本地可访问 |
#### 操作清单
- [ ] **读取上下文**
1. 读取 `.bundle-flow/state.json` 获取当前活跃的 `requirement_id`
2. 扫描项目目录,通过特征文件识别各端项目根目录
3. 记录各平台的项目路径和模块结构
- [ ] **扫描已有技术方案**
检查 `.bundle-flow/{requirement_id}/metadata.json` 是否存在。
- [ ] **检查未完成的 tech-spec**
如果存在 metadata.json,读取并检查 `tech_spec_status` 字段:
- `draft`:技术方案已生成但未确认,提示用户确认或重新分析
- `confirmed`:技术方案已确认,提示用户直接执行 plan(参考 `references/native-plan/SKILL.md`)
- [ ] **展示恢复摘要**
```markdown
发现已有技术方案: [功能名称]
- 技术方案状态: [当前状态]
- 涉及平台: [平台列表]
- 涉及模块: [模块列表]
选择操作:
1. 继续使用当前技术方案 (continue)
2. 废弃并重新分析 (discard)
3. 修改当前技术方案 (modify)
```
- [ ] **根据用户选择执行**
- `continue`:读取 tech-spec.md,提示执行 plan
- `discard`:开始新的分析流程
- `modify`:加载当前技术方案,进入修改模式
- [ ] **检测变更模式**
检查是否由 `/flow change` 触发(通过启动参数或上下文判断):
| 模式 | 触发条件 | 行为 |
|------|---------|------|
| **正常模式** | 直接调用 `/native-analyse` | 产出 `tech-spec.md`,原地写入 |
| **增量模式** | `--delta round-{N}` 参数(场景 A) | 读取原 tech-spec.md 作为基线,只分析变更 diff,产出 `changes/round-{N}/delta-spec.md` |
| **修改模式** | `--change "变更描述"` 参数(场景 B) | 读取现有 tech-spec.md + 变更描述作为额外输入,原地覆盖 tech-spec.md |
**增量模式**:
1. 读取原 `tech-spec.md` 和 `change-request.md`(由 flow change Phase 1 产出)
2. 只分析变更点引起的 diff,不重新分析未受影响的部分
3. 阶段 1-5 按 diff 范围精简执行(未受影响的章节直接跳过)
4. 产出写入 `changes/round-{N}/delta-spec.md`(格式见 flow/SKILL.md 场景 A)
5. 不修改原 tech-spec.md
**修改模式**:
1. 读取现有 `tech-spec.md` 作为起点(不从零开始)
2. 将变更描述作为额外上下文注入阶段 1 需求澄清
3. 阶段 2-5 中逐段评估是否需要修改,未受影响的章节保持不变
4. brain-storm 式确认每个修改点
5. 修改完成后**原地覆盖** `tech-spec.md`(flow change 已在修改前做了快照备份)
- [ ] **检测失效状态**
读取 `state.json`,检查 `analyse` 是否在 `invalidated_phases` 中:
- **是**:提示"技术方案已被标记失效,需要重新分析",进入正常分析流程
- 完成后从 `invalidated_phases` 移除 `analyse`,加回 `completed_phases`
---
### 阶段 1: 需求澄清
**目标**:通过 brain-storm 式迭代问询,明确需求内容,消除歧义
#### brain-storm 融合原则
- **One question at a time**:每次只问一个问题,避免信息过载
- **Multiple choice preferred**:优先使用选择题(2-3 个选项)
- **YAGNI ruthlessly**:只关注当前明确需要的功能
- **Smart skip**:如果用户在描述中已包含某维度信息,跳过该维度
#### 问询维度(按优先级逐一问询)
| 顺序 | 维度 | 问题示例 |
|-----|------|---------|
| 1 | 核心目标 | 这个功能要解决什么问题?核心价值是什么? |
| 2 | 使用场景 | 用户在什么情况下触发?典型路径是什么? |
| 3 | 交互方式 | 如何交互?页面/弹窗/悬浮窗? |
| 4 | 与系统集成 | 需要和哪些现有模块交互? |
| 5 | 边界情况 | 怎么处理异常情况?失败如何降级? |
| 6 | 非功能性需求 | 性能、安全、可访问性有什么要求? |
#### 操作清单
- [ ] **读取需求输入**
- 如果是文件路径:使用 Read 工具读取文档内容
- 如果是描述文本:直接进行分析
- [ ] **迭代问询**(遵循 brain-storm 原则)
- 每次只问一个维度的问题
- 得到回答后判断是否需要继续
- 优先使用选择题
- 用户已主动提供的信息直接跳过
- [ ] **输出需求摘要**
- 2-3 句话描述需求要点
- 成功标准(可量化、可验证)
- 范围边界(包含/不包含)
---
### 阶段 2: 现有流程分析
**目标**:逐端读取代码和知识库,合并为统一的业务流程全貌
#### 分析方法:逐端分析 → 合并统一
```
Step 1: 读取第一个端的项目知识库(.knowledge/) + 关键源码
→ 梳理该端的现有流程
→ 展示给用户确认
Step 2: 读取第二个端的项目知识库 + 关键源码
→ 梳理该端的现有流程
→ 展示给用户确认
Step N: 读取第 N 个端的项目...
(取决于检测到的平台)
最终: 合并所有端的分析结果
→ 产出统一的业务流程全貌
→ 展示给用户确认
```
#### 操作清单
- [ ] **确定分析顺序**
根据项目检测的结果,确定要分析的平台和模块列表。
如有共享层(KMP/Rust 等),优先分析。
- [ ] **逐端读取和分析**
对每个平台的项目:
1. 读取项目知识库(`.knowledge/architecture/`、`.knowledge/domain/`)
2. 知识库不足时,使用 Glob/Grep/Read 读取关键源码补充
3. 梳理该端的现有流程:
- 入口和触发方式
- 核心业务逻辑
- 数据流转路径
- 依赖的接口/服务
4. **展示给用户确认**(分段确认,每端一段)
- [ ] **合并为统一全貌**
将各端分析结果合并:
- 提取共同的业务流程作为主线
- 标注各端特有的实现差异
- 产出统一的流程图/交互图/数据流
- [ ] **整理现有请求/接口清单**
汇总各端现有的请求和接口(如有)。
---
### 阶段 3: 整体设计
**目标**:基于现有流程分析,设计跨端通用的目标架构和方案
#### 交互规则(强制)
整体设计分为**两轮交互**,禁止一次性输出全部内容:
**第一轮:设计全景**(3.1-3.5 一次展示)
- 展示优化目标、目标架构图、交互图/流程图、数据流向、前后台交互
- 展示后**停下来等用户确认**
- 用户可能提出修改意见 → 调整后重新展示 → 再次等确认
**第二轮:技术选型**(3.6 逐个决策点)
- 每个决策点给出 2-3 个可选方案 + 推荐
- **每个决策点单独等用户选择**,选完再进入下一个
- 全部决策点确认后才进入阶段 4
**脑暴原则贯穿**:在第一轮设计全景中,如果遇到不确定的设计方向(如模块划分方式、数据流路径选择),同样停下来给选项让用户决定,不自行假设。
#### 操作清单
- [ ] **第一轮:设计全景(一次展示,等确认)**
包含以下内容,作为一个整体展示给用户:
**3.1 优化目标**:基于需求澄清和现有流程分析,列出具体的优化目标。
**3.2 目标架构图**:绘制优化后的模块架构关系图,与现有架构形成对比:
- 模块划分和职责
- 模块间依赖方向
- 新增/修改/移除的模块
**3.3 目标交互图/流程图**:绘制优化后的业务流程和交互时序:
- 用户操作路径
- 系统内部调用链路
- 异步/同步交互标注
**3.4 数据流向**:说明数据从哪来、经过哪些模块处理、到哪去:
- 数据源头
- 中间处理节点
- 最终消费方
**3.5 前后台交互**(如涉及):说明前端与后端服务的交互方式:
- API 接口契约
- 请求/响应数据结构
- 错误码和异常处理
**展示后停下来**,询问用户:设计全景是否 OK?有无需要调整的部分?
- [ ] **第二轮:技术选型(逐个决策点,等确认)**
针对需求中的每个关键决策点,**逐个**展示并等待用户选择:
```markdown
决策点 1: [例:状态管理方式]
方案 A: [描述] (推荐)
- 优点: ...
- 缺点: ...
方案 B: [描述]
- 优点: ...
- 缺点: ...
推荐: 方案 A — [理由]
→ 等待用户选择后,再展示决策点 2
```
全部决策点确认后,输出技术选型汇总表,进入阶段 4。
---
### 阶段 4: 子任务拆分
**目标**:结合模块和代码,将整体设计拆分为可执行的子任务,定义跨端通用契约和产出链
#### 拆分原则
- 结合**实际的模块结构和代码**来拆分,不是纯业务抽象
- 每个子任务完成一个**完整且单一**的事情
- 子任务间通过**明确的产出**串联(产出是下一个子任务的输入)
- 定义**跨端通用契约**(数据模型、接口、事件),各端差异留给 plan 细化
#### 交互规则(强制)
**逐个子任务展示,每个展示后必须等用户确认再继续下一个。** 禁止一次性输出所有子任务。
```
展示子任务 1 → 等用户确认(OK / 调整 / 拆分 / 合并)
展示子任务 2 → 等用户确认
...
展示子任务 N → 等用户确认
全部确认后 → 展示依赖链总览 → 等最终确认
```
**脑暴原则贯穿**:
- 子任务的契约定义(数据模型、接口)如有多种可行方案,给出选项让用户选择
- 子任务的边界划分如有歧义(拆还是合、归属哪个模块),停下来问用户
- 用户确认某个子任务后,如果后续子任务发现需要回调之前的设计,主动提出
#### 操作清单
- [ ] **逐个展示子任务**
以业务功能 + 模块为维度拆分,**每次只展示一个子任务**:
```markdown
### 子任务 N: [任务名称]
**关联模块**:`core-module`(HarmonyOS), `shared-sdk`(KMP), `feature-module`(iOS)
**交互/流程图**:
[该子任务的交互时序]
**数据流向**:
[输入数据 → 处理逻辑 → 输出数据]
**前后台交互**(如有):
| 接口 | 方向 | 数据契约 | 说明 |
|------|------|---------|------|
| [接口名] | [方向] | `{ field: type }` | [说明] |
**跨端通用契约**:
- 数据模型:[通用模型定义]
- 接口契约:[通用接口定义]
- 事件/回调:[通用事件定义]
**各端差异提示**(留给 plan 细化):
| 平台 | 差异点 | 备注 |
|------|-------|------|
| iOS | [已知差异] | [plan 需关注] |
| Android | [已知差异] | [plan 需关注] |
**产出**:
- [产出物:数据/API/组件] → 输入到子任务 N+1
→ 这个子任务 OK 吗?需要调整/拆分/合并吗?
```
- [ ] **全部子任务确认后,展示依赖链总览**
```
子任务1 ──产出A──→ 子任务2 ──产出B──→ 子任务3
↓
子任务4
```
展示后等用户最终确认,确认后进入阶段 5。
---
### 阶段 5: 三板斧
**目标**:定义切流方案、监控方案和应急预案,确保功能安全上线
#### 操作清单
- [ ] **切流方案**
| 切流点 | 开关名 | 灰度策略 | 回滚方式 |
|-------|-------|---------|---------|
| [功能入口] | [开关名] | [百分比/白名单/...] | [关闭开关] |
- [ ] **监控方案**
| 监控项 | 指标 | 告警阈值 | 说明 |
|-------|------|---------|------|
| [功能可用性] | [成功率/耗时/...] | [阈值] | [说明] |
- [ ] **应急预案**
| 场景 | 影响范围 | 应急操作 | 恢复时间 |
|------|---------|---------|---------|
| [异常场景] | [影响范围] | [操作步骤] | [预估] |
---
### 阶段 6: 输出技术方案、持久化并等待确认
**目标**:输出结构化的技术方案,持久化到本地文件,等待用户确认
#### 操作清单
- [ ] **生成计划 ID**
使用功能名称的 kebab-case 形式,例如 `user-profile-edit`。
- [ ] **输出技术方案到会话**
按下方输出格式,将完整技术方案内容输出到会话中,供用户即时查看和确认。
此时**不写入本地文件**,仅在会话中展示。
- [ ] **等待用户确认**
**必须使用 AskUserQuestion 工具**向用户展示以下四个选项,禁止直接在文本中输出选项后自行继续:
> 请确认此技术方案:
>
> 1. **yes** — 方案无误,持久化到本地文件,进入下一步
> 2. **modify** — 方案整体方向正确,但部分内容需要调整(请说明哪里需要改)
> 3. **supplement** — 方案缺少某些需求场景或约束,需要增量补充
> 4. **no** — 方案方向有问题,废弃当前方案
各选项处理:
- **yes**:进入"确认后持久化"步骤
- **modify**:根据用户反馈调整方案中已有内容,重新输出完整方案,再次展示选项等待确认
- **supplement**:执行增量补充流程(见下方)
- **no**:废弃当前方案,流程结束
- [ ] **supplement 增量补充流程**
当用户选择 supplement 时,按以下步骤执行:
1. **接收补充内容**:让用户描述遗漏的需求点、场景或约束
2. **brain-storm 澄清**:复用阶段 1 的交互模式(每次一个问题、优先选择题、YAGNI),确保补充内容清晰无歧义
3. **评估影响范围**:分析补充内容对已有方案各章节的影响,向用户展示:
```markdown
补充内容: [摘要]
影响评估:
- [ ] 一.背景 — [需要/不需要] 更新
- [ ] 二.现有流程 — [需要/不需要] 更新,原因: [xxx]
- [ ] 三.整体设计 — [需要/不需要] 更新,原因: [xxx]
- [ ] 四.子任务拆分 — [需要/不需要] 更新,原因: [新增子任务/修改现有子任务依赖链]
- [ ] 五.三板斧 — [需要/不需要] 更新
```
4. **增量更新**:按影响范围逐章节更新,每个受影响的章节标注 `[补充]` 标记,方便用户识别变更点
5. **重新输出完整方案**:输出更新后的完整技术方案,再次使用 AskUserQuestion 展示四个选项等待确认
- [ ] **确认后持久化**
用户确认(yes)后,根据执行模式写入不同位置:
**正常模式 / 修改模式**:
1. `.bundle-flow/{requirement_id}/tech-spec.md` — 完整技术方案
2. `.bundle-flow/{requirement_id}/metadata.json` — **读取-合并-写入**:先 Read 现有 metadata.json(不存在则初始化 `{}`),只更新 native-analyse 负责的字段(`tech_spec_status` 设为 `confirmed`、`tech_spec_confirmed_at` 设为当前时间、`created_at` 仅在不存在时写入),保留其他字段不变,再 Write 回
3. 更新 `state.json` — `current_phase: "analyse"`,`completed_phases` 追加 `"analyse"`
4. 修改模式下若 `analyse` 在 `invalidated_phases` 中,移回 `completed_phases`
**增量模式**:
1. `.bundle-flow/{requirement_id}/changes/round-{N}/delta-spec.md` — 增量技术方案
2. 不修改原 `tech-spec.md` 和 `metadata.json`
3. 不更新 `state.json` 的 `completed_phases`(增量模式不改变原有阶段状态)
持久化完成后,提示执行各端 plan 进行细化(参考 `references/native-plan/SKILL.md`)。
#### 输出格式
```markdown
# 技术方案: [功能名称]
> Plan ID: `<plan-id>`
> 状态: draft
> 创建时间: YYYY-MM-DDTHH:mm:ssZ
> 涉及平台: [iOS, Android, HarmonyOS, ...]
> 涉及模块: [module-1, module-2, ...]
## 一. 背景
[2-3 句话描述需求背景、目标和动机]
- 目标用户:[谁]
- 核心价值:[解决什么问题]
- 范围边界:包含 [xxx],不包含 [xxx]
## 二. 现有流程
### 2.1 综合业务流程
(从各端代码/知识库中提炼出的统一业务视角)
**流程图/交互图**:
[统一的业务流程时序]
**数据流**:
[数据从哪来、经过哪些模块、到哪去]
**核心模块职责**:
| 模块 | 职责 | 代码路径 |
|------|------|---------|
| [模块名] | [职责描述] | [关键代码路径] |
### 2.2 各端实现现状
| 维度 | 共享层 | iOS | Android | HarmonyOS |
|------|-----------|-----|---------|-----------|
| 入口 | [描述] | [描述] | [描述] | [描述] |
| 核心逻辑 | [描述] | [描述] | [描述] | [描述] |
| UI 层 | - | [描述] | [描述] | [描述] |
| 特有逻辑 | [描述] | [描述] | [描述] | [描述] |
| 代码路径 | [路径] | [路径] | [路径] | [路径] |
### 2.3 现有请求/接口清单
| 接口 | 方向 | 描述 | 备注 |
|------|------|------|------|
| [接口名] | 前→后 / 后→前 | [描述] | [备注] |
## 三. 整体设计
### 3.1 优化目标
- [目标 1]
- [目标 2]
### 3.2 目标架构图
[优化后的模块架构,与 2.1 形成对比]
### 3.3 目标交互图/流程图
[优化后的业务流程时序]
### 3.4 模块关系与数据流向
[模块间依赖方向、数据流转路径]
### 3.5 前后台交互
| 交互 | 方向 | 请求/响应 | 说明 |
|------|------|----------|------|
| [交互名] | 前→后 | `POST /api/xxx` | [说明] |
| [交互名] | 后→前 | WebSocket/回调 | [说明] |
### 3.6 技术选型
| 决策点 | 可选方案 | 推荐方案 | 理由 |
|-------|---------|---------|------|
| [决策点] | A / B | [推荐] | [理由] |
## 四. 子任务拆分
### 4.1 子任务 1: [任务名称]
**关联模块**:`core-module`(共享层), `user-profile-edit`(iOS), `feature-module`(Android)
**交互/流程图**:
[该子任务的交互时序]
**数据流向**:
[输入数据 → 处理逻辑 → 输出数据]
**前后台交互**(如有):
| 接口 | 方向 | 数据契约 | 说明 |
|------|------|---------|------|
| [接口名] | [方向] | `{ field: type }` | [说明] |
**跨端通用契约**:
- 数据模型:[通用模型定义]
- 接口契约:[通用接口定义]
- 事件/回调:[通用事件定义]
**各端差异提示**(留给 plan 细化):
| 平台 | 差异点 | 备注 |
|------|-------|------|
| iOS | [已知差异] | [plan 需关注] |
| Android | [已知差异] | [plan 需关注] |
**产出**:
- [产出物:数据/API/组件] → 输入到子任务 2
### 4.2 子任务 2: [任务名称]
**前置输入**:子任务 1 的产出 [xxx]
...(重复上述结构)
### 4.N 子任务依赖链总览
```
子任务1 ──产出A──→ 子任务2 ──产出B──→ 子任务3
↓
子任务4
```
## 五. 三板斧
### 5.1 切流方案
| 切流点 | 开关名 | 灰度策略 | 回滚方式 |
|-------|-------|---------|---------|
| [功能入口] | [开关名] | [百分比/白名单/...] | [关闭开关] |
### 5.2 监控方案
| 监控项 | 指标 | 告警阈值 | 说明 |
|-------|------|---------|------|
| [功能可用性] | [成功率/耗时/...] | [阈值] | [说明] |
### 5.3 应急预案
| 场景 | 影响范围 | 应急操作 | 恢复时间 |
|------|---------|---------|---------|
| [异常场景] | [影响范围] | [操作步骤] | [预估] |
---
**等待确认**(使用 AskUserQuestion 工具展示选项):
1. **yes** — 方案无误,持久化并进入下一步
2. **modify** — 部分内容需要调整
3. **supplement** — 缺少某些场景或约束
4. **no** — 方案方向有问题
```
---
## 核心原则
### 1. 只分析不编码
- 此技能仅用于技术分析和方案设计,不编写业务实现代码,不修改项目源码文件
- 仅在用户确认后,才会持久化技术方案文档(tech-spec.md、metadata.json、state.json)
- 必须获得用户明确确认后才能进入 plan 阶段
### 2. 跨端通用
- 技术方案面向所有涉及的平台
- 定义跨端通用契约(数据模型、接口、事件)
- 各端差异标注但不深入,留给 plan 细化
### 3. 结合实际代码
- 分析必须基于本地已有的项目代码和知识库
- 不做纯理论推导,每个结论都有代码依据
- 知识库不足时,直接读取源码补充
### 4. brain-storm 式交互(贯穿全流程)
**核心规则:禁止一股脑输出,必须分段交互。** 每个阶段都有明确的停止点,展示后等用户确认再继续。
- **需求澄清**:每次只问一个问题,优先选择题
- **现有流程分析**:逐端展示,每端确认后再分析下一端
- **整体设计**:先展示设计全景等确认,再逐个决策点等选择(详见阶段 3 交互规则)
- **子任务拆分**:逐个子任务展示,每个确认后再展示下一个(详见阶段 4 交互规则)
- **任何阶段遇到不确定的设计决策**:停下来给 2-3 个选项,让用户选择,不自行假设
- **智能跳过**:如果知识库或用户有明确规范,直接按此执行,无需确认
### 5. 持久化可恢复
- 技术方案持久化到 `.bundle-flow/{requirement_id}/tech-spec.md`
- 与 plan-{platform}.md 同目录,plan 执行时直接读取
- 通过 state.json 的 active 字段定位当前需求目录
- 上下文切换后可通过 `/native-analyse` 自动恢复
### 6. 遵守知识库规范
- 加载相关项目的知识库(`.knowledge/`)和全局知识库
- 方案内容必须符合项目的技术规范、编码约定和架构约束
- 知识库不足时,直接读取源码补充
---
## 与其他命令的联动
### 上游
- 项目检测(Step 0)— 确定涉及的平台和项目目录,确保 `state.json` 中有活跃需求
### 下游
- `references/native-plan/SKILL.md` — 读取 tech-spec.md,细化为端级实施计划
### 推荐工作流
```
项目检测(Step 0) → 确定涉及的平台和项目目录,初始化 state.json
/native-analyse "需求描述" → 产出跨端技术方案,等待确认
/native-plan "需求描述" → 基于技术方案,各端细化计划
开始编码 → 按计划逐步实施
```
### 上下文切换恢复
```
# 新会话中直接执行 /native-analyse,自动检测未完成的技术方案
/native-analyse → 发现未完成方案,提示继续/废弃/修改
```
---
## 参考文档
### 知识库文档
**项目知识库**(各项目根目录下 `<project-root>/.knowledge/`):
- `<project-root>/.knowledge/architecture/` — 项目架构映射
- `<project-root>/.knowledge/standards/` — 项目技术规范
- `<project-root>/.knowledge/domain/` — 项目业务逻辑
### 平台检测特征
| 平台 | 特征文件/目录 | 说明 |
|------|-------------|------|
| HarmonyOS | `build-profile.json5` | 鸿蒙项目根目录标志 |
| Android | `build.gradle.kts` 或 `build.gradle` | Android 项目根目录标志 |
| iOS | `*.xcodeproj` 或 `*.xcworkspace` | iOS 项目根目录标志 |
| KMP/共享层 | `gradle.properties` + `shared`/`common` 目录 | Kotlin Multiplatform 共享模块标志 |
---
## 成功标准
- [ ] 完成需求澄清,消除歧义
- [ ] 逐端读取代码/知识库,完成现有流程分析,合并为统一全貌
- [ ] 完成整体设计,定义目标架构图/交互图/数据流/前后台交互
- [ ] 完成子任务拆分,定义跨端通用契约和产出链
- [ ] 完成三板斧(切流/监控/应急)
- [ ] 技术方案持久化到正确路径(正常模式 → tech-spec.md,增量模式 → changes/round-N/delta-spec.md)
- [ ] 输出结构化技术方案到会话,等待用户确认
- [ ] 用户确认后更新 metadata.json,指引执行各端 plan
- [ ] 增量模式下只分析变更 diff,不修改原 tech-spec.md
- [ ] 修改模式下正确注入变更描述,原地覆盖 tech-spec.md
- [ ] 失效状态下完成后正确更新 invalidated_phases → completed_phasesIs this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!