Capital Activity Summary (Claude Skill)
Last updated: July 6, 2026
This Claude Skill teaches Claude to show all capital calls and distributions for a fund in one place: period totals, an action-level table, and per-LP detail, in chat or as a file, pulled live (read-only) from your Hanover Park account.
How to set it up (one time)
Download the attached file just above.
In Claude, go to Settings > Capabilities > Skills and upload the file.
Done. There is nothing to configure.
How to use it
Just ask Claude, for example:
"Show all calls and distributions for [fund] this quarter"
"What did we call in Q2?"
"Capital activity YTD as an Excel"
What's inside the skill (reference only)
You don't need to read anything below to use the skill. It's the full instruction set packaged in the attached file, shown here for reference.
Show all capital calls and distributions for a fund in one place. The person asking is a fund principal (CFO or GP) at the firm, typically prepping for an LP conversation or closing out a quarter — treat every figure as something that may be forwarded to an LP, so accuracy and honest labeling beat completeness.
Step 1 — Establish context
Call get_user_context once — it returns the firm, its funds, and today's date. Use that firm's id on every subsequent call. If a fund name the user gave plausibly matches more than one vehicle (say, "[Fund 1]" when both "[Fund 1], L.P." and "[Fund 1] Parallel, L.P." exist), list the candidates and ask which they mean — never guess.
Step 2 — One round of clarification
Collect anything the request didn't specify in a single round (use the AskUserQuestion tool when available, otherwise ask plainly in chat). Never re-ask something the user already said. Busy CFOs and GPs will not tolerate three sequential question rounds.
Fund(s) — which fund, or all funds? If the firm has ≤4 funds, offer them as options with "All funds" first.
Period — if the request names no period, ask (offer: current quarter, last completed quarter, year to date, inception to date). If the user says "this quarter" and the current quarter is less than ~3 weeks old, confirm: "Q3 is only N days old — did you want Q3 so far, or Q2?" A summary of a nearly-empty quarter is rarely what anyone wants, but never silently substitute a different period than the one they named.
Format — only ask if they hinted at a file; otherwise default to chat (see Step 4).
Step 3 — Pull the data
Everything comes from get_capital_activity (actions view). Two calls per fund scope:
Action-level:
groupBy: "vehicle"with the period'sstartDate/endDate— one row per capital action, amounts summed across partners. Read period totals fromsummary.byDirectionand per-fund rollups fromsummary.byVehicle.Per-LP detail: same call with
groupBy: "investor"— one row per partner position per action (investor name, partner type, called/distributed amounts, due date). Paginate withnextCursoruntil exhausted (limit: 500keeps pages few); detail rows must be complete before you show or file them.
Rules that keep the numbers honest:
Totals come from
summary, never from summing paginated rows — pages are partial, and the summary classifies net-call-distributions once by their net settlement, which naive row-summing gets wrong.Include all partner types by default (omit
partnerTypes) and label each detail row LP / GP / affiliate — that way the detail ties to the fund-level totals. Filter topartnerTypes: ["limited_partner"]only when the user explicitly wants LPs only, and say the totals shown are LP-only.Dates are due dates of booked capital actions, not payment dates. This report says what was called and distributed — it does not say who has paid. If the user asks about payment status, collections, or delinquency, hand off to the capital-call-status skill.
Never compute IRR, DPI, TVPI, or MOIC from these cashflows — that's get_fund_performance territory (fund-metrics-report skill).
A period with no activity gets an explicit "no capital activity in this period" — never a zero table, never an estimate. If the tool returns no data or omits a figure, say so plainly.
Report recallable distributions as their own line whenever
totalRecallableDistributedis nonzero — LPs care about the distinction.
Step 4 — Build the output
Formatting conventions everywhere: money as whole dollars with thousands separators ($12,345,678), dates as "May 28, 2026", quarters as "Q2 2026", action types in plain language ("Pro-rata call", not "pro-rata-call"). Sort most recent first in every view.
Chat (default)
Headline — firm, fund(s), period, and the summary totals: total called, total distributed, recallable distributed (if any), net.
Activity table (action level) — one row per event: due date · fund (multi-fund runs only) · type · direction · amount.
Per-LP detail — flat table: due date · LP/partner · type · amount called · amount distributed. If detail runs past ~40 rows, show the most recent action's detail plus per-action subtotals instead, and offer the full detail as an Excel file — a 300-row chat table helps nobody.
One or two sentences of commentary (largest call, notable distribution, comparison to the prior period only if you actually pulled it).
Excel / PDF / HTML (on request)
Excel via the xlsx + excel-formatting skills: a Summary sheet (period totals, by-fund rollup, action-level table) and a Detail sheet (complete per-LP rows, filterable). PDF/HTML mirror the chat structure with the full detail table. Every file states: firm, fund(s), period, run date, and that amounts reflect booked capital actions by due date.
Branding is client-firm-first: the firm's name is the headline; a discreet "Prepared by Hanover Park · [date]" footer on file outputs. Neutral, professional styling (charcoal/navy on white) — no Hanover Park brand colors or logos in the body of a client's report.
Save files to the user's project folder and present them with the file-presentation tool.
Example
User: Show all capital calls and distributions for [Fund 1] this quarter.
Flow: get_user_context (firm and funds resolved) → fund matched ([Fund 1]) → suppose today is July 6: Q3 is 6 days old, so confirm "Q3 so far, or Q2?" → user says Q2 → get_capital_activity groupBy vehicle for the quarter, then groupBy investor, paginated → chat: headline totals, action table, per-LP detail sorted newest first ([LP 1] $1,400,000, [LP 2] $700,000, ...) → close with "want this as an Excel file?"
Handoffs
Route these away rather than approximating them here: "who hasn't paid / outstanding / overdue" → capital-call-status · distributions-only aggregate or DPI view → itd-distribution-report · one investor across funds ("what does [LP 1] have with us") → lp-position-snapshot · NAV, IRR, multiples, "how did the fund do" → fund-metrics-report.