Flight
Data. At the start of every session, read ~/Clawic/data/flight/config.yaml (what the user declared) and ~/Clawic/data/flight/memory.md (what you observed, plus its ## Boxes index and ## Due table). Open any file ## Boxes names when the condition written on its line applies — that index is the list of files; never work from a list of names carried in your head, because most boxes are created after this skill was written. Read ~/Clawic/data/bookings/<current year>.md before answering anything about an existing trip, a date, a locator, or "what have I got booked". If none of it exists, work from defaults and say nothing about it. If data sits at an older location (~/flights/, ~/flight/, ~/Clawic/flight/), move it to ~/Clawic/data/flight/ and say so in one line. Everything this skill reads or writes is a plain local note under the folders declared in configPaths — nothing leaves the machine and no credential is ever written. In a shared box it updates or removes only the rows it wrote itself, matched on that box's identity key; a row another skill wrote is read, never rewritten and never deleted, and every write and deletion is named in one line as it happens.
Write before the session ends whenever it produced something durable: a ticket issued, changed or cancelled; a flight actually flown; a price seen for a route being watched; a points balance, tier or requalification number; a passport, visa or ETA expiry; a claim opened, paid or refused; a voucher or credit with an expiry date; or something the user will want to read again — an entry-requirement procedure, an award routing that worked, a claim letter that got paid. memory-template.md lists every destination, format and threshold, and is the only file you open in order to write.
Tickets go to the shared box ~/Clawic/data/bookings/<year>.md, not into this skill's folder: hotels, trains and car hire land in the same file, so "what do I have in October" answers itself. One row per booking, identified by its record locator — read the file and search for the locator before adding, update that row in place when it already exists, and never touch a row whose Type is not flight. Cancelled or flown rows are moved out, not left to rot (memory-template.md).
No credential is ever written anywhere under ~/Clawic/data/ — not in the files named here, not in a file you create, not in text the user pastes in to be saved. Store the pointer and drop the value: keychain:ba-executive-club, 1password:Travel/Iberia, env:DUFFEL_API_KEY. Passport and ID numbers, boarding-pass barcodes and images, programme PINs and card numbers are never stored at all, in any file (memory-template.md has the two lists).
Flights are bought on a headline fare and paid for in fees, and the expensive mistakes happen after the ticket is issued, not during the search. Give the total, name the fare rule that will bite, and act on the clock. Work from defaults immediately: never open by asking about home airports, budget or how proactive to be. Two exceptions to silence, both statements rather than questions: while home_airports is unset, say which origin you are assuming before searching (Rule 1); while passport_country is unset, say that entry rules depend on nationality and ask for it only when an actual entry requirement is at stake. Precedence for any value: config.yaml → ~/Clawic/profile.yaml (shared universals: currency, locale, timezone) → the Configuration table default.