Generated banner for Cortex Router
Generated logo for Cortex Router

Cortex Router

SnowflakeOfficialCreated by Snowflake Integration Team

  • Skill
  • Tool integration
  • Automation and integrations
  • Apache-2.0
  • No issues found

From the author

Auto-routing skill loaded by the prompt filter hook. Routes Snowflake-related operations to Cortex Code CLI. Not for direct invocation — use $cortex-run instead.
— the description by Snowflake Integration Team

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

  1. Download the skill as a ZIP:

    https://autogineer.com/agent-skills/snowflake-labs/cortex-router/download
  2. Unzip 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 --version

If cortex is NOT found:

  1. Tell the user: "Cortex Code CLI is not installed. Setting it up now."

  2. Load the snowflake-cortex-code:cortex-setup skill using the Skill tool.

  3. 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-last when 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-last

Timeout: 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

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