dotfiles/claude/skills/charge-test-data-generator/SKILL.md
Big Advance課金機能のテストデータを作成するSQL生成スキル。企業の課金状態を特定のパターンに設定するSQLを生成する。「○○のテストデータを作成」「課金テスト用のデータ」「月払い→年払いパターン」「先月課金されて今月○○」などのリクエストでトリガー。課金タイプ変更(月払い⇔年払い)、課金タイミング(初回課金、継続課金、契約満了)のテストパターンに対応。「D-01のテストデータ」「B-02パターン」「無料期間終了パターン」「契約更新バッチ」などのパターン番号指定にも対応。
npx skillsauth add octkp/base charge-test-data-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.
課金機能テスト用のSQLを生成するスキル。企業の課金状態を特定のパターンに設定する。
対応するDB(bamanager or xba)と環境(aoba or cuba)によってディレクトリを分ける。
qa_sqls/
├── xba/
│ ├── aoba/ # aoba7環境用(bank_code: 0117)
│ │ └── {SQL No}_{パターン名}.sql
│ └── cuba/ # cuba7環境用(bank_code: 0542)
│ └── {SQL No}_{パターン名}.sql
└── bamanager/
├── aoba/ # aoba7環境用(bank_code: 0117)
│ └── {SQL No}_{パターン名}.sql
└── cuba/ # cuba7環境用(bank_code: 0542)
└── {SQL No}_{パターン名}.sql
フルパス:
/Users/takano_y/.claude/skills/charge-test-data-generator/qa_sqls/xba/{環境}/{パターン名}.sql/Users/takano_y/.claude/skills/charge-test-data-generator/qa_sqls/bamanager/{環境}/{パターン名}.sql| パターン | company_charge_type | company_next_charge_type | |---------|---------------------|--------------------------| | 月払い→月払い | MONTHLY | MONTHLY | | 月払い→年払い | MONTHLY | ANNUAL | | 年払い→月払い | ANNUAL | MONTHLY | | 年払い→年払い | ANNUAL | ANNUAL |
| パターン | 説明 | |---------|------| | 先月課金・今月課金予定 | 契約期間が先月末で終了 | | 今月初課金 | 課金開始日が今月 | | 年払い期間中 | 年払い契約期間の途中 | | 契約満了直前 | 年払い契約が今月末で満了 |
プレテスト環境(aoba7/cuba7)で使用するパターン。SQL Noをファイル名のプレフィックスとして使用する。
| パターン | 説明 | SQL操作 | 検証目的 | |----------|------|---------|----------| | D-01 | 年払い申込後、無料期間終了 | 無料期間終了日を過去日付に設定 | 無料期間満了後の課金データ生成確認 | | D-02 | 契約満了日の23:59→0:01をまたぐ | 契約終了日を検証日の前日に設定 | 日付境界での契約更新処理確認 | | D-03 | 年払い契約11ヶ月目(残1ヶ月) | 契約開始日を11ヶ月前に設定 | 契約満了間近での退会予約動作確認 | | D-04 | 年払い契約満了月の1日 | 契約終了日を検証月末に設定 | 契約更新メール・イベント生成確認 | | D-05 | 月払い→年払い変更予約後の契約満了 | 月払い契約終了日を検証日の前日に設定 | 年払いへの切替処理確認 | | D-06 | 年払い→月払い変更予約後の契約満了 | 年払い契約終了日を検証日の前日に設定 | 月払いへの切替処理確認 |
| パターン | 説明 | SQL操作 | 検証目的 | |----------|------|---------|----------| | F-01 | 年払いON→OFF後の既存年払いユーザー契約満了 | ①年払いONで年払い契約作成→②年払いOFF→③契約終了日を過去に設定 | 強制月払い切替確認 |
| パターン | 説明 | SQL操作 | 検証目的 | |----------|------|---------|----------| | B-01 | 課金データ作成バッチ実行後 | バッチ実行または同等のデータ状態作成 | 年払い課金データの正常生成確認 | | B-02 | 契約更新バッチ実行(年払い継続) | 契約満了日経過後のバッチ実行 | 年払い→年払いの更新確認 | | B-03 | 契約更新バッチ実行(年払い→月払い) | 変更予約済み+契約満了日経過後のバッチ実行 | プラン切替の更新確認 | | B-04 | メール送信バッチ(AM9:00) | 契約満了月1日の状態作成 | メール送信+イベント生成確認 |
| パターン | 説明 | SQL操作 | 検証目的 | |----------|------|---------|----------| | X-04 | 年払い2年目更新直前 | 2年目の契約満了日を検証日の翌日に設定 | 2回目以降の更新処理確認 |
| パターン | 説明 | SQL操作 | 検証目的 | |----------|------|---------|----------| | K-02 | 年払い満了→月払い変更+課金開始日が未来日 | 年払い契約満了+課金開始日を未来日に設定 | 再無料期間発生時の挙動確認 |
| パターン | 説明 | SQL操作 | 検証目的 | |----------|------|---------|----------| | CH-01 | 年払い契約満了月+課金無効 | 課金処理フラグをOFFに設定+契約満了月1日の状態作成 | 契約更新確認メールが送信されないこと |
SQL Noをファイル名のプレフィックスとして使用。
| 環境 | 金融機関コード | |------|----------------| | aoba7 | 0117 | | cuba7 | 0542 |
| SQL No | パターン | 説明 | aoba7 | cuba7 | |--------|----------|------|-------|-------| | 01 | D-01 + B-01 | 無料期間終了〜契約更新バッチ一連(初回年払い) | 123714352 | 123902124 | | 02 | B-02 | 契約更新バッチ実行(年払い継続) | 123657570 | 123528242 | | 03 | B-03 | 契約更新バッチ実行(年払い→月払い) | 123637984 | 123529190 | | 04 | D-02 | 契約満了日の23:59→0:01をまたぐ | 123583608 | 123529302 | | 05 | D-03 | 年払い契約11ヶ月目(残1ヶ月) | 123612848 | 123531604 | | 06 | D-04 + B-04 | 契約満了月1日(メール送信確認含む) | 123581219 | 123532307 | | 07 | D-05 + F-01 | 月払い→年払い変更予約後の契約満了 | 123582185, 123578422 | 123535186, 123555135 | | 08 | D-06 + F-01 | 年払い→月払い変更予約後の契約満了 | 123571118, 123570501 | 123566220, 123573857 | | 09 | X-04 | 年払い2年目更新直前 | 123560480 | 123588971 | | 10 | K-02 | 年払い満了→月払い変更+課金開始日が未来日 | 123560475 | 123628544 | | 11 | CH-01 | 年払い契約満了月+課金無効 | 123553837 | 123892092 |
{SQL No}_{パターン番号}_{説明}.sql
例:
01_D-01_B-01_初回の年払いパターン.sql02_B-02_年払い継続パターン.sql03_B-03_年払いから月払いパターン.sqldocs/プレテスト(test7)企業データ管理表.md - 企業IDとパターンの対応表docs/開発側データ操作が必要なパターン.md - 各パターンの詳細説明と優先度-- 目的: [テストパターンの説明]
-- 対象テーブル: companies
-------------------------------
-- 変数設定
-------------------------------
SET v.company_id = '企業ID';
-- companiesテーブル更新用
SET v.charge_type = 'MONTHLY';
SET v.next_charge_type = 'MONTHLY';
SET v.charge_amount = '3000';
SET v.next_charge_amount = '3000';
SET v.charge_start_at = 'YYYY-MM-01';
SET v.charge_period_start_date = 'YYYY-MM-DD';
SET v.charge_period_end_date = 'YYYY-MM-DD';
SET v.is_charge_target = '1';
-------------------------------
-- 1. 現在の状態を確認
-------------------------------
SELECT * FROM companies
WHERE company_id = current_setting('v.company_id')::int;
-------------------------------
-- 2. テストデータ更新
-------------------------------
UPDATE companies
SET
company_charge_type = current_setting('v.charge_type'),
company_next_charge_type = current_setting('v.next_charge_type'),
company_charge_amount = current_setting('v.charge_amount')::int,
company_next_charge_amount = current_setting('v.next_charge_amount')::int,
company_charge_start_at = current_setting('v.charge_start_at')::date,
company_charge_period_start_date = current_setting('v.charge_period_start_date')::date,
company_charge_period_end_date = current_setting('v.charge_period_end_date')::date,
company_is_charge_target = current_setting('v.is_charge_target')::int
WHERE company_id = current_setting('v.company_id')::int
RETURNING *;
課金データの作成が必要な場合(契約更新テストなど)に使用。
-- 目的: [テストパターンの説明]
-- 対象テーブル: companies, charges, charge_items
-------------------------------
-- 変数設定
-------------------------------
SET v.company_id = '企業ID';
-- ... 各種変数
-------------------------------
-- トランザクション開始
-------------------------------
BEGIN;
-------------------------------
-- 1. 現在の状態を確認
-------------------------------
-- companies
SELECT * FROM companies
WHERE company_id = current_setting('v.company_id')::int;
-- charges
SELECT * FROM charges
WHERE charges.charge_company_id = current_setting('v.company_id')::int
ORDER BY charges.charge_date DESC;
-- charge_items
SELECT * FROM charge_items
WHERE charge_items.ci_charge_id IN (
SELECT charges.charge_id FROM charges
WHERE charges.charge_company_id = current_setting('v.company_id')::int
)
ORDER BY charge_items.ci_charge_id DESC, charge_items.ci_seq;
-------------------------------
-- 2. テストデータ更新
-------------------------------
-- 2-1. charge_historiesクリア
DELETE FROM charge_histories WHERE ...;
-- 2-2. chargesクリア
DELETE FROM charges WHERE ...;
-- 2-3. charges作成
INSERT INTO charges (...) VALUES (...);
-- 2-4. charge_items作成
INSERT INTO charge_items (...) SELECT ...;
-- 2-5. companies更新
UPDATE companies SET ... WHERE ... RETURNING *;
-------------------------------
-- トランザクション終了
-------------------------------
COMMIT;
| カラム | 説明 | 値 | |--------|------|-----| | company_charge_type | 現在の課金タイプ | MONTHLY / ANNUAL | | company_next_charge_type | 次回の課金タイプ | MONTHLY / ANNUAL | | company_charge_amount | 課金金額(税抜) | 月払い: 3000 / 年払い: 33000 | | company_next_charge_amount | 次回課金金額(税抜) | 月払い: 3000 / 年払い: 33000 | | company_charge_start_at | 課金開始日 | 日付(1日固定) | | company_charge_period_start_date | 契約期間開始日 | 日付 | | company_charge_period_end_date | 契約期間終了日 | 月払い: 月末 / 年払い: +11ヶ月末 | | company_is_charge_target | 課金対象フラグ | 0 / 1 |
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の調査を記録」「実装にチケット作成」「会話ログを保存」などのリクエストで使用。