# Carta Fund Admin の管理会社向け予算・報告スキル **対象**: Carta Fund Admin に登録された管理会社(投資ファンドを運営する企業)の予算管理と財務報告 **このスキルが使える場面**: - 予算の作成・策定・下書き - Carta システムからの予算データの取り込み・更新 - 実績データの追加・更新 - 予算と実績の比較分析(数字の並べ比べと差分分析) - 部門別・下位勘定科目の詳細分析 - ペース分析(年間目標に対する進捗状況の確認)と差分の検討 - 使途別の年初来累計支出の確認(「[特定項目]に今年いくら使ったか」) - 予算超過箇所の確認(「どこで使いすぎたか」) - シナリオ分析(人員削減、収益変動、新規ファンド設立、雇用増加などの影響を想定) また、具体的な報告書を指定せずに管理会社の財務全般について質問された場合にも起動し、利用可能な機能を提示します。 例: 「うちの管理会社財務をサポートしてください」「管理会社の予算報告でどう使う?」「管理会社財務」など **このスキルが対象外の場面**: - 単一ファンド(管理会社全体ではなく)の財務 - ポートフォリオ企業の評価額 - LP(投資家)向け報告書 - 資本構成表 - 融資関連(Carta Loan Dashboard を使用) - 損益計算書・貸借対照表・試算表・キャッシュフロー計算書などの特定の財務諸表名が挙げられた場合(専用スキルを使用)
ManCo (management company) budgeting and reporting for Carta Fund Admin firms; hard-gates on Fund Admin + active ManCo. TRIGGER: build/create/draft a budget, pull/import the Carta budget, add/refresh actuals, interleave Budget/Actual/Variance, sub-account drill-down, pacing/variance analysis, "what did we spend on [X] YTD", "where did we overspend", what-if/scenario modeling (headcount cuts, revenue shocks, new fund raise, expansion hires). ALSO fires on ANY generic management-company ask naming no specific report, and shows the capability menu: "help with our ManCo", "help me with our ManCo financials", "ManCo financials", "management company financials", "ManCo reporting", "not sure what I need". NOT FOR: single-FUND (not ManCo) financials, portfolio valuations, LP reporting, cap tables, loans (carta-investors:carta-loan-dashboard); a NAMED consolidating statement (P&L, BS, TB, cash flow) — use carta-consolidating-pnl/-balance-sheet/-trial-balance or fa-manco:carta-consolidating-cash-flow.
<!-- 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>
[PATTERN carta-writing-style v0.0.2] [PATTERN etiquette v0.0.6] [PATTERN text v0.0.8] [PATTERN tables v0.0.12] [PATTERN carta-watermark v0.0.10] [PATTERN base v0.1.0]
Unified ManCo budgeting skill. Routes to one of five capabilities.
Prerequisites: a Carta Fund Admin connection + an active management company. Gate 0.75 (below) confirms both before dispatching to any capability.
references/fetch-budget.md — pull a stored ManCo budget from Carta Fund Admin into Excel.references/create-budget.md — build a new budget workbook from prior-year actuals (or a template, recommendation, tag slice, restructure, or inflation buffer).references/fetch-actuals.md — write/refresh actuals into an existing budget workbook (interleave, separate tab, vendor view, tag view, etc.).references/budget-analysis.md — pacing and variance analysis against an existing budget.references/budget-scenarios.md — what-if scenario modeling (headcount cuts, revenue shocks, cost rebalancing, new fund raises, expansion hires).Use this table to jump straight to the right reference. Determining the
capability (this table, or the Router Gate's AskUserQuestion menu) happens
before Gate 0 / Gate 0.5 / Gate 0.75 so the user sees what this skill can
do without waiting on any MCP round-trip. Actually loading the Load first
reference (or dispatching to an external consolidating skill), however, still
waits until Gate 0 has resolved <SERVER>, Gate 0.5 has detected <RUNTIME>,
and Gate 0.75 has confirmed ManCo eligibility — never invoke a downstream
reference or skill before all three gates pass. The "Pair with" file is
loaded only when the capability reference itself delegates to it, not
upfront.
| If the user needs… | Capability | Load first | Pair with (load only when capability delegates) | Minimal first check |
|---|---|---|---|---|
| Pull/fetch/import/sync a stored ManCo budget from Carta | fetch-budget | references/fetch-budget.md |
references/fetch-budget-data.md, references/cash-balance.md |
Carta MCP connected + firm resolved |
| Build/create/draft a new budget for a future year | create-budget | references/create-budget.md |
references/from-prior-actuals.md (default) or references/from-template.md |
Prior-year actuals accessible in Carta, or template file path provided |
| Add/refresh actuals into an existing budget workbook | fetch-actuals | references/fetch-actuals.md |
references/get-actuals.md |
Existing budget workbook open or path supplied |
| Pacing, variance, "how are we doing", "on track", compare budget vs actuals | budget-analysis | references/budget-analysis.md |
references/pacing-overview.md |
Both budget columns and actuals columns present in the workbook |
| What-if scenario: headcount cuts, revenue shocks, new fund raises, expansion hires | budget-scenarios | references/budget-scenarios.md |
Scenario-specific sub-reference (see Router Gate table) | Budget baseline available in workbook |
If the user's prompt matches multiple rows or is ambiguous, fall through to the Router Gate — that section carries the AskUserQuestion disambiguation menu.
Use this as the semantic layer when the Router Gate's phrase table doesn't
produce an exact match — before falling back to the welcome screen +
AskUserQuestion menu.
| What the customer is trying to do | Typical phrasing | Route |
|---|---|---|
| Get the budget that's already stored in Carta into a workbook | "bring in our budget", "load the ManCo numbers", "I need the budget in front of me" | fetch-budget |
| Stand up a budget that doesn't exist in a workbook yet | "we don't have a budget for next year yet", "start our 2027 plan", "set up the budget from scratch" | create-budget |
| Get real spend data layered onto an existing budget | "fill in what we actually spent", "update this with real numbers", "true up the budget" | fetch-actuals |
| Find out whether spend is on track without saying "pacing" or "variance" | "are we overspending", "how's the year looking so far", "did we blow past budget on legal" | budget-analysis |
| Explore a hypothetical change to the plan | "what happens if we don't hire", "can we afford a new fund raise", "model cutting costs" | budget-scenarios |
| See firm-wide profitability across entities | "how's the ManCo doing overall", "our total income and expenses", "firm-wide earnings" | consolidating-pnl (external) |
| See firm-wide assets/liabilities across entities | "what's the ManCo's financial position", "firm-wide assets and liabilities" | consolidating-balance-sheet (external) |
| See account-level detail across entities | "give me every account balance across the firm" | consolidating-trial-balance (external) |
| Understand where cash moved across entities | "where did our cash go", "sources and uses across the firm" | consolidating-cash-flow (external) |
Audience is an accountant in Excel, so write in plain English and in their
vocabulary. Internal identifiers mean nothing to this reader and read as noise:
MCP tool names, DWH column names (ACCOUNT_TYPE, EFFECTIVE_DATE), UUIDs, raw
JSON, SQL, and the gate labels used in these instructions all stay out of the
reply. Say "your firm's Carta connection", not the connector's tool name.
$X,XXX, negatives ($X,XXX), totals bolded — use the resolved currency symbol, never a bare $. Derive from the data, never default to USD.$0 for a match, $2,000 for a gap.<citation:Sheet!Range>) in Claude for Excel mode, and a file:// path in Claude Code / Cowork mode. Never both.AskUserQuestion. Never render options as a bare code-fenced markdown list. Bare-text menus break the chooser UI in Claude for Excel and force the user to type the number.AskUserQuestion menu and never replace it; both must appear. Emit them as markdown bullets exactly as written. The rule above governs the choice, not the introduction to it.The reader is an accountant working in a spreadsheet, and the deliverable is the workbook. What helps them is the content this skill defines — the capability menu, the questions, the finished tabs. Running commentary on gate progress and tool plumbing doesn't help that reader, and it pushes the content they came for further down the screen. So this skill's replies are the content itself.
The Router Gate runs first, before any MCP tool call. If the prompt is
generic/ambiguous, the welcome screen + AskUserQuestion menu is the very
first thing you emit — the user sees what this skill can do while Gate 0,
Gate 0.5, and Gate 0.75 haven't even started. If the prompt names a specific
capability, determine <CAPABILITY> from the routing table and move straight to
Gate 0.
Once <CAPABILITY> is set, Gate 0, Gate 0.5, and Gate 0.75 run without
commentary. Once eligibility is confirmed, dispatch and let the capability's
own gates (from its reference file, or the external skill it hands off to) drive
the rest — do not re-implement or pre-run its logic here.
The user-facing text this skill produces is:
AskUserQuestion menu — when the prompt is generic/ambiguous, before Gate 0 begins.AskUserQuestion — when multiple firms match (during Gate 0).AskUserQuestion — when the runtime is genuinely ambiguous.Everywhere else in the routing and gate sequence, the reply is the tool call. Commentary that adds nothing for this reader:
<X>", "Found server <X>".<X> surfaced", "this server lacks list_contexts". list_contexts and call_tool load lazily and are often absent from the visible tool list; that is expected and they still work, so there is nothing here worth reporting.context_snip failures, compression notes, and similar plumbing.Check whether these context variables are already set from an earlier budgeting skill call in the same session:
<SERVER> — connected Carta MCP server prefix<FIRM_UUID> — the resolved firm (set in Gate 0, distinct from the ManCo entity below — some commands, e.g. fa:get:cash-balance, need both at once)<ENTITY_NAME>, <ENTITY_UUID>, and <ENTITY_ID> — the resolved ManCo entity (<ENTITY_ID> is its integer Fund PK, distinct from <ENTITY_UUID> — see entity-picker.md)<RUNTIME> — excel-addin or local-file<HAS_MANCO> — whether fa:get:manco_eligibility confirmed active Fund Admin + an active ManCo this session<CAPABILITY> — previously routed capability (if re-entering from a next-step menu)Step order is always: Router Gate → Gate 0 → Gate 0.5 → Gate 0.75 → dispatch.
If <CAPABILITY> is already set: skip the Router Gate entirely — the user
already picked (or named) a capability in this session. Go straight to the
Gate 0 check below.
If <CAPABILITY> is not set: run the Router Gate first — before any MCP
tool call — to determine it (specific-prompt match, or the welcome screen +
AskUserQuestion menu for a generic/ambiguous prompt).
Once <CAPABILITY> is known: if <SERVER>, <ENTITY_NAME>,
<ENTITY_UUID>, and <RUNTIME> are all already set, skip Gate 0 and Gate 0.5
and proceed directly to Gate 0.75. Otherwise run Gate 0 and Gate 0.5 first.
Gate 0.75 always runs — fa:get:manco_eligibility is never skipped, even when <HAS_MANCO> is already known. The call is fast and cached, and its _instrumentation records the skill invocation.
If <HAS_MANCO> is true after Gate 0.75: dispatch to <CAPABILITY> directly — the Router Gate already ran, so there is no menu left to show.
Ambiguous requests use a two-step menu (category, then drill-down) instead of one flat list — AskUserQuestion caps at 4 options in Claude for Excel, and the 9 capabilities/dispatches don't fit in one question.
STOP rows — handle before routing: check these first, before attempting any capability match below. A match here means the request is out of scope for this skill entirely — redirect and stop; do not proceed to Gate 0.
| Message signals | Action |
|---|---|
| "loan dashboard", "loan portfolio", "draw balance", "loan overview" | Stop. Loans are a separate domain. Tell the user: "Loans live in a separate skill — try carta-investors:carta-loan-dashboard or carta-investors:carta-loan-overview directly." |
| "Fund Forecasting", "Tactyc", "forecasting metrics" | Stop. Fund Forecasting is a separate domain from Fund Admin ManCo budgeting. Tell the user: "Fund Forecasting / Tactyc metrics are handled by a different skill — try carta-investors:carta-fund-forecasting." |
| "single-fund financials", "this fund's financials", "portfolio valuations", "fund marks", "portfolio company valuation" | Stop. Single-fund and portfolio-level financials/valuations are out of scope for ManCo budgeting. Tell the user: "That's single-fund/portfolio territory, not the ManCo — try Carta's portfolio valuations tools." |
| "LP reporting", "LP documents", "K-1", "capital call notice", "distribution notice", "AGM deck", "tear sheet" | Stop. LP reporting is a separate domain. Tell the user: "LP documents and reporting live in a separate skill set — try carta-investors:carta-lp-reporting-routing." |
| "cap table", "equity grants", "409A", "option pool" | Stop. Cap table administration is out of scope for ManCo budgeting. Tell the user: "Cap table and equity administration live in Carta's cap table tools, not here." |
If none of the rows above match, continue below to determine the capability.
Infer the capability from the user's prompt. Do not ask the user to name a capability by its technical name. Two paths only:
<CAPABILITY> to that reference/skill immediately — do not dispatch
yet, and do not emit the welcome screen or call AskUserQuestion — the
user already named the task. Proceed straight to Gate 0.AskUserQuestion menu.Route rows — classify and proceed to Gate 0:
| Phrase in the prompt | Capability | Reference to load |
|---|---|---|
| "pull / fetch / import / sync Carta budget", "bring Carta's budget into this sheet", "pull the Carta budget for [ManCo]", "add / update / refresh cash balance", "add / update the beginning cash balance" | fetch-budget | read_skill(file_path="references/fetch-budget.md") |
| "build / create / draft / generate a budget for [year]", "build a budget for next year", "from last year's actuals", "from prior actuals", "add a 5% inflation buffer", "group / categorize budget line items" | create-budget | read_skill(file_path="references/create-budget.md") |
| "pull / fetch / get / refresh / sync actuals for [firm/ManCo]", "what did we spend on [category] YTD", "interleave Budget/Actual/Variance", "actuals by department/tag/vendor/sub-account", "add next month column", "extend budget through [month]" | fetch-actuals | read_skill(file_path="references/fetch-actuals.md") |
| "how are we doing", "pacing", "on track", "how are we pacing against budget", "variance analysis", "compare budget vs actuals", "budget vs actuals for [firm]", "are we over on [X]", "where did we overspend or underspend", "drill into [X]" | budget-analysis | read_skill(file_path="references/budget-analysis.md") |
| "what if we cut headcount", "model a revenue shortfall", "preserve $X cash", "raise a new fund", "model hiring N FTEs", "what-if", "scenario", "build me a scenario model" | budget-scenarios | read_skill(file_path="references/budget-scenarios.md") |
| "consolidating P&L", "consolidated income statement", "ManCo P&L", "pull our ManCo P&L", "consolidating P&L across all entities" | consolidating-pnl (external) | Skill("carta-investors:carta-consolidating-pnl") |
| "consolidating balance sheet", "consolidated BS" | consolidating-balance-sheet (external) | Skill("carta-investors:carta-consolidating-balance-sheet") |
| "consolidating trial balance", "show me the trial balance", "TB" | consolidating-trial-balance (external) | Skill("carta-investors:carta-consolidating-trial-balance") |
| "consolidating cash flow", "cash flow statement for the ManCo" | consolidating-cash-flow (external) | Skill("fa-manco:carta-consolidating-cash-flow") |
If ambiguous (prompt matches no row, or skill was invoked with no specific task), emit a welcome screen first, then ask via AskUserQuestion.
Welcome screen — output before calling AskUserQuestion, and before any
Gate 0 tool call. It opens the reply; nothing precedes it. Emit the block below
exactly as written. It is already complete as it stands: only the headline
varies, and it carries its default inline, so emitting it verbatim is always
correct. Format rule: put each
capability on its OWN line as a markdown bullet (- ). Do NOT merge them into
one paragraph — a blockquote with the items run together renders as an
unreadable wall of text in Claude for Excel.
Ready to help with your ManCo budget.
Here's what I can help you with:
Headline variant: swap the first line for "Connected to [FIRM] via Carta Fund Admin." only when a real firm name is already known from a chained call this session. Never emit a bracketed placeholder.
Format rule for AskUserQuestion: pass each question, label, and description as plain text — no markdown (**bold**, backticks), no emoji, no line breaks. The chooser renders the string verbatim, so any markup shows as literal characters. The **…** in the tables below is doc formatting only; strip it when you pass the value.
AskUserQuestion renders at most 4 options per question (any beyond the fourth are silently dropped by the client — a hard runtime cap in Claude for Excel, not a display setting). The nine capabilities therefore CANNOT be listed in one question. Use a two-step grouped menu — a category question, then a drill-down only for the categories that map to more than one capability.
Step 1 — category (one AskUserQuestion, 4 options):
What would you like to do with your budget?
| # | Label | Description | Routes to |
|---|---|---|---|
| 1 | Work with the budget itself | Pull the ManCo budget from Carta, or build a new one. | drill-down A |
| 2 | Actuals & variance | Write/refresh actuals into a budget, or analyze pacing vs budget. | drill-down B |
| 3 | Model a what-if scenario | Headcount cuts, revenue shocks, new fund raises, or expansion hires. | budget-scenarios (no drill-down) |
| 4 | Consolidating financials | Firm-wide P&L, balance sheet, trial balance, or cash flow across all entities. | drill-down C |
Step 2 — drill-down (a second AskUserQuestion, ≤4 options; skip entirely for category 3):
| # | Label | <CAPABILITY> |
Load |
|---|---|---|---|
| 1 | Fetch the ManCo budget from Carta | fetch-budget | read_skill(file_path="references/fetch-budget.md") |
| 2 | Build a new budget from prior-year actuals | create-budget | read_skill(file_path="references/create-budget.md") |
| # | Label | <CAPABILITY> |
Load |
|---|---|---|---|
| 1 | Add / refresh actuals on an existing budget | fetch-actuals | read_skill(file_path="references/fetch-actuals.md") |
| 2 | Analyze pacing and variance (budget vs actuals) | budget-analysis | read_skill(file_path="references/budget-analysis.md") |
| # | Label | Dispatch to |
|---|---|---|
| 1 | Consolidating P&L | Skill("carta-investors:carta-consolidating-pnl") |
| 2 | Consolidating balance sheet | Skill("carta-investors:carta-consolidating-balance-sheet") |
| 3 | Consolidating trial balance | Skill("carta-investors:carta-consolidating-trial-balance") |
| 4 | Consolidating cash flow | Skill("fa-manco:carta-consolidating-cash-flow") |
Never add a fifth option to any single
AskUserQuestioncall — split into another grouped question instead. A flat 5+ option menu loses every option past the fourth.
Store <CAPABILITY> from the final chosen option, then proceed to Gate 0 (or
straight to Gate 0.5 / Gate 0.75 if <SERVER>/<ENTITY_NAME>/<ENTITY_UUID>/
<RUNTIME> are already resolved from a prior chained call). Do not load the
reference or invoke the external skill yet — dispatch only happens after
Gate 0.75 confirms eligibility (see the Dispatch step at the end of Gate
0.75).
Scan the tools available in the conversation for any matching mcp__*__welcome. Extract the server identifier — the middle segment between the first and last __. Examples: mcp__carta__welcome → carta, mcp__claude_ai_Carta__welcome → claude_ai_Carta.
If none found: tell the user no Carta MCP is connected and stop.
If exactly one found: call mcp__<SERVER>__welcome(_instrumentation={"plugin": "carta-investors", "skills": ["carta-manco"]}) to verify. This is <SERVER>.
If multiple found: ask the user which to use via AskUserQuestion. Default to carta (production) if present.
Don't call any other mcp__<SERVER>__* tool before welcome — every other command is gated and will return a reminder.
Resolve firm: if user named one → mcp__<SERVER>__list_contexts(firm_name="<entity>", _instrumentation={"plugin": "carta-investors", "skills": ["carta-manco"]}) → disambiguate via AskUserQuestion if multiple → mcp__<SERVER>__set_context(firm_id=<FIRM_UUID>, _instrumentation={"plugin": "carta-investors", "skills": ["carta-manco"]}). Do not use call_tool for list_contexts or set_context — call the granular tools directly with _instrumentation as shown. Store the resolved value as <FIRM_UUID> for the rest of the session — it's the firm, not the ManCo entity entity-picker.md resolves later; downstream commands that need both (e.g. fa:get:cash-balance) require them kept distinct.
DWH param-name traps: dwh:execute:query takes sql: not query:. dwh:get:table_schema takes table_name: not table:. format accepts "ndjson" / "markdown", not "csv".
DWH result formatting: queries > 50 rows: request format: "ndjson", bucket into a blob. Don't paste large results — triggers context_snip. Use "markdown" only for ≤50-row previews. DWH limit ceiling is 10000 — the server clamps any higher value silently; pass limit: 10000 and paginate via next_offset if the response includes one.
If no firm was named, defer to the capability's own parameter gate.
Never BM25-search for Carta MCP tools at any point in this skill. Derive <SERVER> from the server name as shown in step 2. After that, the five suffixes welcome, set_context, list_contexts, call_tool, fetch are exhaustive for every Carta MCP server regardless of environment. Call mcp__<SERVER>__<suffix> directly — these tools exist on every Carta server; you do not need to verify their existence before calling them. Do not run tool_search_tool_bm25 under any circumstances — not to discover the prefix, not to find fetch, not for anything.
Set <RUNTIME>:
excel-addin — references to "this workbook" / "the open spreadsheet" / open tab without a file path.local-file — user supplied a file path (~/Downloads/Budget.xlsx) or asked to "create a new file" / "write to disk".AskUserQuestion: "Are you working in Excel via Claude for Excel, or with a local .xlsx file (Claude Code / Cowork)?"STOP. This is a hard gate. ManCo budgeting and consolidating-financials capabilities require an active Carta Fund Admin subscription AND an active management company. Verify here; do not route, load a reference file, or invoke any external skill until eligibility is confirmed.
Runs once per session after the firm is resolved (Gate 0). Call the eligibility pre-check:
mcp__<SERVER>__fetch(command="fa:get:manco_eligibility", _instrumentation={"plugin": "carta-investors", "skills": ["carta-manco"]})
This returns {available, has_active_manco, has_fund_admin, fa_product_codes} — a fast, cached pre-check; it replaces listing entities and inferring a ManCo from an entity_types filter.
available |
has_fund_admin |
has_active_manco |
Action |
|---|---|---|---|
false |
— | — | Enrichment not yet synced or a transient DWH outage — not a denial. Surface the Try again message below and STOP. |
true |
false |
— | Surface the No Fund Admin message below and STOP. |
true |
true |
false |
Set <HAS_MANCO> = false. Surface the No ManCo message below and STOP. |
true |
true |
true |
Set <HAS_MANCO> = true. Proceed to Dispatch below. |
| Call errors / times out | Do NOT auto-retry. Surface the generic connection error from the shared Error-handling table and STOP. |
A false gating result is FINAL. You get at most one fa:get:manco_eligibility probe per session. After it returns a denial, you MUST stop. Do NOT:
fa:get:manco_eligibility hoping the cached result changes within the same session,fa:list:entities or a DWH query to "look for a ManCo another way,"welcome / set_context to re-authenticate — a fresh token does not grant a product the firm hasn't bought.Copy-paste the exact text below word for word — every sentence. Do not drop, reorder, or rephrase any part of it. Do not add anything before or after it.
I don't see Management Company Administration as part of your Carta plan. That's built for firm-level operations: firm-level financial position, expense allocations across entities, and managing your operating budget.
Reach out to your account team or request a demo → to get access. I can help you pull fund-level performance, LP reporting, or capital activity in the meantime.
I can't find a Carta Fund Admin firm on your account, and these ManCo features run on Fund Admin data. If your firm uses Carta Fund Admin, reconnect Carta in Settings → Connectors; otherwise reach out to your Carta account manager to get Fund Admin set up.
I'm still syncing your account details — this can take a moment for new or recently updated accounts. Please try again shortly.
After surfacing any of these messages, do not dispatch to <CAPABILITY> — the
Router Gate's choice is discarded along with the session.
Once <HAS_MANCO> is true, dispatch to <CAPABILITY>:
fetch-budget, create-budget, fetch-actuals, budget-analysis, budget-scenarios): re-fire the telemetry beacon (see Per-capability telemetry below), then call read_skill for the matched reference file and follow it exactly from its Gate 1. Do not reconstruct its gates from memory.consolidating-pnl, -balance-sheet, -trial-balance, -cash-flow): invoke the external skill via the Skill tool shown in the routing table. Pass the original user message and the resolved firm context so the downstream skill can skip its own firm resolution. Do not re-implement consolidating logic here.For budgeting capabilities, re-fire the telemetry beacon so this capability's MCP calls attribute correctly. Every budgeting reference's _instrumentation uses skills: ["carta-manco", "<CAPABILITY>"] — the capability name itself (fetch-budget, create-budget, fetch-actuals, budget-analysis, or budget-scenarios), not a separate skill identifier.
mcp__<SERVER>__set_context(firm_id=<FIRM_UUID>, _instrumentation={"plugin": "carta-investors", "skills": ["carta-manco", "<CAPABILITY>"]})
(Consolidating capabilities skip this — the external skill they dispatch to fires its own per-skill instrumentation.)
Out-of-scope topics (loans, Fund Forecasting, single-fund financials, LP reporting, cap tables) are handled proactively by the STOP rows in the Router Gate above — they never reach this table. This table covers issues that only surface mid-flow, once a capability is already running.
| Situation | Response |
|---|---|
| User wants pacing AND to build the budget first | Route to create-budget first; budget-analysis follows once the budget exists. |
fetch-budget returns no budget rows |
ManCo was already confirmed in Gate 0.75, so this means no budget is loaded into Carta for that year yet. Offer to build one with create-budget. |
fetch-actuals / budget-analysis returns zero actuals rows |
ManCo confirmed in Gate 0.75 — so no activity posted for that period. Suggest a different date range. |
Amounts in <resolved_currency>.[$$-en-US]#,##0.00_);([$$-en-US]#,##0.00);"-" · EUR [$€-x-euro2]#,##0.00_);([$€-x-euro2]#,##0.00);"-" · GBP [$£-en-GB]#,##0.00_);([$£-en-GB]#,##0.00);"-" · CAD [$CA$-en-CA]#,##0.00_);([$CA$-en-CA]#,##0.00);"-". Never a bare $ or _($* — Excel substitutes the system symbol.B/A/V). Never write both into the same row — subsequent merges destroy sub-headers.numberFormat = [["@"]] to header ranges before writing period labels — otherwise Excel coerces "Jan 2026" → date serial.range.merge(true) discards trailing cell values. Insert a new row first.style = "Continuous", then weight = "Thin". Never style: "Thin".references/branding-and-header.md for every tab. Asset access via blobs.getText("assets/powered_by_carta.b64.txt") in excel-addin mode.| Symptom | What to tell the user |
|---|---|
| No Carta MCP server found | "I can't see your Carta connector. Open Settings → Connectors in Claude, enable Carta, then ask me again." |
contexts:list returns no firm |
Echo the name and ask for correct spelling. Don't silently near-match. |
| Query times out | Tell the user it's slow and offer to retry — never auto-retry. |
| Auth / permission error from the MCP | Ask the user to reconnect Carta in Settings → Connectors. |
Connector connected, tool calls fail (McpAuthError / "tool not available") |
Prefix mismatch — NOT an auth issue. Re-run refresh_mcp_connectors, probe the matching prefix's welcome. Never tell the user to re-auth without verifying the prefix mismatch first. |
The skill queries the Carta DWH journal-entries table. Look up column names via the Carta MCP DWH schema command at Gate 0 if needed. Don't embed column listings inline — the DWH contract can drift.
references/fetch-budget.md — pull a stored ManCo budget from Carta Fund Admin into Excelreferences/create-budget.md — build a new budget workbook from prior-year actuals, a template, a recommendation, a tag slice, a restructure, or an inflation bufferreferences/fetch-actuals.md — write or refresh actuals into an existing budget workbook (interleaved, separate tab, vendor view, tag view, etc.)references/budget-analysis.md — pacing and variance analysis against an existing budgetreferences/budget-scenarios.md — what-if scenario modeling (headcount cuts, revenue shocks, cost rebalancing, new fund raises, expansion hires)references/fetch-budget-data.md — DWH query patterns for pulling stored budget figuresreferences/cash-balance.md — GL-based bank/cash balance fetch (fa:get:cash-balance), used by fetch-budget's Beginning cash balance row and every budget-scenario reference's cash-impact summaryreferences/get-actuals.md — DWH query patterns for pulling journal-entry actualsreferences/entity-picker.md — firm/entity resolution and picker UXreferences/from-prior-actuals.md — build baseline from last year's Carta actuals (default path)references/from-template.md — build from a user-supplied Excel templatereferences/from-recommendation.md — build from a Carta-generated recommendationreferences/slice-by-tag.md — scope budget to a specific department/tagreferences/budget-by-subaccount.md — build a budget with sub-account rows nested under their parent account, for accounts that have sub-account activityreferences/reorganize-categories.md — restructure COA groupings before budgetingreferences/inflation-buffer.md — apply a percentage uplift across line itemsreferences/fill-budget-columns.md — write budget figures into month columnsreferences/add-actuals-columns.md — interleave Budget / Actual / Variance columns in-placereferences/add-actuals-tab.md — write actuals to a separate tabreferences/add-period.md — extend the workbook with a new period columnreferences/vendor-actuals.md — add a vendor-level breakdown viewreferences/vendor-view.md — write a standalone vendor-only worksheetreferences/vendor-only-view.md — vendor view without budget columnsreferences/inline-vendor.md — inline vendor detail beneath line itemsreferences/tag-view.md — actuals bucketed by department/tagreferences/sub-account-view.md — full chart-of-accounts drill-down, sub-accounts nested under their one parent GL account (not just P&L)references/refresh-existing.md — refresh already-written actuals figuresreferences/pacing-overview.md — YTD pacing summary and on-track logicreferences/drill-down-line.md — drill into a single line item for transaction detailreferences/headcount-reduction.md — model a headcount cutreferences/revenue-shock.md — model a revenue shortfallreferences/cost-rebalance.md — redistribute cost targets across categoriesreferences/new-fund-raise.md — model incremental costs of a new fund raisereferences/expansion-hire.md — model adding N FTEsreferences/branding-and-header.md — Carta branding standards, header layout, and powered-by-Carta assetThis skill is a hybrid, unlike a uniform mirror-only or dispatch-only router:
the 5 budgeting capabilities (fetch-budget, create-budget, fetch-actuals,
budget-analysis, budget-scenarios) are implemented inline via
read_skill(file_path="references/<capability>.md") — this skill is their
sole implementation, there is no separate standalone skill for any of them.
The 4 consolidating-financials capabilities are external dispatches via the
Skill() tool to standalone carta-investors/fa-manco skills that own their
own gates end to end.
This skill is the sole, published implementation of all 5 budgeting capabilities — no separate leaf skill exists for any of them, and no sibling skill to keep in sync. References stay self-contained for this reason: each capability's full logic lives in its own reference file here rather than split across skills that could drift apart from each other.
This skill's own description does not claim "consolidating P&L / balance
sheet / trial balance / cash flow" as trigger phrases, even though the
Router Gate below still dispatches to those 4 capabilities. carta- consolidating-pnl and carta-consolidating-balance-sheet independently
claim those same phrases in their own descriptions — if this skill's
description claimed them too, the top-level picker would face a genuine
ambiguity between two skills for the same utterance. A named consolidating
ask (e.g. "show consolidating P&L for our firm") therefore reaches the
standalone skill directly, without this skill ever being selected.
The Router Gate's Route rows and the welcome-screen menu (category 4, drill-down C) still dispatch to the 4 consolidating skills — those only run after carta-manco is already selected (explicit invocation by name, or a genuinely ambiguous "help with our ManCo" request that falls through to the menu), so they carry no picker-level collision risk. A user who names the consolidating ask directly reaches the standalone skill without ever loading carta-manco; a user who asks broadly still finds it as a menu option.
The 4 consolidating skills each track firm context as <FIRM_NAME>/
<FIRM_UUID> internally, while this skill tracks <ENTITY_NAME>/
<ENTITY_UUID>. The Dispatch step passes the resolved firm context "so the
downstream skill can skip its own firm resolution," but the variable-naming
mismatch means that skip doesn't reliably fire — the downstream skill may
re-resolve the firm it was just handed. This is a minor extra round-trip, not a
correctness bug, and fixing it means changing the variable-naming contract of 4
other skills — out of scope here.
Gate 0.75's Dispatch step tags _instrumentation.skills with <CAPABILITY>
itself (fetch-budget, create-budget, fetch-actuals, budget-analysis,
budget-scenarios). A Metabase dashboard ("Budget Skills Usage") filters on
these exact strings — renaming a capability here requires updating that
dashboard's SQL too, an external dependency this repo cannot verify or fix
directly.
原文・著作権は Anthropic および各プラグイン作者に帰属します。日本語訳は Claude API による自動翻訳です。