Install
openclaw skills install @voronindenis5/flight-connection-risk-analyzerUse when booking or sweating a connecting flight: computes true connection budget from minimum-connect-time by airport/terminal, transfer logistics (trains, security re-entry), time-of-day delay stacking, and last-flight-of-day exposure. Verdicts SAFE / TIGHT / HIGH RISK plus a survive-the-layover protocol and rebooking rights.
openclaw skills install @voronindenis5/flight-connection-risk-analyzerEvery traveler eventually stares at a booking screen asking: is a 45-minute connection at O'Hare insane, or fine? Airlines will happily sell it — they compute against the legal minimum connect time (MCT), the fastest possible wheel-stop-to-departure a marathon runner with no bag could achieve. MCT is not a plan; it's a floor. What actually decides whether you make a connection:
This skill turns those four factors into a 0–100 risk score, a verdict, and a protocol. It does not book anything and never claims real-time data — it is a planning instrument used before you click purchase.
Don't use for: real-time "will my flight make it today" (check the airline app / FlightAware), or visa/transit-permit questions (see border-buddy).
buffer = layover_minutes − MCT(airport, itinerary type)
MCT varies by airport AND by itinerary type (domestic→domestic, dom→intl, intl→dom, intl→intl) AND sometimes by terminal pair. Typical legal minimums:
| Pattern | Typical MCT | Notes |
|---|---|---|
| Domestic → domestic, same terminal | 30–40 min | DL@ATL 35, AA@DFW 40, UA@ORD/DEN 45 |
| Domestic → domestic, terminal change | 45–60 min | JFK T2→T4 style |
| Domestic → international | 60–90 min | Boarding closes earlier; docs check |
| International → domestic (US entry) | 90–120 min | Customs + bag recheck + TSA |
| International → international (same alliance, sterile transit) | 50–75 min | AMS/MUC/IST efficient |
| Self-transfer (separate tickets) | no MCT protection | Plan ≥ 3h; first ticket's delay is your problem |
The script carries a per-hub table (walk / train / bus / re-security) for ~25 major hubs. Examples baked in: ATL concourse train 10–15 min; ORD Terminal 5 (intl) ↔ Terminals 1–3 via ATS train 25–40 min plus security re-entry; JFK AirTrain between terminals 20–45 min; LHR T4↔T5 not walkable (~25–35 min); CDG 2E↔2G shuttle bus ~20 min; IST, MUC, AMS walkable 15–30 min.
Approximate departure on-time rates by scheduled departure block:
| Departure block | On-time (≈) | Delay inheritance |
|---|---|---|
| 05:00–07:00 | 88–92% | aircraft usually fresh |
| 08:00–11:00 | 84–88% | |
| 12:00–15:00 | 78–84% | |
| 16:00–19:00 | 70–78% | cascading |
| 20:00–23:59 | 62–72% | worst stack + overnight risk if missed |
The inbound aircraft's departure block matters more than yours: a 9 PM connection usually rides an aircraft that has flown 4–6 legs already.
risk = base(buffer) + tod_penalty + last_flight + season + self_transfer
buffer ≥ 60 min → base 5 buffer 40–59 → 20
buffer 25–39 → base 40 buffer 10–24 → 60
buffer < 10 or < MCT → base 85
| Score | Verdict | Meaning |
|---|---|---|
| 0–24 | SAFE | book it; normal ops you make it with time to eat |
| 25–49 | TIGHT | workable, fly the protocol below |
| 50–74 | HIGH RISK | only if no alternative; assume realistic 20–30% miss on bad days |
| 75+ | RUSSIAN ROULETTE | do not book; you are planning to miss it |
# Domestic connection at ATL, 50 min layover, departing 18:40, not last flight
python3 scripts/connection_scorer.py --airport ATL --layover 50 \
--type dom-dom --dep-block 16-20
# International arrival into the US connecting at ORD, 1h50, evening
python3 scripts/connection_scorer.py --airport ORD --layover 110 \
--type intl-dom --dep-block 16-20 --season winter --last-flight
# Separate tickets (self-transfer) through LHR
python3 scripts/connection_scorer.py --airport LHR --layover 165 \
--type intl-intl --self-transfer --dep-block 12-16
# List the hub knowledge base
python3 scripts/connection_scorer.py --list-hubs
Output: MCT used, transfer-time estimate, effective buffer, risk score, verdict, and a situation-specific protocol list.