SKILL.md
Batik Air Malaysia Web Check-in
Automate the check-in process for Batik Air Malaysia flights via BookCabin portal.
Prerequisites
- Playwright MCP server must be running
- Valid booking reference
- Passport details for the passenger
Required Information
Before starting, collect from the user:
- Booking Reference (e.g., OFDGEC)
- Passenger Full Name (as on passport)
- Passport Number
- Date of Birth (DD MMM YYYY format)
- Passport Expiry Date (DD MMM YYYY format)
- Nationality/Country of Issue
- Emergency Contact: Name, Phone (with country code), Relationship
If $ARGUMENTS contains a booking reference, use it. Otherwise, ask the user.
Check-in Workflow
Step 1: Navigate to Check-in Portal
- Navigate to
https://www.bookcabin.com/checkin - Wait for page to load
- Take a snapshot to see the page state
- Enter booking reference in the textbox (look for ref "S1" or similar input field)
- Click "Search" button
Step 2: Select Passenger
- Wait for passenger list to appear (take snapshot)
- Ensure passenger checkbox is checked
- Click "Check-in" button
Step 3: Travel Document (APIS Form)
Fill in passport details - take a snapshot first to see form state:
Date of Birth:
- Click on Date of birth field/button
- Date picker opens - navigate to correct year first (click year dropdown/header)
- Select correct year
- Select correct month
- Click the correct day
Nationality:
- Click Nationality dropdown/button
- Search or scroll to select the correct country
Passport Number:
- Enter passport number in the textbox
Country of Issue:
- Click Country of Issue dropdown/button
- Select the issuing country (usually same as Nationality)
Passport Expiry:
- Click Date of expiry field
- Navigate to correct year (click year header to get year selection)
- Select correct month
- Click the correct day
- Click "Continue to Emergency Contact" button
Step 4: Emergency Contact Form
- Take snapshot to see form
- Select Title (Mr/Mrs/Ms) from dropdown
- Enter First Name in textbox
- Enter Last Name in textbox
- Select Relationship from dropdown (Parent/Spouse/Sibling/Friend/Other)
- Select Nationality from dropdown
- For phone: click country code dropdown, select correct code (e.g., +60 Malaysia, +880 Bangladesh)
- Enter phone number (without country code) in phone textbox
- Click "Save" button
Step 5: Confirm Check-in
- Take snapshot - verify passenger is selected with checkbox
- Click "Check-in" button
Step 6: Seat Selection
Handle seat selection dialogs - take snapshots to see current state:
- If "Choose Your Favorite Seat" dialog appears, click "Okay" or dismiss
- If prompted about continuing without seat, click "Okay" or "Continue"
- Look for "Skip Seat Selection" button and click it
- If confirmation dialog appears, click "Continue Check-in" or similar
Step 7: Dangerous Goods Declaration
- Take snapshot to see the declaration page
- Find and check the confirmation checkbox (usually agreeing to dangerous goods policy)
- Click "I am accepting" or similar acceptance button
Step 8: Boarding Pass
- Wait for "Success Check-In" or success confirmation message
- Take snapshot to confirm success
- Click "View Boarding Pass" button
- Wait for boarding pass to load/generate
- Take a screenshot of the boarding pass for the user
- If Download button is available, click it
- Report to user:
- Flight number - Date and time - Departure/Arrival airports - Seat assignment (if any) - Boarding time - Gate (if shown)
Error Handling
- Booking not found: Ask user to verify reference number is correct
- Session timeout: BookCabin has ~5 minute timeout - restart from Step 1
- Date picker issues: Try clicking the year header first, or use arrow navigation
- Country not found: Try alternative country names (e.g., "Bangladesh" vs "BANGLADESH")
- Element not found: Take snapshot to see current page state and adapt
Tips for Playwright Navigation
- Always use
browser_snapshotbefore interacting to see current page state - Use element refs from snapshot (like "S1", "B2") for accurate targeting
- For date pickers: typically need to select year first, then month, then day
- For dropdowns: click to open, then click the option
- Wait for page transitions with
browserwaitforif needed
Output
On successful check-in, report:
✅ Check-in confirmed!
- Passenger: [Name]
- Flight: OD [XXX]
- Route: [DEP] → [ARR]
- Date: [Date]
- Seat: [Seat or "Not selected"]
- Boarding pass: [screenshot saved/downloaded]