🚧 Public Beta — all features are free during the 30-day beta. AI features are bring-your-own-API-key. What happens after the beta?
See it in action
Compare your project against a live account — with a safety verdict on every change
Diff your .sql files against any live account (or a built artifact) in any direction. Every proposed change is classified SAFE, DESTRUCTIVE, EXPENSIVE, or UNRECOVERABLE — before anything touches Snowflake.

Deploys that refuse to destroy data silently
Destructive operations come out blocked, as comments — they only deploy after an explicit opt-in in your project file. Turn on safety cloning and SDT pre-creates a zero-copy clone so any deploy is one command away from rollback.

Reverse-engineer an entire account in seconds
One command pulls every database, schema, and object into a project tree of .sql files — one file per object, ready for git.

Why SDT
Snowflake gives you CREATE OR ALTER TABLE as a primitive but no workflow around it — no compare engine, no safety classification, no rollback story. SDT fills that gap. You author each Snowflake object as a .sql file (a desired-state spec), and SDT computes the deltas between your project and the live account: it never asks you to hand-write forward/backward migration files. Every proposed change is classified as SAFE, DESTRUCTIVE, EXPENSIVE, or UNRECOVERABLE, and anything destructive refuses to run without an explicit opt-in. The result is a reviewable migration script plus a captured manifest you can roll back with one command.
It is, in short, what Microsoft's SQL Database Projects / SqlPackage are for SQL Server — built natively for Snowflake, cross-platform (pure Node, no .NET), and AI-aware.
Key features
| Area |
What you get |
| Schema compare |
Diff a project, a built .sdtpac, or a live account against each other. Per-change safety classification surfaced inline. |
| Safe deploy |
Generate a migration script with destructive operations gated behind explicit opt-ins (allowDropTable, allowDropColumn, allowNarrowingTypes, …). Optional zero-copy clone pre-created for SWAP-based rollback. |
| Extract / reverse-engineer |
Pull a live Snowflake account into a project tree of .sql files — one file per object. |
| Projects & Suites |
Scaffold and edit .sdtproj projects; group several projects into a .sdtsuite for cross-project validation. Build to a portable .sdtpac artifact. |
| Object Explorer |
Browse databases, schemas, and objects from a live connection. Right-click column refactors (rename, change type, drop) that preserve identity through compare. |
| Lint & format |
A Snowflake-aware SQL formatter (format-on-save) and a lint ruleset for project hygiene. |
| Lineage & diagrams |
Column-level lineage for views, materialized views, and dynamic tables; an interactive schema diagram. |
| Drift check |
Detect when a live account has drifted from your project or pac. |
| Deploy history |
Review past deploys and their captured manifests from the activity bar. |
| IntelliSense |
Snowflake SQL grammar, snippets, and context-aware completions. |
| AI assist (BYO key) |
Sketch objects from a description, suggest safer alternatives for risky changes, and an "Ask SDT" chat panel that proposes refactor operations. See AI features. |
All of this is reachable from the SDT activity-bar view (Projects, Suites, Connections, Object Explorer, Deploy History) and the command palette. Press Ctrl+K F (Cmd+K F on macOS) to Find a Feature.
Quick start
- Install the extension and open a folder in VS Code.
- Add a connection — run SDT: Add Snowflake Connection (writes a profile to
~/.sdt/profiles.json), then SDT: Test Snowflake Connection.
- Create a project — run SDT: New Project to scaffold a
.sdtproj with the canonical databases / schemas / objects layout.
- Get some SQL to work with — either author objects by hand, or run SDT: Extract Snowflake Account → Project to pull a live account into
.sql files.
- Compare — run SDT: Schema Compare to diff your project against a target. Read the safety classification on each change.
- Deploy — build the project (SDT: Build Project (.sdtpac)) and publish it. Destructive changes refuse to apply until you opt in explicitly.
A guided Get started with SDT walkthrough is available from the VS Code Welcome page.
AI features (bring your own key)
AI is a layer on top of the deterministic engine — every AI feature composes with the compare/safety core, so the product is fully useful without it. You supply your own API key; SDT never ships one.
Supported providers: Anthropic, OpenAI, Azure OpenAI, any OpenAI-compatible endpoint, and self-hosted models. Enterprise deployments can additionally route through Snowflake Cortex so prompts stay inside the account boundary.
What it does in the extension:
- Sketch Object from Description — prose → idiomatic
CREATE DDL with a review-before-deploy header.
- Suggest Safer Alternative — right-click a
DROP/TRUNCATE/DROP COLUMN and get a safer pattern (soft-delete, clone-then-swap, archive table).
- Ask SDT chat panel — converse with the engine as context (project model, target metadata, last compare). It proposes rename / change-type / drop / move operations you confirm via a modal before they touch your files.
During the beta all AI features are unlocked; after the beta they live in the Pro tier (the deterministic compare/safety/lint core stays free). Configure your provider and key from the SDT settings; calls are billed by your provider, not by SDT.
Pricing & beta
This is a 30-day public beta. During the beta, every feature is free.
After the beta:
- Free core stays free, forever — schema compare, safe deploy with the safety classifier, extract, lint, format, lineage, Object Explorer, and the interactive schema diagram.
- Pro features keep working with warnings — there is no hard paywall that locks you out mid-workflow. Pro adds AI write-side features, multi-project/Slice+Suite ownership, and the column-refactor UX.
- AI features are always bring-your-own-key — you pay your AI provider directly; SDT adds no inference markup.
Full tier details live on the public repo: https://github.com/GVOrganization/sdt-tools.
Documentation
📚 Full documentation — every feature, end to end:
Reporting bugs & feedback
Three channels:
- In VS Code — run SDT: Report a Bug… from the command palette.
- CLI — run
sdt feedback if you have the @sdt-tools/cli installed.
- GitHub Issues — https://github.com/GVOrganization/sdt-tools/issues.
Privacy
SDT includes opt-in automatic error reporting. When enabled, it sends only sanitized diagnostics — error fingerprints, stack traces with paths stripped, command name, and product version. It never transmits your SQL, identifiers, table or column names, data, or credentials. Reporting is off until you consent on first run, and can be toggled at any time (sdt telemetry from the CLI). Full details: PRIVACY.md on the public repo.
- VS Code 1.90.0 or newer.
- Node.js 20+ (only needed if you also use the
sdt CLI; the extension bundles its runtime).
- Snowflake — works against Standard, Enterprise, and Business Critical editions. The Object Explorer, extract, compare, and deploy flows need a connection profile with read access to the catalog you target (and write access to deploy).
- OS — Windows, macOS, and Linux (pure TypeScript, no .NET dependency).
SDT + DDT
SDT has a sibling: DDT — Databricks Data Tools — the same design, CLI surface, and safety model for Databricks Unity Catalog. A team that knows one learns the other in a day.
SDT is an independent tool and is not affiliated with or endorsed by Snowflake Inc. "Snowflake" is a trademark of Snowflake Inc., used here for descriptive purposes only.
License: Apache-2.0.