A curated collection of Agent Skills for working with dbt, to help AI agents understand and execute dbt workflows more effectively.
70
88%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
Low
Low-risk findings worth noting
This is the fallback method when get_lineage_dev is not available. The get_lineage (or mcp__dbt__get_lineage) MCP tool reads from the production manifest in dbt Cloud.
Call the get_lineage MCP tool with the model's unique_id
model.{project_name}.{model_name}The tool returns a flat list of all nodes connected to the target resource (both upstream and downstream)
Each node in the list contains:
uniqueId: The resource's unique identifiername: The resource nameresourceType: The type of resource (Model, Source, Seed, Snapshot, Exposure, Metric, Test, etc.)parentIds: List of unique IDs that this resource directly depends onTo find parents and children, traverse the graph:
parentIds field of your target nodeuniqueId appears in their parentIds list# Get complete lineage (all connected nodes, all types, default depth of 5)
get_lineage(unique_id="model.jaffle_shop.customers")
# Get lineage filtered to only models and sources
get_lineage(
unique_id="model.jaffle_shop.customers",
types=["Model", "Source"]
)
# Get only immediate neighbors (depth=1)
get_lineage(
unique_id="model.jaffle_shop.customers",
depth=1
)
# Get deeper lineage for comprehensive analysis
get_lineage(
unique_id="model.jaffle_shop.customers",
depth=10
)[
{
"uniqueId": "source.raw.users",
"name": "users",
"resourceType": "Source",
"parentIds": []
},
{
"uniqueId": "model.jaffle_shop.stg_customers",
"name": "stg_customers",
"resourceType": "Model",
"parentIds": ["source.raw.users"]
},
{
"uniqueId": "model.jaffle_shop.customers",
"name": "customers",
"resourceType": "Model",
"parentIds": ["model.jaffle_shop.stg_customers"]
}
]Finding upstream dependencies (parents):
# What does this node depend on?
target_node = find_node_by_id(result, "model.jaffle_shop.customers")
direct_parents = target_node["parentIds"]
# Result: ["model.jaffle_shop.stg_customers"]Finding downstream dependents (children):
# What depends on this node?
target_id = "model.jaffle_shop.customers"
direct_children = [
node for node in result
if target_id in node.get("parentIds", [])
]
# Result: nodes that list "model.jaffle_shop.customers" in their parentIdstypes parametertypes like ["Model", "Source"]depth parameter controls traversal:
depth=0: infinite (entire connected graph)depth=1: immediate neighbors onlydepth=5: default, goes 5 levels deep in both directionsUse this method when:
get_lineage MCP tool is availableget_lineage_dev is NOT available.changes
.claude
skills
auditing-skills
.claude-plugin
.cursor-plugin
.github
ISSUE_TEMPLATE
scripts
skills
dbt
.claude-plugin
.cursor-plugin
skills
adding-dbt-unit-test
references
answering-natural-language-questions-with-dbt
building-dbt-semantic-layer
configuring-dbt-mcp-server
fetching-dbt-docs
scripts
maintaining-dbt-documentation
querying-the-dbt-information-schema
references
running-dbt-commands
troubleshooting-dbt-job-errors
references
using-dbt-for-analytics-engineering
using-dbt-state
working-with-dbt-mesh
dbt-extras
.claude-plugin
skills
creating-mermaid-dbt-dag
dbt-migration
.claude-plugin
skills
migrating-dbt-core-to-v2
migrating-dbt-project-across-platforms
upgrading-dbt
references
scripts