ATSPrep

io.github.DevabubakarPublished by GitHub account Devabubakarv2.0.0Updated Oct 27, 2026

Free resume tools: ATS score, job match, bullet and LinkedIn checks, tailoring, interview prep.

VerifiedStreamable HTTPWeb executableProductivity & WorkflowAI & ML

Overview

AI-generated overview

Free remote resume and job-search toolkit: ATS scoring, job matching, bullet and LinkedIn checks, tailoring, letters and interview practice.

What you can do
  • Score a resume against fixed ATS rules and list each issue with a code and fix
  • Compare a resume with a job posting, scan a posting's keywords, and tailor the resume's own lines to it
  • Check and rewrite individual resume bullets, draft summaries, and suggest action verbs
  • Review LinkedIn headlines and About sections, and generate headline options
  • Draft cover letters and resignation letters, with missing facts shown as bracketed gaps
  • Fetch a public job posting from a link, generate interview questions, and review practice answers with STAR feedback
When to use it
Useful when someone is job hunting and wants an assistant to score or fix a resume, match it to a posting, prepare for interviews, or polish LinkedIn and cover-letter text without an account.
Requirements
Remote endpoint at atsprep.com over streamable HTTP; no account or API key. The README notes that the optional companion skills need Node 18+ only if the bundled script is used instead of the MCP server.
Before you install
Four tools (tailor_resume, improve_bullet, write_summary, review_interview_answer) send the text they rewrite to a third-party language model on Cloudflare Workers AI. Resume text is personal data; the README says only tool name, success and duration are logged. open_in_studio puts resume text in a link fragment, and fetch_job_post reads external pages.

Installation

In SourceWeft

  1. Open ATSPrep in the dashboard and add it to a workspace.
  2. Enable the server for the chats that should use its tools.

Web executable via Streamable HTTP. Remote servers run from the web runtime once configured in a workspace.

Use with an agent

Paste this prompt into Claude Code, Codex, Cursor or another agent — or into SourceWeft chat. The agent reads this server's install guide, shows you its publisher, endpoint and sign-in, and adds it to your client once you agree. Keys never go into a command.

Read https://sourceweft.com/mcp/io.github.Devabubakar%2Fatsprep/install.md and connect the MCP server it describes to my client. Before changing any config, show me its publisher, endpoint and sign-in method and wait for my OK. Never put an API key in a command or in a file I would commit; ask me where it should come from.

Read the install guide the agent follows

Other MCP clients

Add this to your client's mcpServers config.

{
  "mcpServers": {
    "atsprep": {
      "type": "http",
      "url": "https://atsprep.com/mcp"
    }
  }
}

README

ATSPrep Agent Skills

Five free, open-source Agent Skills that teach Claude, ChatGPT Codex, GitHub Copilot, Cursor and other agents to use ATSPrep's resume and job-search tools well: which tool to call, in what order, and to ask before adding anything to your resume.

SkillWhat it does
resume-ats-checkScores a resume with ATSPrep's ATS rules and walks through the fixes, worst first.
tailor-resume-to-jobMatches a resume to a job post (link or text), shows missing keywords and rewrites your own lines honestly.
interview-prepA mock interview, one question at a time, with STAR feedback and a stronger answer.
cover-letterDrafts a cover letter (or resignation letter) from your real experience and fills the gaps with you.
linkedin-profile-polishChecks your LinkedIn headline and About section and writes headline options.

Each skill calls the free ATSPrep MCP server at https://atsprep.com/mcp (18 tools: ATS check, job match, keyword scan, bullet and LinkedIn checks, tailoring, letters and interview practice). There's no account and no API key. If your agent has the ATSPrep MCP server connected, the skill uses its tools directly; if not, it runs the bundled scripts/atsprep.mjs (Node 18+, no dependencies), or plain HTTPS.

Install

Any agent (Claude Code, Codex, Copilot, Cursor, Gemini CLI and more)

sh
npx skills add Devabubakar/atsprep-skills

The skills CLI asks which skills and which agents to install for.

GitHub Copilot (CLI, VS Code, coding agent)

