Cartaという顧客管理システムのホーム画面を表示します。パイプライン(営業段階別の案件一覧)、最近連絡した相手、案件、オブジェクト数、最新のメモ、今週の会議、このプラグインが対応するプロンプト(質問例)の一覧などが表示されます。 **次のような場合に使用:** 「carta crm home」「crm ホーム画面を表示」「ダッシュボードを見たい」「今日のパイプラインを確認」「crm の着陸ページ」「/home」といったユーザーの指示 **重要な注意事項:** - このスキルは、ホーム画面を会話内に表示するべきか、公開ページにするべきかを判断します。ユーザーがページを望んでいる場合でも、まずここから始めてください。 - 読み取り専用です。特定のレコード(記録)を検索する目的では使わないでください。その場合は、レコード名を直接指定すれば Claude が適切な検索スキルを自動選択します。 - 投資ファンドの場合は「carta-investors」の「carta-home-build」を使用してください。 - 企業の資本構成表(出資者や株主の一覧)の場合は「carta-cap-table」の「carta-captable-home-build」を使用してください。
Renders the Carta CRM Home: a landing view with pipeline by stage, recent contacts, deals, object counts, latest notes, this week's meetings, and a directory of the prompts the plugin supports. Use this skill when the user says things like "carta crm home", "show my crm home", "my crm dashboard", "what's in my pipeline today", "crm landing page", or "/home". It is also the skill that decides whether the Home belongs in the conversation or on a published page, so start here even when the user may want a page. Read-only. Do NOT use it to look up a specific record — name the record instead and Claude picks the right search skill. For a fund firm's Carta Home use carta-investors' carta-home-build; for a company's cap table use carta-cap-table's carta-captable-home-build.
ホームはマニフェスト(設定内容)ひとつと、それを表示する2つの場所で構成されます。サーバーはこの組織が見ることができるカード(情報パネル)を決定し、表示機能がそれぞれを取得します。あなたの役割は、マニフェストを読み込み、新規ユーザーをチュートリアルに案内し、ホームをどこに表示するか選択し、レンダリング(画面表示)することです。
まず表示用ではなく、データ取得のため呼び出してください:
crm_call_tool({ "name": "crm:get_crm_home", "arguments": {} })
何もレンダリングする前に、データとして読み込んでください。ステップ2でユーザーが別の場所に移動することがあり、表示した後に取り消されるホームは、表示されないホームより悪い結果になります。
ホームはロールアウトフラグ(段階的な公開設定)の背後にあります。オフの場合、サーバーは get_crm_home を登録せず、呼び出しは「不明なツール」エラーで失敗します。これはロールアウト対象外の組織にとって通常の応答であり、エラーではありません。
次に何をするかは、ユーザーが何をしたいかに依存します。
| ユーザーが求めたもの | 対応 |
|---|---|
ホーム自体、ダッシュボード、または /home |
ホームがその組織でオンになっていないことを伝え、代わりに何ができるか提案する |
| カードが表示するもの。例えば「今日のパイプラインに何があるか」 | それを所有するスキル(ここでは search-deals)で質問に答える。ホームについては言及しない |
2行目が重要です。「今日のパイプラインに何があるか」のような表現は、プラグインがすでに答えられる実質的な質問です。「ホームがオフです」とだけ返すと、以前ユーザーが得ていた答えを奪うことになります。
代替ホームを組み立てないでください。 カード集をまねるため search_deals、search_tasks、list_calendar_events などを呼び出さないでください。質問を所有するスキルに渡すことは問題ありません。そのスキルは独自のアクセスチェックを実行するからです。ホーム型のパネルを自分で作成すると、カードの制限チェックを実行しないため、組織が見ることを許可されていないものを表示する可能性があります。
マニフェストは firstTimeUser を含みます。これが true の場合、ユーザーは CRM MCP が初めて、またはしばらく使用していません。
ホームをレンダリングする代わりに、tutorial スキルを実行してください。 リダイレクトが誤りに見えないよう、まず1行言ってください:
まずプラグインの使い方をご説明します。ホームは最後に表示されます。
チュートリアルはホームをレンダリングして終了するため、誰も見られなくなることはありません。自分でもホームをレンダリングしないでください。
firstTimeUser が false または存在しない場合は、ステップ3に進みます。
2つの場所があり、同等の選択肢ではありません:
carta-crm-home-build スキルが安定した URL に公開し、ユーザーがブックマークして再度開くことができます。ページは以下の両方が成り立つ場合のみ利用可能です。下記のルールがページを提供するか何かを実行する前に、これを確認してください:
carta-crm-home-build スキルがインストールされています。現在は内部用で、公開インストールは含まれず、構築コマンドに到達できません。両方を確認できない場合は常に、ページを利用不可として扱ってください。この画面が作成できないページを決して名前に出さず、見たことのないスキルを実行しないでください。
この順序で決定し、最初に答えが出たら停止してください。
1. ユーザーが求めたもの。 「CRM ホームを公開する」「ピン留めする」「ブックマークできるリンクをくれ」などの構築または公開コマンドが、ページを指定します。ページが利用可能な場合は carta-crm-home-build を実行し、ここでレンダリングしないでください。利用不可の場合は、1行でブックマーク可能なページがこの画面では利用できないことを述べ、チャットでレンダリングしてください。プレーンな「CRM ホームを表示して」はターゲットを指定しないため、続行してください。構築コマンドは、不在のスキルを実行する理由ではありません。
2. ユーザーがこのセッション内で既に伝えたこと。 既に選択している場合、そのターゲットが利用可能である限り、もう一度尋ねることなく、それを尊重してください。この画面が提供できないターゲットに対する記録された選択は、失敗するのではなく次のルールに進みます。
3. この画面ができること。 ページが利用不可の場合は、チャットでレンダリングし、ここでは作成できないページについて何も言わないでください。利用可能な場合は両方のターゲットがオープンなため、1行だけで一度尋ねてください:
ブックマークできるページがいいですか、それとも今ここに表示しますか?
両方が本当に利用可能な場合のみ質問してください。 1つの実質的な答えしかない質問は、選択肢ではなく摩擦(面倒な操作)です。
答えを保存しないでください。 これはこのセッション内です。それを間違えると、やり直すのに1文必要です。これは保存された設定が誰も覚えていない場合よりもはるかに低コストです。
ページが利用可能かどうか判断できない場合は、チャットでレンダリングしてください。基本は決して間違った答えではなく、公開ページの存在に依存することもありません。
crm_view_tool({ "name": "crm:get_crm_home", "arguments": {} })
表示機能はシェルをレンダリングしてから、利用可能なすべてのカードを自身で並列に取得し、それぞれが独自のタイムアウトを持ちます。カードツールを自分で呼び出さないでください。 get_crm_home_pipeline、get_crm_home_contacts、get_crm_home_deals、get_crm_home_counts、get_crm_home_notes、get_crm_home_meetings で、ここから呼び出すと表示機能が既に行っているすべての取得が重複します。
このリストではなく、マニフェストからカード集を読み込んでください。サーバーはカードを呼び出し元自身の測定されたツール使用に基づいてランク付けするため、どのカードが表示されるか、また表示される順序はユーザーごとに異なります。
crm_view_tool がツールに表示機能がないと答える場合、この組織では MCP アプリバンドルがオフです。ステップ1から既に保有しているマニフェストの要約にフォールバックし、対話型ホームは CRM UI を有効にする必要があることを述べてください。
3番目の答えが存在し、成功に見えます:crm_view_tool はマニフェストを返し、エラーなく、ホストは何もマウントしません。それはレンダリングされたホームと区別できません。表示機能は見えないため、推測しないでください。ホームがレンダリングされたと主張しないでください。
公開ページが利用可能な場合は常に、呼び出し後に1行述べてください:
上に何も表示されなかったら、「CRM ホームを公開して」と言えば、代わりにページをお渡しします。
毎回提供される1文は読者に何も費用がかからず、空白の画面をページに変えます。ステップ3チェックに従い、carta-crm-home-build が利用不可の場所はこれを除外してください。この画面が作成できないページを決して名前に出さないでください。
| カード | 表示内容 | 存在しない場合 |
|---|---|---|
| ステージ別パイプライン | ステージ別にグループ化されたオープン案件 | 案件モジュールがオフの場合、マニフェストから削除 |
| 最近追加された連絡先 | 過去30日間に追加された連絡先 | なし |
| 案件 | テナント(利用者)の案件 | 案件モジュールがオフの場合、マニフェストから削除 |
| CRM の概要 | テナント全体のオブジェクト数 | なし |
| 最新ノート | 最も最近のノート | なし |
| 今週の会議 | ユーザーの次7日間 | インタラクション追跡がオフの場合、利用可能だが理由付きで利用不可と表示 |
| 質問できること | プラグインがサポートするプロンプト(質問例) | なし。静的で常にレンダリングされます |
2つのゲート(制限)は異なる動作をするため、カードは2つの異なる方法で消えます。モジュールゲートはマニフェストからカードを完全に削除します。そのモジュールを購入していないテナントはタイルを見るべきではないからです。インタラクションゲートはカードを保持し、理由付きで利用不可と表示します。タイルがなければ、本当に空の週と区別できないからです。
マニフェストが利用不可とマークするカードは reason(理由)を含みます。ユーザーがカードが存在しない理由を尋ねた場合は理由を報告してください。有効にすることは提案しないでください。これらはテナント権限であり、ユーザー設定ではありません。
ホームには2つの出口があります。どちらが適切かを指摘してください:
ユーザーがプロンプトを選択した場合は、通常のスキルルーティングで処理してください。ホームのペイロード(データ)から答えようとしないでください。
テナントデータはラベルなしでレンダリングしないでください。 マニフェストは組織を名前付け、表示機能はすべてのカードにスタンプを押します。realOrganization が存在する場合、ユーザーは Carta スタッフが別のテナントを表示しており、表示機能はバナーを表示します。いずれかの信号を削除または要約して削除しないでください。
ホームは読み取り専用です。 書き込みはありません。ユーザーがここからレコードの変更を求めた場合は、一致する追加または更新スキルに引き渡してください。
<!-- carta:plugin-version --> <carta-plugin>carta-crm:1.14.5</carta-plugin>
The Home is one manifest tool and two places to put it. The server decides which cards this organization may see, and the view fetches each card itself. Your job is to read the manifest, route a new user to the tutorial, pick where the Home goes, and render it.
Call it for data first, not for the view:
crm_call_tool({ "name": "crm:get_crm_home", "arguments": {} })
Read it for data before you render anything. Step 2 can send the user elsewhere, and a Home that renders and is then retracted is worse than one that never rendered.
The Home is behind a rollout flag. When it is off the server does not register
get_crm_home at all, and the call fails with an unknown-tool error. That is a normal
answer for an organization outside the rollout, not a failure.
What you do next depends on what the user asked for.
| The user asked for | Do this |
|---|---|
The Home itself, a dashboard, or /home |
Say the Home is not switched on for their organization, and offer what they can ask for instead |
| Something a card would have shown, such as "what's in my pipeline today" | Answer the question through the skill that owns it, here search-deals. Do not mention the Home |
The second row is the important one. A phrase like "what's in my pipeline today" is a real question that the plugin already answers, so leaving the user with "the Home is off" would take away an answer they used to get.
Never assemble a substitute Home. Do not call search_deals, search_tasks,
list_calendar_events and the rest to imitate the card set. Handing one question to the
skill that owns it is fine, because that skill runs its own access checks. Building a
Home-shaped panel yourself runs none of the card gating, so it can show an organization
something it is not entitled to see.
The manifest carries firstTimeUser. When it is true, the user is new to the CRM MCP
or has not used it for a while.
Invoke the tutorial skill instead of rendering the Home. Say one line first, so the
redirect does not read as a mistake:
Let me walk you through the plugin first. Your Home is waiting at the end.
The tutorial ends by rendering the Home, so nobody is denied it. Do not render the Home yourself as well.
When firstTimeUser is false or absent, continue to Step 3.
There are two, and they are not alternatives of equal standing:
carta-crm-home-build skill publishes it at a stable URL the
user can bookmark and reopen cold.The page is available only when both of these hold, so establish it before any rule below offers the page or invokes anything:
Artifact tool is present. Without it this surface cannot publish at all.carta-crm-home-build skill is installed. It is internal today, so a published
install does not carry it and no build verb can reach it.Treat the page as unavailable whenever you cannot confirm both. Never name a page this surface cannot produce, and never invoke a skill you have not seen.
Decide in this order, and stop at the first that answers.
1. What the user asked for. A build or publish verb, such as "publish my crm home", "pin
it", or "give me a link I can bookmark", names the page. When the page is available, invoke
carta-crm-home-build and do not render here as well. When it is not, say in one line that a
bookmarkable page is not available on this surface, then render in the conversation. A plain
"show my crm home" names neither target, so carry on. A build verb is not a reason to invoke
a skill that is absent.
2. What they already told you this session. If they have already chosen, honour it without asking again, as long as that target is still available. A recorded choice for a target this surface cannot serve falls through to the next rule rather than failing.
3. What this surface can do. If the page is unavailable, render in the conversation and say nothing about a page that cannot be built here. If it is available, both targets are open, so ask once, in one line:
Want this as a page you can bookmark, or just here in the chat?
Ask only when both are genuinely available. A question with one real answer is friction, not a choice.
Do not persist the answer. It holds for this session. Getting it wrong costs one sentence to redo, which is cheaper than a stored preference nobody remembers setting.
If you cannot tell whether the page is available, render in the conversation. The floor is never the wrong answer, and it never depends on the published page existing.
crm_view_tool({ "name": "crm:get_crm_home", "arguments": {} })
The view renders the shell and then fetches every available card itself, in parallel,
each with its own timeout. Do not call the card tools yourself. They are
get_crm_home_pipeline, get_crm_home_contacts, get_crm_home_deals,
get_crm_home_counts, get_crm_home_notes and get_crm_home_meetings, and calling
them here duplicates every fetch the view is already making.
Read the card set from the manifest rather than from this list. The server ranks the cards by the caller's own measured tool use, so both which cards appear and the order they appear in vary per user.
If crm_view_tool answers that the tool has no view, the MCP App bundle is off for this
organization. Fall back to summarising the manifest you already hold from Step 1, and say
the interactive Home needs the CRM UI enabled.
A third answer exists, and it looks like success: crm_view_tool returns the manifest, no
error, and the host mounts nothing. You cannot tell that apart from a Home that rendered —
you never see the view — so do not guess, and do not claim it rendered.
Say one line after the call, whenever the published page is available:
If nothing appeared above, say "publish my crm home" and I'll give you a page instead.
One sentence, offered every time, costs a reader nothing and turns a blank surface into the
page. Leave it out where carta-crm-home-build is unavailable, per the Step 3 checks —
never name a page this surface cannot produce.
| Card | Shows | When it is missing |
|---|---|---|
| Pipeline by stage | Open deals grouped by stage | Absent from the manifest when the deals module is off |
| Contacts added recently | Contacts added in the last 30 days | Never |
| Deals | The tenant's deals | Absent from the manifest when the deals module is off |
| Your CRM at a glance | Object counts across the tenant | Never |
| Latest notes | The most recent notes | Never |
| Meetings this week | The user's next seven days | Present but unavailable, with a reason, when interaction tracking is off |
| What you can ask | Prompts the plugin supports | Never. It is static and always renders |
Two gates behave differently, so a card goes missing in two different ways. A module gate drops its card from the manifest entirely, because a tenant that does not buy the module should not see the tile. An interactions gate keeps the card and marks it unavailable with a reason, because an absent tile would be indistinguishable from a genuinely empty week.
A card the manifest marks unavailable carries a reason. Report the reason if the user
asks why a card is absent. Do not offer to enable it: these are tenant permissions, not
user settings.
The Home has two exits. Point at whichever fits:
If the user picks a prompt, let the normal skill routing handle it. Do not try to answer from the Home's payload.
Never render tenant data unlabelled. The manifest names the organization, and the
view stamps it on every card. When realOrganization is present the user is Carta staff
viewing another tenant, and the view shows a banner. Do not remove or summarise away
either signal.
The Home is read-only. It never writes. If the user asks to change a record from here, hand off to the matching add or update skill.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。