Communitygithub.com

sshdkeyu/skill-prod-cursor

本番データアクセス用プレイブック。N+1 クエリ問題を解決します。ループ内でデータベースにクエリを発行するコード、ORM が行ごとに関連を遅延ロードする場合、またはリストエンドポイントが5行では速いのに50行では遅い場合に使用します。解決事例は references/bad-vs-good.md にあります。HTTP コントラクト設計や Go/JavaScript 言語スタイルには使用しないでください。

skill-prod-cursor とは?

このスキルは、N+1 クエリ問題という一般的なデータベースパフォーマンスの落とし穴を特定・修正するための実践的なプレイブックです。主に Python (Django/Flask/SQLAlchemy)、Ruby on Rails (ActiveRecord)、Java (Hibernate/JPA) などの ORM を使用するバックエンド開発を対象としており、Claude Code や Cursor などの AI エージェントがコードベースを分析し、遅延ロードやループ内クエリを早期発見できるように支援します。このスキルは「references/bad-vs-good.md」を参照し、実際の悪い例と良い例を示しながら、選択的読み込み(eager loading)、バッチ読み込み、結合の最適化といった改善手法を学べるよう設計されています。スキルが「完了」と判断する条件は明確で、N 件の親に対して N 回のクエリが発行されないこと、クエリログやトレースで固定回数(1~2回、または 1 + N/バッチ)のステートメントのみが記録されること、ページネーション時に結合行の数ではなく要求した親の数が返されること、の3点です。これにより、開発者はコードのパフォーマンスを体系的に改善でき、本番環境でのスケーラビリティ問題を未然に防ぐことができます。

対応~Claude Code~Codex CLI✓Cursor
npx skills add https://github.com/sshdkeyu/skill-prod-cursor/tree/HEAD/skills/data-access

お気に入りのAIに質問する

このエージェントスキルを事前に読み込んだ状態で新しいチャットを開きます。

ドキュメント

データアクセス

ルール 03 は基本です。N+1 を禁止、ホットパスでの SELECT * を禁止、クエリはインデックスを利用、大量リストはページネーション。このスキルは、ORM やループがラウンドトリップを隠してしまうときに、そのルールがどのように破られるかを扱います。

コレクションから関連をロードする前、マッピングを eager に設定する前、または one-to-many をページングされたリストに結合する前に、references/bad-vs-good.md を読んでください。

完了条件

  • N 件の親のリストに対して、同じ関連に対して N 回のクエリが発行されない。
  • クエリログまたはトレースが、1行につき1回ではなく、固定された回数(1回または2回、または 1 + N/バッチ)のステートメントを示している。
  • 親のページが、結合行のページではなく、要求した数の親を返す。

Individual skills in this repo

This repo contains 4 individual skills — each has its own dedicated page.

関連スキル