sh
gh skill install Devabubakar/atsprep-skills --all --agent github-copilot --scope user

Needs a recent GitHub CLI (gh skill is in preview). Or copy any folder from skills/ into ~/.copilot/skills/ (for you) or .github/skills/ (for one repository).

Claude Code

text
/plugin marketplace add Devabubakar/atsprep-skills/plugin install atsprep@atsprep-skills

Or copy folders from skills/ into ~/.claude/skills/ (for you) or .claude/skills/ (for one project). Claude Code skills docs.

Claude.ai and the Claude desktop app

  1. Download a skill's zip from the latest release, e.g. resume-ats-check.zip.
  2. In Claude, go to Customize → Skills, select Upload a skill, and pick the zip.
  3. Code execution and network access need to be on for the bundled script. If they aren't, connect the ATSPrep MCP server instead (below) and the skill will use it.

Using skills in Claude.

OpenAI Codex (CLI, IDE extension and app)

sh
gh skill install Devabubakar/atsprep-skills --all --agent codex --scope user

Or copy folders from skills/ into ~/.agents/skills/ (for you) or .agents/skills/ (for one repository). Codex sandboxes network access by default, so allow it for atsprep.com, or connect the MCP server. Codex skills docs.

Connect the ATSPrep MCP server (optional, recommended)

The skills work best when your agent also has the ATSPrep tools connected. Setup for every client is at atsprep.com/mcp. For example:

sh
claude mcp add --transport http atsprep https://atsprep.com/mcp   # Claude Codecodex mcp add atsprep --url https://atsprep.com/mcp                # Codex

What leaves your machine

Most ATSPrep tools are rule-based, so the same text always gets the same answer. Four (tailor_resume, improve_bullet, write_summary, review_interview_answer) also send the text they rewrite to an open language model on Cloudflare Workers AI (Google's Gemma 4, with Meta's Llama 3.3 70B if Gemma is busy), which doesn't train on it. Any line the model returns with a number, name or tool your text doesn't contain is dropped. ATSPrep logs only the tool name, whether it worked and how long it took, never your text. Details: references/privacy.md and atsprep.com/privacy.

Layout

