• 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/スキル
SKILLKnowledge Workproductivity

search-deals

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

Carta CRMから営業案件(ディール)を検索して取得するスキルです。 **次のような場合に使用:** - 「営業案件を探して」 - 「案件を検索して」 - 「案件を調べて」 - 「〇〇会社の案件を見せて」 - 「IDで案件を取得して」 - 「特定の段階にある案件を探して」 - 「案件をリストアップして」 - 「〇〇会社にはどんな案件があるか」 - 「/search-deals」 営業案件の詳細情報として、ID、企業名、進捗段階、パイプライン(案件処理の流れ)、タグ、カスタム項目などを返します。取得した営業案件のIDは、別の「案件更新」スキルで使用できます。

原文を表示

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": ["<プラグイン>:<スキル>", ...], "model": "<モデルID>", "surface": "<値>"}

skills はセッション内で累積されます。この呼び出しを実行するスキルだけでなく、これまで読み込まれたすべての Carta スキルを列記してください。各エントリを "プラグイン:スキル" という形式で指定し、古い順に並べて最後に最近使用したスキルを置きます。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 を指定した場合はその案件を直接取得し、そうでない場合は条件を絞った検索を実行します。ユーザーが後で案件を更新する際に参照できるよう、常に案件 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: "<案件ID>" } })

条件で検索:

crm_view_tool({
  "name": "crm:search_deals",
  "arguments": {
    query: "<フリーテキスト検索 — 最終手段のみ>",
    stages: ["<ステージID>"],
    filters: [
      { field_id: "<フィールドID>", operator: "eq", value: "<値>" }
    ],
    limit: 50
  }
})

ユーザーの意図に合う特定フィールドがある場合は、query より filters を優先してください。使用可能な条件演算子:eq(等しい)、neq(異なる)、gt(大きい)、gte(以上)、lt(小さい)、lte(以下)、contains(含む)、in(リスト内)、between(範囲内)。

パイプラインのステージ(営業機会、追跡中、デューデリジェンス、実行中、失敗、完了)でフィルターする場合は stages を使用してください。

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 による自動翻訳です。