fof-preflight
Diff-aware guardrail checker for Fear-of-Falling (FOF) changes; fails closed on raw data edits, Kxx intro/req_cols mismatches, and output discipline risks.
When & Why to Use This Skill
The fof-preflight skill is a specialized, diff-aware guardrail checker designed to enforce data integrity and coding standards within the Fear-of-Falling (FOF) project. It operates on a 'fail-closed' principle, automatically auditing Git changes to prevent unauthorized raw data modifications, ensure metadata consistency in R scripts, and maintain strict output directory discipline.
Use Cases
- Data Integrity Protection: Automatically blocks any accidental edits or deletions within raw data directories (e.g., data/ or data/external/) to maintain the 'source of truth'.
- R Script Standardization: Validates that all Kxx R scripts contain mandatory intro blocks and that 'req_cols' definitions match the required variable lists, ensuring script reliability.
- Output Path Enforcement: Detects and flags suspicious output usage that falls outside of designated project structures, preventing repository clutter and disorganized data exports.
- Pre-commit Safety Auditing: Serves as a local or CI/CD gatekeeper that provides immediate PASS/FAIL feedback on code changes based on predefined QC checklists and policy sources.
| name | fof-preflight |
|---|---|
| description | Diff-aware guardrail checker for Fear-of-Falling (FOF) changes; fails closed on raw data edits, Kxx intro/req_cols mismatches, and output discipline risks. |
| short-description | Diff-aware FOF guardrail preflight (fail-closed). |
How to use
Run from the Fear-of-Falling subproject root or repo root.
Example:
python .codex/skills/fof-preflight/scripts/preflight.py
Inputs
- Git working tree diff (
git diff --name-only --diff-filter=ACMRTUXB). - Kxx R scripts under
Fear-of-Falling/R-scripts/(orR-scripts/). - Policy sources:
Fear-of-Falling/CLAUDE.md,Fear-of-Falling/QC_CHECKLIST.md.
Outputs
- Console summary with PASS/WARN/FAIL.
- Exit code 0 only if no FAIL conditions are found.
Failure modes
- Not a git repo or diff fails.
- Any change under
data/ordata/external/. - Kxx
.Rscripts missing the standard intro/Required vars block. - Required vars list cannot be parsed unambiguously.
req_cols <- c(...)cannot be parsed or has multiple definitions.- Required vars list does not match
req_cols1:1. - Suspicious
outputs/usage not underR-scripts/<script>/outputs/.
Safety/guardrails
- FAIL CLOSED: if a rule cannot be verified, the script exits 1 with context.
- No external APIs or network calls.
- Does not modify data or outputs.
- If other raw-data root paths are discovered in docs/scripts, do not add them without explicit user confirmation (fail closed and request clarification).
Sources: Fear-of-Falling/CLAUDE.md, Fear-of-Falling/QC_CHECKLIST.md.