code-review について
機能、品質、型安全性、テスト、パフォーマンス、セキュリティのチェックリストを備えたコードレビュー用スキルです。TypeScript プロジェクトをレビューする開発者向けに、コマンド例と建設的な指摘の優先度マーカーも含みます。
主な機能
- 01機能と境界条件の確認
- 02コード品質チェックリスト
- 03型安全性の確認
- 04テストとカバレッジのレビュー
- 05性能とセキュリティの確認
- 06レビュー指摘の優先度マーカー
活用シーン
- 01Pull Request のレビュー
- 02マージ前の TypeScript 変更確認
- 03PR 提出前のセルフレビュー
インストール
コマンドをコピーしてターミナルで実行します。
$
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: フックの使用方法、メモ化、key プロパティ、useEffect の依存関係を確認します
Next.js: サーバーコンポーネントとクライアントコンポーネントの使い分け、'use client' ディレクティブ、メタデータを確認します
Drizzle: 適切なインデックス、N+1 クエリ、トランザクションを確認します
ベストプラクティス
- 建設的に伝える: 批判ではなく、改善点に焦点を当てます
- 理由を説明する: 提案の背景を伝えます
- 優先順位を付ける: 重大な問題と、あると望ましい改善を区別します
- 迅速に対応する: PR を速やかにレビューします
参考資料
- セキュリティ監査については
securityスキルを参照してください - パフォーマンスの最適化については
performanceスキルを参照してください
コメント
Markdown 対応