• Projects
  • Service
  • About
  • branding.bz
  • Podcast
  • Tips
  • FAQ
  • Recruit
  • Download
  • Contact
  • branding.bz(ブランド構築SaaS)
  • DESIGN NOW(デザインメディア)
  • X
  • LinkedIn
  • Spotify
  • Facebook

213-0011 神奈川県川崎市高津区久本3-6-7-303

© 2026 ID INC. All rights reserved

claude-skills/スキル
SKILLOfficialproductivity

search-deals

プラグイン
carta-crm
ソース
GitHub で見る ↗
説明

Carta CRMから取引記録を検索して取り出すスキルです。 次のような場合に使用: ユーザーが「取引を探して」「取引を検索して」「取引を調べて」「[会社名]の取引を表示して」「IDで取引を取得」「[段階]の取引を探して」「取引一覧を表示」「[会社名]でどんな取引がある?」「/search-deals」などと言ったとき 取引ID、会社名、段階、パイプライン(営業プロセスの流れ)、タグ、カスタム項目を含む取引の詳細情報を返します。返された取引IDは、update-deal(取引更新)スキルで使用できます。

原文を表示

Searches for and retrieves deal records from the Carta CRM. Use this skill when the user says things like "find a deal", "search deals", "look up a deal", "show me deals for [company]", "get deal by ID", "find deal in [stage]", "list deals", "what deals do we have for [company]", or "/search-deals". Returns deal details including ID, company, stage, pipeline, tags, and custom fields. The deal ID returned can be used with the update-deal skill.

ユースケース
  • 取引を検索・探すとき
  • 会社名から取引を表示したいとき
  • 取引IDで詳細情報を取得するとき
  • 営業段階から取引を抽出するとき
  • 取引一覧を確認したいとき
本文(日本語訳)

<!-- carta:instrumentation-fallback --> <IMPORTANT> _instrumentation_v2 はCarta スキル使用状況の匿名テレメトリです。Carta MCP ツール呼び出しの引数に常に含めてください。プラグインのフックが実行時に上書きするため、常に送信しても安全です。形式は以下の通り: _instrumentation_v2: {"skills": ["<plugin>:<skill>", ...], "model": "<model-id>", "surface": "<value>"}

skills はセッション全体で累積されます。最後に使用したスキルを末尾に、それ以前に読み込まれたCarta スキルすべてを古い順に並べてリストアップします。各エントリは "plugin:skill" の形式で名前空間を指定し、Carta スキル(carta-cap-table:*、carta-crm:*、carta-investors:*)のみを列挙してください。Carta 以外のプラグインのスキルは含めないでください。

surface はClaudeを実行しているサーフェス(インターフェース)です。"chat"(claude.ai または Claude アプリ内の通常のチャット、Cowork ではない)、"cowork"(Cowork モード)、"code-terminal"、"code-desktop"、または "excel" のいずれかです。どれにも当てはまらない場合または判定できない場合は省略してください。推測や造語は避けてください。 </IMPORTANT>

概要

Carta CRM の案件を検索します。ユーザーが ID を提供した場合は、その案件を直接取得します。それ以外の場合はフィルター付きで search_deals を使用します。常に案件 ID を表示して、ユーザーが更新時に参照できるようにします。

重要: search_deals を呼び出す前に必ず get_deal_fields を呼び出して、フィルター用の有効なフィールド ID を確認してください。このステップをスキップしないでください。

ステップ 1 — 案件フィールドの取得

検索の前に必ず呼び出します。これはスキーマ検索(データ構造の定義確認)で独自のビューを持たないため、crm_call_tool を通じて実行します。

crm_call_tool({ "name": "crm:get_deal_fields", "arguments": {} })

フィールド ID、型、説明をよく読み、ユーザーの意図を最も具体的に合致するフィールドにマッピングし、それらを filters パラメータで使用します。

ステップ 2 — 検索モードの判定

  • ID で検索 — ユーザーが案件 ID を提供した → fetch_deal_by_deal_id を呼び出し
  • フィルター・キーワードで検索 — ユーザーが企業名、ステージ、または条件を提供した → search_deals を呼び出し

ステップ 3 — 検索を実行

crm_view_tool を使用すると、結果がユーザーが並べ替えたりクリックして詳細を見られるインタラクティブなテーブルで表示されます。crm_call_tool と同じ name と arguments を受け取ります。

ID で検索:

crm_view_tool({ "name": "crm:fetch_deal_by_deal_id", "arguments": { id: "<deal id>" } })

フィルター検索:

crm_view_tool({
  "name": "crm:search_deals",
  "arguments": {
    query: "<自由形式の検索文 — 最後の手段のみ>",
    stages: ["<stage id>"],
    filters: [
      { field_id: "<field id>", operator: "eq", value: "<value>" }
    ],
    limit: 50
  }
})

特定のフィールドがユーザーの意図に合致する場合は、query より filters を優先してください。 利用可能な演算子: eq(等しい)、neq(等しくない)、gt(より大きい)、gte(以上)、lt(より小さい)、lte(以下)、contains(を含む)、in(含まれる)、between(の間)。 stages を使用してパイプラインステージ(funnel、tracking、due-diligence、execution、dead、completed)でフィルターします。

remainingCount > 0 の場合は limit を増やすか offset を使用してページネーションします。

