Cortex Router
SnowflakeOfficialCreated by Snowflake Integration Team
- Skill
- Tool integration
- Automation and integrations
- Apache-2.0
- No issues found
AutoGineer summary
Written by AutoGineer from the skill’s own files, not by the author
The cortex-router is a background utility designed to intercept user prompts and determine whether they should be handled by the standard Claude Code environment or routed to the specialized Cortex Code CLI. It ensures that Snowflake-specific operations—such as data quality checks, ML model creation, governance tasks, and dynamic table management—are processed by the appropriate toolset. The router manages the lifecycle of these requests, including CLI verification, session persistence for multi-turn conversations, and security envelope enforcement.
What it does
- Verifies the installation and configuration of the Cortex Code CLI.
- Analyzes user prompts to determine if they require Snowflake-specific capabilities.
- Routes requests to the Cortex Code CLI with appropriate security envelopes (RO, RW, RESEARCH, DEPLOY).
- Maintains multi-turn conversation context using session IDs and the resume-last flag.
- Handles routing failures by reporting errors rather than bypassing configuration policies.
- Formats and presents output from Cortex operations back to the user.
When to use it
- When you need to perform Snowflake-specific operations like data governance or ML tasks.
- When working with Snowflake dynamic tables or specialized Cortex AI features.
- When you need to maintain context across multiple turns for a Snowflake-related data analysis task.
- When you are unsure if a query should be handled by standard SQL tools or specialized Cortex skills.
Advantages
- Ensures specialized Snowflake skills are utilized for relevant tasks.
- Provides seamless multi-turn interaction by persisting session context.
- Enforces security by applying specific execution envelopes to operations.
- Reduces ambiguity by providing a structured decision tree for routing requests.
Usage examples
- “Show me all tables in my Snowflake database”
- The router identifies the explicit Snowflake mention and routes the request to the Cortex Code CLI for execution.
- “Check data quality for my orders table”
- The router detects a match for the Cortex data-quality skill and initiates the request via the Cortex CLI.
- “drill into the top customer”
- The router uses the --resume-last flag to maintain context from the previous Cortex turn, allowing for a deeper analysis.
Install
Download the skill as a ZIP:
https://autogineer.com/agent-skills/snowflake-labs/cortex-router/downloadUnzip it into the cross-client skills folder of your project:
mkdir -p .agents/skills && unzip cortex-router.zip -d .agents/skills
Documentation by Snowflake Integration Team
Cortex Code Router
Route Snowflake operations to Cortex Code CLI, which has specialized bundled skills (data-quality, semantic-view, cost-intelligence, ML, governance, etc.).
CRITICAL: Follow steps 1 → 2 → 3 in order. Do NOT skip to Step 3.
Step 1: Verify CLI
which cortex 2>/dev/null && cortex --versionIf cortex is NOT found:
Tell the user: "Cortex Code CLI is not installed. Setting it up now."
Load the
snowflake-cortex-code:cortex-setupskill using the Skill tool.STOP — do not continue until the CLI is installed.
Step 2: Confirm Routing
Run the routing script to check if this prompt should go to Cortex or stay in Claude Code:
bash "${CLAUDE_PLUGIN_ROOT}/scripts/run_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/router/route_request.py" --prompt "USER_PROMPT_HERE"Replace USER_PROMPT_HERE with the actual user prompt (shell-escaped).
The shared launcher selects python3, or python only after verifying Python 3.
Use Bash (Git Bash on Windows). It never retries a failed script under another interpreter.
If routing fails, STOP and report the error; do not bypass a configuration/policy error.
Read the output carefully:
If output says "route: cortex" → proceed to Step 3
If output says "route: claude" → STOP. Handle the request yourself using Claude Code tools (sql_execute, Read, Write, etc.). Do NOT run execute_cortex.py.
Step 3: Execute via Cortex Code
Only reach this step if Step 2 confirmed routing to Cortex.
Choose a security envelope based on the operation:
RO: Read-only queries (SELECT, SHOW, DESCRIBE) — won't run DDL or DML
RW: Data modifications, DDL (CREATE, ALTER, DROP) — default for most operations
RESEARCH: Read + web access, no writes
DEPLOY: Full access (use sparingly)
Default to RW unless the request is clearly read-only.
bash "${CLAUDE_PLUGIN_ROOT}/scripts/run_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "USER_PROMPT_HERE" \
--envelope "RW"Add --connection CONNECTION_NAME if a specific Snowflake connection is needed.
Multi-turn: --resume-last vs fresh
Every cortex invocation returns a session_id that the router persists. Follow-up
turns can resume that session so Cortex sees the prior conversation -- real
multi-turn, not one-shot batches per prompt.
Add
--resume-lastwhen the current prompt is a continuation of the previous Cortex turn: "keep going", "apply the top suggestion", "dig deeper", "also show me ...", "and for last quarter", "fix that", or any clarification of an answer Cortex just gave.Omit
--resume-last(start fresh) when the user switches topics, asks about a different database/warehouse, or begins a clearly new task.--resume <session_id>is also accepted if you have an explicit id.
# Follow-up on the previous Cortex turn
bash "${CLAUDE_PLUGIN_ROOT}/scripts/run_python.sh" "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "drill into the top customer" --envelope "RO" \
--resume-lastTimeout: This command may take 30-90 seconds. If it takes longer than 2 minutes, it likely hung — kill the process and tell the user to try $cortex-run for direct invocation.
Step 4: Return Results
Format Cortex's output for the user:
Show SQL results in readable tables
Display any generated artifacts or analysis
Report success/failure clearly
Notes
Cortex has bundled skills for: data-quality, semantic-view, cost-intelligence, ML, governance, security, lineage, dynamic-tables, and more
For simple SQL queries that don't need Cortex skills, Step 2 should route to Claude Code
If routing or execution fails, STOP and report the error rather than bypassing the plugin
Multi-turn context is preserved across invocations via
--resume-last(see Step 3)
Files
- ATTRIBUTION.mdAdded by AutoGineer1.0 KiB
- LICENSELicence file added by AutoGineer11.1 KiB
- SKILL.md4.2 KiB
- references/cortex-cli-reference.md5.2 KiB
- references/routing-examples.md2.4 KiB
Requirements and compatibility
Written for: Claude Code
Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta
“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.
Needs: Claude Code frontmatter, Needs Python
Security
No issues found by our static scan· No issues found
A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.
Attribution and licence
- Created by
- Snowflake Integration Team
- Publisher
- Snowflake (Official)
- Source
- Snowflake-Labs/snowflake-ai-kit · plugins/cortex-code/skills/cortex-router · commit 6a9165f
- Licence
- Apache License 2.0 (redistribution allowed)
- LICENSE (added by AutoGineer from LICENSE)
- ATTRIBUTION.md (written by AutoGineer)
- Synced
AutoGineer is not affiliated with or endorsed by Snowflake Integration Team or Snowflake.
Download ZIP
The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download cortex-router.zip