Getting it into your agent
It runs from inside its repository, so the clone comes first — what it calls does not travel with the file alone.
git clone --depth 1 https://github.com/AkbarDevop/ai-job-agentnpx agentmods add skills/akbardevop/ai-job-agent/job-applyWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/akbardevop/ai-job-agent/job-apply)<a href="https://agentmods.dev/skills/akbardevop/ai-job-agent/job-apply"><img src="https://agentmods.dev/badge/skills/akbardevop/ai-job-agent/job-apply/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/akbardevop/ai-job-agent/job-apply"><img src="https://agentmods.dev/badge/skills/akbardevop/ai-job-agent/job-apply.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00138 | $0.01113 |
| Opus 5.5 | $0.00055 | $0.00445 |
| Sonnet 5.5 | $0.00028 | $0.00223 |
| Haiku 4.5 | $0.00014 | $0.00111 |
Grade A, and why
job-apply scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 1mo ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 101 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Job Apply
Fills out a job application form on the 5 ATS platforms this repo supports. Default is dry-run — the form is filled but not submitted.
Repo location
Resolve the repo root in this order:
$AI_JOB_AGENT_ROOTenv var~/.claude/skills/ai-job-agent/(gstack-style install — recommended)~/.claude/skills/ai-job-agent/REPO_PATHfile (legacy, when repo is elsewhere)~/ai-job-agent/(legacy manual-clone fallback)
Check for package.json in the candidate path to confirm it's really the repo. Fail with a clear message if none exist.
Workflow
1. Parse $ARGUMENTS
Expect <URL> [--submit]. If no URL, ask the user for one.
2. Route by URL host
| Host pattern | Script |
|---|---|
linkedin.com/jobs/view/* |
scripts/linkedin-easy-apply.js |
boards.greenhouse.io/* or job-boards.greenhouse.io/* |
scripts/greenhouse-apply.js |
jobs.lever.co/* |
scripts/lever-apply.js |
jobs.jobvite.com/* or *.jobs.jobvite.com/* |
scripts/jobvite-apply.js |
jobs.ashbyhq.com/* or ashbyhq.com/* |
scripts/ashby-apply.js |
If the URL doesn't match, print the table of supported hosts and stop.
3. Check config
For LinkedIn: config/linkedin-config.json must exist.
For the other four: the user provides a second argument pointing to their form config JSON (per-job, by convention).
If missing, tell the user to run bash wizard.sh (for LinkedIn) or point to their filled form config.
4. Run the filler
Dry-run by default:
cd "$AI_JOB_AGENT_ROOT"
node scripts/linkedin-easy-apply.js "$URL" config/linkedin-config.json
With --submit, set autoSubmit: true in the config temporarily (or instruct the user to — do not silently flip it without confirming). Prefer: ask the user to set it themselves if they haven't, to preserve the truthfulness guardrail baked into CLAUDE.md.
Environment variables to surface:
HEADLESS=0if the user wants to watch the browserKEEP_OPEN_ON_BLOCK=1if they want to inspect a stalled formCDP_URLif they want to connect to an already-open Chrome
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 1mo ago First seen · 101 lines · 138 tokens per session scan A 3c550e82efde
job-apply is a skill published in the GitHub repository AkbarDevop/ai-job-agent (67 stars, last pushed 6mo ago), licensed MIT. It adds 138 tokens to every session and 1,113 once invoked, about $0.0006 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
freehire-mail-triage
Use when sorting a job seeker's application mail into the freehire tracker from their own mail client (himalaya, mbsync, notmuch, the Gmail API, any IMAP) — pushing a fetched batch, judging what each message is, linking it to an application, advancing a stage from a reply, or draining the two queues the matcher fills…
find-tech-jobs
Find open IT and software job postings with the freehire tools — search by technology, seniority, location, work mode, salary or visa sponsorship, read a posting in full, and look up which companies are hiring. Use when the user asks about open tech jobs, roles at a specific company, or who is hiring somewhere.
resume-jd-optimizer-cn
A Chinese résumé-editing workflow that matches a résumé to a job description using only confirmed experience and evidence.
batch
Batch job-application filler. Given several job URLs (or a urls.txt file), run the assisted-apply flow for each in its own browser tab — fit-gate, fill-or-flag, stop before Submit — skipping stale or low-fit postings, then present one combined review table so the human can approve each tab one by one. Use for /batch…
using-freehire
Use when orienting in the freehire CLI as a whole — installing it, authenticating with an API key, working out which of its surfaces answers a job seeker's question, or troubleshooting a 401. The task skills do the work; this one is the map and the setup.
resume-tailoring
Methodology for tailoring a resume to a job description honestly and effectively — fit analysis, gap handling, keyword mirroring, fast-learner framing, and primary-over-secondary emphasis. Use whenever curating or rewriting a resume for a specific role.