Agent Skills by ALSEL
Anthropic Claudeセキュリティ⭐ リポ 0品質スコア 50/100

code-review-checklist

機能性・セキュリティ・パフォーマンス・保守性の観点からコードレビューを体系的に実施するための包括的なチェックリストを提供します。レビュー漏れを防ぎ、一貫した品質基準でコードを評価したい場合に活用できます。

description の原文を見る

Comprehensive checklist for conducting thorough code reviews covering functionality, security, performance, and maintainability

SKILL.md 本文

コードレビューチェックリスト

概要

コードレビューを体系的に実施するためのチェックリストを提供します。このスキルはレビュアーがコード品質を確保し、バグを発見し、セキュリティ問題を特定し、コードベース全体の一貫性を保つのに役立ちます。

このスキルを使用するタイミング

  • プルリクエストをレビューする時
  • コード監査を実施する時
  • チーム向けのコードレビュー基準を確立する時
  • 新しい開発者にコードレビュー実践を教える時
  • レビューで何も見落とさないようにしたい時
  • コードレビュードキュメントを作成する時

仕組み

ステップ 1: コンテキストを理解する

コードをレビューする前に、以下を理解するのをお手伝いします:

  • このコードはどの問題を解決しますか?
  • 要件は何ですか?
  • どのファイルが変更されましたか、そしてなぜですか?
  • 関連する問題やチケットはありますか?
  • テスト戦略は何ですか?

ステップ 2: 機能性をレビューする

コードが正しく動作するかを確認します:

  • 述べられた問題を解決しますか?
  • エッジケースは処理されていますか?
  • エラーハンドリングは適切ですか?
  • 論理エラーはありませんか?
  • 要件と一致していますか?

ステップ 3: コード品質をレビューする

コード保守性を評価します:

  • コードは読みやすく明確ですか?
  • 名前は説明的ですか?
  • 適切に構造化されていますか?
  • 関数/メソッドは焦点が絞られていますか?
  • 不要な複雑さはありませんか?

ステップ 4: セキュリティをレビューする

セキュリティ問題をチェックします:

  • 入力は検証されていますか?
  • センシティブデータは保護されていますか?
  • SQLインジェクションのリスクはありませんか?
  • 認証/認可は正しいですか?
  • 依存関係は安全ですか?

ステップ 5: パフォーマンスをレビューする

パフォーマンス問題を探します:

  • 不要なループはありませんか?
  • データベースアクセスは最適化されていますか?
  • メモリリークはありませんか?
  • キャッシングは適切に使用されていますか?
  • N+1 クエリ問題はありませんか?

ステップ 6: テストをレビューする

テストカバレッジを検証します:

  • 新しいコードのテストはありますか?
  • テストはエッジケースをカバーしていますか?
  • テストは意味があるものですか?
  • すべてのテストが成功していますか?
  • テストカバレッジは十分ですか?

例 1: 機能性レビューチェックリスト

## 機能性レビュー

### 要件
- [ ] コードは述べられた問題を解決する
- [ ] すべての受け入れ基準を満たしている
- [ ] エッジケースが処理されている
- [ ] エラーケースが処理されている
- [ ] ユーザー入力が検証されている

### ロジック
- [ ] 論理エラーやバグがない
- [ ] 条件が正しい (オフバイワンエラーがない)
- [ ] ループは正しく終了する
- [ ] 再帰は適切な基本ケースを持つ
- [ ] 状態管理が正しい

### エラーハンドリング
- [ ] エラーが適切にキャッチされている
- [ ] エラーメッセージは明確で有用
- [ ] エラーがセンシティブ情報を露出しない
- [ ] 失敗した操作はロールバックされる
- [ ] ロギングが適切

### キャッチするべき問題の例:

