Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
git clone --depth 1 https://github.com/OmriH-Elister/job-search-mcpWrote 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/commands/omrih-elister/job-search-mcp/linkedin-apply)<a href="https://agentmods.dev/commands/omrih-elister/job-search-mcp/linkedin-apply"><img src="https://agentmods.dev/badge/commands/omrih-elister/job-search-mcp/linkedin-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/commands/omrih-elister/job-search-mcp/linkedin-apply"><img src="https://agentmods.dev/badge/commands/omrih-elister/job-search-mcp/linkedin-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.00021 | $0.00709 |
| Opus 5.5 | $0.00008 | $0.00284 |
| Sonnet 5.5 | $0.00004 | $0.00142 |
| Haiku 4.5 | $0.00002 | $0.00071 |
Grade A, and why
linkedin-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 2d 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 — 46 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Review and submit the LinkedIn Easy Apply queue built by the nightly job-search run.
Paths (<repo> is wherever you cloned this project; copy this file to ~/.claude/commands/ to use it):
- Project:
<repo> - Queue tool:
python3 <repo>/linkedin_queue.py - Answer bank:
<repo>/data/linkedin_answers.json - Sync (optional):
<repo>/data/sync_applied_jobslist.sh
Never edit linkedin_queue.json or previously_applied.json by hand. Every status change goes through the queue tool.
1. Sync and load
- If
data/sync_applied_jobslist.shexists, run it so applications made by other agents are visible. - Run
linkedin_queue.py list. If nothing is pending, say so and stop. - For each pending job, run
linkedin_queue.py check <job_id>. Mark any that fail withmark <job_id> skipped "applied elsewhere"and leave them out of the review.
2. Review (the approval gate)
Show the pending jobs as one numbered table: company, title, location, matched role, CV, link.
Then wait for the candidate to say which to submit. Do not open LinkedIn before they answer.
Mark every job they turn down with mark <job_id> rejected. Jobs they neither approve nor rejects stay pending.
3. Submit the approved jobs
Load the claude-in-chrome skill first and follow its rules. Work in a new tab, one job at a time. The candidate must already be logged in to LinkedIn in Chrome; if not, stop and ask them to log in.
For each approved job:
- Open the job URL. If there is no Easy Apply button (external apply, posting closed),
mark <job_id> skipped "<reason>"and move on. - In the resume step, select the uploaded resume whose name matches the job's
cvfield. If none matches, skip the job with that reason. - For every screening question, find an answer bank entry whose
patternsmatch the question text (case-insensitive regex) and whoseansweris non-empty. Useper_role[<role>]if present.- If no entry matches, the answer is blank, or the bank answer does not map cleanly onto the field's options, skip the job: close the dialog without submitting and
mark <job_id> skipped "unanswered: <question text>". - Never invent, infer or round an answer. Contact fields LinkedIn prefills from the profile can be left as they are.
- If no entry matches, the answer is blank, or the bank answer does not map cleanly onto the field's options, skip the job: close the dialog without submitting and
- On the review screen, untick "Follow company" and submit.
- Confirm LinkedIn shows the application as sent, then run
record <job_id>. If submission errored,mark <job_id> failed "<error>"instead.
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.
- 2d ago First seen · 46 lines · 21 tokens per session scan A 0c4cf53d2eb1
linkedin-apply is a command published in the GitHub repository OmriH-Elister/job-search-mcp (0 stars, last pushed 3d ago), licensed MIT. It adds 21 tokens to every session and 709 once invoked, about $0.0001 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-10-23.
Other commands, from other repositories
act
Live agentic desktop + browser control via OAuth (no API key).
scrape403
Recuperer une page bloquee (403, 429, 503, page vide, challenge Cloudflare / Akamai / DataDome) avec Scrapling ou hbrowse, sans perdre de temps a bricoler des en-tetes.
myunsw
Automate myUNSW operations (enrollment, grades, timetable, fees, personal info) via AI agent + curl.
r
Resume the last handoff and carry on with the outstanding work.
crear-skill
Crear, probar y mejorar skills de forma iterativa. Usa cuando el usuario dice "crear skill", "crear habilidad", "build skill", "create a skill", "skill development", "desarrollar skill", "nueva habilidad". Usa el workflow: draft → test → review → improve → repeat con evaluación cuantitativa y qualitative review.
setup-aliases
Add the following bash aliases to /.bashrc for quick Claude Code commands.