# Fpa Capture Correction

> 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.

- **Type:** Skill
- **Install:** `agentstack add skill-jeffbrines-openfpa-fpa-capture-correction`
- **Verified:** Yes — security-reviewed for prompt injection and unsafe behavior
- **Seller:** [JeffBrines](https://agentstack.voostack.com/s/jeffbrines)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [JeffBrines](https://github.com/JeffBrines)
- **Source:** https://github.com/JeffBrines/openfpa/tree/main/skills/fpa-capture-correction
- **Website:** https://www.guiderail.io

## Install

```sh
agentstack add skill-jeffbrines-openfpa-fpa-capture-correction
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# 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
   `-` string (e.g. `2026-06-08-december-seasonality`) - `save_correction`
   uses the whole slug as the filename (`.fpa/corrections/.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).

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [JeffBrines](https://github.com/JeffBrines)
- **Source:** [JeffBrines/openfpa](https://github.com/JeffBrines/openfpa)
- **License:** MIT
- **Homepage:** https://www.guiderail.io

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** no
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: passed — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-jeffbrines-openfpa-fpa-capture-correction
- Seller: https://agentstack.voostack.com/s/jeffbrines
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
