Cortex Code CLIの拡張性¶
Cortex Code CLIは、カスタム動作、特殊エージェント、ライフサイクルフック、外部ツール統合で拡張できます。このトピックでは、次の4つの主な拡張性メカニズムについて説明します。
- Skills
ドメイン固有の知識と手順を会話に注入するマークダウンファイル。スキルを使用して、組織のベストプラクティス、コーディング標準、または特殊なワークフローについてCortex Codeに教示します。
- サブエージェント
特定のタスクを独立して処理する自律的な専門AIエージェント。サブエージェントは、並列実行、焦点を当てた専門知識、複雑なマルチステップワークフローを可能にします。
- フック
主要なライフサイクルポイントでCortex Codeの動作をインターセプトしてカスタマイズするスクリプト。フックを使用して、ツール入力の検証、ログ操作、ポリシーの適用を行います。
- MCP (モデルコンテキストプロトコル)
Cortex CodeをGitHub、Jira、データベースのような外部ツールやデータソースに接続するためのオープン標準。
スキル¶
スキルは、専門的な指示を注入し、追加ツールを有効にすることで、ドメイン固有の知識と機能によってCortex Codeを拡張します。
スキルとは¶
スキルは、次を含むマークダウンファイルです。
ドメイン固有の手順とベストプラクティス
スキルを使用するタイミング
ワークフローの例
オプションのツール構成
ルを呼び出すと、その手順が会話コンテキストに注入されます。
スキルの使用¶
/skill list を実行して、利用可能なスキルをリストアップし、名前でスキルを呼び出して会話にロードします。
スキルの場所¶
スキルは複数の場所からロードされ、優先順位の高いものから低いものへと以下にリストされています。
場所 |
パス |
範囲 |
|---|---|---|
プロジェクト |
|
プロジェクト |
ユーザー |
|
ユーザー |
グローバル |
|
システム |
セッション |
一時的に追加 |
セッション |
リモート |
Gitからクローン済み |
キャッシュ |
バンドル済み |
Cortex Codeへの組み込み |
システム |
カスタムスキルの作成¶
スキルは、 SKILL.md ファイルを含むディレクトリで、スキルの手順、オプションの例とテンプレートを含みます。スキルは以下のいずれかの場所で作成できます。
範囲 |
パス |
|---|---|
プロジェクト |
|
グローバル |
|
ユーザー |
|
カスタムスキルの構築を開始するには、以下を行います。
スキルディレクトリを作成します。この例では、プロジェクトの場所に「my-skill」という名前のスキルディレクトリを作成します。
このディレクトリに
SKILL.mdを作成し、スキルの説明を追加します。この例は基本構造を示しています。$$コマンドを使用して、スキルがリストに表示されることを確認します。スキルがリストされている場合は、正しくロードされ、使用可能です。
会話であなたのスキルを使用します。
カスタムスキル設定¶
各スキルのオプションは、 SKILL.md 最上部のYAMLフロントマターで定義されています。次のオプションがサポートされています。
オプション |
説明 |
|---|---|
名前: <skill name> |
必須:一意の識別子 |
説明: <description> |
必須:$$リストに表示されています |
ツール: |
オプション:このスキルを有効にするツール |
- tool_name_1 |
|
- tool_name_2 |
この例は、2つのツールを使うスキルを示しています。
スキルのベストプラクティス¶
効果的なスキルを書くには、以下のガイドラインに従ってください。
具体的に説明してください:手順を明確にすると、より良い結果が得られます
例を示します:予想される入出力を示します
エッジケースを含める:一般的なエラーと例外を処理します
焦点を当てる:1つのスキルは1つのドメインまたは機能に相当します。
スキルの管理¶
スラッシュコマンド |
説明 |
|---|---|
|
インタラクティブスキルマネージャー |
|
すべてのスキルをリスト化 |
|
グローバルの場所に同期 |
|
リモートスキルを追加 |
スキルの競合¶
同じルールが複数のサポートされた場所に存在し、コンテンツが異なる場合、競合が発生し、競合ルールがルールリストに表示されます。/skill sync を使用して、ローカルスコープをグローバルスコープに同期することにより、競合を解決します。
スキルの構成¶
カスタムスキルは他のスキルを参照したり、ファイルコンテキストと権限を組み合わせることができます。
リモートスキル¶
Gitリポジトリからリモートスキルを追加できます。リポジトリには任意の数のスキルを含めることができます。リモート権限のレイアウトはローカル権限の構造と一致する必要があります。
リモート権限はローカルにキャッシュされます。更新するには、 /skill sync を使用します。
スキルコマンドリファレンス¶
CLI コマンド:
スラッシュコマンド:
スキルのトラブルシューティング¶
- スキルがアクティブ化しない
スキルの目的に関連する具体的な言葉を使用
スキルを明示的に言及します:「semantic-view-optimizationを使用する」
可用性を確認:
/skill list
- 予期しない動作
目標についての詳細を入力してください
より具体的なリクエストを試す
フィードバックを送信:
/feedback
サブエージェント¶
サブエージェントは、特定のタスクを独立して処理する自律的な専門AIエージェントです。これらにより、並列実行、焦点を当てた専門知識、複雑なマルチステップワークフローが可能になります。
サブエージェント:
主な会話から独立して実行
独自のコンテキストとツールのアクセス
フォアグラウンドまたはバックグラウンドで実行可能
特定のドメインやタスクに特化する
組み込みサブエージェントの型¶
general-purpose¶
すべてのツールにアクセスできる汎用エージェント。最適な用途:
複雑な調査タスク
複数ステップのコード変更
複数のツールを必要とするタスク
explore¶
高速なコードベース探索専門家。最適な用途:
パターンによるファイルの検索
キーワードのコードを検索する
コードベースの構造を理解する
クイック調査
Explorerエージェントの検索の詳細度を指定できます。
"quick":基本的な検索"medium":中程度の探索"very thorough":包括的分析
plan¶
複雑な実装計画の設計と概要を説明します。最適な用途:
実装戦略の設計
重要なファイルの特定
アーキテクチャのトレードオフの評価
ステップバイステッププランの作成
feedback¶
構造化されたフィードバックコレクション。最適な用途:
ユーザー入力の収集
構造化された質問
セッションフィードバック
サブエージェントの実行¶
Cortex Codeは、必要に応じて自動的にサブエージェントに委任します。たとえば、このクエリはExploreエージェントに委任します。
名前で特定のサブエージェントタイプを明示的にリクエストすることもできます。
また、複数のサブエージェントを並行して実行し、タスクの異なる側面に取り組むようにリクエストすることもできます。
作業を続けている間、エージェントをバックグラウンドで実行できます。
エージェントはすぐに開始し、追跡用のエージェントIDを返します。エージェントが動作完了すると、IDを使用して出力を取得できます。
実行中のすべてのサブエージェントのステータスを監視するには、 /agents コマンド(またはCtrl-Bを押し)を使用して、バックグラウンドプロセスビューアーを開きます。IDまたは /agents インターフェースを使用して、実行中のエージェントを停止できます。
強制終了したエージェントは実行を停止しますが、コンテキストは無期限に保持されます。IDを使用して、強制終了したエージェントを再開することができます。
エージェント型¶
- 自律
自律エージェントは、ユーザーの操作なしで実行されます。エージェント:
独立して完了
質問のためのブロックはありません
明確に定義されたタスクに適しています
- 非自律
非自律エージェントは、実行を一時停止してユーザーに質問することができます。エージェント:
明確化のための質問をする場合があります
インタラクティブに権限をリクエストできます
ガイダンスを必要とするタスクに適しています
- カスタム
カスタムエージェントは、特殊なプロンプトと構成を持つユーザー定義のサブエージェントです。カスタムスキーマと同様に、マークダウンファイルで特定のドメインやワークフローに合わせたエージェントを作成します。
カスタムサブエージェントの作成¶
カスタムサブエージェントは、マークダウンファイルでYAMLフロントマターを使用して定義されます。フロントマターは、エージェントの名前、説明、ツールアクセス、モデルを指定します。本文には、エージェントの動作をガイドするシステムプロンプトが含まれています。
カスタムエージェントマークダウンファイルは、次の3つの場所のいずれかに保存できます。
範囲 |
パス |
|---|---|
プロジェクト |
.cortex/agents/ または .cloud/agents/ |
グローバル |
~/.snowflake/cortex/agents/ |
ユーザー |
~/.claude/agents/ |
エージェント定義の形式を次に示します。
例:Test Runnerエージェント¶
次のマークダウンファイルは、テストを実行し結果を要約するカスタムTest Runnerエージェントを定義します。
エージェント構成¶
カスタムエージェントの構成は、マークダウンファイルのYAMLフロントマターで指定されます。
- ツールアクセス
エージェントは、アクセスできるツールを指定できます。
- モデル選択
特定のエージェントのモデルを選択することができます。これはセッションのデフォルトモデルを上書きします。
ワークツリーの分離¶
エージェントは、分離されたgitワークツリーまたはブランチで実行できます。ワークツリーの分離をリクエストすると、Cortex Code CLIは、エージェントが動作するための別のgitワークツリーを作成します。これにより、競合する変更なく複数のエージェントを並行して実行でき、後のクリーンアップも簡単です。分離されたワークツリーは、特に探索と実験に役立ちます。エージェントによって作成されたgitブランチの名前は agent/<agentId> です。
ワークツリーの分離を使用するには、プロンプトに含めます。
スワームパターン¶
エージェントのワーカーを起動して、複雑なタスクのさまざまな側面に並行して対処することができます。各エージェントは独立して動作し、すべてのエージェントが終了すると結果が集約されます。すべてのタイプのエージェントはスワームに参加できます。
スワームのユースケースには次が含まれます。
コード分析:複数のエージェントが異なる側面を分析します
リファクタリング:並列エージェントは異なるファイルを処理します
テスト:エージェントは異なるテストスイートを実行します
ドキュメント:エージェントドキュメントのさまざまなコンポーネント
スワームを作成するには、起動するさまざまなエージェントを単純に記述します。
サブエージェントのベストプラクティス¶
次の場合にサブエージェントを使用します。
複雑なタスク:並列実行のためにサブタスクに分割
探索:コードベース検索にExploreエージェントを使用する
計画:大きな変更の前にPlanエージェントを使用
バックグラウンド作業:注意の必要がない、実行時間の長いタスク
サブエージェントは次には適していません。
単純なクエリ:直接ツールの方が高速です
単一ファイルの編集:メインエージェントはより効率的です
インタラクティブな作業:すぐにフィードバックが必要な場合
一般的に、詳細なプロンプトの方が効果的です。
良い |
データベースクエリを含むすべてのPythonファイルを検索し、行番号でリストする |
|---|---|
より良い |
Explorerエージェント(非常に詳細)を使用して、データベースクエリを含むすべてのPythonファイルを検索します。各ファイルについて、クエリパターンを抽出し、潜在的なSQLインジェクションのリスクを特定します。 |
アクティブなサブエージェントの表示¶
/agentsコマンドCortex Codeセッションで
/agentsコマンドを発行し、インタラクティブエージェントビューアを開きます。このインターフェースは、実行中のすべてのエージェント、そのタイプ、ステータス、および出力プレビューを表示します。- バックグラウンドプロセスビューアー
Cortex Code CLIセッションで、Ctrl-Bを押して表示します。
すべてのバックグラウンドプロセス
エージェントセッション
Bashプロセス
エージェントの制限¶
Cortex Code CLIのサブエージェントには以下の制限が適用されます。
最大50個の同時バックグラウンドエージェント
エージェントはセッション権限を継承する
バックグラウンドエージェントは他のバックグラウンドエージェントを生成できない
フック¶
フックにより、主要なライフサイクルポイントでのCortex Codeの動作をインターセプトし、カスタマイズすることができます。フックは、イベントに応答して実行されるプロンプトまたはシェルスクリプトです。
ツールを使用する前に:ツール入力の検証または変更
ツール使用後:コンテキストまたはログ結果を追加
ユーザー入力に:セッションコンテキストを注入する
セッションイベントに:初期化またはクリーンアップ
フックイベント¶
次のイベントはフックをトリガーできます。
イベント |
説明 |
ブロックできます |
|---|---|---|
PreToolUse |
ツール実行前 |
有り |
PostToolUse |
ツール実行後 |
無し |
PermissionRequest |
権限が必要な場合 |
有り |
UserPromptSubmit |
ユーザーがプロンプトを送信したとき |
無し |
SessionStart |
セッション開始時 |
無し |
SessionEnd |
セッションが終了するとき |
無し |
PreCompact |
コンテキスト圧縮前 |
無し |
停止 |
ユーザーがClaudeを停止したとき |
無し |
SubagentStop |
サブエージェントが停止するとき |
無し |
通知 |
システム通知上 |
無し |
設定 |
初期化中 |
無し |
フックの構成¶
フックは設定ファイルで構成されます。これは任意の構成ディレクトリに配置できます(優先順位の高いものから低いもの順に以下に一覧表示)。
場所 |
パス |
|---|---|
ローカル |
|
プロジェクト |
|
ユーザー |
|
グローバル |
|
フックはJSON形式で定義されます、イベント、ツールの一致、フックアクションを指定します。ツール使用前のフックの簡単な例を以下に示します。
コマンドフックとプロンプトフックの2つのフックタイプがサポートされています。
コマンドフックは、シェルコマンドまたはスクリプトを実行します。
プロンプトフックは、言語モデルに対する自然言語プロンプトとして評価されます。
特定のツールに対してのみフックを実行するには、 matcher フィールドにツール名またはパターンを配置します。たとえば、すべてのSQLツールをマッチするには、 "matcher": "SQL*" を使用します。正規表現を使って複数のツールにマッチさせることができます。
パターン |
一致 |
|---|---|
|
すべてのツール |
|
Bashのみ |
|
編集または書き込み |
|
すべてのMCPツール |
|
NotebookEdit、 NotebookExecute |
フックスクリプトの記述¶
フックスクリプトは標準入力を通じてJSON入力を受け入れ、標準出力を通じてJSON出力を返します。出力には、操作が許可されたか拒否されたかを示すフィールドが含まれています。オプションで、フックスクリプトはツール入力の変更バージョンを渡すことができます。
サンプル入力:
サンプル出力:
戻りコードは、操作をブロックするかどうかを示します。
0:ブロックしない
2:ブロック
この情報は、以下に示すようにJSON出力の一部として返すこともできます。
フックスクリプトでは、次の環境変数を使用できます。
変数 |
説明 |
|---|---|
|
プロジェクトディレクトリパス |
|
Webコンテキストの場合 |
|
永続的な環境ファイルパス |
フックの例¶
次の例は、一般的なフックのユースケースで可能な出力を示しています。
ツール入力を変更¶
コンテキストを追加¶
システムメッセージを表示¶
権限の決定¶
リモートフック¶
Gitリポジトリでは、次のようにスクリプトを参照できます。
フックのベストプラクティス¶
フックを高速にします:タイムアウトのデフォルトは60秒
エラーを正常に処理します:不明な場合、exit 0を返します
デバッグ用ログ:トラブルシューティングのためのファイルへの書き込み
一致を使用する:すべてのツールではなく、特定のツールをターゲットにする
徹底的にテストする:フックマネージャーを使用して動作を確認する
モデルコンテキストプロトコル(MCP)¶
モデルコンテキストプロトコル(MCP)によって、Cortex Code CLIを外部ツールやデータソースに接続できます。MCPは、GitHub、Jira、データベースなどの外部ツールにAIエージェントを接続するためのオープン標準です。構成が完了すると、MCPサーバーは、Cortex Codeに組み込みの機能を超えたホストツールへのアクセスを与えます。
トランスポートの型¶
Cortexコードは3つのMCPトランスポート型をサポートしています。
型 |
ユースケース |
接続 |
|---|---|---|
stdio |
ローカルツール、CLIラッパー |
stdin/stdoutを含むサブプロセス |
http |
ウェブサービス、APIs |
HTTP リクエスト |
sse |
リアルタイムサービス |
サーバー送信イベント |
OAuthを使用して、HTTPMCPサーバーへの認証ができます。OAuth用に構成されたサーバーに初めて接続するとき。Cortex Code CLIは、ユーザーが認証するブラウザウィンドウを開きます。結果のトークンは ~/.snowflake/cortex/mcp_oauth/ に保存され、必要に応じて自動的にリフレッシュされます。以下はサンプル OAuth 構成です。
MCPサーバーの管理¶
インタラクティブなCortex Code CLIセッションに /mcp コマンドを発行し、インタラクティブMCPステータスビューアーを開きます。cortex mcp コマンドを使用して、コマンドラインからMCPサーバー構成を管理します。
コマンド |
説明 |
|---|---|
コマンドライン |
説明 |
cortex mcp add |
新しいサーバーを追加します(以下を参照) |
cortex mcp list |
構成されたサーバーをリスト化します |
cortex mcp get <server> |
特定のサーバーの詳細を取得します |
cortex mcp remove <server> |
サーバーの削除 |
cortex mcp start <server> |
サーバーのステータスと利用可能なツールを確認します |
サーバーの追加¶
cortex mcp add コマンドはサーバーを構成するためのオプションを受け入れます。
オプション:
注釈
MCPツールには、競合を避けるための名前空間が使用され、以下の形式が使用されます。
たとえば、サーバー github の search というツールには、 mcp__github__search という名前が付与されます。
MCP 設定¶
MCPサーバーの構成は、キー mcpServers 下の ~/.snowflake/cortex/mcp.json に保存されています。次の例は、単一のMCPサーバーを含む構成ファイルの構造を示しています。
環境変数¶
``${VAR}`` または $VAR 構文を使用して、環境変数の値を構成ファイルに挿入します。
重要
認証情報に環境変数を使用するのがベストプラクティスです。決して mcp.json でトークンをハードコードしないでください。以下のように、シェルのプロファイルに ~/.bashrc または ~/.zshrc などの行を追加します。
コマンドラインからの構成¶
コマンドラインからMCPサーバーを使用する場合は、 cortex mcp add コマンドを使用します。例:
アクション |
コマンド |
|---|---|
stdioサーバーを追加 |
|
HTTPサーバーを追加 |
|
環境変数付きで追加 |
|
ヘッダー付きで追加 |
|
MCPツールの使用¶
構成が完了すると、Cortex Code CLIセッションでMCPツールが自動的に利用可能になります。自然言語コマンドを使ってそれらを呼び出します。
初回使用時に権限がリクエストされます。~/.snowflake/cortex/permissions.json のデフォルトを構成します。
サンプルMCP構成¶
次の例は、一般的なユースケース用のMCPサーバー構成です。
Gitサーバー(stdio)¶
OAuthを使用したHTTP API¶
ヘッダー付きSSEサーバー¶
Sourcegraphの統合¶
MCPのトラブルシューティング¶
- サーバーが接続しない
セッション中に
/mcpをチェックしてリストされていることを確認するcortex mcp start <サーバー>を使用して接続をテストする環境変数で認証情報が正しく設定されていることを確認する
cat ~/.snowflake/cortex/logs/mcp.logを使用してヒントを得るためにログをレビューする
- ツールが表示されない
cortex mcp listを実行して構成を確認するツール名が有効であることを確認する(英数字、アンダースコア、ハイフンのみを含む)
ツール名が64文字より短いことを確認する
- OAuthの問題
キャッシュされたトークンをクリアする:
rm ~/.snowflake/cortex/mcp_oauth/{server}*再接続して新しいOAuthフローをトリガーする
リダイレクトポートが利用可能であることを確認する(デフォルト8585)
- 環境変数が展開されない
$VARではなく${VAR}構文(中括弧付き)を使用するシェルで 変数が設定されていることを確認する(
echo $VAR)変数名の誤入力をチェックする
MCPのベストプラクティス¶
説明的なサーバー名を使用することによってツールの名前空間をクリアにする
適切なタイムアウトを設定する:ツールリストのデフォルトは10分
安全な認証情報:ハードコードされたシークレットではなく、環境変数を使用する
接続をテスト:サーバーに依存する前に
cortex mcp startを使用する