with one click
db-apply
DB申請JiraチケットをもとにSQLを検証・生成し、レビュアー向けのレビューMDを出力する
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
DB申請JiraチケットをもとにSQLを検証・生成し、レビュアー向けのレビューMDを出力する
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
LuaLaTeX + Python matplotlib で技術書・社内教科書を作成・編集する
優しい偉人キャラクターとして思考を深め、プロジェクト管理をサポートする
hanzo・HANZO・foodiesプロダクトの仕様・実装・DBテーブルに関する質問に回答する。蓄積済み知見→ドキュメント→ソースコード→DBの優先順位で参照し、素早く正確に回答して知見を蓄積する。「hanzoの〇〇の仕様は?」「このテーブルの役割は?」「〇〇の実装はどうなってる?」のような質問時に使う
/miru で起動。直前のClaudeの回答が理解できない時に、段階を踏んで理解度を確認しながら理解へ導く
staging/hotfix/production環境のPostgreSQLにSSHトンネル経由で読み取り専用クエリを実行する
Redash APIを使ってクエリ情報・結果を取得・分析する。ユーザーがRedashのURLを貼った場合、「Redashを確認して」「このクエリを見て」などRedashへのアクセスが必要な場面で自動的に使用する。
| name | db-apply |
| description | DB申請JiraチケットをもとにSQLを検証・生成し、レビュアー向けのレビューMDを出力する |
| disable-model-invocation | true |
DB申請プロジェクト(Jira: DB)のチケットを処理するためのスキル。 チケットを読み込み、対話的な確認フローでSQLの正しさを検証し、レビュアー向けのMDを出力する。
$ARGUMENTS にJiraチケット番号が入る(例: DB-1953)。
引数が空の場合は「処理するDB申請チケット番号を教えてください」と聞く。
goals-inc.atlassian.netDB~/work/google_drive/db-apply/yyyymmdd/(yyyymmddは実行日)mcp__atlassian__getJiraIssue でチケットを取得する。取得フィールド:
summary, description, status, issuetype, assignee, reporter, createdcomment, attachment, issuelinks以下の2経路で関連チケットを探す:
a) issuelinks から
outwardIssue / inwardIssue のキーを全て取得し、mcp__atlassian__getJiraIssue で内容を読むb) description テキスト内のチケット番号から
INQUIRY-XXXX, BUG-XXXX, HANZO-XXXX 等のパターンを正規表現で抽出mcp__atlassian__getJiraIssue で取得するチケット番号を画面に表示する際は、必ずクリッカブルなMarkdownリンクにする:
[TICKET-NUMBER](https://goals-inc.atlassian.net/browse/TICKET-NUMBER)[INQUIRY-6657](https://goals-inc.atlassian.net/browse/INQUIRY-6657)添付ファイル (attachment フィールド) がある場合:
「添付ファイル
{filename}が必要です。 チケット(Jira)を開き、添付ファイルをクリックしてダウンロードし、 内容をここに貼り付けてください。」
blob: URLのため取得不可。
画像の内容が重要な場合は「このスクリーンショットに何が写っていますか?」とユーザーに説明を求める。Googleスプレッドシート / Googleドキュメントリンク がdescriptionに含まれる場合:
「チケットにGoogleスプレッドシートのリンクがあります: [URL] アクセスしてSQL等の内容をコピーして貼り付けていただけますか?」
その他アクセス不可なリンクがある場合も同様にユーザーに取得依頼する。
収集した情報で以下が不明な場合、ユーザーに問い合わせる:
問い合わせ文例:
「チケットに〇〇の情報が見当たりませんでした。Slackや元のINQUIRYチケットなど他に情報源はありますか?」
収集した情報をもとに、以下を整理する:
整理したら、ユーザーに確認する(AskUserQuestionツールを使用):
「このJiraチケットは『〇〇をしたい』ということで正しいですか?」 選択肢: 「はい、正しい」 / 「違う、補足します」
「違う」を選んだ場合はユーザーの補足を聞いてから次へ進む。
このフェーズの目的: 実行するSQLが正しいと「人間が理解できる根拠」を積み上げる。
DB接続は /query-db スキルの手順に従う(staging を優先し、確認が取れたら本番でも同様に確認する)。
各ステップは以下の形式で進める:
▶ ステップ N: 〇〇の確認
このチケットの対象は〜〜なので、まず以下のクエリで現状を確認しましょう。
```sql
-- 確認クエリ
SELECT ...;
実行してください。結果が〜〜になっていれば正しいです。
ユーザーが実行結果を貼り付けたら、期待値と照合し、OK/NGを判定する。
- OK → 「確認できました。次のステップへ進みます。」
- NG → 「期待と異なります。〇〇の可能性があります。」と原因を説明し、対処を提案する。
### 確認ステップの設計方針
操作の種類ごとに確認クエリを設計する:
**DELETE の場合**
1. 削除対象レコードが存在することを確認
2. 削除対象の周辺レコード(外部キー参照など)に影響がないことを確認
3. 削除後の期待状態を確認するSELECT(実行SQL後に使う)
**UPDATE の場合**
1. 更新対象レコードの現在値を確認
2. 更新後の期待値が妥当であることを確認
3. 影響範囲(件数)を確認
**INSERT の場合**
1. 挿入先テーブルの構造・制約を確認
2. 重複・競合が無いことを確認
3. 参照整合性(外部キー先が存在するか)を確認
### stagingと本番の扱い
- **staging**: `query-db` スキルで接続して自動実行してよい(readonly)
- **production**: 確認クエリは実行してよい。実行SQLは出力するだけで**Claude自身は実行しない**(ユーザーが実行する)
---
## フェーズ 4: 実行SQLの生成・整備
### SQL生成方針
- チケットにSQLが既にある場合 → 内容をレビューし、問題があれば修正案を提示する
- チケットにSQLがない場合 → フェーズ3の確認結果をもとに生成する
### SQLの必須要件
1. **トランザクション**: 必ず `BEGIN;` / `COMMIT;` / `ROLLBACK;` で囲む
2. **コメント**: 各ステートメントに「何をするか」のコメントを記載
3. **安全ガード**: WHERE句に十分な絞り込み条件(ID指定など)を入れ、誤爆を防ぐ
4. **件数確認**: `-- → DELETE N であること` のようなコメントで期待件数を明示
5. **確認SELECT**: COMMIT前に結果確認のSELECTを含める
### SQLフォーマットルール(sql-formatスキルに準拠)
- キーワードは小文字
- 行頭カンマ(`,` で始める)
- `where 1=1` で条件を連結しやすくする(複数条件の場合)
- インデントは2スペース
---
## フェーズ 5: レビューMDの出力
### 出力先
`~/work/google_drive/db-apply/yyyymmdd/DB-XXXX_review.md`
yyyymmddは実行日、XXXXはチケット番号。
### MDの構成(簡潔に。ダラダラ書かない)
```markdown
# DB-XXXX: [チケットサマリー]
## 概要
[1〜2文。何を、なぜ実行するか]
## 対象
| 項目 | 値 |
|------|-----|
| 業態 | 〇〇(company_id: ...) |
| 店舗 | 〇〇(shop_id: ...) |
| テーブル | job_targets, job_statuses |
| 件数 | 各1行 |
## 確認フロー(実施済み)
### ✅ ステップ1: [確認内容]
```sql
-- 確認クエリ
SELECT ...;
結果: [実際の結果を貼り付け]
判定: 対象レコードが存在することを確認
...
BEGIN;
-- [処理の説明]
DELETE FROM ...
WHERE ...;
-- → DELETE 1 であること
-- 確認
SELECT ...;
-- [期待値の説明]
-- 問題なければ:
COMMIT;
-- 問題があれば:
-- ROLLBACK;
[削除・更新対象レコードの現在値。COMMITを取り消す場合の復元方法]
### 出力後の案内
> 「レビューMDを出力しました: `~/work/google_drive/db-apply/yyyymmdd/DB-XXXX_review.md`
> Jiraへの回答(コメント貼り付け等)はご自身でお願いします。」
---
## パーミッション
以下は自動で実行してよい(ユーザー確認不要):
- Jiraチケットの読み取り(mcp__atlassian__getJiraIssue, searchJiraIssuesUsingJql)
- staging DBへのreadonly接続・クエリ実行
- `~/work/google_drive/db-apply/` への書き込み(レビューMD出力)
- 関連チケット・添付ファイルの読み取り
以下はユーザーに確認してから行う:
- production DBへのクエリ実行(確認SELECTであっても一言添える)
- Jiraへのコメント投稿(基本的にスキルは行わない)
---
## 注意事項
- **SQLは絶対に書き込みを実行しない**: productionでのINSERT/UPDATE/DELETEはスキルが実行しない。出力して「実行してください」と伝える
- **staging検証を原則とする**: 本番実行前にstagingで確認クエリを実行して事実を確かめる
- **UUIDは変わる**: staging/productionでIDが異なる可能性がある。確認クエリで特定してからSQLに反映する
- **スプレッドシートのSQLは必ずレビューする**: ユーザーが貼り付けたSQLをそのまま使わず、安全ガードが十分か確認する