Agent skill

Lessons Learned

by borski in borski/travel-hacking-toolkit

Mandatory pre-flight-search reference. An agent skill from borski/travel-hacking-toolkit.

MITAuto-check passed

Install Lessons Learned

skills CLI
$ npx skills add borski/travel-hacking-toolkit --skill lessons-learned -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install borski/travel-hacking-toolkit lessons-learned --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .claude/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/lessons-learned .claude/skills/lessons-learned && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
lessons-learned
GitHub stars
689
Token cost
~2.2k tokens
SKILL.md length
1,194 words
Files
1
Skills in repo
46
Repo updated
First seen
Licence
MIT

At a glance

Mandatory pre-flight-search reference. An agent skill from borski/travel-hacking-toolkit.

  • Works in 5 steps: Search Seats.aero with NO source filter.… → For EVERY program in results, trace the… → For reachable programs with NO cached… → …
  • SKILL.md covers Seats.aero: Search ALL…, Never Trust Data Files Over…, Source Accuracy Hierarchy and Southwest Is Special, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Lessons Learned is an agent skill from borski/travel-hacking-toolkit. Mandatory pre-flight-search reference. Contains the Seats.aero workflow (pull ALL programs first), source accuracy hierarchy, Southwest/Companion Pass specifics, small-market caveats, and Duffel limitations.

Its SKILL.md is about 2.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

The repository describes itself as: AI-powered travel hacking and search with cash, points, miles, and award flights. Drop-in skills and MCP servers for Claude, Codex, and OpenCode. The licence is MIT.

Example prompts

  • “/lessons-learned”

Workflow steps

5 steps, taken from the first numbered list in SKILL.md.

  1. Search Seats.aero with NO source filter. Pull ALL programs. Show full results sorted by cheapest.
  2. For EVERY program in results, trace the full reachability chain
  3. For reachable programs with NO cached Seats.aero data, check the program's website directly (airfrance.com, united.com, etc.)
  4. Present the COMPLETE picture: every option, reachable or not, with the transfer chain spelled out.
  5. Only THEN compare award vs cash.

What it can do on your machine

Read from SKILL.md and the folder at commit db82131. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md.

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Lessons Learned loads about 2.2k tokens when it runs. Until then it costs about 56 tokens; SKILL.md has 1,194 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~56
When it runs · the whole SKILL.md, loaded when a task matches
~2.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from borski/travel-hacking-toolkit at commit db82131, republished under its MIT licence (© borski). 1,194 words, ~2,194 tokens.

