/SKILL.md
Automated job applications with AI-powered resume tailoring, cover letters, and recruiter outreach via email and LinkedIn.
npx skillsauth add theaayushstha1/job-applier-agent apply-jobInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Automated job application system with multi-channel recruiter outreach.
/apply-job <url> # Apply to specific job
/apply-job search <query> # Search and batch apply
/apply-job outreach <url> # Recruiter outreach only
/apply-job status # View statistics
/apply-job score <url> # Score job fit only
Before first use, ensure these files exist:
| File | Purpose |
|------|---------|
| $APPLIER_HOME/data/profile.json | Your personal info (from template) |
| $APPLIER_HOME/data/applications.json | Application tracking |
| $APPLIER_HOME/resume/master_resume.md | Your complete resume |
| $APPLIER_HOME/templates/cover_letter.md | Cover letter template |
| $APPLIER_HOME/templates/cold_email.md | Cold email template |
$APPLIER_HOME = ~/job-applier-agent (cross-platform)
See SETUP.md for installation instructions.
1. Find recruiters on LinkedIn (names, titles, URLs)
2. Discover email addresses (WebSearch company email pattern)
3. Send cold emails via Gmail FIRST
4. THEN send LinkedIn connection requests
5. Track everything in applications.json
Email = PRIMARY (higher response rate). LinkedIn = SECONDARY.
1. Navigate to job URL with Playwright
2. Capture page snapshot
3. Extract: title, company, location, requirements
4. Identify key skills/technologies
Score >= 5.0 → AUTO-PROCEED | Score < 5.0 → Notify user
1. Read $APPLIER_HOME/resume/master_resume.md
2. Reorder projects by relevance to JD
3. Emphasize matching skills (use JD keywords)
4. Save to $APPLIER_HOME/applications/<Company>/
Rules: Never add fake skills. Never fabricate metrics. Only reorder/emphasize.
1. Read $APPLIER_HOME/templates/cover_letter.md
2. Research company (WebFetch)
3. Personalize for role + company
4. Keep to 250-350 words
5. Save to $APPLIER_HOME/applications/<Company>/
Use Playwright to fill forms based on platform:
1. Take confirmation screenshot
2. Update $APPLIER_HOME/data/applications.json
3. Update stats
See WORKFLOWS.md for detailed outreach steps.
Summary:
Use publicly available contact information only:
1. Check the recruiter's LinkedIn profile for contact info
2. Check the company careers page for recruiter contact details
3. Use the company's public contact form if no direct contact is available
All personal data comes from $APPLIER_HOME/data/profile.json:
{
"personal": {
"name": "Your Name",
"email": "[email protected]",
"phone": "123-456-7890",
"location": "City, State"
},
"links": {
"website": "https://yoursite.com",
"linkedin": "linkedin.com/in/you",
"github": "github.com/you"
},
"education": {
"school": "University Name",
"degree": "BS Computer Science",
"gpa": "3.9",
"graduation": "May 2026"
},
"headline": "Your professional headline",
"top_skills": ["Python", "React", "AWS"],
"flagship_project": {
"name": "Project Name",
"description": "Brief description",
"users": "100+"
},
"work_auth": true,
"willing_to_relocate": true,
"location_preference": ["Remote", "NYC", "SF"]
}
See profile-template.json for full template.
$APPLIER_HOME/data/applications.json schema:
{
"applications": [{
"id": "company-date-001",
"company": "Company Name",
"role": "Job Title",
"url": "https://...",
"platform": "linkedin|greenhouse|workday|adp",
"applied_date": "2026-01-27",
"status": "applied|interviewed|rejected|offer",
"fit_score": 7.5,
"cover_letter": true,
"outreach": [{
"name": "Recruiter Name",
"title": "Technical Recruiter",
"email": "[email protected]",
"linkedin": "linkedin.com/in/...",
"email_sent": true,
"connection_sent": true,
"date": "2026-01-27"
}]
}],
"stats": {
"total": 0,
"applied": 0,
"interviewed": 0,
"emailsSent": 0,
"connectionsSent": 0
}
}
Subject: Referral Request - [Role] Application | [School] [Major] Senior
Hi [First Name],
I just applied for the [Role] position at [Company] and wanted to reach out.
I'm a [Major] senior at [School] ([GPA] GPA) graduating [Graduation].
[Flagship project description with metrics].
[1-2 sentences about why THIS company excites you]
Would appreciate if you could review my application or put in a referral.
Thanks!
[Name]
[Website]
[Phone]
Rules: Under 150 words. Personalize company line. Include contact info.
| Error | Action | |-------|--------| | Login required | Notify user, wait for "continue" | | CAPTCHA | Notify user, wait | | Rate limit | Wait 60s, retry once, skip if still blocked | | Email failed | Log, continue with LinkedIn | | Form field missing | Screenshot, ask user |
| File | Content | |------|---------| | WORKFLOWS.md | Detailed step-by-step workflows | | SETUP.md | Installation & configuration | | profile-template.json | Profile data template |
| Variable | Default | Description |
|----------|---------|-------------|
| $APPLIER_HOME | ~/job-applier-agent | Base directory |
| $APPLICATIONS_DIR | $APPLIER_HOME/applications | Per-company files |
Cross-platform: Use ~/ which expands to home directory on all OS.
Line Count: ~280 (under 500 ✓) Cross-Platform: Yes (uses ~/ paths) ✓ User-Agnostic: Yes (data in profile.json) ✓
data-ai
Automated job applications with AI-powered resume tailoring, cover letters, recruiter outreach, interview prep, ATS optimization, and smart analytics.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
Example TaskFlow authoring pattern for inbox triage. Use when messages need different treatment based on intent, with some routes notifying immediately, some waiting on outside answers, and others rolling into a later summary.
data-ai
OpenProse VM skill pack. Activate on any `prose` command, .prose files, or OpenProse mentions; orchestrates multi-agent workflows.