install
source · Clone the upstream repo
git clone https://github.com/eddiebelaval/squire
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/eddiebelaval/squire "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/fill-form" ~/.claude/skills/eddiebelaval-squire-fill-form && rm -rf "$T"
manifest:
skills/fill-form/SKILL.mdsource content
Form Filling Skill
Core Workflows
Workflow 1: Primary Action
- Analyze the input and context
- Validate prerequisites are met
- Execute the core operation
- Verify the output meets expectations
- Report results
Trigger:
/fill-form [URL] [optional: form data file]
Purpose
Automate web form filling with built-in retry logic and verification, addressing common friction points from browser automation.
Workflow
1. Pre-Flight Check
- Verify URL is accessible (retry with alternate patterns if 404)
- Take initial screenshot for reference
- Identify form fields using accessibility tree snapshot
2. Field Filling Protocol
For each form field:
Text Inputs:
- Clear existing value first
- Type with realistic delays (50-100ms between keystrokes)
- Verify value after input
Dropdowns/Selects (CRITICAL - High friction area):
- Click to open dropdown
- Wait 300ms for options to render
- Select the option
- Wait 300ms for UI to settle
- VERIFY: Check selected value matches expected
- If mismatch: Retry selection up to 2 more times
- If still failing: Screenshot and report, continue with other fields
Checkboxes/Radio:
- Verify current state before clicking
- Click to toggle
- Verify new state matches expected
Date Pickers:
- Try native input first (type date string)
- If custom picker: Click to open, navigate to date, select
- Verify selected date
3. Navigation Handling
- Use
for all navigationswaitUntil: 'networkidle' - If page not found (404):
- Try removing trailing slash
- Try adding /app or /portal prefix
- Try www subdomain
- Screenshot and report if all fail
4. Form Submission
- Screenshot form BEFORE submission
- Click submit button
- Wait for network idle
- Check for:
- Success indicators (confirmation message, redirect)
- Error messages (validation failures)
- Unchanged state (submission may have failed silently)
- Screenshot AFTER submission
5. Error Recovery
- On transient errors: Auto-retry once after 2 second wait
- On validation errors: Report specific field failures
- On timeout: Extend wait, retry submission
- Log all failures to
~/form-automation-logs/{date}.json
Usage Examples
/fill-form https://example.com/application
Interactive mode - Claude will ask for field values as needed.
/fill-form https://example.com/application ./form-data.json
Batch mode - Uses provided JSON file for field values.
Form Data JSON Format
{ "fields": { "firstName": "Eddie", "lastName": "Belaval", "email": "eddie@example.com", "state": "CA", "agreeToTerms": true }, "submit_button": "#submit-btn", "success_indicator": ".confirmation-message" }
Output
- Screenshots: Before and after submission
- Log file: Detailed step-by-step with timings
- Summary: Fields filled, retries needed, final status
Signals
- "Form filling: Starting [URL]..."
- "Field [name]: Filled successfully" / "Field [name]: Required retry"
- "Dropdown verification: PASSED/FAILED for [field]"
- "Form submission: SUCCESS/FAILED - [details]"