Install the "compare-hotels" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/compare-hotels into .claude/skills/compare-hotels/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compare-hotels", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add borski/travel-hacking-toolkit --skill compare-hotels -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "compare-hotels" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/compare-hotels into .agents/skills/compare-hotels/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compare-hotels", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add borski/travel-hacking-toolkit --skill compare-hotels -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "compare-hotels" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/compare-hotels into .cursor/skills/compare-hotels/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compare-hotels", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add borski/travel-hacking-toolkit --skill compare-hotels -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "compare-hotels" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/compare-hotels into .gemini/skills/compare-hotels/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compare-hotels", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add borski/travel-hacking-toolkit --skill compare-hotels -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "compare-hotels" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/compare-hotels into .github/skills/compare-hotels/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compare-hotels", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add borski/travel-hacking-toolkit --skill compare-hotels -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "compare-hotels" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/compare-hotels into .opencode/skills/compare-hotels/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "compare-hotels", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Facts
Skill name
compare-hotels
GitHub stars
688
Token cost
~2.6k tokens
SKILL.md length
1,076 words
Files
1
Skills in repo
46
Repo updated
First seen
Licence
MIT
At a glance
Unified hotel comparison across Chase Edit, Amex FHR/THC, metasearch, and Airbnb.
Works in 5 steps: Search All Sources → Identify Stacking Opportunities → Calculate Points Value → …
SKILL.md covers When to Use, Sources, Workflow and Airbnb Integration, plus 3 more sections
Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md
What it does
Compare Hotels is an agent skill from borski/travel-hacking-toolkit. Unified hotel comparison across Chase Edit, Amex FHR/THC, metasearch, and Airbnb. Highlights premium program benefits, stacking opportunities, and benefit-adjusted pricing.
Its SKILL.md is about 2.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
“/compare-hotels”
Requirements
Node.js
Docker
Workflow steps
5 steps, taken from the step headings in SKILL.md.
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
Compare Hotels loads about 2.6k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 1,076 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~47
When it runs· the whole SKILL.md, loaded when a task matches
~2.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.
Download SKILL.mdSave it as .claude/skills/compare-hotels/SKILL.md (or your agent's skills folder).
name
compare-hotels
description
Unified hotel comparison across Chase Edit, Amex FHR/THC, metasearch, and Airbnb. Highlights premium program benefits, stacking opportunities, and benefit-adjusted pricing.
category
orchestration
summary
Unified hotel comparison across portals, metasearch, and Airbnb. FHR/Edit stacking detection.
api_key
Uses individual skill keys
Companion reference skills. Load these for deeper context:
hotel-chains — branded property to loyalty program mapping
points-valuations — CPP floor/ceiling for hotel programs (Hyatt 1.4-1.7cpp, Hilton 0.4cpp floor, etc.)
fallback-and-resilience — recovery when a hotel source fails
Compare Hotels
Search every available source for accommodation and present one unified comparison. Combines portal premium programs (Chase Edit, Amex FHR/THC), cash pricing, and Airbnb alternatives into a single view.
This is an orchestration skill. It tells the agent which tools to run and how to combine results. No standalone script.
When to Use
"Find me a hotel in Paris for Aug 11-15"
"Should I book through Chase or Amex for this hotel?"
"Compare hotels vs Airbnb in Oslo"
Any accommodation search where the user wants the full picture
Sources
Run these in parallel where possible. Never fail silently.
Portal Premium Programs (Docker required)
Source
Skill
Speed
What It Finds
Chase Travel
chase-travel
~45s
Edit hotels ($100 credit, breakfast, upgrade), Points Boost, standard hotels
Amex Travel
amex-travel
~45s
FHR ($100+ credit, breakfast, upgrade, late checkout), THC ($100 credit on 2+ nights)
Cash Prices and Metasearch
Source
Skill/Tool
Speed
What It Finds
SerpAPI
serpapi
~3s
Google Hotels cash prices and direct booking links.
Trivago
web search
~5s
Metasearch across many OTAs. Use tavily/exa to search trivago.com. Finds the absolute cheapest OTA rate.
LiteAPI
web search
~5s
Hotel API aggregator with negotiated rates. Check liteapi.travel. Can find rates below public OTA pricing.
RapidAPI
rapidapi
~3s
Booking.com inventory and pricing. Optional, use when user asks for Booking.com specifically.
SerpAPI, Trivago, and LiteAPI are all default. Always search all three. Only add RapidAPI if the user asks for Booking.com specifically. Use TripAdvisor for quality data (ratings, rankings, reviews) to complement pricing from other sources.
Vacation Rentals
Source
Skill/Tool
Speed
What It Finds
Airbnb
airbnb_search MCP tool
~5s
Entire homes, private rooms, with total pricing
VRBO
vrbo skill (Patchright)
~20s
Whole homes, condos, cabins. Professionally-managed units often not on Airbnb. Headed/Docker — behind Akamai.
Premium Property Databases (local, instant)
Source
Data File
What It Finds
FHR properties
data/fhr-properties.json
Check if a hotel is FHR before booking
THC properties
data/thc-properties.json
Check if a hotel is THC
Chase Edit properties
data/chase-edit-properties.json
Check if a hotel is in Chase's Edit program
Workflow
Step 1: Search All Sources
PARALLEL GROUP 1 (fast — HTTP/API/MCP calls, no browser, ~3-5s):
- SerpAPI: Google Hotels cash prices
- Trivago: metasearch across OTAs (web search)
- LiteAPI: negotiated hotel rates (web search)
- Airbnb: vacation rentals in the area (npx MCP — lightweight scrape, not a browser)
- Local data: check premium-hotels databases for the city
PARALLEL GROUP 2 (slow — headed browser via Patchright/Xvfb in Docker, ~20-45s):
- VRBO: whole homes / condos / cabins — vrbo skill (~20s, headed/Docker, behind Akamai; run for whole-home comparisons alongside Airbnb)
- Chase Travel: --hotel --dest "City" --checkin YYYY-MM-DD --checkout YYYY-MM-DD --json
- Amex Travel: --hotel --dest "City" --checkin YYYY-MM-DD --checkout YYYY-MM-DD --json
Cross-reference results with data/fhr-properties.json, data/thc-properties.json, and data/chase-edit-properties.json:
For each hotel in results:
- Is it in FHR? → Tag [FHR]
- Is it in THC? → Tag [THC]
- Is it in Chase Edit? → Tag [EDIT]
- Is it in multiple? → Tag [FHR+EDIT] and note stacking potential
Stacking means: book through one portal, pay with the other card separately. For example, book FHR through Amex (get breakfast + credit + upgrade), then use CSR $300 travel credit on something else at the property.
Step 3: Calculate Points Value
Chase:
Chase portal pricing on CSR/CSP is dynamic Points Boost. Each booking quotes a specific points price; effective cpp typically falls in the 1.5-2.0 cpp range on CSR but is not a guaranteed floor on every booking. Pull the actual portal quote.
Points Boost offers are dynamic and vary by route/date/inventory.
The portal quote IS the actual UR cost. Don't divide by 1.5 — the listed points already reflect the dynamic Boost rate at quote time.
Amex:
Hotel portal pricing is variable (NOT always 1 cpp like flights).
The points price shown is the actual MR cost. Calculate CPP from cash/points ratio.
FHR benefits ($100+ credit, breakfast) offset the rate significantly.
When kitchen access matters (dietary restrictions, saving on meals)
When hotels win:
Short stays (1-2 nights)
Premium benefits offset the rate (FHR breakfast alone can be $100+/night value)
Points redemption gives good CPP
Loyalty status benefits (upgrades, late checkout, lounge access)
Error Handling
NEVER fail silently. Every source must report its status.
- ❌ Chase Travel: Login failed. No Chase portal pricing available.
- ❌ Airbnb: No results for this location/dates.
- ⚠️ Amex Travel: Only 3 results (some hotels may not be available for these dates).
If premium databases show FHR/Edit properties in the city but the portal search didn't return them, note this: "The FHR database lists 8 properties in Paris but Amex Travel only returned 3. Some may not have availability for your dates."
Data Files Used
File
Purpose
data/fhr-properties.json
FHR property lookup by city/coordinates
data/thc-properties.json
THC property lookup
data/chase-edit-properties.json
Chase Edit property lookup
data/hotel-chains.json
Hotel chain to loyalty program mapping
data/points-valuations.json
CPP valuations for points calculations
Limitations
Portal searches require Docker and credentials. Skip if not configured.
Airbnb MCP must be available. Skip gracefully if not.
FHR/THC/Edit databases are updated periodically. Properties may have been added or removed.
Amex hotel points pricing is variable (not 1 cpp). Use the actual points price from the portal.
Chase portal pricing is dynamic Points Boost (~1.5-2.0 cpp on select bookings, not a guaranteed floor). The historical static 1.5x multiplier is gone.
Direct booking prices (via SerpAPI) may differ from portal prices for the same hotel.
Compare Hotels 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.
Compare Hotels compared with similar skills
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Compare Hotels this skillborski/travel-hacking-toolkit
Generates complete FAERS pharmacovigilance study designs for multi-drug or class-level safety comparison inside one predefined SOC or AE family using active comparators, disproportionality analysis…
Migrate a brain from gbrain-base (or any pack) to gbrain-base-v2's 14-canonical-type taxonomy via gbrain onboard --check + the unify-types Minion handler.
Compare several Japanese NLP libraries, models, or datasets for a keyword (a specific tool name, or a function/task like '形態素解析') across a handful of criteria chosen for that comparison, rendered as…
Operate and evaluate Unified AI System through fifteen governed MCP tools, including provider-free prompt enhancement, while preserving fake-provider, authorization, and evidence boundaries.
Deutsche Bahn train schedules, journey planning, and departures across Germany and into neighboring countries (Austria, Switzerland, Netherlands, France, Belgium).
Search Sutochno.ru (СУТОЧНО.РУ), a Russian short-term apartment-rental platform where you book directly from owners and pay in rubles (Mir card / bank transfer).
Search VRBO (Vrbo / Expedia Group) vacation rentals including entire homes, condos, and cabins via Patchright browser automation.
688 GitHub stars~1.7k tokensUpdated 4 days ago
Auto-check passed
Questions about Compare Hotels
What does Compare Hotels do?
Unified hotel comparison across Chase Edit, Amex FHR/THC, metasearch, and Airbnb. Compare Hotels is an agent skill from borski/travel-hacking-toolkit. Unified hotel comparison across Chase Edit, Amex FHR/THC, metasearch, and Airbnb.
How do I install Compare Hotels in Claude Code?
Run `npx skills add borski/travel-hacking-toolkit --skill compare-hotels -a claude-code`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/compare-hotels in borski/travel-hacking-toolkit) into .claude/skills/compare-hotels in your project. Claude Code loads it when a task matches its description.
How do I install Compare Hotels in Codex?
Run `npx skills add borski/travel-hacking-toolkit --skill compare-hotels -a codex`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/compare-hotels in borski/travel-hacking-toolkit) into .agents/skills/compare-hotels in your project. Codex loads it when a task matches its description.
Can I use Compare Hotels 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 compare-hotels -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/compare-hotels, .gemini/skills/compare-hotels, .github/skills/compare-hotels and .opencode/skills/compare-hotels in your project.
What does Compare Hotels need to run?
SKILL.md names no scripts, command-line tools or credentials: Compare Hotels is instructions for the agent only. Our summary lists: Node.js; Docker.
Does Compare Hotels 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 Compare Hotels 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 Compare Hotels use?
Compare Hotels 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 Compare Hotels use?
About 2.6k tokens (SKILL.md is roughly 10k 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 Compare Hotels?
Skills that share tags, products or a category with Compare Hotels: Active Comparator Single Soc Faers Safety Comparison (aipoch/medical-research-skills, 2k stars), Unified Memory (affaan-m/ECC, 276k stars), Schema Unify (garrytan/gbrain, 31k stars) and Gaia Architecture Comparison (ruvnet/ruflo, 74k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Compare Hotels?
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.