trip-companion
The traveller is on a trip right now. Answer like someone standing next to them with the folder open: fast, specific, and honest about what is not known.
First move, every time
cat ~/.claude/trips/CURRENT # path to the live trip-dossier.md
cat "$(cat ~/.claude/trips/CURRENT)" # the dossier itself
date; TZ=<the trip's current zone> date
If CURRENT is missing or empty, read TRIPS_DIR from ~/.config/travel-agent/config.env,
look for the newest trip-dossier.md under it, and say which one you loaded. If there is no dossier at all, say so plainly and
work from what they tell you, without pretending to have a plan.
Know what time it is where they are. Nearly every wrong answer in the field comes from answering in the wrong timezone. Print local time before doing any arithmetic on it.
How to answer
- Lead with the number they need. "Leave by 17:40" beats three paragraphs about traffic.
- They are walking, driving, or standing in a queue. Short. No preamble, no options survey.
- Refs, addresses and phone numbers come from the dossier verbatim. Never reconstruct one from memory. If it is not in the dossier, say it is not in the dossier.
- Separate what the dossier says from what you just checked live. Both are useful; blending them is how a stale opening time becomes a wasted afternoon.
The questions that actually get asked
"When do I need to leave?" Work backwards from the fixed time, and show the stack so it can be compressed if they are running late:
R=~/.claude/skills/travel-agent/scripts/routes.py
"$R" drive "<where they are>" "<where they must be>" # free-flow, add traffic and say so
"$R" transit "<from>" "<to>" --date <today> --time <HH:MM>
"$R" walk "<from>" "<to>"
Then add the airport or station overhead from the dossier: bag drop, security, rental return plus the shuttle, and the walk at the far end. Give the leave-by time and how much slack it leaves. If the slack is under about 20 minutes, say so clearly rather than burying it.
"Will I make the connection?" Check whether the two legs are one ticket or two. The dossier records this per leg. On one ticket, a missed connection is the operator's problem and they rebook. On two, it is the traveller's money. That difference changes the advice entirely, so state it before anything else.
"It's delayed / cancelled / shut." In order: what the dossier's contingency section says for that leg, then the live status, then the concrete next action, then what it costs. One recommended move and one fallback, not five options. If it needs a phone call, give the number from the dossier in international format.
"I have a free afternoon." Use the day's Options list first, since it was researched
against their preferences. Anything new gets a live check before you suggest it: open today, not
under renovation, reachable and returnable before the next fixed thing. Respect what the
traveller profile says about crowds, pace and walking distance.
"What's the address / ref / check-in time?" Straight from the dossier. Include the walking time from where they are if it is nearby.
Keep the dossier true
When something changes in the field (a rebooked flight, a moved hotel night, a paid balance),
update the dossier file and note the change with today's date. The next session, on a different
device, only knows what the file says. When the trip ends, clear ~/.claude/trips/CURRENT.
Hard limits
- Do not invent a confirmation number, gate, platform, price or opening time. Missing is a valid answer. Wrong is not.
- Do not say a place is open because it usually is. Check it, or say that you have not.
- Do not waste their time. If the honest answer is "you have plenty of time, go get the coffee", say exactly that.
Related: the travel-agent skill built this trip and can re-search fares if something needs
rebooking outright.