Skip to main content

Skills Overview

What a skill is

A skill is a markdown knowledge file with a name and description in its frontmatter. The description is the trigger contract — the model loads the skill into context when a task matches it. Each skill tells the model:

  • When to activate (trigger conditions)
  • What tool call sequences to follow
  • Dialect-specific gotchas and patterns

Skills run on both the Claude Code plugin and the Codex plugin — they are plain markdown, not host-specific code.

How skills load

Skills are conditionally loaded, mostly orchestrated by dbt-workflow. The flow for a dbt task is:

  1. signalpilot loads first — it is a blocking requirement whenever a message mentions dbt, SQL, database, or data pipeline. It points at the rest of the system.
  2. dbt-workflow loads next and drives the 8 steps below.
  3. In Step 2, dbt-workflow loads the always-on skills (dbt-write, one SQL-dialect skill, one domain skill) plus any conditional skills the task needs (dbt-testing, dbt-snapshots, dbt-versioning).
  4. dbt-debugging loads on demand when dbt run/dbt parse fails.

Multiple skills are active at once — e.g. dbt-workflow + duckdb-sql + domain-ecommerce + dbt-write for a DuckDB-backed e-commerce dbt project.

The plugin ships 23 skills and 2 verifier agents.

The 23 skills, by group

Orchestration

SkillRole
signalpilotEntry point. Blocking first call for any dbt/SQL/database message. Maps the MCP tools, skills, and governed workflow.
dbt-workflowLoads first for dbt project work. Drives the full 8-step lifecycle.

Core dbt

SkillRole
dbt-writeSQL-model writing rules (Step 2 of the workflow).
dbt-debuggingOn-demand error recovery when dbt run/dbt parse fails.
dbt-testingdbt unit tests (conditional).
dbt-snapshotsSnapshots / SCD Type 2 (conditional).
dbt-versioningModel versioning / v2 (conditional).
dbt-knowledgebasePopulate the knowledge base from project research.
knowledge-baseWrite the per-task technical_spec.md (Step 6).

SQL dialects

SkillRole
duckdb-sqlDuckDB gotchas vs Postgres/MySQL.
snowflake-sqlQUALIFY, LATERAL FLATTEN, VARIANT, ILIKE, time travel.
bigquery-sqlUNNEST, STRUCT, ARRAY_AGG, backtick refs, EXCEPT/REPLACE.
sqlite-sqlsubstr/instr, `

Domain packs

SkillRole
domain-ecommerceTransaction lifecycle, driving tables, status filtering.
domain-financialGrain consistency, ledgers, fiscal-year boundaries, period-over-period.
domain-healthcareEncounter grain, clinical coding hierarchies, cost allocation, clinical NULLs.
domain-hrSCD current-record filtering, issue-resolution metrics.
domain-marketingAttribution models, engagement funnel order.
domain-mediaContent catalogs, participation tables, ranking determinism.
domain-productCalendar spine cross-joins, date boundary caps, event pivoting, first-run NULLs.

Generic SQL / output

SkillRole
sql-workflowStandalone (non-dbt) SQL query workflow: shape inference, schema exploration, CTE building, verification loop.
write-reportHTML report of dbt project work. Loads only when explicitly requested.

The 8-step dbt-workflow

dbt-workflow orchestrates the whole dbt lifecycle. Before Step 1 it calls get_knowledge. Steps 1, 2, 3, and 8 always run; Steps 4–7 run only when there are stubs/models to build or edit.

StepNameWhat happens
1Map the projectRun scan_project.py: stubs to rewrite, models to build, dependencies, required columns, sources, macros, current_date hazards. Create tasks for Steps 2–8.
2Load supporting skillsLoad dbt-write, the matching SQL-dialect skill, and the matching domain skill. Conditionally load dbt-testing, dbt-snapshots, dbt-versioning.
3Validate and fix stale upstreamsRun validate_project.py (dbt parse); fix errors. Rebuild any pre-existing models flagged with current_date/now() hazards.
4Discover project macrosRead each macro definition from the scan; identify the column it produces and which models must use it.
5Research (data exploration)Determine driving table, cardinalities, contract, sibling patterns, and categorical values via query_database.
6Write technical specLoad knowledge-base; write technical_spec.md with the seven required fields per model. Retries read the existing spec.
7Write and build modelsWrite SQL matching YML column names exactly; build only the written models with dbt run --select <models> (no +).
8Verify and fixRun SELECT 1; dispatch the verifier and value-verifier agents in parallel; act only on FAIL checks; stop when both reports are all PASS.

The 2 verifier agents

Both are dispatched in parallel in Step 8. Both are strictly read-only — they return reports and fix nothing.

AgentPurposeChecks
verifierStructure verificationCHECK 1 table existence, CHECK 2 column completeness (map-columns + check_model_schema), CHECK 3 row count / fan-out / cardinality (audit_model_sources), CHECK 4 non-deterministic SQL, CHECK 5 source-table preservation.
value-verifierAggregate value verificationCHECK 1 sample value spot-check, CHECK 2 aggregate cross-validation via verify_model_values (COUNT(*) vs COUNT(DISTINCT) alignment to column names), CHECK 3 status-column filtering (returns/cancellations excluded per the domain skill).

See Skills reference for the per-skill load triggers and coverage of all 23 skills.