Install any skill in seconds. Free to start, no credit card required.
Get Started Free →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.
.claude/skills/borski-status-match/SKILL.md| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-10 | ✗→✓ | ▲ Improved | 202% | 0% |
| case-01 | ✗→✓ | ▲ Improved | 136% | 0% |
| case-02 | ✗→✓ | ▲ Improved | 190% | 0% |
| case-04 | ✗→✓ | ▲ Improved | 195% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 143% | 0% |
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.
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:
| Program | Restriction | |---------|-------------| | Alaska Atmos Rewards | ONCE 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 MileagePlus | ONCE EVERY 3 YEARS (failed challenge can extend lockout to 5 years) | | Delta SkyMiles | ONCE EVERY 3 YEARS (per official terms) | | AA AAdvantage Instant Status Pass | ONCE EVERY 2 YEARS | | Hyatt Globalist Challenge | LIKELY once per lifetime (community-confirmed; not in published terms; Hyatt has discretion) | | Marriott Platinum Challenge | LIKELY once per lifetime when offered (targeted; not always available; opt-in only) | | Hilton Diamond Challenge | LIKELY 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).
booking-guidance)points-valuations)seats-aero, compare-flights)The destination program offers the match for free, no third party. Best path when available.
| Program | Restriction | Initial | Challenge | |---------|-------------|---------|-----------| | AA AAdvantage | Once every 2 years | Trial | Yes (Loyalty Points) | | United MileagePlus | Once every 3 years | 120 days | Yes (PQF + PQP) | | Delta SkyMiles | Once every 3 years | 90 days | Yes (MQDs) | | Alaska Atmos | Once per lifetime (verified primary) | 90 days | Yes (base points) | | Hyatt Globalist Challenge | LIKELY once per lifetime (community-confirmed; Hyatt discretion) | varies | Yes (paid nights) | | Marriott Platinum Challenge | LIKELY once per lifetime when offered (targeted) | varies | Yes (paid nights) | | Hilton Diamond Challenge | LIKELY once per lifetime (when offered) | varies | Yes (paid nights) | | IHG One Rewards | Varies by promo | varies | Sometimes |
For full details, see direct_matches section of data/status-match.json.
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.
| Program | US Fee Range (approx) | Lifetime Restriction | |---------|----------------------|---------------------| | Flying Blue (Air France/KLM) | USD $99-$199 | Once per lifetime | | Lufthansa Miles & More | EUR €99 (free for HON Circle, Club Plus, Club Premium) | Once per promotion | | Etihad Guest | Region-tiered, varies | Once per promotion | | Air Canada Aeroplan | varies; Aeroplan Visa cardholders may be discounted | Once per promotion | | Frontier | varies | Per promotion | | Spirit Free Spirit | varies | Per promotion | | Emirates Skywards | varies | Per promotion | | Vietnam Airlines, Royal Jordanian, Air Astana, Star Alliance multi (Singapore, Swiss, Thai, TAP, Turkish, etc.) | varies | Per promotion | | citizenM, GHA Discovery (hotels) | varies | Per 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.
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.
| Card | Annual Fee | Status Granted | |------|-----------|----------------| | Amex Platinum / Business Platinum | $895 (was $695, increased Jan 2 2026) | Hilton Gold + Marriott Gold | | Hilton Aspire | $550 | Hilton Diamond | | Hilton Surpass | $150 | Hilton Gold (Diamond requires $40K spend) | | World of Hyatt Card (Chase) | $95 | Hyatt Discoverist | | Marriott Bonvoy Brilliant (Amex) | $650 | Marriott Platinum Elite | | IHG One Rewards Premier (Chase) | $99 | IHG 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.
Ask if not already clear:
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.
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."
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_yearIf break-even is under 1 year of typical travel, recommend. If over 2-3 years (and the match isn't lifetime), reconsider.
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.
Always use markdown tables. When recommending a match, structure as:
| Field | Value | |-------|-------| | Program | Alaska Atmos Gold | | Path | Direct Free Match | | Initial validity | 90 days | | Challenge | 10,000 base points on Alaska/Hawaiian flights in 90 days | | Fee | Free | | Lifetime restriction | ONCE PER LIFETIME | | Source verified | Alaska 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.
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
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 bookingalliances — alliance benefits propagate; matched into oneworld Sapphire via Atmos Gold gets you sapphire benefits across all oneworld carrierspartner-awards — status sometimes affects which partner awards are bookable through which programstopovers — elite status sometimes unlocks better stopover treatment on certain programsaward-holds — some programs grant longer hold windows to elite membersWhen sources disagree, primary sources win. When official terms are silent on lifetime restrictions, default to "treat as once per program cycle" and flag UNVERIFIED.
Other measured skills in the registry, with their headline benchmark lift.