Find flight bookings, hotel reservations, travel itineraries, and booking confirmations from email. Use when user asks about upcoming trips, travel plans, booking references, flight details, or hotel reservations. Arguments: optional destination, airline, date range, or booking service.
Install
npx skillscat add aashari/ai-agent-skills/mail-travel Install via the SkillsCat registry.
SKILL.md
Mail Travel — Bookings, Flights, and Itineraries
Search: $ARGUMENTS (default: recent and upcoming travel)
Step 1: Find travel-related emails
DB="$HOME/Library/Mail/V10/MailData/Envelope Index"
sqlite3 "$DB" "
SELECT datetime(m.date_received,'unixepoch','localtime') as dt,
s.subject, a.address as sender, a.comment as name,
mb.url, m.ROWID
FROM messages m
JOIN subjects s ON m.subject = s.ROWID
JOIN addresses a ON m.sender = a.ROWID
JOIN mailboxes mb ON m.mailbox = mb.ROWID
WHERE m.deleted = 0
AND mb.url NOT LIKE '%Spam%' AND mb.url NOT LIKE '%Trash%'
AND (
-- Travel booking senders
a.address LIKE '%agoda%'
OR a.address LIKE '%booking.com%'
OR a.address LIKE '%airbnb%'
OR a.address LIKE '%travelio%'
OR a.address LIKE '%tiket%'
OR a.address LIKE '%traveloka%'
OR a.address LIKE '%expedia%'
OR a.address LIKE '%hotels.com%'
OR a.address LIKE '%airasia%'
OR a.address LIKE '%garuda%'
OR a.address LIKE '%lionair%'
OR a.address LIKE '%batik%'
OR a.address LIKE '%citilink%'
OR a.address LIKE '%singaporeair%'
OR a.address LIKE '%united%'
OR a.address LIKE '%delta%'
OR a.address LIKE '%emirates%'
OR a.address LIKE '%gojek%'
OR a.address LIKE '%grab%'
-- By subject
OR s.subject LIKE '%flight%'
OR s.subject LIKE '%hotel%'
OR s.subject LIKE '%booking%'
OR s.subject LIKE '%reservation%'
OR s.subject LIKE '%itinerary%'
OR s.subject LIKE '%check-in%'
OR s.subject LIKE '%boarding%'
OR s.subject LIKE '%e-ticket%'
OR s.subject LIKE '%confirmation%'
OR s.subject LIKE '%your trip%'
OR s.subject LIKE '%upcoming trip%'
OR s.subject LIKE '%airport%'
)
ORDER BY m.date_received DESC
LIMIT 100;" 2>/dev/nullStep 2: Filter by destination/dates if specified
If $ARGUMENTS contains a destination or date, add LIKE filters on subject.
Step 3: Parse booking details
python3 ~/.claude/skills/_mail-shared/parser.py <ROWID1> <ROWID2> ...From bodies extract:
- Flights: origin → destination, airline, flight number, departure date/time, arrival, class, booking reference
- Hotels: property name, check-in/check-out dates, room type, booking ID
- Rental/Apartment: property ID, address, check-in time, host contact
- Total amount paid
- Cancellation policy
- Booking reference/ID
Step 4: Build itinerary view
Sort by travel date (not email received date) to create a chronological itinerary.
Output Format
Group by trip (cluster bookings by date proximity):
Trip: [Destination] — [Date Range]
- Flight: [route] on [date] — Ref: [booking ref]
- Hotel: [name] [check-in] to [check-out] — Ref: [ID]
- Total spent: [amount]
Also note:
- Pending check-ins (upcoming within 7 days)
- Pending refunds from cancelled trips
- Baggage allowance if mentioned