Visual ManCo(管理会社向けの経営ダッシュボード/小型アプリ)— Carta Fund Admin(ファンド管理システム)のデータを使ったReact製のシングルページアプリケーション。 **起動条件:** 管理会社のダッシュボード・小型アプリ・レポート・財務情報に関する質問で、どのような動詞(起動、開く、立ち上げる、作成する、実行するなど)が使われた場合に自動で起動します。 **対応機能:** - 損益計算書の階層的な分析 - 経費管理 - 予算と実績の比較 - ファンドごとの経営費収入 - 収入対支出のグラフ - 仕訳明細 **注意点:** - 「build」は予算案を作成することではなく、このダッシュボードを画面に表示することを意味します - ダッシュボード・小型アプリに関する質問は、企業名の有無を問わず常にこのスキルに振り分けられます - 企業名がない単純な管理会社向けの質問でも、画面表示が関連していればこちらに振り分けられます **非対応:** 予算作成・実績管理(→ 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 -->
<IMPORTANT>
_instrumentation_v2 は、Carta のスキル使用状況に関する匿名テレメトリー(利用データ収集)です。Carta MCP ツール呼び出し時の引数に必ず含めてください。プラグインのフックが実行時に上書きするため、常に送信しても安全です。形式:
_instrumentation_v2: {"skills": ["<プラグイン>:<スキル>", ...], "model": "<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>
ファンド管理会社の年間決算実績を表示するローカル React ダッシュボードを起動します。収入、支出、予算差異、ファンド手数料配分、仕訳入力への深掘り表示に対応しています。どの Carta Fund Admin ファンドでも利用可能です。ユーザーがアクセス権を持つ任意のファンド管理会社で動作します。
以下の場合に使用してください:
<ファンド>の ManCo ダッシュボードを立ち上げて」<ファンド>の ManCo 収支をグラフ・チャートで見たい」<ファンド>の ManCo 支出の仕訳を詳しく調べる」<ファンド>の ManCo [予算/レポーティング] 見直し [スキル] を実行/開く」と言われた場合。スプレッドシート編集ではなく、名指されたファンドに対して何かを実行 または 開く 要求であることが重要<ファンド>の ManCo 財務を見せて」「<ファンド>の ManCo 財務」<ファンド>の管理会社レポート」「<ファンド>の ManCo レポート」<ファンド>の管理会社はどう?」「<ファンド>の ManCo の成績は?」<ファンド>の管理会社支出は今年いくら?」<ファンド>の管理会社 P&L」「<ファンド>の ManCo P&L(<年>)」<ファンド>の管理手数料収入」「ファンド別手数料収入」<ファンド>の ManCo データを見せて」<ファンド>の ManCo レポーティングをやる」「ManCo レポーティングを実行する」<ファンド>の ManCo マイクロアプリ(小規模カスタムアプリ)を作って/開いて/起動して/作成して」上記のいずれかで「ManCo」と「マイクロアプリ」の両方を含む場合(ファンド名の有無を問わず)は、動詞を問わず、このスキルにルーティングしてください。以下の 2 つの関連スキルにはルーティングしないでください:
carta-investors:carta-manco は Excel 予算作成ツールです。マイクロアプリの要求で「Build」は、予算ワークブックを作成 することではなく、このダッシュボードを表示 することを意味します。動詞の対象が予算である場合のみそのスキルが使われます。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 | 常に | datadir を再構築 | 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 つは独立しています。
このすべてが実行で削除されており、それぞれが正しく見えるが誤ったダッシュボードを生成します:
ウォームなステップ 2.5 キャッシュヒットはステップ 3 とそれ以降をスキップします。 ステップ 4 ではなく。そこで 2.75 で解決した予算状態が適用され、数秒で済みます。ステップ 5 の再利用チェックではなく。ステップ 6 ではなく。キャッシュ確認から直接起動すると、元の答えが使用されます。 (ステップ 0.2 自体のキャッシュプローブは別の早期ゲートです。ステップ 1-2 もスキップできますが、ステップ 2.5 以降は絶対スキップしません。古いまたは曖昧なステップ 0.2 結果は、ステップ 3 に対する 2.5 の独立チェックに到達します。)
ステップ 5 は起動前に再利用します。 .port を読み込み、プローブし、ライブサーバーを再利用します。起動時、.port が存在する場合は PORT を渡さないでください。serve.py は独自に記録したポートとトークンを復元します。ポートを計算するとファンドが毎回異なる URL を取得します。
ステップ 6 はリンクをたどります。 リンク発行は実行の終わりではありません。ステップ 2.75 の質問をしなかった再実行では、データ更新、ワークブック切り替え、またはページへの入力タブ変更を提案してください。
最初の 1 行の出力は、ステップ 0 からの製品挨拶である必要があります。「MCP を確認中」「ファンドを解決中」というナレーションでも、MCP レスポンスの貼り付けでもないでください。ファンド解決から datadir 構築まで、すべて無音で実行します。以下の場合のみ発声してください:
<!-- 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 による自動翻訳です。