csair.com
China Southern (CZ) fares and itinerary availability by route and date, including China domestic + international through-fares OTAs do not price.
Skill by overseers-desk
Install
Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.
npx agentmarket install skill/overseers-desk-csair-com
Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.
Get the weekly diff
The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.
About
Reviews
Write a reviewNo reviews yet. Installed it? Reviews come from verified installers only. How reviews work
Permissions
What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.
- Tools
- No tools found
- Secrets
- None asked for
- Install scripts
- None found
Network hosts it talks to 1
codeload.github.com· found in install command
Files it touches
~/.claude/skills/csair-com
What's inside
- Skill name
csair.com- Description
- China Southern (CZ) fares and itinerary availability by route and date, including China domestic + international through-fares OTAs do not price.
- License
- MIT
- Instructions
- 109 lines in SKILL.md · view on GitHub
Before installing
- Instructions read files in your home folder (~/.ssh, ~/.aws…)
Agent Skills spec issues
- name: only lowercase letters, digits and single hyphens allowed
Files (2)
- SKILL.md
- search.tcl
SKILL.md (first lines)
## Prerequisites - `[browser] user_agent` in `$HOME/.config/magazines/config.ini` (serialised-browsing skill). - No login, no credentials: the fare search is anonymous. ## Search fares (one-way) Run through `browser-serialiser`. One call navigates the booking deep link and harvests the fare payload the page fetches for itself: ```bash browser-serialiser csair.com/search <origin> <dest> <date YYYY-MM-DD> [--adults N] [--children N] [--infants N] [--currency CCC] [--json] browser-serialiser csair.com/search BNE MAD 2026-08-26 browser-serialiser csair.com/search LHW MAD 2026-08-26 --children 1 browser-serialiser csair.com/search BNE MAD 2026-08-26 --currency EUR --json ``` Parameters: - `origin`, `dest` — two different 3-letter IATA city or airport codes, case-insensitive. City codes work (e.g. `LHW` Lanzhou, `CAN` Guangzhou). - `date` — `YYYY-MM-DD`. The booking app accepts today+2 days through today+1 year; the skill refuses a date outside that window before touching the site. - `--adults N` / `--children N` / `--infants N` — defaults 1/0/0. Adults at least 1, infants at most the adult count, each count a single digit, at most 9 passengers in total. - `--currency CCC` — 3-letter display currency (e.g. `EUR`); omitted, the site picks its default for the route. - `--json` — structured output instead of the text table. ## Return and multi-city: whole-journey fares (not yet fired end to end) The leg-walking described below was written from the app's own code and has never completed a live run: the site's search quota refused every attempt on the night it was built. Treat its numbers as unconfirmed until someone watches one journey through, and check a total against the same legs queried separately before trusting it. The one-way path above is unaffected and is verified. `--return YYYY-MM-DD` adds the back leg; a repeatable `--leg DEP-ARR-YYYY-MM-DD` (2 to 5 of them, replacing the positional route) makes a multi-city journey: ```bash browser-serialiser csair.com/search LHW CAN 2026-08-26 --return 2026-09-02 browser-serialiser csair.com/search --leg BNE-CAN-2026-08-23 --leg CAN-LHW-2026-08-24 --json ``` The site prices a multi-leg journey the way its UI does, one leg at a time: each search covers one leg, and selecting an option unlocks the next leg's grid (`/api/shop/next`), whose amounts are cumulative running totals. The skill walks that flow in one run: every leg before the last is fixed to its cheapest bookable option, and the output is the final leg's options, each amount the whole-journey total for the party. The fixed selections are echoed (flights, cabin, brand) without amounts, since a non-final leg's numbers are not a whole-journey fare. `--json` puts them in `selectedLegs` and the whole-journey rows in `journeyOptions`. A multi-leg query costs one site search plus one next-leg request per later leg, so it draws the same quota as its legs queried separately; the quota notes under Failure modes apply unchanged. ## Output Per itinerary: origin/destination times with day offsets, total duration and stop count; each segment as marketing flight, operating carrier where codeshared (`CZ2130 (op OQ2130) LHW 12:30 → CAN 15:55`), and times; then one line per offered cabin (Economy / PremiumEconomy / Business / First as sold on that itinerary) with the lowest total and the per-brand totals (STANDARD / FLEX / FULLFLEX), cheapest first. All amounts cover the whole party, not one passenger. `--json` adds the fare/tax split per cabin and brand, and aircraft types per segment. A route/date combination the booking app serves but has no seats for, returns "No itineraries", a normal answer. ## Failure modes - `bad route: ...` / `bad passenger count: ...` / `bad currency: ...` / `bad date: ...` / `unknown option ...` — the arguments themselves don't satisfy Parameters above; usage is echoed and no page is loaded. - `date out of window: ...` — the date is outside today+2 .. today+1 year; emitted without any page load. - `parameters rejected: ...` — the booking app dropped back to its empty search form instead of the fare page, its behaviour for a deep link it will not price; the landing URL is included. - `no fare payload: ...` — the fare page loaded but its search response (or, for a multi-leg query, the decryptArgs response the next-leg requests need) did not arrive within the capture window; usually transient, retry later. - `next-leg request refused: ...` — a later leg's `/api/shop/next` call answered with an HTTP status instead of a fare grid; the refusal envelopes below can also arrive on these calls and are reported the same way. - `rate-limited by csair.com (CZWEB000010 / CZWEB000003): ...` — the site answered the search with its IP-quota refusal instead of fares (HTTP 200 with a tiny JSON envelope). `CZWEB000010` means the site is demanding a captcha for this IP; `CZWEB000003` is its escalation when queries continue, and then covers the fare-calendar endpoint too. Repeating the search prolongs the block: leave the site alone and retry much later. Roughly twenty searches inside one evening triggered it. - `search refused by csair.com (CZWEBnnnnnn): ...` — a refusal envelope with a code this skill does not know; the desc is echoed ASCII-sanitised. - `unexpected fare payload: ...` — a search response arrived but did not parse into the known `ita` shape; the site's payload format may have changed. - exit 66 with `browser-serialiser: terminal <state>` on stderr, or 77 when that state is a login or checkpoint redirect — the harness hit a wall (rate-limited, logged-out, checkpoint) and ended the run.
From overseers-desk/magazines, MIT.
More from overseers-desk/magazines
- 0.580score
ihg.com
overseers-desk
Anonymous hotel availability, pricing and search; plus logged-in IHG One Rewards member data (your own stays, bookings, points and reward activity) via…
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
ndis.gov.au
overseers-desk
Australia's official NDIS provider register: search registered disability providers by suburb/postcode and radius, or confirm whether a named provider (or…
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
premierinn.com
overseers-desk
Premier Inn (Whitbread) hotel room availability, live nightly pricing, room-type inventory, rate plans (Flex/Standard/Non-Flex), occupancy rules.
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
interlinetravel.com.au
overseers-desk
Interline Travel cruise deals at industry staff rates on interlinetravel.com.au: prices, availability, interline rates, search.
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
marriott.com
overseers-desk
find hotel properties near a destination, lookup by property code; info (name, brand, address, coords, images, reviews).
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
officeworks.com.au
overseers-desk
Officeworks printing prices: flyer and document-print quantity ladders, per size, paper stock, siding and colour.
SkillAFreshness: A★ 1Claude Code +9 - 0.543score
linkedin
overseers-desk
search people, and search inside named members' connections, read profiles, read a job posting, check keywords, verify connect eligibility, find role/company.
SkillBFreshness: B★ 1Claude Code +9 - 0.540score
otter.ai
overseers-desk
Otter.ai recordings: list, rename, trash, fetch speaker-labelled transcripts, and download mp3 audio from a logged-in Otter account.
SkillBFreshness: B★ 1Claude Code +9 - 0.540score
beatthatflight.com.au
overseers-desk
Cheapest fares on any route worldwide, shopped across dozens of online agencies at once: one-way, return or multi-city, with the agency's booking link.
SkillBFreshness: B★ 1Claude Code +9 - 0.540score
flightnetwork.com
overseers-desk
Travel-document PDF from a Flightnetwork booking-confirmation email (airline, flight numbers, times, passenger names, e-tickets, baggage allowance) — the PDF…
SkillBFreshness: B★ 1Claude Code +9 - 0.540score
hainanairlines.com
overseers-desk
Hainan Airlines (HU) fares and flight availability by route and date: international itineraries priced per cabin, China domestic schedules with seat counts.
SkillBFreshness: B★ 1Claude Code +9 - 0.540score
kiwi.com
overseers-desk
Cheapest flights across airlines that do not interline, including self-transfer combinations no airline or OTA sells, priced for the whole party.
SkillBFreshness: B★ 1Claude Code +9
Signals
- Stars
- 1
- Forks
- 0
- Open issues
- 36
- Last commit (this folder)
- Aug 23, 2026 (2 months ago)
From GitHub (fetched Oct 24, 2026).
Details
- License
- MIT
- Repository
- github.com/overseers-desk/magazines
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
More from overseers-desk
- 0.580score
officeworks.com.au
overseers-desk
Officeworks printing prices: flyer and document-print quantity ladders, per size, paper stock, siding and colour.
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
ndis.gov.au
overseers-desk
Australia's official NDIS provider register: search registered disability providers by suburb/postcode and radius, or confirm whether a named provider (or…
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
interlinetravel.com.au
overseers-desk
Interline Travel cruise deals at industry staff rates on interlinetravel.com.au: prices, availability, interline rates, search.
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
marriott.com
overseers-desk
find hotel properties near a destination, lookup by property code; info (name, brand, address, coords, images, reviews).
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
ihg.com
overseers-desk
Anonymous hotel availability, pricing and search; plus logged-in IHG One Rewards member data (your own stays, bookings, points and reward activity) via…
SkillAFreshness: A★ 1Claude Code +9 - 0.580score
premierinn.com
overseers-desk
Premier Inn (Whitbread) hotel room availability, live nightly pricing, room-type inventory, rate plans (Flex/Standard/Non-Flex), occupancy rules.
SkillAFreshness: A★ 1Claude Code +9
Cite this page
csair.com skill. Agent Mart. https://agentmart.dev/skills/overseers-desk-csair-com (last updated 2026-10-24)