Agent skill

Ticketsatwork

by borski in borski/travel-hacking-toolkit

Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright.

MITAuto-check passed

Install Ticketsatwork

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

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

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

At a glance

Search TicketsAtWork (EBG corporate perks) for hotels, theme park tickets, attractions, and rental cars via Patchright.

  • Comparing hotel
  • SKILL.md covers Why TaW matters for travel…, Capabilities, Prerequisites and Authentication, plus 9 more sections
  • Runs Python and Shell scripts from its folder; calls docker, python3 and pip; reaches ticketsatwork.com
  • Ticket prices for a trip

What it does

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.

When your agent uses it

  • Comparing hotel
  • Ticket prices for a trip

Example prompts

  • “/ticketsatwork”

Requirements

  • Python 3
  • A Bash shell
  • Docker
  • Pre-approved tools (allowed-tools): Bash(docker *), Bash(python3 *)

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(docker *)
    • Bash(python3 *)

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Ships 5 files in scripts/ (Python and Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • docker
    • python3
    • pip

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

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • ticketsatwork.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

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.

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

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); the scripts in this folder are not scanned.

SKILL.md

The full file from borski/travel-hacking-toolkit at commit db82131, republished under its MIT licence (© borski). 1,692 words, ~4,226 tokens.

Download SKILL.mdSave it as .claude/skills/ticketsatwork/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.
name
ticketsatwork
description
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.
allowed-tools
Bash(docker *), Bash(python3 *)
category
hotels
summary
TicketsAtWork (EBG) corporate-perks portal. Hotels, theme park tickets, attractions, live events. Often beats portals by 10-30%.
api_key
None (requires TaW account + Patchright)
docker_image
ghcr.io/borski/ticketsatwork

TicketsAtWork

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.

Why TaW matters for travel hacking

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:

  • The hotel's direct booking
  • Booking.com / Hotels.com / Expedia
  • Chase Travel (UR portal) and Amex Travel (MR portal)
  • Even Amex FHR / THC and Chase Edit on properties not in those programs

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.

Capabilities

SubcommandWhat it doesStatus
hotelsHotel search by city + date range. Returns ~10-200+ properties with prices, savings vs strike rate, lat/lng, ratings, distanceStable
carsRental car search by pickup location + date/time rangeExperimental. 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.
ticketsBrowse a category landing page (e.g. disneyland, wdw, usf) or keyword-search via ReflektionStable. Returns deal title, savings claim, description, image, detail URL. Prices are not on the listing, they appear on the detail page.

