$npx -y skills add PolicyEngine/policyengine-claude --skill policyengine-prior-scoresCurated anchor list of PolicyEngine's previously-published scored reforms, plus the map of the real prior-scores infrastructure in this repo (presets, the scorekeepers registry, the /prior-scores command, and the prior-scores-finder agent). Use to find a benchmark magnitude to an
| 1 | # PolicyEngine prior scores |
| 2 | |
| 3 | Finding a prior score to anchor a new analysis has two parts: a **curated anchor list** of |
| 4 | notable PE reforms (below, with URLs) and the **real infrastructure** in this repo that |
| 5 | enumerates presets, external scorekeepers, and local archived runs. Earlier versions of this |
| 6 | skill described a `data/prior-scores.json` file with `get_priors_by_program()` query functions — |
| 7 | those never existed. The sections below point only at things that are actually on disk or live. |
| 8 | |
| 9 | ## When to use |
| 10 | |
| 11 | - `/analyze-policy` Stage 3 (find prior scores) and Stage 5 (compare the microsim to them). |
| 12 | - The `/prior-scores` command (external-benchmark research without running the microsim). |
| 13 | - The `prior-scores-finder` agent's Tier-1 lookup. |
| 14 | - Writing a research post and citing PE's prior work on a similar reform. |
| 15 | |
| 16 | ## Real infrastructure in this repo |
| 17 | |
| 18 | ### Presets — named reform-dicts with published scores |
| 19 | |
| 20 | `presets/reforms/*.yaml` and `presets/baselines/*.yaml` are callable-by-name reform/baseline |
| 21 | dicts. A preset may carry a `published_scores` block recording what external sources scored that |
| 22 | exact shape — which is what makes external corroboration turn-key. |
| 23 | |
| 24 | ```bash |
| 25 | python3 scripts/presets.py list # all presets |
| 26 | python3 scripts/presets.py list --category reform --country us |
| 27 | python3 scripts/presets.py show arpa-ctc-restoration # prints the reform_dict + published_scores |
| 28 | ``` |
| 29 | |
| 30 | ```python |
| 31 | from scripts.presets import load_preset |
| 32 | preset = load_preset("arpa-ctc-restoration") |
| 33 | preset["reform_dict"] # ready to pass as a reform |
| 34 | preset["published_scores"] # [{source: JCT, ten_year_billion: 1100, ...}, ...] |
| 35 | ``` |
| 36 | |
| 37 | Presets on disk today (verify with `python3 scripts/presets.py list` — `load_preset` raises |
| 38 | on names that don't exist): reforms `arpa-ctc-restoration`, `obbba-salt-bump`; baseline |
| 39 | `tcja-extension`. A `pre-obbba` baseline is wanted but not yet authored. Add a preset by copying |
| 40 | a nearby file and, if any external source scored the shape, filling in `published_scores` — see |
| 41 | `presets/README.md`. |
| 42 | |
| 43 | ### Scorekeepers — the external-benchmark registry |
| 44 | |
| 45 | `presets/scorekeepers.yaml` enumerates the official fiscal offices (Tier 2) and think-tanks |
| 46 | (Tier 3) to consult per jurisdiction and domain — so the search casts a wide, non-US-only net |
| 47 | without hardcoding sources into agents. Add a scorekeeper by appending to the YAML; no code |
| 48 | change. |
| 49 | |
| 50 | ```bash |
| 51 | python3 scripts/scorekeepers.py list --country us --tier 2 # JCT, CBO, OTA, SSA-OCACT |
| 52 | python3 scripts/scorekeepers.py list --country us --tier 3 # CRFB, TPC, Tax Foundation, CBPP, ITEP, ... |
| 53 | python3 scripts/scorekeepers.py list --country uk --tier 3 # IFS, Resolution Foundation, IPPR, NIESR, ... |
| 54 | python3 scripts/scorekeepers.py list --country ca # PBO, DoF-Canada, CD Howe, IRPP, ... |
| 55 | ``` |
| 56 | |
| 57 | ```python |
| 58 | from scripts.scorekeepers import list_scorekeepers |
| 59 | tier_2 = list_scorekeepers(country="us", tier=2) |
| 60 | ``` |
| 61 | |
| 62 | Each entry has `search_hints` (e.g. `site:crfb.org`) for constructing WebSearch queries, plus |
| 63 | `domains` and `caveats`. |
| 64 | |
| 65 | ### Command and agent |
| 66 | |
| 67 | - **`/prior-scores`** (`targets/claude/commands/prior-scores.md`) — standalone external-benchmark |
| 68 | research: loads the scorekeepers registry filtered by country/tier/domain, also consults the |
| 69 | local `analyses/` archive (Tier 0, via `scripts/analyses_kb.py`) and PE published research |
| 70 | (Tier 1, this skill), and returns a ranked benchmark cluster. It does NOT run the microsim. |
| 71 | - **`prior-scores-finder`** (`targets/claude/agents/prior-scores-finder.md`) — the agent behind |
| 72 | Stage 3. It runs BLIND to the current run's own microsim result (pre-registration), records |
| 73 | each source **with its framing** at registration time, and requires all tiers: Tier 0 (local |
| 74 | archive), Tier 1 (PE published — this skill), Tier 2 (official), Tier 3 (think-tanks). A PE |
| 75 | prior does not excuse skipping the external tiers. |
| 76 | |
| 77 | ## Curated anchor reforms |
| 78 | |
| 79 | Notable PE-published scores, kept as quick anchors. Verify the live number before quoting — these |
| 80 | are pointers, not a maintained datab |