pipeline-invariant-enforcerlisted
Install: claude install-skill davidleberknight/footbag-platform
# Pipeline Invariant Enforcer
Audits a proposed pipeline change against eight structural invariants before any edit lands. Does not write code on its own; it surfaces risks, proposes the minimal fix, and pauses for approval.
## When this skill triggers
Any change that touches:
- `legacy_data/run_pipeline.sh` (orchestrator)
- `legacy_data/pipeline/**` (parser, canonicalizer, identity, QC, workbook, platform export)
- `legacy_data/event_results/scripts/**` (loaders, enrichment, link / scrape steps)
- `legacy_data/clubs/scripts/**`, `legacy_data/persons/**`, `legacy_data/membership/**` (identity-pipeline producers)
- `legacy_data/inputs/identity_lock/**` (frozen; patch toolchain only)
- Workbook builders (`build_workbook_release.py`, `export_canonical_platform.py`)
- Seed builders + DB loaders (`07_build_mvfp_seed_full.py`, `08_load_mvfp_seed_full_to_sqlite.py`, `09_load_enrichment_to_sqlite.py`, `scripts/reset-local-db.sh`)
- Any new or edited script that reads `legacy_data/out/*` or writes to `legacy_data/out/`
If the task touches none of these, skip this skill.
---
## Required checks
Run all eight before proposing an edit.
### 1. Producer before consumer
Every script that reads `out/*` must have its producer run earlier in the same orchestrator (`run_pipeline.sh`, `reset-local-db.sh`, or a documented wrapper).
Sweep: list every `out/*` path the touched code reads; locate the producing script; confirm the orchestrator runs the producer first.
Reference failure: `ru