Prerequisites

  • Docker running locally (for the published image) OR Patchright installed locally (pip install patchright && patchright install chromium)
  • A TaW account (created via your employer's TaW URL or corporate code)
  • TaW email + password set as TAW_USER and TAW_PASS environment variables

Authentication

Form-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 Usage

bash
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

Local Usage (opens a Chrome window briefly)

bash
# 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

Hotels: arguments and output

Arguments
FlagRequiredDefaultDescription
--cityyesCity or address. Goes into the destination autocomplete.
--checkinyesCheck-in date in YYYY-MM-DD.
--checkoutyesCheck-out date in YYYY-MM-DD.
--roomsno1Number of rooms.
--adultsno2Adults per room.
--childrenno0Children per room.
--jsonnooffStructured JSON instead of a human-readable table.
--debugnooffSave screenshots + HTML at each step to /output (Docker) or /tmp/taw_debug/ (local).
--raw-html-outnoWrite the raw results HTML to a file for offline analysis.
Output schema (JSON mode)
json
{
  "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).
Pagination behavior

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.

Tickets: arguments and output

Arguments

Use exactly one of --category or --keyword:

FlagDescription
--category SLUGCategory slug like disneyland, wdw, usf, seaworld. See category list below.
--keyword TEXTFree-text keyword. Uses Reflektion site search. On Enter, TaW often redirects directly to the most relevant category landing page.
--jsonStructured JSON output.
--debugSave screenshots + HTML.
--raw-html-outWrite the raw landing page HTML to a file.
Common category slugs

These are stable category landing pages (/tickets/pages.php?sub=<slug>):

SlugPage
wdwWalt Disney World
disneylandDisneyland Resort (California)
disneyland-parisDisneyland Paris
usfUniversal Orlando
ushUniversal Studios Hollywood
seaworldSeaWorld parks
busch-gardens-parksBusch Gardens parks
sesame-placeSesame Place parks
all-theme-parks-attractionsCombined theme parks + attractions index

For other categories, navigate /tickets/index.php in a browser, find the category, copy the ?sub= slug from the URL.

Output schema
json
{
  "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.

Cars: arguments and known limitations

Arguments
FlagRequiredDefaultDescription
--pickupyesPickup location. Airport names work best.
--dropoffnosame as pickupDropoff location.
--pickup-dateyesYYYY-MM-DD.
--pickup-timeno12:00HH:MM 24h. Must be :00 or :30 boundary.
--dropoff-dateyesYYYY-MM-DD.
--dropoff-timeno12:00Same format.
--ageno30Driver age. TaW supports 20-25 with surcharge, 25+ standard.
Known limitations

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.

Show full SKILL.md (698 more words)Show less

When to use

  • Comparing hotel rates for a specific destination + dates against direct / portal / Booking
  • After narrowing to a hotel via Trivago / Google Hotels, check if TaW has the chosen property cheaper
  • Discovering which theme-park / attraction discounts TaW currently offers (the discounts rotate seasonally)
  • Verifying a "this is the best deal" claim before booking through Chase Travel / Amex Travel / direct

When NOT to use

  • The hotel is in Amex FHR / THC and the user wants the property credit + breakfast (the program stack usually beats TaW's nightly savings)
  • The user wants hotel-program elite credits or points (TaW bookings don't credit Marriott Bonvoy, Hilton Honors, etc.)
  • The user needs a flexible/refundable rate (TaW rates are often non-refundable; check the property detail page)
  • Bookings where elite-status benefits matter more than rate

Implementation gotchas (for future maintainers)

These are documented for future work. The scripts already handle them.

Login via JS, not modal

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.

javascript
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 submit
Destination autocomplete is jQuery UI + ElasticSearch

The 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):

  • Suggestion dropdown: .ui-autocomplete.ebg-autocomplete .ui-menu-item:visible
  • Lat: #place_lat, Lng: #place_lng

Selectors (cars):

  • Same dropdown class
  • Visible: #pickup_location, #dropoff_location
  • Hidden value: #origin_search_value, #destination_search_value
  • Hidden latlng (combined): #origin_lat_lng, #destination_lat_lng

Race 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.

Date inputs are readonly

#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).

Hotel listings render after the shell

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.

Hotel listings are pre-rendered

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.

Cars use Handlebars templates filled later

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.

Tickets / category pages are static HTML

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.

Building the Docker image

bash
cd skills/ticketsatwork
docker build -t ghcr.io/borski/ticketsatwork:latest .
docker push ghcr.io/borski/ticketsatwork:latest

The base image (ghcr.io/borski/patchright-docker:latest) is shared with southwest, chase-travel, amex-travel, and other Patchright-based skills.

Privacy / safety

  • Do NOT book through this skill. Price discovery only. Always click through to TaW in a real browser to complete a booking.
  • TaW's terms of service may restrict automated access. The skill makes one search per invocation, doesn't aggressively crawl, and uses one page-load worth of work. Use for personal price comparison, not bulk scraping.
  • Credentials are passed via env vars only. The skill never writes credentials to disk and never prints them to logs.
  • Debug output may contain personal data. TaW embeds the logged-in user's email, employer, IP, and account hash in the result page HTML. The script never prints these, but --debug mode and --raw-html-out capture full page HTML which contains them. Don't share debug artifacts publicly.

Future expansions

  • search-shopping for gift cards, electronics, etc. (/tickets/shopping.php?sub=...)
  • search-packages for vacation bundles (/tickets/packages.php?sub=packages&action=view&id=N)
  • fix-cars to resolve the airport-code population issue
  • with-prices mode for tickets that follows each 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

Files

SKILL.md and 6 other files (scripts) in plugins/travel-hacking-toolkit/skills/ticketsatwork of borski/travel-hacking-toolkit.

  • SKILL.md
  • Dockerfile
  • scripts/browse_tickets.py
  • scripts/entrypoint.sh
  • scripts/search_cars.py
  • scripts/search_hotels.py
  • scripts/taw_common.py

Open the folder on GitHubat commit db82131

Compare with similar skills

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.

Ticketsatwork compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Ticketsatwork this skillborski/travel-hacking-toolkit688—~4.2kAutomated safety check: PassMIT
Theme Factoryanthropics/skills180k48 repos~781Automated safety check: PassApache-2.0
Theme Factorynexu-io/open-design100k—~329Automated safety check: PassApache-2.0
Pierre Theme Packagepierrecomputer/pierre6.3k—~352Automated safety check: PassApache-2.0
Pierre Theming Librarypierrecomputer/pierre6.3k—~661Automated safety check: PassApache-2.0
Maui Themingdotnet/skills5.6k1 repos~4.1kAutomated safety check: PassMIT

Similar skills

  • Theme Factory

    anthropics/skills

    Official

    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.

    180k GitHub starsUsed in 48 repos~781 tokens
    Frontend & DesignAuto-check passed
  • Theme Factory

    nexu-io/open-design

    Apply professional font and color themes to artifacts including slides, docs, reports, and HTML landing pages.

    100k GitHub stars~329 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Pierre Theme Package

    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.

    6.3k GitHub stars~352 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Pierre Theming Library

    pierrecomputer/pierre

    Explains how to use the @pierre/theming package to list, resolve, select, switch and persist themes, with controller, color and React references.

    6.3k GitHub stars~661 tokensUpdated today
    Frontend & DesignAuto-check passed
  • Maui Theming

    dotnet/skills

    Official

    Guide for theming .NET MAUI apps — light/dark mode via AppThemeBinding, ResourceDictionary theme switching, DynamicResource bindings, system theme detection, and user theme preferences.

    5.6k GitHub starsUsed in 1 repo~4.1k tokens
    Frontend & DesignAuto-check passed
  • Preline Theme Generator

    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.

    6.5k GitHub stars~619 tokensUpdated 1 mo ago
    Frontend & DesignAuto-check: warnings

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 4 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 4 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 4 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 4 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 4 days ago
    Auto-check passed
  • American Airlines

    borski/travel-hacking-toolkit

    Check American Airlines AAdvantage balance, elite status, and loyalty points via Patchright.

    688 GitHub stars~1.3k tokensUpdated 4 days ago
    Auto-check passed

Questions about Ticketsatwork

What does Ticketsatwork do?

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.

When should I use Ticketsatwork?

Ticketsatwork fits situations like: comparing hotel; ticket prices for a trip.

How do I install Ticketsatwork in Claude Code?

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.

How do I install Ticketsatwork in Codex?

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.

Can I use Ticketsatwork 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 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.

What does Ticketsatwork need to run?

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 *).

Does Ticketsatwork access the network?

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.

Is Ticketsatwork 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. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.

What licence does Ticketsatwork use?

Ticketsatwork 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 Ticketsatwork use?

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.

What are the alternatives to Ticketsatwork?

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.

Who maintains Ticketsatwork?

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.