Token导航 LogoToken导航

Agent Skill · 研究检索

working-with-dbt-mesh(使用 dbt 网格)

working-with-dbt-mesh 用于查找、检索和筛选相关信息,适合在 Codex、Claude、Cursor、Gemini CLI 中需要根据关键词、任务场景或来源线索快速定位候选结果时使用。可结合来源仓库、安装命令和原始 README 继续核验具体用法。安装前建议确认权限范围、维护状态,以及是否会触发联网、命令执行或文件读写。

working-with-dbt-mesh 是研究检索类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证信息还不明确,第三方扫描已通过,按安装量在研究检索类的 73,675 个 Skill 里排第 29,170。

总安装 3,096周安装 133GitHub Stars 448下载 1,085核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
unknown

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:working-with-dbt-mesh(使用 dbt 网格)
来源仓库:https://github.com/dbt-labs/dbt-agent-skills
仓库路径:skills/working-with-dbt-mesh
安装命令:
npx skills add https://github.com/dbt-labs/dbt-agent-skills --skill working-with-dbt-mesh
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。该命令会通过 npx skills 从第三方来源获取 Skill;本站只展示命令,不托管安装包,也不自动执行。

skills.shnpx skills
npx skills add https://github.com/dbt-labs/dbt-agent-skills --skill working-with-dbt-mesh

这个 Skill 是做什么的

研究检索类 Skill 主要解决「找资料、核对事实、把来源整理清楚」的问题,通常会让助手先检索再总结。

working-with-dbt-mesh 用于查找、检索和筛选相关信息。适合在 Codex、Claude、Cursor、Gemini CLI 中根据关键词、任务场景或来源线索快速定位候选结果。通过 npx skills add 命令从指定 GitHub 仓库安装并使用。

安装前需确认权限范围和维护状态,注意可能触发联网或文件读写操作。适用宿主包括 Codex、Claude、Cursor、Gemini CLI,接入前应确认版本、权限和运行环境要求。

来源仓库内路径:skills/working-with-dbt-mesh

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/dbt-labs/dbt-agent-skills --skill working-with…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

working-with-dbt-mesh 怎么安装?

在终端执行 npx skills add https://github.com/dbt-labs/dbt-agent-skills --skill working-with-dbt-mesh。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

working-with-dbt-mesh 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

working-with-dbt-mesh 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

working-with-dbt-mesh 是免费的吗?

公开资料没有标注明确许可证,收费和商用限制都无法确认。正式使用前请到来源仓库核对授权说明。

working-with-dbt-mesh 用的人多吗?

公开数据是累计安装 3,096 次,近一周安装 133 次,下载 1,085 次,GitHub 448 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

working-with-dbt-mesh 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 许可证没有明确标注,能不能商用、能不能再分发都不确定。
  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理研究检索类任务、又不想每次都手写提示词的人。

不太适合

  • 需要明确授权才能用到公司项目里的场景。
  • 需要厂商级技术支持和 SLA 的生产系统。

研究检索类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
find-skills

寻找技能 · Codex、Claude

31,199,81316,486操作浏览器MIT有提醒
self-improving-agent

自我改进 Agent · OpenClaw

16,464,0023,396接触敏感数据MIT-0通过
soultrace

灵魂追踪 · Codex、Claude

7,588,94412需要联网未明确有提醒
self-improving

自我完善 · OpenClaw

6,829,2841,046需要联网MIT-0通过
microsoft-foundry

微软代工厂 · Codex、Claude

6,614,144764调用外部服务未明确有提醒
working-with-dbt-mesh

使用 dbt 网格 · 本页

3,096448需要联网未明确通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

Working with dbt Mesh

Core principle: In a mesh project, upstream data comes through ref(), not source(). Every cross-project reference requires the project name. When in doubt, read dependencies.yml first.

When to Use

  • Working in a dbt project that references models from other dbt projects
  • Resolving ambiguity when multiple upstream projects have similarly-named models (e.g. multiple stg_ models)
  • Adding model contracts, access modifiers, groups, or versioning
  • Setting up cross-project references with dependencies.yml
  • Splitting a monolithic dbt project into multiple mesh projects

Do NOT use for:

  • General model building or debugging (use the using-dbt-for-analytics-engineering skill)
  • Unit testing models (use the adding-dbt-unit-test skill)
  • Semantic layer work (use the building-dbt-semantic-layer skill)

First: Orient Yourself in a Multi-Project Setup

Before writing or modifying any SQL in a project that uses dbt Mesh, follow these steps:

1. Read dependencies.yml

This file at the project root tells you which upstream projects exist:

# dependencies.yml
projects:
  - name: core_platform
  - name: marketing_platform

If this file has a projects: key, you are in a multi-project mesh setup. Every model you reference from those upstream projects must use cross-project ref().

