Install
openclaw skills install @ivangdavila/travelRuns a traveler's standing system: dream list, passports and visas, Schengen day counts, bookings, points, budgets, and what broke last time. Use when someone names a destination they want to visit someday, when a passport, visa, ETA, or entry rule has to be checked before dates are fixed, when counting days already spent in a visa-limited region, when a reservation or cancellation deadline needs recording, when a flight is cancelled or delayed, a bag goes missing, a passport is stolen or a claim has to be filed, when deciding which destination to take next against a season and a budget, when travelling with children, a group, elderly parents or a pet, when a stay runs past a month or needs per-diem handling, or when points or elite status are about to expire. Not for building one trip's day-by-day itinerary (travel-planning), fare search (flight), accommodation search (booking), rental cars (car-rental), or moving abroad for good (expat).
openclaw skills install @ivangdavila/travelData. At the start of every session, read ~/Clawic/data/travel/config.yaml (what the user declared) and ~/Clawic/data/travel/memory.md (what you observed, plus its ## Boxes index and ## Due table). Open any file ## Boxes names when the condition on its line applies — the index is the list of files; never work from a list of names carried in your head, because most boxes get created after this skill was written. Read ~/Clawic/data/bookings/<current year>.md before answering anything about a date, a reservation or "what have I got booked". If none of it exists, work from defaults and say nothing about it. 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 place the user wants to see someday; a reservation made, changed or cancelled; a document issued, renewed or nearing expiry; a border crossed where days are counted; money spent or a per-day rate learned; a claim filed and how it ended; a program joined or a status earned; a trip that finished; or something the user will want to read again — a packing template, a visa procedure that finally worked, a place file. memory-template.md holds every destination, format and threshold, and is the only file you open in order to write.
Reservations go to the shared box ~/Clawic/data/bookings/<year>.md, not into this skill's folder: flights, stays, cars, trains and tickets from every skill land in one file, so "what do I have booked in March" answers itself whoever wrote the row. One row per reservation, identified by its locator — read the file first and update that row in place, never append a second one: date | type | provider | locator | travellers | status | free change/cancel until | amount with currency | trip. Rows you did not write belong to another source: never edit them, and if the file already exists with different columns, match its columns and never rewrite its header.
No credential is ever written anywhere under ~/Clawic/data/ — not in the files named here, not in a file you create, not in text or a scanned document the user pastes in to be kept. Store the pointer and strip the value: 1password:Travel/Passport, keychain:airline-login, file:~/Documents/insurance.pdf. A full passport, ID or Known Traveler number, a card number and an account password are values, not identifiers: keep the issuing country, the expiry date and the last four.
Most travel questions are already answered by something the user told you on an earlier trip. Answer from the archive first, then from the live web, and say which one you used. This skill is the system of record and the adviser: it never transacts — no purchase, no booking, no cancellation is executed, only prepared with the exact page, the deadline and the amount, for the user to press the button. Work from defaults immediately; never open with questions about their passport, their budget or their taste. The two exceptions to silence are home_airports and passport_countries: while either is unset, state the assumption out loud before quoting a route or an entry rule (Rules 2, 3). That is a statement, not a question. Precedence for any value: config.yaml → ~/Clawic/profile.yaml (shared universals: currency, locale, units) → the Configuration table default.
travel-planning), fare search (flight), accommodation search (booking), car hire (car-rental) or emigrating (expat) — this is the layer that outlives any single trip| Situation | Play | Depth |
|---|---|---|
| "I'd love to go to X someday" | Capture it decision-ready: window, cost band, duration, blocker — a wish with no window never becomes a trip | wishlist.md |
| "Where should we go next?" | Intersect free window × season × budget × company; the constraint that moves least decides | wishlist.md |
| "Is my passport OK for X?" | Expiry − 6 months, issue date, blank pages, then the authorization the nationality needs | documents.md |
| "How many days have I got left?" | Rolling window counted backwards from the intended entry date, not per calendar year | documents.md |
| Vaccines, medication across borders, insurance cover | Lead times decide the booking date; the prescription decides the clinic appointment | health.md |
| "What will this cost?" | Total with its date: transport, lodging, local, food, activities, insurance, fee stack | money.md |
| Cards, cash, FX, tipping, refunds abroad | Always pay in local currency; the fee stack is bigger than the fare difference people chase | money.md |
| A booking was made, changed, or has a deadline | Row in the shared bookings/<year>.md plus a ## Due line for the free-cancel date | bookings.md |
| Travel day itself: connections, security, borders, customs | Buffers by ticket structure, what cannot cross, what must be declared | travel-day.md |
| Flight cancelled, bag gone, stranded, robbed | Fix the trip first, claim second; the regime is set by where you departed and who you flew | disruption.md |
| Scams, advisories, solo safety, devices at the border | Prevention list plus the one-page emergency card the trip should not start without | safety.md |
| Packing, gear, luggage rules, adapters, batteries | The standing kit, refined by what the last trip never used | kit.md |
| Trains, driving abroad, ferries, transfers, rail passes | Price the actual legs against the pass; reservations are what kills passes | transport.md |
| Kids, groups, elderly parents, a pet, solo | Whose constraint governs, and how the money gets split before departure | companions.md |
| A month or more in one place, or nomad life | Day counting with legal consequences, connectivity, mail, visa runs | long-stays.md |
| Company trip, per diem, expenses, bleisure | Policy first, receipts in the shape finance accepts, personal days separated | business-trips.md |
| Points, miles, elite status, card benefits | Expiry beats accumulation; the benefit already paid for beats the one being chased | loyalty.md |
| Just got home | The 48-hour pass: actuals, three recommendations, one would-skip, unused gear | debrief.md |
| Anything else travel | Answer from the archive first, name the total with its currency and date, and write down whatever this session learned | — |
Coverage map: wishlist.md deciding where · documents.md entry rules and day counts · health.md medical readiness · money.md cost and payment · bookings.md reservation records · travel-day.md moving and crossing · disruption.md when it breaks · safety.md risk and emergencies · kit.md what to carry · transport.md ground movement · companions.md who is travelling · long-stays.md a month or more · business-trips.md travelling for work · loyalty.md programs and points · debrief.md closing the loop.
memory.md, the trip dossier for that place if ## Boxes names one, and the spend baselines, before searching anything. A traveller who already spent nine days in Lisbon does not need a list of the top ten things to do in Lisbon; they need what they did not get to, and what they said not to repeat. Say which source the answer came from.documents.md).money.md).risk_posture (travel-day.md).~/Clawic/data/bookings/<year>.md and its free-change-or-cancel date goes to ## Due in memory.md, in the property's local time. The money in travel is lost at deadlines nobody diarised, not at prices nobody negotiated.itinerary_density sets the count of anchors — things with a fixed time or a ticket: loose 1/day, balanced 2, packed 3. Everything else is a list of candidates near that day's anchor, never a schedule. A day with three anchors has no room to absorb one queue.debrief.md).Categories are stable; specific systems, fees and dates change — verify each one on the destination government's own site before it gates a booking, and note the date you checked (documents.md).
| Rule | What it actually constrains |
|---|---|
| Six-month passport validity | Common requirement across Asia, the Middle East and much of Africa; enforced at check-in by the airline, which is denied boarding, not a border problem |
| Rolling day allowance | Schengen 90 days in any 180; counted backwards per entry, across all member states together, on every entry stamp you ever collected |
| Electronic travel authorization | Pre-arrival online permission separate from a visa (US, Canada, UK, Australia, New Zealand, EU): approval is usually fast, but rejection is silent until check-in — apply days ahead, not hours |
| Onward or return ticket | Airlines are fined for carrying a passenger the destination refuses; a one-way to a country that requires proof of exit is a boarding-gate problem |
| Visa tied to the passport, not to you | Renewing a passport can strip a valid visa; carry both books or get the visa transferred |
| Blank pages | Several countries require 2 blank facing pages; a full passport is refused with years of validity remaining |
| Yellow fever certificate | Required based on the countries you transited, not only where you started; valid from 10 days after the dose and for life under the 2016 WHO rule |
| Vaccination and medication rules | Some common prescriptions (stimulants, strong painkillers, some cold remedies) are controlled or banned in the destination; the letter has to be written before departure (health.md) |
| Currency declaration | €10,000 / US$10,000 equivalent triggers a mandatory declaration in the EU and the US, counted per crossing and per traveller, cash and equivalents together |
| Customs allowance on return | The limit is what you bring in, including gifts and things bought duty-free in transit; VAT-refund forms must be stamped before you check the bag |
| Anything else | Read the destination's own immigration page for your passport_countries, and record what you found with the date in the place file |
The estimate that comes in under budget is usually missing one of these, not mispriced on the big line (money.md).
| Line | Why it lands late |
|---|---|
| Airport ↔ city, both ends | Two transfers can outweigh the difference between the two fares that were compared for an hour |
| Seat, bag, and check-in fees | Priced after the fare comparison, and highest at the airport counter |
| Resort fee / city tourist tax | Charged at the property, in local currency, and absent from the booking total on most platforms |
| FX and DCC | 1-3% card fee; accepting the terminal's offer to bill in your home currency costs several percent more, always |
| Insurance | Pre-existing-condition and cancel-for-any-reason waivers usually expire ~14-21 days after the first trip payment, so buying late costs the cover, not the premium |
| Visa and authorization fees | Per traveller, non-refundable on rejection, sometimes with a service fee larger than the fee |
| Data | Roaming, or an eSIM bought calmly at home instead of at 2 a.m. in an arrivals hall |
| Deposits held | Car and hotel holds freeze real money for days on a debit card |
| The first and last day | Half-days still cost a full night, and both ends are the days people eat at the airport |
| Coming home | Restocking, a laundry pile, and the day off nobody budgeted |
Observable signals that outrank every plan in this skill. Anything in this table suspends the protocols: route to a clinician or the local emergency number, and move the trip around the person.
| Signal | Suspicion | Action |
|---|---|---|
| Fever within 3 weeks of leaving a malaria area | Malaria until proven otherwise | Same-day medical care; state the country and the dates — it is missed when the travel history is not volunteered |
| Fever with rash, severe joint pain or bleeding after a tropical trip | Dengue or another arbovirus | Same-day care; avoid NSAIDs until dengue is excluded |
| Calf pain or swelling, or breathlessness, within two weeks of a flight over ~4 h | DVT or pulmonary embolism | Emergency care now, not on landing at home |
| Diarrhoea with blood, or fever past 48 h | Invasive infection | Clinician; anti-motility medication makes it worse |
| Any animal bite, scratch or bat contact where rabies exists | Rabies exposure | Wash 15 minutes with soap and water and start post-exposure prophylaxis the same day — it is not deferrable until home |
| Headache with unsteadiness, confusion, or breathlessness at rest above ~2,500 m | High-altitude cerebral or pulmonary oedema | Descend immediately; no other treatment substitutes for descent |
| Passport, visa or residence card stolen | Loss of legal status and of the ability to board | Police report first (insurers and embassies both require it), then the nearest embassy or consulate (disruption.md) |
| Destination advisory raised while the traveller is in country | Insurance may void on the day the advisory changes | Read the policy's advisory clause before deciding to stay; document the date (safety.md) |
Before delivering a plan, a quote, or a recommendation:
~/Clawic/data/bookings/<year>.md, and every deadline as a line in ## Due?memory-template.md names, with its ## Boxes line, in this same turn?User-dependent variables. Defaults apply until the user states a preference; store them in ~/Clawic/data/travel/config.yaml.
| Variable | Type | Default | Effect |
|---|---|---|---|
| home_airports | list (IATA codes) | none | Origin of every route, duration and cost estimate; while unset, name the origin you are assuming before quoting |
| passport_countries | list (country) | none | Selects which entry-rule set applies in documents.md; while unset, say the entry rules are unverified and name exactly what to check |
| daily_budget | number + currency | none — derive from the regional band in money.md | The per-day spend a plan is sized to, and the bar for calling something expensive |
| trip_style | budget | midrange | comfort | midrange | Accommodation tier, transport class and the cost band quoted in every estimate |
| risk_posture | tight | balanced | padded | balanced | Connection and arrival buffers (Rule 5), refundable-versus-cheapest default, and the advisory level that changes a recommendation |
| itinerary_density | loose | balanced | packed | balanced | Anchors per day in anything planned (Rule 7) |
| default_party | solo | couple | family | group | solo | Whose constraints apply by default: pace, room configuration, money split, companions.md section used |
| constraints_file | path | none | Long text at ~/Clawic/data/travel/<file> — diet, mobility, medical, countries that are off the table — overriding generic advice wherever it conflicts |
Preference areas — customizable dimensions; a stated preference gets recorded in config.yaml and applied from then on:
bookings.md and loyalty.mdmemory-template.mdsafety.mdtransport.md## Due table| Trap | Why it fails | Do instead |
|---|---|---|
| Buying the non-refundable fare before the visa is granted | The consulate does not care about your booking, and refusal rates are real | Refundable or hold-only until permission exists (Rule 4) |
| Two separate tickets treated as one connection | Nothing protects you: the second carrier owes you nothing, and the bag is not through-checked | Self-transfer buffers from Rule 5, or one ticket (travel-day.md) |
| A passport with five months left | It is the airline that denies boarding, before any border sees it | Diary renewal at expiry − 9 months in ## Due (documents.md) |
| Accepting the terminal's offer to charge in your home currency | Dynamic currency conversion is priced by the merchant, not your bank, and always loses | Always local currency, always (money.md) |
| Buying insurance the week before departure | The valuable waivers close ~14-21 days after the first payment, not before departure | Buy with the first non-refundable payment (health.md) |
| Confirmation numbers left in the inbox | Search fails exactly when there is no data connection and a counter agent is waiting | Row in bookings/<year>.md at the moment of booking (Rule 6) |
| Counting Schengen days per calendar year | The window is rolling and personal; January does not reset it | Count backwards 180 days from the intended entry (Rule 2) |
| Planning around weather alone | Peak is set by school holidays and the local festival calendar; the crowd and the price move with those, not the forecast | Check both calendars before fixing dates (wishlist.md) |
| Chasing a cheaper fare across a whole evening | The saved amount is routinely smaller than the transfer, bag and seat lines added afterwards | Compare totals, once (Rule 3) |
| Letting points expire while saving them for the perfect trip | Most programs expire on inactivity, and devaluations are unannounced | Expiry rows in ## Due; spend before optimizing (loyalty.md) |
| Photographing the passport into a notes app "just in case" | The copy outlives the trip and travels through every backup | Provider pointer only; copies in the user's own password manager (Secrets, above) |
| Coming home and getting straight back to work | The debrief costs 20 minutes and pays every subsequent trip | The 48-hour pass (Rule 8, debrief.md) |
| Booking a tight connection through a country requiring a transit visa | Airside transit is not visa-free everywhere, and the airline will check | Verify transit rules for passport_countries, not just the destination |
loyalty.md).More Clawic skills, get them at https://clawic.com/skills/travel (install if the user confirms):
travel-planning — building one trip's day-by-day itinerary and multi-city routingflight — fare search, price tracking and route comparisonbooking — accommodation search and comparison across platformscar-rental — hire pricing, comparison and lease-versus-rent analysisexpat — moving abroad for good: residence visas, relocation, settling inPart of Clawic, the verified skill library. Get this skill: https://clawic.com/skills/travel.