---
name: monisuo-dev
description: Monisuo 项目结构化开发流程。融合超级技能体系：需求探索 → 计划分解 → 子代理开发 → 双重审查 → 验证门控 → 构建。
---

# Monisuo 开发工作流

融合超级技能（Superpowers）的完整开发流程。每个阶段引用对应的超级技能，确保高质量交付。

## 流程概览

```
Phase 0: 分支隔离 → using-git-worktrees
    ↓
Phase 1: 需求探索 → 融合 brainstorming（提问→方案→评审）
    ↓
Phase 1.5: 计划分解 → 融合 writing-plans（咬合级任务+TDD）
    ↓
Phase 2: 开发执行 → 融合 subagent-driven-development（子代理+双重审查）
    ↓
Phase 3: 质量验证 → verification-before-completion 铁律门控
    │                                      ↓ (通过)
    │                          [Agent A] 精简 + 测试 → 输出审查报告
    │                                      ↓ (通过)
    │                          [Agent B] Phase 4: 功能验证
    │                                      ↓ (通过)
    │                          [Agent C] Phase 5: 构建
    ↓
Phase 6: 分支完成 → finishing-a-development-branch
    ↑
Bug 修复循环 → systematic-debugging（根因分析优先）
```

**Phase 0/1/1.5 在主对话完成**（需与用户交互，子代理无法代替）。但其中的**代码库探索**环节可并行派发 Explore 子代理加速。
**Phase 2 用子代理驱动，Phase 3/4/5 分别启动独立 Agent。**

---

## Phase 0: 分支隔离

**引用技能:** `superpowers:using-git-worktrees`

开发前创建隔离工作区，避免在 main 分支直接修改。

### 执行步骤
1. 确认当前在 main 分支且工作区干净
2. 使用 `EnterWorktree` 创建隔离工作树，分支名 `feat/[feature-name]`
3. 后续所有开发在 worktree 中进行

### 例外
- 紧急热修复可跳过 worktree，直接在 main 分支操作
- 用户明确要求跳过时可以跳过

---

## Phase 1: 需求探索

**引用技能:** `superpowers:brainstorming`

将用户需求通过协作对话转化为结构化设计。不再直接写 Spec，而是先充分探索。

### 执行步骤

1. **探索项目上下文** — 检查相关文件、文档、最近提交，理解现有架构
   - **可用 Explore 子代理并行加速**：涉及多个独立模块时（如后端+Flutter+Admin），派发多个 Explore 子代理并行扫描，结果汇总到主对话
   - 单模块时直接在主对话 Glob/Grep/Read 即可，无需子代理

2. **逐步提问** — 一次一个问题，理解目的、约束、成功标准（必须主对话）
   - 优先使用选择题，也可开放式
   - 评估范围：如果涉及多个独立子系统，先分解再逐个设计

3. **提出 2-3 个方案** — 含权衡分析和推荐理由
   - 领先展示推荐方案及原因
   - 每个方案列出优劣

4. **逐节呈现设计** — 按复杂度控制篇幅
   - 每节确认是否正确
   - 覆盖：架构、组件、数据流、错误处理、测试

5. **写入 Feature Spec** — 保存到 `docs/features/[feature-name].md`

   ```markdown
   # [功能名称]

   ## 概述
   功能名称 / 优先级(P0-P2) / 业务背景(痛点→方案→收益)

   ## 用户故事
   作为 [角色]，我希望 [行为]，以便 [目的]

   ## 功能列表
   - [ ] 功能点1
   - [ ] 功能点2

   ## 技术方案（Phase 1.5 填充）
   ### API 设计
   ### 数据模型
   ### 技术决策

   ## 测试用例
   - [ ] 正常 / 异常 / 边界

   ## 验收标准
   ```

