A Claude Code skill for filling job applications on LinkedIn Easy Apply, Greenhouse, and Workday using browser automation.
Automates job applications on LinkedIn, Greenhouse, and Workday by extracting your profile from a resume and filling forms via browser automation. Uses your saved profile to populate applications when you provide a job URL.
/plugin marketplace add neonwatty/job-apply-plugin/plugin install job-apply@neonwatty-pluginsThis skill inherits all available tools. When active, it can use any tool Claude has access to.
A Claude Code skill for filling job applications on LinkedIn Easy Apply, Greenhouse, and Workday using browser automation.
When this skill is invoked, first check if a profile exists at ~/.claude-job-profile.json.
If NO profile exists, say:
Welcome to the Job Application Assistant! I'll help you fill out job applications on LinkedIn, Greenhouse, and Workday.
First, I need to set up your profile. This is a one-time process — your information will be saved for future applications.
Please provide the path to your resume file (PDF, DOCX, or TXT).
For example:
~/Documents/resume.pdfor/Users/you/Desktop/MyResume.pdf
Then wait for the user to provide the path before proceeding with profile extraction.
If a profile DOES exist, say:
Welcome back! Your profile is loaded from
~/.claude-job-profile.json.Provide a job URL and I'll help you apply. For example:
- LinkedIn:
https://www.linkedin.com/jobs/view/123456789- Greenhouse:
https://boards.greenhouse.io/company/jobs/123- Workday:
https://company.wd5.myworkdayjobs.com/jobs/job/123Or say "reset profile" if you want to update your information from a new resume.
Your extracted profile is stored at ~/.claude-job-profile.json for reuse across sessions. Run with --reset-profile to re-extract from resume.
If no profile exists at ~/.claude-job-profile.json, or if the user requests a reset:
firstName, lastNameemail, phonelocation (city, state, country, zip)linkedInUrl, portfolioUrl, githubUrl (if present)workHistory[]: array of { company, title, startDate, endDate, current, description }education[]: array of { school, degree, field, startDate, endDate, gpa }skills[]: array of skill strings~/.claude-job-profile.json~/.claude-job-profile.jsonboards.greenhouse.io or jobs.lever.comyworkdayjobs.com or wd5.myworkdaycdn.comread_page toolCharacteristics:
Approach:
read_page on each step to identify fieldsupload_image tool with resume path)Field patterns to look for:
input[name*="phone"] - Phone numberinput[type="file"] - Resume uploadselect, [role="listbox"] - Dropdown questions[role="radio"], [role="checkbox"] - Multiple choiceCharacteristics:
Approach:
Field patterns:
<input> and <select> elements#first_name, #last_name, #email, #phone common IDs.field-container or .field wrapping each questionCharacteristics:
Approach:
find to locate option, then clickcomputer tool with clicks for non-standard componentsSpecial handling:
read_page → click option| Profile Field | Common Form Labels |
|---|---|
| firstName | First Name, Given Name, First |
| lastName | Last Name, Family Name, Surname, Last |
| Email, Email Address, E-mail | |
| phone | Phone, Phone Number, Mobile, Cell |
| location.city | City |
| location.state | State, Province, State/Province |
| location.zip | Zip, Postal Code, ZIP Code |
| location.country | Country |
| linkedInUrl | LinkedIn, LinkedIn URL, LinkedIn Profile |
| workHistory[0].company | Current Company, Most Recent Employer, Company |
| workHistory[0].title | Current Title, Job Title, Position, Title |
| education[0].school | School, University, College, Institution |
| education[0].degree | Degree, Degree Type |
| education[0].field | Major, Field of Study, Concentration |
Use read_page with filter: "interactive" to see all form fields
Use find with natural language: "email input field", "submit button"
Use form_input for standard inputs and selects:
- ref: element reference from read_page
- value: the value to set
Use computer with action: "left_click" for custom dropdowns:
1. Click to open dropdown
2. read_page to see options
3. Click the correct option
Use find to locate file input: "resume upload field"
Use form_input or computer to trigger file picker
Note: May need to use upload_image tool for some implementations
After filling current page:
1. find "next button" or "continue button"
2. Take screenshot for record
3. Click next
4. read_page on new step
5. Repeat until review/submit page
User: Help me apply to this job: https://www.linkedin.com/jobs/view/123456789
Creating algorithmic art using p5.js with seeded randomness and interactive parameter exploration. Use this when users request creating art using code, generative art, algorithmic art, flow fields, or particle systems. Create original algorithmic art rather than copying existing artists' work to avoid copyright violations.
Applies Anthropic's official brand colors and typography to any sort of artifact that may benefit from having Anthropic's look-and-feel. Use it when brand colors or style guidelines, visual formatting, or company design standards apply.
Create beautiful visual art in .png and .pdf documents using design philosophy. You should use this skill when the user asks to create a poster, piece of art, design, or other static piece. Create original visual designs, never copying existing artists' work to avoid copyright violations.