SKILL.md
readonly只读
name
find-bugs
description
查找本地分支变更中的错误、安全漏洞和代码质量问题。当被要求审查变更、查找错误、进行安全审查或审计当前分支上的代码时使用。
查找错误
审查此分支上的变更,查找错误、安全漏洞和代码质量问题。
阶段1:完整输入收集
- 获取完整差异:
git diff $(gh repo view --json defaultBranchRef --jq '.defaultBranchRef.name')...HEAD - 如果输出被截断,逐个读取每个更改的文件,直到看到所有更改的行
- 在继续之前,列出此分支上修改的所有文件
阶段2:攻击面映射
对于每个更改的文件,识别并列出:
- 所有用户输入(请求参数、头信息、请求体、URL组件)
- 所有数据库查询
- 所有身份验证/授权检查
- 所有会话/状态操作
- 所有外部调用
- 所有加密操作
阶段3:安全检查清单(对每个文件检查每一项)
- [ ] 注入:SQL、命令、模板、头信息注入
- [ ] XSS:模板中的所有输出是否正确转义?
- [ ] 身份验证:所有受保护的操作是否都有身份验证检查?
- [ ] 授权/IDOR:访问控制是否已验证,而不仅仅是身份验证?
- [ ] CSRF:状态更改操作是否受到保护?
- [ ] 竞态条件:任何读取后写入的模式中是否存在TOCTOU?
- [ ] 会话:会话固定、过期、安全标志?
- [ ] 加密:安全随机数、正确的算法、日志中无秘密?
- [ ] 信息泄露:错误消息、日志、时序攻击?
- [ ] 拒绝服务:无限制操作、缺少速率限制、资源耗尽?
- [ ] 业务逻辑:边界情况、状态机违规、数值溢出?
阶段4:验证
对于每个潜在问题:
- 检查是否已在更改代码的其他地方处理
- 搜索覆盖该场景的现有测试
- 阅读周围上下文以验证问题是否真实存在
阶段5:结论前审计
在最终确定之前,你必须:
- 列出你审查的每个文件,并确认已完整阅读
- 列出每个检查清单项,并注明是否发现问题或确认安全
- 列出任何你无法完全验证的领域及其原因
- 然后才能提供最终发现
输出格式
优先级:安全漏洞 > 错误 > 代码质量
跳过:样式/格式问题
对于每个问题:
- 文件:行号 - 简要描述
- 严重性:严重/高/中/低
- 问题:出了什么问题
- 证据:为什么这是真实的(尚未修复、没有现有测试等)
- 修复:具体建议
- 参考:OWASP、RFC或其他标准(如适用)
如果未发现重大问题,请明确说明——不要编造问题。
不要进行更改——仅报告发现。我将决定如何处理。






