Supersetの利用状況を調べ、まだ使っていない機能と活用方法を提案します。定期実行や並列作業、タスク管理などを一つずつ説明し、選んだ機能を実際に設定します。
- 未使用のSuperset機能を知りたいとき
- エージェントの定期実行を設定したいとき
- 別ワークスペースで並列作業したいとき
Drizzleのデータベース変更を新しいNeonブランチで生成し、本番のテーブル規模やロック順序、負荷時の挙動を確認して適用前の安全性を点検するスキル。
Create a database migration with Drizzle on a fresh Neon branch, and check it is safe to run against production under load. Use when changing the packages/db schema, generating migrations, or reviewing one.
実行スコア 未検証
インストール方法を見るDrizzleでデータベース構造の変更ファイルを生成し、本番適用前の安全性を確認します。新しいNeonブランチで変更を試し、対象テーブルの容量、処理中のアクセスを制限するロックの順序、各SQLの実行時間を点検します。大きなテーブルや頻繁に使われるテーブルでは、pgbenchで負荷をかけたリハーサルも行います。
packages/dbのスキーマ変更や、生成済みの変更ファイルをレビューするときに向いています。列の型変更による全体の書き換え、ロックの競合、読み取り先の変更に伴うデータ移行漏れを確認したい場面に役立ちます。
Neon、Drizzle、Bunを使う構成が前提で、負荷検証にはpgbenchが必要です。適用は開発用ブランチに限定し、共有・本番データベースは所定のデプロイ経由で更新します。生成ファイルの手編集には明示的な確認が必要です。本番設定では各SQLに60秒の制限があります。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
SKILL.md の記述から、注意が要る操作と導入の前提を AI が確認しました。点数は実際に動かした結果(実行検証)だけで付けています。
点数には入れていません。 2026年10月29日 時点で AI(OpenAI Codex)が判定しました。目安なので、入れる前に原文も確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
A migration that is correct on a quiet database can still take production down. On 17 September
2026 migration 0119 rewrote ingest.webhook_events (about 540 GB with indexes) while holding
ACCESS EXCLUSIVE on the auth tables, and took the API down. Generate the migration with the steps
below, then clear the safety checklist before opening the PR.
.env files at it. NEON_ORG_ID and
NEON_PROJECT_ID are in .env; the Neon list_projects tool needs org_id passed in.packages/db/src/schema/.bunx drizzle-kit generate --name="<sample_name_snake_case>" from packages/db.Never hand-edit packages/db/drizzle/ (.sql files, meta/_journal.json, snapshots) without
explicit user confirmation. Change the schema and let drizzle-kit generate write the files. The
one legitimate reason to ask for that confirmation is statement order (rule 3).
.agents/skills/trpc-compat/SKILL.md)Run this read-only against production, with the tables your migration touches:
begin transaction read only;
select c.oid::regclass as table_name,
pg_size_pretty(pg_total_relation_size(c.oid)) as total_size,
c.reltuples::bigint as approx_rows
from pg_class c
where c.oid in ('ingest.webhook_events'::regclass, 'automation_events'::regclass);
rollback;
Sizes on 2026-09-19, indexes included:
| Table | Size | Rows |
|---|---|---|
ingest.webhook_events | about 540 GB | ~199M |
automation_events | about 245 GB | ~54M |
PgDialect.migrate in drizzle-orm 0.45.2 (pg-core/dialect.js) wraps the loop over every pending
migration in a single session.transaction.
ALTER COLUMN ... SET DATA TYPE between types that are not binary-coercible rewrites the whole
table and its indexes under ACCESS EXCLUSIVE. Enum to text on ingest.webhook_events was the
outage.
Safe shapes:
ALTER TYPE ... ADD VALUE.An insert locks its own table, then takes RowShare on each foreign-key parent. DROP TABLE ... CASCADE, DROP CONSTRAINT and ADD CONSTRAINT ... FOREIGN KEY lock the referenced tables too. A
migration that locks a parent before the child deadlocks against in-flight inserts.
auth.organizations before automation_events and
deadlocked 3 attempts out of 3 under load.automation_events statement first fixed it (4 of 4).drizzle-kit picks statement order, so this is the one legitimate reason to hand-order a generated
file. Get explicit user confirmation first, and say why in a SQL comment above the moved statement,
because regenerating restores the bad order. See
packages/db/drizzle/0119_plugin_oauth_clients_and_connectors.sql for the pattern.
| Table | Why it is hot |
|---|---|
auth.users, auth.organizations | Read by every authenticated request. ACCESS EXCLUSIVE for more than a moment is an outage. |
automation_events, ingest.webhook_events | Held in a transaction almost continuously by the dispatch sweep (redispatchUndispatched) and the retention job (enforce-retention). A 5 second lock wait succeeded from about 44% of start times. A migration that needs their table lock should first wait on the job's own advisory lock (the singleFlight key), which lets the running batch finish without queueing inserts; 0122_webhook_events_swap_to_short_retention.sql is the pattern. |
Because of rule 1, a statement queued behind a lock on automation_events keeps every lock the
transaction already holds, including any on the auth tables.
#7317 pointed every integration lookup at a new, empty connections table with no backfill. 2,393
live integrations read as disconnected until packages/trpc/scripts/backfill-connections.ts ran.
CI cannot catch this: unit tests mock the lookup layer
(mock.module("@superset/trpc/connectors", ...)). Ship the backfill with the schema change.
A workspace's own Neon branch is a copy-on-write child of production at the same 0.25 to 2 CU size. A quiet rehearsal is not enough: the first one for 0119 passed in 2.3s and missed the deadlock entirely. pgbench found it immediately.
Rehearse when the migration locks a table in rule 4 or rewrites or scans a large table. A migration that only touches small tables that no job holds open does not need it: check the sizes, the lock order and the statement types, and say in the PR that you did not rehearse and why.
.env
has two DATABASE_URL entries and the last one is the workspace branch.pgbench -n -f reads.sql -f inserts.sql -c <clients> -T <seconds>).PGOPTIONS="-c lock_timeout=5s -c statement_timeout=60s" bun drizzle-kit migrate.Job deploy-database in .github/workflows/deploy-production.yml:
PGOPTIONS: -c lock_timeout=5s -c statement_timeout=60s.packages/db/src/verify-migrations-applied.ts, which fails unless the newest migration
recorded in the database equals the newest journal entry.A migration that needs longer than 60 seconds for one statement fails by design. Do that work online instead (rule 2).
deploy-preview.yml names the Neon branch after the PR head ref and reuses it across pushes. Once
the branch has applied a migration, later pushes that change that migration make the PR's database
check a no-op. Delete the Neon branch to force a real run.
Workflow pitfalls from the same incident (pipefail, production secrets) are in
docs/deploy-workflows.md.
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
Supersetの利用状況を調べ、まだ使っていない機能と活用方法を提案します。定期実行や並列作業、タスク管理などを一つずつ説明し、選んだ機能を実際に設定します。
繰り返し作業をSupersetで自動化するために、エージェントへの指示と実行時刻・イベント条件を整え、承認後の作成から初回実行の確認まで進めるスキル。
Superset内のブラウザでページ閲覧・クリック・入力を行い、画面やコンソールを確認します。開発中のWebアプリの動作確認やフォーム操作を支援します。
Stripeの決済・定期課金・請求書連携を、公式資料とAPIの引数定義を確認しながら実装します。製品選びからテスト環境での検証、Webhook処理の設計まで扱います。
実際に起動しているデスクトップアプリをChrome DevTools Protocolで操作し、画面遷移や状態を記録しながらUI変更や不具合を確認します。
GitHub Actionsの失敗ログから最初の原因を探し、コードの不具合・環境要因・断続的な失敗・既存障害を切り分け、PRとの関係と次の対応を整理します。