application-filler
Skill4 starsChanged 7 months agoMITView on GitHub
Automatically fill out job application forms using browser automation (Chrome MCP and/or computer-use). Use this skill whenever the user needs to submit a job application, after the job-screener returns APPLY and the cover letter is ready (if applicable). Handles Greenhouse, Lever, Workday, and other common ATS platforms. Trigger on: "fill out application", "submit application", "apply to this job", or after completing the cover-letter-writer workflow for an APPLY-scored position.
We split this skill into the rules it gives an agent
9 rules. About 0 are common, 9 are distinctive, and 0 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈9
Distinctive · estimate
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 13
If this is the first job-application skill invoked in this session, run the self-check skill first.
- Distinctive: line 57
Important: Never hardcode personal information.
- Distinctive: line 61
When an application form has file upload fields (resume, cover letter, portfolio, transcript, etc.):
- Distinctive: line 69
If no matching registered file exists, tell the user: "This form asks for a [type] but I don't have one registered.
- Distinctive: line 83
Wait for dropdown options to appear
- Distinctive: line 88
Do NOT retry with different path formats — it's a platform limitation
- Distinctive: line 122
Check if profile data is pre-populated before overwriting
- Distinctive: line 163
After the user submits, trigger the application-tracker skill to automatically:
- Distinctive: line 166
Verify cover letter PDF is saved
≈ “Common” is an estimate: at least 1 in 5 of the 308,232 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.
Files
Application Filler
This skill automates filling out job application forms. It handles common ATS platforms (Greenhouse, Lever, Workday, Handshake-embedded) using Chrome MCP tools and computer-use when needed.
Pre-Flight
If this is the first job-application skill invoked in this session, run the self-check skill first. The filler needs the correct resume filename and latest personal data. Self-check also reveals which companies have already been applied to — avoiding duplicate submissions.
Application Data
All personal data comes from config.yml. Map config fields to form fields:
First Name: config.personal.first_name
Last Name: config.personal.last_name
Preferred Name: config.personal.preferred_name
Email: config.personal.email
Phone: config.personal.phone
Country: config.personal.country
# Education
School: config.education.school
Degree: config.education.degree
Discipline: config.education.discipline
Start Date Year: config.education.start_year
End Date Year: config.education.end_year
# Work
Current Company: config.work.current_company
Current Title: config.work.current_title
Years of Experience: config.work.years_of_experience
# Common Dropdown Answers
Authorized to work: config.visa.authorized_to_work → Yes/No
Require sponsorship: config.visa.needs_sponsorship → Yes/No
Gender: config.form_defaults.gender
Race/Ethnicity: config.form_defaults.race_ethnicity
Veteran status: config.form_defaults.veteran_status
First gen college: config.form_defaults.first_gen_college (if "Ask me" → prompt user)
How heard: config.form_defaults.how_heard
Spoken languages: config.form_defaults.spoken_languages
Written languages: config.form_defaults.written_languages
Privacy consent: Yes (always)
Location pref: Based on JD location (default to the job's city)
# Files (on user's computer)
Resume: config.files.resume
Cover Letter: config.files.cover_letter_dir/[Company]_CoverLetter_[LastName].pdfImportant: Never hardcode personal information. If a config field is missing, ask the user rather than guessing.
File Uploads
When an application form has file upload fields (resume, cover letter, portfolio, transcript, etc.):
- Resume → use
config.files.resume - Cover Letter → use
config.files.cover_letter_dir/[Company]_CoverLetter_[LastName].pdf - Other uploads (portfolio, transcript, writing sample, etc.) → check
config.registered_filesfor matching types:- Form asks for "portfolio" → look for
type: "portfolio"in registered_files - Form asks for "transcript" → look for
type: "transcript" - Form asks for "writing sample" → look for
type: "writing" - If no matching registered file exists, tell the user: "This form asks for a [type] but I don't have one registered. Do you have a file to upload?"
- Form asks for "portfolio" → look for
This way, users who registered extra files in their config will have them auto-filled. Users who didn't will be prompted.
Platform-Specific Instructions
Greenhouse (job-boards.greenhouse.io)
Greenhouse is the most common ATS the user encounters. Key behaviors:
Combobox dropdowns require click→type→select:
Greenhouse uses React combobox components. The form_input tool alone does NOT persist selections — the value appears in the field but isn't actually selected in the React state. You must:
- Click on the combobox field (use
left_clickon the ref) - Type the desired value to filter the dropdown
- Wait for dropdown options to appear
- Click the matching dropdown option to select it
File uploads may fail via Chrome extension:
The Chrome MCP file_upload tool returns "Not allowed" (-32000) on some Greenhouse forms due to CSP or extension restrictions. If this happens:
- Do NOT retry with different path formats — it's a platform limitation
- Fill all other fields first
- Tell the user to manually upload resume and cover letter
- Provide the exact file paths on his Mac for easy access
Form field order (typical Greenhouse):
- Personal info (name, email, phone, country)
- Resume upload
- Cover letter upload
- Education (school, degree, discipline, end date)
- LinkedIn / Website (skip unless the user has them)
- Work info (current company, experience, title)
- Custom questions (location preference, source, visa, etc.)
- Certifications (skip unless relevant)
- Privacy consent
- Submit
Lever (jobs.lever.co)
Similar to Greenhouse but simpler forms. form_input usually works directly for dropdowns. File uploads may also fail — same workaround applies.
Workday (myworkdayjobs.com)
Workday forms are more complex with multi-page flows:
- Each section may be a separate page — click "Next" or "Save and Continue"
- Dropdown fields often need a slight delay after typing before options appear
- Some fields have auto-complete that requires selecting from suggestions
- "How did you hear about us" is usually a required field
Handshake-Embedded Applications
Some applications are completed directly within Handshake:
- Usually simpler forms
- May auto-fill from Handshake profile
- Check if profile data is pre-populated before overwriting
Workflow
Before filling any form:
- Verify the job-screener score is >=
config.rubric.apply_thresholdor user has explicitly approved - Check if cover letter upload is available — if yes and
config.cover_letter.must_writeis true, ensure cover letter has been written and passed debate review - Take a screenshot of the full form to understand all fields before starting
While filling:
- Fill fields top-to-bottom
- For each dropdown/combobox, use the click→type→select pattern
- Take screenshots periodically to verify selections persisted
- Skip optional fields unless the user has relevant data (LinkedIn, Website)
- For questions about race/gender/veteran status, use "Prefer not to say" or "Decline to self-identify" unless the user specifies otherwise
After filling:
- Scroll through the entire form to verify all fields
- List any fields that couldn't be filled (especially file uploads)
- Tell the user exactly what they need to do manually:
- File uploads with exact paths from
config.files.* - Any questions requiring their personal input
- File uploads with exact paths from
- Do NOT click Submit — user reviews and submits manually
ATS Anti-Bot Warning: Some ATS platforms (especially Workday) have bot detection. If you encounter CAPTCHAs, "unusual activity" warnings, or rate-limit errors, stop immediately and inform the user. Never attempt to bypass bot detection systems.
Known Issues and Workarounds
| Issue | Platform | Workaround |
| file_upload returns "Not allowed" | Greenhouse | the user uploads manually; provide file paths |
| Combobox value doesn't persist | Greenhouse | Use click→type→select, not form_input alone |
| Dropdown shows "No options" | Any | Try alternative terms (e.g., "Mandarin" instead of "Chinese") |
| Form resets after page navigation | Workday | Fill all fields on current page before clicking Next |
| reCAPTCHA blocks submission | Any | the user must solve manually |
Post-Submission Tracking
After the user submits, trigger the application-tracker skill to automatically:
- Append a row to the Job Tracker spreadsheet
- Save a JD snapshot markdown file
- Verify cover letter PDF is saved
- Report the updated application count to the user
In this repository5 other files it gives its agents.
- application-trackerSkill
- cover-letter-writerSkill
- job-screenerSkill
- job-searchSkill
- self-checkSkill
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
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.

