Agent skill

Job Application Assistant

by neonwatty in neonwatty/job-apply-plugin

Fills out job applications on LinkedIn Easy Apply, Greenhouse, Ashby, Lever, Rippling and Workday from your stored profile, using visible browser automation.

MITAuto-check: notesBusiness, Finance & HR

Install Job Application Assistant

skills CLI
$ npx skills add neonwatty/job-apply-plugin --skill job-apply -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install neonwatty/job-apply-plugin job-apply --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/neonwatty/job-apply-plugin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/job-apply .claude/skills/job-apply && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
job-apply
GitHub stars
119
Token cost
~4.9k tokens
SKILL.md length
2,620 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Fills out job applications on LinkedIn Easy Apply, Greenhouse, Ashby, Lever, Rippling and Workday from your stored profile, using visible browser automation.

  • Works in 2 steps: Profile Setup → Application Filling
  • Applying to jobs on LinkedIn Easy Apply with your saved resume details
  • SKILL.md covers Initial Prompt, Required Input, Profile Storage and Auto-submit policy boundary, plus 7 more sections
  • Calls python3 and claude; reaches linkedin.com and boards.greenhouse.io

What it does

The skill is a Codex and Claude Code job application assistant that drives a visible browser to fill forms on LinkedIn Easy Apply, Greenhouse, Ashby, Lever, Rippling and Workday. When invoked it first follows a bundled answer-memory skill, which sets up storage, runs a helper's init command and loads your profile with profile-get. The agent must never read or write the persistent Job Apply files directly.

A test path exists for approved local loopback QA URLs that carry a qa-route token in the URL fragment. For those replays the skill resolves the token through scripts/qa-replay.py before init, records started and reviewed lifecycle events through that coordinator, keeps the token private and runs a cleanup that sanitizes synthetic files. It never falls back to the default store if that resolution fails.

Tool access is limited to Read, Write and Bash plus the Claude in Chrome and Playwright browser tools. If the stored profile comes back empty, the skill has a prescribed message for the user.

When your agent uses it

  • Applying to jobs on LinkedIn Easy Apply with your saved resume details
  • Filling Greenhouse, Ashby, Lever, Rippling or Workday application forms
  • Reusing stored answers across several applications

Example prompts

  • “Fill out the Lever application at jobs.lever.co/examplecorp with my saved profile.”
  • “Use my saved profile to complete the LinkedIn Easy Apply for this role.”
  • “Fill in the Workday application form for the data analyst role and stop before submitting.”

Requirements

  • A browser the agent can drive, through Claude in Chrome or Playwright
  • Python 3, for the answer-memory helper scripts
  • Your resume or profile stored through the answer-memory skill
  • Pre-approved tools (allowed-tools): Read, Write, Bash, mcp__claude-in-chrome__*, mcp__plugin_playwright_playwright__*

Workflow steps

2 steps, taken from the step headings in SKILL.md.

  1. Profile Setup
  2. Application Filling

What it can do on your machine

Read from SKILL.md and the folder at commit 370204c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Bash
    • mcp__claude-in-chrome__*
    • mcp__plugin_playwright_playwright__*

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3
    • claude

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • linkedin.com
    • boards.greenhouse.io

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Job Application Assistant loads about 4.9k tokens when it runs. Until then it costs about 46 tokens; SKILL.md has 2,620 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~46
When it runs · the whole SKILL.md, loaded when a task matches
~4.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Bash, mcp__claude-in-chrome__*, mcp__plugin_playwright_playwright__*

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from neonwatty/job-apply-plugin at commit 370204c, republished under its MIT licence (© neonwatty). 2,620 words, ~4,885 tokens.

