toolkit/packages/skills/ats-resume-matcher/SKILL.md
Professional ATS (Applicant Tracking System) resume matching and scoring tool that operates with the precision of enterprise systems like Greenhouse, Lever, Workday, and Breezy HR. Use this skill when: (1) Matching a resume against a job description to calculate fit scores (2) Analyzing resume-JD alignment with detailed category breakdowns (3) Identifying gaps between candidate qualifications and job requirements (4) Getting actionable suggestions to improve resume match percentage (5) Preparing a resume for ATS optimization before job applications Supports PDF, DOCX, Markdown, and plain text inputs for both resumes and job descriptions.
npx skillsauth add stevengonsalvez/agents-in-a-box ats-resume-matcherInstall 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.
Enterprise-grade resume-to-job-description matching with detailed scoring, gap analysis, and optimization suggestions.
When given a resume and job description:
| Format | Resume | Job Description | |--------|--------|-----------------| | PDF | Yes (extract text) | Yes | | DOCX | Yes (extract text) | Yes | | Markdown | Yes | Yes | | Plain text | Yes | Yes | | Pasted content | Yes | Yes |
| Category | Weight | Description | |----------|--------|-------------| | Hard Skills | 25% | Technical skills, tools, technologies, languages | | Experience | 20% | Years of experience, seniority level, scope | | Keywords | 15% | Exact phrase matches, industry terminology | | Job Titles | 12% | Title alignment, progression, relevance | | Soft Skills | 10% | Leadership, communication, collaboration | | Education | 10% | Degrees, certifications, training | | Industry | 8% | Domain experience, sector knowledge |
For each category, calculate:
Category Score = (Matched Items / Required Items) × 100
Weighted Score = Category Score × Category Weight
Overall Match = Σ(All Weighted Scores)
| Score Range | Classification | Interpretation | |-------------|----------------|----------------| | 85-100% | Excellent Match | Strong candidate, likely to pass ATS | | 70-84% | Good Match | Competitive candidate, minor gaps | | 55-69% | Moderate Match | Some gaps, optimization recommended | | 40-54% | Weak Match | Significant gaps, major revision needed | | 0-39% | Poor Match | Role mismatch or major skill gaps |
Extract from JD:
Classify each requirement as:
REQUIRED - Explicitly stated as required/must-havePREFERRED - Stated as preferred/nice-to-have/bonusIMPLIED - Inferred from contextExtract from resume:
For each JD requirement, find resume evidence:
EXACT MATCH → 100% credit (keyword appears exactly)
SYNONYM MATCH → 85% credit (equivalent term used)
PARTIAL MATCH → 50% credit (related but not equivalent)
TRANSFERABLE → 30% credit (skill could apply)
NO MATCH → 0% credit (not found)
See output format below.
Generate this exact structure:
# ATS Match Report
## Overall Score: [XX]% - [Classification]
**Resume**: [filename or "Provided content"]
**Position**: [Job title from JD]
**Company**: [Company name if available]
**Analysis Date**: [Current date]
---
## Score Breakdown
| Category | Score | Weight | Weighted | Status |
|----------|-------|--------|----------|--------|
| Hard Skills | XX% | 25% | X.X | [✓/⚠/✗] |
| Experience | XX% | 20% | X.X | [✓/⚠/✗] |
| Keywords | XX% | 15% | X.X | [✓/⚠/✗] |
| Job Titles | XX% | 12% | X.X | [✓/⚠/✗] |
| Soft Skills | XX% | 10% | X.X | [✓/⚠/✗] |
| Education | XX% | 10% | X.X | [✓/⚠/✗] |
| Industry | XX% | 8% | X.X | [✓/⚠/✗] |
| **TOTAL** | | **100%** | **XX.X** | |
Status: ✓ = 70%+, ⚠ = 50-69%, ✗ = <50%
---
## Detailed Analysis
### Hard Skills (XX%)
**Matched (X/Y required)**:
- ✓ [Skill] - Found: "[evidence from resume]"
- ✓ [Skill] - Found: "[evidence from resume]"
**Partial Matches**:
- ⚠ [Required skill] → [Related skill found] (XX% credit)
**Missing**:
- ✗ [Skill] - REQUIRED - Not found
- ✗ [Skill] - PREFERRED - Not found
### Experience (XX%)
**Requirements**:
- Required: [X] years in [domain]
- Found: [Y] years in [domain]
- Match: [Exceeds/Meets/Below] requirement
**Seniority Alignment**:
- Required level: [Senior/Mid/Junior]
- Demonstrated level: [Senior/Mid/Junior]
- Gap: [None/Minor/Significant]
**Scope Match**:
- Required: [team size, budget, scale from JD]
- Demonstrated: [evidence from resume]
### Keywords (XX%)
**Exact Matches (X/Y)**:
- ✓ "[keyword]" - Found [X] times
- ✓ "[keyword]" - Found [X] times
**Missing High-Value Keywords**:
- ✗ "[keyword]" - Appears [X] times in JD
- ✗ "[keyword]" - Industry-standard term
### Job Titles (XX%)
**Title Progression Analysis**:
| Your Title | Target Title | Alignment |
|------------|--------------|-----------|
| [Current] | [JD Title] | XX% |
**Title Keywords**:
- ✓ [Matched title keyword]
- ✗ [Missing title keyword]
### Soft Skills (XX%)
**Demonstrated**:
- ✓ [Soft skill] - Evidence: "[quote from resume]"
**Required but Missing**:
- ✗ [Soft skill] - Add evidence of this skill
### Education (XX%)
**Degree Match**:
- Required: [Degree] in [Field]
- Found: [Degree] in [Field]
- Status: [Meets/Exceeds/Below/Alternative]
**Certifications**:
- ✓ [Cert name] - Matches requirement
- ✗ [Required cert] - Not found
### Industry (XX%)
**Domain Experience**:
- Required: [Industry/Domain]
- Found: [Industries in resume]
- Relevance: [Direct/Adjacent/Transferable]
---
## Gap Summary
### Critical Gaps (Address First)
1. **[Gap]** - Impact: High - [Brief explanation]
2. **[Gap]** - Impact: High - [Brief explanation]
### Important Gaps
1. **[Gap]** - Impact: Medium - [Brief explanation]
### Minor Gaps
1. **[Gap]** - Impact: Low - [Brief explanation]
---
## Optimization Suggestions
### High Impact (Estimated +X-Y% improvement)
1. **[Suggestion title]**
- Current: [What's in resume now]
- Recommended: [What to add/change]
- Where: [Which section to modify]
- Example: "[Specific wording to consider]"
2. **[Suggestion title]**
- Current: [What's in resume now]
- Recommended: [What to add/change]
- Where: [Which section to modify]
- Example: "[Specific wording to consider]"
### Medium Impact (Estimated +X-Y% improvement)
1. **[Suggestion]**
- [Details]
### Quick Wins (Estimated +X-Y% improvement)
1. **[Suggestion]** - [One-line actionable item]
2. **[Suggestion]** - [One-line actionable item]
---
## ATS Compatibility Notes
**Formatting Issues**:
- [Any detected formatting issues that might cause ATS parsing problems]
**Keyword Density**:
- Top JD keywords not in resume: [list]
- Recommendation: [specific advice]
**Section Headers**:
- [Any non-standard headers that ATS might not recognize]
---
## Confidence Level
Analysis confidence: [High/Medium/Low]
- [Reason for confidence level]
Apply these common equivalences:
| JD Term | Also Accept | |---------|-------------| | JavaScript | JS, ECMAScript, ES6+ | | Python | Python3, Py | | Machine Learning | ML, Deep Learning, AI/ML | | Amazon Web Services | AWS, Amazon Cloud | | Google Cloud Platform | GCP, Google Cloud | | Microsoft Azure | Azure, MS Azure | | Continuous Integration | CI, CI/CD | | Continuous Deployment | CD, CI/CD | | Kubernetes | K8s, K8 | | PostgreSQL | Postgres, PSQL | | MongoDB | Mongo | | React.js | React, ReactJS | | Node.js | Node, NodeJS | | TypeScript | TS | | GraphQL | GQL | | REST API | RESTful, REST | | Agile | Scrum, Kanban, Agile/Scrum | | Project Management | PM, Program Management | | People Management | Team Leadership, Engineering Management |
| JD Requirement | Acceptable Range | |----------------|------------------| | Entry level | 0-2 years | | Junior | 1-3 years | | Mid-level | 3-5 years | | Senior | 5-8 years | | Staff/Principal | 8-12 years | | Director | 10+ years | | VP/Head | 12+ years |
| Requirement | Also Accept | |-------------|-------------| | Bachelor's required | Master's, PhD | | Master's preferred | PhD, Bachelor's + 2 years | | CS degree | Related technical degree + experience | | MBA | Business degree + experience |
Generate suggestions in this priority order:
Each suggestion must be:
For missing skill:
Add [SKILL] to your skills section. Based on your experience with
[RELATED SKILL], you may have exposure to this. If you have any
experience, add a bullet point like: "Utilized [SKILL] for [USE CASE]"
For keyword gap:
The JD mentions "[KEYWORD]" [X] times. Consider incorporating this
terminology in your [SECTION]. For example, change "[CURRENT PHRASING]"
to "[SUGGESTED PHRASING WITH KEYWORD]"
For experience gap:
The role requires [X] years of [DOMAIN] experience. Your resume shows
[Y] years. Emphasize your [RELEVANT EXPERIENCE] and quantify impact
to demonstrate equivalent depth.
For detailed information, see:
documentation
Report reflect drain spend over a time window — tokens split by cached (cache_read), uncached writes (cache_creation), and io (input+output), with a $ estimate, grouped by day / outcome / model / transcript. Reads the drainer's cost log and surfaces outlier runs and cache-reuse health (the 41.5M-token failure mode = low cache reuse + high cache writes). Use to answer "what is reflection costing me" for the last day / week.
development
Show fleet status — every claude session running on the host, merged across ainb + claude-peers broker + background jobs. Use when you need to enumerate sessions before composing an action, see which sessions have a peer registered (broker-routable) vs tmux-only, check the `summary` of each session, or pipe the list into jq for filtering. Default output: text table. Pass --format json for LLM consumption.
testing
Ordered multi-step prompts to fleet targets, ack-gated between steps via JSONL assistant-turn-end detection. Use for cycles like disconnect→reconnect→verify, or any flow where step N+1 requires step N to have completed first. The skill BLOCKS until each target's transcript shows the next assistant turn finishing OR per-step timeout fires (default 300s).
development
Center control panel — enumerate every claude session that is blocked waiting on something: a user answer (AskUserQuestion fired), an API error retry, an idle assistant turn-end with no follow-up, or an explicit WAITING: marker. Returns rich JSON with signal kind + context per session. Use this when you've stepped away from the fleet and want one place to see everything that wants your attention and answer it.