Job Application Assistant
neonwatty/job-apply-plugin
Fills out job applications on LinkedIn Easy Apply, Greenhouse, Ashby, Lever, Rippling and Workday from your stored profile, using visible browser automation.
Searches LinkedIn's public job listings for any location or remote work and fetches the full description of a posting, with no login or API key.
$ npx skills add MadsLorentzen/ai-job-search --skill linkedin-search -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install MadsLorentzen/ai-job-search linkedin-search --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/MadsLorentzen/ai-job-search.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/linkedin-search .claude/skills/linkedin-search && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "linkedin-search" agent skill from https://github.com/MadsLorentzen/ai-job-search/tree/master/.agents/skills/linkedin-search into .claude/skills/linkedin-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-search", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/MadsLorentzen/ai-job-search/tree/master/.agents/skills/linkedin-searchType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add MadsLorentzen/ai-job-search --skill linkedin-search -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install MadsLorentzen/ai-job-search linkedin-search --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MadsLorentzen/ai-job-search.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.agents/skills/linkedin-search .agents/skills/linkedin-search && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "linkedin-search" agent skill from https://github.com/MadsLorentzen/ai-job-search/tree/master/.agents/skills/linkedin-search into .agents/skills/linkedin-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-search", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MadsLorentzen/ai-job-search --skill linkedin-search -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install MadsLorentzen/ai-job-search linkedin-search --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MadsLorentzen/ai-job-search.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.agents/skills/linkedin-search .cursor/skills/linkedin-search && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "linkedin-search" agent skill from https://github.com/MadsLorentzen/ai-job-search/tree/master/.agents/skills/linkedin-search into .cursor/skills/linkedin-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-search", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/MadsLorentzen/ai-job-search.git --path .agents/skills/linkedin-search--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add MadsLorentzen/ai-job-search --skill linkedin-search -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install MadsLorentzen/ai-job-search linkedin-search --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MadsLorentzen/ai-job-search.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.agents/skills/linkedin-search .gemini/skills/linkedin-search && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "linkedin-search" agent skill from https://github.com/MadsLorentzen/ai-job-search/tree/master/.agents/skills/linkedin-search into .gemini/skills/linkedin-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-search", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install MadsLorentzen/ai-job-search linkedin-searchInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add MadsLorentzen/ai-job-search --skill linkedin-search -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/MadsLorentzen/ai-job-search.git skills-src && mkdir -p .github/skills && cp -r skills-src/.agents/skills/linkedin-search .github/skills/linkedin-search && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "linkedin-search" agent skill from https://github.com/MadsLorentzen/ai-job-search/tree/master/.agents/skills/linkedin-search into .github/skills/linkedin-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-search", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add MadsLorentzen/ai-job-search --skill linkedin-search -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install MadsLorentzen/ai-job-search linkedin-search --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/MadsLorentzen/ai-job-search.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.agents/skills/linkedin-search .opencode/skills/linkedin-search && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "linkedin-search" agent skill from https://github.com/MadsLorentzen/ai-job-search/tree/master/.agents/skills/linkedin-search into .opencode/skills/linkedin-search/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-search", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
linkedin-searchSearches LinkedIn's public job listings for any location or remote work and fetches the full description of a posting, with no login or API key.
The skill runs a small bun-based command-line tool against LinkedIn's public job pages. A search needs a --location, such as a city, a country or Remote, and can add a keyword query, a recency filter in days or minutes, a workplace type of remote, hybrid or onsite, a page number, a result limit and an output format of JSON, table or plain text. A detail command takes a job ID, a jobs/view URL or a job posting URN and returns the full description, seniority, employment type, job function and industries.
No authentication, API key or runtime dependency beyond bun is needed, and the same skill works in any market because the location is always passed explicitly. It carries a personal-use warning: automated access is against LinkedIn's terms of service, so volume should stay low and the tool should not be used commercially or for bulk collection. A URL reference file and tests for flag validation, parsing, timeouts and retries ship with it.
Read from SKILL.md and the folder at commit a011214. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
Bash(bun run .agents/skills/linkedin-search/cli/src/cli.ts *)From allowed-tools in the SKILL.md frontmatter.
Ships script files (TypeScript), which the agent can run.
Shell commands in SKILL.md call:
bunFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
LinkedIn Job Search loads about 1.2k tokens when it runs. Until then it costs about 143 tokens; SKILL.md has 385 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from MadsLorentzen/ai-job-search at commit a011214, republished under its MIT licence (© MadsLorentzen). 385 words, ~1,159 tokens.
.claude/skills/linkedin-search/SKILL.md (or your agent's skills folder). This skill also uses 15 other files; get the full folder from GitHub.Search live job listings from LinkedIn's public job board for any country/region
(and remote). No authentication, no API key, and zero runtime dependencies — it runs
with just bun. The location is always passed explicitly, so the same skill works for a
forker in any market out of the box.
This is a country-agnostic worked example of the repo's job-portal-skill pattern. LinkedIn's
jobs-guestendpoints are global and the HTML parsing is country-independent; only the--locationyou pass changes per market.
This uses LinkedIn's public job pages; automated access is against LinkedIn's Terms of Service, so keep volume low and don't use it commercially or for bulk data collection. Run it on your own responsibility.
bun run .agents/skills/linkedin-search/cli/src/cli.ts search --location "<place>" [flags]Key flags:
--location <text> / -l <text> — required. A LinkedIn place string, e.g. "Mumbai, Maharashtra, India", "Berlin, Germany", "London, United Kingdom", or "Remote".--query <text> / -q <text> — keyword search (title, skill, role). Recommended.--jobage <days> — posted within N days: 1, 7, 14, 30. Omit for all postings.--jobage-minutes <n> — posted within N minutes (sub-day precision, e.g. 30). Conflicts with --jobage — pass only one.--remote <mode> — remote, hybrid, or onsite (workplace-type filter).--page <n> — page number (1-indexed, 10 results per page).--limit <n> / -n <n> — cap total results emitted (client-side).--format json|table|plain — default json.bun run .agents/skills/linkedin-search/cli/src/cli.ts detail <id|url> [--format json|plain]id is the job ID from search results (e.g. 4426311357). You may also pass a full
LinkedIn jobs/view/... URL or a urn:li:jobPosting:... URN. Returns the full description,
seniority, employment type, job function, and industries.
# Data engineer roles in Bengaluru, last 30 days
bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "data engineer" -l "Bengaluru, Karnataka, India" --jobage 30 --format table
# Product manager roles in Berlin, remote
bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "product manager" -l "Berlin, Germany" --remote remote --format table
# Any role, fully remote
bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "paralegal" -l "Remote" --format table
# Engineer roles, remote, posted in the last 30 minutes
bun run .agents/skills/linkedin-search/cli/src/cli.ts search -q "engineer" -l "Remote" --jobage-minutes 30 --format table
# Full details for a specific job
bun run .agents/skills/linkedin-search/cli/src/cli.ts detail 4426311357 --format plain| Format | Best for |
|---|---|
json | Default — programmatic use, passing IDs to detail |
table | Quick human-readable scanning |
plain | Reading a single job's full detail (detail command) |
All errors are written to stderr as { "error": "...", "code": "..." } and the process exits with code 1.
jobs-guest endpoints — no credentials required.4426311357) — pass them as-is to detail.© MadsLorentzen, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 15 other files in .agents/skills/linkedin-search of MadsLorentzen/ai-job-search.
Open the folder on GitHubat commit a011214
LinkedIn Job Search next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| LinkedIn Job Search this skillMadsLorentzen/ai-job-search | 45k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Job Application Assistantneonwatty/job-apply-plugin | 119 | — | ~4.9k | Automated safety check: Notes | MIT | |
| Linkedin Job Search Skillyanliudesign/offer-toolkit-skill | 520 | — | ~1k | Automated safety check: Pass | MIT | |
| Job Searchneonwatty/job-apply-plugin | 119 | — | ~3.5k | Automated safety check: Notes | MIT | |
| Job Huntrebecha1227-a11y/CareerForge | 323 | — | ~2k | Automated safety check: Warn | None | |
| Linkedin Jobs Searchbrowser-act/skills | 6.1k | — | ~2.5k | Automated safety check: Pass | MIT |
neonwatty/job-apply-plugin
Fills out job applications on LinkedIn Easy Apply, Greenhouse, Ashby, Lever, Rippling and Workday from your stored profile, using visible browser automation.
yanliudesign/offer-toolkit-skill
LinkedIn 岗位发现与匹配排序。根据用户给的一份种子 JD 和简历,提取目标岗位画像,自动生成多组 LinkedIn Jobs 搜索,采集、去重并按证据给岗位分层,最终输出可直接投递的 shortlist。用户说‘帮我找工作’、‘在 LinkedIn 搜适合我的岗位’、‘找相似职位’、‘根据简历推荐岗位’、‘job search’、‘find jobs like…
neonwatty/job-apply-plugin
Search LinkedIn, Hacker News, and Twitter/X for jobs with connections, hiring manager insights, and preference-based scoring.
rebecha1227-a11y/CareerForge
AI 岗位猎手。基于用户简历,自动在各大招聘平台搜索匹配岗位,输出带匹配度评估的岗位列表. An agent skill from rebecha1227-a11y/CareerForge.
browser-act/skills
Search LinkedIn job listings and extract full job details. An agent skill from browser-act/skills.
himself65/finance-skills
Read LinkedIn for financial research through opencli: the user's feed, and job search with location, seniority, job type, remote, company, and date filters.
MadsLorentzen/ai-job-search
Searches live software, data and engineering job listings through the freehire.me public API, or fetches one posting, with filters for country, region and skills.
MadsLorentzen/ai-job-search
Compares the jobs you track with your candidate profile to find skill gaps, then builds a gap heatmap and a prioritized learning plan with study resources.
MadsLorentzen/ai-job-search
Finds new job postings that match your profile through installed portal-search CLIs, dedupes against past runs and your application tracker, and rates each one's fit.
MadsLorentzen/ai-job-search
Evaluates job postings against your profile, then tailors a LaTeX CV and cover letter and prepares interview answers for the roles you pursue.
Works with
Categories
Searches LinkedIn's public job listings for any location or remote work and fetches the full description of a posting, with no login or API key. The skill runs a small bun-based command-line tool against LinkedIn's public job pages. A search needs a --location, such as a city, a country or Remote, and can add a keyword query, a recency filter in days or minutes, a workplace type of remote, hybrid or onsite, a page number, a result limit and an output format of JSON, table or plain text.
LinkedIn Job Search fits situations like: searching for job openings in a particular city, country or remote; filtering listings by how recently they were posted or by workplace type; pulling the full description of one LinkedIn job posting.
Run `npx skills add MadsLorentzen/ai-job-search --skill linkedin-search -a claude-code`. Or copy the skill folder (.agents/skills/linkedin-search in MadsLorentzen/ai-job-search) into .claude/skills/linkedin-search in your project. Claude Code loads it when a task matches its description.
Run `npx skills add MadsLorentzen/ai-job-search --skill linkedin-search -a codex`. Or copy the skill folder (.agents/skills/linkedin-search in MadsLorentzen/ai-job-search) into .agents/skills/linkedin-search in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add MadsLorentzen/ai-job-search --skill linkedin-search -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/linkedin-search, .gemini/skills/linkedin-search, .github/skills/linkedin-search and .opencode/skills/linkedin-search in your project.
Going by SKILL.md and its folder, LinkedIn Job Search needs TypeScript for the scripts in its folder and the command-line tools its instructions call (bun). Our summary lists: bun; Network access to LinkedIn's public job pages. Its frontmatter pre-approves these tools: Bash(bun run .agents/skills/linkedin-search/cli/src/cli.ts *).
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
LinkedIn Job Search is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 1.2k tokens (SKILL.md is roughly 4.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with LinkedIn Job Search: Job Application Assistant (neonwatty/job-apply-plugin, 119 stars), Linkedin Job Search Skill (yanliudesign/offer-toolkit-skill, 520 stars), Job Search (neonwatty/job-apply-plugin, 119 stars) and Job Hunt (rebecha1227-a11y/CareerForge, 323 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
MadsLorentzen (a GitHub user) maintains it in MadsLorentzen/ai-job-search, which has 45,336 GitHub stars. The repository holds 5 skills in this directory. The repository was last updated on October 8, 2026.
Source: MadsLorentzen/ai-job-search on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.