Use when a human reviewing a forecast catches something off ("December always spikes", "you're double-counting deferred revenue", "that Q3 number was a one-time contract") - captures it as a durable, typed correction in the company's memory so future forecasts are grounded by it.
Scanned 9/6/2026
Install to Claude Code
npx -y skills add JeffBrines/openfpa --skill fpa-capture-correction --agent claude-codeInstalls into .claude/skills of the current project.
Are you the author of Fpa Capture Correction?
Add the live security badge to your README — it updates automatically with every re-scan.
[](https://www.skillsdirectory.com/skills/jeffbrines-fpa-capture-correction)More formats (shields.io, HTML) on the badges page.
---
name: fpa-capture-correction
description: Use when a human reviewing a forecast catches something off ("December always spikes", "you're double-counting deferred revenue", "that Q3 number was a one-time contract") - captures it as a durable, typed correction in the company's memory so future forecasts are grounded by it.
---
# Capture a Correction (Operate)
## Overview
A human reviewing a forecast is the highest-signal feedback there is - they catch
structural errors and domain knowledge the backtest can't see, and catch them *now*.
This skill turns that into durable memory: a typed correction in `.fpa/corrections/`
that grounds every future forecast.
**Core principle:** the human is the authority; capture, confirm interpretation once,
then it persists. Everything is plain markdown the user owns.
## The three correction types
- **parametric** - a concrete driver fix ("December runs ~2× a normal month"). Becomes
an `override` (a config path + value) applied to every future forecast via
`pyfpa.apply_corrections`.
- **structural** - a methodology fix ("you're double-counting deferred revenue"). A
*pre-ratified* structural proposal (the human authored it) - route it to
**fpa-learn-business** to generate the skill/model change; do NOT wait for backtest misses.
- **context** - a one-time-item note ("that Q3 spike was a one-off contract"). Annotates so
**fpa-cfo-judgment**'s one-time screen keeps the backtest from "learning" a one-off.
## Workflow
1. **Classify** the correction (parametric / structural / context).
2. **Identify the target** - the driver path (e.g. `channels[*].seasonality[11]`,
`working_capital.dio_days`), line, or profile area. For parametric, draft the concrete
`override: {path, value}`.
3. **Write** the correction with `pyfpa.save_correction`. Set `slug` to a
`<date>-<short-name>` string (e.g. `2026-06-08-december-seasonality`) - `save_correction`
uses the whole slug as the filename (`.fpa/corrections/<slug>.md`), so keep the date in
it. Include frontmatter (`type`, `target`, `status`, `date`, `override`) and a markdown
body (`**Was off:** … **Correction:** … **Why:** [[…]]`), linking to the assumption/profile
it corrects with `[[wikilinks]]`.
4. **Confirm interpretation.** Echo back the concrete change ("I'll set December
seasonality to 2.0 on all channels - right?"). Only on confirmation set
`status: applied`.
5. **Keep `.fpa/MEMORY.md` current** - the vault index (see below).
## Applying corrections
When building any forecast, `pyfpa.apply_corrections(cfg, load_corrections(".fpa/corrections"))`
folds the applied parametric corrections into the config. The per-client loop refines from
there - corrections are *seeds*, not mandates.
## The `.fpa/` vault (`MEMORY.md` index)
Keep a `.fpa/MEMORY.md` that orients a human, Obsidian, or Claude:
- `business-profile.md` - what we know about the business.
- `corrections/` - human corrections (this skill).
- `forecasts/*.snapshot.yaml`, `scorecard.md` - forecast snapshots + backtest track record.
- `learnings.md` - accepted model changes.
All plain markdown - open it in Obsidian if you like, but never required.
## Guardrails
- Confirm interpretation before `applied`. Reversible via `status` (`open`/`applied`/`superseded`).
- The backtest *monitors* applied corrections and may flag a stale one - it never reverts;
the human decides.
## Next
Correction captured → **fpa-monthly-close** / **fpa-board-briefing** (re-run grounded by it).
Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.
No comments yet. Be the first to comment!