Agent skill

Snowflake Data Engineering

by Mindrally in Mindrally/skills

Best practices for Snowflake SQL, semi-structured data, and data pipelines built with Dynamic Tables, Streams, Tasks, and Snowpipe.

Apache-2.0Auto-check passedDatabases

Install Snowflake Data Engineering

skills CLI
$ npx skills add Mindrally/skills --skill snowflake-data-engineering -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install Mindrally/skills snowflake-data-engineering --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/Mindrally/skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/snowflake-data-engineering .claude/skills/snowflake-data-engineering && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
snowflake-data-engineering
GitHub stars
267
Token cost
~2.3k tokens
SKILL.md length
861 words
Files
1
Skills in repo
34
Repo updated
First seen
Licence
Apache-2.0

At a glance

Best practices for Snowflake SQL, semi-structured data, and data pipelines built with Dynamic Tables, Streams, Tasks, and Snowpipe.

  • Works in 7 steps: Land raw data — Use Snowpipe… → Choose a transformation approach —… → Model semi-structured data — Land raw… → …
  • Writing Snowflake SQL
  • SKILL.md covers Workflow for Building a…, SQL and Semi-Structured Data, Performance Optimization and Data Pipelines, plus 6 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Snowflake Data Engineering is an agent skill from Mindrally/skills. Best practices for Snowflake SQL, semi-structured data, and data pipelines built with Dynamic Tables, Streams, Tasks, and Snowpipe. Use when writing Snowflake SQL, designing ingestion or transformation pipelines, tuning warehouse performance and cost, or working with Time Travel, cloning, RBAC, or Iceberg tables on Snowflake.

Its SKILL.md is about 2.3k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Databases, covering Data warehousing, Data pipelines and ETL and Authorization and RBAC. It works with Snowflake and SQL. The repository describes itself as: 255+ Claude Code skills converted from Cursor rules. Expert coding guidelines for every major framework and language. The licence is Apache-2.0.

When your agent uses it

  • Writing Snowflake SQL
  • Designing ingestion
  • Transformation pipelines
  • Tuning warehouse performance and cost

Example prompts

  • “/snowflake-data-engineering”

Workflow steps

7 steps, taken from the first numbered list in SKILL.md.

  1. Land raw data — Use Snowpipe (AUTO_INGEST = TRUE) for continuous file loads from an external stage, or Snowpipe Streaming for low-latency…
  2. Choose a transformation approach — Prefer Dynamic Tables for declarative, most pipelines; fall back to Streams + Tasks only when you need…
  3. Model semi-structured data — Land raw JSON/Avro/Parquet as VARIANT, then flatten into typed relational columns as early as practical.
  4. Chain pipeline stages — Build Dynamic Tables on top of each other (or Streams feeding Tasks) so each stage narrows scope from raw to…
  5. Tune for performance — Add clustering keys or Search Optimization only where query patterns justify them; tag queries for cost attribution.
  6. Set access controls — Apply least-privilege RBAC with functional roles (loader, transformer, analyst) and masking/row-access policies for…
  7. Monitor cost and freshness — Track WAREHOUSE_METERING_HISTORY and QUERY_HISTORY, set Resource Monitors, and validate TARGET_LAG matches…

What it can do on your machine

Read from SKILL.md and the folder at commit 9718410. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are sql).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Snowflake Data Engineering loads about 2.3k tokens when it runs. Until then it costs about 89 tokens; SKILL.md has 861 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~89
When it runs · the whole SKILL.md, loaded when a task matches
~2.3k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from Mindrally/skills at commit 9718410, republished under its Apache-2.0 licence (© Mindrally). 861 words, ~2,266 tokens.

