关于 code-review
用于代码评审的 Skill,提供功能、质量、类型安全、测试、性能和安全检查清单。面向评审 TypeScript 项目的开发者,并附有示例命令及建设性意见的优先级标记。
主要功能
- 01功能与边界情况检查
- 02代码质量清单
- 03类型安全检查
- 04测试与覆盖率评审
- 05性能与安全检查
- 06评审意见优先级标记
适用场景
- 01评审 Pull Request
- 02合并前检查 TypeScript 变更
- 03提交 PR 前自我评审
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ motormetrics/ motormetrics --skill code-review安装后在 Claude Code 中输入/code-review确认已加载。
详细介绍
代码审查技能
快速检查
# Run all automated checks
pnpm biome check .
pnpm tsc --noEmit
pnpm test
# Search for common issues
grep -r "any" apps/ packages/ --include="*.ts" # any usage
grep -r "console.log" apps/ packages/ --include="*.ts" # debug logs
grep -r "TODO" apps/ packages/ --include="*.ts" # TODOs
审查清单
功能: 代码可正常运行,已处理边界情况,没有明显错误
代码质量: 易于阅读,函数精简且专注,命名清晰,没有重复代码
类型安全: 不使用 any,使用恰当的 TypeScript 类型,接口定义明确
测试: 新代码附带测试,测试覆盖边界情况
性能: 没有不必要的重新渲染,查询经过优化,没有 N+1 问题
安全性: 没有 SQL 注入、XSS 或泄露的机密信息;已进行输入验证
常见反模式
// ❌ Magic numbers → ✅ Use constants
if (user.age > 18) {} // Bad
if (user.age >= LEGAL_AGE) {} // Good
// ❌ Deep nesting → ✅ Early returns
if (!user || !user.isActive) return;
// ❌ Using any → ✅ Proper typing
function process(data: any) {} // Bad
function process(data: UserData) {} // Good
// ❌ SQL injection → ✅ Parameterized queries
const query = `SELECT * FROM users WHERE id = ${userId}`; // Bad
db.query.users.findFirst({ where: eq(users.id, userId) }); // Good
// ❌ N+1 queries → ✅ Single query with join
for (const post of posts) { post.author = await db.query.users... } // Bad
db.query.posts.findMany({ with: { author: true } }); // Good
// ❌ Missing memoization → ✅ useMemo for expensive ops
const data = expensiveOperation(data); // Bad
const data = useMemo(() => expensiveOperation(data), [data]); // Good
审查评论
使用以下标记,让评论更清晰:
- 🔴 必须修复:阻碍合并的关键问题(安全问题、错误)
- 🟡 应当修复:重要但不阻碍合并的问题
- 🟢 建议:锦上添花
- 💡 学习提示:提供教育性背景
- ❓ 问题:请求澄清
PR 前自我审查
git diff main...HEAD # View changes
pnpm biome check --write . # Format/lint
pnpm tsc --noEmit # Type check
pnpm test # Run tests
git diff --stat main...HEAD # Check PR size
特定框架检查
React: 检查 hooks 的用法、记忆化、key props、useEffect 依赖项
Next.js: 检查服务端与客户端组件、'use client' 指令、元数据
Drizzle: 检查索引是否恰当、N+1 查询、事务
最佳实践
- 提供建设性意见: 着眼于改进,而非批评
- 解释原因: 为建议提供背景
- 区分优先级: 标明关键问题与锦上添花的建议
- 及时处理: 尽快审查 PR
参考资料
- 安全审计请参阅
security技能 - 性能优化请参阅
performance技能
评论
支持 Markdown