2. Understand how upstream data gets into this project

In a mesh setup, upstream project models replace what would alternatively be sources:

AlternativeMesh multi-project
{{source('stripe', 'payments')}}{{ref('core_platform', 'stg_payments')}}
Data comes from raw database tablesData comes from another dbt project's public models
Defined in sources.ymlDeclared in dependencies.yml

The upstream project has already staged and transformed the raw data. Your project builds on top of their public models, not their raw sources.

3. Disambiguate similarly-named models

When multiple upstream projects have models with the same name (e.g. stg_customers in both core_platform and marketing_platform), you must use the two-argument ref():

-- Correct: explicit project name, no ambiguity
select * from {{ ref('core_platform', 'stg_customers') }}
select * from {{ ref('marketing_platform', 'stg_customers') }}

-- WRONG: dbt cannot determine which project's stg_customers you mean
select * from {{ ref('stg_customers') }}

4. Check existing patterns in the codebase

Before writing new SQL:

  • Search for existing two-argument ref() calls to see which upstream projects and models are already in use
  • Look at the upstream project's YAML for access: public models — only these are referenceable cross-project
  • The first argument of ref() must exactly match the name field in the upstream project's dbt_project.yml (case-sensitive)

5. Know what you can and cannot reference

Upstream model accessCan you ref() it cross-project?
access: publicYes
access: protected (default)No — only within the same project
access: privateNo — only within the same group

If you need a model that isn't public, coordinate with the upstream team to widen its access.

Cross-Project Refs Require dbt Cloud Enterprise

Cross-project ref() and the projects: key in dependencies.yml are only available on dbt Cloud Enterprise or Enterprise+ plans. Before setting up any cross-project collaboration, verify plan eligibility:

  1. If dependencies.yml already has a projects: key and the project is actively using cross-project refs — Enterprise is already in place. Proceed.
  2. Otherwise — ask the user to confirm they are on dbt Cloud Enterprise or Enterprise+ before adding projects: to dependencies.yml or writing new two-argument ref() calls.

If the user cannot confirm the plan level, or confirms they are on a plan below Enterprise, do not set up cross-project refs. Explain that this feature requires upgrading to Enterprise or Enterprise+ and suggest they use the intra-project governance features (groups, access modifiers, contracts) instead.

Cross-Project ref() Syntax

-- Reference an upstream model (latest version)
select * from {{ ref('upstream_project', 'model_name') }}

-- Reference a specific version
select * from {{ ref('upstream_project', 'model_name', v=2) }}

For full cross-project setup details (dependencies.yml, prerequisites, orchestration), see references/cross-project-collaboration.md.

Governance Features

dbt Mesh includes four governance features. These work independently and can be adopted incrementally:

FeaturePurposeKey ConfigReference
Model ContractsGuarantee column names, types, and constraints at build timecontract: {enforced: true}references/model-contracts.md
GroupsOrganize models by team/domain ownershipgroup: financereferences/groups-and-access.md
Access ModifiersControl which models can ref yoursaccess: public / protected / privatereferences/groups-and-access.md
Model VersionsManage breaking changes with migration windowsversions: with latest_version:references/model-versions.md

YAML placement rule

In model property YAML files, access, group, and contract are configs and must always be nested under the config: key — never placed as top-level model properties. Placing them at the top level may appear to work in dbt Core but causes parse errors in dbt's Fusion engine.

# ✅ CORRECT — all governance configs under `config:`
models:
  - name: fct_orders
    config:
      group: finance
      access: public
      contract:
        enforced: true
    columns:
      - name: order_id
        data_type: int

# ❌ WRONG — governance configs as top-level properties (breaks Fusion)
models:
  - name: fct_orders
    access: public          # WRONG — not under config:
    group: finance          # WRONG — not under config:
    contract:               # WRONG — not under config:
      enforced: true
    columns:
      - name: order_id
        data_type: int

This applies to property YAML files only. In dbt_project.yml, use the + prefix for directory-level assignment (e.g. +group: finance, +access: private). In SQL files, use {{config(access='public', group='finance')}}.

Adoption order

1. Groups & Access  →  2. Contracts  →  3. Versions  →  4. Cross-Project Refs
   (organize teams)     (lock shapes)    (manage changes)  (split projects)
  • Groups & Access — no schema changes needed, start here
  • Contracts — require declaring every column and data type in YAML
  • Versions — only needed when a contracted model must introduce a breaking change
  • Cross-Project Refs — require dbt Cloud Enterprise or Enterprise+ and a successful upstream production job. Do not set up cross-project refs if you cannot confirm the plan level is Enterprise or higher.

Contracts vs. Tests

