Career-Ops Job Search Center
career-ops-hq/career-ops
Routes job-search requests to modes for evaluating offers, scanning portals, generating tailored CVs, tracking applications and drafting outreach, starting from a pasted job URL or description.
Saves your target titles, minimum salary, remote preference and exclusion filters once, so the other Job Apply skills reuse them for every search.
$ npx skills add neonwatty/job-apply-plugin --skill job-preferences -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install neonwatty/job-apply-plugin job-preferences --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/neonwatty/job-apply-plugin.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/job-preferences .claude/skills/job-preferences && 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 "job-preferences" agent skill from https://github.com/neonwatty/job-apply-plugin/tree/main/skills/job-preferences into .claude/skills/job-preferences/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "job-preferences", 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/neonwatty/job-apply-plugin/tree/main/skills/job-preferencesType 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 neonwatty/job-apply-plugin --skill job-preferences -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install neonwatty/job-apply-plugin job-preferences --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neonwatty/job-apply-plugin.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/job-preferences .agents/skills/job-preferences && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "job-preferences" agent skill from https://github.com/neonwatty/job-apply-plugin/tree/main/skills/job-preferences into .agents/skills/job-preferences/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "job-preferences", 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 neonwatty/job-apply-plugin --skill job-preferences -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install neonwatty/job-apply-plugin job-preferences --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neonwatty/job-apply-plugin.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/job-preferences .cursor/skills/job-preferences && 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 "job-preferences" agent skill from https://github.com/neonwatty/job-apply-plugin/tree/main/skills/job-preferences into .cursor/skills/job-preferences/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "job-preferences", 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/neonwatty/job-apply-plugin.git --path skills/job-preferences--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 neonwatty/job-apply-plugin --skill job-preferences -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install neonwatty/job-apply-plugin job-preferences --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neonwatty/job-apply-plugin.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/job-preferences .gemini/skills/job-preferences && 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 "job-preferences" agent skill from https://github.com/neonwatty/job-apply-plugin/tree/main/skills/job-preferences into .gemini/skills/job-preferences/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "job-preferences", 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 neonwatty/job-apply-plugin job-preferencesInstalls 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 neonwatty/job-apply-plugin --skill job-preferences -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/neonwatty/job-apply-plugin.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/job-preferences .github/skills/job-preferences && 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 "job-preferences" agent skill from https://github.com/neonwatty/job-apply-plugin/tree/main/skills/job-preferences into .github/skills/job-preferences/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "job-preferences", 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 neonwatty/job-apply-plugin --skill job-preferences -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install neonwatty/job-apply-plugin job-preferences --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/neonwatty/job-apply-plugin.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/job-preferences .opencode/skills/job-preferences && 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 "job-preferences" agent skill from https://github.com/neonwatty/job-apply-plugin/tree/main/skills/job-preferences into .opencode/skills/job-preferences/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "job-preferences", 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.
job-preferencesSaves your target titles, minimum salary, remote preference and exclusion filters once, so the other Job Apply skills reuse them for every search.
A short interview that records durable job-search settings. If preferences already exist, they are shown back to you and only the fields you want to change are asked about. If none exist, a question flow runs in batches of up to four questions: target titles, minimum base salary, remote preference (remote only, remote preferred, open to hybrid or open to all) and patterns to exclude such as junior or intern, followed by a default time range.
Preferences are read and written through the bundled answer-memory skill and a job-apply-store.py helper run with python3, never by editing the plugin's files directly. The bundled job-search skill then uses the saved values automatically.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 370204c. 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:
ReadWriteBashFrom allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
python3From 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.
Job Search Preferences loads about 1.1k tokens when it runs. Until then it costs about 33 tokens; SKILL.md has 501 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 noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: Read, Write, BashAutomated 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 neonwatty/job-apply-plugin at commit 370204c, republished under its MIT licence (© neonwatty). 501 words, ~1,075 tokens.
.claude/skills/job-preferences/SKILL.md (or your agent's skills folder).A Codex and Claude Code skill for managing persistent job search preferences. Set your target titles, salary floor, remote preference, and exclusion filters once; the bundled job-search skill reuses them automatically.
Follow the bundled answer-memory skill ($job-apply:answer-memory in Codex; /job-apply:answer-memory in Claude Code). Resolve <plugin-root> as that skill directs, run python3 "<plugin-root>/scripts/job-apply-store.py" init, then load saved preferences with preferences-get. Never read or write persistent Job Apply files directly.
Use the JSON object returned by preferences-get.
If preferences exist, display them:
Your current job search preferences:
- Target titles: Staff AI Engineer, Principal ML Engineer
- Min base salary: $250K
- Remote preference: Remote only
- Exclude patterns: junior, associate, intern, entry level
- Default time range: last week
Would you like to update any of these?
Then wait for the user. If they say no, stop. If they want to update, ask only about the fields they want to change using the host's structured question surface when available, or concise direct questions otherwise.
If no preferences exist, run the full Q&A below.
Use the host's structured question surface when available; otherwise ask concise direct questions. Ask no more than 4 questions at a time.
Question batch 1:
Target titles (multi-select + custom)
Min base salary
Remote preference
Exclude patterns (multi-select)
Question batch 2:
Write the collected values to a private temporary JSON object, then call preferences-set --input <preferences.json> through the bundled helper and remove the temporary file. The helper merges supplied keys while preserving the rest of the preferences and profile. Never patch profile.json directly.
Schema:
{
"preferences": {
"targetTitles": ["Staff AI Engineer", "Principal ML Engineer"],
"minBaseSalary": "$250K",
"remotePreference": "remote only",
"excludePatterns": ["junior", "associate", "intern", "entry level"],
"defaultTimeRange": "last week"
}
}Display the saved preferences and confirm:
Preferences saved to your local Job Apply store at
~/.job-apply/profile.json.These will be used automatically by the bundled
job-searchskill. Invokejob-preferencesagain any time to update them.
When the user invokes job-preferences and preferences already exist, show current values and let them update selectively. Only overwrite the fields they change — keep the rest intact.
answer-memory skill; never directly edit files under ~/.job-apply/preferences-set without --replace for selective updates© neonwatty, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in skills/job-preferences of neonwatty/job-apply-plugin.
Open the folder on GitHubat commit 370204c
Job Search Preferences 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 |
|---|---|---|---|---|---|---|
| Job Search Preferences this skillneonwatty/job-apply-plugin | 119 | — | ~1.1k | Automated safety check: Notes | MIT | |
| Career-Ops Job Search Centercareer-ops-hq/career-ops | 74k | — | ~3.6k | Automated safety check: Pass | MIT | |
| Reactive Resume Builderreactive-resume/reactive-resume | 44k | — | ~2k | Automated safety check: Pass | MIT | |
| freehire Tech Job SearchMadsLorentzen/ai-job-search | 45k | — | ~2.7k | Automated safety check: Pass | MIT | |
| Interview Prepreactive-resume/reactive-resume | 44k | — | ~10k | Automated safety check: Pass | MIT | |
| LinkedIn Job SearchMadsLorentzen/ai-job-search | 45k | — | ~1.2k | Automated safety check: Pass | MIT |
career-ops-hq/career-ops
Routes job-search requests to modes for evaluating offers, scanning portals, generating tailored CVs, tracking applications and drafting outreach, starting from a pasted job URL or description.
reactive-resume/reactive-resume
Builds resumes as valid JSON for the open-source Reactive Resume app by interviewing you, and can track job applications through its MCP tools.
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.
reactive-resume/reactive-resume
Prepares the user for a specific interview from their real experience.
MadsLorentzen/ai-job-search
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.
LiuMengxuan04/shushu-internship-tool
Turns a target internship job description into a resume-ready, interview-ready project by finding and auditing GitHub projects and drafting resume bullets and interview Q&A.
neonwatty/job-apply-plugin
Storage contract for the Job Apply plugin: manages the local applicant profile, reusable answers, application history and resumable sessions through a bundled helper script.
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.
neonwatty/job-apply-plugin
Search LinkedIn, Hacker News, and Twitter/X for jobs with connections, hiring manager insights, and preference-based scoring.
Categories
Saves your target titles, minimum salary, remote preference and exclusion filters once, so the other Job Apply skills reuse them for every search. A short interview that records durable job-search settings. If preferences already exist, they are shown back to you and only the fields you want to change are asked about.
Job Search Preferences fits situations like: setting up job-search filters for the first time; raising the salary floor or changing the remote preference; updating which title patterns are excluded.
Run `npx skills add neonwatty/job-apply-plugin --skill job-preferences -a claude-code`. Or copy the skill folder (skills/job-preferences in neonwatty/job-apply-plugin) into .claude/skills/job-preferences in your project. Claude Code loads it when a task matches its description.
Run `npx skills add neonwatty/job-apply-plugin --skill job-preferences -a codex`. Or copy the skill folder (skills/job-preferences in neonwatty/job-apply-plugin) into .agents/skills/job-preferences 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 neonwatty/job-apply-plugin --skill job-preferences -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/job-preferences, .gemini/skills/job-preferences, .github/skills/job-preferences and .opencode/skills/job-preferences in your project.
Going by SKILL.md and its folder, Job Search Preferences needs the command-line tools its instructions call (python3). Our summary lists: python3; The other Job Apply plugin skills, answer-memory and job-search. Its frontmatter pre-approves these tools: Read, Write, Bash.
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 notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.
Job Search Preferences 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.1k tokens (SKILL.md is roughly 4.3k 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 Job Search Preferences: Career-Ops Job Search Center (career-ops-hq/career-ops, 74k stars), Reactive Resume Builder (reactive-resume/reactive-resume, 44k stars), freehire Tech Job Search (MadsLorentzen/ai-job-search, 45k stars) and Interview Prep (reactive-resume/reactive-resume, 44k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
neonwatty (a GitHub user) maintains it in neonwatty/job-apply-plugin, which has 119 GitHub stars. The repository holds 4 skills in this directory. The repository was last updated on October 9, 2026.
Source: neonwatty/job-apply-plugin on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.