エンジニア技術面接の壁打ちスキル。設計判断が問われる問題を出題し、回答を4段階で採点して記録する。「勉強しよう」「クイズ出して」「面接対策」などで起動。
中文简介正在准备中。当前显示原文说明。
Review database schema design and detect anti-patterns. Based on common RDB design knowledge and best practices. Supports Prisma, Drizzle, Rails, Django, Laravel, TypeORM, Sequelize, SQLAlchemy, and raw SQL (DDL). Use when the user says "review DB design", "check schema", "review table design", "review migration", "check for anti-patterns", "DB設計をレビューして", "スキーマを見て", "テーブル設計を確認して", "マイグレーションをレビューして", "アンチパターンがないか調べて", "この設計で問題ないか見て".
中文简介正在准备中。当前显示原文说明。
查看安装方法安装前可以查看交给 AI 代理的指令内容。
プロジェクトのDB設計を、一般的なRDB設計のベストプラクティスとアンチパターンの知見をもとにレビューするスキル。 アンチパターンの「候補」を深刻度別に洗い出し、ユーザーが選んだ箇所だけをプロジェクト文脈を踏まえて深掘りする。
検出するのは「アンチパターンの可能性がある箇所」であって、断定された「NG」ではない。
許容されるケース を意識し、最終判断はユーザーに委ねる。1. モード選択(スキーマ / 全体)
↓
2. スキーマファイルの自動検出(見つからなければパスを聞く)
↓
3. 全体モードならクエリ/モデルのディレクトリを聞く
↓
4. チェックファイルを読んでレビュー実行
↓
5. 深刻度別に結果を出力(注意書き付き)
↓
6. 深掘りしたい箇所を選んでもらう → 文脈を踏まえた壁打ち
AskUserQuestion で2モードから選んでもらう。
| モード | 入力対象 | ユースケース |
|---|---|---|
| スキーマモード | スキーマファイルのみ | サクッとレビュー |
| 全体モード | スキーマ + 指定ディレクトリ配下のクエリ・モデル | フルレビュー |
下記のglobパターンでスキーマファイルを探索する。 複数形式が見つかったら、どれをレビュー対象にするかユーザーに確認する。 1つも見つからなければ、スキーマファイルのパスを聞く。
| 形式 | globパターン |
|---|---|
| Prisma | **/schema.prisma |
| Drizzle | **/schema.ts / **/db/schema/**/*.ts / **/drizzle/**/*.ts |
| Rails | **/db/schema.rb / **/db/migrate/*.rb |
| Django | **/models.py / **/*/models/*.py |
| Laravel | **/database/migrations/*.php |
| TypeORM | **/*.entity.ts |
| Sequelize | **/models/*.{js,ts} / **/migrations/*.js |
| SQLAlchemy | **/models.py / **/models/*.py |
| 生SQL(DDL) | **/*.sql(CREATE TABLE を含むもの) |
node_modules / vendor / .venv / dist / build 配下は除外する。
全体モードでは、クエリ・モデル・リポジトリが含まれるディレクトリをユーザーに聞く。
指定ディレクトリ配下から、SQLキーワード(JOIN, WHERE, LIKE, OFFSET, ORDER BY, FOR UPDATE, CREATE VIEW 等)やORM呼び出し(.offset(), .skip(), .findMany() 等)を含む記述を探索対象にする。
ORM自動検出はしない(フレームワーク非依存で動かす)。
モードに応じて読むファイルを変える。チェックの本体はSKILL.mdには書いていない。必ず読むこと。
references/schema-checks.md を読んでレビュー実行references/schema-checks.md + references/full-checks.md の両方を読んでレビュー実行各チェックの 検出方法 に従ってスキーマ/コードを走査し、該当箇所を集める。
許容されるケース に当てはまりそうなものは、深刻度を下げるか注意書きを添える。
後述の「出力フォーマット」に従い、深刻度でグルーピングして出力する。 この段階では改善案を出さない(一覧と所在のみ)。
ユーザーが選んだ指摘について:
ここで初めて改善提案を生成する。チェックファイルに改善案を書いていないのは、文脈なしの汎用改善案より、コードを読んだ上での具体案の方が役立つため。
深刻度でグルーピングし、各レベルの説明を見出しに含める。冒頭に必ず注意書きを付ける。
> ⚠️ 以下はアンチパターンの**可能性**がある箇所です。
> プロジェクトの要件上、意図的に採用しているケースもあります。最終判断はあなたに委ねます。
## CRITICAL — データ不整合・データ消失リスク
- `users.deleted_flag` — フラグによる論理削除(UNIQUE制約・FKが効かなくなる)
- `orders` → `users` — FK制約の欠如
## HIGH — パフォーマンス劣化・保守困難
- `orders.idx_status` — 低カーディナリティ列への単独INDEX
- `event_guests.guest_1..guest_5` — 繰り返しカラム(マルチカラムアトリビュート)
## MEDIUM — 将来的な技術的負債
- `m_code` — 単一参照テーブル(OTLT)の疑い
- `data` / `info` カラム — 汎用的すぎる命名
---
検出: CRITICAL 2件 / HIGH 2件 / MEDIUM 2件
→ 深掘りしたい箇所を選んでください(番号・カラム名・「CRITICAL全部」などで指定OK)
| レベル | 基準 | 例 |
|---|---|---|
| CRITICAL | データ不整合・データ消失リスク | FK欠如、履歴なし上書き設計、論理削除フラグ |
| HIGH | パフォーマンス劣化・保守困難 | 効かないINDEX、ジェイウォーク、繰り返しカラム、N+1 |
| MEDIUM | 将来的な技術的負債 | 命名不統一、コメント欠落、グレーノウハウの濫用 |
チェックファイルに各チェックの 深刻度 を記載しているが、それは初期分類。
許容されるケース に強く当てはまる場合や、テーブルが小さく影響が無視できる場合は、深刻度を1段下げる判断をしてよい(その旨を注記する)。
还没有评价。欢迎分享你的使用感受。
无需登录即可发表。欢迎分享使用感受、提问,或说明在哪些环境下无法运行。
还没有评论。来写第一条吧。
エンジニア技術面接の壁打ちスキル。設計判断が問われる問題を出題し、回答を4段階で採点して記録する。「勉強しよう」「クイズ出して」「面接対策」などで起動。
中文简介正在准备中。当前显示原文说明。