/job-applier
Apply to jobs from your real browser. Reads job postings, matches requirements against your resume, fills out application forms, and handles multi-step flows on Lever, Greenhouse, Workday, Indeed, LinkedIn Jobs, and other platforms. Reviews everything before submitting. Requires
$ npx -y skills add hanzili/hanzi-browse --skill job-applier --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
- Fires itselfAuto-invocation. Claude auto-loads it when your prompt matches the work.Auto-invocation is when the right skill fires by itself at the right moment, driven by a FLOW.md router and a hook, instead of you invoking it by name. It is the difference between a skill being installed and a skill actually getting used.Read the full definition →
- You can call itInvoke it directly when you want it.
- Slash command
/job-applier
Context preview
The summary Claude sees to decide when to auto-load this skill.
Apply to jobs from your real browser. Reads job postings, matches requirements against your resume, fills out application forms, and handles multi-step flows on Lever, Greenhouse, Workday, Indeed, LinkedIn Jobs, and other platforms. Reviews everything before submitting. Requires
SKILL.md
job-applier.SKILL.mdname: job-applier
description: Apply to jobs from your real browser. Reads job postings, matches requirements against your resume, fills out application forms, and handles multi-step flows on Lever, Greenhouse, Workday, Indeed, LinkedIn Jobs, and other platforms. Reviews everything before submitting. Requires the hanzi browser automation MCP server and Chrome extension.
category: life
Job Application Helper
You help users apply to jobs by reading postings, matching qualifications, and filling out application forms in a real browser with their signed-in sessions.
Tool Selection Rule
- **Prefer existing tools first**: code search, file reads, APIs, and other MCP integrations.
- **Use Hanzi only for browser-required steps**: navigating job boards, reading authenticated postings, and filling application forms.
- **If a platform shows a CAPTCHA, rate limit, or bot detection**, stop immediately and tell the user.
Before Starting — Preflight Check
Try calling `browser_status` to verify the browser extension is reachable. If the tool doesn't exist or returns an error:
> **Hanzi isn't set up yet.** This skill needs the hanzi browser extension running in Chrome. > > 1. Install from the Chrome Web Store: https://chromewebstore.google.com/detail/hanzi-browse/iklpkemlmbhemkiojndpbhoakgikpmcd > 2. The extension will walk you through setup (~1 minute) > 3. Then come back and run this again
---
What You Need From the User
1. **Job URL** — link to the job posting 2. **Resume / profile context** — either a file path to their resume, a pasted summary, or "use my LinkedIn profile" 3. **Additional context** — cover letter tone, salary expectations, visa status, availability, or any field-specific answers
Optional:
- Preferred name or contact info overrides
- Answers to common screening questions (years of experience, willing to relocate, etc.)
- Whether to actually submit or just fill and pause for review
---
Phase 1: Gather Context BEFORE Opening the Browser
Read the user's resume
If the user provided a file path, read it. If they pasted text, use that. Extract:
- Name, email, phone, location
- Current title and company
- Skills and technologies
- Years of experience
- Education
- Notable achievements
Store these as structured data — you'll need them for every form field.
Read the job posting
If the job URL is publicly accessible, try fetching it with `WebFetch` or `curl` first — no browser needed for public postings.
If it requires authentication (LinkedIn Jobs behind login, internal company portals), use `browser_start` to navigate and read the posting.
Extract from the posting:
- Job title, company, location, remote/hybrid/onsite
- Required qualifications
- Preferred qualifications
- Responsibilities
- Application deadline (if listed)
Match qualifications
Compare the user's profile against the job requirements. Present a brief match summary:
Match summary for [Job Title] at [Company]:
Strong matches:
- [Requirement] — [How the user matches]
- [Requirement] — [How the user matches]
Gaps:
- [Requirement] — [What's missing or weak]
Overall fit: [Strong / Moderate / Weak]
If the fit is weak, tell the user honestly. Ask if they want to proceed anyway.
---
Phase 2: Prepare Application Answers
Before touching the browser, prepare answers for common application fields:
**Standard fields** (auto-fill from resume):
- Full name, email, phone, location
- Current company, current title
- LinkedIn URL, portfolio/website
- Resume upload (file path)
**Screening questions** (need user input if not provided):
- Are you authorized to work in [country]?
- Do you require visa sponsorship?
- Years of experience in [skill]
- Desired salary / salary expectations
- Earliest start date
- Willing to relocate?
- How did you hear about this role?
**Cover letter** (generate if needed):
- Tailor to the specific role and company
- Reference 2-3 specific requirements from the posting that match the user's experience
- Keep it under 300 words
- Match the tone the user requested (professional, conversational, etc.)
Present all prepared answers to the user. Ask them to confirm or adjust before proceeding.
---
Phase 3: Fill the Application Form
Navigate to the application page using `browser_start`. Apply **one job at a time, sequentially**.
Platform-specific patterns
**Lever** (jobs.lever.co):
- Single-page form with resume upload, standard fields, and custom questions
- Upload resume first — Lever sometimes auto-fills fields from it
- Custom questions appear below the standard fields
**Greenhouse** (boards.greenhouse.io):
- Multi-step form: personal info, resume, custom questions, voluntary self-identification
- Each step has a "Next" or "Continue" button
- EEOC/voluntary fields are optional — skip unless the user wants to fill them
**Workday** (*.myworkdayjobs.com):
- Requires account creation — warn the user before proceeding
- Multi-page flow with "Save and Continue" between sections
- Often requires re-entering information already on the resume
- May have autofill from LinkedIn — use it if the user is signed in
**LinkedIn Jobs** (linkedin.com/jobs):
- "Easy Apply" is a modal overlay, not a new page
- May have 1-3 steps within the modal
- Can upload resume or use LinkedIn profile
- Some postings redirect to the company's external ATS
**Indeed** (indeed.com):
- May require an Indeed account
- "Apply Now" sometimes redirects to external site
- Indeed's own application flow has screening questions upfront
**Generic ATS / company career pages**:
- Look for the application form — usually behind "Apply" or "Apply Now"
- Fill fields based on label matching (name, email, phone, etc.)
- For file uploads, use the resume file path from the user
- For dropdowns, select the closest matching option
Filling strategy
1. Navigate to the application URL 2. If the platform auto-fills from resume upload, upload first and let it populate 3. Fill remaining
Read more
name: job-applier description: Apply to jobs from your real browser. Reads job postings, matches requirements against your resume, fills out application forms, and handles multi-step flows on Lever, Greenhouse, Workday, Indeed, LinkedIn Jobs, and other platforms. Reviews everything before submitting. Requires the hanzi browser automation MCP server and Chrome extension. category: life
Job Application Helper
You help users apply to jobs by reading postings, matching qualifications, and filling out application forms in a real browser with their signed-in sessions.
Tool Selection Rule
- **Prefer existing tools first**: code search, file reads, APIs, and other MCP integrations.
- **Use Hanzi only for browser-required steps**: navigating job boards, reading authenticated postings, and filling application forms.
- **If a platform shows a CAPTCHA, rate limit, or bot detection**, stop immediately and tell the user.
Before Starting — Preflight Check
Try calling `browser_status` to verify the browser extension is reachable. If the tool doesn't exist or returns an error:
> **Hanzi isn't set up yet.** This skill needs the hanzi browser extension running in Chrome. > > 1. Install from the Chrome Web Store: https://chromewebstore.google.com/detail/hanzi-browse/iklpkemlmbhemkiojndpbhoakgikpmcd > 2. The extension will walk you through setup (~1 minute) > 3. Then come back and run this again
---
What You Need From the User
1. **Job URL** — link to the job posting 2. **Resume / profile context** — either a file path to their resume, a pasted summary, or "use my LinkedIn profile" 3. **Additional context** — cover letter tone, salary expectations, visa status, availability, or any field-specific answers
Optional:
- Preferred name or contact info overrides
- Answers to common screening questions (years of experience, willing to relocate, etc.)
- Whether to actually submit or just fill and pause for review
---
Phase 1: Gather Context BEFORE Opening the Browser
Read the user's resume
If the user provided a file path, read it. If they pasted text, use that. Extract:
- Name, email, phone, location
- Current title and company
- Skills and technologies
- Years of experience
- Education
- Notable achievements
Store these as structured data — you'll need them for every form field.
Read the job posting
If the job URL is publicly accessible, try fetching it with `WebFetch` or `curl` first — no browser needed for public postings.
If it requires authentication (LinkedIn Jobs behind login, internal company portals), use `browser_start` to navigate and read the posting.
Extract from the posting:
- Job title, company, location, remote/hybrid/onsite
- Required qualifications
- Preferred qualifications
- Responsibilities
- Application deadline (if listed)
Match qualifications
Compare the user's profile against the job requirements. Present a brief match summary:
Match summary for [Job Title] at [Company]: Strong matches: - [Requirement] — [How the user matches] - [Requirement] — [How the user matches] Gaps: - [Requirement] — [What's missing or weak] Overall fit: [Strong / Moderate / Weak]
If the fit is weak, tell the user honestly. Ask if they want to proceed anyway.
---
Phase 2: Prepare Application Answers
Before touching the browser, prepare answers for common application fields:
**Standard fields** (auto-fill from resume):
- Full name, email, phone, location
- Current company, current title
- LinkedIn URL, portfolio/website
- Resume upload (file path)
**Screening questions** (need user input if not provided):
- Are you authorized to work in [country]?
- Do you require visa sponsorship?
- Years of experience in [skill]
- Desired salary / salary expectations
- Earliest start date
- Willing to relocate?
- How did you hear about this role?
**Cover letter** (generate if needed):
- Tailor to the specific role and company
- Reference 2-3 specific requirements from the posting that match the user's experience
- Keep it under 300 words
- Match the tone the user requested (professional, conversational, etc.)
Present all prepared answers to the user. Ask them to confirm or adjust before proceeding.
---
Phase 3: Fill the Application Form
Navigate to the application page using `browser_start`. Apply **one job at a time, sequentially**.
Platform-specific patterns
**Lever** (jobs.lever.co):
- Single-page form with resume upload, standard fields, and custom questions
- Upload resume first — Lever sometimes auto-fills fields from it
- Custom questions appear below the standard fields
**Greenhouse** (boards.greenhouse.io):
- Multi-step form: personal info, resume, custom questions, voluntary self-identification
- Each step has a "Next" or "Continue" button
- EEOC/voluntary fields are optional — skip unless the user wants to fill them
**Workday** (*.myworkdayjobs.com):
- Requires account creation — warn the user before proceeding
- Multi-page flow with "Save and Continue" between sections
- Often requires re-entering information already on the resume
- May have autofill from LinkedIn — use it if the user is signed in
**LinkedIn Jobs** (linkedin.com/jobs):
- "Easy Apply" is a modal overlay, not a new page
- May have 1-3 steps within the modal
- Can upload resume or use LinkedIn profile
- Some postings redirect to the company's external ATS
**Indeed** (indeed.com):
- May require an Indeed account
- "Apply Now" sometimes redirects to external site
- Indeed's own application flow has screening questions upfront
**Generic ATS / company career pages**:
- Look for the application form — usually behind "Apply" or "Apply Now"
- Fill fields based on label matching (name, email, phone, etc.)
- For file uploads, use the resume file path from the user
- For dropdowns, select the closest matching option
Filling strategy
1. Navigate to the application URL 2. If the platform auto-fills from resume upload, upload first and let it populate 3. Fill remaining
The context layer for browsing agents. Your browsing agent keeps failing on real sites — X uses Draft.js, LinkedIn hides the connect button, Gmail needs keyboard shortcuts.
Repo: hanzili/hanzi-browse
Other skills on hanzi-browse.
- /a11y-auditor
Audit web pages for accessibility issues in a real browser. Checks contrast, font sizes, focus indicators, keyboard navigation, ARIA labels, and semantic HTML against WCAG 2.1 AA. Reports findings with screenshots and specific remediation steps. Requires the hanzi browser
Open skill - /apartment-finder
Search for apartments across multiple real estate platforms, compare listings side by side, and help submit inquiries or applications. Use when the user wants to find a place to rent — searching Zillow, Apartments.com, Craigslist, and similar sites with their real signed-in
Open skill - /competitor-monitor
Monitor competitor websites for changes. Visit a list of URLs, extract pricing, features, positioning, and key content, compare against previous snapshots stored locally, and generate a change report summarizing what's different. Use when the user says "check competitors", "what
Open skill - /competitor-researcher
Research SaaS and AI-tool competitors in a real browser. Visit competitor sites, pricing pages, feature pages, and review platforms to extract pricing, features, positioning, and customer sentiment, then return a structured comparison report. Use when the user wants competitor
Open skill - /data-extractor
Extract structured data from websites into CSV or JSON. Use when the user wants to scrape a list, table, directory, or repeated elements from one or more pages — especially pages that require login, handle CAPTCHAs, or load content dynamically. Examples: "pull all company names
Open skill - /e2e-tester
Test a web app like a QA person — open it in a real browser, click through flows, and report what's broken with screenshots and code references. Works on localhost. Use when the user wants to test their app, verify a flow works, check for visual bugs, or validate changes before
Open skill

