Flight Search StrategyCAUTION
AI-powered travel hacking and search with cash, points, miles, and award flights. Drop-in skills and MCP servers for Claude, Codex, and OpenCode.
Overview
AI-powered travel hacking and search with cash, points, miles, and award flights. Drop-in skills and MCP servers for Claude, Codex, and OpenCode.
fda58ab480fdOBSERVED · 2026-10-14What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: flight-search-strategy description: Canonical multi-source flight search strategy. Source priority (Duffel, Ignav, Google Flights, Skiplagged, Kiwi, Seats.aero, Southwest), parallel workflow, market selection for international price arbitrage. category: reference summary: The canonical multi-source search workflow. Source priority (Duffel > Ignav > Google Flights > others), market selection for international routes, source accuracy hierarchy, common failure modes. --- # Flight Search Strategy ## Search ALL Sources for EVERY Flight Search This is not a pick-one list. Each source returns different results, different prices, and different airlines. Missing a source means missing options. The priority order determines which price to trust when sources disagree, not which sources to skip. | Priority | Source | Strengths | Blind Spots | |----------|--------|-----------|-------------| | 1 | **Duffel** (skill) | Most accurate cash prices. Real GDS per-fare-class data. Bookable. | No Southwest. No award pricing. Offers expire in 15-30 min. | | 2 | **Ignav** (skill) | Fast REST API. Market selection for price arbitrage. Free. | No Southwest. No award pricing. | | 3 | **Google Flights** (skill, agent-browser) | Covers ALL airlines including Southwest cash prices. Free. Economy/business comparison. | Prices can be inflated vs GDS. No points pricing. | | 4 | **Skiplagged** (MCP) | Hidden city fares. Zero config. | No Southwest. Can be noisy on small markets. | | 5 | **Kiwi.com** (MCP) | Virtual interlining (creative cross-airline routings). Zero config. | Returns garbage on small markets. No Southwest. | | 6 | **Seats.aero** (skill) | Award flight availability across 25+ programs. The crown jewel for points. | Cached data, not live. No cash prices. No Southwest. | | 7 | **SerpAPI** (skill, optional) | Google Hotels search. Destination discovery (Google Travel Explore). | NOT for flights (inflated prices). Hotels and "where should I go?" only. | | 8 | **Southwest** (skill, Patchright) | Fare classes, points pricing, Companion Pass. All 4 fare classes, cash + points. | Pre-built Docker image: `ghcr.io/borski/sw-fares`. Or local Patchright (headed mode). ~20s per search. | ## The Standard Flight Search Workflow **Run ALL of these in parallel:** Duffel + Ignav + Google Flights + Skiplagged + Kiwi. Skiplagged and Kiwi are keyless MCP servers — they are available in every properly launched session. Attempt the tool call before ever claiming MCP is unavailable, and never substitute improvised browser scraping for these sources (see `fallback-and-resilience`). Always add Seats.aero for award comparison. Always run the Southwest skill if SW flies the route. Don't skip sources. Don't assume one source has everything. Present the combined results with the best options highlighted regardless of which source found them. **For a single unified comparison, use the `compare-flights` skill** which orchestrates all of the above in parallel and applies transfer partner optimization. ## Round Trip vs One-Way Construction When the trip has a return date, price BOTH constructions — proactively, without being asked: 1. **The round-trip fare** on every source (Duffel, Ignav, Kiwi, Skiplagged, and Google Flights all quote returns). 2. **Two one-ways**, searched independently — which also surfaces the mixed construction (outbound on carrier A, return on carrier B) that round-trip searches can't see. Run all of it in the same parallel batch; it's two extra searches, not a second pass. Which wins is route-dependent, so never assume: - **Round trips often win internationally** on legacy carriers, where return fares are discounted relative to two one-ways. - **One-way pairs often win domestically**, on ULCCs, and anywhere Southwest flies (SW prices every leg as a one-way). They also buy flexibility: each leg can be changed or canceled independently. - **Mixed-carrier pairs** frequently beat both when outbound and return are priced by different airlines' sale calendars. Present the verdict explicitly with the delta: "Round trip $842 vs best one-way pair $918 — book the round trip, saves $76" (or the reverse). If the gap is under ~$50, mention the flexibility advantage of separate tickets before recommending the round trip. ## For Southwest Specifically Use the southwest skill: ```bash docker run --rm ghcr.io/borski/sw-fares --origin SJC --dest DEN --depart 2026-05-15 --points ``` Or: ```bash python3 skills/southwest/scripts/search_fares.py --origin SJC --dest DEN --depart 2026-05-15 --points ``` Returns all 4 fare classes (Wanna Get Away, WGA+, Anytime, Business Select), cash and points pricing. The google-flights skill is a faster fallback for SW cash prices only (no fare class breakdown, no points pricing). ## Monitoring Existing Southwest Reservations ```bash docker run --rm -e SW_USERNAME -e SW_PASSWORD \ ghcr.io/borski/sw-fares change --conf ABC123 --first Jane --last Doe --json ``` Logs in, selects both legs, and shows fare diffs for every available flight. Negative diffs = savings opportunity. Use `--list` to discover all upcoming confirmation numbers. Read-only. Never modifies reservations. ## Market Selection Strategy Different country markets return different prices for the same route. Searching from Thailand (`&gl=TH`) vs the US (`&gl=US`) can save hundreds of dollars. **Always try multiple markets for international flights:** 1. **Departure country market first** (e.g., `&gl=US` for flights from the US) 2. **Destination country market** (e.g., `&gl=JP` for flights to Japan) 3. **Ask the user before trying more** (e.g., third countries, VPN markets) This applies to: - **google-flights** via the `&gl=XX` URL parameter - **ignav** via the `market` field in the search payload **Duffel and SerpAPI don't support market selection.** ## Source Accuracy Hierarchy When sources disagree on cash prices: **Duffel > Airline website > SerpAPI > Skiplagged/Kiwi** 1. **Duffel returns rea
Trust audit
CAUTIONgrade B · trust 89/100 Install with care. The audit found things worth knowing before you trust its output.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | WARN |
| L1 | Static analysis of the code | NA |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (5)
.agents/skills
.claude/skills
.opencode/skills
skills
AGENTS.md
Gates applied: no_behavioural_pass.
fda58ab480fdfull audit observations/trust-audit/skill/borski__flight-search-strategy.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-14 | fda58ab480fd | CAUTION | B | 89 | first audit |
Questions
What does the Flight Search Strategy skill do?
AI-powered travel hacking and search with cash, points, miles, and award flights. Drop-in skills and MCP servers for Claude, Codex, and OpenCode.
Is Flight Search Strategy safe to install?
With care. The audit graded it B (89/100) and found 5 things worth knowing before you trust this skill, listed below with the exact line each was found on.
What can Flight Search Strategy access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
How current is this page?
The grade is for one exact copy of the source (fda58ab480fd), read on 2026-10-14. The repository is watched, and a new audit runs when it changes — this is the first audit.