Agent skill · data analytics · alirezarezvani

snowflake-development

Use for Snowflake work: SQL, Dynamic Tables, Streams and Tasks, Cortex AI functions and agents, Snowpark Python, dbt on Snowflake, or Snowflake errors. Helps with queries via snowflake_query_helper.py.

Why this skill is useful

Adds 3 executable scripts for generating Snowflake SQL templates that streamline data pipeline development and troubleshooting.

What it needs

Requires python installed locally. About 7k tokens when loaded. Last updated 2026-08-05. 23,939 stars on the source repository.

What this skill does

Snowflake Development Snowflake SQL, data pipelines, Cortex AI, and Snowpark Python development. Covers the colon-prefix rule, semi-structured data, MERGE upserts, Dynamic Tables, Streams+Tasks, Cortex AI functions, agent specs, performance tuning, and security hardening. Originally contributed by James Cha-Earley — enhanced and integrated by the claude-skills team. Quick Start --- SQL Best Practices Naming and Style Use snakecase for all identifiers. Avoid double-quoted identifiers -- they force case-sensitive names that require constant quoting. Use CTEs (WITH clauses) over nested subqueries. Use CREATE OR REPLACE for idempotent DDL. Use explicit column lists -- never SELECT in production. Snowflake's columnar storage scans only referenced columns, so explicit lists reduce I/O. Stored Procedures -- Colon Prefix Rule In SQL stored procedures (BEGIN...END blocks), variables and parameters must use the colon : prefix inside SQL statements. Without it, Snowflake treats them as column identifiers and raises "invalid identifier" errors. This applies to DECLARE variables, LET variables, and procedure parameters when used inside SELECT, INSERT, UPDATE, DELETE, or MERGE. Semi-Structured Data VARIANT, OBJECT, ARRAY for JSON/Avro/Parquet/ORC. Access nested fields: src:customer.name::STRING. Always cast with ::TYPE. VARIANT null vs SQL NULL: JSON null is stored as the string "null". Use STRIPNULLVALUE = TRUE on load. Flatten arrays: SELECT f.value:name::STRING FROM mytable, LATERAL FLATTEN(input => src:items) f; MERGE for Upserts See references/snowflakesqlandpipelines.md for deeper SQL patterns and anti-patterns. --- Data Pipelines Choosing Your Approach Approach When to Use ---------- ------------- Dynamic Tables Declarative transformations. Default choice. Define the query, Snowflake handles refresh. Streams + Tasks Imperative CDC. Use for procedural logic, stored procedure calls, complex branching. Snowpipe Continuous file loading from cloud storage (S3, GCS, Azure). …

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills alirezarezvani/snowflake-development--6f0ed8

View the source on GitHub

Browse the @skills marketplace