| name | db-access-analysis |
| description | Goプロジェクト内でDBアクセス(CRUD)が発生している関数・テーブルをisucrudで解析し、コーディングエージェントが「どの関数からどのテーブルにINSERT/UPDATE/DELETE/SELECTが行われるか」を把握するためのスキル。キャッシュ対象の判断、N+1の特定、DBアクセスを伴う関数の影響範囲調査、リファクタリング前のCRUD確認などに使用する。Go (database/sql, sqlx 等) で書かれたプロジェクトが対象。 |
DB Access Analysis (isucrud)
このスキルは isucrud を用いて Go プロジェクトの DB アクセス箇所を静的解析し、結果をエージェントが扱いやすい形 (Markdown + Mermaid) に出力するためのものです。
このスキルを使うべき場面
次のような問いがあるときに使います。
- 「この関数を変更すると、どのテーブルへの書き込みに影響するか?」
- 「テーブル
xxx にアクセスしているのはどの関数か?」
- 「キャッシュを入れるべきテーブルはどれか?(読み込みが多く更新が少ないもの)」
- 「ループ内でクエリが発行されている箇所(N+1 候補)はどこか?」
- 「初期化処理を除いた本番コードパスでの CRUD はどうなっているか?」
逆に、Go 以外の言語で書かれたプロジェクト、ORM がビルドタグ等で隠されているコードベース、SQL を文字列リテラルではなく完全に動的生成しているコードでは精度が大きく落ちるので、結果を鵜呑みにせず元コードで確認すること。
前提
- 解析対象は Go モジュール (
go.mod がある) のリポジトリ。
go コマンドが利用可能であること(isucrud は内部で golang.org/x/tools/go/packages 経由でビルドする)。
- 対象プロジェクトの依存解決ができること(必要に応じて
go mod download を先に実行)。
手順
1. isucrud をインストール
go install github.com/mazrean/isucrud@latest
$GOPATH/bin (デフォルトでは $HOME/go/bin) が PATH に通っていなければ、フルパスで呼び出すか PATH を更新する。
2. 対象プロジェクトのルートで実行(標準出力で受け取る)
解析対象の Go プロジェクトのルート(go.mod があるディレクトリ)に移動した上で、-dst - を指定して標準出力に Markdown を出させる。エージェントは Bash ツールの実行結果としてそのまま読み取れるため、ファイルを介さずに解析できる。
isucrud -dst - ./...
実行結果として、Mermaid 形式の DB アクセスグラフを含む Markdown が標準出力に流れてくる。エージェントはこの出力を直接コンテキストに取り込み、関数とテーブルの依存関係を把握する。
3. ノイズを減らすオプション