text
skills/<name>/SKILL.md          the skill (built from templates/<name>.md)skills/<name>/scripts/          atsprep.mjs, a zero-dependency MCP clientskills/<name>/references/       tools.md (every tool's arguments) and privacy.mdshared/, templates/, tools/     sources; run `node tools/sync.mjs` after editing.claude-plugin/marketplace.json Claude Code plugin marketplace

Each skill folder follows the Agent Skills specification: a SKILL.md with name and description frontmatter, plus optional scripts/ and references/, so the same folder works in every client above. node tools/sync.mjs rebuilds the skills and checks their frontmatter against the spec.

Try the script directly

sh
node skills/resume-ats-check/scripts/atsprep.mjs listnode skills/resume-ats-check/scripts/atsprep.mjs check_resume [email protected] target_role="Product Designer"node skills/tailor-resume-to-job/scripts/atsprep.mjs keyword_scan [email protected]

License

MIT. ATSPrep and the ATSPrep logo are not covered by the license.

Issues and ideas: open an issue or email [email protected].

Source: README.md at commit cec466c

Tools

18

check_resume

Check a resume

Use this when the user shares a resume (pasted text or a file's text) and wants it checked, scored, reviewed for ATS problems, or wants to know what to fix. Score a resume from 0 to 100 with ATSPrep's fixed rules and list each issue with a stable code, where it is and how to fix it. Also reports how the text parsed (roles, experience and project bullets, education, skills and skill groups, input and scored word counts, with definitions). Role-specific advice, such as seniority signals, is given only when the resume names a target title or you pass target_role or job_description; with job_description the score becomes the fit for that job (0.5 requirements met, 0.3 evidence, 0.2 readability, capped for missing hard requirements or impossible claims) and it also returns job_fit and a keyword match summary. Resume up to 30,000 characters. Rules version 2026-10-23.5.

Parametersresume_textrequiredtarget_rolejob_description

match_job

Match a resume to a job

Use this when the user has a resume and a job posting and asks how well they match, what keywords are missing, or whether to apply. For rewrites, use tailor_resume instead. Compare a resume with a job posting: the posting's keywords found in the resume (with how they matched: exact, normalized, alias or stem, and the matched span), the ones missing with the posting sentence they come from, each term's weight and whether the posting lists it as required or preferred, and weighted overall, required and preferred coverage. Posting 120–20,000 characters. Rules version 2026-10-23.5.

Parametersresume_textrequiredjob_descriptionrequired

check_bullets

Check resume bullets

Use this when the user wants a few resume bullet points checked without sending the whole resume. Give each resume bullet a score, a verdict and specific fixes with stable codes: weak openers, missing scale or result, numbers that show neither, hard-to-believe claims, first person, vague claims. The same rules and severities as check_resume. Up to 30 bullets of up to 600 characters each; blank items are skipped and reported by index. Rules version 2026-10-23.5.

Parametersbulletsrequired

open_in_studio

Open in ATSPrep Studio

Use this when the user wants to edit their resume in an editor, apply a template, or download it as a PDF or Word file. Make a link that opens this resume in ATSPrep Studio, the free editor, so the user can fix it, pick a template and download a PDF. The text travels in the link's #fragment, which is never sent to a server.

Parametersresume_textrequired

list_templates

List resume templates

Use this when the user asks for resume templates, designs or example resumes for a role. List ATSPrep's resume designs, each with a link that opens Studio in that design, and the example resumes by role, each with a link that opens it in Studio and a preview image.

Takes no parameters.

fetch_job_post

Fetch a job post

Use this when the user gives a job posting link instead of its text; then pass the result to the job tools. Read a public job posting from its link and return the title, company, location and full description as plain text, ready for match_job, tailor_resume, keyword_scan or interview_questions. Reads LinkedIn, Greenhouse, Lever, Ashby, SmartRecruiters, Workable, Workday and most company careers pages. Some sites block reading; then ask the user to paste the text.

Parametersurlrequired

keyword_scan

Rank a job post's keywords

Use this when the user has only a job posting (no resume yet) and wants its key skills and keywords. List the skills, tools and requirements a job posting asks for, ranked by how hard it leans on each (repetition, position, required or preferred headings), with the high-priority ones flagged. Use match_job to see which a resume already shows. Posting 120–20,000 characters. Rules version 2026-10-23.5.

Parametersjob_descriptionrequired

tailor_resume

Tailor a resume to a job

Use this when the user wants their resume rewritten or tailored for a specific job posting. Tailor a resume to a job posting: the posting's keywords the resume is missing (from match_job's rules) and suggested rewrites of the user's own summary and bullets that bring in the posting's terms only where the existing line already supports them. Each suggestion lists the posting terms it borrowed and confirm_with_user lists terms to ask about, never to add unasked. End the reply with next_step: the link that opens the resume in ATSPrep to check the edits and download. Part of the answer is drafted by an AI model (Gemma 4, with Llama 3.3 70B as a backup, on Cloudflare Workers AI) behind ATSPrep's guard, which drops any figure, name or tool the user's text doesn't contain. If the AI part is unavailable, the rule-based part still comes back and ai.message says why.

Parametersresume_textrequiredjob_descriptionrequired

improve_bullet

Improve a resume bullet

Use this when the user wants one resume bullet rewritten or made stronger. Check one resume bullet with the fixed rules (score, verdict, fixes) and suggest up to three stronger rewrites that keep every fact as given. ask_user names the one fact to ask the user for; never invent it. Part of the answer is drafted by an AI model (Gemma 4, with Llama 3.3 70B as a backup, on Cloudflare Workers AI) behind ATSPrep's guard, which drops any figure, name or tool the user's text doesn't contain. If the AI part is unavailable, the rule-based part still comes back and ai.message says why.

Parametersrolebulletrequiredcompany

write_summary

Write a resume summary

Use this when the user wants a resume summary or professional profile written from their resume. Draft professional summaries from a resume: rule-based drafts built from its title, skills and the bullets that carry a figure, plus AI drafts that use only facts in the resume. Part of the answer is drafted by an AI model (Gemma 4, with Llama 3.3 70B as a backup, on Cloudflare Workers AI) behind ATSPrep's guard, which drops any figure, name or tool the user's text doesn't contain. If the AI part is unavailable, the rule-based part still comes back and ai.message says why.

Parametersresume_textrequiredtarget_title

action_verbs

Find stronger action verbs

Use this when the user wants stronger verbs or synonyms for resume wording. Suggest resume action verbs. Pass a weak opener ("responsible for", "helped") for direct swaps and why they read weak, or the work in plain words ("trained new staff", "cut costs") for the matching verb groups with an example bullet. Leave query empty for every group.

Parametersquery

generate_linkedin_headline

Write LinkedIn headlines

Use this when the user wants new LinkedIn headline ideas. Write LinkedIn headline options from the user's answers, each in a proven pattern (title and focus, title and result, title and who you help…), with its length and roughly what shows in search before the cut. Uses only the answers given.

Parametersnextrolerequiredfocusyearsskillsresultsaudience

check_linkedin_headline

Check a LinkedIn headline

Use this when the user wants their existing LinkedIn headline reviewed. Check a LinkedIn headline: length against the 220-character limit, what shows in search results before the cut, whether it leads with a searchable job title, and buzzwords or vague claims to replace.

Parametersrolefocusskillsheadlinerequired

check_linkedin_about

Check a LinkedIn About section

Use this when the user wants their LinkedIn About or summary section reviewed. Check a LinkedIn About section: what shows before "see more" on a phone and on a computer, whether the opening says who they are, results with numbers, buzzwords, a clear next step, and the 2,600-character limit.

Parametersroleaboutrequired

draft_cover_letter

Draft a cover letter

Use this when the user wants a cover letter for a job. Draft a cover letter from the user's resume and the job posting with fixed rules: name, contact details and up to two results from the resume, the job title and top keywords from the posting. Facts that are missing show as [square-bracket] gaps for the user to fill, never as stand-ins. Returns the letter, the gaps and a checklist.

Parameterswhynameroleemailphonestylecompanyresultsresume_textcurrent_titlehiring_managerjob_description

draft_resignation_letter

Draft a resignation letter

Use this when the user wants to resign and needs a resignation letter or their last working day. Draft a short, professional resignation letter and work out the last working day from the notice period. Missing facts show as [square-bracket] gaps. Returns the letter, the last day and a checklist (notice stated, no complaints, length).

Parametersdatenameroletonenoticereasonthankscompanymanagernotice_daysoffer_handoverworking_days_only

interview_questions

Interview practice questions

Use this when the user is preparing for an interview and wants likely questions, for a specific job or in general. Interview questions to practise, each with what the interviewer is listening for, plus STAR answer tips. With a job_description, questions come from its skills and duties, along with what to research and questions to ask; with resume_text, from the user's own roles. Rule-based.

Parameterskindlimitresume_textjob_description

review_interview_answer

Review an interview answer

Use this when the user gives an answer to an interview question and wants feedback on it. Review the user's answer to an interview question: a rating, length and speaking time, STAR coverage for stories, filler words, specific checks, the follow-up an interviewer would likely ask, and a stronger version that keeps to the user's own facts. Part of the answer is drafted by an AI model (Gemma 4, with Llama 3.3 70B as a backup, on Cloudflare Workers AI) behind ATSPrep's guard, which drops any figure, name or tool the user's text doesn't contain. If the AI part is unavailable, the rule-based part still comes back and ai.message says why.

Parameterskindanswerrequiredquestionrequiredresume_text

Version history

1
  1. v2.0.0LatestOct 18, 2026

Score

100% of the applicable checks met

How complete this listing is, computed from the registry entry, the endpoint and public sources. Not a rating of the server and not a statement that it is safe or working today: reachability is a dated check, and no installs or reviews go into the score.

  • Reached in the last 30 daysRequired25 pts
  • Auth declaredRequired10 pts
  • Tools listedRequired15 pts
  • DescriptionRequired15 pts
  • Logo10 pts
  • Documentation15 pts
  • License10 pts