Download SKILL.mdSave it as .claude/skills/snowflake-data-engineering/SKILL.md (or your agent's skills folder).
name
snowflake-data-engineering
description
Best practices for Snowflake SQL, semi-structured data, and data pipelines built with Dynamic Tables, Streams, Tasks, and Snowpipe. Use when writing Snowflake SQL, designing ingestion or transformation pipelines, tuning warehouse performance and cost, or working with Time Travel, cloning, RBAC, or Iceberg tables on Snowflake.

Snowflake Data Engineering

This skill covers SQL conventions, pipeline architecture (Dynamic Tables, Streams, Tasks, Snowpipe), performance tuning, and cost/access management on Snowflake.

Workflow for Building a Snowflake Pipeline

  1. Land raw data — Use Snowpipe (AUTO_INGEST = TRUE) for continuous file loads from an external stage, or Snowpipe Streaming for low-latency row-level ingestion via SDK.
  2. Choose a transformation approach — Prefer Dynamic Tables for declarative, most pipelines; fall back to Streams + Tasks only when you need procedural logic or stored-procedure calls.
  3. Model semi-structured data — Land raw JSON/Avro/Parquet as VARIANT, then flatten into typed relational columns as early as practical.
  4. Chain pipeline stages — Build Dynamic Tables on top of each other (or Streams feeding Tasks) so each stage narrows scope from raw to cleaned to aggregated.
  5. Tune for performance — Add clustering keys or Search Optimization only where query patterns justify them; tag queries for cost attribution.
  6. Set access controls — Apply least-privilege RBAC with functional roles (loader, transformer, analyst) and masking/row-access policies for sensitive data.
  7. Monitor cost and freshness — Track WAREHOUSE_METERING_HISTORY and QUERY_HISTORY, set Resource Monitors, and validate TARGET_LAG matches actual freshness requirements.

SQL and Semi-Structured Data

  • Use VARIANT, OBJECT, and ARRAY types for JSON, Avro, Parquet, and ORC data.
  • Access nested fields with colon notation and cast explicitly: src:customer.name::STRING, src:price::NUMBER(10,2), src:created_at::TIMESTAMP_NTZ.
  • Flatten arrays with LATERAL FLATTEN:
sql
SELECT f.value:name::STRING AS name
FROM my_table, LATERAL FLATTEN(input => src:items) f;
  • Flatten semi-structured data into relational columns whenever it contains dates, numbers stored as strings, or arrays — keeping data inside VARIANT prevents Snowflake's automatic subcolumnarization from paying off.
  • Avoid mixing types within the same VARIANT field for the same reason.
  • Remember that a JSON null is stored as the string "null", distinct from a SQL NULL. Use STRIP_NULL_VALUES => TRUE on load when you want them treated the same.
SQL coding standards
  • Use snake_case for all identifiers; avoid quoted identifiers.
  • Prefer CTEs over deeply nested subqueries for readability.
  • Use CREATE OR REPLACE for idempotent DDL.
  • Use COPY INTO for bulk loading, never row-by-row INSERT.
  • Use MERGE for upserts:
sql
MERGE INTO target t USING source s ON t.id = s.id
WHEN MATCHED THEN UPDATE SET t.name = s.name
WHEN NOT MATCHED THEN INSERT (id, name) VALUES (s.id, s.name);
  • In stored procedures, prefix session/local variables with : when referencing them inside SQL statements:
sql
CREATE PROCEDURE my_proc(p_id INT) RETURNS STRING LANGUAGE SQL AS
BEGIN
  LET result STRING;
  SELECT name INTO :result FROM users WHERE id = :p_id;
  RETURN result;
END;

Performance Optimization

  • Add cluster keys only for very large tables (multi-TB) on columns frequently used in WHERE/JOIN/GROUP BY:
sql
ALTER TABLE large_events CLUSTER BY (event_date, region);
  • Use the Search Optimization Service for point lookups on high-cardinality columns or substring/regex search:
sql
ALTER TABLE logs ADD SEARCH OPTIMIZATION ON EQUALITY(sender_ip), SUBSTRING(error_message);
  • Use Materialized Views to pre-compute expensive single-table aggregations.
  • Reuse prior results with RESULT_SCAN(LAST_QUERY_ID()) instead of re-running an identical query.
  • Tag queries for cost attribution: ALTER SESSION SET QUERY_TAG = 'etl_daily_load';
  • Never run SELECT * on wide tables — it defeats columnar pruning benefits.

Data Pipelines

Choose the right primitive:

ApproachWhen to use
Dynamic TablesDeclarative: define the query, Snowflake manages refresh. Default choice for most pipelines.
Streams + TasksImperative CDC + scheduling; needed for procedural logic or stored-procedure calls.
SnowpipeContinuous file loading from S3/GCS/Azure.
Snowpipe StreamingLow-latency row-level ingestion via SDK (Java, Python).
Dynamic Tables
sql
CREATE OR REPLACE DYNAMIC TABLE cleaned_events
  TARGET_LAG = '5 minutes'
  WAREHOUSE = transform_wh
  AS
  SELECT event_id, event_type, user_id, event_data:page::STRING AS page, event_timestamp
  FROM raw_events
  WHERE event_type IS NOT NULL;

-- Chain for multi-step pipelines
CREATE OR REPLACE DYNAMIC TABLE user_sessions
  TARGET_LAG = '10 minutes'
  WAREHOUSE = transform_wh
  AS
  SELECT user_id, MIN(event_timestamp) AS session_start, MAX(event_timestamp) AS session_end,
         COUNT(*) AS event_count
  FROM cleaned_events GROUP BY user_id;

TARGET_LAG sets the freshness target. REFRESH_MODE can be AUTO, FULL, or INCREMENTAL. Manage lifecycle with ALTER DYNAMIC TABLE ... SET TARGET_LAG / REFRESH / SUSPEND / RESUME.

Streams (CDC)
sql
CREATE OR REPLACE STREAM raw_events_stream ON TABLE raw_events;

Streams add METADATA$ACTION, METADATA$ISUPDATE, and METADATA$ROW_ID columns. Set APPEND_ONLY = TRUE for insert-only sources to lower overhead.

Tasks (scheduled/triggered)
sql
CREATE OR REPLACE TASK process_events
  WAREHOUSE = transform_wh
  SCHEDULE = 'USING CRON 0 */1 * * * America/Los_Angeles'
  WHEN SYSTEM$STREAM_HAS_DATA('raw_events_stream')
  AS
  INSERT INTO cleaned_events
  SELECT event_id, event_type, user_id, event_timestamp
  FROM raw_events_stream WHERE event_type IS NOT NULL;

Build Task DAGs with CREATE TASK child_task ... AFTER parent_task .... Tasks are created SUSPENDED by default — remember ALTER TASK ... RESUME or nothing will run.

Show full SKILL.md (333 more words)Show less
Snowpipe
sql
CREATE OR REPLACE PIPE my_pipe AUTO_INGEST = TRUE AS
  COPY INTO raw_events FROM @my_external_stage FILE_FORMAT = (TYPE = 'JSON');

A common end-to-end pattern is Snowpipe landing raw data, feeding a chain of Dynamic Tables.

Time Travel and Data Protection

  • Query historical data with Time Travel (1 day by default, up to 90 on Enterprise+):
sql
SELECT * FROM my_table AT(TIMESTAMP => '2026-01-15 10:00:00'::TIMESTAMP);
SELECT * FROM my_table BEFORE(STATEMENT => '<query_id>');
  • Recover dropped objects with UNDROP TABLE/SCHEMA/DATABASE.
  • Use zero-copy cloning for dev/test environments or backups without duplicating storage: CREATE TABLE clone CLONE source;, CREATE SCHEMA dev CLONE prod;.

Snowflake Postgres

  • Snowflake offers managed PostgreSQL (v16/17/18) with full wire compatibility: CREATE POSTGRES INSTANCE my_instance COMPUTE_FAMILY='STANDARD_S' STORAGE_SIZE_GB=50;
  • Bridge OLTP to analytics with the pg_lake extension, which exposes Iceberg tables readable from both Postgres and Snowflake.
  • Use FORK for point-in-time recovery and HIGH_AVAILABILITY = TRUE for production instances.

Warehouse and Cost Management

  • Size warehouses by query complexity, not raw data volume — start at X-Small and scale up only when needed.
  • Set AUTO_SUSPEND = 60 and AUTO_RESUME = TRUE; use separate warehouses per workload so a heavy job doesn't starve interactive queries.
  • Use multi-cluster warehouses for concurrency scaling, not for single-query speed.
  • Use transient tables for staging data to avoid Fail-safe storage cost.
  • Monitor spend via SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY and WAREHOUSE_METERING_HISTORY, and set Resource Monitors to cap credit consumption.

Access Control

  • Apply least-privilege RBAC using database roles for object grants.
  • Use masking policies for PII and row access policies for multi-tenant isolation.
  • Structure functional roles around pipeline stages: loader (write raw), transformer (read raw, write analytics), analyst (read analytics only).

Data Sharing and Iceberg

  • Use CREATE SHARE for zero-copy cross-account data sharing, or the Snowflake Marketplace for external exchange.
  • Create Iceberg tables with CREATE ICEBERG TABLE ... CATALOG='SNOWFLAKE' EXTERNAL_VOLUME='vol' BASE_LOCATION='path/'; for interoperability with Spark, Flink, and Trino.

Anti-Patterns

  • Do not use Streams + Tasks for simple transformations that a Dynamic Table can express declaratively.
  • Do not set TARGET_LAG shorter than the actual freshness requirement — it directly drives compute cost.
  • Do not forget to RESUME tasks after creation; they start SUSPENDED.
  • Do not run SELECT * on wide tables, and do not skip clustering analysis on multi-TB tables before adding cluster keys.
  • Do not hardcode database/schema names in reusable pipeline code.

© Mindrally, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in snowflake-data-engineering of Mindrally/skills.

Open the folder on GitHubat commit 9718410

Compare with similar skills

Snowflake Data Engineering next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Snowflake Data Engineering compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Snowflake Data Engineering this skillMindrally/skills267—~2.3kAutomated safety check: PassApache-2.0
Optimizing Query By IdAltimateAI/data-engineering-skills127—~919Automated safety check: PassMIT
Snowflake Developmentsickn33/agentic-awesome-skills47k2 repos~2.1kAutomated safety check: PassMIT
Snowflake Developmentalirezarezvani/claude-skills28k—~3.2kAutomated safety check: PassMIT
Optimizing Query TextAltimateAI/data-engineering-skills127—~1.7kAutomated safety check: PassMIT
Uipath Process MiningUiPath/skills166—~4.3kAutomated safety check: NotesMIT

Similar skills

  • Optimizing Query By Id

    AltimateAI/data-engineering-skills

    Optimizes Snowflake query performance using query ID from history.

    127 GitHub stars~919 tokensUpdated 5 days ago
    DatabasesAuto-check passed
  • Snowflake Development

    sickn33/agentic-awesome-skills

    Comprehensive Snowflake development assistant covering SQL best practices, data pipeline design (Dynamic Tables, Streams, Tasks, Snowpipe), Cortex AI functions, Cortex Agents, Snowpark Python, dbt…

    47k GitHub starsUsed in 2 repos~2.1k tokens
    DatabasesAuto-check passed
  • Snowflake Development

    alirezarezvani/claude-skills

    A skill your agent uses when writing Snowflake SQL, building data pipelines with Dynamic Tables or Streams/Tasks, using Cortex AI functions, creating Cortex Agents, writing Snowpark Python…

    28k GitHub stars~3.2k tokensUpdated 1 mo ago
    DatabasesAuto-check passed
  • Optimizing Query Text

    AltimateAI/data-engineering-skills

    Optimizes Snowflake SQL query performance from provided query text.

    127 GitHub stars~1.7k tokensUpdated 5 days ago
    DatabasesAuto-check passed
  • UiPath Process Mining via uip pm — build and operate a process app end-to-end from a CSV / event log: templates, data mapping, upload, ingest, the dbt (Snowflake) transformation layer, publish, and…

    166 GitHub stars~4.3k tokensUpdated today
    DatabasesAuto-check: notes
  • Analyzing Data

    astronomer/agents

    Queries the data warehouse with SQL and answers business questions about data.

    450 GitHub stars~1.3k tokensUpdated 2 days ago
    DatabasesAuto-check passed

More from Mindrally/skills

All 34 skills in this repo
  • Analytics Data Analysis

    Mindrally/skills

    Best practices for analytics, data analysis, and visualization using Python, pandas, matplotlib, seaborn, and Jupyter notebooks.

    267 GitHub stars~1.6k tokensUpdated 1 mo ago
    Auto-check passed
  • Best practices for AutoML and hyperparameter search with Optuna, Ray Tune, and PyCaret, covering search-space design, validation splits, and leakage prevention.

    267 GitHub stars~2.4k tokensUpdated 1 mo ago
    Auto-check passed
  • Blender Python Addon

    Mindrally/skills

    Best practices for writing Blender Python add-ons using the bpy API, covering operators, panels, properties, registration, and API-safe scripting.

    267 GitHub stars~2.2k tokensUpdated 1 mo ago
    Auto-check passed
  • Expert guidelines for Chrome extension development with Manifest V3, covering security, performance, and best practices.

    267 GitHub stars~1.7k tokensUpdated 1 mo ago
    Auto-check passed
  • Clean Code

    Mindrally/skills

    Clean, maintainable, human-readable code principles combined with anti-over-engineering discipline: naming, single responsibility, DRY, and scoping changes to exactly what was requested.

    267 GitHub stars~1.8k tokensUpdated 1 mo ago
    Auto-check passed
  • Design Systems

    Mindrally/skills

    Comprehensive design system guidelines for building consistent, accessible, and scalable component libraries.

    267 GitHub stars~1.8k tokensUpdated 1 mo ago
    Auto-check passed

Works with

Categories

Questions about Snowflake Data Engineering

What does Snowflake Data Engineering do?

Best practices for Snowflake SQL, semi-structured data, and data pipelines built with Dynamic Tables, Streams, Tasks, and Snowpipe. Snowflake Data Engineering is an agent skill from Mindrally/skills. Best practices for Snowflake SQL, semi-structured data, and data pipelines built with Dynamic Tables, Streams, Tasks, and Snowpipe.

When should I use Snowflake Data Engineering?

Snowflake Data Engineering fits situations like: writing Snowflake SQL; designing ingestion; transformation pipelines; tuning warehouse performance and cost.

How do I install Snowflake Data Engineering in Claude Code?

Run `npx skills add Mindrally/skills --skill snowflake-data-engineering -a claude-code`. Or copy the skill folder (snowflake-data-engineering in Mindrally/skills) into .claude/skills/snowflake-data-engineering in your project. Claude Code loads it when a task matches its description.

How do I install Snowflake Data Engineering in Codex?

Run `npx skills add Mindrally/skills --skill snowflake-data-engineering -a codex`. Or copy the skill folder (snowflake-data-engineering in Mindrally/skills) into .agents/skills/snowflake-data-engineering in your project. Codex loads it when a task matches its description.

Can I use Snowflake Data Engineering in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add Mindrally/skills --skill snowflake-data-engineering -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/snowflake-data-engineering, .gemini/skills/snowflake-data-engineering, .github/skills/snowflake-data-engineering and .opencode/skills/snowflake-data-engineering in your project.

What does Snowflake Data Engineering need to run?

SKILL.md names no scripts, command-line tools or credentials: Snowflake Data Engineering is instructions for the agent only.

Does Snowflake Data Engineering access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Snowflake Data Engineering safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Snowflake Data Engineering use?

Snowflake Data Engineering is published under the Apache-2.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Snowflake Data Engineering use?

About 2.3k tokens (SKILL.md is roughly 9.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Snowflake Data Engineering?

Skills that share tags, products or a category with Snowflake Data Engineering: Optimizing Query By Id (AltimateAI/data-engineering-skills, 127 stars), Snowflake Development (sickn33/agentic-awesome-skills, 47k stars), Snowflake Development (alirezarezvani/claude-skills, 28k stars) and Optimizing Query Text (AltimateAI/data-engineering-skills, 127 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Snowflake Data Engineering?

Mindrally (a GitHub organization) maintains it in Mindrally/skills, which has 267 GitHub stars. The repository holds 34 skills in this directory. The repository was last updated on September 3, 2026.

Source: Mindrally/skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.