mcpField
S
sqlalchemy-code-review

sqlalchemy-code-review

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

sqlalchemy-code-review について

SQLAlchemy のコードレビュー向けスキルで、セッション、リレーション、クエリ、Alembic のマイグレーションを確認します。セッションのライフサイクル、N+1 クエリ、マイグレーションに関する指摘には、ファイルと行番号の根拠を求めます。

主な機能

  1. 01セッションライフサイクルのチェックリスト
  2. 02リレーション読み込みと N+1 の確認
  3. 03SQLAlchemy 2.0 クエリの指針
  4. 04一括操作のレビュー項目
  5. 05Alembic マイグレーションの確認

活用シーン

  1. 01セッションの作成とクリーンアップのレビュー
  2. 02N+1 クエリの可能性の発見
  3. 03マイグレーションの可逆性確認

インストール

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

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

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

同梱ファイル

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

references/
migrations.md
queries.md
relationships.md
sessions.md

詳細

SQLAlchemy コードレビュー

クイックリファレンス

問題の種類参照先
セッションのライフサイクル、コンテキストマネージャー、非同期セッションreferences/sessions.md
relationship()、遅延読み込み、N+1、joinedloadreferences/relationships.md
select() と query() の比較、ORM のオーバーヘッド、一括操作references/queries.md
Alembic のパターン、ロールバック可能なマイグレーション、データマイグレーションreferences/migrations.md

レビューチェックリスト

  • セッションでコンテキストマネージャー(with、async with)を使用している
  • リクエスト間またはスレッド間でセッションを共有していない
  • セッションを適切に終了・クリーンアップしている
  • relationship() で適切な lazy 戦略を使用している
  • N+1 を避けるため、joinedload/selectinload を明示的に指定している
  • ループ内で遅延読み込みを行っていない(N+1 クエリ)
  • レガシーな query() ではなく、SQLAlchemy 2.0 の select() 構文を使用している
  • 一括操作では ORM のループではなく、bulk_insert/bulk_update を使用している
  • 非同期セッションで適切な非同期コンテキストマネージャーを使用している
  • マイグレーションが downgrade() でロールバック可能である
  • データマイグレーションでは ORM モデルではなく op.execute() を使用している
  • マイグレーションの依存関係が適切な順序になっている

ゲート(SQLAlchemy 固有)

SQLAlchemy 関連の各指摘について 1 回ずつ、file:line を特定できた後(review-verification-protocol を参照)、指摘を確定する前に実行します。手順の合格条件を満たさない場合は、記載どおりの指摘を断定しないでください。証拠を集める、指摘を取り下げる、重大度を下げる、または質問形式に言い換えてください。

ゲート 1 — セッションのスコープとライフサイクル
手順アクション合格条件
1aセッションが作成または注入されているモジュールを(記憶に頼らず)開きます。Session、sessionmaker、async_session、またはセッションを生成するファクトリー/Depends() の file:line。
1bリーク、リクエスト間の共有、またはクリーンアップ漏れを指摘する場合:セッションのスコープ(コンテキストマネージャー、try/finally、ミドルウェア)を追跡します。file:line の範囲で引用したスコープ範囲。確認後、スコープが正しければ指摘を取り下げます。
ゲート 2 — N+1、遅延読み込み、先読み込み
手順アクション合格条件
2aループまたは繰り返し呼び出される箇所(ORM 属性へのアクセス、ループ内の execute)を特定します。ループまたはホットパスの file:line。
2bN+1 を指摘する場合:反復ごとに実行されるリレーションシップまたはクエリパターンを明示します。file:line を示したリレーションシップまたは反復ごとの SQL パターン。不明確な場合は質問形式に言い換えます。
ゲート 3 — マイグレーション(Alembic)
手順アクション合格条件
3aリビジョンファイルを開きます(例:versions/ の下、またはプロジェクトの Alembic レイアウト内)。revision/upgrade/downgrade のリポジトリ相対パスと file:line。
3bdowngrade() の不具合またはリスクのあるデータマイグレーションを指摘する場合:該当する op.*/op.execute() を示します。指摘する各操作について、そのファイル内のスニペットまたは行範囲を示します。示せない場合は指摘を取り下げます。

参照資料を読み込むタイミング

  • セッションの作成/クリーンアップをレビューする場合 → sessions.md
  • モデルのリレーションシップをレビューする場合 → relationships.md
  • データベースクエリをレビューする場合 → queries.md
  • Alembic のマイグレーションファイルをレビューする場合 → migrations.md

レビュー時の質問

  1. すべてのセッションがコンテキストマネージャーで適切に管理されていますか?
  2. N+1 クエリを避けるようにリレーションシップが設定されていますか?
  3. クエリで SQLAlchemy 2.0 の select() 構文を使用していますか?
  4. すべてのマイグレーションがロールバック可能で、適切にテストされていますか?

コメント