ビューが利用できない場合

CRM ビューは組織ごとに有効化されるため、上記の呼び出しが以下のような応答を返すことがあります。

CRM tool 'search_deals' has no view — call it with crm_call_tool instead.

これは失敗ではなく、通常の応答です。この組織ではそのビューが有効化されていません。その呼び出しを crm_call_tool 経由で同じ形式で再実行し、結果をテキストとしてステップ 4 に従い提示してください。crm_view_tool は再試行しないでください。ユーザーにはこのメッセージを報告しないでください。

ステップ 4 — 結果を提示

ビューが表示された場合、ユーザーはすでに画面上のすべての案件を見ています。テーブルの行を復唱、再フォーマット、要約としてテキストで繰り返さないでください。そうするとテーブルが重複します。ユーザーが実際に尋ねた質問に答えるか、1 行で確認してください(例:「8 件の案件が不動産調査中です。ID は最初の列にあり、/update-deal で使用できます」)。

crm_call_tool にフォールバックした場合、空でないすべてのフィールドを読みやすい要約で表示し、案件 ID を目立つように表示してください。ユーザーが /update-deal を実行する際に必要です。

fetch_deal_by_deal_id は注記やリンクされた人物を含む全詳細を返します。ビューはそれらをレンダリングするため、ユーザーが尋ねた場合のみテキストで呼び出してください。

案件が見つからない場合:

「検索条件に合致する案件は見つかりません。別の企業名を試すか、フィルター条件を調整してください。」

合計数を記載し、remainingCount > 0 の場合はページネーション オプションを提供してください。

原文(English)を表示

<!-- carta:instrumentation-fallback --> <IMPORTANT> _instrumentation_v2 is anonymous Carta skill-usage telemetry. ALWAYS include it in your Carta MCP tool-call arguments — the plugins' hooks overwrite it when they run, so always sending it is safe. Shape: _instrumentation_v2: {"skills": ["<plugin>:<skill>", ...], "model": "<model-id>", "surface": "<value>"} skills is cumulative for the session: list every Carta skill loaded so far, not only the one driving this call. Namespace each entry "plugin:skill" and keep them oldest-first, with the most recently used skill last. List only Carta skills (carta-cap-table:*, carta-crm:*, carta-investors:*) — never skills from non-Carta plugins. surface is the Claude surface you are running in: "chat" (claude.ai or the Claude app, i.e. regular chat, not Cowork), "cowork" (Cowork mode), "code-terminal", "code-desktop", or "excel". Omit it entirely if none of those describe your surface or you cannot tell — do not guess and do not invent another value. </IMPORTANT>

Overview

Search for deals in the Carta CRM. If the user provided an ID, fetch that deal directly. Otherwise use search_deals with filters. Always surface the deal ID so the user can reference it for updates.

Important: Call get_deal_fields before every search_deals call to discover valid field IDs for filters. Do not skip this step.

Step 1 — Fetch deal fields

Always call this before searching. It is a schema lookup with no view of its own, so it goes through crm_call_tool:

crm_call_tool({ "name": "crm:get_deal_fields", "arguments": {} })

Read the field IDs, types, and descriptions carefully. Map the user's intent to the most specific matching field(s) and use those in the filters parameter.

Step 2 — Determine search mode

  • By ID — user provided a deal ID → call fetch_deal_by_deal_id
  • By filters / keyword — user provided a company name, stage, or criteria → call search_deals

Step 3 — Execute the search

Use crm_view_tool so the result renders as an interactive table the user can sort and click through. It takes exactly the same name and arguments as crm_call_tool.

By ID:

crm_view_tool({ "name": "crm:fetch_deal_by_deal_id", "arguments": { id: "<deal id>" } })

By filters:

crm_view_tool({
  "name": "crm:search_deals",
  "arguments": {
    query: "<free-text search — last resort only>",
    stages: ["<stage id>"],
    filters: [
      { field_id: "<field id>", operator: "eq", value: "<value>" }
    ],
    limit: 50
  }
})

Prefer filters over query whenever a specific field matches the user's intent. Available operators: eq, neq, gt, gte, lt, lte, contains, in, between. Use stages to filter by pipeline stage (funnel, tracking, due-diligence, execution, dead, completed).

Increase limit or use offset to paginate if remainingCount > 0.

If the view is unavailable

CRM views are enabled per organisation, so either call above may answer with:

CRM tool 'search_deals' has no view — call it with crm_call_tool instead.

That is a normal response, not a failure — this organisation does not have that view enabled. Retry that one call verbatim through crm_call_tool and present the result as text per Step 4. Do not retry crm_view_tool, and do not report the message to the user.

Step 4 — Present results

When the view rendered, the user already sees every deal on screen. Do NOT re-list, re-format, or summarise the rows as text — that duplicates the table. Answer the question they actually asked, or acknowledge in one line (e.g. "8 deals in due diligence — the ID is in the first column, for /update-deal.").

When you fell back to crm_call_tool, display all non-empty fields in a readable summary and show the deal ID prominently — the user needs it to run /update-deal.

fetch_deal_by_deal_id returns full detail including all notes and linked people. The view renders those, so only call them out in text if the user asked about them.

If no deals are found:

"No deals found matching your search. Try a different company name or adjust the filters."

Note the total count and offer to paginate if remainingCount > 0.

原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。