# Goal Loop 目标描述模板

> 把你的目标写成这样一份文档，交给 `/goal` 或 maker agent 用。
> 越具体、越可验证，loop 的质量越高。

## 目标

<!-- 一句话说清楚要做什么 -->

完成 XX 功能，包含完整的单元测试覆盖。

## 验收标准

<!-- 机器可验证的完成条件，每条都能跑命令或检查 -->

- [ ] `npm test` 全部通过
- [ ] 覆盖率报告显示 XX 模块覆盖率 ≥ 80%
- [ ] `npm run lint` 无错误
- [ ] TypeScript 类型检查通过（`npx tsc --noEmit`）
- [ ] 所有新增代码符合项目编码规范

## 范围

<!-- 明确说清楚不能碰什么 -->

### 可以改的

- `src/xx/` 目录下的所有文件
- `tests/` 目录下的测试文件
- 相关的类型定义文件

### 不能改的

- `src/main.ts` 入口文件
- 数据库 schema 迁移文件
- `package.json` 里的依赖版本（除非明确需要新增）
- CI/CD 配置文件

## 验证方式

<!-- 每做一步怎么验证 -->

1. 实现完成后，按顺序跑以下命令：
   1. `npx tsc --noEmit` — 类型检查
   2. `npm run lint` — 代码规范
   3. `npm test` — 单元测试
   4. `npx vitest --coverage` — 覆盖率检查

2. 任何一步失败都先修，修完再跑下一个。
3. 全部通过后，运行一次完整的端到端测试（如果有）。

## 停止条件

- 所有验收标准全部通过 ✅
- 达到最大回合数：20 轮
- 连续 3 轮没有进展（同样的错误反复出现）
- 遇到无法自行解决的阻塞问题（比如需要的依赖不存在、环境问题）

## 工作方式

1. 先读 `AGENTS.md` 和 `feature_list.json`，理解项目结构和现有功能。
2. 先写设计思路，再动手改代码。
3. 每完成一个子任务就验证一次。
4. 遇到卡住超过 2 轮，换个思路或简化方案。
5. 每一轮结束后更新进度。
