dotfiles/claude/skills/sql-generator/SKILL.md
アプリケーションのDBスキーマやコードを解析して、ユーザーの要求に応じたSQLクエリを生成する。「○○を取得するSQL」「○○を更新するSQL」「○○のデータを集計したい」などのリクエストでトリガーする。PostgreSQL向け。
npx skillsauth add octkp/base sql-generatorInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
DBスキーマとアプリケーションコードを解析し、目的のSQLを生成する。
SQLファイル
対応するDB(bamanager or xba)によってディレクトリを分ける。
/Users/takano_y/.claude/skills/sql-generator/sqls/bamanager/{任意の名前(日本語)}.sql
/Users/takano_y/.claude/skills/sql-generator/sqls/xba/{任意の名前(日本語)}.sql
※ QA検証用のテストデータSQLは charge-test-data-generator スキルを使用すること。
プロジェクト内のスキーマ定義を探す:
# SQLファイルを検索
find . -name "*.sql" -type f | head -20
# マイグレーションディレクトリを探す
find . -type d -name "migrations" -o -name "migrate" -o -name "db" 2>/dev/null
よくある場所:
db/migrations/migrations/sql/schema/database/CREATE TABLE文からテーブル構造を把握:
関連テーブルのリレーションを理解するために外部キー制約を確認。
複雑なクエリの場合、既存の実装を参照:
# リポジトリ/DAOパターンを探す
find . -name "*Repository*" -o -name "*DAO*" -o -name "*Query*" 2>/dev/null
# SQLを含むコードを検索
grep -r "SELECT\|INSERT\|UPDATE\|DELETE" --include="*.ts" --include="*.py" --include="*.go" .
ユーザーの要求に基づいてSQLを生成。以下を考慮:
SELECT文
SELECT * は使わない)INSERT/UPDATE/DELETE文
集計クエリ
PostgreSQLの SET と current_setting を使用して変数を管理する。
-- 数値
SET v.変数名 = '値';
-- 文字列
SET v.変数名 = '文字列値';
-- 数値として使用(キャストが必要)
WHERE column = current_setting('v.変数名')::int
-- 文字列として使用
WHERE column = current_setting('v.変数名')
-- UUIDとして使用
WHERE column = current_setting('v.変数名')::uuid
活用すべき機能:
RETURNING - INSERT/UPDATE/DELETE結果の取得ON CONFLICT DO UPDATE - UPSERTWITH (CTE) - 複雑なクエリの分解LATERAL JOIN - サブクエリの相関ARRAY, JSONB - 構造化データ型COALESCE, NULLIF - NULL処理-- 目的: [クエリの目的を簡潔に説明]
-- 対象テーブル: [使用するテーブル]
-------------------------------
-- 変数設定(実行前に値を変更)
-------------------------------
SET v.変数名1 = '値1';
SET v.変数名2 = '値2';
-------------------------------
-- クエリ実行
-------------------------------
SELECT ...
FROM ...
WHERE column = current_setting('v.変数名1')::型;
必要に応じて:
SELECT * は使わないAS "日本語名" や AS alias_name でのリネームはしないFROM invoices i のようなエイリアスは使わず、フルテーブル名を使用する悪い例:
SELECT i.charge_date, i.charge_amount FROM invoices i;
良い例:
SELECT invoices.charge_date, invoices.charge_amount FROM invoices;
documentation
base リポジトリ(~/base)の主要ディレクトリ(dotfiles / home / local / scripts / docs)の README.md と、リポジトリ直下の README.md を、実際のファイル構成に合わせて更新・新規作成するスキル。各ディレクトリの中身を実際に走査して内容を導出するので、設定追加・ディレクトリ移動のあとに走らせると README が現状と一致する。「READMEを更新して」「READMEを作り直して」「base のドキュメントを整える」「/base-readme」などのリクエストで使用。
development
旧 badev-knowledge-base リポの docs/{苗字}/ 配下を、許可リストの現役メンバー 4 人 (takano / tokita / yukioka / ushiroyama) に絞って ba2-workspace/docs/ に同期するスキル。旧リポを source of truth として、衝突時は新リポ側を旧リポで上書きする。コミット・プッシュは行わず、git add までで停止する。「badev-knowledge-base から同期して」「旧リポのナレッジを取り込んで」「badev-knowledge-sync を走らせて」「旧 docs を同期」などのリクエストでトリガー。
documentation
チケット番号(BAX-XXXX)を伝えるだけで、ba2-ticket-knowledge-logger が記録したナレッジドキュメント(README.md / LOG.md / PLAN.md)を全ユーザー・全カテゴリ横断で自動検索して読み込み、要約して提示するスキル。別セッションで過去の調査・実装内容を読み直したいときに使う。「BAX-10987」「BAX-10325のナレッジ読んで」「前に調べたBAX-XXXXの記録」「BAX-XXXXの続きをやりたい」「BAX-XXXX読み直して」などのリクエストでトリガー。
tools
チケット番号(BAX-XXXX)とカテゴリ(調査/実装/その他)を指定して、会話ログとまとめファイルを記録し、JIRAチケットにもコメントとしてナレッジを投稿するスキル。「BAX-10325の調査を記録」「実装にチケット作成」「会話ログを保存」などのリクエストで使用。