bigquery-sql
BigQuery-specific SQL patterns: UNNEST for array expansion, STRUCT, ARRAY_AGG,…
- `dbt_project_map` reports "WARNING: Models use current_date" - `dbt run` produces far more rows than expected in a date-spine model
$ npx -y skills add signalpilot-labs/signalpilot --skill dbt-date-spines --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/dbt-date-spinesContext preview
The summary Claude sees to decide when to auto-load this skill.
- `dbt_project_map` reports "WARNING: Models use current_date" - `dbt run` produces far more rows than expected in a date-spine model
name: dbt-date-spines type: skill
These are pre-shipped model SQL files in `models/` — you have direct write access. For general date spine syntax, see `duckdb-sql` skill section 2.
Edit the model SQL directly. Replace `current_date`/`current_timestamp`/`now()` with a data-driven endpoint — a subquery from the primary fact table:
-- Before: ... CURRENT_DATE ...
-- After: ... (SELECT MAX(order_date) FROM {{ ref('stg_orders') }}) ...Use the fact table with the most rows, or the one referenced in the task instruction.
If the flagged file is in `dbt_packages/` (marked "PACKAGE MODEL" in the warning): 1. Read the full SQL from the package model file 2. Create `models/<same_filename>.sql` — dbt prioritizes local models over package models 3. Paste the entire package SQL into the new file and replace `current_date` with the data-driven endpoint 4. Add `{{ config(materialized='table') }}` at the top
Example: if `dbt_packages/shopify_source/models/stg_shopify__order.sql` uses `current_date`:
-- models/stg_shopify__order.sql (local override — copy ENTIRE package SQL here)
{{ config(materialized='table') }}
-- Replace current_date with a data-driven endpoint:
-- (SELECT MAX(order_date) FROM {{ ref('stg_orders') }})Do NOT edit files inside `dbt_packages/` directly — `dbt deps` will overwrite your changes.
Call `mcp__signalpilot__get_date_boundaries(connection_name="<id>")`. Use the primary fact table's max date (marked "USE THIS"). Never use the global max — dimension tables often have later dates.
dbt run --select <model_name>
SELECT MIN(date_col), MAX(date_col), COUNT(*) FROM <model_name>
The spine's max date must match the source data's endpoint, not today's date.
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…