job-apply

Fill out and submit job applications on supported platforms

16 stars

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

$curl -o ~/.claude/skills/job-apply/SKILL.md --create-dirs "https://raw.githubusercontent.com/diegosouzapw/awesome-omni-skill/main/skills/development/job-apply/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/job-apply/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How job-apply Compares

Feature / Agentjob-applyStandard Approach
Platform SupportNot specifiedLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/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 WhatsApp

Related Skills

applying-a11y-standards

16
from diegosouzapw/awesome-omni-skill

Rules for ensuring Accessibility (a11y) across the Tourly app. Use to build inclusive interfaces.

apply-qa-fixes

16
from diegosouzapw/awesome-omni-skill

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

16
from diegosouzapw/awesome-omni-skill

Use after code review - implement ALL findings; any finding not fixed MUST have tracking issue created; no finding disappears without trace

applying-responsive-standards

16
from diegosouzapw/awesome-omni-skill

Rules for mobile-first responsive design using Tailwind CSS. Use on every UI component to ensure cross-device compatibility.

apply-shadcn

16
from diegosouzapw/awesome-omni-skill

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

16
from diegosouzapw/awesome-omni-skill

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

16
from diegosouzapw/awesome-omni-skill

Feature-Sliced Design(FSD) 아키텍처를 적용한 프론트엔드 프로젝트 개발 지원. FSD 레이어, 슬라이스, 세그먼트 구조 설계, 의존성 규칙 적용, 마이그레이션 시 사용.

applying-frontend-patterns

16
from diegosouzapw/awesome-omni-skill

Framework-agnostic frontend component design patterns.

applying-clean-code

16
from diegosouzapw/awesome-omni-skill

General syntax and naming rules to keep the codebase maintainable. Use for all code generation.

apply-key-principles

16
from diegosouzapw/awesome-omni-skill

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

16
from diegosouzapw/awesome-omni-skill

This skill applies consistent corporate branding and styling to all generated documents including colors, fonts, layouts, and messaging

apply-migration

16
from diegosouzapw/awesome-omni-skill

Apply SQL migration files to JusticeHub Supabase database with verification and error handling.