job-apply
Fill out and submit job applications on supported platforms
Best use case
job-apply is best used when you need a repeatable AI agent workflow instead of a one-off prompt.
Fill out and submit job applications on supported platforms
Teams using job-apply 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-apply/SKILL.mdinside your project - Restart your AI agent — it will auto-discover the skill
How job-apply Compares
| Feature / Agent | job-apply | 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?
Fill out and submit job applications on supported platforms
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 Skill
Fill out and submit job applications across LinkedIn, Indeed, Glassdoor, and ZipRecruiter.
## General Approach
For every application:
1. Navigate to the job posting URL
2. Read the full job description
3. Verify the job is still a good match (check requirements vs USER.md)
4. Click the apply button
5. Fill in all form fields using data from USER.md
6. Upload resume from `/home/ubuntu/job-apply/data/resume.pdf`
7. Generate a cover letter if required (follow SOUL.md rules)
8. Review the application before submitting
9. Submit
10. Take a screenshot of the confirmation page
11. Call `log_application` with the result
## Platform-Specific Instructions
### LinkedIn Easy Apply
1. On the job page, click the **"Easy Apply"** button
2. LinkedIn shows a multi-step modal form:
- **Step 1 - Contact info:** Verify name, email, phone (pre-filled from LinkedIn profile). Correct if needed.
- **Step 2 - Resume:** Click "Upload resume" and select `/home/ubuntu/job-apply/data/resume.pdf`. Remove any previously attached resume if it's not the current one.
- **Step 3 - Additional questions:** These vary by job. Common fields:
- Years of experience: Use value from USER.md
- Work authorization: Use value from USER.md
- Sponsorship required: Use value from USER.md
- Willing to relocate: Based on USER.md location preferences
- Salary expectations: Use USER.md salary range (pick the midpoint if a single number is required)
- Start date: "Immediately" or "2 weeks notice" (use USER.md notes)
- Cover letter: Generate one if the field is present
- **Step 4 - Review:** Verify all fields, then click **"Submit application"**
3. Wait for confirmation message ("Your application was sent")
4. Take screenshot
5. Log with status "applied", platform "linkedin"
### LinkedIn Standard Apply (External)
1. Click **"Apply"** (non-Easy Apply) — this opens the company's external careers page
2. Wait for the external page to load fully
3. Look for the application form. Common patterns:
- Greenhouse: `/jobs/[id]` forms
- Lever: `jobs.lever.co/[company]/[id]`
- Workday: `[company].wd5.myworkdayjobs.com`
- Custom ATS or company website
4. Fill in standard fields:
- First name, Last name
- Email, Phone
- Resume upload (find file input, upload PDF)
- LinkedIn URL
- Portfolio/GitHub URL
- Cover letter (generate if required)
- Work authorization questions
- Demographic questions (skip or select "Decline to answer" / "Prefer not to say")
5. Submit and screenshot
6. Log result
### Indeed
1. On the job page, click **"Apply now"** or **"Apply on company site"**
2. If "Apply now" (Indeed's application):
- Indeed shows a multi-step form:
- Contact info: Verify/fill name, email, phone
- Resume: Upload PDF or confirm Indeed resume
- Questions: Answer job-specific questions using USER.md
- Review & Submit
3. If "Apply on company site":
- Follow the external site flow (similar to LinkedIn Standard Apply)
4. Screenshot confirmation
5. Log with platform "indeed"
### Glassdoor
1. On the job page, click **"Apply"** or **"Easy Apply"**
2. If Glassdoor Easy Apply:
- Fill contact info
- Upload resume
- Answer additional questions
- Submit
3. If external redirect:
- Follow external site flow
4. Screenshot and log with platform "glassdoor"
### ZipRecruiter
1. On the job page, click **"Apply"** or look for **"1-Click Apply"**
2. If 1-Click Apply:
- Confirm your ZipRecruiter profile details
- Click submit
3. If standard apply:
- Fill in the form fields
- Upload resume
- Submit
4. Screenshot and log with platform "ziprecruiter"
## Form Field Mapping
Map these common form fields to USER.md values:
| Form Field | USER.md Source |
|---|---|
| First Name / Last Name | Name (split on space) |
| Email | Email |
| Phone | Phone |
| City / Location | Location |
| LinkedIn URL | LinkedIn |
| GitHub / Portfolio | GitHub, Portfolio |
| Years of Experience | Years of Experience |
| Current Job Title | Derive from target roles |
| Desired Salary | Salary Range (midpoint or range) |
| Work Authorization | Work Authorization > Status |
| Sponsorship | Work Authorization > Sponsorship Required |
| Skills | Skills section |
| Education | Education section |
## Handling Dropdowns
- For dropdown menus, click to open, then look for the matching option
- If no exact match, pick the closest option
- For experience level dropdowns: map years to typical labels:
- 0-2 years → "Entry level" or "Junior"
- 3-5 years → "Mid-level" or "Associate"
- 6-9 years → "Senior"
- 10+ years → "Lead" or "Principal"
## Resume Upload
- The resume file is at `/home/ubuntu/job-apply/data/resume.pdf`
- Look for file input elements (`<input type="file">`)
- If there's a drag-and-drop zone, try clicking it to trigger the file dialog
- If upload fails, try finding alternative upload methods on the page
## Cover Letter Generation
When a cover letter is required:
1. Read the full job description
2. Generate a tailored cover letter following SOUL.md guidelines
3. Paste it into the cover letter field
4. Save the generated text in the `log_application` call (cover_letter field)
## Post-Submission
After each application:
1. Take a screenshot: save to `/home/ubuntu/screenshots/[platform]-[company]-[timestamp].png`
2. Call `log_application` with:
- `platform`: linkedin | indeed | glassdoor | ziprecruiter
- `company`: Company name
- `title`: Job title
- `url`: Job posting URL
- `status`: applied | failed | skipped
- `notes`: Any relevant notes (why it failed/was skipped)
- `screenshotPath`: Path to the screenshot
3. Wait 30+ seconds before the next application (SOUL.md rate limiting)
## Error Recovery
- **Page won't load:** Wait 30 seconds, try once more, then skip
- **Form validation error:** Read the error message, try to fix, retry once
- **CAPTCHA appears:** Invoke the `captcha-solve` skill
- **"Already applied" message:** Log as "skipped" with note "already applied on platform"
- **Application limit reached:** Stop and notify user via WhatsAppRelated Skills
applying-a11y-standards
Rules for ensuring Accessibility (a11y) across the Tourly app. Use to build inclusive interfaces.
apply-qa-fixes
Systematically consume QA quality gate outputs and apply prioritized fixes for high-severity issues, NFR failures, and test coverage gaps. Use when quality review identifies issues requiring remediation.
apply-all-findings
Use after code review - implement ALL findings; any finding not fixed MUST have tracking issue created; no finding disappears without trace
applying-responsive-standards
Rules for mobile-first responsive design using Tailwind CSS. Use on every UI component to ensure cross-device compatibility.
apply-shadcn
Apply shadcn/ui components to React pages and components. This skill should be used when styling specific pages or components with shadcn/ui in a React project that has custom theming. The user will specify which pages or components to style.
apply-mantel-styles
Provides guidelines for applying Mantel's brand styles to diagrams and frontend components. Use when asked to create visuals that need to align with Mantel's branding.
applying-fsd-architecture
Feature-Sliced Design(FSD) 아키텍처를 적용한 프론트엔드 프로젝트 개발 지원. FSD 레이어, 슬라이스, 세그먼트 구조 설계, 의존성 규칙 적용, 마이그레이션 시 사용.
applying-frontend-patterns
Framework-agnostic frontend component design patterns.
applying-clean-code
General syntax and naming rules to keep the codebase maintainable. Use for all code generation.
apply-key-principles
Apply and validate the 7 Key Principles to code - TDD, Fail Fast, Modular, Reuse, Open Source, No Debt, Excellence. Checks code compliance and suggests improvements. Use during code review or refactoring.
applying-brand-guidelines
This skill applies consistent corporate branding and styling to all generated documents including colors, fonts, layouts, and messaging
apply-migration
Apply SQL migration files to JusticeHub Supabase database with verification and error handling.