mcpField
C
code-review

code-review

github.com/motormetricsテスト・品質2280 回インストール1 日前に更新
リポジトリ

code-review について

機能、品質、型安全性、テスト、パフォーマンス、セキュリティのチェックリストを備えたコードレビュー用スキルです。TypeScript プロジェクトをレビューする開発者向けに、コマンド例と建設的な指摘の優先度マーカーも含みます。

主な機能

  1. 01機能と境界条件の確認
  2. 02コード品質チェックリスト
  3. 03型安全性の確認
  4. 04テストとカバレッジのレビュー
  5. 05性能とセキュリティの確認
  6. 06レビュー指摘の優先度マーカー

活用シーン

  1. 01Pull Request のレビュー
  2. 02マージ前の TypeScript 変更確認
  3. 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 クエリ、トランザクションを確認します

ベストプラクティス

  1. 建設的に伝える: 批判ではなく、改善点に焦点を当てます
  2. 理由を説明する: 提案の背景を伝えます
  3. 優先順位を付ける: 重大な問題と、あると望ましい改善を区別します
  4. 迅速に対応する: PR を速やかにレビューします

参考資料

  • セキュリティ監査については security スキルを参照してください
  • パフォーマンスの最適化については performance スキルを参照してください

コメント