pr-review
PR 代码审查技能
概述
系统化的 PR 审查流程,帮助发现代码问题、安全漏洞和改进机会。
审查维度
1. 代码质量
- 命名规范(变量、函数、文件)
- 代码结构和组织
- 可读性和可维护性
- DRY 原则(不重复代码)
- 单一职责原则
2. 安全问题
- XSS 跨站脚本攻击
- SQL 注入
- 敏感信息泄露(API Key、密码)
- 不安全的依赖
- 输入验证
3. 性能问题
- N+1 查询问题
- 不必要的重渲染(React)
- 内存泄漏风险
- 大文件/大包体积
- 未优化的循环
4. TypeScript 类型安全
any类型滥用- 类型定义缺失
- 类型断言过度使用
- 泛型使用不当
5. React 最佳实践
- Hooks 使用规范
- 状态管理合理性
- 组件拆分
- Props 验证
6. 测试覆盖
- 单元测试
- 集成测试
- 边界条件
- 错误处理
审查流程
1. 获取 PR 信息
gh pr view <number> --json title,body,files,additions,deletions
gh pr diff <number>
2. 分析变更文件
按文件类型分组审查:
.tsx/.jsx- React 组件.ts/.js- 逻辑代码.css/.scss- 样式.md- 文档.json- 配置
3. 生成审查报告
报告格式
## PR 审查报告
**PR**: #<number> - <title>
**作者**: @username
**变更**: +<additions> -<deletions>
### 概要
[整体评价和建议]
---
### 🔴 必须修复
#### 1. [问题标题]
**文件**: `path/to/file.ts:行号`
**问题**: [问题描述]
**建议**: [修复建议]
\`\`\`diff
- // 问题代码
+ // 建议代码
\`\`\`
---
### 🟡 建议改进
#### 1. [改进标题]
**文件**: `path/to/file.ts:行号`
**说明**: [改进说明]
---
### 🟢 良好实践
- [发现的良好实践点]
---
### 📊 统计
| 指标 | 值 |
|------|-----|
| 变更文件数 | X |
| 新增行数 | +X |
| 删除行数 | -X |
| 问题数 | X |
| 建议数 | X |
---
### 检查清单
- [ ] 代码质量
- [ ] 安全问题
- [ ] 性能问题
- [ ] 类型安全
- [ ] 测试覆盖
使用方式
审查指定 PR
/pr-review 123
审查当前分支的 PR
/pr-review
只检查安全问题
/pr-review 123 --security-only
输出为评论格式
/pr-review 123 --comment
常见问题检测规则
安全问题
敏感信息检测
(password|secret|api_key|token)\s*[=:]\s*["\'][^"\']+["\']
XSS 风险
dangerouslySetInnerHTML
innerHTML\s*=
document\.write
性能问题
N+1 查询
// 问题模式
items.map(item => fetchDetail(item.id))
// 建议模式
const details = await batchFetchDetails(items.map(i => i.id))
React 重渲染
// 问题:内联对象/函数
<Component style={{ color: 'red' }} onClick={() => {}} />
// 建议:使用 useMemo/useCallback
const style = useMemo(() => ({ color: 'red' }), [])
const handleClick = useCallback(() => {}, [])
TypeScript 问题
any 类型
// 问题
const data: any = response.data
// 建议
interface Response {
data: DataType
}
const data: DataType = response.data
配置选项
可在 .pr-review.json 中配置:
{
"rules": {
"security": true,
"performance": true,
"typescript": true,
"react": true,
"tests": false
},
"severity": {
"any-type": "warning",
"xss-risk": "error"
},
"ignore": ["**/*.test.ts", "**/dist/**"]
}
与 GitHub 集成
发布审查评论
gh pr review <number> --comment --body "$(cat review.md)"
请求修改
gh pr review <number> --request-changes --body "$(cat review.md)"
批准 PR
gh pr review <number> --approve --body "LGTM!"
More from evanfang0054/cc-system-creator-scripts
macos-cleaner
分析并通过智能清理建议回收 macOS 磁盘空间。当用户报告磁盘空间问题、需要清理 Mac 或想了解什么占用了存储空间时,应使用此技能。专注于安全的交互式分析,在执行任何删除操作前需要用户确认。
17planning-with-files
将工作流转换为使用 Manus 风格的持久化 markdown 文件进行规划、进度跟踪和知识存储。适用于开始复杂任务、多步骤项目、研究任务,或者当用户提到规划、组织工作、跟踪进度或需要结构化输出时使用。
14doc-coauthoring
引导用户通过结构化的工作流协作编写文档。当用户想要编写文档、提案、技术规范、决策文档或类似的结构化内容时使用。此工作流帮助用户高效地传递上下文、通过迭代优化内容,并验证文档是否适合读者阅读。当用户提到编写文档、创建提案、起草规范或类似文档任务时触发。
14code-fragment-extractor
仔细彻底阅读探索用户提供的代码目录/文件,分析拆解出对应的代码片段以供参考,颗粒度细到功能级别,只做片段提取不改变代码内容和页面布局结构,提取到./fragment-extractor目录下,按照指定模板格式生成代码片段模板文件,确保功能完整性和代码片段的实际性。
13component-docs-batcher
批量生成和维护前端组件库文档的自动化工具。专为 Monorepo 组件库设计(如 atom-ui-mobile),通过对比组件文件和文档的修改时间,自动生成任务清单并批量生成符合规范的完整组件文档。支持以下场景:(1) 定期批量更新组件文档,(2) 单个组件文档维护,(3) 新组件文档初始化。自动识别主要组件文件,跳过 index.ts、store、hooks 等辅助文件,文档路径为组件目录下的 index.zh-CN.md。
13skill-creator
Create new skills, modify and improve existing skills, and measure skill performance. Use when users want to create a skill from scratch, edit, or optimize an existing skill, run evals to test a skill, benchmark skill performance with variance analysis, or optimize a skill's description for better triggering accuracy.
13