Automated web form filling and file uploading skill with Playwright browser automation. Handles login persistence, form detection, file uploads, and waits for manual confirmation before submission.
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
A direct command skips the review prompt. Inspect the source before running it.
Automated web form filling and file uploading skill with Playwright browser automation. Handles login persistence, form detection, file uploads, and waits for manual confirmation before submission.
An intelligent automation skill that fills web forms, uploads files/folders to correct positions, and handles complex multi-field submissions with persistent login support.
What's New in v1.2.0
Enhanced Error Handling: Graceful error recovery with detailed messages
Consolidated Configuration: Merged mcp-config into SKILL.md
Improved Robustness: Better port conflict handling and process management
Support for multi-file uploads with position mapping
Graceful error recovery
Quick Setup
# 1. Install Playwright browsers
npx playwright install chromium
# 2. First-time login (saves session for reuse)
npx playwright open --save-storage=~/.playwright-auth.json "https://your-target-site.com"# Login manually in the browser that opens, then close it# 3. Future runs will auto-login using saved session
npx playwright open --load-storage=~/.playwright-auth.json "https://your-target-site.com"
MCP Configuration
Add to your MCP settings (Claude Code, OpenCode, etc.):
Option 1: Playwright CLI (Recommended for OAuth sites)
# First login - saves session
npx playwright open --save-storage=~/.playwright-auth.json "https://molthub.com/upload"# Subsequent uses - loads saved session
npx playwright open --load-storage=~/.playwright-auth.json "https://molthub.com/upload"
Advantages:
No "unsafe browser" blocks from Google/GitHub OAuth
Session persistence across runs
Works with MCP browser tools
Option 2: Chrome Debug Mode (For non-OAuth sites)
# Start Chrome with debug port
./scripts/start-chrome.sh "https://example.com/form"# With your default Chrome profile (keeps existing logins)
./scripts/start-chrome.sh --use-default-profile "https://example.com/form"
Note: Chrome debug mode with custom --user-data-dir is blocked by Google OAuth. Use Playwright for sites requiring Google/GitHub login.
Usage Examples
Basic Form Filling
autofillin https://example.com/form
- Fill "Name" field with "John Doe"
- Fill "Email" field with "john@example.com"
- Upload resume.pdf to file input
autofillin https://example.com/document-upload
Files to upload:
- Position 1 (ID Document): ~/documents/id_card.pdf
- Position 2 (Proof of Address): ~/documents/utility_bill.pdf
- Position 3 (Photo): ~/photos/headshot.jpg
[WAIT FOR MANUAL CONFIRMATION]
Workflow
1. BROWSER SETUP
- Check for saved session (~/.playwright-auth.json)
- Launch Playwright Chromium with session
- Or prompt for one-time login if no session exists
2. NAVIGATION & LOGIN
- Navigate to target URL
- Detect if login is required
- If login needed: Fill username, prompt for password, save session
3. PAGE ANALYSIS
- Take accessibility snapshot
- Identify all form fields
- Map field labels to input elements
4. AUTO-FILL PHASE
- Fill text fields using fill() or fill_form()
- Select dropdown options
- Upload files/folders via upload_file()
5. CONFIRMATION PHASE
- Display summary of filled data
- WAIT FOR MANUAL CONFIRMATION
- User reviews and clicks Submit/Publish
MCP Tools Used
Tool
Purpose
take_snapshot
Get page accessibility tree
fill
Fill single form field
fill_form
Fill multiple fields at once
upload_file
Upload file or folder
browser_click
Click buttons
evaluate_script
Run JavaScript
navigate_page
Navigate to URLs
Credential Management
Safe Storage (Recommended)
# Use macOS Keychain
security add-generic-password -a "github" -s "autofillin" -w "your-password"
security find-generic-password -a "github" -s "autofillin" -w
# Use Linux secret-tool
secret-tool store --label="autofillin-github" service autofillin username github
# Use Windows Credential Manager
cmdkey /add:autofillin-github /user:github /pass:your-password
Session Persistence
Sessions saved to ~/.playwright-auth.json include cookies, localStorage, and sessionStorage.
Error Handling
Error
Cause
Solution
Unsafe browser
Google OAuth blocked
Use Playwright instead of Chrome debug
Login required
Session expired
Run with --save-storage
Element not found
Page changed
Take new snapshot
Upload failed
Wrong file type
Check webkitdirectory
Port in use
Another Chrome instance
Script auto-kills conflicting process
Chrome not found
Not installed
Run setup-env.sh
Troubleshooting
Chrome won't start with debug mode
# Check if port is in use
lsof -i:9222
# Kill existing processes
pkill -f "remote-debugging-port=9222"# Retry
./scripts/start-chrome.sh "https://example.com"