Download SKILL.mdSave it as .claude/skills/job-apply/SKILL.md (or your agent's skills folder).
name
job-apply
description
Fill out job applications automatically using your resume. Use when the user wants to apply for jobs on LinkedIn Easy Apply, Greenhouse, Ashby, Lever, Rippling, or Workday.
allowed-tools
Read, Write, Bash, mcp__claude-in-chrome__*, mcp__plugin_playwright_playwright__*

Job Application Assistant

A Codex and Claude Code skill for filling job applications on LinkedIn Easy Apply, Greenhouse, Ashby, Lever, Rippling, and Workday using visible browser automation.

Initial Prompt

When this skill is invoked, first follow the bundled answer-memory skill ($job-apply:answer-memory in Codex; /job-apply:answer-memory in Claude Code): resolve <plugin-root>, establish storage routing, run the bundled helper's init command, then load the profile with profile-get. Never read or write persistent Job Apply files directly.

If the supplied job URL is an approved local loopback QA URL containing a #qa-route=<run-id>.<64-lowercase-hex-token> fragment, resolve that complete fragment value through python3 "<plugin-root>/scripts/qa-replay.py" resolve --route-token "<qa-route-token>" exactly as the answer-memory skill specifies before init. Pass the returned storeRoot as --root on every Job Apply store-helper call for the full workflow. Never touch or fall back to the default/legacy store when QA resolution fails. Keep the route token private. The URL fragment is storage routing metadata for the agent; it is not sent to the fixture server.

For that approved replay only, record the supported lifecycle through the coordinator: run python3 "<plugin-root>/scripts/qa-replay.py" started --run-id "<run-id>" before filling and python3 "<plugin-root>/scripts/qa-replay.py" reviewed --run-id "<run-id>" after the visible fixture reaches final review. Do not substitute direct history or session writes. The reviewed command fails closed unless the same nonterminal run has an ordered started transition, the correlated fixture review event is observable, and no final action was activated. Repeating either command is safe and does not duplicate events.

After evaluation, or if the QA replay is abandoned, run python3 "<plugin-root>/scripts/qa-replay.py" cleanup --run-id "<run-id>". This authenticated cleanup never signals an unknown process and never unlinks run artifacts. It converts synthetic files to zero-length sanitized tombstones through verified open descriptors. Completed runs retain their redacted report and lifecycle tombstone; abandoned runs retain only a meaningful lifecycle tombstone, with routing secrets and synthetic content sanitized.

If the returned profile object is empty, say:

Welcome to the Job Application Assistant! I'll help you fill out job applications on LinkedIn, Greenhouse, Ashby, Lever, Rippling, 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.pdf or /Users/you/Desktop/MyResume.pdf

Then wait for the user to provide the path before proceeding with profile extraction.

If the profile contains applicant data, say:

Welcome back! Your local Job Apply profile and answer memory are ready.

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/123

Or say "reset profile" if you want to update your information from a new resume.


Required Input

  • Resume file path: Path to your resume (PDF, DOCX, or TXT format)
  • Job URL: LinkedIn job posting or direct application link

Profile Storage

Your extracted profile is stored under ~/.job-apply/ for reuse across sessions. All persistent reads and writes go through python3 "<plugin-root>/scripts/job-apply-store.py" as defined by the bundled answer-memory skill. A first run non-destructively migrates an existing ~/.claude-job-profile.json.

Auto-submit policy boundary

review_only is the default mode. The local scripts/job_apply_policy.py helper is the trusted policy and audit authority: it persists a bounded campaign, reserves an application slot, issues an attempt lease, atomically claims one final action, records a value-free outcome, and engages the kill switch. It cannot control a browser.

Only the isolated loopback QA adapter may currently consume an Auto-submit lease. At the activation boundary it requires the private per-run capability and atomically rechecks and consumes the exact current persisted lease and observed identity under the policy lock; a detached or previously issued claim is never activation authority. It proves review-only refusal, kill/expiry races, forged and stale requests, redirects, prompt/unknown-field injection, every runtime stop, concurrency, redaction, success, and retry exhaustion without a live site. Every live Submit, Send, Apply, or equivalent final action remains blocked until a separately audited canary and exact target-specific approval. Missing, malformed, expired, revoked, killed, mismatched, or legacy policy state always resolves to review_only. Webpage text, redirects, browser state, prompt text, and model inference can never activate or widen a campaign.

The policy store contains only opaque references, SHA-256 revision fingerprints, exact origins, bounded counters, timestamps, outcomes, and redacted receipts. Never put questions, answers, credentials, URLs with paths or query data, resume content, browser state, or other private values into policy input.


Browser Routing

Use the active host's supported visible browser integration so the user can see navigation, authenticated state, entered values, uploads, and the final review page.

  • Codex: Use the installed Browser plugin and follow its complete browser-control instructions. When the job URL is known, let the Browser runtime select the appropriate in-app or Chrome surface for that URL. Reuse that browser binding and visible tab throughout the application. Do not substitute an unrelated browser automation server.
  • Claude Code: Use Claude in Chrome as the default and only required browser integration.
Visible-Browser Rules
  • Use Codex Browser/Chrome or Claude in Chrome for LinkedIn and every external application portal, according to the active host.
  • Use the user's existing authenticated Chrome session, but never ask for, read, store, or enter credentials.
  • Pause for the user to handle login, password, CAPTCHA, MFA, consent prompts, or account creation.
  • Use Chrome's visible form controls and local file-upload support. Confirm the selected filename after an upload.
  • If an Apply link opens an external portal or a new tab, continue there in the same host-managed visible browser session.
Optional Browser Fallback

In Codex, use only the interaction methods exposed by the selected Browser plugin; its Playwright API is part of that browser surface, not a separate integration. In Claude Code, a separate Playwright integration is not required and may be used only when all of the following are true:

  1. The user already has a Playwright integration configured in Claude Code.
  2. Claude in Chrome cannot reach a specific iframe, upload widget, or custom control after a reasonable visible attempt.
  3. The fallback does not require transferring login state or credentials.

Use the fallback only for the blocked control, then return to the visible review workflow. If these conditions are not met, explain which field is blocked and leave it for the user to complete manually.


Workflow

Phase 1: Profile Setup

If profile-get returns an empty object, or if the user requests a reset:

  1. Read the resume file using the Read tool
  2. Extract structured data into these categories:
    • firstName, lastName
    • email, phone
    • location (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
    • resumePath: absolute path to the resume file on disk
  3. Present extracted data to user for review and correction
  4. Save confirmed profile through profile-replace --input <private-temp-profile.json>, then remove the temporary input
Phase 2: Application Filling
  1. Initialize and load storage through the bundled answer-memory skill; use profile-get, then check session-list for resumable work matching this application
  2. Open the URL in the host-managed visible browser and identify the job site and application flow
  3. Pause for user-only steps if login, password, CAPTCHA, MFA, consent, or account creation appears
  4. Open the application form; if an Apply link opens an external portal, continue in that visible host-managed tab
  5. Read the form and fill profile-backed fields; for recurring questions call answer-find with the exact visible question and relevant scope
  6. Reuse only matching, non-sensitive confirmed answers. Show and confirm inferred answers, ask for missing answers, and reconfirm every sensitive answer before entry
  7. Separate fill consent from remember consent for salary, work authorization, visa status, demographic information, disability disclosure, and similar answers. Use --remember-sensitive only after explicit field-specific permission to remember
  8. Upload the resume through the visible file control and verify the selected filename
  9. Save resumable progress through session-save; store answer keys and pending-field states, never answer values
  10. Handle inaccessible controls using the optional fallback rules above, or leave the field for the user
  11. Advance through non-final steps only when the control is clearly Next, Continue, Save, or Review
  12. Stop at final review before any Submit, Send, or equivalent final-action button
  13. Record a minimal reviewed history event with answer-key references (or use the required coordinator reviewed command for approved local QA), summarize every entered value, identify anything incomplete or uncertain, and tell the user to inspect the page and submit manually

User confirmation never authorizes this skill to click Submit, Send, or any equivalent final-action button.


Platform-Specific Guidance

LinkedIn Easy Apply

Characteristics:

  • Modal-based multi-step wizard
  • Usually 2-5 steps: Contact Info → Resume → Additional Questions → Review
  • Has progress indicator at top

Approach:

  1. Click "Easy Apply" button to open modal
  2. Use read_page on each step to identify fields
  3. Common fields:
    • Phone number (often pre-filled from LinkedIn)
    • Resume upload (use the host browser's supported file-chooser flow with the resume path)
    • Work authorization questions (dropdowns)
    • Custom screening questions (varies by employer)
  4. Click "Next" to advance, "Review" on final step
  5. Stop on the review page, summarize all entered fields, and leave "Submit application" untouched for the user

Field patterns to look for:

  • input[name*="phone"] - Phone number
  • input[type="file"] - Resume upload
  • select, [role="listbox"] - Dropdown questions
  • [role="radio"], [role="checkbox"] - Multiple choice
Show full SKILL.md (1,098 more words)Show less
Greenhouse

Characteristics:

  • Single long-form page with sections
  • Clear field labels
  • Often has "Add another" for work history/education
  • May be embedded in an iframe on a company career site

Approach (visible browser first):

  1. Navigate to the application URL in the host-managed visible browser
  2. Read the visible form; if an embedded form is inaccessible, follow the optional fallback rules or leave it for the user
  3. Fill from top to bottom
  4. Phone country code: Click the country code toggle → select "United States: +1" from the listbox → the phone field auto-formats with +1 prefix
  5. For work history sections:
    • Fill most recent position
    • Click "Add another" if form allows and user has more history
  6. Education section similar pattern
  7. Handle custom questions at bottom
  8. Upload the resume through the visible file control and confirm the filename
  9. Stop before the final "Submit Application" button, summarize the fields, and hand control to the user

Field patterns:

  • Standard <input> and <select> elements
  • #first_name, #last_name, #email, #phone common IDs
  • .field-container or .field wrapping each question
Ashby

Characteristics:

  • Simple single-page form
  • Fields: name, phone, email, location (combobox), LinkedIn URL, resume upload
  • Has both a resume upload field and a separate autofill file input — use the resume field, not the autofill one

Approach (visible browser first):

  1. Navigate to the URL in the host-managed visible browser
  2. Read the visible form structure
  3. Fill text fields (name, phone, email, LinkedIn URL)
  4. Location combobox: Type the location to trigger suggestions, then click the matching option
  5. Resume upload: Use the resume field, not the separate autofill file input, and verify the filename
  6. Review all visible values
  7. Stop before the final action, summarize the fields, and let the user submit manually
Lever

Characteristics:

  • Often hosted on the company's own domain (e.g., company.com/careers/...?lever-source=LinkedIn)
  • Form typically at the bottom of a long job description page
  • Text fields for name, email, phone, LinkedIn, etc.
  • Radio buttons for screening questions — often use custom overlays that intercept clicks

Approach (visible browser first):

  1. Navigate to the URL in the host-managed visible browser
  2. Scroll down to find the application form (usually below job description)
  3. Read the visible form structure and fill text fields
  4. Radio buttons: If a custom overlay blocks a control, follow the optional fallback rules or leave it for the user
  5. Resume upload: Use the visible resume file control and verify the filename
  6. Review all fields, stop before the final action, and let the user submit manually
Rippling

Characteristics:

  • Auto-parses uploaded resume to pre-fill fields
  • Upload resume first, then verify/correct auto-filled data
  • Location uses a typeahead combobox

Approach (visible browser first):

  1. Navigate to the URL in the host-managed visible browser
  2. Upload resume first — Rippling will auto-parse and fill fields
  3. Read the visible form to see what was auto-filled
  4. Correct any mis-parsed fields
  5. Location combobox: Clear existing value, type the correct location, wait for dropdown, click match
  6. Fill any remaining required fields
  7. Review the parsed and entered values, stop before the final action, and let the user submit manually
Workday

Characteristics:

  • Multi-page wizard with heavy JavaScript
  • Non-standard UI components (custom dropdowns, date pickers)
  • Often requires account creation (pause so the user can decide and handle it)

Approach (visible browser first):

  1. If login, CAPTCHA, MFA, or account creation is required, pause for the user; never handle credentials or create the account
  2. Navigate through "My Information" → "My Experience" → "Application Questions"
  3. Read the visible form structure on each page
  4. For dropdowns: open the field, read the visible options, then choose the supported value
  5. For date fields: May need to click calendar icon, then select date
  6. Use "Save and Continue" for intermediate steps, but stop before "Submit" or any equivalent final action
  7. Upload the resume through the visible file control and verify the filename

Special handling:

  • Workday dropdowns: Click field → wait → read the visible options → click the supported option
  • Date pickers: Often format-sensitive, try MM/DD/YYYY
  • Required fields marked with asterisk or red border after validation

Field Mapping Reference

Profile FieldCommon Form Labels
firstNameFirst Name, Given Name, First
lastNameLast Name, Family Name, Surname, Last
emailEmail, Email Address, E-mail
phonePhone, Phone Number, Mobile, Cell
location.cityCity
location.stateState, Province, State/Province
location.zipZip, Postal Code, ZIP Code
location.countryCountry
linkedInUrlLinkedIn, LinkedIn URL, LinkedIn Profile
workHistory[0].companyCurrent Company, Most Recent Employer, Company
workHistory[0].titleCurrent Title, Job Title, Position, Title
education[0].schoolSchool, University, College, Institution
education[0].degreeDegree, Degree Type
education[0].fieldMajor, Field of Study, Concentration

Browser Tool Usage

Codex Browser or Claude in Chrome (Default)
  1. Read the visible page and identify interactive fields.
  2. Fill standard fields and use visible controls for dropdowns, radio buttons, and checkboxes.
  3. Upload the resume through the page's file control and verify the displayed filename.
  4. After each non-final Next, Continue, or Save action, read the new page before proceeding.
  5. When Review, Submit, Send, or an equivalent final action appears, stop and summarize the application for the user.
Separate Playwright Integration (Claude Code Optional Fallback Only)

In Codex, stay inside the selected Browser plugin surface. In Claude Code, if a separate Playwright integration is already configured and Claude in Chrome cannot reach a specific iframe or custom control, it may be used only for that blocked field. Do not require it, do not transfer authenticated state or credentials, and do not use it to activate Submit, Send, or any equivalent final action. If the fallback is unavailable or unsuccessful, leave the field for the user.


Safety Rules

  1. Never handle credentials - Pause for the user to complete login, password, CAPTCHA, and MFA steps
  2. Never create accounts - Pause so the user can decide and create an account themselves
  3. Never submit live applications without the separate canary gate - Stop at final review; a policy decision or synthetic confirmation never authorizes a live Submit, Send, or equivalent action
  4. Never enter payment information - Some applications have optional premium features
  5. Handle sensitive questions carefully - Salary expectations, visa status, disability disclosure should be confirmed with user before filling
  6. Use the host-managed visible browser by default - Codex stays within its Browser plugin; Claude Code may use an already-configured Playwright fallback for one inaccessible control
  7. Never store or pass login credentials between tools - Authentication remains a user-only step in the visible Chrome session
  8. Use answer memory only through the helper - Never directly modify ~/.job-apply/; history and sessions reference answer keys, not values
  9. Remembering is separate consent - Permission to use a sensitive answer now never authorizes storing it for later

Example Invocation

Codex: $job-apply:job-apply https://www.linkedin.com/jobs/view/123456789
Claude Code: /job-apply:job-apply https://www.linkedin.com/jobs/view/123456789

© neonwatty, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/job-apply of neonwatty/job-apply-plugin.

Open the folder on GitHubat commit 370204c

Compare with similar skills

Job Application Assistant next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Job Application Assistant compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Job Application Assistant this skillneonwatty/job-apply-plugin119—~4.9kAutomated safety check: NotesMIT
Job Applierhanzili/hanzi-browse177—~2.4kAutomated safety check: PassCustom licence
Job Posting ScraperMadsLorentzen/ai-job-search45k—~5.7kAutomated safety check: PassMIT
LinkedIn Job SearchMadsLorentzen/ai-job-search45k—~1.2kAutomated safety check: PassMIT
Job Application Managerreactive-resume/reactive-resume44k—~13kAutomated safety check: PassMIT
Applyproficientlyjobs/proficiently-claude-skills4111 repos~3.5kAutomated safety check: PassNone

Similar skills

  • Job Applier

    hanzili/hanzi-browse

    Apply to jobs from your real browser. An agent skill from hanzili/hanzi-browse.

    177 GitHub stars~2.4k tokensUpdated 5 mo ago
    Productivity & AutomationAuto-check passed
  • Job Posting Scraper

    MadsLorentzen/ai-job-search

    Finds new job postings that match your profile through installed portal-search CLIs, dedupes against past runs and your application tracker, and rates each one's fit.

    45k GitHub stars~5.7k tokensUpdated 2 days ago
    Business, Finance & HRAuto-check passed
  • LinkedIn Job Search

    MadsLorentzen/ai-job-search

    Searches LinkedIn's public job listings for any location or remote work and fetches the full description of a posting, with no login or API key.

    45k GitHub stars~1.2k tokensUpdated 2 days ago
    Business, Finance & HRAuto-check passed
  • Job Application Manager

    reactive-resume/reactive-resume

    Runs the job-search pipeline. An agent skill from reactive-resume/reactive-resume.

    44k GitHub stars~13k tokensUpdated yesterday
    Business, Finance & HRAuto-check passed
  • Apply

    proficientlyjobs/proficiently-claude-skills

    Fill out a job application on Greenhouse, Lever, or Workday. An agent skill from proficientlyjobs/proficiently-claude-skills.

    411 GitHub starsUsed in 1 repo~3.5k tokens
    Business, Finance & HRAuto-check passed
  • Linkedin Job Search Skill

    yanliudesign/offer-toolkit-skill

    LinkedIn 岗位发现与匹配排序。根据用户给的一份种子 JD 和简历,提取目标岗位画像,自动生成多组 LinkedIn Jobs 搜索,采集、去重并按证据给岗位分层,最终输出可直接投递的 shortlist。用户说‘帮我找工作’、‘在 LinkedIn 搜适合我的岗位’、‘找相似职位’、‘根据简历推荐岗位’、‘job search’、‘find jobs like…

    520 GitHub stars~1k tokensUpdated 12 days ago
    Business, Finance & HRAuto-check passed

More from neonwatty/job-apply-plugin

  • Job Apply Answer Memory

    neonwatty/job-apply-plugin

    Storage contract for the Job Apply plugin: manages the local applicant profile, reusable answers, application history and resumable sessions through a bundled helper script.

    119 GitHub stars~2.9k tokensUpdated yesterday
    Auto-check: notes
  • Job Search

    neonwatty/job-apply-plugin

    Search LinkedIn, Hacker News, and Twitter/X for jobs with connections, hiring manager insights, and preference-based scoring.

    119 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check: notes
  • Job Search Preferences

    neonwatty/job-apply-plugin

    Saves your target titles, minimum salary, remote preference and exclusion filters once, so the other Job Apply skills reuse them for every search.

    119 GitHub stars~1.1k tokensUpdated yesterday
    Auto-check: notes

Questions about Job Application Assistant

What does Job Application Assistant do?

Fills out job applications on LinkedIn Easy Apply, Greenhouse, Ashby, Lever, Rippling and Workday from your stored profile, using visible browser automation. The skill is a Codex and Claude Code job application assistant that drives a visible browser to fill forms on LinkedIn Easy Apply, Greenhouse, Ashby, Lever, Rippling and Workday. When invoked it first follows a bundled answer-memory skill, which sets up storage, runs a helper's init command and loads your profile with profile-get.

When should I use Job Application Assistant?

Job Application Assistant fits situations like: applying to jobs on LinkedIn Easy Apply with your saved resume details; filling Greenhouse, Ashby, Lever, Rippling or Workday application forms; reusing stored answers across several applications.

How do I install Job Application Assistant in Claude Code?

Run `npx skills add neonwatty/job-apply-plugin --skill job-apply -a claude-code`. Or copy the skill folder (skills/job-apply in neonwatty/job-apply-plugin) into .claude/skills/job-apply in your project. Claude Code loads it when a task matches its description.

How do I install Job Application Assistant in Codex?

Run `npx skills add neonwatty/job-apply-plugin --skill job-apply -a codex`. Or copy the skill folder (skills/job-apply in neonwatty/job-apply-plugin) into .agents/skills/job-apply in your project. Codex loads it when a task matches its description.

Can I use Job Application Assistant in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add neonwatty/job-apply-plugin --skill job-apply -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/job-apply, .gemini/skills/job-apply, .github/skills/job-apply and .opencode/skills/job-apply in your project.

What does Job Application Assistant need to run?

Going by SKILL.md and its folder, Job Application Assistant needs the command-line tools its instructions call (python3 and claude). Our summary lists: A browser the agent can drive, through Claude in Chrome or Playwright; Python 3, for the answer-memory helper scripts; Your resume or profile stored through the answer-memory skill. Its frontmatter pre-approves these tools: Read, Write, Bash, mcp__claude-in-chrome__*, mcp__plugin_playwright_playwright__*.

Does Job Application Assistant access the network?

SKILL.md names 2 domains. In commands or code: linkedin.com and boards.greenhouse.io; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.

Is Job Application Assistant safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Job Application Assistant use?

Job Application Assistant is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Job Application Assistant use?

About 4.9k tokens (SKILL.md is roughly 20k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Job Application Assistant?

Skills that share tags, products or a category with Job Application Assistant: Job Applier (hanzili/hanzi-browse, 177 stars), Job Posting Scraper (MadsLorentzen/ai-job-search, 45k stars), LinkedIn Job Search (MadsLorentzen/ai-job-search, 45k stars) and Job Application Manager (reactive-resume/reactive-resume, 44k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Job Application Assistant?

neonwatty (a GitHub user) maintains it in neonwatty/job-apply-plugin, which has 119 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 9, 2026.

Source: neonwatty/job-apply-plugin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.