**❌ 悪い例 - 検証がない:**
\`\`\`javascript
function createUser(email, password) {
  // 検証がない!
  return db.users.create({ email, password });
}
\`\`\`

**✅ 良い例 - 適切な検証:**
\`\`\`javascript
function createUser(email, password) {
  if (!email || !isValidEmail(email)) {
    throw new Error('Invalid email address');
  }
  if (!password || password.length < 8) {
    throw new Error('Password must be at least 8 characters');
  }
  return db.users.create({ email, password });
}
\`\`\`

例 2: セキュリティレビューチェックリスト

## セキュリティレビュー

### 入力検証
- [ ] すべてのユーザー入力が検証されている
- [ ] SQLインジェクションが防止されている (パラメータ化クエリを使用)
- [ ] XSSが防止されている (出力をエスケープ)
- [ ] CSRF保護が実装されている
- [ ] ファイルアップロードが検証されている (タイプ、サイズ、内容)

### 認証と認可
- [ ] 認証が必要な場所で実装されている
- [ ] 認可チェックが存在する
- [ ] パスワードがハッシュ化されている (平文で保存されていない)
- [ ] セッションが安全に管理されている
- [ ] トークンが適切に期限切れになる

### データ保護
- [ ] センシティブデータが暗号化されている
- [ ] API キーがハードコードされていない
- [ ] 環境変数がシークレット用に使用されている
- [ ] 個人データがプライバシー規制に従っている
- [ ] データベース認証情報が安全

### 依存関係
- [ ] 既知の脆弱な依存関係がない
- [ ] 依存関係が最新
- [ ] 不要な依存関係が削除されている
- [ ] 依存関係バージョンがピン留めされている

### キャッチするべき問題の例:

**❌ 悪い例 - SQLインジェクションリスク:**
\`\`\`javascript
const query = \`SELECT * FROM users WHERE email = '\${email}'\`;
db.query(query);
\`\`\`

**✅ 良い例 - パラメータ化クエリ:**
\`\`\`javascript
const query = 'SELECT * FROM users WHERE email = $1';
db.query(query, [email]);
\`\`\`

**❌ 悪い例 - ハードコードされたシークレット:**
\`\`\`javascript
const API_KEY = 'sk_live_abc123xyz';
\`\`\`

**✅ 良い例 - 環境変数:**
\`\`\`javascript
const API_KEY = process.env.API_KEY;
if (!API_KEY) {
  throw new Error('API_KEY environment variable is required');
}
\`\`\`

例 3: コード品質レビューチェックリスト

## コード品質レビュー

### 可読性
- [ ] コードは理解しやすい
- [ ] 変数名は説明的
- [ ] 関数名は何をするかを説明している
- [ ] 複雑なロジックにはコメントがある
- [ ] マジックナンバーが定数に置き換えられている

### 構造
- [ ] 関数は小さく焦点が絞られている
- [ ] コードは DRY 原則に従っている (Don't Repeat Yourself)
- [ ] 関心事の適切な分離
- [ ] コードスタイルが一貫している
- [ ] デッドコードやコメントアウトされたコードがない

### 保守性
- [ ] コードはモジュール化で再利用可能
- [ ] 依存関係は最小限
- [ ] 変更は後方互換性がある
- [ ] 破壊的変更が文書化されている
- [ ] 技術的負債が記録されている

### キャッチするべき問題の例:

**❌ 悪い例 - 不明確な命名:**
\`\`\`javascript
function calc(a, b, c) {
  return a * b + c;
}
\`\`\`

**✅ 良い例 - 説明的な命名:**
\`\`\`javascript
function calculateTotalPrice(quantity, unitPrice, tax) {
  return quantity * unitPrice + tax;
}
\`\`\`

**❌ 悪い例 - 関数が多すぎることをしている:**
\`\`\`javascript
function processOrder(order) {
  // 注文を検証
  if (!order.items) throw new Error('No items');
  
  // 合計を計算
  let total = 0;
  for (let item of order.items) {
    total += item.price * item.quantity;
  }
  
  // クーポンを適用
  if (order.coupon) {
    total *= 0.9;
  }
  
  // 支払いを処理
  const payment = stripe.charge(total);
  
  // メールを送信
  sendEmail(order.email, 'Order confirmed');
  
  // 在庫を更新
  updateInventory(order.items);
  
  return { orderId: order.id, total };
}
\`\`\`

**✅ 良い例 - 関心事が分離:**
\`\`\`javascript
function processOrder(order) {
  validateOrder(order);
  const total = calculateOrderTotal(order);
  const payment = processPayment(total);
  sendOrderConfirmation(order.email);
  updateInventory(order.items);
  
  return { orderId: order.id, total };
}
\`\`\`

ベストプラクティス

✅ これをする

  • 小さな変更をレビューする - 小さい PR はより徹底的にレビューできます
  • テストを最初にチェックする - テストが成功し、新しいコードをカバーしていることを確認
  • コードを実行する - 可能な限りローカルでテストする
  • 質問する - 仮定しないで、明確化を求める
  • 建設的にいく - 批判するだけでなく、改善を提案する
  • 重要な問題に焦点を当てる - マイナーなスタイルの問題を細かく指摘しない
  • 自動化ツールを使用する - リンター、フォーマッター、セキュリティスキャナー
  • ドキュメントをレビューする - ドキュメントが更新されているか確認
  • パフォーマンスを考慮する - スケールと効率性を考える
  • 回帰をチェックする - 既存の機能が引き続き動作することを確認

❌ これをしないで

  • 読まずに承認しない - 実際にコードをレビューする
  • 曖昧にしない - 具体的なフィードバックと例を提供する
  • セキュリティを無視しない - セキュリティ問題は重大
  • テストをスキップしない - テストされていないコードは問題を引き起こす
  • 失礼にならない - 尊重して専門的に
  • ゴム判を押さない - すべてのレビューは価値を加えるべき
  • 疲れている時にレビューしない - 重要な問題を見落とします
  • コンテキストを忘れない - より大きな状況を理解する

完全なレビューチェックリスト

レビュー前

  • PR 説明と関連する問題を読む
  • どの問題が解決されるのかを理解する
  • CI/CD でテストが成功しているか確認
  • ブランチをプルしてローカルで実行

機能性

  • コードは述べられた問題を解決する
  • エッジケースが処理されている
  • エラーハンドリングが適切
  • ユーザー入力が検証されている
  • 論理エラーがない

セキュリティ

  • SQLインジェクション脆弱性がない
  • XSS 脆弱性がない
  • 認証/認可が正しい
  • センシティブデータが保護されている
  • ハードコードされたシークレットがない

パフォーマンス

  • 不要なデータベースクエリがない
  • N+1 クエリ問題がない
  • 効率的なアルゴリズムが使用されている
  • メモリリークがない
  • キャッシングが適切に使用されている

コード品質

  • コードは読みやすく明確
  • 名前は説明的
  • 関数は焦点が絞られ小さい
  • コードの重複がない
  • プロジェクト規約に従っている

テスト

  • 新しいコードにはテストがある
  • テストはエッジケースをカバーしている
  • テストは意味がある
  • すべてのテストが成功している
  • テストカバレッジが十分

ドキュメント

  • コメントは「何」ではなく「なぜ」を説明している
  • API ドキュメントが更新されている
  • README が必要に応じて更新されている
  • 破壊的変更が文書化されている
  • 必要に応じてマイグレーションガイドが提供されている

Git

  • コミットメッセージが明確
  • マージコンフリクトがない
  • ブランチが main に最新
  • 不要なファイルがコミットされていない
  • .gitignore が適切に設定されている

よくある落とし穴

問題: エッジケースが見落とされている

症状: コードはハッピーパスで動作するが、エッジケースで失敗 解決策: 「もし...だったら?」という質問をする

  • 入力が null だったら?
  • 配列が空だったら?
  • ユーザーが認証されていなかったら?
  • ネットワークリクエストが失敗したら?

問題: セキュリティ脆弱性

症状: コードはセキュリティリスクを露出している 解決策: セキュリティチェックリストを使用

  • セキュリティスキャナーを実行 (npm audit, Snyk)
  • OWASP Top 10 をチェック
  • すべての入力を検証
  • パラメータ化クエリを使用
  • ユーザー入力を決して信頼しない

問題: テストカバレッジが不足

症状: 新しいコードにテストがないか、不十分 解決策: すべての新しいコードにテストを要求

  • 関数のユニットテスト
  • 機能の統合テスト
  • エッジケーステスト
  • エラーケーステスト

問題: コードが不明確

症状: レビュアーがコードが何をするか理解できない 解決策: 改善をリクエスト

  • より良い変数名
  • 説明的なコメント
  • より小さな関数
  • 明確な構造

レビューコメントテンプレート

変更をリクエスト

**問題:** [問題を説明]

**現在のコード:**
\`\`\`javascript
// 問題のあるコード
\`\`\`

**提案される修正:**
\`\`\`javascript
// 改善されたコード
\`\`\`

**理由:** [これがなぜ良いのか説明]

質問する

**質問:** [あなたの質問]

**コンテキスト:** [なぜ聞いているのか]

**提案:** [提案がある場合]

良いコードを褒める

**素晴らしい!** [好きなことを説明]

これが素晴らしいのは [理由を説明]

関連するスキル

  • @requesting-code-review - レビュー用にコードを準備
  • @receiving-code-review - レビューフィードバックに対応
  • @systematic-debugging - レビューで見つかった問題をデバッグ
  • @test-driven-development - コードにテストがあることを確認

追加リソース


Pro Tip: すべてのレビューにチェックリストテンプレートを使用して、一貫性と徹底性を確保しましょう。チームの特定のニーズに合わせてカスタマイズしてください!

ライセンス: MIT(寛容ライセンスのため全文を引用しています) · 原本リポジトリ

詳細情報

作者
davila7
リポジトリ
davila7/claude-code-templates
ライセンス
MIT
最終更新
不明

Source: https://github.com/davila7/claude-code-templates / ライセンス: MIT

関連スキル

Anthropic Claudeセキュリティ⭐ リポ 8,981

secure-code-guardian

認証・認可の実装、ユーザー入力の保護、OWASP Top 10の脆弱性対策が必要な場合に使用します。bcrypt/argon2によるパスワードハッシング、パラメータ化ステートメントによるSQLインジェクション対策、CORS/CSPヘッダーの設定、Zodによる入力検証、JWTトークンの構築などのカスタムセキュリティ実装に対応します。認証、認可、入力検証、暗号化、OWASP Top 10対策、セッション管理、セキュリティ強化全般で活用できます。ただし、構築済みのOAuth/SSO統合や単独のセキュリティ監査が必要な場合は、より特化したスキルの検討をお勧めします。

by Jeffallan
汎用セキュリティ⭐ リポ 1,982

claude-authenticity

APIエンドポイントが本物のClaudeによって支えられているか(ラッパーやプロキシ、偽装ではないか)を、claude-verifyプロジェクトを模した9つの重み付きルールベースチェックで検証できます。また、Claudeの正体を上書きしているプロバイダーから注入されたシステムプロンプトも抽出します。完全に自己完結しており、httpx以外の追加パッケージは不要です。Claude APIキーまたはエンドポイントを検証したい場合、サードパーティのClaudeサービスが本物か確認したい場合、APIプロバイダーのClaude正当性を監査したい場合、複数モデルを並行してテストしたい場合、またはプロバイダーが注入したシステムプロンプトを特定したい場合に使用できます。

by LeoYeAI
Anthropic Claudeセキュリティ⭐ リポ 2,159

anth-security-basics

Anthropic Claude APIのセキュリティベストプラクティスを適用し、キー管理、入力値の検証、プロンプトインジェクション対策を実施します。APIキーの保護、Claudeに送信する前のユーザー入力検証、コンテンツセーフティガードレールの実装が必要な場合に活用できます。「anthropic security」「claude api key security」「secure anthropic」「prompt injection defense」といったフレーズでトリガーされます。

by jeremylongshore
汎用セキュリティ⭐ リポ 699

x-ray

x-ray.mdプレ監査レポートを生成します。概要、強化された脅威モデル(プロトコルタイプのプロファイリング、Gitの重み付け攻撃面分析、時間軸リスク分析、コンポーザビリティ依存関係マッピング)、不変条件、統合、ドキュメント品質、テスト分析、開発者・Gitの履歴をカバーしています。「x-ray」「audit readiness」「readiness report」「pre-audit report」「prep this protocol」「protocol prep」「summarize this protocol」のキーワードで実行されます。

by pashov
汎用セキュリティ⭐ リポ 677

semgrep

Semgrepスタティック分析スキャンを実行し、カスタム検出ルールを作成します。Semgrepでのコードスキャン、セキュリティ脆弱性の検出、カスタムYAMLルールの作成、または特定のバグパターンの検出が必要な場合に使用します。重要:ユーザーが「バグをスキャンしたい」「コード品質を確認したい」「脆弱性を見つけたい」「スタティック分析」「セキュリティlint」「コード監査」または「コーディング標準を適用したい」と尋ねた場合も、Semgrepという名称を明記していなくても、このスキルを使用してください。Semgrepは30以上の言語に対応したパターンベースのコードスキャンに最適なツールです。

by wimpysworld
汎用セキュリティ⭐ リポ 591

ghost-bits-cast-attack

Java「ゴーストビッツ」/キャストアタック プレイブック(Black Hat Asia 2026)。16ビット文字が8ビットバイトに暗黙的に縮小されるJavaサービスへの攻撃時に使用します。WAF/IDSを回避して、SQLインジェクション、デシリアライゼーション型RCE、ファイルアップロード(Webシェル)、パストトラバーサル、CRLF インジェクション、リクエストスマグリング、SMTPインジェクションを実行できます。Tomcat、Spring、Jetty、Undertow、Vert.x、Jackson、Fastjson、Apache Commons BCEL、Apache HttpClient、Angus Mail、JDK HttpServer、Lettuce、Jodd、XMLWriterに影響し、WAFバイパスにより多くの「パッチ済み」CVEを再度有効化します。

by yaklang
本サイトは GitHub 上で公開されているオープンソースの SKILL.md ファイルをクロール・インデックス化したものです。 各スキルの著作権は原作者に帰属します。掲載に問題がある場合は info@alsel.co.jp または /takedown フォームよりご連絡ください。
原作者: davila7 · davila7/claude-code-templates · ライセンス: MIT