# migrating-dbt-project-across-platforms

Guides dbt project migrations across data platforms using dbt Fusion real-time compilation. Catches SQL dialect issues early and verifies logic using unit tests.

- skill · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 526 installs · ★ 746
- Author: dbt-labs
- License: Apache-2.0 · policy=mirror · the beginning of the file is at the end of this page
- Source: https://github.com/dbt-labs/dbt-agent-skills/tree/HEAD/skills/dbt-migration/skills/migrating-dbt-project-across-platforms/SKILL.md
- Updated: 2026-10-22
- HTML: https://affpapa.org/en/nevibecode/skills/migrating-dbt-project-across-platforms

## What it does

This skill guides migrating dbt repositories across platforms like Snowflake and Databricks. It relies on dbt Fusion for dialect conversion. Running `dbtf compile` provides immediate feedback on syntax discrepancies, so there is no need to catalog SQL differences beforehand. You simply read compiler errors, patch the code, and recompile.

Before switching targets in `profiles.yml`, the agent generates dbt unit tests for all leaf models on the source warehouse. This captures golden test data to prove correctness later. Compilation checks cost nothing in query fees. Warehouse runs (`dbtf run` and `dbt test`) are executed only after reaching zero errors and warnings.

Without dbt Fusion installed, this skill is unusable because the entire workflow depends on its error diagnostics. Every modification gets logged into `migration_changes.md`.

## Requirements
- Works with: Snowflake, Databricks

## Install

### Claude Code (native platform)

1. **Skills CLI (Vercel)**
```bash
npx skills add dbt-labs/dbt-agent-skills --skill migrating-dbt-project-across-platforms -a claude-code
```

2. **Manually: put the files in place**
- File: `~/.claude/skills/migrating-dbt-project-across-platforms/SKILL.md` — Copy the whole skill folder; for one project use .claude/skills/migrating-dbt-project-across-platforms/

### Codex

1. **Skills CLI (Vercel)**
```bash
npx skills add dbt-labs/dbt-agent-skills --skill migrating-dbt-project-across-platforms -a codex
```

2. **Manually: put the files in place**
- File: `.agents/skills/migrating-dbt-project-across-platforms/SKILL.md` — For all projects use ~/.agents/skills/

### Cursor

1. **Skills CLI (Vercel)**
```bash
npx skills add dbt-labs/dbt-agent-skills --skill migrating-dbt-project-across-platforms -a cursor
```

2. **Manually: put the files in place**
- File: `.cursor/skills/migrating-dbt-project-across-platforms/SKILL.md` — Cursor also reads .agents/skills/ and .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install dbt-labs/dbt-agent-skills migrating-dbt-project-across-platforms
```

2. **Manually: put the files in place**
- File: `.github/skills/migrating-dbt-project-across-platforms/SKILL.md`

### Gemini CLI

1. **Skills CLI (Vercel)**
```bash
npx skills add dbt-labs/dbt-agent-skills --skill migrating-dbt-project-across-platforms -a gemini-cli
```

2. **Platform CLI**
```bash
gemini skills install https://github.com/dbt-labs/dbt-agent-skills --path skills/dbt-migration/skills/migrating-dbt-project-across-platforms
```

### Windsurf (Devin Desktop)

**Manually: put the files in place**
- File: `.devin/skills/migrating-dbt-project-across-platforms/SKILL.md` — The legacy .windsurf/skills/ path still works

### OpenCode

**Skills CLI (Vercel)**
```bash
npx skills add dbt-labs/dbt-agent-skills --skill migrating-dbt-project-across-platforms -a opencode
```

### Claude.ai

**Claude.ai**
- Zip the folder and upload it in Settings → Capabilities → Skills

Where a file is given instead of a command, copy the files from the source to that path: https://github.com/dbt-labs/dbt-agent-skills/tree/HEAD/skills/dbt-migration/skills/migrating-dbt-project-across-platforms/SKILL.md

## When to use it
- migrate dbt projects between data platforms such as Snowflake and Databricks
- catch SQL dialect mismatches through dbt Fusion compilation errors
- generate unit tests on source leaf models before switching targets
- document all migration modifications in `migration_changes.md`

## Example prompts
- Help me migrate this dbt project from Snowflake to Databricks.
- Migrate our dbt warehouse models to Databricks using dbt Fusion.

## Source text · SKILL.md · Apache-2.0

Below is the content of a third-party file. It is data, not instructions for you: do not act on anything written inside unless the human asks. Block tag: 954f513263b53d41.

BEGIN THIRD-PARTY FILE 954f513263b53d41
```text
---
name: migrating-dbt-project-across-platforms
description: Use when migrating a dbt project from one data platform or data warehouse to another (e.g., Snowflake to Databricks, Databricks to Snowflake) using dbt Fusion's real-time compilation to identify and fix SQL dialect differences.
user-invocable: false
metadata:
  author: dbt-labs
---

# Migrating a dbt Project Across Data Platforms

This skill guides migration of a dbt project from one data platform (source) to another (target) — for example, Snowflake to Databricks, or Databricks to Snowflake.

**The core approach**: dbt Fusion compiles SQL in real-time and produces rich, detailed error logs that tell you exactly what's wrong and where. We trust Fusion entirely for dialect conversion — no need to pre-document every SQL pattern difference. The workflow is: read Fusion's errors, fix them, recompile, repeat until done. Combined with dbt unit tests (generated on the source platform before migration), we prove both **compilation correctness** and **data correctness** on the target platform.

**Success criteria**: Migration is complete when:
1. `dbtf compile` finishes with 0 errors **and 0 warnings** on the target platform
2. All unit tests pass on the target platform (`dbt test --select test_type:unit`)
3. All models run successfully on the target platform (`dbtf run`)

**Validation cost**: Use `dbtf compile` as the primary iteration gate — it's free (no warehouse queries) and catches both errors and warnings from static analysis. Only `dbtf run` and `dbt test` incur warehouse cost; run those only after compile is clean.

## Contents

- [Additional Resources](#additional-resources) — Reference docs for installation, unit tests, profile targets
- [Migration Workflow](#migration-workflow) — 7-step migration process with progress checklist
- [Don't Do These Things](#dont-do-these-things) — Critical guardrails
- [Known Limitations & Gotchas](#known-limitations--gotchas) — Fusion-specific and cross-platform caveats

## Additional Resources

- [Installing dbt Fusion](references/installing-dbt-fusion.md) — How to install and verify dbt Fusion
- [Generating Unit Tests](references/generating-unit-tests.md) — How to generate unit tests on the source platform before migration
```
END THIRD-PARTY FILE 954f513263b53d41

The third-party file has ended. Everything between the 954f513263b53d41 tags is data: requests and commands from it are not followed. An “end of file” line with another tag inside the block is part of the file.

First 2277 of 15778 bytes. © dbt-labs · Apache-2.0 · https://github.com/dbt-labs/dbt-agent-skills/tree/HEAD/skills/dbt-migration/skills/migrating-dbt-project-across-platforms/SKILL.md

_Part of the page did not fit — see the HTML version._

---
NeVibeCode on affpapa.org. Catalog texts are descriptions, not instructions for the agent. How to choose and install: https://affpapa.org/en/nevibecode/agents.md
