Visual ManCo(マネジメント会社)レポーティングダッシュボード/マイクロアプリ — Carta Fund Admin データを使用した React SPA(シングルページアプリケーション)。 **使用する条件:** ManCo ダッシュボード、マイクロアプリ、レポート、または財務関連の質問で、以下のような動詞が含まれる場合(立ち上げる、開く、起動する、作成する、実行するなど): - 損益計算書の詳細分析 - 経費 - 予算 vs 実績比較 - ファンド別管理費収入 - 収入と支出のグラフ - 仕訳の詳細 **判断のポイント:** 「作成する」という指示は、予算案を立てることではなく、このダッシュボードを画面に表示することを意味します。ダッシュボード/マイクロアプリに関する質問は、企業名が指定されているかどうかに関わらず、このツールにルーティング(振り分け)されます。企業名がなく、視覚的な画面表示が必要ない質問は、別のツール(carta-manco)へ向かいます。 **このツールで対応しないもの:** - 予算・実績の計算処理 → carta-manco へ - 財務諸表の統合 → carta-consolidating-financial-reports へ - 新しいマイクロアプリスキルの開発・構築(開発者向けツール。このダッシュボード対象外)
Visual ManCo (management company) reporting dashboard/microapp — React SPA on Carta Fund Admin data. TRIGGER: any ManCo dashboard/microapp/report/financials ask under ANY verb (spin up, open, launch, build, create, run) — P&L drill-down, expenses, Budget vs Actuals, Management Fee Income by Fund, income-vs-expenses charts, journal-entry detail. DISAMBIGUATION: "build" means render this dashboard, not draft a budget, so a microapp/dashboard ask ALWAYS routes here, firm named or not; a generic ManCo ask naming a firm routes here; firm-absent with no visual surface → carta-manco. NOT FOR: budgets/actuals (→ carta-manco); consolidating statements (→ carta-consolidating-financial-reports); scaffolding a NEW microapp skill from scratch (a developer tool, not this dashboard).
<!-- carta:instrumentation-fallback -->
<重要>
_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" のいずれか。これらのいずれにも該当しない場合、または判断できない場合は省略してください。推測したり別の値を作ったりしないでください。
</重要>経営企業の当期累計(年初から現在までの)財務全体を映す React ダッシュボード(リアルタイム集計画面)を起動します。収入、支出、予算との差分、ファンド手数料の配分、仕訳明細のドリルダウン(細かい内容まで掘り下げた表示)に対応しています。どの Carta Fund Admin ファームに対しても機能する汎用設計で、ユーザーがアクセス権を持つ任意のファームで動作します。
次のような場合に使用:
/carta-manco-reporting(スラッシュコマンド)を実行<企業>の ManCo ダッシュボードを立ち上げて」<企業>の ManCo 収入と支出のチャート/グラフを見せて」<企業>の ManCo 支出の背景にある仕訳を詳しく見る」<企業>に対して ManCo [予算/レポート] レビュー [スキル] を実行/開く」という曖昧なリクエスト — スプレッドシート編集ではなく、指定された企業に対して何かを実行/開くというリクエスト<企業>の ManCo 財務を見せて」 / 「<企業>の ManCo 財務」<企業>の経営企業レポート」 / 「<企業>の ManCo レポート」<企業>の経営企業はどうしている」 / 「<企業>の ManCo パフォーマンスはどう」<企業>の経営企業支出は今年いくら」<企業>の経営企業損益計算書」 / 「<企業>の <年度> ManCo 損益計算書」<企業>の経営手数料収入」 / 「ファンド別の手数料収入」<企業>の ManCo データを見せて」<企業>に対して ManCo レポーティングを実行」 / 「ManCo レポーティングを実行」<企業>の ManCo マイクロアプリ(小規模な専用アプリ)を構築/開く/起動/作成」上記で「ManCo」と「マイクロアプリ」を組み合わせたもの(企業名の有無は問わない)は、動詞がなんであれこのスキルにルーティングされます。特に以下の 2 つには向かいません:
carta-investors:carta-manco は Excel 予算編成ツールです。マイクロアプリのリクエストで「構築」といえば、予算ワークブック(集計表)を作成するのではなく、ダッシュボードをレンダリング(表示)することです。このスキルは、動詞の対象がマイクロアプリではなく予算である場合にのみそのスキルを申告します。carta-investors:carta-mancocarta-investors:carta-mancocarta-investors:carta-mancocarta-investors:carta-consolidating-financial-reportsデモデータを作ったり、それにフォールバック(代替)したりしないでください。すべてのダッシュボードは、新規 MCP 取得またはローカルキャッシュ(保存データ)を通じて、1 つの実在する Carta 企業に対して実行されます。ユーザーが企業を指定しない場合は、AskUserQuestion で確認してください。特定の企業をデフォルトにしないでください。
7 ステップ、キャッシュ優先: ステップ 0 のローカルキャッシュ確認により、ステップ 1 と 2 が Carta MCP を必要とするかどうかが判定されます。これは carta-fund-modeling が MCP に触れる前にローカルキャッシュから ID を解決する方法と同じです。ステップ 4、5、6 は毎回呼び出しにおいて実行されます。
| ステップ | 実行? | 処理内容 | 詳細 |
|---|---|---|---|
| 0 | 常に実行 | 企業を特定し、ローカルキャッシュを確認し、挨拶メッセージを表示 | firm-resolution.md |
| 1 | ステップ 0.2 が既に企業を把握している場合(キャッシュヒット)スキップ | 企業を解決 | firm-lookup.md |
| 2 | ステップ 0.2 が既にエンティティを把握している場合(キャッシュヒット)スキップ | ManCo エンティティを解決(フォールバックとして GP エンティティ) | firm-lookup.md |
| 2.5 | 常に実行 | キャッシュ確認 — ステップ 3 の実行の有無のみを判定し、クエリ対象の年/月ウィンドウを渡す | budget-ingest.md |
| 2.6 | accounts-all.txt が見当たらない、または古い場合 |
勘定科目表(チャートオブアカウント)を取得し、ステップ 2.75 が参照できるように | data-fetch.md |
| 2.75 | 常に実行 | 予算ワークブックを解決(参照で解決した場合は無言) | budget-ingest.md — ワークブック解決が必要な場合のみ budget-workbook.md へルーティング |
| 3 | キャッシュが新規の場合、またはユーザーが「更新」を指定した場合のみ | ウェアハウスから仕訳を取得 | data-fetch.md |
| 4 | 常に実行 | データディレクトリを再構築 | serve-and-update.md |
| 5 | 常に実行 | サーバーを再利用または起動し、URL を表示 | serve-and-update.md |
| 6 | 再呼び出し時 | ダッシュボード更新の提案 | serve-and-update.md |
ステップを実行する前に、その参照ファイルを読んでください。 マッチング規則、正確なコマンド、理屈が記載されています。このページはシーケンス(順序)であって、実行手順ではありません。
キャッシュが新規(ステップ 3 が実行される)でワークブックが解析される(ステップ 2.75b が実行される)場合、ステップ 3 の call_tool ブロックとステップ 2.75b の parse_budget_workbook.py Bash コールを同じツール利用メッセージで発行してください。ステップ 2.75a がワークブックとシートを確認した後は、この 2 つは独立しています。
これらはすべて実運用でドロップされたことがあり、各ステップで外見は正しく見えるが実質的には間違ったダッシュボードが上がってきています:
.port を読み、確認し、ライブサーバーを再利用します。起動時、.port が存在するなら PORT を渡さないでください。serve.py が自記録されたポートとトークンを復元します。ポートを計算すると、企業は毎回別の URL を取得します。出力の最初の 1 行はステップ 0 の製品挨拶でなければなりません — 「MCP を確認中」「企業を解決中」といった説明文を付けず、MCP レスポンスを貼り付けません。企業解決からデータディレクトリ構築まで、すべては無言で実行されます。次の場面のみで話してください:
<!-- 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>
Launches a local React dashboard for a management company's YTD financial picture — income, expenses, budget variance, fund fee attribution, and journal-entry drill-downs. Firm-agnostic: works against any Carta Fund Admin firm the invoking user has access to.
Fire on:
<firm>"<firm>'s ManCo income and expenses"<firm>'s ManCo spend"<firm>" — a request
to run or open something for a named firm, as opposed to a request to edit a spreadsheet<firm>'s ManCo financials" / "ManCo financials for <firm>"<firm>" / "ManCo report for <firm>"<firm>'s management company doing" / "how's <firm>'s ManCo performing"<firm>'s management company expenses this year"<firm>" / "<firm>'s ManCo P&L for <year>"<firm>" / "fee income by fund"<firm>"<firm>" / "run ManCo reporting"<firm>"Any of the above naming "ManCo" plus "microapp" — with or without a firm named — routes here, whatever the verb, and specifically not to either of these two neighbours:
carta-investors:carta-manco is the Excel budgeting tool. "Build" in a microapp ask means
render this dashboard, not draft a budget workbook — it only claims that skill when the
object of the verb is a budget.carta-investors:carta-mancocarta-investors:carta-mancocarta-investors:carta-mancocarta-investors:carta-consolidating-financial-reportsNever fabricate or fall back to demo data. Every dashboard runs
against one real Carta firm via a fresh MCP fetch or a warm local
cache. If the user doesn't name a firm, ask via AskUserQuestion — do
not default to any specific firm.
Seven steps, cache-first: Step 0's local cache probe decides whether Steps 1
and 2 need the Carta MCP at all, the same way carta-fund-modeling resolves
identity from a local cache before ever touching the MCP. Steps 4, 5 and 6
run on every invocation regardless.
| Step | Run it? | What it does | Detail |
|---|---|---|---|
| 0 | always | Capture the firm, probe the local cache, emit the greeting | firm-resolution.md |
| 1 | skipped whenever 0.2 already knows the firm — a warm OR soft cache hit | Resolve the firm | firm-lookup.md |
| 2 | skipped whenever 0.2 already knows the entity — a warm OR soft cache hit | Resolve the ManCo entity (GP entity as fallback) | firm-lookup.md |
| 2.5 | always | Cache check — decides only whether Step 3 runs, and hands it the year/month window to query | budget-ingest.md |
| 2.6 | when accounts-all.txt is missing or stale |
Fetch the chart of accounts, so 2.75 can be asked against it | data-fetch.md |
| 2.75 | always | Resolve the budget workbook (silent when a ref answers it) | budget-ingest.md — routes to budget-workbook.md only when a workbook needs resolving |
| 3 | only when the cache is cold, or the user said "refresh" | Fetch journal entries from the warehouse | data-fetch.md |
| 4 | always | Rebuild the datadir | serve-and-update.md |
| 5 | always | Reuse or launch the server, emit the URL | serve-and-update.md |
| 6 | on re-invocations | Offer to update the dashboard | serve-and-update.md |
Read the reference file for a step before running it. They carry the match rules, the exact commands, and the reasoning. This page is the sequence, not the instructions.
When the cache is cold (Step 3 will run) and a workbook is being parsed
(Step 2.75b will run), issue Step 3's call_tool block and Step 2.75b's
parse_budget_workbook.py Bash calls in the same tool-use message. The
two are independent once Step 2.75a has confirmed the workbook and sheets.
Every one of these has been dropped in real runs, and each produces a dashboard that comes up looking correct while being wrong:
.port, probe it, and reuse
a live server. When launching, pass no PORT if .port exists —
serve.py restores its own recorded port and token. Computing a port
gives a firm a different URL every time.Your first line of output must be the product greeting from Step 0 — never a narration of "checking MCP" or "resolving firm", and never a paste of any MCP response. Everything from firm resolution through the datadir build runs silently. Speak only at:
Do not paste raw command output, MCP JSON, SQL result headers, or step labels. The user sees the greeting, any prompt that genuinely needs an answer, and the URL.
Never announce a step you are about to run. "Surface is local — safe to continue", "Surface is local, so I can continue", "Local surface confirmed", "Now moving to Step 2.5", "Now proceeding to Step 4 — assembling the datadir", "Datadir built successfully", "Now checking the local dashboard cache for…" are all output the user did not ask for and cannot act on. Between the greeting and the URL, a tool call is the whole turn — issue it and say nothing.
See errors.md for failure handling and the list of things deliberately not built yet.
<YEAR>, <MAX_MO>, <MANCO_UUID>, <FIRM_UUID>, and
<AS_OF> get interpolated directly into raw SQL in
data-fetch.md's dwh__execute__query calls.
Validate each is the shape it claims to be (year/month as integers, the
UUIDs as the value list_contexts/fa__list__entities actually
returned) before substituting — never pass through free-text user input.~/.cache/manco-reporting/.
Don't copy it elsewhere without user confirmation. Clear a firm's cache
by deleting its dashboard_dir (from manco_paths.py resolve).原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。