Extract Parameters from a PlanExe Extraction-Input Digest
Overview
A drop-in alternative to extract-parameters-from-full that reads the digest
produced by prepare_extract_input.py (see
experiments/napkin_math/prepare_extract_input.py) rather than the full
PlanExe HTML report.
The digest is the 137-recommended extraction bundle in 137's order:
Executive Summary, Project Plan, Selected Scenario, Assumptions, Review
Plan, Premortem, Expert Criticism, Data Collection. Strategic Decisions is
replaced by Selected Scenario per proposal 139.
It mixes two formats:
- Compressed sections (Selected Scenario, Review Plan, Premortem,
Expert Criticism) — produced by
compress_report_section. Bullets carry
inline epistemic tags of the form
[<source_status> | e=N r=N | quote: verified|unverified].
- Raw sections (Executive Summary, Project Plan, Assumptions, Data
Collection) — passed through unchanged from the PlanExe source. No
inline tags.
The system prompt at system-prompt.txt explains how to read both
formats.
Output schema and hard limits are identical to extract-parameters-from-full, so the
two skills can be compared head-to-head on the same plan.
When to Use
- The user has run
prepare_extract_input.py against a PlanExe sample and
wants parameters extracted from the resulting digest
- The user is comparing whether this pipeline produces better parameters
than feeding the full HTML report
For plain PlanExe HTML/text reports, use extract-parameters-from-full instead.
Workflow
- Get the digest path. Usually
experiments/napkin_math/output/<plan-name>/extract_parameters_input.md.
If the user did not provide one, ask. Do not guess.
- Read
system-prompt.txt (sibling of this SKILL.md). Treat it as the
authoritative extraction instructions.
- Read the digest file. Mid-sized — much smaller than a raw PlanExe
HTML report. Compressed sections (Selected Scenario, Review Plan,
Premortem, Expert Criticism) carry inline tags; raw sections (Executive
Summary, Project Plan, Assumptions, Data Collection) do not.
- Canonicalize across sections. The four compressed sections often
surface the same real-world quantity under different phrasings
("minimum viable rental rate" / "off-peak hourly price" / "speculative
high hourly rate" all name one rate). Merge near-duplicates into a
single canonical snake_case id before writing the JSON. Prefer
framings closest to a modelling primitive (rate, count, fraction,
amount-per-period). Two ids for the same quantity will silently
fragment downstream bounds and Monte Carlo correlations.
- Produce the JSON following the schema at the end of
system-prompt.txt.
For compressed sections, map the inline source_status tags to the JSON
value_type field: [explicit] → explicit, [derived] → derived,
[inferred] → inferred, [missing] items belong in
missing_values_to_estimate, [stress_test] items are
scenario-stress inputs (not baseline key_values). For raw sections,
apply general parameter-extraction triage.
- Output destination. Default: print JSON to the chat. If the user
asks for a file, write to the path they specify. Default suggestion:
<digest-basename>.parameters.json next to the digest.
Hard Rules (re-stated for emphasis)
- JSON only. No markdown fences, no prose, no explanation.
- Use the digest's tags where they exist. For compressed sections,
prefer
[explicit] + quote: verified items for baseline key_values.
Treat quote: unverified items with extra scepticism. [missing]
items belong in missing_values_to_estimate. [stress_test] items are
downside-scenario inputs, not plan facts.
- For raw sections (Executive Summary, Project Plan, Assumptions,
Data Collection), apply general triage: prefer numeric anchors,
deadlines, denominators, and explicit gate criteria.
- Canonicalize across sections. The compressor over-produces on
purpose; collapsing cross-section near-duplicates into one canonical
id is your job at this stage, not its job. Never preserve two ids for
the same real-world quantity.
- Percentages as fractions between 0 and 1 with
unit: "fraction".
- No invented ids in
formula_hint — every variable must be declared
in key_values, missing_values_to_estimate, or the object's own
depends_on.
- Every entry with a non-null
formula_hint MUST also declare output_name
(snake_case id of the computed value) and output_unit (e.g. "DKK",
"people", "fraction"). Downstream consumers — generate-calculations,
run-scenarios, monte-carlo — read these directly and do not parse
formula_hint or pattern-match on tokens. The LLM is the single authority
for both fields.
Reference
- System prompt (authoritative):
system-prompt.txt
- Producer of the input digest:
experiments/napkin_math/prepare_extract_input.py
- Parallel skill for full HTML reports:
../extract-parameters-from-full/SKILL.md
- Background:
docs/proposals/137-section_filtering_for_parameter_extraction.md,
docs/proposals/139-compress-for-monte-carlo.md
Source: PlanExeOrg/PlanExe — distributed by TomeVault.
1---2name: extract-parameters-from-digest3description: Use when the user wants to extract parameters from a PlanExe extraction-input digest (the markdown produced by experiments/napkin_math/prepare_extract_input.py — the 137-recommended section bundle, with the four "Keep or compress" sections compressed) instead of the full PlanExe HTML report4---56# Extract Parameters from a PlanExe Extraction-Input Digest78## Overview910A drop-in alternative to `extract-parameters-from-full` that reads the digest11produced by `prepare_extract_input.py` (see12`experiments/napkin_math/prepare_extract_input.py`) rather than the full13PlanExe HTML report.1415The digest is the 137-recommended extraction bundle in 137's order:16Executive Summary, Project Plan, Selected Scenario, Assumptions, Review17Plan, Premortem, Expert Criticism, Data Collection. Strategic Decisions is18replaced by Selected Scenario per proposal 139.1920It mixes two formats:2122- **Compressed sections** (Selected Scenario, Review Plan, Premortem,23 Expert Criticism) — produced by `compress_report_section`. Bullets carry24 inline epistemic tags of the form25 `[<source_status> | e=N r=N | quote: verified|unverified]`.26- **Raw sections** (Executive Summary, Project Plan, Assumptions, Data27 Collection) — passed through unchanged from the PlanExe source. No28 inline tags.2930The system prompt at `system-prompt.txt` explains how to read both31formats.3233Output schema and hard limits are identical to `extract-parameters-from-full`, so the34two skills can be compared head-to-head on the same plan.3536## When to Use3738- The user has run `prepare_extract_input.py` against a PlanExe sample and39 wants parameters extracted from the resulting digest40- The user is comparing whether this pipeline produces better parameters41 than feeding the full HTML report4243For plain PlanExe HTML/text reports, use `extract-parameters-from-full` instead.4445## Workflow46471. **Get the digest path.** Usually48 `experiments/napkin_math/output/<plan-name>/extract_parameters_input.md`.49 If the user did not provide one, ask. Do not guess.502. **Read `system-prompt.txt`** (sibling of this SKILL.md). Treat it as the51 authoritative extraction instructions.523. **Read the digest file.** Mid-sized — much smaller than a raw PlanExe53 HTML report. Compressed sections (Selected Scenario, Review Plan,54 Premortem, Expert Criticism) carry inline tags; raw sections (Executive55 Summary, Project Plan, Assumptions, Data Collection) do not.564. **Canonicalize across sections.** The four compressed sections often57 surface the same real-world quantity under different phrasings58 ("minimum viable rental rate" / "off-peak hourly price" / "speculative59 high hourly rate" all name one rate). Merge near-duplicates into a60 single canonical snake_case id before writing the JSON. Prefer61 framings closest to a modelling primitive (rate, count, fraction,62 amount-per-period). Two ids for the same quantity will silently63 fragment downstream bounds and Monte Carlo correlations.645. **Produce the JSON** following the schema at the end of `system-prompt.txt`.65 For compressed sections, map the inline `source_status` tags to the JSON66 `value_type` field: `[explicit]` → `explicit`, `[derived]` → `derived`,67 `[inferred]` → `inferred`, `[missing]` items belong in68 `missing_values_to_estimate`, `[stress_test]` items are69 scenario-stress inputs (not baseline `key_values`). For raw sections,70 apply general parameter-extraction triage.716. **Output destination.** Default: print JSON to the chat. If the user72 asks for a file, write to the path they specify. Default suggestion:73 `<digest-basename>.parameters.json` next to the digest.7475## Hard Rules (re-stated for emphasis)7677- **JSON only.** No markdown fences, no prose, no explanation.78- **Use the digest's tags where they exist.** For compressed sections,79 prefer `[explicit] + quote: verified` items for baseline `key_values`.80 Treat `quote: unverified` items with extra scepticism. `[missing]`81 items belong in `missing_values_to_estimate`. `[stress_test]` items are82 downside-scenario inputs, not plan facts.83- **For raw sections** (Executive Summary, Project Plan, Assumptions,84 Data Collection), apply general triage: prefer numeric anchors,85 deadlines, denominators, and explicit gate criteria.86- **Canonicalize across sections.** The compressor over-produces on87 purpose; collapsing cross-section near-duplicates into one canonical88 id is your job at this stage, not its job. Never preserve two ids for89 the same real-world quantity.90- **Percentages as fractions** between 0 and 1 with `unit: "fraction"`.91- **No invented ids in `formula_hint`** — every variable must be declared92 in `key_values`, `missing_values_to_estimate`, or the object's own93 `depends_on`.94- **Every entry with a non-null `formula_hint` MUST also declare `output_name`95 (snake_case id of the computed value) and `output_unit`** (e.g. `"DKK"`,96 `"people"`, `"fraction"`). Downstream consumers — generate-calculations,97 run-scenarios, monte-carlo — read these directly and do not parse98 `formula_hint` or pattern-match on tokens. The LLM is the single authority99 for both fields.100101## Reference102103- System prompt (authoritative): `system-prompt.txt`104- Producer of the input digest: `experiments/napkin_math/prepare_extract_input.py`105- Parallel skill for full HTML reports: `../extract-parameters-from-full/SKILL.md`106- Background: `docs/proposals/137-section_filtering_for_parameter_extraction.md`,107 `docs/proposals/139-compress-for-monte-carlo.md`108109---110> Source: [PlanExeOrg/PlanExe](https://github.com/PlanExeOrg/PlanExe) — distributed by [TomeVault](https://tomevault.io).111<!-- tomevault:4.0:skill_md:2026-06-24 -->