add plan-holiday skill and holiday planner agent team
Unified holiday planning skill with discovery phase + 4 specialist agents: - holiday-flights: Ryanair/Wizz Air APIs, CLI, open jaw, seat tips - holiday-timing-safety: FCDO, visa (BG/UK/RO), weather - holiday-deals: accommodation, cashback, discount codes - holiday-itinerary: day-by-day planner (opus) Replaces standalone airline-flight-search skill.
This commit is contained in:
parent
488c681033
commit
ba3ec6ced5
5 changed files with 606 additions and 0 deletions
145
dot_claude/skills/plan-holiday/SKILL.md
Normal file
145
dot_claude/skills/plan-holiday/SKILL.md
Normal file
|
|
@ -0,0 +1,145 @@
|
|||
---
|
||||
name: plan-holiday
|
||||
description: |
|
||||
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.
|
||||
author: Claude Code
|
||||
version: 3.0.0
|
||||
date: 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
|
||||
```bash
|
||||
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)
|
||||
```bash
|
||||
python3 /Users/viktorbarzin/code/infra/.claude/calendar-query.py events --date <start> --days <length> --json
|
||||
```
|
||||
Requires `NEXTCLOUD_USER` and `NEXTCLOUD_APP_PASSWORD` env vars. If the script fails or creds are missing, 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
|
||||
|
||||
```markdown
|
||||
# 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]
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue