Divorce financial planning
Skill KameronKales/planfi-skills/skills/divorce-financial-planning
Free, open-source Claude Code Agent Skills for personal finance — FIRE planning, rent-vs-buy, tax optimization & gain-harvesting, equity comp, retirement income (pensions/annuities, bond ladders), debt & student loans, relocation, and self-employed/business-owner planning. Powered by the public planfi MCP (no auth). Not financial advice.
npx -y skills add KameronKales/planfi-skills --skill divorce-financial-planningAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Model the financial split of a divorcing household — QDRO division of 401k/pension/IRA, after-tax equalization of Roth vs traditional vs taxable awards, the equalizing cash payment, pension present-value split, home buyout vs §121-split sale, post-2019 alimony after-tax cost, MFJ→single bracket shift, and divorced-spouse Social Security (10-year rule) eligibility. Use whenever someone is dividing assets in a divorce — e.g. "how do we split our 401k in a divorce", "QDRO division of my pension", "who keeps the house, buyout vs sell", "what's the equalizing payment for a 50/50 split", "can I claim my ex's Social Security".
SKILL.md
12.4 KB, as published. Nobody here has run it
Divorce Financial Planning
A thin orchestration layer over the planfi MCP (https://ai.planfi.app/mcp/free). All math + financial logic live server-side. This skill only gathers inputs and calls the tools — it does not compute anything locally, carries no business logic, math, or defaults, and is read-only (it never changes the user's data). The server is the source of truth.
Related skills: for claiming/timing Social Security after the split (including the
divorced-spouse benefit in depth), see retirement-income (optimize_social_security). For the
full multi-year ordinary/LTCG/NIIT/AMT picture of a settlement year, see tax-optimizer
(analyze_advanced_taxes, optimize_multi_year_tax). For the whole-household forecast that the
settlement feeds into (net worth, FIRE %, Monte-Carlo backtesting), see financial-forecast
(generate_financial_plan).
Step 0 — Make sure the planfi tools are connected
This skill uses these tools (may be namespaced, e.g. mcp__planfi__analyze_divorce_qdro):
analyze_divorce_qdro, optimize_social_security, analyze_advanced_taxes, analyze_estate_exposure,
plus optional generate_financial_plan (to mint a plan_id for chaining + a share_url).
Use whichever name your environment exposes (bare or mcp__planfi__-prefixed); below they are written bare.
If they're NOT available, tell the user to connect the MCP, then continue:
claude mcp add --transport http planfi https://ai.planfi.app/mcp/free
Try free, then add your key. The command above adds the free connector —
https://ai.planfi.app/mcp/free(no key needed). Once you create an API key, add a new connector with the MCP url —https://ai.planfi.app/mcp— and authorize it with your key.
(On claude.ai: add a custom connector pointing at https://ai.planfi.app/mcp/free.)
Access — free for personal use. The planfi MCP is free to try (a small monthly allowance, no key needed). Heavy automated abuse forced us to add limits — but it stays free for personal use: email [email protected] and we'll send you a free API key, no charge. (Companies and commercial use have paid plans.) To use a key, pass it as an
Authorization: Bearer pft_…header in your MCP client config.
Step 1 — (Optional) build a plan first to chain context + get a share link
If the user has (or wants) a full household model, call generate_financial_plan once and
capture the returned plan_id. The specialist tools accept { plan_id } (plus inline
overrides), so they can resolve age, income, filing status, and balances from the saved plan instead
of you re-sending every figure. generate_financial_plan also returns the share_url
(planfi.app) — analyze_divorce_qdro itself emits a share_url only when a plan is in scope, so the
plan path is the reliable way to give the user a sharable artifact.
This step is optional: every tool runs from raw inputs too. Prefer the plan path when the session already has a model or the user wants a sharable link.
Engine facts to bake in: all dollars are today's (real) dollars; all decimals are fractions (a 50/50 split →
0.5, 22% marginal →0.22); tax brackets/limits are approximate ~2026 values (noted in each tool'sdisclosures).
Step 2 — Route by intent
"Split our 401k / IRA / pension in a divorce" / "QDRO division of my retirement accounts" / "who keeps the house — buyout vs sell" / "what's the equalizing cash payment for a 50/50 split" / "is my Roth worth more than my traditional in the settlement" / "after-tax cost of alimony post-2019" / "can I claim my ex's Social Security (10-year marriage)" → analyze_divorce_qdro
Always CALL analyze_divorce_qdro for these — do not answer from general knowledge or quote
QDRO / §121 / TCJA rules of thumb from memory. When the user gives the account balances and the
agreed split, run it and lead with its real output (each spouse's after-tax award, the equalizing
cash payment, and the SS divorced-spouse flag). A $1 of Roth ≠ $1 of traditional ≠ $1 of taxable —
the whole point of this tool is to discount each account to its REAL after-tax value (traditional by
the recipient's marginal rate, taxable by the embedded built-in gain at the LTCG rate) so the split
is truly equal, not just equal on paper. Never eyeball that by hand.
Models the financial split of a divorcing household, deterministically:
- QDRO division of each
traditional/roth/taxable/pensionaccount — penalty-free transfer incident to divorce — split by an explicitsplitPct, acoverturefraction, or thetargetSplitPct. - After-tax equalization — discounts each award to its real value and returns the equalizing cash payment (who pays whom, and how much) for a truly 50/50 (or agreed) settlement.
- Pension PV split — present value of the marital portion, divided per the agreed split.
- Home — buyout (one spouse keeps, pays the other their equity share) vs §121-split sale (each spouse excludes up to $250k of gain) — compares after-tax proceeds and recommends a path.
- Post-2019 alimony — non-deductible to payer / non-taxable to payee (TCJA) after-tax cost.
- Filing-status shift — MFJ → single/HoH bracket delta.
- Divorced-spouse Social Security — flags the 10-year-marriage-rule eligibility (and estimates the benefit if the ex's PIA is supplied).
REQUIRED to be useful: accounts[] — each { label, type, balance, owner, recipient } where type
is traditional | roth | taxable | pension. Optional per-account: basis (taxable only),
splitPct, coverture { numerator, denominator }. Optional top-level blocks: pension, home,
alimony, plus spouseA / spouseB ({ otherTaxableIncome, postDivorceFilingStatus }),
marriageYears, remarriedA / remarriedB, exPiaA / exPiaB, targetSplitPct, taxYear,
plan_id. Anything omitted is defaulted server-side and reported back (see Step 3).
analyze_divorce_qdro({
accounts: [
{ label: "His 401k", type: "traditional", balance: 400000, owner: "A", recipient: "B" },
{ label: "Her Roth", type: "roth", balance: 100000, owner: "B", recipient: "B" },
{ label: "Brokerage", type: "taxable", balance: 300000, basis: 100000, owner: "A", recipient: "B" }
],
spouseB: { otherTaxableIncome: 60000, postDivorceFilingStatus: "single" },
marriageYears: 12,
targetSplitPct: 0.5
})
"When should I / my ex claim Social Security?" / divorced-spouse benefit timing → optimize_social_security
When the user wants to dig past the eligibility flag into claim-age timing for the divorced-spouse
benefit, chain to optimize_social_security. REQUIRED: the earnings/PIA inputs that tool documents.
Pass { plan_id } when you have one.
"What's the full tax picture of the settlement year?" → analyze_advanced_taxes
For the complete ordinary / LTCG / NIIT / AMT bite of the split (e.g. a taxable-account sale, a large
capital gain on a home sale), feed the figures into analyze_advanced_taxes. Pass { plan_id } when
available.
"Does the divorce change my estate exposure?" → analyze_estate_exposure
Splitting a joint estate halves each spouse's exemption picture. Use analyze_estate_exposure when
the user asks how the divorce affects estate-tax exposure or beneficiary planning. Pass { plan_id }.
Step 3 — Surface the result
For analyze_divorce_qdro:
- Lead with the headline — each spouse's gross vs after-tax award, the equalizing cash
payment (
from/amount), the pension PV split, the home buyout-vs-split-sale recommendation, the alimony after-tax cost, and the divorced-spouse SS eligibility flag. - Read back
assumed_value[]— a structured array of{ field, value, reason }for every default the engine applied (e.g.sellingCostPct,discountRate,targetSplitPct,leaverSharePct,ssClaimAge, and the HoH→single mapping flag). Surface these so the user can correct any silent assumption and re-call with overrides. - Read back
disclosures[]— the QDRO / transfer-incident-to-divorce treatment, the §121 dual $250k exclusion, the post-2019 TCJA alimony change, the HoH→single federal-tax approximation, and the real-dollar PV convention. Present everything as a planning estimate, not tax or legal advice. next_actions[]/ chaining — follow server-suggested chains; otherwise suggestoptimize_social_security(divorced-spouse claim timing),analyze_advanced_taxes(full settlement-year tax bite), orgenerate_financial_planfor ashare_url.share_url—analyze_divorce_qdroemits one only when a plan is in scope. For a reliable sharable link, mint aplan_idviagenerate_financial_plan(Step 1) and surface itsshare_url.
Recommended call sequence (typical session)
- (optional)
generate_financial_plan→ captureplan_id+share_url. analyze_divorce_qdrowith the accounts + agreed split (and{ plan_id }if minted).- Surface headline +
assumed_value[]+disclosures[]. - Chain on demand →
optimize_social_security,analyze_advanced_taxes,analyze_estate_exposure.
Fictional examples
1. "We're divorcing after 12 years. He has a $400k 401(k), I have a $100k Roth, and there's a
$300k brokerage (basis $100k). We agreed 50/50 and I take the splits — what's the equalizing payment?"
→ analyze_divorce_qdro({ accounts: [{ label:"His 401k", type:"traditional", balance:400000, owner:"A", recipient:"B" }, { label:"Her Roth", type:"roth", balance:100000, owner:"B", recipient:"B" }, { label:"Brokerage", type:"taxable", balance:300000, basis:100000, owner:"A", recipient:"B" }], spouseB:{ otherTaxableIncome:60000, postDivorceFilingStatus:"single" }, marriageYears:12, targetSplitPct:0.5 }).
Lead with each spouse's after-tax award and the equalizingPayment (who pays whom), and flag that
the 12-year marriage clears the 10-year divorced-spouse Social Security rule. Read back
assumed_value[] (discount rate, target split) and disclosures[] (QDRO transfer-incident, TCJA).
2. "Should I keep the house (FMV $1M, mortgage $300k) or should we sell it?"
→ analyze_divorce_qdro({ accounts: [], home: { fairMarketValue: 1000000, mortgageBalance: 300000, costBasis: 500000, keeper: "A" } }).
Lead with the homeComparison — buyout cash-to-leaver vs the §121-split-sale after-tax per-spouse
proceeds (with the $440k gain fully inside the dual $500k exclusion → $0 LTCG) — and the
recommended path. Read back the assumed sellingCostPct and leaverSharePct.
3. "Was I married long enough to claim my ex's Social Security?"
→ analyze_divorce_qdro({ accounts: [], marriageYears: 9 }) returns tenYearRuleMet: false →
not eligible. With marriageYears: 12 (and not remarried) it flags eligible; add exPiaB to
estimate the benefit. For claim-age timing, chain to optimize_social_security.
(All examples use fictional figures — never reuse a real user's numbers in documentation.)
Notes
- All decimals are fractions; all dollars are today's (real) dollars; brackets/limits are ~2026.
- Pass
{ plan_id }to reuse a saved household model; any field you also pass is a shallow override. analyze_divorce_qdroreturns a structuredassumed_value[]({ field, value, reason }) and adisclosures[]string array — read both back so the user can correct silent assumptions.- Head-of-household maps to
singlefor the federal-tax helper (a documented approximation surfaced indisclosures[]); supplymfjBaselineIncometo also get the MFJ→single bracket-shift delta. - This is a high-stakes deterministic valuation, not legal or tax advice. Planning estimates only; confirm the actual split with a QDRO attorney and tax professional.