code-review-checklist について
開発者やレビュアー向けのコードレビュー用チェックリストスキルです。正確性、安全性、性能、テスト、ドキュメントに加え、AI生成コードの確認パターンやコメント分類も扱います。
主な機能
- 01正確性と境界条件の確認
- 02安全性と性能の確認
- 03テストとドキュメントの確認
- 04AIとプロンプトのレビュー形式
- 05レビューコメントの重要度ガイド
活用シーン
- 01マージ前の変更レビュー
- 02AI生成コードのリスク確認
- 03実行可能なレビューコメントの整理
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ vudovn/ ag-kit --skill code-review-checklistインストール後、Claude Code で/code-review-checklistを入力して読み込まれたか確認します。
詳細
コードレビューのチェックリスト
クイックレビューチェックリスト
正確性
- コードが期待どおりに動作する
- エッジケースが処理されている
- エラー処理が実装されている
- 明らかなバグがない
セキュリティ
- 入力が検証され、サニタイズされている
- SQL/NoSQL インジェクションの脆弱性がない
- XSS または CSRF の脆弱性がない
- シークレットや機密性の高い認証情報がハードコードされていない
- AI 固有:(該当する場合)プロンプトインジェクションへの対策がある
- **AI 固有:**重要なシンクで使用する前に、出力がサニタイズされている
パフォーマンス
- N+1 クエリがない
- 不要なループがない
- 適切なキャッシュが設定されている
- バンドルサイズへの影響が考慮されている
コード品質
- わかりやすい命名になっている
- DRY:重複コードがない
- SOLID 原則に従っている
- 適切な抽象化レベルになっている
テスト
- 新しいコードの単体テストがある
- エッジケースがテストされている
- テストが読みやすく、保守しやすい
ドキュメント
- 複雑なロジックにコメントがある
- 公開 API がドキュメント化されている
- 必要に応じて README が更新されている
AI と LLM のレビューパターン
ロジックとハルシネーション
- **思考の連鎖:**ロジックが検証可能な手順に沿っているか?
- **エッジケース:**空の状態、タイムアウト、部分的な障害を AI が考慮しているか?
- **外部状態:**ファイルシステムやネットワークについて、安全な前提に基づいてコードが作成されているか?
プロンプトエンジニアリングのレビュー
// ❌ Vague prompt in code
const response = await ai.generate(userInput);
// ✅ Structured & Safe prompt
const response = await ai.generate({
system: "You are a specialized parser...",
input: sanitize(userInput),
schema: ResponseSchema
});
指摘すべきアンチパターン
// ❌ Magic numbers
if (status === 3) { ... }
// ✅ Named constants
if (status === Status.ACTIVE) { ... }
// ❌ Deep nesting
if (a) { if (b) { if (c) { ... } } }
// ✅ Early returns
if (!a) return;
if (!b) return;
if (!c) return;
// do work
// ❌ Long functions (100+ lines)
// ✅ Small, focused functions
// ❌ any type
const data: any = ...
// ✅ Proper types
const data: UserData = ...
レビューコメントのガイド
// Blocking issues use 🔴
🔴 BLOCKING: SQL injection vulnerability here
// Important suggestions use 🟡
🟡 SUGGESTION: Consider using useMemo for performance
// Minor nits use 🟢
🟢 NIT: Prefer const over let for immutable variable
// Questions use ❓
❓ QUESTION: What happens if user is null here?
コメント
Markdown 対応