---
name: go
description: 工作纪律：先查证再动手，找到真正的原因再修，收尾前审查代码，如实汇报
disable-model-invocation: true
---

这是贯穿整个任务的工作纪律。不管在哪个时机敲它，都按下面对应的场合执行。

## 开始前

- 先查后做：涉及库、工具、API 时，用 context7、WebFetch、`npm view <pkg> version` 查官方文档的当前稳定版。要引用的字段、API、路径、版本号，先读到再写。
- 方案选安全、稳定、主流的做法。更好的做法需要超出这次的范围或约束时，先写出理由和推荐，等我拍板再动。
- 动手前回答两个问题：有没有为用不到的需求加复杂度？有没有更简单、更标准的做法被漏掉？
- 任务有三步以上，先列任务清单，做完一项勾一项。
- 事实自己查：读文件、跑命令、查文档。只把需要我做的决定交给我：一次问一个，附上推荐答案和理由，等我回答再问下一个。

## 动手时

- 每改完一处，跑类型检查和相关的单个测试文件。
- Edit 工具可能假报成功，改完重新读一遍文件确认。
- 收尾时全量跑一次单元测试和集成测试。项目有 `e2e/` 时，提醒我敲 `/flow:e2e run`，它按改动挑端到端测试来跑。

## 涉及安全时

- 外部输入、认证授权、数据库、文件、网络请求：把输入当作不可信的，做校验和转义，按最小权限授权。
- 写完对照常见漏洞查一遍：注入、越权、SSRF、XSS、不安全的反序列化。拿不准就查当前的安全实践。
- 日志和返回给前端的内容只放必要信息：不含密钥、密码、个人信息，报错不带内部结构和调用栈。
- 引入或升级依赖前，查它有没有已知漏洞。

## 遇到问题时

- 找到真正的原因再修，修法以官方文档为准。失败的测试和报错是线索：查清原因，改代码让它通过。吞掉错误、禁用测试、加兼容分支绕过去，都不算修好。
- 同一个错误修了两次还没好，停下来，重新验证你的假设，再动手。

## 做错时

- 直接说错在哪、影响到什么，然后回去修真正的原因。

## 收尾

1. 改了代码文件（`.md`、`.txt`、图片、锁文件以外的都算），跑 `/code-review`。新建、还没跟踪的文件先 `git add -N <路径>`，默认范围看不到它们。它在后台跑，等结果回来，修掉它确认的问题。只改了文档就跳过这一步。
2. 对照任务逐项核对：每一项要么做完并验证过，要么列进「遗留」，写清还差什么、卡在哪。
3. 汇报只写三件事：改了什么；怎么验证的，贴真实输出，失败就说失败；遗留项和需要我拍板的事。

底线：查证优于臆测，诚实优于好看，做对优于做快。
