**メタ検出専用スキル** — ユーザーが「どのような資本構成(会社の株式所有状況)管理ツールやコマンドが利用できるのか分からない」という状況で、「どんな機能が存在するのか」という質問に答えるためのものです。 株式所有関連のトピック(株主、助成金、段階的解放権、SAFE(投資契約形式)、借用書、企業評価、持株比率、資金配分、投資額などの用語)が名前で挙げられたリクエストには、決してこのスキルを使用しないでください。これらは、ユーザーの質問の言い方が曖昧であっても、常に**直接的なデータ取得要求**です。その場合は、対応する専門スキルが優先され、このスキルより常にそちらが選ばれます。
META-DISCOVERY ONLY — answers the question "what cap-table tools or commands exist?" when the user is lost about what's available. NEVER use this skill for any request that names a cap-table topic (stakeholders, grants, vesting, SAFEs, notes, valuations, ownership, waterfall, financing, exposure, etc.) — those are always direct data requests, even if the user phrases them vaguely. The matching specialist skill wins every time over this one.
ユーザーのリクエストに対応するスキルがない場合は、コマンドレジストリ(利用可能な機能の一覧)を使って利用できるコマンドを探します。このプラグイン環境で以前に discover を実行した際にレジストリ全体がディスク(保存領域)にキャッシュされているため、まずそのキャッシュを読み込み、必要な場合だけネットワークにアクセスします。
プラグインの PostToolUse フック(処理の後段階)は discover 呼び出しの後、コマンドレジストリ全体を ${CLAUDE_PLUGIN_DATA}/cache/commands.json に書き込みます。MCP呼び出しの前に以下で読み込んでください:
cat "${CLAUDE_PLUGIN_DATA}/cache/commands.json" 2>/dev/null || true
ファイルが存在し有効な場合は、それをコマンドリストとして扱い、使用前に以下の項目で検証してください:
鮮度 — JSONに cached_at(キャッシュ時刻)というISO形式のタイムスタンプがあります。このタイムスタンプが 24時間以上古い 場合は、キャッシュが古いと判断し、ステップ1に進みます(ウェルカム画面やアカウント情報キャッシュの24時間有効期限に合わせています)。
バージョン — JSONに plugin_version(プラグイン版番号)があります。セッション開始時に挿入された <carta-plugin version=… /> タグの版番号と一致していなければ、キャッシュが古いと判断し、ステップ1に進みます。
形式 — コマンドリストは commands キー(配列)の下にあります。ファイルが空、解析不可、または commands がない/空の場合は、ステップ1に進みます。
キャッシュが有効で新しい場合は、ステップ1〜2のネットワーク呼び出しをスキップ してください。キャッシュされた commands 配列から最も適切なコマンド(ライブの search_tools 結果と同じ name・description・inputSchema フィールド)を選んで、ステップ3に直進みます。これにより、セッション中のネットワーク往復が1回削減されます。
search_tools({"query": "<ユーザーリクエストからのキーワード>"})
ユーザーの意図を捉えたキーワードを使用してください(例:「企業評価」「付与」「セーフ(投資契約書の一種)」「株主」)。
返されたツール一覧を確認します。各ツールは以下の情報を含みます:
name:read_tool または call_tool に渡すツール名(例:cap_table__get__stakeholders)description:ツールが返す内容の説明read_only:true ならデータ読み込みのみの機能なので read_tool で実行。それ以外は call_tool を使用上位の結果には inputSchema(必須・オプションのパラメータ)もあります。それ以外には required_params と optional_params(パラメータ名のみ)がある場合が多く、これだけで通常はツール実行できます。パラメータの型や許可される値が必要な場合は、ツール名を指定して search_tools({"query": "<ツール名>"}) を再度呼び出してください。そのツールが最初に返され、inputSchema を含みます。
read_tool({"name": "<ツール名>", "arguments": { ...パラメータ }}) // read_only: true
call_tool({"name": "<ツール名>", "summary": "<承認ダイアログ用の1文説明>", "arguments": { ...パラメータ }}) // read_only: false
ほとんどのコマンドでは corporation_id(企業識別子)が必要です。持っていない場合は list_accounts から取得してください。
<!-- carta:plugin-version --> <carta-plugin>carta-cap-table:6.96.0</carta-plugin>
<!-- Part of the official Carta AI Agent Plugin -->
Use the command registry to find available commands when no specific skill covers the user's request. A prior discover call in this environment caches the full registry to disk — read that cache first and only hit the network on a miss.
The plugin's PostToolUse hook writes the full command registry to ${CLAUDE_PLUGIN_DATA}/cache/commands.json after any discover call. Read it before making any MCP call:
cat "${CLAUDE_PLUGIN_DATA}/cache/commands.json" 2>/dev/null || true
If the file exists and is valid, treat it as the command list and validate it before use:
cached_at ISO timestamp. If cached_at is more than 24 hours old, treat the cache as stale and fall through to Step 1 (this matches the 24h TTL the welcome/accounts caches use).plugin_version. If it does not match the running plugin version (see the <carta-plugin version=… /> tag injected at session start), treat the cache as stale and fall through to Step 1.commands key (an array). If the file is empty, unparseable, or commands is missing/empty, fall through to Step 1.When the cache is valid and fresh, skip Steps 1–2's network call — pick the best-matching command directly from the cached commands array (same name / description / inputSchema fields as the live search_tools result) and go straight to Step 3. This removes a network round-trip on warm sessions.
search_tools({"query": "<keyword from user's request>"})
Use a keyword that captures the user's intent (e.g. "valuation", "grant", "safe", "stakeholder").
Review the returned tools. Each has:
name: the tool name to pass to read_tool or call_tool (e.g. cap_table__get__stakeholders)description: what it returnsread_only: true if the tool only reads data — run it with read_tool; otherwise use call_toolOnly the top results also have inputSchema (the required and optional parameters). The others have required_params and optional_params (parameter names only), which are usually enough to call the tool. If you need a parameter's type or allowed values, call search_tools({"query": "<tool name>"}) with its exact name: that tool comes back first, with its inputSchema.
read_tool({"name": "<tool_name>", "arguments": { ...params }}) // read_only: true
call_tool({"name": "<tool_name>", "summary": "<one sentence for the approval dialog>", "arguments": { ...params }}) // read_only: false
You still need corporation_id for most commands — get it from list_accounts if you don't have it.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。