Install
openclaw skills install @voronindenis5/border-buddyPre-trip border intelligence: visa requirements by nationality, passport validity rules, Schengen 90/180 day stay calculators, yellow-fever certificate requirements, duty-free/cash customs limits, and transit-visa checks for any route. Use when the user asks about visas, entry rules, passport validity, how long they can stay, customs allowances, or whether they need vaccinations for a trip.
openclaw skills install @voronindenis5/border-buddyAnswer the three questions every international trip actually depends on — Do I need a visa? Is my passport valid enough? What can I bring through customs? — plus the one people always get wrong: how long can I legally stay? (the Schengen 90/180 trap).
border-buddy combines an embedded rules engine (visa policy snapshots, passport validity rules, health certificate requirements, customs allowances for ~50 countries) with a precise Schengen 90/180-day rolling-window calculator. It turns "I'm a Brazilian passport holder flying to Portugal via Frankfurt for 6 weeks" into a structured entry-readiness report — before you book non-refundable tickets.
The scripts run fully offline on an embedded knowledge snapshot. Immigration rules change — always pair this skill with a live check of the destination's official immigration site (the report includes the right authority to verify with, per country).
Don't use for: asylum/immigration-law advice, work-permit or residency applications, or anything involving criminal-record entry waivers (ETA/ESTA eligibility denials) — those need official channels or a lawyer. This is trip-planning intelligence, not legal advice.
visa_free, visa_on_arrival, eta, evisa, visa_required, plus max stay days and notes.# Entry-readiness report for a trip
python3 scripts/border_buddy.py check \
--nationality BR --destination PT \
--transit DE --stay-days 42 --purpose tourism \
--passport-expiry 2027-03-01
# How many Schengen days do I have left after this year's trips?
python3 scripts/border_buddy.py schengen --visits visits.json --on 2026-09-15
# See it work end-to-end with built-in sample data
python3 scripts/border_buddy.py demo
# List every country rule in the snapshot
python3 scripts/border_buddy.py rules --destination JP
check with what you have; the report flags every missing input that matters.schengen with their visit history.as_of dates), do a live web check of the official source and reconcile.ENTRY READINESS ─ Portugal (PT) for BR nationals
Visa: NOT REQUIRED (Schengen 90/180) ✓
Max stay: 90 days in any 180-day window
Passport: VALID — expires 2027-03-01, must be valid 3 mo beyond
departure and issued within 10 years ✓
Transit DE: AIRSIDE TRANSIT OK (no visa) ✓
Yellow fever: not required (not arriving from endemic country)
Customs: 1L spirits / 4L wine · cash > €10,000 must be declared
VERIFY WITH: sef.pt (Serviço de Estrangeiros e Fronteiras)
--transit.as_of date. The report always names the official source to verify against — show it to the user.schengen if the user has prior visits"I'm Indian, flying Delhi → Paris in May, 10 days, passport expires November"
python3 scripts/border_buddy.py check --nationality IN --destination FR \
--stay-days 10 --purpose tourism --passport-expiry 2026-11-30
# → visa required (Schengen short-stay), passport OK but tight, apply ≥3 weeks out
"How many days can I still spend in Europe this year?"
python3 scripts/border_buddy.py schengen --visits my_visits.json --on 2026-10-01
# → days used, days remaining, date the oldest trip exits the window
references/visa-rules.md — how the policy matrix is structured, nationality groups, transit rulesreferences/schengen-180.md — the 90/180 algorithm, worked examples, common edge cases