Loading...
Loading...
Safely fills web forms in Chrome with user approval and verification at every step. Use when asked to "fill this form", "complete the form for me", "fill out registration", "submit this application", or when user needs form automation with safety controls. Works with Chrome browser tabs via MCP tools (tabs_context_mcp, read_page, form_input). Enforces permission workflows, field verification, and never fills sensitive data.
npx skill4agent add dawiddutoit/custom-claude chrome-form-fillerUser: "Fill out this registration form with my information"
Claude:
1. Gets tab context and reads form fields
2. Presents fields to user for approval
3. Fills each field incrementally
4. Verifies values after filling
5. Requests submission approval
6. Submits form only after confirmationCall: tabs_context_mcp(createIfEmpty=true)
Verify: Tab group exists and tab ID is validCall: read_page(tabId, filter="interactive")
Identify: All input fields, selects, textareas, checkboxes, radio buttons
Extract: Field labels, types, current values, required statusCall: update_plan(
domains=["current-domain.com"],
approach=[
"Identify all form fields on [page name]",
"Fill [X] fields with provided data",
"Verify each field after filling",
"Request approval before submission",
"Submit form and verify confirmation"
]
)Found [X] fields on [Form Name]:
Required Fields:
- First Name (text input) → [User's data or ASK]
- Email (email input) → [User's data or ASK]
- Phone (tel input) → [User's data or ASK]
Optional Fields:
- Company (text input) → [User's data or SKIP]
- Comments (textarea) → [User's data or SKIP]
SENSITIVE FIELDS (you must fill manually):
- Password (password input) → USER MUST FILL
- Credit Card (text input) → USER MUST FILL
Proceed with filling [X] fields? (yes/no)Step 1: Find element
Call: find(tabId, query="[field label or purpose]")
Verify: Element reference returned
Step 2: Fill field
Call: form_input(tabId, ref="ref_X", value="[user data]")
Step 3: Verify filled value
Call: read_page(tabId, ref_id="ref_X")
Confirm: Value matches expected input
Step 4: Handle errors
If verification fails:
- Report to user
- Ask for correction approach
- Retry with alternative method (computer tool for typing)✅ Filled "First Name" → "John" (verified)
✅ Filled "Last Name" → "Smith" (verified)
✅ Filled "Email" → "john@example.com" (verified)
⚠️ Failed "Phone" → retry needed
✅ Filled "Phone" → "(555) 123-4567" (verified after retry)Form ready for submission:
First Name: John
Last Name: Smith
Email: john@example.com
Phone: (555) 123-4567
Company: [empty - optional]
Comments: [empty - optional]
UNFILLED SENSITIVE FIELDS (you must complete):
- Password: [EMPTY - FILL MANUALLY]
Submit this form? (yes/no/edit)Step 1: Find submit button
Call: find(tabId, query="submit button")
Step 2: Click submit
Call: computer(tabId, action="left_click", ref="ref_submit")
Step 3: Wait for navigation/response
Call: computer(tabId, action="wait", duration=2)Step 1: Read new page
Call: read_page(tabId)
Step 2: Look for confirmation indicators:
- Success message
- Thank you page
- Confirmation number
- Email sent notice
- Error messages
Step 3: Report outcome to user
Success: "Form submitted successfully. Confirmation: [details]"
Failure: "Submission failed: [error message]. Next steps: [guidance]"| Field Type | Method | Verification |
|---|---|---|
| Text input | | Read value back |
| Email input | | Validate format + read back |
| Tel input | | Read value back |
| Textarea | | Read value back |
| Select dropdown | | Read selected option |
| Checkbox | | Read checked state |
| Radio button | | Read selected state |
| Date input | | Read date value |
form_input()computer(action="left_click")computer(action="type", text="value")read_page()Regex: ^[^\s@]+@[^\s@]+\.[^\s@]+$
Check: Value contains @ and domainFormat: Various (555) 123-4567, 555-123-4567, +1-555-123-4567
Strategy: Fill as provided, verify field accepts itBefore submission:
- Verify all required fields have values
- Report missing required fields to user
- Block submission until completeAfter submission attempt, if errors appear:
1. Read error messages
2. Map errors to fields
3. Report to user: "Field [X] error: [message]"
4. Ask user for corrected value
5. Re-fill and re-verify
6. Request submission approval againIf submission fails due to network:
1. Report error to user
2. Offer to retry
3. Verify form state preserved
4. Re-attempt with user approval✅ Form Fill Complete
Form: Contact Us (example.com/contact)
Fields filled: 6/8 (2 optional skipped)
User filled manually: 1 (password)
Filled fields:
✓ First Name: John
✓ Last Name: Smith
✓ Email: john@example.com
✓ Phone: (555) 123-4567
✓ Message: [75 chars]
✓ Subscribe: Yes
Submission: Successful
Confirmation: "Thank you! We'll respond within 24 hours."
Next steps: Check email for confirmation message⚠️ Form Partially Filled
Form: Registration (site.com/register)
Fields filled: 8/12
Blocked on: 4 fields require manual entry
Filled fields: [list]
USER MUST FILL MANUALLY:
⚠ Password (sensitive)
⚠ Confirm Password (sensitive)
⚠ Credit Card (sensitive)
⚠ CVV (sensitive)
Status: Ready for user to complete sensitive fields
Action: Complete the 4 sensitive fields, then I can submit