6. **Spec 自审** — 快速内联检查
   - 占位符扫描：有无 TBD、TODO、未完成章节？修复。
   - 内部一致性：各章节是否矛盾？
   - 范围检查：是否聚焦到单个实施计划？
   - 歧义检查：需求是否有两种解读？选定一种明确写出。

7. **用户确认** — 让用户审阅 Spec 文件，确认后才进入下一阶段

### 硬门控
**用户未确认 Spec 之前，不得进入 Phase 1.5。**

---

## Phase 1.5: 计划分解

**引用技能:** `superpowers:writing-plans`

将 Spec 转化为咬合级实施计划，每步 2-5 分钟。必须先探索代码库再设计。

### 执行步骤

1. **探索现有代码库**
   - **可用 Explore 子代理并行加速**：涉及多个独立模块时（如后端现有 API、Flutter 现有页面、Admin 现有路由），派发多个 Explore 子代理并行扫描
   - 单模块时直接在主对话 Glob/Grep/Read 即可
   - 识别可复用的组件、Service、工具类
   - 确认集成点

2. **更新 Spec 技术方案**
   - 定义 API 契约 — 方法、路径、请求/响应体
   - 设计数据模型 — 表结构、Entity/DTO/VO 映射
   - 记录技术决策 — 选型理由、模块职责、关键约束

3. **映射文件结构** — 列出所有需要创建/修改的文件及职责

4. **编写实施计划** — 保存到 `docs/superpowers/plans/YYYY-MM-DD-[feature-name].md`

   计划头部：
   ```markdown
   # [功能名称] Implementation Plan

   > **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development to implement this plan task-by-task.

   **Goal:** [一句话描述]

   **Architecture:** [2-3 句方案描述]

   **Tech Stack:** [关键技术]

   ---
   ```

5. **任务分解原则**
   - 每步一个动作（2-5 分钟）
   - TDD 红绿循环：写失败测试 → 验证失败 → 最小实现 → 验证通过 → 提交
   - 按模块自底向上：数据层 → 后端 API → Flutter 前端 → Admin 前端
   - 不允许占位符：每步必须包含实际代码和命令

   ```markdown
   ### Task N: [组件名称]

   **Files:**
   - Create: `exact/path/to/file`
   - Modify: `exact/path/to/existing.java:123-145`
   - Test: `tests/exact/path/test`

   - [ ] **Step 1: 写失败测试**
   - [ ] **Step 2: 运行验证失败**
   - [ ] **Step 3: 最小实现**
   - [ ] **Step 4: 运行验证通过**
   - [ ] **Step 5: 提交**
   ```

6. **计划自审** — 对照 Spec 逐条检查
   - 覆盖性：Spec 每条需求都有对应任务？
   - 占位符扫描：无 TBD/TODO
   - 类型一致性：前后任务的类型、方法签名一致

7. **用户提供执行选择**
   - 推荐子代理驱动开发（Phase 2 默认方式）
   - 用户选择内联执行时，按 `superpowers:executing-plans` 执行

### 完成标准
- 已扫描现有代码，无重复造轮子
- API 契约完整，前后端可并行开发
- 数据模型与现有表结构兼容
- 每个任务有完整代码和验证命令

---

## Phase 2: 开发执行

**引用技能:** `superpowers:subagent-driven-development`

每个子任务独立子代理执行，完成后双重审查（规格合规 + 代码质量）。

### 核心原则
- 每个任务启动**新的子代理**，不继承主对话上下文
- 主对话负责提取任务文本、构造上下文、传递给子代理
- 子代理完成后，先做规格合规审查，再做代码质量审查

### 执行流程

对计划中的每个任务：

```
1. 提取任务全文和上下文
2. 启动实现子代理（implementer）
3. 子代理提问？→ 回答后重新派发
4. 子代理实现、测试、提交、自审
5. 启动规格审查子代理 → 不通过？→ 实现子代理修复 → 重新审查
6. 启动质量审查子代理 → 不通过？→ 实现子代理修复 → 重新审查
7. 标记任务完成
```