Download SKILL.mdSave it as .claude/skills/lessons-learned/SKILL.md (or your agent's skills folder).
name
lessons-learned
description
Mandatory pre-flight-search reference. Contains the Seats.aero workflow (pull ALL programs first), source accuracy hierarchy, Southwest/Companion Pass specifics, small-market caveats, and Duffel limitations.
category
reference
summary
Hard-won knowledge from real searches. The mandatory Seats.aero workflow, Southwest specifics, Companion Pass math, source accuracy, small-market caveats…

Lessons Learned

Hard-won knowledge from actual searches. Reference these before making the same mistakes.

Seats.aero: Search ALL Sources, Show ALL Results

When searching Seats.aero, NEVER filter by source on the initial search. Always pull ALL programs first.

The Mandatory Workflow

For any route:

  1. Search Seats.aero with NO source filter. Pull ALL programs. Show full results sorted by cheapest.
  2. For EVERY program in results, trace the full reachability chain: a. Direct balance? (Check AwardWallet if connected) b. Transfer path? (Check data/transfer-partners.json for EVERY currency: Amex MR, Chase UR, Bilt, Capital One) c. Alliance chain? Identify the operating airline's alliance (data/alliances.json), then find ALL programs in that alliance or with bilateral partnerships (data/partner-awards.json), then check which of THOSE programs are reachable via transfer. d. Cross-alliance? Check data/partner-awards.json cross_alliance_highlights and bilateral partners.
  3. For reachable programs with NO cached Seats.aero data, check the program's website directly (airfrance.com, united.com, etc.)
  4. Present the COMPLETE picture: every option, reachable or not, with the transfer chain spelled out.
  5. Only THEN compare award vs cash.
Common Failure Mode

Seeing an airline in results, checking one or two obvious programs, declaring awards "unreachable" or "bad value," and recommending cash. You MUST trace every possible chain through alliances and bilateral partnerships. If the operating airline is in an alliance, EVERY program that books that alliance is a potential path.

"No Cached Availability" Is Not the Final Word

It means Seats.aero hasn't scraped it recently. When a reachable program shows no cached results, search the airline's website directly before declaring awards dead.

Never Trust Data Files Over Reality

Data files are reference material, not gospel. Airline partnerships change constantly. When a user says a booking path works that your data doesn't show, verify on the actual booking website FIRST before pushing back. The website is the source of truth. Your files are a cache. If the data file disagrees with reality, update the data file.

Source Accuracy Hierarchy

Duffel > Airline website > SerpAPI > Skiplagged/Kiwi

  1. Duffel returns real GDS prices per fare class. These are bookable. Tested: Duffel showed $271 basic / $325 main. SerpAPI showed $541 for the same flight. The gap was consistent across multiple itineraries.
  2. SerpAPI (Google Flights) inflates prices. Google Flights often shows "main cabin" or bundled fares, not the cheapest bookable fare class. Useful for Google Hotels and destination discovery, but do not trust it as the sole source for flight cash prices.
  3. Kiwi returns garbage on small markets. Filter hard or skip Kiwi for domestic routes to small airports.

Southwest Is Special

  1. Southwest is NOT in any GDS. Duffel, Skiplagged, Kiwi, and Seats.aero will never return SW flights. The only sources are: the Southwest website directly or user-provided screenshots.
  2. SerpAPI does return SW prices but they're often inflated like all SerpAPI flight prices. Treat as directional only.
  3. SW Companion Pass math is different from everything else. With CP, you buy ONE ticket and the companion flies free. The cash comparison is the Choice fare for one ticket (not two Basic fares). Points comparison: total points covers both travelers. This changes cpp calculations significantly.
  4. Cash SW flights require Choice fare (or higher) for the companion to fly free. Wanna Get Away (Basic) does NOT qualify. Critical detail.
  5. SW points pricing must come from southwest.com. No third-party source has it.

Companion Pass CPP Math

The correct formula when Companion Pass is in play:

Total cash value = choice_fare_cash × 2 passengers
CPP = total_cash_value / total_points × 100

One ticket's worth of points buys travel for two people. Always frame it as "points bought $X of travel for 2 people."

Small Market Airports

Small airports have limited award availability. Seats.aero cached data will be sparse. When searching small markets:

  1. Duffel for cash prices (works fine, GDS has the inventory)
  2. Don't bother with Seats.aero cached search (data too sparse)
  3. Check airline-specific award pricing via the program's website if needed
  4. SW Companion Pass often wins on small domestic markets because the points cost is low and CP doubles the value

Layover and Time Preferences

Ask the user for their preferences on the first search. Key questions:

  • Minimum and maximum layover time
  • Earliest acceptable departure time
  • Red-eye tolerance
  • Lounge access (changes how long layovers feel)

Store their answers and apply to all subsequent searches in the session.

Show full SKILL.md (489 more words)Show less

Duffel Limitations

  • No Southwest. SW is not in any GDS. Period.
  • No award pricing. Duffel shows cash fares only. Use Seats.aero for award availability.
  • Offers expire in 15-30 minutes. Don't cache Duffel results across sessions.
  • 60 requests per 60 seconds rate limit. Parallel searches are fine but don't go crazy.
  • Returns multiple fare classes for the same flight. This is a feature. You'll see basic economy at one price and main cabin at another for the same routing. Use the cheapest bookable class for cpp comparison unless the user specifies a fare preference.

These are not required for every search but should be loaded when the conversation context suggests them:

  • transfer-bonuses — Load before recommending any credit card → loyalty program transfer. Live weekly data on currently active bonuses (e.g., Amex MR → Hilton 20%, Chase UR → Aeroplan 20% with stackable cardholder bonus). A 30% bonus changes which currency is cheapest in the transfer-partners optimization.
  • stopovers — Load when the trip has a layover near 24h, or when the user wants to "stop in X on the way." 17 programs documented with primary citations: Aeroplan (1 stopover, 5K surcharge), TAP (1 on partner awards), Turkish (free Istanbul stopover), Etihad (Abu Dhabi), Icelandair (Reykjavík free up to 7 days, the legendary one), Alaska (free, phone only), Flying Blue (free, possibly unlimited), JAL multi-carrier (up to 3), Singapore Saver/Advantage tiers, AF/KLM, Cathay (2+2). Also documents which programs DO NOT allow stopovers (BA Avios, AA AAdvantage, Delta SkyMiles, JetBlue, Virgin Atlantic, Iberia Avios) — that's a critical negative finding.
  • award-holds — Load before any "transfer points first" recommendation. Hold landscape per current data: AA allows 24h self-service hold online (the only program with online holds; the previous 5-day version was discontinued in late 2024). Virgin Atlantic Flying Club holds 1-2 days by phone, free. Flying Blue holds up to 3 days by phone with a $25 phone-booking fee at ticketing. Lufthansa M&M up to 5 days. Cathay ~2 days. Singapore agent-discretionary. The major Western programs that DO NOT allow holds: United, Alaska, Delta, BA, Aeroplan. Always check the data file rather than relying on this one-line summary.
  • round-the-world — Load when the trip implies 3+ stops or multiple regions. 13 active + 4 discontinued products documented. The RTW universe is collapsing (4 killed in last 18 months), but Star Alliance + oneworld + Lufthansa M&M + Qantas remain solid. Special Business RTW at 26,000 miles is the steal. Includes Iberia Plus intra-Europe sweet spots and Aeroplan distance-based regional awards.
  • status-match — Load when the user asks about elite status shortcuts, status match, status challenge, "switching loyalty programs," or mentions a once-in-a-while opportunity (Hyatt Globalist Challenge, Marriott Platinum Challenge). Critical lifetime/once-per-N-years warnings: Alaska Atmos = once per lifetime, AA = once every 2 years, Delta/United = once every 3 years, Hyatt Globalist Challenge = once per lifetime. The skill distinguishes free direct matches from paid concierge (statusmatch.com is real but charges fees) from card-granted renewable status (Amex Platinum = Hilton Gold + Marriott Gold automatic).

© borski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in plugins/travel-hacking-toolkit/skills/lessons-learned of borski/travel-hacking-toolkit.

Open the folder on GitHubat commit db82131

Compare with similar skills

Lessons Learned next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Lessons Learned compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Lessons Learned this skillborski/travel-hacking-toolkit689—~2.2kAutomated safety check: PassMIT
Learning to Learn (OpenMAIC)THU-MAIC/OpenMAIC40k—~502Automated safety check: PassMIT
Social-Emotional Learning Lesson DesignTHU-MAIC/OpenMAIC40k—~435Automated safety check: PassMIT
Lesson Learnedcompozy/compozy2.8k—~466Automated safety check: PassMIT
Conducting Post Incident Lessons Learnedmukul975/Anthropic-Cybersecurity-Skills34k—~1.7kAutomated safety check: PassApache-2.0
Flightsasgeirtj/system_prompts_leaks69k—~2.1kAutomated safety check: PassCC0-1.0

Similar skills

  • A Chinese-language skill that embeds learning strategies like retrieval practice and self-explanation as a parallel goal inside an OpenMAIC subject lesson, without making study skills the topic.

    40k GitHub stars~502 tokensUpdated yesterday
    EducationAuto-check passed
  • Adds a social-emotional learning goal next to the subject concept in an OpenMAIC classroom lesson, without turning the class into a counseling or homeroom session.

    40k GitHub stars~435 tokensUpdated yesterday
    EducationAuto-check passed
  • Lesson Learned

    compozy/compozy

    Extract evidence-backed engineering lessons from recent changes or incidents.

    2.8k GitHub stars~466 tokensUpdated today
    Auto-check passed
  • Conducting Post Incident Lessons Learned

    mukul975/Anthropic-Cybersecurity-Skills

    Facilitate structured post-incident reviews to identify root causes, document what worked and failed, and produce actionable recommendations to improve future incident response.

    34k GitHub stars~1.7k tokensUpdated 1 mo ago
    DevOps & CloudAuto-check passed
  • Flights

    asgeirtj/system_prompts_leaks

    Research, book, or manage flights, including check-in. An agent skill from asgeirtj/system_prompts_leaks.

    69k GitHub stars~2.1k tokensUpdated 2 days ago
    Auto-check passed
  • Pp Seats Aero

    mvanhorn/printing-press-library

    Every Seats.aero Partner API endpoint, plus a local award-availability store that tells you what is new, what is still live, and where your miles reach nonstop.

    2.1k GitHub stars~8.5k tokensUpdated yesterday
    Backend & APIsAuto-check: notes

More from borski/travel-hacking-toolkit

All 46 skills in this repo
  • Amex Travel

    borski/travel-hacking-toolkit

    Search Amex travel portal for cash prices, MR points pricing, IAP discounts, and FHR/THC hotel benefits via Patchright.

    689 GitHub stars~3.1k tokensUpdated 2 days ago
    Auto-check passed
  • Chase Travel

    borski/travel-hacking-toolkit

    Search Chase UR travel portal via Patchright for cash prices, points pricing, Points Boost offers, and Chase Edit hotel benefits.

    689 GitHub stars~2.8k tokensUpdated 2 days ago
    Auto-check passed
  • Deutsche Bahn

    borski/travel-hacking-toolkit

    Deutsche Bahn train schedules, journey planning, and departures across Germany and into neighboring countries (Austria, Switzerland, Netherlands, France, Belgium).

    689 GitHub stars~1.5k tokensUpdated 2 days ago
    Auto-check passed
  • Sutochno

    borski/travel-hacking-toolkit

    Search Sutochno.ru (СУТОЧНО.РУ), a Russian short-term apartment-rental platform where you book directly from owners and pay in rubles (Mir card / bank transfer).

    689 GitHub stars~2.1k tokensUpdated 2 days ago
    Auto-check passed
  • Ticketsatwork

    borski/travel-hacking-toolkit

    Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright.

    689 GitHub stars~4.2k tokensUpdated 2 days ago
    Auto-check passed
  • Vrbo

    borski/travel-hacking-toolkit

    Search VRBO (Vrbo / Expedia Group) vacation rentals including entire homes, condos, and cabins via Patchright browser automation.

    689 GitHub stars~1.7k tokensUpdated 2 days ago
    Auto-check passed

Questions about Lessons Learned

What does Lessons Learned do?

Mandatory pre-flight-search reference. An agent skill from borski/travel-hacking-toolkit. Lessons Learned is an agent skill from borski/travel-hacking-toolkit. Mandatory pre-flight-search reference.

How do I install Lessons Learned in Claude Code?

Run `npx skills add borski/travel-hacking-toolkit --skill lessons-learned -a claude-code`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/lessons-learned in borski/travel-hacking-toolkit) into .claude/skills/lessons-learned in your project. Claude Code loads it when a task matches its description.

