複数のアプリやMCPホストからブランド画像・動画を生成、調整、書き出し、挿入する作業を支援します。ライブラリ選択や修正依頼も扱います。
- スライド用のブランド画像を作りたいとき
- 既存素材をフィードバックに合わせて直したいとき
- 動画素材を生成して書き出したいとき
指標の定義やテーブルの列名を確認してからBigQueryを検索し、期間や費用に配慮したSQLでデータを集計するスキルです。
Query the BigQuery warehouse. Use for warehouse SQL, BigQuery tables, Amplitude-in-BigQuery events, or a metric the data dictionary says lives in BigQuery.
実行スコア 未検証
インストール方法を見るBigQuery上のテーブルを調べ、SQLでデータを集計するための手順を扱います。SQLを書く前に find-data で指標の定義や保存済みクエリを探し、search-bigquery-schema でデータセット、テーブル、列名を確認します。業務データではdbtで整備されたテーブルを優先し、イベントやページビューなど大きなテーブルには日付範囲を指定します。大規模なクエリの実行前には estimate-query-cost で読み取り量と費用を見積もり、実データを使って結果を確認します。
指標がBigQueryにあるとデータ辞書で分かっているときや、AmplitudeのイベントをBigQueryに複製したデータから調べたいときに向いています。列名やデータ型の違いによる誤集計を避けたい場合、既存の定義やテーブル構成を確認してからクエリを組み立てられます。指標がdbt Semantic Layerで定義されている場合は、そちらの手順を先に確認します。
利用にはBigQueryへの接続設定や権限が必要です。大きなクエリでは実行前に費用を確認し、見積もりが実行あたり1ドルまたは月あたり50ドルを超える場合は金額を伝える手順です。
この紹介文は、公開されている SKILL.md をもとに AI(OpenAI Codex)が作成しました。正確な仕様は下の原文を確認してください。
インストールする前に、エージェントに与えられる指示の中身を確認できます。
bigquery is available directly in the agent's tool list as a native callable tool.
bigquery in your available tools — call it directly with your SQL. Do not use HTTP workarounds, web-request hacks, or scripts as a substitute.server/lib/bigquery.ts description below is the underlying implementation. It does not mean BigQuery is only accessible via terminal commands or scripts.Before writing any SQL, verify the metric definition and exact table/column names.
find-data with the user’s metric or entity question first; it ranks dictionary definitions, saved SQL examples, and generated source metadata together.search-bigquery-schema to confirm exact dataset, table, and column names.Why this matters: column names commonly differ from spec (see "Column Name
Differences" below). Querying the wrong column returns wrong numbers silently.
Confirming with search-bigquery-schema or INFORMATION_SCHEMA.COLUMNS before
writing the query is always faster than debugging a wrong result.
Before writing SQL, use the highest-confidence source available:
data-querying/SKILL.md, including its status rules, retry, and warehouse conditions. Its definition outranks any table. Only a successful get-dbt-connection result with readiness: "not_connected" and an empty connections[] permits normal source selection. If any row is ready, keep dbt as the source even when top-level readiness is null. If rows exist but none is ready, report or resolve their readiness and stop. Treat connected: false, null readiness, and failed or unreadable lookups as unknown, not disconnected. A warehouse figure for this metric needs an explicit user request.find-data with a focused metric or entity question.search-bigquery-schema metadata for exact datasets, tables, and columns.Do not invent dataset, table, or column names. BigQuery is a warehouse, not one
table; BIGQUERY_PROJECT_ID is only the default project.
Always prefer dbt-built warehouse tables before raw source tables. They are warehouse data, not owner-approved Semantic Layer definitions; for an owner-defined metric, use the dbt step (step 0 of the source order) first.
dbt_mart.* — dbt-built, first choice for business-level data (deals, contracts, subscriptions, customers, companies).dbt_analytics.* — dbt-built, first choice for reporting views and aggregated metrics.dbt_staging_bigquery.* — for raw staged data (pageviews, signups) when dbt_mart/analytics don't have it.dbt_intermediate.* — for joins/transforms when no mart or analytics table exists.analytics.* / amplitude.* / raw tables — last resort only, when no dbt equivalent exists.Never query raw source tables if a dbt model covers the same data. dbt models are deduplicated, tested, and have canonical column names. Raw tables may have duplicates, schema drift, and inconsistent naming.
Avoid dbt_dev.* — development schema, excluded globally.
Always include a date or timestamp filter in any query that touches large event or pageview tables. Unbounded queries scan full table history, hit byte limits, and return unusable result sets. Use the most restrictive date range that still answers the question.
-- Always add: WHERE event_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY)
-- Or for TIMESTAMP columns: WHERE event_time >= TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 30 DAY)
For account health, verify the reporting period, as-of field, and freshness. Never label a current partial-month snapshot as last month's completed usage.
| Action | Use |
|---|---|
data-source-status --key bigquery | Check whether BigQuery credentials and project are configured. |
find-data --question <topic> | Find ranked metric definitions and saved query examples before SQL. |
search-bigquery-schema | List datasets, list tables in a dataset, or describe table columns. |
estimate-query-cost --sql "<sql>" | Free dry run: bytes, $ per run, and $ per month for scheduled runs. |
bigquery --sql "<sql>" | Run a real warehouse query after table/column names are known. |
query-dbt-semantic-metric --metricName <exact dbt name> | Run an owner-defined dbt Semantic Layer metric before warehouse SQL. |
get-dbt-connection | Check each connections[].readiness and its missing setup step. |
Before running a query over a large event or pageview table, call
estimate-query-cost with the same SQL. It dry-runs the query (BigQuery reads
and bills nothing) and prices it at on-demand rates. Pass runsPerMonth for
anything scheduled, such as 8640 for an alert that polls every 5 minutes.
Estimates over $1 per run or $50 per month are flagged: tell the user the number
before going ahead.
For direct Amplitude/PostHog/Mixpanel product-event data (outside the warehouse
copy), there is no first-class action — call provider-api-catalog /
provider-api-docs then provider-api-request (provider amplitude, posthog,
or mixpanel), and aggregate in run-code for corpus-wide event analysis.
Use search-bigquery-schema instead of asking the user to manually print field
lists:
pnpm action search-bigquery-schema
pnpm action search-bigquery-schema --dataset=product_events
pnpm action search-bigquery-schema --table=product_events.events
pnpm action search-bigquery-schema --dataset=product_events --search=rootOrganizationId
When describing a table, copy exact field names from the action result. If a
field has a nested path such as event_properties.rootOrganizationId, use the
proper BigQuery JSON or STRUCT access pattern for that field type.
Approved dictionary entries are canonical. Human-authored but unreviewed
entries are usable with light verification. AI-generated unapproved entries are
suggestions only: verify the table and columns with search-bigquery-schema and
prefer saving a reviewed dictionary update once the meaning is clear.
@project.dataset.table when you want the configured project placeholder.@app_events only for the optional app-events table; it is not the whole
warehouse and it is not a connection-status signal.search-bigquery-schema (or INFORMATION_SCHEMA) to get
the exact datasets, tables, and columns, correct the query based on the
error, and run it again. Iterate until it succeeds or you have made a few
corrective attempts; only surface to the user if it still fails or the error
is non-recoverable (missing credentials, permission, quota).| Spec Column | Actual Column | Table |
|---|---|---|
first_pageview_date | created_date (TIMESTAMP) | first_pageviews |
channel (pageviews) | first_touch_channel | all_pageviews |
referrer | c_referrer | all_pageviews |
referrer_channel | session_channel | all_pageviews |
user_create_date | user_create_d | product_signups |
deal_stage | stage_name | dim_deals |
deal_amount | amount | dim_deals |
Always verify with search-bigquery-schema before writing SQL against an unfamiliar table.
Always match on BOTH a stable id AND email when joining contacts/users across tables:
-- CORRECT: both user_id and email
ON signups.user_id = contacts.user_id
AND LOWER(signups.email) = LOWER(contacts.email)
-- WRONG: id alone — IDs can be reassigned or recycled
ON signups.user_id = contacts.user_id
IDs can be reassigned after deletes/merges. Email alone over-matches shared addresses. Require both for exact matches; flag email-only or id-only joins as low-confidence caveats.
TIMESTAMP('2025-11-01') comparisons, not date strings.DATE('2025-11-01').DATE(timestamp_col) before DATE_TRUNC to avoid type mismatch errors.QUALIFY ROW_NUMBER() OVER (PARTITION BY id ORDER BY updated_at DESC) = 1
for deduplication — cleaner than a subquery. Put the partition-date filter in
the same WHERE: a dedupe over a whole table, or a view that dedupes before
your filter, scans every partition. For first-party events, read
first_party_analytics_events_raw_query_range(start_date, end_date), not the
first_party_analytics_events_raw_query view. It leaves out http.response,
which holds most of the properties bytes; read that event from the raw table
with a narrow date range and an event_name filter.'true'/'false' — always
CAST(col AS STRING) = 'true' rather than treating as BOOL.CAST(amount AS FLOAT64) before
arithmetic.-- WRONG: syntax error
WHERE date BETWEEN '...' AND '...'
WHERE col IS NOT NULL
-- CORRECT: single WHERE with AND
WHERE col IS NOT NULL AND date BETWEEN '...' AND '...'
まだレビューはありません。使ってみた感想をお寄せください。
ログインなしで書き込めます。使ってみた感想、質問、動かなかった環境などを気軽にどうぞ。
まだコメントはありません。最初のコメントを書いてみませんか。
複数のアプリやMCPホストからブランド画像・動画を生成、調整、書き出し、挿入する作業を支援します。ライブラリ選択や修正依頼も扱います。
特定の顧客企業について、契約と製品利用の数値を照らし合わせ、根拠や不足情報を明記した健全性レポートをまとめます。
アプリの操作をエージェントと画面の両方から呼び出せるアクションとして実装し、API連携や画面のデータ取得を一貫した形で追加するスキルです。
新機能をUI・エージェント用アクション・説明資料・画面状態の4領域でそろえ、利用者とエージェントのどちらからも一貫して使えるようにするチェックリストです。
複数のデータソースを照合して、傾向や指標、根拠をまとめた分析結果を作成します。必要に応じて、再実行できるダッシュボードとして保存できます。
Analyticsの管理画面で、機能フラグの状態確認と切り替え、ダッシュボード利用状況の調査、接続先アプリのデータベース管理を行います。