mcpField
U
urlsession-code-review

urlsession-code-review

github.com/existential-birdsテスト・品質85111 回インストール11 週間前に更新
リポジトリ

urlsession-code-review について

URLSessionを使うSwiftのネットワークコード向けレビュー技能です。レスポンス検証、セッションのライフサイクル、設定、転送、安全性を順に確認し、指摘には根拠を求めます。

主な機能

  1. 01URLSessionレビュー項目
  2. 02HTTPと通信エラーの確認
  3. 03セッションとリソースの確認
  4. 04バックグラウンド転送の確認
  5. 05手順付きのセキュリティ確認

活用シーン

  1. 01Swiftのネットワーク変更のレビュー
  2. 02HTTPステータスとエラー処理の確認
  3. 03バックグラウンド処理とファイル転送の監査
  4. 04ファイルと行番号を伴う指摘の作成

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/existential-birds/beagle --skill urlsession-code-review

インストール後、Claude Code で/urlsession-code-reviewを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
async-networking.md
caching.md
error-handling.md
request-building.md

詳細

URLSession のコードレビュー

クイックリファレンス

トピックリファレンス
非同期処理/Awaitasync-networking.md
リクエストrequest-building.md
エラーerror-handling.md
キャッシュcaching.md

レビューチェックリスト

レスポンスの検証
  • HTTP ステータスコードを検証している — URLSession は 404/500 でもエラーをスローしません
  • ステータスの確認前に、レスポンスを HTTPURLResponse にキャストしている
  • トランスポートエラー(URLError)と HTTP エラーの両方を処理している
メモリとリソース
  • ダウンロードしたファイルを移動または削除している(非同期 API は自動で削除しません)
  • デリゲートを使用するセッションで finishTasksAndInvalidate() を呼び出している
  • 長時間実行するタスクで [weak self] を使用している
  • 保持している Task の参照を、必要に応じてキャンセルしている
設定
  • timeoutIntervalForResource を設定している(デフォルトは 7 日です!)
  • URLCache を十分なサイズに設定している(デフォルトの 512KB は小さすぎます)
  • コネクションプーリングのためにセッションを再利用している
バックグラウンドセッション
  • 一意の識別子を使用している(特にアプリ拡張機能の場合)
  • ファイルベースのアップロードを使用している(データベースではなく)
  • 完了ハンドラーではなく、デリゲートメソッドを使用している
セキュリティ
  • シークレットをハードコードしていない(Keychain を使用する)
  • CRLF インジェクションを防ぐため、ヘッダー値をサニタイズしている
  • クエリパラメーターに URLComponents を使用している(文字列連結ではなく)

ハードゲート(指摘事項を報告する前に)

順番に完了してください。前のゲートが未完了の間は先に進まないでください。

  1. 対象範囲 — 合格: ネットワーク処理の経路で URLSession、URLRequest、HTTPURLResponse/URLResponse、URLCache、または URLError が現れる、レビュー対象のファイルを少なくとも 1 つ挙げます。該当するものがなければ、「対象範囲外」として終了します。
  2. HTTP とトランスポート — 合格: HTTP ステータスの処理漏れや「404 が成功として扱われる」ことを指摘する前に、response を受け取る completion/async/for await の経路について file:line を示し、HTTPURLResponse にキャストしているか、statusCode を確認しているかを明記します(または、それらを処理するヘルパーを示します)。ハンドラーを確認できない場合は、推測せず 不明 と伝えて、その提示を求めます。
  3. セッションのライフサイクル — 合格: デリゲートを持つ独自の URLSession については、finishTasksAndInvalidate() または根拠とする、文書化された長期利用/シングルトンのパターンを示します。指摘が設定に依存する場合は、.shared についてその旨を明記します。デリゲートの問題がない、単発の URLSession.shared のみを使用するケースは省略します。
  4. バックグラウンド処理またはファイル転送(該当する場合) — 合格: URLSessionConfiguration.background、downloadTask、またはアプリ拡張機能のスコープに限定されたセッションが登場する場合、指摘では必要に応じて識別子の一意性、デリゲートと完了ハンドラーの使い分け、またはファイル URL を示します。これらの API が登場しない場合は 該当なし として続行します。
  5. 重要度とチェックリスト — 合格: すべての 重大 項目に file:line を記載し、違反する レビューチェックリスト の小項目(例:レスポンスの検証、バックグラウンドセッション)を明記します。重要度の低い項目についても、根拠とするファイル名を示します。

出力形式

### Critical
1. [FILE:LINE] Missing HTTP status validation
   - Issue: 404/500 responses not treated as errors
   - Fix: Check `httpResponse.statusCode` is 200-299

コメント