From snowflake-pack
Execute Snowflake production readiness checklist with monitoring and rollback. Use when deploying Snowflake pipelines to production, preparing for go-live, or validating production Snowflake configuration. Trigger with phrases like "snowflake production", "snowflake go-live", "snowflake launch checklist", "snowflake prod ready".
npx claudepluginhub flight505/skill-forge --plugin snowflake-packThis skill is limited to using the following tools:
Complete checklist for deploying Snowflake data pipelines and integrations to production.
Conducts multi-round deep research on GitHub repos via API and web searches, generating markdown reports with executive summaries, timelines, metrics, and Mermaid diagrams.
Share bugs, ideas, or general feedback.
Complete checklist for deploying Snowflake data pipelines and integrations to production.
-- Production warehouse setup
CREATE WAREHOUSE IF NOT EXISTS PROD_ETL_WH
WAREHOUSE_SIZE = 'LARGE'
AUTO_SUSPEND = 120
AUTO_RESUME = TRUE;
CREATE WAREHOUSE IF NOT EXISTS PROD_ANALYTICS_WH
WAREHOUSE_SIZE = 'MEDIUM'
MIN_CLUSTER_COUNT = 1
MAX_CLUSTER_COUNT = 3
SCALING_POLICY = 'STANDARD'
AUTO_SUSPEND = 300
AUTO_RESUME = TRUE;
-- Resource monitor with alerts
CREATE OR REPLACE RESOURCE MONITOR prod_monitor
WITH CREDIT_QUOTA = 1000
FREQUENCY = MONTHLY
START_TIMESTAMP = IMMEDIATELY
TRIGGERS
ON 75 PERCENT DO NOTIFY
ON 90 PERCENT DO NOTIFY
ON 100 PERCENT DO SUSPEND
ON 110 PERCENT DO SUSPEND_IMMEDIATE;
ALTER WAREHOUSE PROD_ETL_WH SET RESOURCE_MONITOR = prod_monitor;
ALTER WAREHOUSE PROD_ANALYTICS_WH SET RESOURCE_MONITOR = prod_monitor;
SHOW STREAMS)ON_ERROR = 'CONTINUE' or 'SKIP_FILE')DATA_RETENTION_TIME_IN_DAYS)USE_CACHED_RESULT = TRUE)-- Set statement timeout for production
ALTER WAREHOUSE PROD_ETL_WH SET STATEMENT_TIMEOUT_IN_SECONDS = 3600;
ALTER WAREHOUSE PROD_ANALYTICS_WH SET STATEMENT_TIMEOUT_IN_SECONDS = 600;
-- Enable query result caching (default is ON)
ALTER ACCOUNT SET USE_CACHED_RESULT = TRUE;
-- Verify no one defaults to ACCOUNTADMIN
SELECT name, default_role
FROM SNOWFLAKE.ACCOUNT_USAGE.USERS
WHERE default_role = 'ACCOUNTADMIN' AND disabled = 'false';
-- Create alert for task failures (Snowflake Alerts feature)
CREATE OR REPLACE ALERT task_failure_alert
WAREHOUSE = PROD_ANALYTICS_WH
SCHEDULE = '5 MINUTE'
IF (EXISTS (
SELECT *
FROM TABLE(INFORMATION_SCHEMA.TASK_HISTORY(
SCHEDULED_TIME_RANGE_START => DATEADD(minutes, -10, CURRENT_TIMESTAMP())
))
WHERE state = 'FAILED'
))
THEN
CALL SYSTEM$SEND_EMAIL(
'prod_notifications',
'oncall@company.com',
'Snowflake Task Failure',
'One or more tasks failed in the last 10 minutes. Check TASK_HISTORY.'
);
ALTER ALERT task_failure_alert RESUME;
-- Enable 14-day Time Travel on production tables
ALTER TABLE prod_db.core.orders SET DATA_RETENTION_TIME_IN_DAYS = 14;
-- Enable database replication
ALTER DATABASE prod_db ENABLE REPLICATION TO ACCOUNTS myorg.secondary_account;
-- Run this before and after deployment
SELECT 'Warehouses' AS check_type,
COUNT(*) AS count,
COUNT_IF(state = 'STARTED') AS active
FROM TABLE(INFORMATION_SCHEMA.WAREHOUSES())
UNION ALL
SELECT 'Tasks', COUNT(*), COUNT_IF(state = 'started')
FROM TABLE(INFORMATION_SCHEMA.TASKS())
UNION ALL
SELECT 'Streams', COUNT(*), COUNT_IF(stale = FALSE)
FROM TABLE(INFORMATION_SCHEMA.STREAMS())
UNION ALL
SELECT 'Pipes', COUNT(*), COUNT_IF(is_autoingest_enabled = 'true')
FROM TABLE(INFORMATION_SCHEMA.PIPES());
-- Use Time Travel to revert a table
CREATE OR REPLACE TABLE prod_db.core.orders
CLONE prod_db.core.orders AT (TIMESTAMP => '2026-03-21 12:00:00'::TIMESTAMP_NTZ);
-- Suspend problematic tasks
ALTER TASK transform_orders SUSPEND;
-- Revert warehouse changes
ALTER WAREHOUSE PROD_ETL_WH SET WAREHOUSE_SIZE = 'MEDIUM';
| Alert | Condition | Severity |
|---|---|---|
| Task failure | state = 'FAILED' in TASK_HISTORY | P1 |
| Stream stale | stale = TRUE in SHOW STREAMS | P1 |
| Credit quota >90% | Resource monitor trigger | P2 |
| Query queue >5min | avg_queued_load > 0 sustained | P2 |
| Login failures spike | >10 failures/hour | P2 |
For version upgrades, see snowflake-upgrade-migration.