Best for
- Build a business-trip itinerary from forwarded or pasted emails.
- Organise flights, hotels, trains, restaurants, tickets, meetings, attractions.
- Convert scattered booking confirmations into a clean day-by-day schedule.
moonlight-lupin/agent-skills/productivity/travel-itinerary/SKILL.md
Create, update, sanitize, route, and export structured business-trip itineraries from booking confirmations, emails, tickets, PDFs, screenshots, calendar invites, or notes. Use for day-by-day itinerary generation, privacy-safe sharing, route links, and Markdown/PDF/DOCX/Google Doc/ICS exports.
Decision brief
Create, update, sanitize, route, and export structured business-trip itineraries from booking confirmations, emails, tickets, PDFs, screenshots, calendar invites, or notes. Use for day-by-day itinerary generation, privacy-safe sharing, route links, and Markdown/PDF/DOCX/Google Doc/ICS exports.
Compatibility matrix
| Platform | Status | Evidence | What to check |
|---|---|---|---|
| Codex | Not declared | No explicit evidence | Portability before use |
| Claude Code | Not declared | No explicit evidence | Portability before use |
| Cursor | Not declared | No explicit evidence | Portability before use |
| Gemini CLI | Not declared | No explicit evidence | Portability before use |
Installation
The source command is displayed only when detected. A safe inspection prompt is always available so your agent can explain every action before execution.
npx skills add https://github.com/moonlight-lupin/agent-skills --skill "productivity/travel-itinerary"Inspect the Agent Skill "travel-itinerary" from https://github.com/moonlight-lupin/agent-skills/blob/78aee69209dc94cb90d5bed4fa8e2f3bfbb993ee/productivity/travel-itinerary/SKILL.md at commit 78aee69209dc94cb90d5bed4fa8e2f3bfbb993ee. List every install step, command, network request, credential, file read/write, external action, and rollback step. Explain whether it fits my task. Do not install or execute anything until I approve.
Workflow
1. Collect inputs. Forwarded emails, PDF confirmations, screenshots, manual notes, an existing itinerary if updating. 2. Extract structured facts. Supplier, booking refs, travellers, date/time/timezone, start/end locations, addresses, check-in/out rules, cancellation notes, tick…
Before final output, check:
Use this skill when the user wants to:
This skill is split for progressive disclosure. Read the reference files when you need depth on a topic:
Save final deliverables to the user's selected folder or agreed workspace. Working drafts and intermediate YAML can live in the scratchpad. Use the naming convention in references/exports.md.
Permission review
No configured static risk pattern was detected
This is not proof of safety. Runtime behavior, indirect dependencies, and hidden external systems are outside the static scan.
Evidence record
| Signal | Value | Evidence type | Meaning |
|---|---|---|---|
| Quality score | 95/100 | Computed | Documentation, specificity, maintenance, and trust rules |
| Repository stars | 16 | Source | Repository attention, not individual Skill quality |
| Compatibility | 0 platforms | Source | Declared in the catalog source record |
| Usage guide | automated source guide | Editorial | Generated or reviewed according to the visible evidence level |
Pinned source
Turn travel confirmations, booking emails, tickets, meeting notes, restaurant reservations, and ad-hoc trip details into a structured, exportable itinerary for internal business travel.
Mental model:
Trip
└── Day
├── Stay / overnight base
├── Node 1
├── Link / route to next node
├── Node 2
├── Link / route to next node
└── Node 3
visibility so internal, team-share, private,
and travel-admin exports can differ safely.The source of truth is the canonical YAML (see
templates/itinerary-schema.yaml). Markdown is the default rendered format,
with optional .ics, PDF, DOCX, Google Doc, and chat-ready variants.
Use this skill when the user wants to:
.ics.Do not use this skill as a full travel-management backend. If the task requires automatic inbox monitoring, persistent multi-trip databases, live flight status, multi-user editing, or web-app sharing, suggest a separate tool in addition to this skill.
This skill organises and renders user-provided or tool-retrieved travel facts. Do not claim live flight status, current prices, venue opening hours, route duration, ticket availability, or booking availability unless those facts were verified with an available live tool during the current task.
This skill is split for progressive disclosure. Read the reference files when you need depth on a topic:
templates/itinerary-schema.yaml — canonical YAML structure, the source of
truth.references/node-types.md — full per-node-type field tables, including
flight/train-specific fields and the status lifecycle.references/exports.md — Markdown / chat / exec / admin templates, .ics
spec, file-naming conventions.references/privacy.md — sensitive fields, redaction patterns, variant
inclusion matrix.references/routing.md — coordinate hierarchy, Nominatim/OSM geocoding,
Maps URL patterns, routes-by-default rules.examples/tokyo-trip.md — end-to-end worked example: source emails →
YAML → all four export variants → .ics.scripts/itinerary_utils.py — lightweight stdlib helpers for deterministic
chores: Google Maps direction URLs, iCalendar escaping/folding, and .ics
sanity checks. Run with python3.references/node-types.md.overnight_stay. Sort timed nodes chronologically.
Keep untimed nodes in a separate "To schedule / notes" section.references/routing.md..ics as requested. See
references/exports.md and references/privacy.md.Save final deliverables to the user's selected folder or agreed workspace.
Working drafts and intermediate YAML can live in the scratchpad. Use the naming
convention in references/exports.md.
When presenting files, use the delivery method your environment supports:
starts_at / ends_at / due_at values in the YAML are ISO 8601
with an explicit timezone offset, e.g. 2026-06-12T08:10:00+09:00.starts_at offset is
the departure local offset and the ends_at offset is the arrival
local offset. Also populate timezone_start and timezone_end when the
IANA names differ or when generating .ics.local_timezone (IANA name). It overrides
trip.timezone_default for that day — needed when a trip crosses a
timezone boundary mid-trip.HH:MM in the local timezone of the
containing day, with the timezone shown in the day heading
(e.g. ## Day 1 — Friday, 12 Jun 2026 (Asia/Tokyo)).Each node has a status of confirmed | tentative | cancelled | unknown.
Default to confirmed for items built from confirmations. Use tentative
for held or "maybe" items. Never delete a cancelled node — set
status: cancelled and keep it for the audit trail; rendering hides it from
share variants and strikes it through in the internal version. Full
rendering rules and amendment handling: see references/node-types.md.
When extracting from screenshots or scanned PDFs:
source_item.ocr_quality to high, medium, low, or unreadable.source_item.ocr_uncertain_fields.? prefix ("?ABC12?"). Never silently
normalise.unreadable, do not generate nodes from it — ask the user
to re-send or transcribe.Always distinguish the internal full version from shareable variants.
Sensitive fields (payment, passport, loyalty, booking PINs, personal
contacts) are redacted or omitted per the matrix in references/privacy.md.
Defaults: if the user asks for "the itinerary" without an audience,
default to internal-full and ask before producing a team-share. Never
default to team-share — accidental over-sharing is worse than accidental
over-disclosure to oneself.
Use a geocoding/maps tool when available (Nominatim/OSM or a maps MCP). If no mapping tool is available, leave coordinates empty and use human-readable addresses or codes in map links.
Full rules: references/routing.md.
Ask only when ambiguity changes the itinerary materially.
Ask if:
participants).ocr_quality: unreadable.Don't ask if:
overnight_stay for each night it covers; don't create one stay
node per night.cancelled and add a private note pointing at the new one.participants on a meeting and skipping the split
fields. Always populate attending_from_travel_party and
meeting_with for meeting nodes.Before final output, check:
local_timezone, and the right
overnight stay where relevant.overnight_stay.lat/lon come from a geocoder where present; no invented
coordinates.references/privacy.md.status: cancelled, not deleted.attending_from_travel_party and meeting_with
only — participants is empty for meetings..ics, BEGIN/END blocks balanced).Frequently asked questions
Create, update, sanitize, route, and export structured business-trip itineraries from booking confirmations, emails, tickets, PDFs, screenshots, calendar invites, or notes. Use for day-by-day itinerary generation, privacy-safe sharing, route links, and Markdown/PDF/DOCX/Google Doc/ICS exports.
The source record exposes this install command: npx skills add https://github.com/moonlight-lupin/agent-skills --skill "productivity/travel-itinerary". Inspect the command and pinned source before running it.
Alternatives
garrytan/gbrain
End-to-end discipline for turning any large data source (audio libraries, email takeouts, document corpora, chat exports, API dumps) into brain pages at scale. The lifecycle spine: SCHEMA → ACCESS → TRIAL → EVALUATE → IMPROVE → CODIFY → TEST → SKILLIFY → BULK → MONITOR. State is tracked in a durable JSON manifest (see MANIFEST-PATTERN.md) so any crash, session boundary, or subagent fan-out resumes from ground truth instead of memory.
alirezarezvani/claude-skills
App Store Optimization (ASO) toolkit for researching keywords, analyzing competitor rankings, generating metadata suggestions, and improving app visibility on Apple App Store and Google Play Store. Use when the user asks about ASO, app store rankings, app metadata, app titles and descriptions, app store listings, app visibility, or mobile app marketing on iOS or Android. Supports keyword research and scoring, competitor keyword analysis, metadata optimization, A/B test planning, launch checklist
wanshuiyin/Auto-claude-code-research-in-sleep
Use it for operations and research tasks; the detail page covers purpose, installation, and practical steps.
prowler-cloud/prowler
PostgreSQL indexing best practices for Prowler: index design, partial indexes, partitioned table indexing, EXPLAIN ANALYZE validation, concurrent operations, monitoring, and maintenance. Trigger: When creating or modifying PostgreSQL indexes, analyzing query performance with EXPLAIN, debugging slow queries, reviewing index usage statistics, reindexing, dropping indexes, or working with partitioned table indexes. Also trigger when discussing index strategies, partial indexes, or index maintenance