Project Pull Request
swimmwatch/cloakbrowser-mcp
Create, update, prepare, or review a cloakbrowser-mcp GitHub Pull Request only when the user explicitly requests PR work.
Search Southwest Airlines fares and points pricing via Patchright browser automation.
$ npx skills add borski/travel-hacking-toolkit --skill southwest -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install borski/travel-hacking-toolkit southwest --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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/southwest .claude/skills/southwest && rm -rf skills-srcUse ~/.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/
Install the "southwest" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/southwest into .claude/skills/southwest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "southwest", 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.
$skill-installer install https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/southwestType 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.
$ npx skills add borski/travel-hacking-toolkit --skill southwest -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install borski/travel-hacking-toolkit southwest --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .agents/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/southwest .agents/skills/southwest && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "southwest" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/southwest into .agents/skills/southwest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "southwest", 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.
$ npx skills add borski/travel-hacking-toolkit --skill southwest -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install borski/travel-hacking-toolkit southwest --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/southwest .cursor/skills/southwest && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "southwest" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/southwest into .cursor/skills/southwest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "southwest", 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.
$ gemini skills install https://github.com/borski/travel-hacking-toolkit.git --path plugins/travel-hacking-toolkit/skills/southwest--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add borski/travel-hacking-toolkit --skill southwest -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install borski/travel-hacking-toolkit southwest --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/southwest .gemini/skills/southwest && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "southwest" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/southwest into .gemini/skills/southwest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "southwest", 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.
$ gh skill install borski/travel-hacking-toolkit southwestInstalls 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).
$ npx skills add borski/travel-hacking-toolkit --skill southwest -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .github/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/southwest .github/skills/southwest && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "southwest" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/southwest into .github/skills/southwest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "southwest", 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.
$ npx skills add borski/travel-hacking-toolkit --skill southwest -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install borski/travel-hacking-toolkit southwest --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/borski/travel-hacking-toolkit.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/plugins/travel-hacking-toolkit/skills/southwest .opencode/skills/southwest && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "southwest" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/southwest into .opencode/skills/southwest/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "southwest", 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.
southwestSearch Southwest Airlines fares and points pricing via Patchright browser automation.
Southwest is an agent skill from borski/travel-hacking-toolkit. Search Southwest Airlines fares and points pricing via Patchright browser automation. SW is not in any GDS or API. Covers all fare classes, Companion Pass value, and fare drop monitoring.
Its SKILL.md is about 3.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 6 other files, including scripts (for example `scripts/check_change.py`, `scripts/entrypoint.sh` and `scripts/monitor.py`).
It sits in Productivity & Automation, covering Browser automation. It works with Docker and Playwright. 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.
7 steps, taken from the first numbered list 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.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(python3 *)Bash(docker *)From allowed-tools in the SKILL.md frontmatter.
Ships 4 files in scripts/ (Python and Shell), which the agent can run.
Shell commands in SKILL.md call:
dockerpython3pipFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use docker and pip, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
SW_PASSWORDFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Southwest loads about 3.8k tokens when it runs. Until then it costs about 49 tokens; SKILL.md has 1,549 words of instructions outside code blocks.
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.
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); the scripts in this folder are not scanned.
The full file from borski/travel-hacking-toolkit at commit db82131, republished under its MIT licence (© borski). 1,549 words, ~3,836 tokens.
.claude/skills/southwest/SKILL.md (or your agent's skills folder). This skill also uses 5 other files; get the full folder from GitHub.Search southwest.com via Patchright (undetected Playwright fork). Southwest is the only major US airline not in any GDS, API, or flight search tool. This skill is the only way to get SW-specific data: fare classes, points pricing, and Companion Pass qualification.
Requires Patchright (undetected Playwright fork). Standard Playwright and agent-browser are detected and blocked by SW. Patchright patches the browser fingerprint to bypass detection.
Must run headed (headless=False). SW detects headless browsers even with Patchright. On macOS, a Chrome window briefly appears and closes. For background operation with no popup, use Docker:
# Search new flights (default, no login needed)
docker run --rm ghcr.io/borski/sw-fares --origin SJC --dest DEN --depart 2026-05-15
docker run --rm ghcr.io/borski/sw-fares --origin SJC --dest DEN --depart 2026-05-15 --return 2026-05-18 --points --json
# Check existing reservation for price drops (requires SW login)
docker run --rm -e SW_USERNAME -e SW_PASSWORD \
ghcr.io/borski/sw-fares change --conf ABC123 --first Jane --last Doe --json
# List all upcoming trips
docker run --rm -e SW_USERNAME -e SW_PASSWORD \
ghcr.io/borski/sw-fares change --list --json
# Build locally
docker build -t sw-fares skills/southwest/The Docker image uses xvfb to create a virtual display inside the container. Patchright runs "headed" against xvfb, bypassing SW's headless detection without opening any windows on your machine.
# Install
pip install patchright && patchright install chromium
# Search cash fares
python3 scripts/search_fares.py --origin SJC --dest DEN --depart 2026-05-15
# Search cash + points
python3 scripts/search_fares.py --origin SJC --dest DEN --depart 2026-05-15 --return 2026-05-18 --points
# JSON output
python3 scripts/search_fares.py --origin SJC --dest DEN --depart 2026-05-15 --points --jsonKey implementation details learned the hard way:
fareType=POINTS URL parameter for points pricing. Don't try to click the Points toggle on the page.[role='main'] NOT <main>. The <main> element contains the booking form. [role='main'] contains the flight results.# \d+ patterns and ending at View seats.pip install patchright && patchright install chromiumOr use Docker (no local install needed):
# Pre-built image (fastest)
docker pull ghcr.io/borski/sw-fares:latest
# Or build locally
docker build -t sw-fares skills/southwest/| Fare | Points | Cash | Companion Pass | Change/Cancel | Bags |
|---|---|---|---|---|---|
| Basic (Wanna Get Away) | Lowest | Lowest | NO | Credit only | 2 free |
| Choice (Wanna Get Away Plus) | Low | Low | YES | Transferable credit | 2 free |
| Choice Preferred (Anytime) | High | High | YES | Refundable | 2 free |
| Choice Extra (Business Select) | Highest | Highest | YES | Refundable + priority | 2 free |
Critical for Companion Pass: Only Choice and above qualify. Basic does NOT. This changes the CPP math significantly.
When CP is in play, one ticket buys travel for two:
Total cash value = qualifying_fare_cash x 2 passengers
CPP = total_cash_value / total_points x 100Always frame as "points bought $X of travel for 2 people."
Do NOT try to automate the SW booking form manually. It's fragile and the form's React state doesn't cooperate with browser automation. Use the script instead, which navigates directly to the results URL.
# Local (opens a Chrome window briefly)
python3 skills/southwest/scripts/search_fares.py --origin SJC --dest DEN --depart 2026-05-15
# With return date and points
python3 skills/southwest/scripts/search_fares.py --origin SJC --dest DEN --depart 2026-05-15 --return 2026-05-18 --points
# JSON output for programmatic use
python3 skills/southwest/scripts/search_fares.py --origin SJC --dest DEN --depart 2026-05-15 --points --json
# Docker (no Chrome window, no display needed)
docker run --rm ghcr.io/borski/sw-fares --origin SJC --dest DEN --depart 2026-05-15 --return 2026-05-18 --pointsThe script handles everything: homepage warmup, cookie dismissal, result extraction, points toggle.
fareType=USD for cash or fareType=POINTS for points[role='main'] (NOT <main> which is the booking form)# \d+ patternsWhy fareType in the URL instead of clicking the Points toggle: The Points label on the results page is in a different frame context than the flight cards. Clicking it via Playwright is unreliable. Using the URL parameter loads points results directly. Two page loads (cash + points) is more reliable than one load + a toggle click.
Why [role='main'] not main: SW has two content areas. The <main> HTML element contains the booking form. The [role='main'] ARIA attribute marks the flight results. Using the wrong one returns zero flights.
Always use markdown tables. Show both cash and points in separate tables.
| Flight | Depart | Arrive | Stops | Duration | Basic | Choice | Ch Pref | Ch Extra |
|---|---|---|---|---|---|---|---|---|
| #104 | 6:00AM | 9:35AM | Nonstop | 2h 35m | $277 | $317 | $387 | $432 |
| #1681 | 7:40PM | 11:05PM | Nonstop | 2h 25m | $209 | $249 | $319 | $364 |
| #481/3780 | 6:35AM | 12:05PM | 1 stop via PHX | 4h 30m | $219 | $259 | $329 | $374 |
| Flight | Depart | Arrive | Stops | Duration | Basic | Choice | Ch Pref | Ch Extra |
|---|---|---|---|---|---|---|---|---|
| #104 | 6:00AM | 9:35AM | Nonstop | 2h 35m | 23,500 +$5.60 | 27,000 +$5.60 | 33,000 +$5.60 | 36,500 +$5.60 |
cash_price / points x 100READ-ONLY script. NEVER modifies, changes, or cancels any flight.
Logs into southwest.com, looks up an existing reservation, and reads the Change Flight page to check if prices have dropped below what was paid.
# Set your SW credentials however you like (env vars, 1Password, etc.)
export SW_USERNAME="your_username"
export SW_PASSWORD="your_password"
# List all upcoming trips (auto-discover confirmation numbers)
docker run --rm -e SW_USERNAME -e SW_PASSWORD \
ghcr.io/borski/sw-fares change --list --json
# Check a specific reservation for price drops
docker run --rm -e SW_USERNAME -e SW_PASSWORD \
ghcr.io/borski/sw-fares change --conf ABC123 --first Jane --last Doe --json
# Local (opens Chrome window, for debugging only)
SW_USERNAME=your_user SW_PASSWORD=your_pass \
python3 scripts/check_change.py --conf ABC123 --first Jane --last Doe --debugSW bookings use the legal name on the reservation, not nicknames. Use the exact first and last name that appears on the booking.
--list: clicks My Account, expands accordion for each trip, extracts confirmation numbers--conf: navigates to Change Flight page, fills lookup form, selects both legs, clicks "Explore options"CURRENT FLIGHT = your booked flight (Basic cell shows "CURRENT", no change)+2,000 = this flight costs 2,000 points MORE than what you paid-2,000 = this flight costs 2,000 points LESS (savings, rebook opportunity)Unavail = fare class sold outLogin flyout:
button:has-text('Log in')input[aria-label*='Account']input[name='password']button[type='submit']:has-text('Log in')Change flight lookup form:
input[id*='confirmationNumber']input#passengerFirstNameinput#passengerLastNamebutton#form-mixin--submit-button (text: "Continue")Leg selection:
label:has(input[type='checkbox']) (visible labels, hidden inputs)button#form-mixin--submit-button (text: "Explore options")The change command DOES NOT WORK on Companion Pass-linked reservations. SW shows a banner: "Companion itinerary linked. To change it, cancel the companion's flight first."
For CP-linked reservations (or any monitoring scenario where you don't want to log in), use the monitor subcommand instead. It uses the public fare-search flow and matches your booked flight number against current results. No login needed.
Compare current SW fares against what you paid for booked flights. Reports any specific booked flight where the current price has dropped below the baseline (= reclaimable travel credit when you rebook).
No login needed. Uses the public search-fares flow and matches by exact flight number. Works on CP-linked reservations where the change-flight flow is blocked.
Provide a JSON array of trips:
[
{
"name": "Trip name (display only)",
"confirmation": "ABC123",
"passenger": "Jane (free-text label, display only)",
"outbound": {
"origin": "SJC",
"dest": "SAN",
"date": "2026-04-30",
"flight_number": "4107",
"baseline_pts": 13000
},
"return": {
"origin": "SAN",
"dest": "SJC",
"date": "2026-05-03",
"flight_number": "4119",
"baseline_pts": 17500
}
}
]The flight_number MUST match exactly how SW displays it in search results. For multi-segment flights it includes spaces, e.g. "3657 / 4630". The return leg can be omitted for one-way trips.
# Check all trips in the config
docker run --rm -v /path/to/trips.json:/app/trips.json:ro \
ghcr.io/borski/sw-fares monitor --config /app/trips.json
# Check just one trip by confirmation number
docker run --rm -v /path/to/trips.json:/app/trips.json:ro \
ghcr.io/borski/sw-fares monitor --config /app/trips.json --only ABC123
# JSON output
docker run --rm -v /path/to/trips.json:/app/trips.json:ro \
ghcr.io/borski/sw-fares monitor --config /app/trips.json --jsonpython3 scripts/monitor.py --config /path/to/trips.jsonbaseline_pts from configIf you rebook a leg to capture savings, update the baseline_pts for that leg in the config to the new (lower) paid amount. Otherwise the next monitor run will keep flagging the same opportunity falsely.
| check_change | monitor | |
|---|---|---|
| Login required | Yes | No |
| Works on CP-linked reservations | No | Yes |
| Shows alternatives at all times | Yes | No (only the booked flight) |
| Brittle SW DOM dependencies | High (form clicks) | Low (URL params + text parse) |
| Output detail | Full fare-class diffs for every alternative | Basic-fare diff for your exact booked flight |
monitor is the right tool for routine baseline tracking. check_change is useful when you want to see ALL alternatives across all fare classes, but only on non-CP reservations.
© borski, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 5 other files (scripts) in plugins/travel-hacking-toolkit/skills/southwest of borski/travel-hacking-toolkit.
Open the folder on GitHubat commit db82131
Southwest 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Southwest this skillborski/travel-hacking-toolkit | 688 | — | ~3.8k | Automated safety check: Pass | MIT | |
| Project Pull Requestswimmwatch/cloakbrowser-mcp | 164 | — | ~1k | Automated safety check: Pass | MIT | |
| Scraper Builderjwynia/agent-skills | 170 | — | ~4k | Automated safety check: Pass | MIT | |
| Project Releaseswimmwatch/cloakbrowser-mcp | 164 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Project Docs Maintainerswimmwatch/cloakbrowser-mcp | 164 | — | ~569 | Automated safety check: Pass | MIT | |
| PlaywrightEliasOulkadi/shokunin | 114 | — | ~3.6k | Automated safety check: Notes | MIT |
swimmwatch/cloakbrowser-mcp
Create, update, prepare, or review a cloakbrowser-mcp GitHub Pull Request only when the user explicitly requests PR work.
jwynia/agent-skills
Guide AI agents to generate complete PageObject pattern web scraper projects using Playwright and TypeScript with Docker deployment.
swimmwatch/cloakbrowser-mcp
Prepare, publish, verify, or recover a cloakbrowser-mcp release only when the user explicitly requests release work.
swimmwatch/cloakbrowser-mcp
Maintain, organize, consolidate, or audit the cloakbrowser-mcp documentation set only when the user explicitly requests project documentation maintenance or an authorized public change requires it.
EliasOulkadi/shokunin
Browser automation, web scraping, E2E testing, and visual regression with Playwright.
Skyvern-AI/skyvern
Picks the right Skyvern CLI command for a web task, from quick yes/no checks to reusable multi-page workflows, instead of falling back to plain page fetching.
borski/travel-hacking-toolkit
Search Amex travel portal for cash prices, MR points pricing, IAP discounts, and FHR/THC hotel benefits via Patchright.
borski/travel-hacking-toolkit
Search Chase UR travel portal via Patchright for cash prices, points pricing, Points Boost offers, and Chase Edit hotel benefits.
borski/travel-hacking-toolkit
Deutsche Bahn train schedules, journey planning, and departures across Germany and into neighboring countries (Austria, Switzerland, Netherlands, France, Belgium).
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).
borski/travel-hacking-toolkit
Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright.
borski/travel-hacking-toolkit
Search VRBO (Vrbo / Expedia Group) vacation rentals including entire homes, condos, and cabins via Patchright browser automation.
Works with
Categories
Search Southwest Airlines fares and points pricing via Patchright browser automation. Southwest is an agent skill from borski/travel-hacking-toolkit. Search Southwest Airlines fares and points pricing via Patchright browser automation.
Southwest fits situations like: tasks that involve Browser automation.
Run `npx skills add borski/travel-hacking-toolkit --skill southwest -a claude-code`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/southwest in borski/travel-hacking-toolkit) into .claude/skills/southwest in your project. Claude Code loads it when a task matches its description.
Run `npx skills add borski/travel-hacking-toolkit --skill southwest -a codex`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/southwest in borski/travel-hacking-toolkit) into .agents/skills/southwest in your project. Codex loads it when a task matches its description.
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 southwest -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/southwest, .gemini/skills/southwest, .github/skills/southwest and .opencode/skills/southwest in your project.
Going by SKILL.md and its folder, Southwest needs Python and a shell for the scripts in its folder, the command-line tools its instructions call (docker, python3 and pip) and credentials named SW_PASSWORD. Our summary lists: Python 3; A Bash shell; Docker. Its frontmatter pre-approves these tools: Bash(python3 *), Bash(docker *).
SKILL.md contains no URLs. Its commands use docker and pip, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
Southwest is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.8k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Southwest: Project Pull Request (swimmwatch/cloakbrowser-mcp, 164 stars), Scraper Builder (jwynia/agent-skills, 170 stars), Project Release (swimmwatch/cloakbrowser-mcp, 164 stars) and Project Docs Maintainer (swimmwatch/cloakbrowser-mcp, 164 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
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.