job-form-filler
**Job Application Form Filler**: Automatically fills out job application forms on career sites (Lever, Greenhouse, Ashby, Workday, etc.) using the user's resume and stored preferences. Use this skill whenever the user shares a job posting URL and wants help filling out the application form, or mentions "fill out", "apply", "fill the form", "autofill application", "complete the application", or any variation of wanting a job application form filled in. Also trigger when the user pastes a job URL and says something like "fill this out for me" or "apply to this". The skill fills every field but does NOT press submit — the user always reviews and submits manually.
Best use case
job-form-filler is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
**Job Application Form Filler**: Automatically fills out job application forms on career sites (Lever, Greenhouse, Ashby, Workday, etc.) using the user's resume and stored preferences. Use this skill whenever the user shares a job posting URL and wants help filling out the application form, or mentions "fill out", "apply", "fill the form", "autofill application", "complete the application", or any variation of wanting a job application form filled in. Also trigger when the user pastes a job URL and says something like "fill this out for me" or "apply to this". The skill fills every field but does NOT press submit — the user always reviews and submits manually.
Teams using job-form-filler should expect a more consistent output, faster repeated execution, less prompt rewriting.
When to use this skill
- You want a reusable workflow that can be run more than once with consistent structure.
When not to use this skill
- You only need a quick one-off answer and do not need a reusable workflow.
- You cannot install or maintain the underlying files, dependencies, or repository context.
Installation
Claude Code / Cursor / Codex
Manual Installation
- Download SKILL.md from GitHub
- Place it in
.claude/skills/job-form-filler/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How job-form-filler Compares
| Feature / Agent | job-form-filler | Standard Approach |
|---|---|---|
| Platform Support | Not specified | Limited / Varies |
| Context Awareness | High | Baseline |
| Installation Complexity | Unknown | N/A |
Frequently Asked Questions
What does this skill do?
**Job Application Form Filler**: Automatically fills out job application forms on career sites (Lever, Greenhouse, Ashby, Workday, etc.) using the user's resume and stored preferences. Use this skill whenever the user shares a job posting URL and wants help filling out the application form, or mentions "fill out", "apply", "fill the form", "autofill application", "complete the application", or any variation of wanting a job application form filled in. Also trigger when the user pastes a job URL and says something like "fill this out for me" or "apply to this". The skill fills every field but does NOT press submit — the user always reviews and submits manually.
Where can I find the source code?
You can find the source code on GitHub using the link provided at the top of the page.
SKILL.md Source
# Job Application Form Filler You are an automated job application form filler. Your job is to navigate to a job posting, open the application form, and fill out every field using the user's profile data, resume, and intelligent inference — then **stop before submitting** so the user can review. ## First-Run Setup Before filling any form, check if `config.yaml` exists in the parent directory (one level up from this skill folder). Read the `user`, `resume`, `preferences`, and `eeo` sections. **If config.yaml does NOT exist or the `user.name` field is empty:** 1. Tell the user: "This is your first time using job-form-filler. I need to set up your profile — this only happens once." 2. Ask for the required fields using AskUserQuestion in logical groups: - **Personal info:** Name, email, phone, location, pronouns, current company - **Links:** LinkedIn URL, GitHub URL, portfolio URL - **Work authorization:** Authorized to work? Require sponsorship? - **EEO preferences (optional):** Gender, race/ethnicity, veteran status, disability status — explain these are for voluntary demographic questions and can be left as "decline" - **Resume:** Google Doc ID (or they can upload a PDF each time) 3. Write the responses to `config.yaml` in the parent directory 4. Confirm setup is complete, then proceed **If config.yaml exists and has the required fields:** Read it silently and proceed. ## Setup Before filling any form, load the user's configuration: 1. Read `config.yaml` from the parent directory for personal info, links, standard answers, and EEO preferences 2. If the user provides a resume (PDF or text), use it as the primary source for experience-based answers 3. If the user provides a Google Doc link for their resume, fetch it for additional variants and context ## Workflow ### Step 1: Navigate to the Job Posting Open the provided URL in the browser. Take a screenshot to confirm the page loaded. - If you land on a job description page (not the form), look for an "Apply" or "Apply for this job" button and click it - If you land directly on the form, proceed to Step 2 - Handle common patterns: Lever (`/apply` suffix), Greenhouse (`#app` anchor), Ashby (inline form), Workday (multi-page wizard) ### Step 2: Read the Full Job Description Before filling the form, extract and understand the job description. This context is critical for tailoring open-ended answers. Read the page text or scroll through the JD to understand the role, requirements, and company. ### Step 3: Map the Form Fields Use `read_page` with `filter: "interactive"` to get all form elements. Also take a screenshot to visually confirm the form layout. Identify: - **Text inputs** (name, email, phone, location, company, URLs) - **File uploads** (resume/CV) - **Radio buttons** (yes/no questions) - **Checkboxes** (pronouns, agreements) - **Dropdowns/selects** (EEO fields, country, etc.) - **Textareas** (open-ended questions, cover letter) - **The submit button** (so you know to avoid it!) ### Step 4: Fill the Form Work through the form top-to-bottom. For each field: #### Personal Info Fields Use the values from `config.yaml` → `user` section: - Full name → `user.name` - Email → `user.email` - Phone → `user.phone` - Location → `user.location` - Current company → `user.current_company` - Pronouns → `user.pronouns` #### Link Fields - LinkedIn → `user.linkedin_url` - GitHub → `user.github_url` - Portfolio → `user.portfolio_url` - Leave other link fields blank unless the config specifies values #### Resume Upload If there's a resume/CV upload field and the user provided a file: - Use the `upload_image` tool with the resume file to attach it to the file input - If upload isn't possible via automation, note it for the user #### Yes/No and Radio Questions Match against the config values: - "Located in US?" → based on `user.location` - "Require sponsorship?" → `preferences.requires_sponsorship` - "Authorized to work?" → `preferences.authorized_to_work` - For role-specific yes/no questions (e.g., "Do you have experience with X?"), check the resume — if the experience is clearly there, select Yes; if not, be honest #### Open-Ended / Textarea Questions This is where the skill earns its keep. For each open-ended question: 1. Read the question carefully 2. Check if it maps to something specific in the resume 3. Write a concise, specific answer drawing from real experience 4. Keep it natural and conversational — not robotic 5. Aim for 2-4 sentences for short answers, a solid paragraph for longer ones **For "Additional information" or "Cover letter" textareas:** Write a brief, tailored note connecting the user's experience to the specific role. Reference the company by name and the specific aspects of the role that align with the user's background. Keep it to 3-5 sentences. #### EEO / Demographic Fields (Voluntary) Fill these using `config.yaml` → `eeo` section: - Gender → `eeo.gender` (skip or select "decline" if blank) - Race → `eeo.race_ethnicity` (skip or select "decline" if blank) - Veteran Status → `eeo.veteran_status` (skip or select "decline" if blank) - Disability → `eeo.disability_status` (skip or select "decline" if blank) #### Dropdowns For dropdown/select fields, use the `form_input` tool with the value text. If the exact text doesn't match, use the closest option. ### Step 5: Review and Report After filling all fields: 1. Scroll through the entire form taking screenshots to verify every field is filled 2. Compile a summary of what was filled, highlighting: - Any fields that couldn't be filled (e.g., file upload issues) - Any open-ended answers the user should review closely - Any fields where you had to make a judgment call 3. Explicitly confirm: **"The form is filled but NOT submitted. Please review and submit manually."** ## Important Rules - **NEVER click Submit / Send / Apply buttons.** The user always submits manually. - **NEVER fabricate experience.** Only reference things actually on the resume. - **Be honest on yes/no questions.** If the resume doesn't support a "Yes" answer, say "No" or flag it for the user. - **Handle errors gracefully.** If a field can't be filled (e.g., CAPTCHAs, file uploads that don't work), note it and move on. - **Close any browser extension popups** (like Simplify, Grammarly, etc.) that might overlay the form before starting to fill fields. ## Platform-Specific Notes ### Lever (jobs.lever.co) - Click "Apply for this job" → form appears on `/apply` page - Resume upload is at the top — use the file input button (look for `type="file"` in the accessibility tree) - Standard fields: name, email, phone, location, company, links - **Location field uses autocomplete**: Don't use `form_input` — instead click the field, type the city name with `type` action, wait 1-2 seconds for the dropdown to appear, then click the correct suggestion - Custom questions appear in labeled sections - EEO section is at the bottom with `<select>` dropdowns — use `form_input` with the exact option text - **Checkboxes** (like pronouns): Use `left_click` on the checkbox ref, not `form_input` - Use `read_page` with `filter: "all"` and `max_chars: 80000` to get the complete form tree ### Greenhouse (boards.greenhouse.io) - Form is often on the same page or a separate `/jobs/ID` page - May have multi-step forms - Custom questions vary widely ### Ashby - Usually inline application on the JD page - Simpler forms typically ### Workday - Multi-page wizard, more complex - May require account creation (flag this for user — don't create accounts)
Related Skills
network-finder
**Network & Referral Finder**: Searches the user's LinkedIn connections and a referral spreadsheet to find potential contacts at a target company. Use this skill whenever the user wants to find connections at a company, look for referrals, check if they know anyone at a company, or find a warm intro path. Trigger on mentions of "referral", "connection", "know anyone at", "warm intro", "network", "who do I know at", or any company name combined with intent to find contacts there.
job-crawler
**Job Posting Crawler & Matcher**: Crawls a company's career page to find open positions, then ranks the top 3 roles the user is most qualified for based on their resumes. Use this skill whenever the user shares a company careers URL and wants to find the best-fit roles, or mentions "crawl jobs", "scan careers page", "find roles at [company]", "what positions are open", "best fit roles", or "top jobs for me". Also trigger when the user pastes a careers/jobs URL and asks which roles to apply for, or says something like "check out what [company] has open" or "anything good at [company]?". Trigger even for casual mentions like "palantir careers" or "jobs at stripe".
job-analyzer
**Job Application Analyzer**: Analyzes job descriptions against the user's resumes and achievement history to provide tailored resume suggestions, a brief intro blurb, company research, and compatibility assessments. Use this skill whenever the user shares a job posting URL or job description and wants help applying, tailoring a resume, writing a cover letter, evaluating fit, or researching the hiring company. Also trigger when the user mentions "job", "apply", "application", "job description", "JD", "resume review", "cover letter", "fit check", or "compatibility" in the context of job searching. Even casual mentions like "check out this role" or "what do you think of this job" should trigger this skill.
phase-space-transformation
Coordinate changes preserving dynamics
performing-yara-rule-development-for-detection
Develop precise YARA rules for malware detection by identifying unique byte patterns, strings, and behavioral indicators in executable files while minimizing false positives.
performing-wireless-security-assessment-with-kismet
Conduct wireless network security assessments using Kismet to detect rogue access points, hidden SSIDs, weak encryption, and unauthorized clients through passive RF monitoring.
performing-wireless-network-penetration-test
Execute a wireless network penetration test to assess WiFi security by capturing handshakes, cracking WPA2/WPA3 keys, detecting rogue access points, and testing wireless segmentation using Aircrack-ng and related tools.
performing-windows-artifact-analysis-with-eric-zimmerman-tools
Perform comprehensive Windows forensic artifact analysis using Eric Zimmerman's open-source EZ Tools suite including KAPE, MFTECmd, PECmd, LECmd, JLECmd, and Timeline Explorer for parsing registry hives, prefetch files, event logs, and file system metadata.
performing-wifi-password-cracking-with-aircrack
Captures WPA/WPA2 handshakes and performs offline password cracking using aircrack-ng, hashcat, and dictionary attacks during authorized wireless security assessments to evaluate passphrase strength and wireless network security posture.
performing-web-cache-poisoning-attack
Exploiting web cache mechanisms to serve malicious content to other users by poisoning cached responses through unkeyed headers and parameters during authorized security tests.
performing-web-cache-deception-attack
Execute web cache deception attacks by exploiting path normalization discrepancies between CDN caching layers and origin servers to cache and retrieve sensitive authenticated content.
performing-web-application-vulnerability-triage
Triage web application vulnerability findings from DAST/SAST scanners using OWASP risk rating methodology to separate true positives from false positives and prioritize remediation.