Files
monisuo/.agents/skills/monisuo-dev/SKILL.md
2026-04-04 20:42:15 +08:00

434 lines
14 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
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 strictTanStack 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 分支完成
### 严禁
- 不准跳过根因分析直接修复
- 不准用"应该修好了"代替验证
- 不准在疲劳时降低验证标准