mcpField
S
swift-code-review

swift-code-review

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

swift-code-review について

swift-code-reviewは、段階的な手順でSwiftの変更を確認するレビュースキルです。言語バージョンの確認、周辺コードの読解、問題の検証を経て、位置と重要度を添えて指摘を報告します。

主な機能

  1. 014段階のレビューゲート
  2. 02Swiftのバージョンとツールチェーンの確認
  3. 03変更箇所を含むシンボル全体の読解
  4. 04変更内容に応じたチェック項目の選定
  5. 05位置と重要度を添えた指摘の報告

活用シーン

  1. 01並行処理やエラー処理の変更レビュー
  2. 02SwiftUIの状態管理とバインディングの確認
  3. 03検証後のコードレビュー報告の作成

インストール

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

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

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

同梱ファイル

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

references/
common-mistakes.md
concurrency.md
error-handling.md
observable.md

詳細

Swift コードレビュー

レビューワークフロー

以下の手順を順番どおりに実施してください。以下のすべてのパス条件を満たすまで、指摘事項を出力しないでください。

  1. Swift/ツールチェーンの基準を確認する — 言語とツールの状況を把握します。Package.swift の // swift-tools-version、マニフェスト内のターゲットごとの Swift 言語バージョンや swiftSettings、Xcode の場合はプロジェクトまたはターゲットのビルド設定にある SWIFT_VERSION(または同等の設定)を確認します。レビューが単一ファイルのみかどうかも記録します。
    パス条件: 厳密な並行処理、移行時のみの構文、または SDK の利用可否に依存する助言を行う前に、具体的な Swift 言語バージョンまたはモード(例:Swift 6 言語モード、tools 5.10)を明記します。

  2. 周辺コードを読む — 変更された各 .swift ファイルについて、差分部分だけでなく、編集を含む型、関数、メソッド、またはプロパティの全体を読みます。
    パス条件: 変更されたファイルごとに、変更を含む囲みシンボル(型またはメンバー)を少なくとも1つ全文読みます。

  3. チェックリストの対象範囲を決める — クイックリファレンスを使って、適用するレビューチェックリストの項目とリファレンスを判断し、該当するリファレンスファイルを開きます。差分と明らかに無関係な項目はスキップします。
    パス条件: レビューまたは作業メモに、適用したチェックリストの領域を記載するか、差分に関連する1行の理由を添えて N/A とします(例:「変更に SwiftUI/@Observable がない」)。

  4. 報告前の検証 — review-verification-protocolを読み、手順に従います。
    パス条件: 報告する各指摘について、そのスキルの順序付きハードゲートを満たします(シンボル全体を読む、「未使用」とする前に使用箇所を検索する、「処理漏れ」とする前に呼び出し元を確認する、重要度を適切に調整する、[FILE:LINE]で根拠を示す)。

ハードゲート(同じ順序、簡略版)

手順目的のパス条件
1バージョンまたは SDK に依存する助言を行う前に、Swift のバージョン/モード(または単一ファイルのみであることの明示的な制約)を記録する。
2差分だけでなく、変更された各ファイルの囲みシンボル全体を読む。
3チェックリストの領域とリファレンスを記載するか、差分に関連する理由を添えて N/A とする。
4報告するすべての問題について、review-verification-protocolを完了する。

出力形式

以下の形式で指摘事項を報告します。

[FILE:LINE] ISSUE_TITLE
Severity: Critical | Major | Minor | Informational
Description of the issue and why it matters.

クイックリファレンス

問題の種類リファレンス
async/await、actors、Sendable、Taskreferences/concurrency.md
@Observable、@ObservationIgnored、@Bindablereferences/observable.md
throws、Result、try?、typed throwsreferences/error-handling.md
強制アンラップ、保持サイクル、命名references/common-mistakes.md

レビューチェックリスト

  • 実行時データ(ネットワーク、ユーザー入力、ファイル)に対して強制アンラップ(!)を使用していない
  • プロパティとして保持されるクロージャでは [weak self] を使用している
  • デリゲートプロパティは weak になっている
  • 独立した非同期処理には async let または TaskGroup を使用している
  • 長時間実行する Task では Task.isCancelled を確認している
  • Actor は保護すべき可変状態を持っている(ステートレスな Actor はない)
  • Sendable 型は実際にスレッドセーフである(@unchecked に注意)
  • エラーを明示的に処理している(空の catch ブロックはない)
  • カスタムエラーは LocalizedError に準拠し、説明的なメッセージを持っている
  • ネストされた @Observable オブジェクトにも @Observable を付けている
  • Observable オブジェクトへの双方向バインディングには @Bindable を使用している

リファレンスを読み込む条件

  • async/await、actors、または TaskGroups をレビューする場合 → concurrency.md
  • @Observable または SwiftUI の状態をレビューする場合 → observable.md
  • エラー処理または throws をレビューする場合 → error-handling.md
  • 一般的な Swift レビュー → common-mistakes.md

レビュー時の質問

  1. 並行実行できる非同期処理に async let を使用していますか?
  2. サスペンションポイントをまたいで Actor の状態が変化する可能性はありますか(リエントランシーバグ)?
  3. @unchecked Sendable は実際の同期処理によって裏付けられていますか?
  4. エラーは記録され、役立つコンテキストとともに提示されていますか?
  5. クロージャまたはデリゲートが保持サイクルを引き起こす可能性はありますか?

コメント