| name | fpf-sync |
| description | Sync the fpf-core skill from the canonical FPF-Spec.md monolith.
Use when: (1) the FPF specification has been updated (git pull shows new commits),
(2) the fpf-core skill references/ are stale or show wrong counts,
(3) running scheduled maintenance on LFW skills.
Self-contained — bundles decompose_fpf.py + _common.py directly.
No dependencies on external skills. Works only with the local skill at
`../fpf-core/` (relative to this skill) — NOT the global user skill.
|
FPF Core Skill Sync
Bounded context: Keeping ../fpf-core/ in sync with the canonical FPF monolith ../../FPF-Spec.md.
Self-contained — all decomposition logic is bundled in scripts/. No external skill dependencies. Requires only Python 3.10+ and git in PATH.
Quick Start
python scripts/sync_fpf_core.py --check
python scripts/sync_fpf_core.py
python scripts/sync_fpf_core.py --dry-run
python scripts/sync_fpf_core.py --no-git
Workflow
The script performs these steps in order:
git pull in repo root (../..) — fetch latest FPF-Spec.md
- Compare hashes —
FPF-Spec.md vs skills/fpf-core/assets/FPF-Spec.md. If identical, exit cleanly
- Copy monolith — updated
FPF-Spec.md → skills/fpf-core/assets/FPF-Spec.md
- Decompose — calls bundled
decompose_fpf.parse_fpf_spec() to rebuild all references/*.md + INDEX.md from the monolith. Uses idempotent writes — only changed files are overwritten
- Update
SKILL.md — refreshes line count (e.g. 100K+) and reference counts (291 pattern reference files + INDEX + 34 context sections)
- Report — prints counts, warnings, and errors
Scripts
| File | Role | Size |
|---|
sync_fpf_core.py | Orchestrator: git pull → diff → copy → decompose → update SKILL.md | 7 KB |
decompose_fpf.py | FPF monolith parser: ToC parsing, :End-marker boundary detection, pattern extraction | 15 KB |
_common.py | Shared utilities: reference formatting, YAML frontmatter, idempotent writes, INDEX generation | 7 KB |
errors.py | Error types for pattern extraction | 1 KB |
Error Handling
| Situation | Script behavior |
|---|
git pull fails (network, auth) | Warning — continues with local state |
Source FPF-Spec.md missing | Error — exits with code 2 |
| Decomposition produces warnings | Printed — exits with code 0 (non-fatal) |
| Decomposition produces errors | Printed — exits with code 1 |
| No changes detected | Exits cleanly with code 0 |
SDC Alignment
This skill implements SDC.SyncDiscipline (Spec-Decomposer LPF) for the specific case of the fpf-core skill:
- Unidirectional sync (
AS.10:4.1): monolith → references. Never the reverse.
- Carrier split (
AS.4:4.1): agent reads references/, human edits assets/FPF-Spec.md
- Full rebuild on every change: copy monolith → decompose → update dispatcher
- Idempotent writes:
decompose_fpf.py skips unchanged files
Evolution
If the user is dissatisfied with the result or the FPF-Spec structure changes, offer to update this skill's script or its SKILL.md instructions.