### 模型选择策略
- **机械任务**（1-2 文件，Spec 完整）→ 快速模型
- **集成任务**（多文件，模式匹配）→ 标准模型
- **架构/审查任务** → 最强模型

### 子代理行为准则
- Flutter: `flutter analyze` 无错，用 AppSpacing/AppRadius/AppColorScheme，禁止硬编码颜色
- Java: Lombok 简化，资金变动方法加 `@Transactional(rollbackFor = Exception.class)`，RESTful 设计
- Admin: TypeScript strict，TanStack Vue Query 做数据请求，shadcn-vue 组件不手动编辑

### 禁止事项
- 不要在 main/master 分支直接实现
- 不要跳过任何审查（规格或质量）
- 不要在审查有未修复问题时进入下一任务
- 不要并行派发多个实现子代理（会冲突）
- 不要让子代理自行读取计划文件（主对话提供全文）

### Spec 同步
Phase 2 全部完成后、启动 Agent A 之前，**主对话必须更新 Spec**：
- 实际实现与设计有差异时，以实现为准更新 Spec
- 确保 Phase 3/4 的 Agent 读到的是最新状态

---

## Phase 3: 质量验证（铁律门控）

**引用技能:** `superpowers:verification-before-completion`

### 验证铁律

```
没有新鲜验证证据，不得声明任何状态。
```

Phase 2 完成后，启动独立 Agent 执行代码精简和自动化测试。

### 启动 Agent A

```
Agent(
  description: "精简+测试验证",
  prompt: |
    你是 Monisuo 项目质量 Agent，独立完成以下任务，不要询问用户。

    ## 铁律
    没有运行验证命令，不得声称"通过"或"完成"。
    使用"应该通过" = 没有验证。

    ## 1. 读取 Spec
    - 路径: docs/features/[feature-name].md
    - 理解验收标准

    ## 2. 代码审查
    - git diff 查看变更
    - Flutter: flutter analyze, AppSpacing/AppRadius/AppColorScheme 规范
    - Java: @Transactional 资金方法, 统一异常处理, RESTful 设计

    ## 3. 代码精简（simplify）
    - 对变更代码执行 /simplify：审查复用性、质量和效率，修复发现的问题
    - 精简完成后重新运行 git diff 确认变更合理

    ## 4. 测试（必须运行并读取完整输出）
    - 后端: mvn test（读取输出，确认 0 failures）
    - Flutter: cd flutter_monisuo && flutter test（读取输出，确认 0 failures）
    - API: ./tests/api/test-[feature].sh（如存在）

    ## 5. 输出审查报告（供 Agent B 使用）
    ### 代码审查摘要
    - 变更文件列表及每个文件的核心改动
    - 代码规范检查结果
    - 精简改动摘要（改了什么、为什么改）

    ### 测试结果
    | 项目 | 状态 | 证据（命令输出摘要） |
    |------|------|----------------------|
    | 代码审查 | ✅/❌ | |
    | 代码精简 | ✅/❌ | 改动摘要 |
    | 后端测试 | ✅/❌ | X/Y 通过 |
    | Flutter 测试 | ✅/❌ | X/Y 通过 |

    如有 Bug，列出：文件、原因、修复建议。返回主对话修复后重新验证。
)
```

### 门控
Agent A 报告中任何一项 ❌ → 主对话修复 → 重新启动 Agent A。

---

## Phase 4: 功能验证（Agent B）

**Agent A 全部通过后**，启动独立 Agent。

### 启动 Agent B

