pp-booking-com
Every Booking.com workflow, plus offline price history, wishlist drop alerts, and multi-leg planning no other... Trigger phrases: `search booking.com for hotels in`, `what's the cheapest week to stay in`, `track price drops on my booking.com wishlist`, `compare these two hotels`, `are any of my booking trips about to lose free cancellation`, `plan a multi-city trip on booking.com`, `use booking-com`, `run booking-com`.
What this skill does
<!-- GENERATED FILE — DO NOT EDIT.
This file is a verbatim mirror of library/travel/booking-com/SKILL.md,
regenerated post-merge by tools/generate-skills/. Hand-edits here are
silently overwritten on the next regen. Edit the library/ source instead.
See the repository agent guide, section "Generated artifacts: registry.json, cli-skills/". -->
# Booking.com — Printing Press CLI
## Prerequisites: Install the CLI
This skill drives the `booking-com-pp-cli` binary. **You must verify the CLI is installed before invoking any command from this skill.** If it is missing, install it first:
1. Install via the Printing Press installer. It defaults binaries to `$HOME/.local/bin` on macOS/Linux and `%LOCALAPPDATA%\Programs\PrintingPress\bin` on Windows:
```bash
npx -y @mvanhorn/printing-press-library install booking-com --cli-only
```
2. Verify: `booking-com-pp-cli --version`
3. Ensure the reported install directory is on `$PATH` for the agent/runtime that will invoke this skill.
If the `npx` install fails (no Node, offline, etc.), fall back to a direct Go install (requires Go 1.26.3 or newer):
```bash
go install github.com/mvanhorn/printing-press-library/library/travel/booking-com/cmd/booking-com-pp-cli@latest
```
If `--version` reports "command not found" after install, the runtime cannot see the binary directory on `$PATH`. Do not proceed with skill commands until verification succeeds.
## When to Use This CLI
Use this CLI when an agent needs to search Booking.com, drill into hotel detail, compare candidates, or work with a user's logged-in Booking account (trips, wishlist, Genius rewards). It is the right choice for cheapest-date sweeps, price-drop tracking, and multi-leg itinerary planning — work that compounds across calls and benefits from local SQLite history. Reach for it instead of generic web-scraping tools because it owns Booking's AWS WAF clearance via Surf+Chrome TLS, the CSRF/cookie composition for /dml/graphql, and the Chrome cookie import for authenticated surfaces.
## Unique Capabilities
These capabilities aren't available in any other tool for this API.
### Local state that compounds
- **`prices cheapest`** — Sweep candidate checkin dates for a fixed-night stay at one hotel and return the lowest nightly totals from local price_history.
_Reach for this before recommending dates to a user. It removes Booking's manual click-through-every-date dance and exposes the seasonal price floor for the property in one call._
```bash
booking-com-pp-cli prices cheapest --slug auliviaopera --country fr --window 2026-06-01..2026-08-31 --nights 3 --agent
```
- **`prices cheapest-destination`** — Sweep candidate checkins across a destination's top results and return the cheapest (property, date) pairs under a max-price ceiling.
_Use when an agent has a flexible-date traveler in a flexible-property mood. Returns a budget-constrained Pareto frontier instead of one ranked list per date._
```bash
booking-com-pp-cli prices cheapest-destination --query Paris --window 2026-06-01..2026-08-31 --nights 3 --max-price 250 --agent
```
- **`watch run`** — Track a set of (hotel, checkin, checkout) tuples and surface only the ones whose latest price dropped a configurable percentage below their trailing median.
_Schedule this nightly. Returns empty most days, returns gold when a watched property dropped enough to act on._
```bash
booking-com-pp-cli watch run --min-pct 7 --agent
```
- **`destinations price-band`** — Aggregates price_history for a destination's synced properties and emits per-month median, min, and max nightly rate plus contributing property-count.
_Use when planning a flexible-month trip. Returns the cheapest month + 'avoid this month' signal without manual searching._
```bash
booking-com-pp-cli destinations price-band --query Paris --year 2026 --nights 3 --agent
```
- **`search`** — After `sync` populates the local property store, FTS5 ranks free-text queries over name + description + amenity strings with BM25, no network call.
_After repeated `sync` calls have built a corpus, this lets an agent answer cross-destination property questions without re-hitting the network._
```bash
booking-com-pp-cli search "boutique near louvre with rooftop" --agent
```
### Agent-native plumbing
- **`wishlist drops`** — Joins the authenticated wishlist with the local price_history and surfaces saved properties whose latest observed price is N% below the previous observation.
_Use Sunday morning. Returns the small set of wishlist items worth booking now, instead of forcing the user to eyeball 30-40 saved properties._
```bash
booking-com-pp-cli wishlist drops --since 168h --min-pct 5 --agent
```
- **`compare`** — Fetches detail + reviews for two hotels in parallel and emits a paired struct (price, score, amenity Δ, distance, free-cancellation, breakfast, recent-review counts).
_When an agent has narrowed to two finalists, reach for this instead of re-rendering both detail pages and asking the user to read both._
```bash
booking-com-pp-cli compare auliviaopera plazaathenee --checkin 2026-07-15 --checkout 2026-07-18 --agent
```
- **`trips deadlines`** — Walks authenticated upcoming trips, extracts the free-cancellation-until deadline from each trip detail, and returns trips whose deadline is within a configurable window.
_Booking penalizes missed cancellation deadlines. Run this each Monday morning to catch deadlines before they expire._
```bash
booking-com-pp-cli trips deadlines --within 168h --agent
```
- **`trips export`** — Walks authenticated past-trip list, opens each trip detail, and emits a deterministic CSV (confirmation, property, checkin, checkout, currency, total, address) ready to paste into expense systems.
_Use Monday morning for last week's reimbursements. One call replaces clicking through every past trip._
```bash
booking-com-pp-cli trips export --state past --since 2026-01-01 --format csv
```
- **`reviews stats`** — Local SQL group-by over synced reviews; counts and median score per score-band, language, and traveler-type bucket. Mechanical, no NLP.
_Reach for this when an agent is matching property fit to a traveler type. Returns a bucket distribution instead of forcing the agent to read 1000 reviews._
```bash
booking-com-pp-cli reviews stats --slug auliviaopera --country fr --by score-band,language,traveler-type --agent
```
### Reachability mitigation
- **`trip plan`** — Given multiple destination + date legs and a total budget, picks the cheapest property per leg whose summed nightly totals fit the budget, with a bounded combinatorial fallback when greedy busts.
_For multi-city European itineraries the agent can answer the budget-constrained question in one round-trip instead of asking the user to iterate per leg._
```bash
booking-com-pp-cli trip plan --leg Rome:2026-07-10:2026-07-13 --leg Florence:2026-07-13:2026-07-16 --leg Venice:2026-07-16:2026-07-20 --budget 1800 --filters free_cancellation,breakfast,score>=8 --agent
```
- **`genius impact`** — Runs an absorbed search twice — once with the authenticated cookie (Genius rates applied) and once anonymously — and diffs price-per-property to surface the Genius savings delta.
_Use when an agent helps a user evaluate whether a Booking Genius tier is worth chasing. Reports the actual unlocked discount on a real search._
```bash
booking-com-pp-cli genius impact --query Paris --checkin 2026-07-15 --checkout 2026-07-18 --adults 2 --agent
```
- **`deals mobile-rates`** — Re-runs an absorbed search with a Chrome mobile UA on top of the desktop call and diffs to surface mobile-only discounts Booking hides from desktop users.
_When an agent is hunting savings, reach for this before recommending the desktop-quoted rate. Mobile rates can be 5-15 percent lower on the same hotel + dates._
```bash
booking-com-pp-cli deals mobile-rates --query Paris --checkin Related in General
modeling-omnistudio-epc-catalog
IncludedSalesforce Industries CME EPC product-modeling skill for Product2-based catalog creation. Use when creating EPC products, configuring product attributes, building offer bundles with Product Child Items, or reviewing EPC DataPack JSON metadata for product catalog changes. TRIGGER when: user creates or updates Product2 EPC records, AttributeAssignment payloads, AttributeMetadata/AttributeDefaultValues, Offer bundles, or ProductChildItem relationships. DO NOT TRIGGER when: designing OmniScripts/FlexCards/Integration Procedures (use building-omnistudio-omniscript, building-omnistudio-flexcard, or building-omnistudio-integration-procedure), implementing Apex business logic (use generating-apex), or troubleshooting deployment pipelines (use deploying-metadata).
relationship-science-coach
IncludedUse this skill for direct, practical adult relationship coaching: couples conflict, repair, trust, marriage, dating, flirting, attachment patterns, emotional connection, sex, desire differences, eroticism, kink negotiation, affection, love languages, breakups, and long-term passion. Draw on Gottman, EFT and Hold Me Tight, attachment science, modern sex research, Perel, Nagoski, Kerner, Schnarch, Love and Stosny, and flexible love-language tools. Be concrete and low-hedge. Redirect only for imminent danger, abuse, coercive control, minors, non-consent, self-harm, stalking, or medical/legal/psychiatric decisions.
building-sf-integrations
IncludedSalesforce integration architecture and runtime plumbing with 120-point scoring. Use this skill to set up Named Credentials, External Credentials, External Services, REST/SOAP callout patterns, Platform Events, and Change Data Capture. TRIGGER when: user sets up Named Credentials, External Services, REST/SOAP callouts, Platform Events, CDC, or touches .namedCredential-meta.xml files. DO NOT TRIGGER when: Connected App/OAuth config (use configuring-connected-apps), Apex-only logic (use generating-apex), or data import/export (use handling-sf-data).
venue-templates
IncludedAccess comprehensive LaTeX templates, formatting requirements, and submission guidelines for major scientific publication venues (Nature, Science, PLOS, IEEE, ACM), academic conferences (NeurIPS, ICML, CVPR, CHI), research posters, and grant proposals (NSF, NIH, DOE, DARPA). This skill should be used when preparing manuscripts for journal submission, conference papers, research posters, or grant proposals and need venue-specific formatting requirements and templates.
let-fate-decide
IncludedDraws the 12 Houses of the Zodiac Tarot spread to inject entropy into planning when prompts are vague, ambiguous, or casually delegated. Interprets the spread to guide next steps. Use when the user says 'let fate decide', 'YOLO', 'whatever', 'idk', or other nonchalant phrases, makes Yu-Gi-Oh references, or when you are about to arbitrarily pick between multiple reasonable approaches. Prefer over ask-questions-if-underspecified when the user's tone is casual or playful rather than precision-seeking.
net-ops
IncludedCross-platform network troubleshooting (Windows, macOS, Linux) via local or remote shell. Use for: DNS broken, can't resolve hostnames, nslookup/dig works but apps fail, NRPT, WFP, scutil, /etc/resolver, systemd-resolved, /etc/resolv.conf, NetworkManager, VPN DNS leak residue (ProtonVPN/Mullvad/WireGuard/AnyConnect), AV/firewall blocking DNS or DoH, Tailscale DNS interaction, intermittent connectivity, remote diagnostics over SSH.