---
name: personal_cfo
description: Builds personal financial scenario models for the big money decisions: rent-vs-buy break-evens, retirement withdrawal projections (fixed-rate and Guyton-Klinger guardrails), Social Security claiming math, and emergency-fund targets. Triggers when someone asks whether to buy a house or keep renting, how much they can safely spend in retirement, when to claim Social Security, or how big a cash buffer to keep. Ships a Python CLI plus fill-in worksheets and worked scenarios.
---

## Purpose

Most personal-finance questions are really modeling questions with missing
inputs. This skill turns "should I buy?" or "can I spend $60k a year?" into a
worksheet, a filled-in model, and an honest read of what the model does and
does not know. It is an operator skill: the triggers below map to a concrete
subcommand, not to a lecture.

## Workflow

1. Match the user's question to a trigger and subcommand:
   | User asks | Run |
   |---|---|
   | Should I buy a house or keep renting? | `rent-buy` |
   | How much can I spend per year in retirement? / Will my money last? | `decumulate` |
   | When should I claim Social Security? | `social-security` |
   | How big should my emergency fund be? | `emergency-fund` |
2. Open `references/worksheets.md` and fill in the matching worksheet with the
   user's real numbers. Where a number is a guess (appreciation, returns,
   longevity), label it as one and plan to rerun with high and low versions.
3. Run the CLI with those numbers:
   `python3 personal_cfo.py <subcommand> [options]` (run with `--help` per subcommand).
4. Report the result with the assumptions attached, plus one sensitivity check:
   rerun with the most uncertain assumption moved against the user's hoped-for
   answer (higher rate for buyers, lower returns for retirees). If the answer
   flips, say so; that is the finding.
5. Never present a model output as advice. Every report ends with the line:
   "Educational scenario model, not financial advice."

## Output Contract

- The worksheet with the user's actual numbers filled in.
- The CLI output for the matching scenario, pasted or summarized.
- A plain-language read: what wins, by how much, and what would have to be
  true for the answer to change.
- The assumptions list and the one sensitivity rerun.
- The not-advice line. No exceptions.

## Operating Rules

- Every factual claim must come from `references/sources-and-formulas.md` or a
  fresh primary-source check. Never invent numbers, dates, quotes, or events.
  Unverifiable = cut it or frame it as opinion.
- The CLI computes; the agent does not hand-compute figures in prose. If the
  CLI output and your summary disagree, the CLI wins and you rerun it.
- For rent-vs-buy, always report BOTH break-evens (opportunity cost charged
  and not charged). Reporting only one is a silent lie about certainty.
- For decumulation, always report the 10th-percentile outcome alongside the
  median, and state that taxes and fees are excluded from the model.
- For Social Security, anchor on the user's SSA statement benefit if they have
  one; the `--pia` default in examples is illustrative only.
- Style: plain, direct, no em dashes, no filler. Numbers do the talking.