```
Agent(
  description: "功能验证（用例驱动）",
  prompt: |
    你是 Monisuo 项目功能验证 Agent。基于 Feature Spec 中的测试用例，验证功能实现是否正确。不要询问用户。

    ## 铁律
    没有运行验证命令，不得声称"通过"。逐条代码追踪，不是靠印象。

    ## 1. 读取 Spec
    - 路径: docs/features/[feature-name].md
    - 提取「测试用例」和「验收标准」

    ## 2. 利用审查报告
    - Agent A 已完成代码审查，变更文件列表和核心改动见报告
    - 仅对报告未覆盖的逻辑路径做补充阅读
    - 对照 Spec 中的 API 设计，确认实现与契约一致

    ## 3. 逐条验证测试用例
    对 Spec 中的每条测试用例：
    - **正常流程**：追踪代码路径 Controller → Service → Mapper，确认参数传递、返回值、状态变更
    - **异常流程**：确认错误处理覆盖（参数校验、权限检查、边界条件）
    - **边界条件**：空值、零值、溢出、并发等极端场景是否有防护

    ## 4. 输出验证报告
    | 用例编号 | 用例描述 | 验证结果 | 证据 |
    |----------|----------|----------|------|
    | TC-01 | 正常：xxx | ✅/❌ | 追踪的具体代码路径 |
    | TC-02 | 异常：xxx | ✅/❌ | 具体原因 |

    ### 总结
    - 通过率：X/Y
    - 未通过用例：列出失败原因和修复建议
    - 风险点：潜在问题或遗漏

    如有未通过用例，返回主对话修复后重新启动验证。
)
```

### 门控
Agent B 报告中有 ❌ → 主对话修复 → 重新启动 Agent B。

---

## Phase 5: 构建（Agent C）

**Agent A 和 Agent B 全部通过后**，启动独立 Agent。

### 启动 Agent C

```
Agent(
  description: "项目构建",
  prompt: |
    你是 Monisuo 项目构建 Agent，独立完成构建任务，不要询问用户。

    ## 铁律
    没有运行构建命令并看到 exit 0，不得声称"构建成功"。

    ## 1. 构建（必须运行并读取完整输出）
    - 后端: mvn clean package -DskipTests → target/monisuo-*.jar
    - Flutter: cd flutter_monisuo && flutter build web --release --dart-define=ENV=prod → build/web/

    ## 2. 输出报告
    | 项目 | 状态 | 证据（命令输出摘要） |
    |------|------|----------------------|
    | 后端构建 | ✅/❌ | 产物路径 |
    | Flutter 构建 | ✅/❌ | 产物路径 |

    如有构建失败，列出：模块、错误信息、修复建议。返回主对话修复后重新构建。
)
```

### 门控
Agent C 报告中有 ❌ → 主对话修复 → 重新启动 Agent C。

---

## Phase 6: 分支完成

**引用技能:** `superpowers:finishing-a-development-branch`

所有 Phase 通过后，完成开发分支。

### 执行步骤
1. 确认所有测试通过（Phase 3 证据）
2. 确认功能验证通过（Phase 4 证据）
3. 确认构建成功（Phase 5 证据）
4. 向用户展示选项：
   - 合并到 main
   - 创建 PR
   - 保留分支待后续处理
5. 执行用户选择
6. 退出 worktree

---

## Bug 修复循环

**引用技能:** `superpowers:systematic-debugging`

遇到 Bug 时，严禁猜测式修复。

### 四阶段流程
1. **根因调查** — 重现问题 → 缩小范围 → 找到根因（未完成此阶段不得提出修复）
2. **修复方案** — 针对根因设计最小修复
3. **实施修复** → 回到 Phase 3 重新验证
4. **回归验证** — 确认修复未引入新问题

### 错误修复路由
- **Agent A 失败**（测试不通过）→ 主对话用 systematic-debugging 修复 → 重新启动 Agent A
- **Agent B 失败**（功能验证不通过）→ 主对话用 systematic-debugging 修复 → 重新启动 Agent B
- **Agent C 失败**（构建不通过）→ 主对话修复构建问题 → 重新启动 Agent C
- **全部通过** → Phase 6 分支完成

### 严禁
- 不准跳过根因分析直接修复
- 不准用"应该修好了"代替验证
- 不准在疲劳时降低验证标准
