Agent skill

Status Match

by borski in borski/travel-hacking-toolkit

Status match and status challenge rules for airlines and hotels.

MITAuto-check passed

Install Status Match

skills CLI
$ npx skills add borski/travel-hacking-toolkit --skill status-match -a claude-code

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

GitHub CLI
$ gh skill install borski/travel-hacking-toolkit status-match --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/status-match .claude/skills/status-match && 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
status-match
GitHub stars
688
Token cost
~3.6k tokens
SKILL.md length
1,656 words
Files
1
Skills in repo
46
Repo updated
First seen
Licence
MIT

At a glance

Status match and status challenge rules for airlines and hotels.

  • Works in 5 steps: Identify what status the user actually… → Check Path 3 first (card-based) → Check Path 1 (free direct match) → …
  • SKILL.md covers Critical Rule: Lifetime…, When to Use This Skill, When NOT to Use and The Three Paths to Elite Status, plus 6 more sections
  • Calls jq

What it does

Status Match is an agent skill from borski/travel-hacking-toolkit. Status match and status challenge rules for airlines and hotels. Covers free direct matches, paid concierge via statusmatch.com with fees, card-granted status, and critical lifetime/once-per-N-years restrictions that make wasted matches expensive.

Its SKILL.md is about 3.6k 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

  • “/status-match”

Requirements

  • Pre-approved tools (allowed-tools): Bash(jq *)

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Identify what status the user actually wants
  2. Check Path 3 first (card-based)
  3. Check Path 1 (free direct match)
  4. If no free path exists, check Path 2 (paid concierge)
  5. Cross-check via community database

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 these tools, so the agent can use them without asking each time:

    • Bash(jq *)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • jq

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

  • Network

    Links to these hosts (documentation or services it may open):

    • statusmatcher.com

    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

Status Match loads about 3.6k tokens when it runs. Until then it costs about 65 tokens; SKILL.md has 1,656 words of instructions outside code blocks.

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

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,656 words, ~3,553 tokens.

