Skip to content

aerofel/prep-633

Repository files navigation

prep-633

A Claude Code Skill that converts an Operational Flight Plan (OFP) — supplied as a PDF, plain text, or pasted block — into validated ARINC 633-2 nav-log XML, ready for ingestion by an EFB or by starLOG. The skill emits XML that conforms to a self-contained subset XSD inspired by the publicly documented Jeppesen Electronic Flight Folder schema, then runs a three-layer validation gate (xmllint -> business rules -> LLM self-check) before returning any output.

Disclaimer

This skill produces XML inspired by and referencing the publicly documented Jeppesen Electronic Flight Folder XSD which embeds ARINC 633-1 / 633-2 flight plan payloads. It is NOT the official ARINC 633-2 XSD from SAE-ITC / AEEC. Not affiliated with or endorsed by Jeppesen, Boeing, or SAE-ITC. For personal and reference use; verify against your dispatch provider's output before any operational use.

What it does

  • Reads a navtech / Jeppesen / Lido / SITA OFP and extracts header, waypoint sequence, fuel block, weights, ETOPS, step-climb profile.
  • Emits a single XML document that validates against references/arinc633-2-navlog.xsd.
  • Runs three validation layers and refuses (with a structured explanation) on unreadable inputs or missing critical fields.

Install

The skill lives outside this repo's consumer (starLOG) — check it out anywhere, then symlink it into Claude Code's skill directory.

macOS / Linux

git clone https://github.com/aerofel/prep-633.git ~/Sites/Skills/prep-633
mkdir -p ~/.claude/skills
ln -s ~/Sites/Skills/prep-633 ~/.claude/skills/prep-633

That's it — Claude Code (terminal and the Code panel inside Claude Desktop) reads from ~/.claude/skills/ automatically. Edit anywhere under ~/Sites/Skills/prep-633/, save, the change is live; no restart.

Note: Claude Desktop's standalone chat (without the Code panel) does not load file-based skills. A future v2 will ship an MCP wrapper for Desktop reach.

Validation

cd ~/Sites/Skills/prep-633
validators/validate.sh examples/minimal.xml examples/sample-anonymized.xml
python3 validators/business-rules.py examples/minimal.xml examples/sample-anonymized.xml

The first command requires xmllint (ships with macOS, apt-get install libxml2-utils on Debian / Ubuntu). The second requires Python 3.11+ — no third-party packages.

Repository layout

prep-633/
├── SKILL.md                      directives (read by Claude Code)
├── README.md                     this file
├── CHANGELOG.md                  user-facing version history
├── LEARNING.md                   internal journal
├── LICENSE                       MIT
├── references/
│   ├── arinc633-2-navlog.xsd     subset XSD (self-contained, no imports)
│   ├── field-definitions.md      element-by-element field reference
│   ├── icao-2012-fpl-mapping.md  ICAO 2012 FPL field -> 633 element
│   └── enums.md                  cruise modes, units, PBN equipment codes
├── examples/
│   ├── minimal.xml               smallest valid 633-2 nav-log
│   ├── sample-anonymized.xml     full long-haul anonymized example
│   └── sample-anonymized.txt     matching synthetic OFP text input
├── test-fixtures/                local-only, gitignored (real OFPs)
├── validators/
│   ├── validate.sh               Layer 1: xmllint
│   └── business-rules.py         Layer 2: arithmetic + monotonicity
├── scripts/
│   ├── anonymize.py              real OFP/XML -> safe-to-commit version
│   └── push.sh                   git push origin main convenience wrapper
└── .github/                      CI + issue templates

Contributing

OFP formats vary widely between dispatch providers. Community samples are gold for hardening the skill — but never commit real OFPs.

To contribute a new format:

  1. Locate a real OFP (PDF or text) you have permission to share.
  2. Run python3 scripts/anonymize.py <real> <anonymized> and review the diff manually. v0.1 is a string-replace stub — automated PII detection arrives in v1.1.
  3. Confirm the result is free of real callsigns, registrations, operator names, CFP numbers, passenger / cargo data, watermarks.
  4. Open an issue with the new-ofp-format.md template, attach the anonymized OFP and (if you can) a hand-crafted XML pair.
  5. CI will validate any added examples/*.xml against the XSD and the business rules on push.

For bugs, use the bug.md template. Schema gaps that block valid OFPs from being expressible should be logged as schema issues, not bugs.

License

MIT — see LICENSE. The Jeppesen Electronic Flight Folder XSD remains © Jeppesen / Boeing Digital Aviation Solutions; this repo's arinc633-2-navlog.xsd is a clean-room subset modelled on the semantics documented in their public spec, not a redistribution of their XSD file.

About

Prep skill for 633 format

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages