このスキルは、ユーザーが明示的に「$cortex-run」または「/cortex-run」と入力した場合**のみ**読み込んでください。 自動ルーティング(システムが自動的に適切なスキルを振り分けること)やキーワード一致による自動読み込みは**絶対にしないでください**。 自動ルーティングが必要な場合は、代わりに「snowflake-cortex-code:cortex-router」を使用してください。
ONLY load this skill when the user explicitly types $cortex-run or /cortex-run. NEVER load this skill from auto-routing hooks or keyword matching. For auto-routed prompts, use snowflake-cortex-code:cortex-router instead.
ユーザーが明示的に Cortex Code にリクエストの処理を要求している場合に使用。
自動ルーティングのキーワードフィルターをバイパスし、プロンプトを直接 Cortex Code CLI に送信します。
Cortex Code CLI がインストール済みで、PATH が通っている必要があります:
which cortex && cortex --version
cortex が見つからない場合は、snowflake-cortex-code:cortex-setup スキルをロードしてインストールしてください。
CLI なしで先に進まないでください。
このステップは必須です。毎回最初に実行してください。
which cortex 2>/dev/null && cortex --version
cortex が見つからない、またはコマンドが失敗した場合:
snowflake-cortex-code:cortex-setup スキルをロードする。$cortex-run に続くユーザーのメッセージが、送信するプロンプトになります。
ユーザーが追加テキストなしに $cortex-run のみを入力した場合は、Snowflake で何を行いたいかを尋ねてください。
操作の内容に応じてエンベロープを選択します:
| エンベロープ | 次のような場合に使用 | ブロック対象 |
|---|---|---|
| RO | クエリ、読み取り、データ探索 | 編集・書き込み・破壊的な Bash 操作 |
| RW | データ変更、DDL | 破壊的な Bash 操作(rm -rf、sudo) |
| RESEARCH | データ探索 + Web アクセス | 編集・書き込み・破壊的な Bash 操作 |
| DEPLOY | フルアクセスが必要な場合 | なし |
リクエストが明らかに読み取り専用でない限り、デフォルトは RW とします。
実行スクリプトを通じてプロンプトを処理します:
python "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "USER_PROMPT_HERE" \
--envelope "RW"
読み取り専用クエリの場合:
python "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "USER_PROMPT_HERE" \
--envelope "RO"
Snowflake の接続先を指定する場合:
python "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "USER_PROMPT_HERE" \
--envelope "RW" \
--connection "connection_name"
Cortex の出力をユーザー向けに整形します:
プロンプトを送信する前に、現在の Claude Code セッションの関連コンテキストを先頭に付加します:
# Context from Claude Code Session
[直近 2〜3 件の関連するやり取り — Snowflake 固有の情報のみ]
# User Request
[元のプロンプト]
コンテキストは最小限に抑えてください — Cortex は各プロンプトで送信された内容しか参照できません(セッションを再開する場合を除く)。
--resume-last か新規開始かCortex の各呼び出しは session_id を返し、自動的に保存されます。
後続のターンでそのセッションを再開することで、Cortex は直前の会話内容を参照できます —
プロンプトごとの一回限りの処理ではなく、真のマルチターン会話を実現します。
--resume-last を付加する: 現在のプロンプトが前回の Cortex ターンの継続である場合。--resume-last を省略する(新規開始): ユーザーが話題を切り替えた場合、別のデータベース・ウェアハウスについて質問した場合、または明らかに新しいタスクを開始した場合。--resume <session_id> も使用できます。# 前回の Cortex ターンへの追加質問
python "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "also show me the column types" --envelope "RO" \
--resume-last
ユーザー: $cortex-run show me tables in the RAW schema
ユーザー: $cortex-run create a dynamic table that aggregates daily sales
ユーザー: $cortex-run(プロンプトなし)
--resume-last を使用し、Cortex が会話コンテキストを保持できるようにしてください。新しいトピックの場合は省略し、関連するコンテキストをプロンプト内に含めるようにしてください。--permission-prompt-tool stdio を使用しており、すべてのツール呼び出しはプロセス境界で envelope_policy.decide() によってゲート制御されます。Send a prompt directly to Cortex Code CLI, bypassing the auto-routing keyword filter. Use this when the user explicitly wants Cortex Code to handle their request.
Cortex Code CLI must be installed and on PATH:
which cortex && cortex --version
If cortex is not found, load the snowflake-cortex-code:cortex-setup skill to install it. Do NOT proceed without it.
This step is mandatory. Do it first, every time.
which cortex 2>/dev/null && cortex --version
If cortex is NOT found or the command fails:
snowflake-cortex-code:cortex-setup skill using the Skill tool.The user's message after $cortex-run is the prompt to send. If the user typed only $cortex-run with no additional text, ask what they want to do in Snowflake.
Pick the envelope based on what the operation needs:
| Envelope | Use when | Blocks |
|---|---|---|
| RO | Queries, reads, exploration | Edit, Write, destructive Bash |
| RW | Data modifications, DDL | Destructive Bash (rm -rf, sudo) |
| RESEARCH | Exploration + web access | Edit, Write, destructive Bash |
| DEPLOY | Full access needed | Nothing |
Default to RW unless the request is clearly read-only.
Run the prompt through the execution script:
python "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "USER_PROMPT_HERE" \
--envelope "RW"
For read-only queries:
python "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "USER_PROMPT_HERE" \
--envelope "RO"
To specify a Snowflake connection:
python "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "USER_PROMPT_HERE" \
--envelope "RW" \
--connection "connection_name"
Format Cortex's output for the user:
Before sending the prompt, prepend relevant context from the current Claude Code conversation:
# Context from Claude Code Session
[Last 2-3 relevant exchanges — Snowflake-specific details only]
# User Request
[The original prompt]
Keep context minimal — Cortex only sees what you send in each prompt (unless resuming a session).
--resume-last vs freshEvery Cortex invocation returns a session_id that is persisted automatically. Follow-up
turns can resume that session so Cortex sees the prior conversation — real multi-turn,
not one-shot batches per prompt.
--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.--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
python "${CLAUDE_PLUGIN_ROOT}/scripts/router/execute_cortex.py" \
--prompt "also show me the column types" --envelope "RO" \
--resume-last
User: $cortex-run show me tables in the RAW schema
User: $cortex-run create a dynamic table that aggregates daily sales
User: $cortex-run (no prompt)
--resume-last for follow-up prompts so Cortex retains conversation context. For new topics, omit it and include relevant context in the prompt instead.--permission-prompt-tool stdio — every tool call is gated by envelope_policy.decide() at the process boundary.原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。