agentleFS
tejask0tejask0/agent-skills/webcheckin/SKILL.md

webcheckin

Skill0 starsChanged 4 months agoMITView on GitHub

Automatically complete airline web check-in for the user's upcoming flights. Use this skill whenever the user says /webcheckin, "do web check-in", "check me in for my flight", "web check-in for today's flight", "check in for my flight", or any similar phrase. The skill searches Gmail for upcoming flight bookings (today or the next 1-2 days), navigates to the airline's check-in page, fills in all required details, auto-assigns a seat, and sends a confirmation screenshot. Always use this skill when the user wants flight check-in done — even if they don't say /webcheckin explicitly.

The file

Show its rules and text

We split this skill into the rules it gives an agent

14 rules. About 0 are common, 12 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈12

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Search Gmail for flight booking emails:

    line 31
  2. Distinctive:

    Look for airline confirmation emails (IndiGo, Air India, SpiceJet, Vistara, Akasa, etc.)

    line 34
  3. Distinctive:

    If multiple flights are found, pick the soonest one that's today or upcoming.

    line 41
  4. Very specific:

    Use the Chrome MCP (mcp__claude-in-chrome__*) to navigate and fill forms.

    line 47
  5. Distinctive:

    Wait for the page to load (dark screen → page appears.

    line 52
  6. Distinctive:

    Wait ~4s for the booking to load

    line 56
  7. Distinctive:

    All passengers on the booking should be pre-checked (blue checkboxes)

    line 59
  8. Distinctive:

    Look at the passenger cards at the top — if they show a seat number (e.g.

    line 68
  9. Distinctive:

    If a payment screen appears asking you to pay for the seats, go back and follow the auto-assign path below instead

    line 73
  10. Distinctive:

    Check the "Copy for all passengers" checkbox

    line 84
  11. Distinctive:

    Check the consent checkbox (it's a data-processing consent notice)

    line 86
  12. Distinctive:

    Check the checkbox: *"I have read and understood about Dangerous Goods & Restricted Articles"*

    line 91
  13. Very specific:

    If the button appears disabled even after checking, verify it via JavaScript: document.querySelector('button[class*="disabled"]') — if …

    line 93
  14. Distinctive:

    Follow the same pattern: navigate to the airline's web check-in, enter PNR + email/last name, skip seat selection, fill contact details …

    line 112

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Web Check-In Skill

Automate airline web check-in for the user's upcoming flights.

Configuration

This skill needs three personal details. Look them up before Step 1 in ~/.claude/skills-user-config.json, under a "webcheckin" object with keys checkin_email, phone, gmail_search_account, and last_name.

  • If the file/keys are present, use them directly — don't ask again.
  • If missing, ask the user for these once, then write them to that file under the "webcheckin" key (create the file/dirs if needed, preserving any other keys already in it) so future runs don't need to ask.

Note: gmail_search_account and checkin_email may be two different addresses (e.g. a personal inbox you search for bookings vs. the email you actually enter on the airline site). Confirm both with the user — don't assume they're the same.


Workflow

Step 1: Find the flight

Search Gmail for flight booking emails:

  • Tool: Gmail search_threads
  • Query: flight OR booking OR itinerary OR ticket newer_than:7d
  • Look for airline confirmation emails (IndiGo, Air India, SpiceJet, Vistara, Akasa, etc.)
  • Get the thread details and extract:
    • PNR / Booking Reference
    • Airline
    • Flight date — confirm it's today or within the next 2 days
    • Departure time and route (for context)

If multiple flights are found, pick the soonest one that's today or upcoming. If no flight is found, tell the user you couldn't find a booking.


Step 2: Check in by airline

Use the Chrome MCP (mcp__claude-in-chrome__*) to navigate and fill forms. Get a tab via tabs_context_mcp (create one if needed), then follow the airline-specific flow below.

IndiGo (goindigo.in)

  1. Navigate to https://www.goindigo.in/web-check-in.html
  2. Wait for the page to load (dark screen → page appears; wait ~3s if dark)
  3. Fill "PNR / Booking Reference" → enter the PNR
  4. Fill "Email ID / Last Name" → enter checkin_email from config
  5. Click "Web check-in" button
  6. Wait ~4s for the booking to load

Passenger selection page:

  • All passengers on the booking should be pre-checked (blue checkboxes)
  • Click "Check - in" button

Add-ons page (Step 1/4):

  • Click "Next" — do not add anything

Seat Selection page (Step 2/4):

First, check if seats are already assigned to the passengers:

  • Look at the passenger cards at the top — if they show a seat number (e.g. "14A", "22C") instead of "No seat selected", seats are pre-assigned.

If seats are already assigned:

  • Click "Next" directly — do NOT skip or change anything
  • IndiGo will usually proceed straight to Passenger Details without asking for payment
  • If a payment screen appears asking you to pay for the seats, go back and follow the auto-assign path below instead

If no seat is assigned ("No seat selected"):

  • Click "Next" without selecting any seat
  • A dialog "Do you wish to proceed with Auto Check-in?" will appear
  • Click "Skip seat" — this triggers free auto-assignment before departure

Passenger Details page (Step 3/4):

  • The form shows under the first passenger's name (as booked)
  • Fill Mobile No. field: phone from config (the +91 country code is usually pre-selected)
  • Fill Email field: checkin_email from config
  • Check the "Copy for all passengers" checkbox
  • Scroll down — if the booking has more than one passenger, you'll see the additional passenger sections (collapsed) and a consent checkbox
  • Check the consent checkbox (it's a data-processing consent notice)
  • Click "Next"

Dangerous Goods page (Step 4/4):

  • Scroll down to see the full list of restricted items
  • Check the checkbox: "I have read and understood about Dangerous Goods & Restricted Articles"
  • The "Agree and Continue" button enables — click it
  • If the button appears disabled even after checking, verify it via JavaScript: document.querySelector('button[class*="disabled"]') — if still disabled, scroll further down on the left panel

Confirmation page:

Two possible outcomes — handle both:

Outcome A — Boarding pass generated immediately (seats were pre-assigned):

  • Page shows a boarding pass or a "View Boarding Pass" / "Download Boarding Pass" button
  • Click it to open/download the boarding pass
  • Take a screenshot (save_to_disk: true) of the boarding pass and send it to the user

Outcome B — Auto check-in scheduled (seat will be assigned later):

  • Page returns to the booking view showing "Check-in done!"
  • Passenger cards show "Auto Check-in Scheduled": "Boarding Pass will be generated 4hrs before the flight departure and shared on registered e-mail."
  • Take a screenshot (save_to_disk: true) of the confirmation and send it to the user

In both cases, scroll down to capture both passengers' status in the screenshot.

Air India / other airlines

Follow the same pattern: navigate to the airline's web check-in, enter PNR + email/last name, skip seat selection, fill contact details (same email + phone), accept any declarations, and screenshot the confirmation.


Edge Cases

SituationWhat to do
Check-in window not open yetTell user when it opens (typically 48h before departure)
Already checked inScreenshot the existing boarding pass or status and inform the user
PNR not found on airline websiteTry last_name from config as the second field instead of email
Multiple passengersAlways apply the same contact details to all passengers via "Copy for all"
Page loads slowly or goes darkWait 3-5 seconds and retry; IndiGo's site has loading transitions
Seats already assigned, payment screen appearsGo back to seat selection, click Next → Skip seat to use auto-assign instead
Seat selection requires payment with no pre-assigned seatsSkip it — auto-assign is always free

Tips from a real run

  • IndiGo's "Agree and Continue" button on the dangerous goods page is disabled by default — it only enables after you check the acknowledgment checkbox at the bottom of the page
  • The "Copy for all passengers" checkbox on the passenger details page also triggers a dark loading transition — wait for it to come back before clicking Next
  • Take the final screenshot right when the page is stable (not during a transition) — wait 5-6 seconds after the last action before screenshotting

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.