Theme Factory
anthropics/skills
Applies one of ten preset color and font themes to slide decks, documents or HTML pages, or creates a new theme on the fly after you choose from a showcase.
Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright.
$ npx skills add borski/travel-hacking-toolkit --skill ticketsatwork -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install borski/travel-hacking-toolkit ticketsatwork --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/ticketsatwork .claude/skills/ticketsatwork && 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 "ticketsatwork" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/ticketsatwork into .claude/skills/ticketsatwork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ticketsatwork", 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/ticketsatworkType 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 ticketsatwork -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install borski/travel-hacking-toolkit ticketsatwork --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/ticketsatwork .agents/skills/ticketsatwork && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "ticketsatwork" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/ticketsatwork into .agents/skills/ticketsatwork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ticketsatwork", 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 ticketsatwork -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install borski/travel-hacking-toolkit ticketsatwork --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/ticketsatwork .cursor/skills/ticketsatwork && 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 "ticketsatwork" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/ticketsatwork into .cursor/skills/ticketsatwork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ticketsatwork", 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/ticketsatwork--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 ticketsatwork -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install borski/travel-hacking-toolkit ticketsatwork --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/ticketsatwork .gemini/skills/ticketsatwork && 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 "ticketsatwork" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/ticketsatwork into .gemini/skills/ticketsatwork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ticketsatwork", 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 ticketsatworkInstalls 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 ticketsatwork -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/ticketsatwork .github/skills/ticketsatwork && 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 "ticketsatwork" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/ticketsatwork into .github/skills/ticketsatwork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ticketsatwork", 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 ticketsatwork -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 ticketsatwork --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/ticketsatwork .opencode/skills/ticketsatwork && 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 "ticketsatwork" agent skill from https://github.com/borski/travel-hacking-toolkit/tree/main/plugins/travel-hacking-toolkit/skills/ticketsatwork into .opencode/skills/ticketsatwork/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "ticketsatwork", 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.
ticketsatworkSearch TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright.
Ticketsatwork is an agent skill from borski/travel-hacking-toolkit. Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright. Often beats portals by 10-30%. Use when comparing hotel or ticket prices for a trip.
Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts (for example `scripts/browse_tickets.py`, `scripts/entrypoint.sh` and `scripts/search_cars.py`).
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.
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(docker *)Bash(python3 *)From allowed-tools in the SKILL.md frontmatter.
Ships 5 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.
Hosts in commands or code, which the agent is likely to contact:
ticketsatwork.comFrom URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Ticketsatwork loads about 4.2k tokens when it runs. Until then it costs about 55 tokens; SKILL.md has 1,692 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,692 words, ~4,226 tokens.
.claude/skills/ticketsatwork/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.Scrapes inventory from ticketsatwork.com, a corporate employee perks platform operated by Entertainment Benefits Group (EBG). Members access negotiated rates through their employer's account.
No public API. Patchright (undetected Playwright fork) is required because TaW is behind bot protection that blocks requests, vanilla Playwright, and headless Chrome.
TaW aggregates inventory from EBG's negotiated wholesale pool (similar inventory feeds as Costco Travel, AAA, etc.). On the same property + dates, TaW often beats:
Discount badges are typically genuine: the "Save $X" amount is computed against the hotel's published rate at search time.
Tradeoff: No portal credits, no card-program elite benefits, no points earning on the stay. You earn TaW "Funlife" loyalty points usable at ~1 cpp on future TaW bookings only.
| Subcommand | What it does | Status |
|---|---|---|
hotels | Hotel search by city + date range. Returns ~10-200+ properties with prices, savings vs strike rate, lat/lng, ratings, distance | Stable |
cars | Rental car search by pickup location + date/time range | Experimental. TaW resolves the autocomplete latlng but not always the airport code their car backend needs. Some valid-looking searches return "no cars at this location" even for major airports. See "Known limitations" below. |
tickets | Browse a category landing page (e.g. disneyland, wdw, usf) or keyword-search via Reflektion | Stable. Returns deal title, savings claim, description, image, detail URL. Prices are not on the listing, they appear on the detail page. |
pip install patchright && patchright install chromium)TAW_USER and TAW_PASS environment variablesForm-based email + password. The skill submits the login form via JavaScript directly. Each script run uses a fresh browser profile, so each run logs in fresh.
The visible "Sign in / Register" UI requires modal interactions that Patchright handles unreliably (cookie banner overlap, modal trigger visibility issues). The login form (#member_login_form) is in the DOM at all times, so we set values via JS and click the form's submit button.
docker pull ghcr.io/borski/ticketsatwork:latest
# Hotels
docker run --rm -e TAW_USER -e TAW_PASS \
ghcr.io/borski/ticketsatwork hotels \
--city "Carlsbad, CA" --checkin 2027-03-04 --checkout 2027-03-07 \
--rooms 1 --adults 2 --json
# Tickets / attractions (category)
docker run --rm -e TAW_USER -e TAW_PASS \
ghcr.io/borski/ticketsatwork tickets \
--category disneyland --json
# Tickets / attractions (keyword)
docker run --rm -e TAW_USER -e TAW_PASS \
ghcr.io/borski/ticketsatwork tickets \
--keyword "universal studios" --json
# Live events in destination cities (concerts, theater, sports)
docker run --rm -e TAW_USER -e TAW_PASS \
ghcr.io/borski/ticketsatwork tickets \
--section events --json
# Rental cars (experimental)
docker run --rm -e TAW_USER -e TAW_PASS \
ghcr.io/borski/ticketsatwork cars \
--pickup "San Diego Airport, CA" \
--pickup-date 2026-06-15 --pickup-time 12:00 \
--dropoff-date 2026-06-18 --dropoff-time 12:00 \
--age 30 --json# Hotels
TAW_USER=you@example.com TAW_PASS=yourpass \
python3 scripts/search_hotels.py --city "Carlsbad, CA" \
--checkin 2027-03-04 --checkout 2027-03-07 --json
# Tickets
TAW_USER=you@example.com TAW_PASS=yourpass \
python3 scripts/browse_tickets.py --category disneyland --json
# Cars
TAW_USER=you@example.com TAW_PASS=yourpass \
python3 scripts/search_cars.py \
--pickup "San Diego Airport, CA" \
--pickup-date 2026-06-15 --pickup-time 12:00 \
--dropoff-date 2026-06-18 --dropoff-time 12:00 --json| Flag | Required | Default | Description |
|---|---|---|---|
--city | yes | City or address. Goes into the destination autocomplete. | |
--checkin | yes | Check-in date in YYYY-MM-DD. | |
--checkout | yes | Check-out date in YYYY-MM-DD. | |
--rooms | no | 1 | Number of rooms. |
--adults | no | 2 | Adults per room. |
--children | no | 0 | Children per room. |
--json | no | off | Structured JSON instead of a human-readable table. |
--debug | no | off | Save screenshots + HTML at each step to /output (Docker) or /tmp/taw_debug/ (local). |
--raw-html-out | no | Write the raw results HTML to a file for offline analysis. |
{
"city": "Carlsbad, CA",
"checkin": "2027-03-04",
"checkout": "2027-03-07",
"rooms": 1,
"adults": 2,
"children": 0,
"display_pages": 14,
"listing_count": 134,
"listings": [
{
"id": "hotel_NNNNNN_x",
"name": "Property Display Name",
"name_normalized": "property display name",
"rating": 4.5,
"guest_rating": 9.0,
"price_per_night_usd": 184,
"total_price_usd": 746,
"strike_price_usd": 1122,
"savings_usd": 375.68,
"loyalty_points": 1492,
"distance_miles": 0.89,
"distance_label": "0.89 miles from the center of Carlsbad",
"property_type": "hotel",
"lat": 33.121,
"lng": -117.310,
"tripadvisor": 0.0,
"room_id": "...",
"rate_code": "...",
"featured": false,
"discount_ranking": 717.95,
"detail_url": "https://www.ticketsatwork.com/tickets/hotels.php?sub=details&id=NNNNNN_x"
}
]
}Field notes:
rating = property star rating (0.0 - 5.0).guest_rating = post-stay review average (0.0 - 10.0).total_price_usd = all-in for the stay (taxes/fees included; "All fees included" shown in UI).strike_price_usd = published comparison rate (what you'd pay direct or non-discount channel).savings_usd = strike_price_usd - total_price_usd per the badge.loyalty_points = TaW Funlife points earned from this booking.discount_ranking = TaW's internal discount-magnitude score (bigger = bigger savings vs comp rate).TaW renders all matching hotels in the initial DOM and uses simple-pagination (jQuery) to chunk visually. There are no additional listings to fetch; one parse covers the full result set. The display_pages field reflects what TaW shows the user, not what the script needs to walk.
Use exactly one of --category or --keyword:
| Flag | Description |
|---|---|
--category SLUG | Category slug like disneyland, wdw, usf, seaworld. See category list below. |
--keyword TEXT | Free-text keyword. Uses Reflektion site search. On Enter, TaW often redirects directly to the most relevant category landing page. |
--json | Structured JSON output. |
--debug | Save screenshots + HTML. |
--raw-html-out | Write the raw landing page HTML to a file. |
These are stable category landing pages (/tickets/pages.php?sub=<slug>):
| Slug | Page |
|---|---|
wdw | Walt Disney World |
disneyland | Disneyland Resort (California) |
disneyland-paris | Disneyland Paris |
usf | Universal Orlando |
ush | Universal Studios Hollywood |
seaworld | SeaWorld parks |
busch-gardens-parks | Busch Gardens parks |
sesame-place | Sesame Place parks |
all-theme-parks-attractions | Combined theme parks + attractions index |
For other categories, navigate /tickets/index.php in a browser, find the category, copy the ?sub= slug from the URL.
{
"category": "disneyland",
"keyword": null,
"landed_url": "https://www.ticketsatwork.com/tickets/pages.php?sub=disneyland",
"deal_count": 6,
"deals": [
{
"type": "ticket",
"filter_entity_id": "4704",
"title": "Disneyland Resort - California",
"subtitle": "Save up to $65 on Multi-Day Tickets",
"description": "Explore 1-5 Day Disneyland Resort theme park tickets...",
"image_url": "https://www.ticketsatwork.com/common_resources/...",
"detail_url": "https://www.ticketsatwork.com/tickets/packages.php?sub=packages&action=view&id=4704"
}
]
}type is ticket (a TaW package, prices appear on the detail page) or url (an external link, often to a hotel detail).
Pricing note: Most category pages don't show prices in the listing. The subtitle field contains the savings claim ("Save up to $65", "Tickets from $48 Per Day"); exact pricing requires following detail_url.
| Flag | Required | Default | Description |
|---|---|---|---|
--pickup | yes | Pickup location. Airport names work best. | |
--dropoff | no | same as pickup | Dropoff location. |
--pickup-date | yes | YYYY-MM-DD. | |
--pickup-time | no | 12:00 | HH:MM 24h. Must be :00 or :30 boundary. |
--dropoff-date | yes | YYYY-MM-DD. | |
--dropoff-time | no | 12:00 | Same format. |
--age | no | 30 | Driver age. TaW supports 20-25 with surcharge, 25+ standard. |
The TaW car results page uses Handlebars templates that get filled by an XHR call to TaW's car backend. Even with the autocomplete-resolved latlng, the airport code that the backend needs is sometimes not populated by the autocomplete widget callback. The script backfills the visible input value into the hidden value field, but TaW's car API may require an additional pickup_code field that we're not setting.
Symptom: the car results page renders the skeleton, then shows "Sorry, there are no cars available at this location for your selected dates and time" even for major airports on near-term dates.
Workaround if you need cars urgently: open ticketsatwork.com in a regular browser, do the search manually, see the offers. Then if you want price comparison data scripted, this skill does still surface what TaW's hotel and ticket inventory looks like programmatically.
The script is wired and parses car cards correctly when the page renders them; the gap is in passing the right pickup-code metadata through the form. PRs welcome.
These are documented for future work. The scripts already handle them.
The visible "Sign in / Register" button opens a modal containing the real login form. The trigger is sometimes invisible to Patchright (overlay z-index, OneTrust banner). The form is in the DOM regardless. We set values directly via JS and click submit.
const form = document.querySelector('#member_login_form');
const emailEl = form.querySelector('input[name="login_email"]');
const passEl = form.querySelector('input[name="login_password"]');
// ...set values, dispatch input/change events, click submitThe destination input (#place_name for hotels, #pickup_location for cars) is decorative until a suggestion is clicked. Hidden lat/lng fields populate on click via the autocomplete's callback.
Selectors (hotels):
.ui-autocomplete.ebg-autocomplete .ui-menu-item:visible#place_lat, Lng: #place_lngSelectors (cars):
#pickup_location, #dropoff_location#origin_search_value, #destination_search_value#origin_lat_lng, #destination_lat_lngRace condition: First-type often misses. Retry up to 3 times, clearing the field each time. Each attempt waits up to 8s for the targets to populate.
Cars-specific: Latlng populates reliably; the canonical place value field doesn't always populate via callback. The script backfills it from the visible input text. This is enough for the form to submit but may not be enough for the car backend to resolve an airport code.
#check_in, #check_out, #pick_up_date, #drop_off_date are readonly="readonly" and driven by jQuery datepicker. You cannot fill() them like normal inputs. Set .value via JS using the underlying HTMLInputElement.value setter.
Date format: MM/DD/YY (2-digit year).
Results page shell loads first; listings render via XHR. Wait for at least one <li id="hotel_..." data-name="..."> to be attached to the DOM. Without this, parse fires too early and returns 0 listings.
The full result set is delivered in the initial response. Pagination is purely visual via simple-pagination. Don't waste time clicking page links; one parse on the initial render gets you everything.
Car results use a Handlebars-style template page. The page renders immediately with {{var}} placeholders, then a backend XHR fills in actual offers. Wait for .rc-totals content to no longer match {{total}} before parsing.
OneTrust banner appears on first visit and intercepts clicks. Dismiss via button#onetrust-accept-btn-handler or button:has-text('Accept') early in the flow.
Unlike hotels and cars, category landing pages render their deal grid in the initial HTML response. No XHR wait needed. Cards are <li class="grid-template-seen"> with data-unq (URL) and inline title/subtitle/description.
cd skills/ticketsatwork
docker build -t ghcr.io/borski/ticketsatwork:latest .
docker push ghcr.io/borski/ticketsatwork:latestThe base image (ghcr.io/borski/patchright-docker:latest) is shared with southwest, chase-travel, amex-travel, and other Patchright-based skills.
--debug mode and --raw-html-out capture full page HTML which contains them. Don't share debug artifacts publicly./tickets/shopping.php?sub=...)/tickets/packages.php?sub=packages&action=view&id=N)detail_url to extract pricing (slow, multi-page)© 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 6 other files (scripts) in plugins/travel-hacking-toolkit/skills/ticketsatwork of borski/travel-hacking-toolkit.
Open the folder on GitHubat commit db82131
Ticketsatwork 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 |
|---|---|---|---|---|---|---|
| Ticketsatwork this skillborski/travel-hacking-toolkit | 688 | — | ~4.2k | Automated safety check: Pass | MIT | |
| Theme Factoryanthropics/skills | 180k | 48 repos | ~781 | Automated safety check: Pass | Apache-2.0 | |
| Theme Factorynexu-io/open-design | 100k | — | ~329 | Automated safety check: Pass | Apache-2.0 | |
| Pierre Theme Packagepierrecomputer/pierre | 6.3k | — | ~352 | Automated safety check: Pass | Apache-2.0 | |
| Pierre Theming Librarypierrecomputer/pierre | 6.3k | — | ~661 | Automated safety check: Pass | Apache-2.0 | |
| Maui Themingdotnet/skills | 5.6k | 1 repos | ~4.1k | Automated safety check: Pass | MIT |
anthropics/skills
Applies one of ten preset color and font themes to slide decks, documents or HTML pages, or creates a new theme on the fly after you choose from a showcase.
nexu-io/open-design
Apply professional font and color themes to artifacts including slides, docs, reports, and HTML landing pages.
pierrecomputer/pierre
Shows an agent how to install and use the @pierre/theme package, which ships ten Pierre light and dark color themes for Shiki and VS Code.
pierrecomputer/pierre
Explains how to use the @pierre/theming package to list, resolve, select, switch and persist themes, with controller, color and React references.
dotnet/skills
Guide for theming .NET MAUI apps — light/dark mode via AppThemeBinding, ResourceDictionary theme switching, DynamicResource bindings, system theme detection, and user theme preferences.
htmlstreamofficial/preline
Generates light and dark Preline theme CSS from a brand color or mood, previews it, and validates token coverage through bundled local scripts.
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 VRBO (Vrbo / Expedia Group) vacation rentals including entire homes, condos, and cabins via Patchright browser automation.
borski/travel-hacking-toolkit
Check American Airlines AAdvantage balance, elite status, and loyalty points via Patchright.
Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright. Ticketsatwork is an agent skill from borski/travel-hacking-toolkit. Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright.
Ticketsatwork fits situations like: comparing hotel; ticket prices for a trip.
Run `npx skills add borski/travel-hacking-toolkit --skill ticketsatwork -a claude-code`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/ticketsatwork in borski/travel-hacking-toolkit) into .claude/skills/ticketsatwork in your project. Claude Code loads it when a task matches its description.
Run `npx skills add borski/travel-hacking-toolkit --skill ticketsatwork -a codex`. Or copy the skill folder (plugins/travel-hacking-toolkit/skills/ticketsatwork in borski/travel-hacking-toolkit) into .agents/skills/ticketsatwork 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 ticketsatwork -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/ticketsatwork, .gemini/skills/ticketsatwork, .github/skills/ticketsatwork and .opencode/skills/ticketsatwork in your project.
Going by SKILL.md and its folder, Ticketsatwork needs Python and a shell for the scripts in its folder and the command-line tools its instructions call (docker, python3 and pip). Our summary lists: Python 3; A Bash shell; Docker. Its frontmatter pre-approves these tools: Bash(docker *), Bash(python3 *).
SKILL.md names 1 domain. In commands or code: ticketsatwork.com; the agent is likely to contact it when it follows the instructions. 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.
Ticketsatwork is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 4.2k tokens (SKILL.md is roughly 17k 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 Ticketsatwork: Theme Factory (anthropics/skills, 180k stars), Theme Factory (nexu-io/open-design, 100k stars), Pierre Theme Package (pierrecomputer/pierre, 6.3k stars) and Pierre Theming Library (pierrecomputer/pierre, 6.3k 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.