dot_files/dot_claude/skills/plan-holiday/SKILL.md

5.8 KiB

name description author version date
plan-holiday Plan holidays and search flights using Ryanair/Wizz Air direct APIs. Use when: (1) user asks to plan a trip/holiday, (2) user asks to find or compare flights, (3) "where should I go" / "weekend getaway", (4) need real-time flight prices from London to European destinations. Covers full trip planning (flights, itinerary, visa, deals) and standalone flight search. No paid API keys or browser automation needed. Claude Code 3.0.0 2026-03-15

Holiday Planner

This skill has two modes. All domain knowledge lives in the agents — this file is purely orchestration.

Mode Detection

  • Full trip plan: "plan a trip", "plan a holiday", "where should I go", "weekend getaway", "plan my trip"
  • Flight search only: "find flights", "search flights", "how much to fly to X", "flights from X to Y", "compare prices"

FLIGHT SEARCH ONLY MODE

Spawn a single holiday-flights agent (model: sonnet) with the user's query. The agent has all Ryanair/Wizz Air API docs, CLI commands, open jaw strategy, and seat tips. No further orchestration needed — just relay its output.


FULL TRIP PLANNING MODE

Step 0 — Discovery (Brainstorming)

Before doing any research, understand what the user actually wants. Ask questions one at a time, preferring multiple choice when possible. Stop asking once you have enough to proceed — don't over-question.

Extract these (skip any the user already provided):

  1. Destination: Where? Or "anywhere warm / anywhere cheap / surprise me"?
  2. Dates: When? Specific dates, or flexible? If flexible:
    • (a) Specific weekend (e.g., "May bank holiday")
    • (b) Flexible within a month (e.g., "sometime in May")
    • (c) Totally open — find the cheapest weekend
  3. Duration: Weekend (Fri-Sun), long weekend (Fri-Mon), or longer?
  4. Budget: What's the target? Per person or total?
    • (a) Budget (under £200 total)
    • (b) Mid-range (£200-500 total)
    • (c) No real limit, just find the best value
  5. Trip type:
    • (a) Fly in and out of the same city
    • (b) Open jaw — fly into one city, out of another
    • (c) Not sure yet
  6. Vibe — what kind of trip?
    • (a) Culture & history (museums, architecture, walking tours)
    • (b) Beach & relax
    • (c) Food & nightlife
    • (d) Adventure & outdoors (hiking, nature)
    • (e) Mix of everything
  7. Accommodation preference:
    • (a) Hostel / budget
    • (b) Hotel / mid-range
    • (c) Airbnb / apartment
    • (d) Whatever's cheapest
  8. Any must-dos or deal-breakers? (e.g., "must see the Alhambra", "no hostels", "need beach access")

Rules:

  • If the user's initial message already covers most of these, don't re-ask — just confirm your understanding and ask about the 1-2 gaps.
  • Maximum 3 rounds of questions. If you still have gaps after 3, use sensible defaults.
  • Present a brief summary of what you understood before moving to Step 1.

Step 1 — Parse & Calendar Check

With discovery complete, resolve the concrete parameters:

Date Normalization

Always resolve departure to a Friday when using explore. If user gives non-Friday dates, use search instead. The explore CLI command requires a Friday date.

Bank Holiday Check

cd /Users/viktorbarzin/code/holiday-planner/backend && .venv/bin/python -c "
from app.bank_holidays import is_long_weekend
from datetime import date
print(is_long_weekend(date(YYYY, M, D)))
"

If True, the return date will be Monday instead of Sunday.

Calendar Conflict Check (best-effort)

bw-vault inject "76169a13-9830-48ee-b583-6cc9055ed03c" --as NEXTCLOUD_APP_PASSWORD -- env NEXTCLOUD_USER=admin ~/.venvs/claude/bin/python3 /Users/viktorbarzin/code/infra/.claude/calendar-query.py events --date <start> --days <length> --json

Uses bw-vault inject for secure credential injection. If the script fails, note "calendar check skipped" and proceed. If conflicts found, report them and ask user to confirm or shift dates.

Step 2 — Phase 1: Parallel Research (3 agents)

Spawn ALL THREE agents in a single tool call block (parallel):

  1. holiday-flights (model: sonnet) — flights via CLI + raw APIs + web deals
  2. holiday-timing-safety (model: sonnet) — weather, FCDO advisory, visa for BG/UK + RO nationals
  3. holiday-deals (model: sonnet) — accommodation, discount codes, cashback, free activities

Each agent prompt MUST include: destination, exact dates, budget, preferences, accommodation preference, vibe, and for open jaw trips the inbound/outbound airports.

Step 2.5 — Phase 1 Output Validation

  • If flights returned NO results: inform user and ask whether to proceed with web-search-only or abort. Do NOT spawn itinerary agent without flight times.
  • If timing-safety failed: proceed but note "safety/visa data unavailable — verify independently."
  • If deals failed: proceed without deals section.

Step 3 — Phase 2: Sequential Planning (1 agent)

Spawn holiday-itinerary (model: opus) with ALL Phase 1 outputs combined plus the user's vibe/preferences from discovery. It synthesizes a day-by-day plan factoring in flight times, hotel location, weather, and safety.

Step 4 — Present Final Plan

# Trip Plan: [Destination], [Country]
**Dates**: Fri DD Mon - Sun/Mon DD Mon (N nights)
**Budget**: ~GBPX total

## Visa Requirements
| Who | Visa? | Details |
|-----|-------|---------|
| You (BG/UK) | ... | ... |
| Girlfriend (RO) | ... | ... |

## Flights
[Best option + booking link]

## Accommodation
[Top pick + discount codes]

## Day-by-Day Itinerary
[Full plan from itinerary agent]

## Budget Breakdown
[Itemized: flights, accommodation, food, activities, transport]

## Money-Saving Tips
[Cashback, codes, free activities]

## Safety Notes
[FCDO advisory, key warnings]