Download SKILL.mdSave it as .claude/skills/status-match/SKILL.md (or your agent's skills folder).
name
status-match
description
Status match and status challenge rules for airlines and hotels. Covers free direct matches, paid concierge via statusmatch.com with fees, card-granted status, and critical lifetime/once-per-N-years restrictions that make wasted matches expensive.
allowed-tools
Bash(jq *)
category
reference
summary
Per-program status match rules with lifetime / once-per-N-years warnings, free vs paid concierge distinction, real fees, plus card-granted renewable status as…

Status Match Reference

When a user wants to switch loyalty programs or shortcut to elite status, the question is rarely "can I match?" but "should I match?" The answer depends on three things this skill makes explicit: how often the program lets you do it, what it costs (free vs paid concierge), and whether a credit card already grants the tier you want.

Reference data: data/status-match.json. Refresh cadence is 90 days because rules change occasionally but not weekly.

Critical Rule: Lifetime Restrictions Punish Wasted Matches

Many of the best status matches are once-per-lifetime or once-every-3-years. A match wasted in the wrong year because the user doesn't have travel coming up is gone forever. Always read the lifetime_warning field before recommending an application.

The biggest offenders:

ProgramRestriction
Alaska Atmos RewardsONCE PER LIFETIME (literally; from terms: "one status match for the lifetime of their account")
Flying Blue (paid concierge)ONCE PER LIFETIME ("Only 1 match is allowed per person")
United MileagePlusONCE EVERY 3 YEARS (failed challenge can extend lockout to 5 years)
Delta SkyMilesONCE EVERY 3 YEARS (per official terms)
AA AAdvantage Instant Status PassONCE EVERY 2 YEARS
Hyatt Globalist ChallengeLIKELY once per lifetime (community-confirmed; not in published terms; Hyatt has discretion)
Marriott Platinum ChallengeLIKELY once per lifetime when offered (targeted; not always available; opt-in only)
Hilton Diamond ChallengeLIKELY once per lifetime (when offered; Gold via Amex Platinum is renewable separately and not subject to the lifetime restriction)

When the user is considering a match, the first question to answer is "do you have travel that uses this status in the next 6-12 months?" If no, don't burn the match. Card-based renewable status is the better fallback (see below).

When to Use This Skill

  • User asks about status match, status challenge, or "matching" elite tiers
  • User considers switching airlines or hotel chains for loyalty
  • User mentions a once-in-a-while opportunity (e.g., "I just got Hyatt Globalist with their challenge — can I do this again?")
  • User mentions statusmatch.com or statusmatcher.com
  • User asks how to get elite status without flying/staying as much
  • User compares the cost of a paid concierge match vs the value of the perks

When NOT to Use

  • User has elite status already and just wants to use it (use booking-guidance)
  • User wants to know which credit card grants which status (this skill covers that, but if the question is pure card recommendations, also reference points-valuations)
  • Award flight searching (use seats-aero, compare-flights)

The Three Paths to Elite Status

Path 1: Free Direct Status Match

The destination program offers the match for free, no third party. Best path when available.

ProgramRestrictionInitialChallenge
AA AAdvantageOnce every 2 yearsTrialYes (Loyalty Points)
United MileagePlusOnce every 3 years120 daysYes (PQF + PQP)
Delta SkyMilesOnce every 3 years90 daysYes (MQDs)
Alaska AtmosOnce per lifetime (verified primary)90 daysYes (base points)
Hyatt Globalist ChallengeLIKELY once per lifetime (community-confirmed; Hyatt discretion)variesYes (paid nights)
Marriott Platinum ChallengeLIKELY once per lifetime when offered (targeted)variesYes (paid nights)
Hilton Diamond ChallengeLIKELY once per lifetime (when offered)variesYes (paid nights)
IHG One RewardsVaries by promovariesSometimes

For full details, see direct_matches section of data/status-match.json.

Path 2: Paid Concierge via statusmatch.com

A third-party service (Loyalty Status Co) operates statusmatch.com and partners with specific airlines and hotels. They process your application for a fee. The matches are real. The trade-off is cash-for-status — only worth it if the perks for your travel exceed the fee.

ProgramUS Fee Range (approx)Lifetime Restriction
Flying Blue (Air France/KLM)USD $99-$199Once per lifetime
Lufthansa Miles & MoreEUR €99 (free for HON Circle, Club Plus, Club Premium)Once per promotion
Etihad GuestRegion-tiered, variesOnce per promotion
Air Canada Aeroplanvaries; Aeroplan Visa cardholders may be discountedOnce per promotion
FrontiervariesPer promotion
Spirit Free SpiritvariesPer promotion
Emirates SkywardsvariesPer promotion
Vietnam Airlines, Royal Jordanian, Air Astana, Star Alliance multi (Singapore, Swiss, Thai, TAP, Turkish, etc.)variesPer promotion
citizenM, GHA Discovery (hotels)variesPer promotion

Always check the destination subdomain's FAQ for current fees (e.g., flyingblue.statusmatch.com/faq). Fees vary by source country and target tier.

For full details, see paid_concierge section of data/status-match.json.

Path 3: Card-Granted Renewable Status

For mid-tier hotel status (Gold) and a few other tiers, holding a credit card grants the status automatically. This is renewable for the life of the card — no lifetime restriction, no challenge to complete.

CardAnnual FeeStatus Granted
Amex Platinum / Business Platinum$895 (was $695, increased Jan 2 2026)Hilton Gold + Marriott Gold
Hilton Aspire$550Hilton Diamond
Hilton Surpass$150Hilton Gold (Diamond requires $40K spend)
World of Hyatt Card (Chase)$95Hyatt Discoverist
Marriott Bonvoy Brilliant (Amex)$650Marriott Platinum Elite
IHG One Rewards Premier (Chase)$99IHG Platinum Elite

Note on Amex Platinum / Business Platinum: Annual fee increased from $695 to $895 effective January 2, 2026 (announced September 2025). Existing cardholders had their renewal cycles affected after that date. The card still grants Hilton Gold + Marriott Gold automatically — those benefits themselves are free, but the AF is the cost of access.

Decision rule: if a credit card grants the tier you want and you'd hold the card anyway for other benefits, that beats a one-time match every time. Status match is best for tiers no card grants (most airline tiers; hotel Diamond/Titanium without spend gating).

For full details, see card_based_status section of data/status-match.json.

Workflow

Step 1: Identify what status the user actually wants

Ask if not already clear:

  • Which program (AA, United, Hyatt, Marriott, etc.)?
  • What tier (mid-tier benefits like Gold/Silver are very different from top-tier benefits like Platinum/Diamond/1K)?
  • What's their current status they'd be matching FROM?
Step 2: Check Path 3 first (card-based)

Query card_based_status in data/status-match.json. If a card already grants the equivalent tier and the user holds (or would hold) that card, recommend that path. No status match needed.

Show full SKILL.md (669 more words)Show less
Step 3: Check Path 1 (free direct match)

If no card grants it, query direct_matches.airlines or direct_matches.hotels for the destination program. Pull the lifetime restriction and challenge requirements.

Critical: explicitly tell the user the lifetime restriction. Example:

"Alaska Atmos status match is once per lifetime. Their terms quote: 'one status match for the lifetime of their account.' If you don't have flying coming up that uses this status before Q4, hold off. Once you submit, you can never do this again."

Step 4: If no free path exists, check Path 2 (paid concierge)

Query paid_concierge.programs. Pull the fee for the user's region and the lifetime restriction.

Compute whether the fee is worth it:

fee_in_usd = ... (from data file)
status_value_per_year = (lounge access cash value) + (free bag fees saved on N flights) + (upgrade probability * upgrade value) + (better redemption visibility)
break_even_years = fee_in_usd / status_value_per_year

If break-even is under 1 year of typical travel, recommend. If over 2-3 years (and the match isn't lifetime), reconsider.

Step 5: Cross-check via community database

For grants/denials in the past 6 months, point at statusmatcher.com. Useful for confirming the program is currently accepting matches and what proof is being accepted.

Output Format

Always use markdown tables. When recommending a match, structure as:

FieldValue
ProgramAlaska Atmos Gold
PathDirect Free Match
Initial validity90 days
Challenge10,000 base points on Alaska/Hawaiian flights in 90 days
FeeFree
Lifetime restrictionONCE PER LIFETIME
Source verifiedAlaska primary source

After the table, give the verdict:

Recommend / Hold / Skip. Reasoning: ...

When the user is on the fence, surface the key question: "do you have flying/staying coming up in the next 6-12 months that uses this status?" If yes, go. If no, the match is worth more later.

Useful jq Queries

bash
# All programs that allow free direct matches
jq '.direct_matches.airlines | to_entries[] | select(.value.fee == "free") | {program: .value.program, lifetime: .value.lifetime_warning}' data/status-match.json

# All paid concierge programs with US fees
jq '.paid_concierge.programs | to_entries[] | {program: .value.program, us_fee: (.value.fees_by_region.us // .value.fees_summary // null)}' data/status-match.json

# All cards that grant hotel status
jq '.card_based_status | to_entries[] | select(.value.renewable_status != null) | {card: .value.card, annual_fee: .value.annual_fee_usd, status: [.value.renewable_status[] | .program + " " + .tier]}' data/status-match.json

# All ONCE PER LIFETIME programs (never miss this warning)
jq '[.direct_matches.airlines, .direct_matches.hotels, .paid_concierge.programs] | add | to_entries[] | select((.value.lifetime_warning // "") | test("LIFETIME"; "i")) | {program: .value.program, warning: .value.lifetime_warning, detail: .value.lifetime_warning_detail}' data/status-match.json

Important Caveats

  • Recent activity proof. Most matches require proof of current status (status card, activity within last 12 months). Lifetime/promotional/transferred status holders are typically NOT eligible to match FROM (you can't use Lifetime Marriott Platinum to match into Hilton Diamond).

  • Match into the highest tier you qualify for at time of application. Several programs (Flying Blue specifically) cap your match to the tier you have when applying — you can't upgrade later if your source-program status improves.

  • Hotel matches usually require a "challenge." A small number of paid stays in 90 days. Award stays, points stays, and OTA-booked stays typically don't count. Direct booking only.

  • Airline matches often require revenue spending. PQP/MQD requirements during the trial period. Award flights and bonus points don't count.

  • Statusmatch.com is legitimate. Some users mistake the paid concierge for a scam. It is not. Loyalty Status Co operates with formal partnerships with airlines/hotels. The matches granted are real status that works directly with the program afterward. The fee is the catch, not the legitimacy.

  • Apply timing matters. Status earned through a match in late summer (post-July 1) often lasts 18+ months because it counts toward both the current and next program year. This is the highest-value timing for most airlines.

Cross-References

  • points-valuations — when computing whether elite status changes the CPP math (lounge value, upgrade probability, free bag fees saved)
  • trip-calculator — for the fee/value math on Path 2 paid concierge matches: is the application fee less than the value of the perks across the user's expected travel pattern?
  • booking-guidance — once you have status, how to actually use it for booking
  • alliances — alliance benefits propagate; matched into oneworld Sapphire via Atmos Gold gets you sapphire benefits across all oneworld carriers
  • partner-awards — status sometimes affects which partner awards are bookable through which program
  • stopovers — elite status sometimes unlocks better stopover treatment on certain programs
  • award-holds — some programs grant longer hold windows to elite members

Source Hierarchy (Per Research Integrity Protocol)

  1. Airline/hotel program's own published terms — primary source for direct matches (aa.com, delta.com, alaskaair.com, etc.)
  2. statusmatch.com FAQ pages — primary source for paid concierge fees and rules (subdomain-specific FAQs)
  3. Frequent Miler, Upgraded Points, OMAAT — secondary sources for landscape, current promos, decision-making frameworks
  4. statusmatcher.com community database — verification of recent grants/denials, current acceptance patterns
  5. Reddit /r/awardtravel — most current real-world reports

When sources disagree, primary sources win. When official terms are silent on lifetime restrictions, default to "treat as once per program cycle" and flag UNVERIFIED.

© 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/status-match of borski/travel-hacking-toolkit.

Open the folder on GitHubat commit db82131

Compare with similar skills

Status Match 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.

Status Match compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Status Match this skillborski/travel-hacking-toolkit688—~3.6kAutomated safety check: PassMIT
Agent Challengesruvnet/ruflo74k2 repos~995Automated safety check: PassMIT
Challengealirezarezvani/claude-skills28k1 repos~1.7kAutomated safety check: PassMIT
Find Matching Tenderssickn33/agentic-awesome-skills47k1 repos~1kAutomated safety check: PassApache-2.0
Og URL Matchthedaviddias/Front-End-Checklist74k—~543Automated safety check: PassMIT
Challengepedrohcgs/claude-code-my-workflow1.7k—~1.9kAutomated safety check: NotesMIT

Similar skills

  • Agent Challenges

    ruvnet/ruflo

    Agent skill for challenges - invoke with $agent-challenges. An agent skill from ruvnet/ruflo.

    74k GitHub starsUsed in 2 repos~995 tokens
    Auto-check passed
  • Challenge

    alirezarezvani/claude-skills

    Pre-mortem plan analysis. An agent skill from alirezarezvani/claude-skills.

    28k GitHub starsUsed in 1 repo~1.7k tokens
    Business, Finance & HRAuto-check passed
  • Find Matching Tenders

    sickn33/agentic-awesome-skills

    Find open AU/NZ government tenders matching what a company does, ranked by fit with why and gap analysis.

    47k GitHub starsUsed in 1 repo~1k tokens
    Sales & SupportAuto-check passed
  • Og URL Match

    thedaviddias/Front-End-Checklist

    A skill your agent uses when auditing Open Graph tags or investigating why social share counts appear low.

    74k GitHub stars~543 tokensUpdated 2 days ago
    Auto-check passed
  • Challenge

    pedrohcgs/claude-code-my-workflow

    Stress-test a finding against the choices you did not make. An agent skill from pedrohcgs/claude-code-my-workflow.

    1.7k GitHub stars~1.9k tokensUpdated 11 days ago
    Testing & QAAuto-check: notes
  • Independent challenge pass for a non-trivial or high-risk change.

    4.7k GitHub stars~1.1k tokensUpdated today
    DevOps & CloudAuto-check passed

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.

    688 GitHub stars~3.1k tokensUpdated 3 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.

    688 GitHub stars~2.8k tokensUpdated 3 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).

    688 GitHub stars~1.5k tokensUpdated 3 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).

    688 GitHub stars~2.1k tokensUpdated 3 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.

    688 GitHub stars~4.2k tokensUpdated 3 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.

    688 GitHub stars~1.7k tokensUpdated 3 days ago
    Auto-check passed

Questions about Status Match

What does Status Match do?

Status match and status challenge rules for airlines and hotels. Status Match is an agent skill from borski/travel-hacking-toolkit. Status match and status challenge rules for airlines and hotels.

How do I install Status Match in Claude Code?

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

How do I install Status Match in Codex?

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

Can I use Status Match 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 status-match -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/status-match, .gemini/skills/status-match, .github/skills/status-match and .opencode/skills/status-match in your project.

What does Status Match need to run?

Going by SKILL.md and its folder, Status Match needs the command-line tools its instructions call (jq). Its frontmatter pre-approves these tools: Bash(jq *).

Does Status Match access the network?

SKILL.md names 1 domain. As links in the text: statusmatcher.com. This is read from the text; nothing was executed.

Is Status Match 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 Status Match use?

Status Match 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 Status Match use?

About 3.6k tokens (SKILL.md is roughly 14k 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 Status Match?

Skills that share tags, products or a category with Status Match: Agent Challenges (ruvnet/ruflo, 74k stars), Challenge (alirezarezvani/claude-skills, 28k stars), Find Matching Tenders (sickn33/agentic-awesome-skills, 47k stars) and Og URL Match (thedaviddias/Front-End-Checklist, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Status Match?

borski (a GitHub user) maintains it in borski/travel-hacking-toolkit, which has 688 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.