ContractsData Tests
WhenBuild-time (pre-flight)Post-build (post-flight)
WhatColumn names, data types, constraintsData quality, business rules
FailureModel does not materializeModel exists but test fails
Use forShape guarantees for downstream consumersContent validation and anomaly detection

Contracts are enforced before tests run. If a contract fails, the model is not built, and no tests execute.

Decision Framework

Should this model have a contract?

Use a contract when:

  • The model is access: public (especially if referenced cross-project)
  • Other teams depend on this model's schema stability
  • The model feeds an exposure (dashboard, ML pipeline, reverse ETL)
  • External consumers (other dbt projects, BI dashboards, reverse ETL) query the table directly and would break from column renames or removals

Do NOT add a contract when:

  • Staging models (stg_*) — these are internal implementation details, not consumer-facing APIs
  • The model is still evolving — if the user says they are iterating on the design, advise waiting until the schema stabilizes
  • No external consumers exist — in a single-project setup with no cross-project refs, no BI tools depending on the schema, and no exposures, contracts add maintenance overhead without benefit. Ask about consumers before recommending contracts.
  • Dynamic/pivot columns — models that use pivot(), unpivot(), or dynamically generate columns are poor candidates because the column list isn't fixed and the contract will break whenever the dynamic values change
  • Ephemeral models — contracts are not supported on ephemeral materializations

If the user asks for a contract on a model that matches the "do NOT add" criteria above, advise against it and explain why. Do not simply comply — the user may not realize the contract is inappropriate. Suggest alternatives (e.g., data tests for staging models, waiting for schema stability, or switching materialization for ephemeral models).

Should this model be versioned?

Version a model when:

  • It has an enforced contract AND you need to introduce a breaking change (column removal, rename, type change)
  • Downstream consumers need a migration window before the old shape goes away

Do NOT version a model:

  • For additive changes (new columns) — these are non-breaking
  • For bug fixes — fix in place
  • Preemptively "just in case" — version only when a breaking change is actually needed

What access level should this model have?

Is it referenced cross-project?
  └─ Yes → public (with contract recommended)
  └─ No
      Is it referenced outside its group?
        └─ Yes → protected (default)
        └─ No
            Is it internal to a small team?
              └─ Yes → private
              └─ No → protected (default)

Best practice: Default new models to private and widen access only when needed. The default protected is permissive — be intentional.

Common Mistakes

MistakeWhy It's WrongFix
Using single-argument ref() in multi-project setupsAmbiguous — dbt may not resolve to the intended projectAlways use ref('project_name', 'model_name') for cross-project refs
Using source() for upstream project dataIn mesh, upstream data comes through public models, not raw sourcesUse ref('upstream_project', 'model_name') instead
Not reading dependencies.yml firstYou won't know which upstream projects exist or what they're calledAlways read dependencies.yml before writing cross-project SQL
Making all models publicExposes internal implementation details cross-projectOnly mark models public that are intentional APIs for other teams
Skipping contracts on public modelsDownstream consumers can break silently when schema changesAlways enforce contracts on access: public models
Versioning for non-breaking changesCreates unnecessary maintenance burden and warehouse costOnly version for breaking changes (column removal, type change, rename)
Forgetting dependencies.ymlCross-project refs fail without declaring the upstream projectAdd upstream project to dependencies.yml before using two-argument ref()
Referencing non-public models cross-projectOnly public models are available to other projectsSet access: public on models intended for cross-project consumption
Placing access, group, or contract as top-level model properties in YAMLBreaks Fusion engine parsing; top-level placement is not valid configAlways nest under config: — e.g. config: {access: public}
Adding contracts to staging modelsStaging models are internal — contracts add friction without protecting external consumersAdvise against it; suggest data tests instead
Adding contracts to models with dynamic/pivot columnsColumn list changes with data, breaking the contractAdvise against it; explain why the column list isn't fixed
Adding contracts without establishing external consumersContracts protect a schema boundary — no consumers means no boundary to protectAsk who depends on this model before adding a contract
Making a model private that is already referenced outside its groupExisting refs break with a DbtReferenceErrorWiden access to protected or refactor callers into the same group first
Setting up cross-project refs without confirming dbt Cloud EnterpriseCross-project ref() is unavailable on lower plan tiersConfirm the plan level before adding projects: to dependencies.yml or writing two-argument ref() calls
Adding dependencies.yml without a successful upstream production jobdbt Cloud resolves cross-project refs via the upstream manifest.json — no job run means no manifestRun at least one successful production deployment in the upstream project first

平台分布

Codex

37.9%
按下载量换算411

Claude

28.34%
按下载量换算307

Cursor

19.9%
按下载量换算216

Gemini CLI

9.85%
按下载量换算107

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。目前只有一个公开来源,建议同时核对源仓库。

继续浏览同类 Skills