From snowflake-pack
Creates minimal Snowflake examples: connect/query in Node.js/TypeScript/Python, SQL for DB objects. For testing setups, first queries, SDK patterns.
How this skill is triggered — by the user, by Claude, or both
Slash command
/snowflake-pack:snowflake-hello-worldThis skill is limited to the following tools:
The summary Claude sees in its skill listing — used to decide when to auto-load this skill
Minimal working examples demonstrating core Snowflake operations: connect, query, create objects, load data.
Minimal working examples demonstrating core Snowflake operations: connect, query, create objects, load data.
snowflake-install-auth setupCOMPUTE_WH)// hello-snowflake.ts
import snowflake from 'snowflake-sdk';
const connection = snowflake.createConnection({
account: process.env.SNOWFLAKE_ACCOUNT!,
username: process.env.SNOWFLAKE_USER!,
password: process.env.SNOWFLAKE_PASSWORD!,
warehouse: 'COMPUTE_WH',
database: 'DEMO_DB',
schema: 'PUBLIC',
});
connection.connect((err) => {
if (err) {
console.error('Connection failed:', err.message);
process.exit(1);
}
console.log('Connected to Snowflake!');
// Run a simple query
connection.execute({
sqlText: `SELECT CURRENT_TIMESTAMP() AS now,
CURRENT_WAREHOUSE() AS warehouse,
CURRENT_DATABASE() AS database,
CURRENT_ROLE() AS role`,
complete: (err, stmt, rows) => {
if (err) {
console.error('Query failed:', err.message);
return;
}
console.log('Query result:', rows);
connection.destroy((err) => {
if (err) console.error('Disconnect error:', err.message);
});
},
});
});
# hello_snowflake.py
import snowflake.connector
import os
conn = snowflake.connector.connect(
account=os.environ['SNOWFLAKE_ACCOUNT'],
user=os.environ['SNOWFLAKE_USER'],
password=os.environ['SNOWFLAKE_PASSWORD'],
warehouse='COMPUTE_WH',
database='DEMO_DB',
schema='PUBLIC',
)
try:
cursor = conn.cursor()
cursor.execute("""
SELECT CURRENT_TIMESTAMP() AS now,
CURRENT_WAREHOUSE() AS warehouse,
CURRENT_DATABASE() AS database,
CURRENT_ROLE() AS role
""")
for row in cursor:
print(f"Time: {row[0]}, Warehouse: {row[1]}, DB: {row[2]}, Role: {row[3]}")
finally:
conn.close()
-- Run via connection.execute() or snowflake worksheet
CREATE DATABASE IF NOT EXISTS DEMO_DB;
CREATE SCHEMA IF NOT EXISTS DEMO_DB.MY_SCHEMA;
CREATE OR REPLACE TABLE DEMO_DB.MY_SCHEMA.USERS (
id INTEGER AUTOINCREMENT,
name VARCHAR(100) NOT NULL,
email VARCHAR(255),
created_at TIMESTAMP_NTZ DEFAULT CURRENT_TIMESTAMP()
);
INSERT INTO DEMO_DB.MY_SCHEMA.USERS (name, email)
VALUES ('Alice', 'alice@example.com'),
('Bob', 'bob@example.com');
SELECT * FROM DEMO_DB.MY_SCHEMA.USERS;
// Insert with bind parameters — prevents SQL injection
connection.execute({
sqlText: 'INSERT INTO DEMO_DB.MY_SCHEMA.USERS (name, email) VALUES (?, ?)',
binds: ['Charlie', 'charlie@example.com'],
complete: (err, stmt, rows) => {
if (err) {
console.error('Insert failed:', err.message);
return;
}
console.log('Inserted rows:', stmt.getNumUpdatedRows());
},
});
// Fetch results with streaming for large datasets
connection.execute({
sqlText: 'SELECT * FROM DEMO_DB.MY_SCHEMA.USERS ORDER BY created_at DESC',
streamResult: true,
complete: (err, stmt) => {
if (err) { console.error(err.message); return; }
const stream = stmt.streamRows();
stream.on('data', (row) => console.log('Row:', row));
stream.on('end', () => console.log('All rows fetched'));
stream.on('error', (err) => console.error('Stream error:', err));
},
});
# Insert with bind parameters
cursor.execute(
"INSERT INTO DEMO_DB.MY_SCHEMA.USERS (name, email) VALUES (%s, %s)",
('Charlie', 'charlie@example.com')
)
print(f"Inserted {cursor.rowcount} row(s)")
# Fetch all results
cursor.execute("SELECT * FROM DEMO_DB.MY_SCHEMA.USERS ORDER BY created_at DESC")
results = cursor.fetchall()
for row in results:
print(f"ID: {row[0]}, Name: {row[1]}, Email: {row[2]}")
# Fetch as pandas DataFrame
import pandas as pd
cursor.execute("SELECT * FROM DEMO_DB.MY_SCHEMA.USERS")
df = cursor.fetch_pandas_all()
print(df)
Connected to Snowflake!
Query result: [{ NOW: '2026-03-22T...', WAREHOUSE: 'COMPUTE_WH', DATABASE: 'DEMO_DB', ROLE: 'SYSADMIN' }]
Inserted 1 row(s)
Row: { ID: 1, NAME: 'Alice', EMAIL: 'alice@example.com', CREATED_AT: '...' }
| Error | Cause | Solution |
|---|---|---|
002003 (42S02): Object does not exist | Table/DB not created yet | Run CREATE statements first |
000606: No active warehouse | No warehouse set or suspended | USE WAREHOUSE COMPUTE_WH; or set in connection |
001003: SQL compilation error: syntax error | Bad SQL syntax | Check SQL against Snowflake SQL reference |
100035: No space left on device | Large result set, local disk full | Use streamResult: true or limit results |
Proceed to snowflake-local-dev-loop for development workflow setup.
npx claudepluginhub jeremylongshore/claude-code-plugins-plus-skills --plugin snowflake-packSets up Snowflake local dev workflow with isolated dev warehouses, SnowSQL, mocked unit tests, integration tests, SQL migrations, and Node.js/TypeScript or Python clients.
Automates Snowflake data warehouse operations: list databases, schemas, tables, execute SQL, and manage workflows via Composio MCP.
Assists with Snowflake SQL best practices, data pipelines (Dynamic Tables, Streams, Tasks, Snowpipe), Cortex AI, Snowpark Python, dbt, performance tuning, and security hardening.