fof-preflight

Tupatuko2023's avatarfrom Tupatuko2023

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.

⭐0stars🔀0forks📁View on GitHub🕐Updated Jan 3, 2026

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.
namefof-preflight
descriptionDiff-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-descriptionDiff-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/ (or R-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/ or data/external/.
  • Kxx .R scripts 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_cols 1:1.
  • Suspicious outputs/ usage not under R-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.