bigquery-sql
BigQuery-specific SQL patterns: UNNEST for array expansion, STRUCT, ARRAY_AGG,…
Media & entertainment domain knowledge: content catalogs and participation tables.
$ npx -y skills add signalpilot-labs/signalpilot --skill domain-media --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/domain-mediaContext preview
The summary Claude sees to decide when to auto-load this skill.
Media & entertainment domain knowledge: content catalogs and participation tables.
name: domain-media description: "Media & entertainment domain knowledge: content catalogs and participation tables."
BEFORE writing any JOIN, check: does the project have BOTH a broad table (all content types) AND narrow tables (one content type only)?
**IF YES** - ALWAYS join to the broad table. Joining to a narrow table silently drops all rows for other content types. A model called `podcast_engagement` does NOT mean you join only to a podcasts table when a broader `all_content` table exists - the model name describes what the output represents, not which source rows to include.
**IF NO** - there is only one content table. Use it.
To verify: run `SELECT COUNT(DISTINCT <key>) FROM <broad_table>` and compare to `SELECT COUNT(DISTINCT <key>) FROM <narrow_table>`. If the broad table has MORE distinct entities, you MUST use it.
Tables that record WHO participated in WHAT (credits, casts, rosters, lineups, contributors) contain ALL participant types - actors, directors, producers, writers, coaches, players.
Do NOT filter by participant type based on the model name or task description. The participation table defines the population. Include all rows unless the YML description contains an explicit filter condition.
When aggregating content metrics, drive FROM the participation/event table (credits, views, ratings, matches), not the content table (movies, players, tournaments). The participation table has one row per event - that is the correct grain.
Repo: signalpilot-labs/signalpilot
BigQuery-specific SQL patterns: UNNEST for array expansion, STRUCT, ARRAY_AGG,…
Load when dbt run or dbt parse fails. Covers YML duplicate patches, ref errors, passthrough…
Populate the knowledge base from dbt project research. Proposes entries across all 6…
Load when task involves dbt snapshots, SCD Type 2, or tracking data changes over time. Covers…
Load when task involves adding, writing, or fixing dbt unit tests. Covers unit_tests YAML…
Load when task involves dbt model versioning, creating v2 of a model, or backward-compatible…