Install
$ agentstack add skill-echovoid2026-travel-planner-skill-travel-planner ✓ scanned · ✓ verified — works with Claude Code, Cursor, and more.
Security review
✓ PassedNo issues found. Passed automated security review. · v0.1.0 How review works →
- ✓ Prompt-injection patterns
- ✓ Secret / credential exfiltration
- ✓ Dangerous shell & filesystem operations
- ✓ Untrusted network calls
- ✓ Known-malicious package signatures
What it can access
- ✓ Network access No
- ✓ Filesystem access No
- ✓ Shell / process execution No
- ✓ Environment & secrets No
- ✓ Dynamic code execution No
From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.
About
Travel Planner
Overview
Create a practical outing pack that a person can actually use on an iPhone: schedule, routes, Apple Maps links, prices, optional images/food/attractions, native checklist, and optional Calendar/Reminders support.
Always prefer current, source-backed information over memory. Travel prices, hours, transport schedules, attraction status, restaurants, and local rules are time-sensitive.
Core Workflow
The conversation has exactly TWO gates. Everything between and after them runs without asking the user anything.
- Gate 1 — one-round intake (hard gate). Confirm trip details BEFORE writing any itinerary content. Collect every missing essential in ONE compact question round (a single message or one AskUserQuestion call, never one question at a time): outing type (business trip, leisure travel, mixed, errand, family visit), departure city, destination, dates and fixed times, booked vs unbooked transport, fixed appointments with time and place, hotel booked or preferred area, traveler count and constraints, budget style, whether attraction/food guidance is desired, whether images are desired, and which exports (Notes / Calendar / Reminders). Offer sensible defaults inline so the user can answer in one breath. In the SAME round, also list optional details worth volunteering — dietary restrictions, mobility limits, must-see / must-avoid places, shopping goals — labeled as 建议补充: suggestions the user may skip, never blockers. Only skip this gate when the user explicitly asks for a simulation or says to proceed with assumptions — then label every assumption in the output.
- Browse current sources for transport, attraction hours, ticket prices, restaurant status, neighborhoods, weather-sensitive considerations, and local travel advisories when relevant. Use official or primary sources first for prices, hours, tickets, transit, and rules.
- Use image search or source-backed image URLs for key attractions and foods. Prefer images that reveal the actual place or dish, not generic stock imagery.
- Build the itinerary from constraints outward: sleep location, transport windows, opening hours, meal timing, walking/transit load, likely queues, backup plans, and rest.
- Estimate costs in a clearly labeled table. Split confirmed prices, current search quotes, and rough estimates. Include currency and date checked.
- Write ALL output files before asking for confirmation: the main itinerary Markdown (rules:
references/outing-type-routing.md,references/travel-plan-standards.md,references/iphone-mobile-template.md,references/apple-ecosystem-output.md), the addresses Markdown for business trips, and the Calendar/Reminders JSON if those exports were requested. - Gate 2 — one-shot plan confirmation. Present everything in ONE message: the itinerary summary, cost range, key risks, AND the full export preview — the Notes pack structure (note titles), the exact Calendar events (run
scripts/export_apple_schedule.pywithout--applyfor a faithful preview), and the exact Reminders. Ask for a single confirmation. Do not export anything before this confirmation, and do not ask further questions after it — itinerary tweaks the user requests here fold into the same round. - One-shot export. On confirmation, run every requested export back-to-back with no further questions:
scripts/save_to_notes_native.pyfor each note (add--paste-images/--checklist-noteper trip type), thenscripts/export_apple_schedule.py --apply --replace. Report all verification outputs together in one message, exactly as the scripts printed them. If the user tweaks details afterward, update the files and re-run the same commands —--replacemakes every export idempotent. - If the user wants a polished preview or shareable card-style page, create an HTML version from
assets/iphone-travel-plan-template.htmlat any point after Gate 2.
Research Rules
- Browse for all current facts with more than a small chance of changing: transport prices and schedules, hotel areas, attraction opening hours, tickets, restaurant opening status, reservation rules, seasonal closures, local events, exchange rates, and weather.
- Use official attraction, transport, government, airport, rail, and restaurant pages when available. Use reputable travel sources only when primary sources are missing.
- Cite sources in the plan. Put concise source links near the sections they support.
- Never present uncertain prices as guaranteed. Mark them as
confirmed,live quote, orestimate. - When dates are relative, convert them to exact calendar dates.
Plan Quality Bar
Read references/outing-type-routing.md, references/travel-plan-standards.md, references/iphone-mobile-template.md, references/apple-ecosystem-output.md, and references/apple-calendar-reminders.md before writing the final plan. Use them as the output checklist for every substantial trip.
The final plan must include:
- Outing type: business trip, leisure travel, mixed trip, errand, or family visit
- Trip summary with dates, travelers, pace, budget style, and assumptions
- Daily itinerary with morning, afternoon, evening, transport, food, backup options, and rest time
- Transport comparison from departure city to destination and within destination
- Apple Maps links for important stations, airports, hotels, venues, attractions, restaurants, and route segments
- Optional Apple Calendar events for fixed-time items and Reminders for tasks, after user confirmation
- Cost table covering transport, lodging, attractions, meals, local transit, buffer, and total range
- Attraction image section with names, why go, time needed, ticket or reservation note, and image links or embedded Markdown images
- Food image and food strategy section with signature dishes, where to eat them, reservation notes, and image links or embedded Markdown images
- Checklist for documents, money, packing, electronics, health, booking, departure day, and return day
- Risks and backup plan: weather, closures, fatigue, missed transport, sold-out tickets, and dietary/mobility constraints
- Source list with access date
iPhone Visual Template
For Apple Notes, keep the final Markdown single-column, scrollable, and image-led. Do not use wide tables for daily schedules; use compact cards with short labels instead. Put the most useful phone-on-the-street information in the first screen: route, today's anchor, booking alerts, total budget, hotel area, and emergency backup.
For HTML preview or web sharing, copy assets/iphone-travel-plan-template.html and replace placeholder blocks with the researched trip content. Keep the design single-column at 390px-friendly widths, with 4:3 or 16:9 images, sticky quick nav, readable 16px+ text, and tap-sized links/buttons.
Apple Ecosystem Fit
Use Apple Maps links for stations, airports, hotels, venues, restaurants, attractions, and day route segments. Generate them with scripts/apple_maps_link.py when helpful:
python3 scripts/apple_maps_link.py --saddr "杭州东站" --daddr "杭州湖滨银泰" --mode transit
Use emoji route diagrams in Apple Notes instead of complex maps or wide tables. Keep the note lively but practical: emojis should make the route easier to scan, not decorate every sentence.
macOS Notes Export
Deliver a trip pack, not one giant note. Recommended shape:
Travel 文件夹
├── |主行程 ← text, emoji routes, Apple Maps links, images
├── |主行程|Checklist ← native clickable checklist (auto via --checklist-note)
└── (business trips) |地址票务 ← addresses, bookings, invoice info as a second markdown file
When saving the final plan:
- Write the final Markdown plan to a local file first.
- Run:
python3 scripts/save_to_notes_native.py --file /path/to/plan.md \
--title "杭州 2天1晚|主行程" --folder "Travel" --replace \
--paste-images --checklist-note
- How the script works, in order of reliability:
- The full body with clickable `
links is always written via AppleScriptbody` and verified by reading the note back. This never depends on UI focus. Images stay as clickable links in the text. --paste-imagesthen appends up to 6 downloaded, compressed images to the end of the note through the Notes UI, verifying the attachment count after each paste.--checklist-notemoves- [ ]items into a separate note as a native clickable checklist through the Notes UI. Alternatively, put tasks into Apple Reminders viaexport_apple_schedule.py, which is even more robust.
- Report exactly what the script printed: exit 0 means everything verified; exit 3 means the body is intact but some enhancement failed (the script says which); exit 2 means the input file was not found; exit 1 means the body write failed. Never claim images or native checklists worked beyond what the verification output shows.
- If macOS asks for Automation or Accessibility permission, instruct the user to allow the calling app to control Notes and System Events, then rerun. In headless or unfocused environments, drop
--paste-images/--checklist-note: the plain run needs only Automation permission and still produces a complete, linked note.
Calendar and Reminders Export
Use Calendar only for fixed-time schedule blocks: trains, flights, meetings, ticketed reservations, hotel check-in/out when important, restaurant reservations, and tight transfers. Use Reminders for tasks: booking, packing, documents, weather check, invoice/reimbursement, saving addresses, and predeparture confirmations.
The preview belongs inside Gate 2 (Core Workflow step 7) — one confirmation covers Notes, Calendar, and Reminders together. Never run --apply before that confirmation, and never ask for a second, separate confirmation just for Calendar/Reminders.
Preview first:
python3 scripts/export_apple_schedule.py --file /path/to/apple-schedule.json
Apply after user confirmation:
python3 scripts/export_apple_schedule.py --file /path/to/apple-schedule.json --apply --replace
After applying, verify the intended Calendar and Reminders list contain the generated items. Do not create Calendar/Reminder items silently.
Fast Path
Target: a few minutes from confirmed details to a complete pack. The exports themselves are fast — a full Notes run with 4 images and a native checklist takes about 30 seconds; without images it takes seconds. Time is lost in workflow, not scripts, so:
- Ask all clarifying questions in one round (Gate 1), never serially.
- Research only what the plan actually depends on; skip broad browsing for simulations or when the user has already booked transport and hotel.
- Write all output files first (main itinerary md, addresses md for business trips, schedule json), then present Gate 2.
- Bundle the plan summary and the full three-app export preview (Notes structure + Calendar events + Reminders) into Gate 2, so ONE user confirmation unlocks the entire export.
- After confirmation, run all exports back-to-back — Notes, then Calendar/Reminders — and report every verification output in a single message.
- Trust the scripts' self-verification output; do not screenshot to double-check unless the user asks to see the result.
--paste-imagesdownloads in parallel and costs ~2-3s per image; business trips default to no images, so drop the flag entirely there.
Output Tone
Be decisive and practical. Prefer a plan the user can execute tomorrow over a broad list of possibilities. Explain tradeoffs briefly where they change the itinerary.
Source & license
This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.
- Author: EchoVoid2026
- Source: EchoVoid2026/travel-planner-skill
- License: MIT
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.