How do I install Lessons Learned in Codex?

Run `npx skills add borski/travel-hacking-toolkit --skill lessons-learned -a codex`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/lessons-learned in borski/travel-hacking-toolkit) into .agents/skills/lessons-learned in your project. Codex loads it when a task matches its description.

Can I use Lessons Learned in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add borski/travel-hacking-toolkit --skill lessons-learned -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lessons-learned, .gemini/skills/lessons-learned, .github/skills/lessons-learned and .opencode/skills/lessons-learned in your project.

What does Lessons Learned need to run?

SKILL.md names no scripts, command-line tools or credentials: Lessons Learned is instructions for the agent only.

Does Lessons Learned access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Lessons Learned safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Lessons Learned use?

Lessons Learned is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Lessons Learned use?

About 2.2k tokens (SKILL.md is roughly 8.8k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Lessons Learned?

Skills that share tags, products or a category with Lessons Learned: Learning to Learn (OpenMAIC) (THU-MAIC/OpenMAIC, 40k stars), Social-Emotional Learning Lesson Design (THU-MAIC/OpenMAIC, 40k stars), Lesson Learned (compozy/compozy, 2.8k stars) and Conducting Post Incident Lessons Learned (mukul975/Anthropic-Cybersecurity-Skills, 34k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Lessons Learned?

borski (a GitHub user) maintains it in borski/travel-hacking-toolkit, which has 689 GitHub stars. The repository holds 46 skills in this directory. The repository was last updated on October 5, 2026.

Source: borski/travel-hacking-toolkit on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.