Guide · Agent skill
How to use the dbt Snowflake to BigQuery Translator agent skill
Updated · written with AI from the project's own documentation and checked against our catalogue data
This guide explains what the dbt Snowflake to BigQuery Translator skill does, how to install it for Claude, and how to ask it to convert a Snowflake dbt project to BigQuery on Google Cloud. An agent skill is a folder of instructions and scripts that an AI agent loads when your request matches the skill's description. By the end you will know the prerequisites, how to start a translation, and what you must review before anything goes near production.
Quick start
- 1Check prerequisites. Confirm you have Python 3.11 or newer, the Google Cloud SDK, a billing-enabled project, and a Cloud Storage bucket.
- 2Install the skill. Download the ZIP from this page, unzip it, and place the folder in ~/.claude/skills/ or a project's .claude/skills/, or upload it under Settings → Capabilities → Skills.
- 3Authenticate and enable APIs. Run gcloud auth login and gcloud auth application-default login, set your project, and enable the BigQuery, BigQuery Migration and Cloud Storage APIs.
- 4Make a natural request. Ask the agent to migrate your Snowflake dbt project to BigQuery and mention the input and output locations.
- 5Answer the agent's setup questions. Provide the migration project name, input and output directories, staging bucket, region and optional metadata path.
- 6Let the script run. The agent runs scripts/bulk_translate_via_gcloud.py, which uploads, translates, downloads and post-processes the SQL.
- 7Review and validate. Check the translated models and tasks.md against your Snowflake originals in a non-production environment before any deployment.
What the skill makes the agent do
Once installed, the agent knows how to move a dbt project written for Snowflake to Google BigQuery. It removes dbt macros and replaces them with temporary placeholders, runs the SQL through Google's BigQuery Translation Service, then restores the dbt logic and applies standard rules to the output.
The standard rules include explicit type casting, standardized JSON extraction, deduplication with QUALIFY using _extracted_at, and copyright headers at the top of each file. The agent also keeps a tasks checklist at migration_plan/[mig_prefix]/tasks.md so a human supervisor can follow progress.
- Preserves Jinja constructs such as ref and source macros
- Converts Snowflake bracket notation and ::variant:field access into the form the translator expects
- Stores the final BigQuery-compatible models in your output directory
Install the skill from the ZIP or the Claude apps
Download the skill ZIP from this page and unzip it. For Claude Code, place the unzipped skill folder in ~/.claude/skills/ to make it available for all your projects, or in a project's .claude/skills/ folder to limit it to that project.
If you use the Claude apps instead, open Settings, go to Capabilities, then Skills, and upload the skill there. The folder must contain SKILL.md at its top level, since that file tells the agent when and how to use the skill.
- Personal install: ~/.claude/skills/
- Project install: .claude/skills/ inside your project
- Claude apps: Settings → Capabilities → Skills
Set up Google Cloud before you start
The workflow cannot complete without a Google Cloud project with billing enabled, the Google Cloud SDK (gcloud) installed, and a Cloud Storage bucket for staging files. You also need Python 3.11 or newer and the pyyaml Python package.
Authenticate both the CLI session and application default credentials, set your project, enable the required APIs, and choose a region. The skill's instructions use us-central1 or us as recommended defaults.
- Google Cloud SDK installed and authenticated
- Active project with billing enabled
- APIs enabled: BigQuery, BigQuery Migration, and Cloud Storage
- A Cloud Storage bucket for staging files
- Python 3.11 or newer with pyyaml installed
gcloud auth login
gcloud auth application-default login
gcloud config set project {project_id}
gcloud services enable bigquerymigration.googleapis.com storage.googleapis.com bigquery.googleapis.com
gcloud config set compute/region us-central1Trigger the skill with a natural request
You do not need to type a command to start the skill. Describe the migration in plain language and mention Snowflake, dbt and BigQuery so the agent matches the skill. The agent will then ask you for the details it needs before it begins.
The agent asks for five required items and one optional item: a migration project name, the input directory of Snowflake SQL files, the output directory for BigQuery SQL, the Cloud Storage bucket for staging, the Google Cloud region such as us or eu, and optionally a directory or .zip containing metadata files like columns.csv or tables.csv.
- Example request: 'Migrate my Snowflake dbt models in ./models to BigQuery on Google Cloud'
- Example request: 'Convert this Snowflake dbt project to BigQuery SQL and track progress in a tasks checklist'
- Example request: 'Translate my Snowflake dbt pipeline to BigQuery, keeping ref and source macros'
Run the bulk translation script
Once you have the inputs, the agent runs the bundled script scripts/bulk_translate_via_gcloud.py. It uploads staged SQL to Cloud Storage, starts the BigQuery Translation Service, downloads the results, restores the dbt logic and copies the YAML configuration files.
The flags below control the run. --input, --output and --bucket are required. --location defaults to us. --array-cast-mode defaults to array_string, and you should change it only when your source table schema requires it.
- --input: local directory with source Snowflake dbt .sql and .yml files (required)
- --output: target directory for translated BigQuery dbt files (required)
- --bucket: Cloud Storage bucket used to stage inputs and outputs (required)
- --location: region for translation, default us, for example us or eu
- --metadata: optional directory or .zip with tables.csv and columns.csv
- --array-cast-mode: default array_string; alternatives are string, json_extract_string_array or preserve
- --struct-columns: optional comma-separated STRUCT column names to convert from JSON_VALUE to dot notation
python3 scripts/bulk_translate_via_gcloud.py --input {input_dir} --output {output_dir} --bucket {gcs_bucket} --location {region} [--metadata {metadata_path}] [--array-cast-mode {array_cast_mode}] [--struct-columns {struct_columns}]Review the output before using it
The output is generated SQL and must be validated by a person. Compare the translated models with the original Snowflake logic, run them in a non-production environment, and check the tasks.md file for any steps the agent marked as incomplete or failed.
Keep the tasks checklist and your review notes together so the migration can be audited later. If the agent is interrupted, it recovers by checking that file.
- Check row counts and key results against the Snowflake originals in a test dataset
- Review type casts, JSON extraction and deduplication logic
- Read the tasks.md summary the agent writes at the end
What people use it for
- Moving a Snowflake dbt staging layer to BigQuery so the models can run on Google Cloud
- Getting a first-pass conversion of a large set of dbt models before a data engineer reviews them
- Keeping ref and source macros intact while the SQL dialect changes
- Standardizing casts, JSON extraction and deduplication across a converted project
Frequently asked questions
Is the dbt Snowflake to BigQuery Translator skill free?
The skill is published under the Apache-2.0 licence. The Google Cloud services it calls, including the BigQuery Translation Service and Cloud Storage, can incur charges because the script creates cloud resources and uses your billing account.
What do I need before installing this skill?
You need Python 3.11 or newer, the pyyaml package, the Google Cloud SDK authenticated with gcloud, a Google Cloud project with billing enabled, the BigQuery, BigQuery Migration and Cloud Storage APIs enabled, and a Cloud Storage bucket for staging.
Where do I put the skill folder?
Place the unzipped folder in ~/.claude/skills/ to use it across projects, or in .claude/skills/ inside one project to limit it to that project. In the Claude apps you can upload it under Settings → Capabilities → Skills.
Does the skill work for BigQuery queries that do not come from Snowflake?
No. The skill is for migrating Snowflake dbt SQL to BigQuery. Its own description says not to use it for generic BigQuery queries or non-Snowflake SQL migrations.
Can I run this on a production project directly?
The skill's guidance is to avoid running it unreviewed on production. The output is generated SQL that needs human validation, and the script calls cloud services that cost money and create resources.
Why does the skill ask me for a Cloud Storage bucket?
The bundled script stages the SQL files in a Cloud Storage bucket, uploads them, and downloads the translated results from it, so the workflow cannot run without one.
New agent skills, repos and AI tools — every week
The best new skills and open-source projects, the fastest-growing repos, and one free prompt. Five minutes to read. Unsubscribe anytime.
Our verdict
This skill suits data engineers and analytics engineers who have an existing Snowflake dbt pipeline, a Google Cloud project with billing and permissions, and time to review generated SQL. If you need general BigQuery query help, a non-Snowflake migration, or you cannot use a Google Cloud billing account, pick a different tool or migrate the models by hand.
Download the skill