Agent skill

Job Search Preferences

by neonwatty in neonwatty/job-apply-plugin

Saves your target titles, minimum salary, remote preference and exclusion filters once, so the other Job Apply skills reuse them for every search.

MITAuto-check: notesBusiness, Finance & HR

Install Job Search Preferences

skills CLI
$ npx skills add neonwatty/job-apply-plugin --skill job-preferences -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install neonwatty/job-apply-plugin job-preferences --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
job-preferences
GitHub stars
119
Token cost
~1.1k tokens
SKILL.md length
501 words
Files
1
Skills in repo
4
Repo updated
First seen
Licence
MIT

At a glance

Saves your target titles, minimum salary, remote preference and exclusion filters once, so the other Job Apply skills reuse them for every search.

  • Works in 5 steps: Load Profile → Check for Existing Preferences → Collect Preferences (full Q&A) → …
  • Setting up job-search filters for the first time
  • SKILL.md covers Workflow, Updating Preferences and Safety Rules
  • Calls python3

What it does

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.

When your agent uses it

  • Setting up job-search filters for the first time
  • Raising the salary floor or changing the remote preference
  • Updating which title patterns are excluded

Example prompts

  • “Set my job preferences: Staff AI Engineer, remote only, $250K minimum.”
  • “Update my job search to exclude junior and intern roles.”
  • “Show me my current job search preferences.”

Requirements

  • python3
  • The other Job Apply plugin skills, answer-memory and job-search
  • Pre-approved tools (allowed-tools): Read, Write, Bash

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Load Profile
  2. Check for Existing Preferences
  3. Collect Preferences (full Q&A)
  4. Save Preferences
  5. Confirm

What it can do on your machine

Read from SKILL.md and the folder at commit 370204c. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • Read
    • Write
    • Bash

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • python3

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~33
When it runs · the whole SKILL.md, loaded when a task matches
~1.1k

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.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: Read, Write, Bash

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.

SKILL.md

The full file from neonwatty/job-apply-plugin at commit 370204c, republished under its MIT licence (© neonwatty). 501 words, ~1,075 tokens.

Download SKILL.mdSave it as .claude/skills/job-preferences/SKILL.md (or your agent's skills folder).
name
job-preferences
description
Set or update job-search preferences such as titles, salary, remote work, and filters for the other Job Apply skills.
allowed-tools
Read, Write, Bash

Job Preferences

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.


Workflow

Step 1: Load Profile

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.

Step 2: Check for Existing Preferences

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.

Step 3: Collect Preferences (full Q&A)

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:

  1. Target titles (multi-select + custom)

    • Header: "Titles"
    • Question: "Which job titles are you targeting?"
    • Options: Staff AI Engineer, Principal ML Engineer, Director of AI, Head of ML
    • Multi-select: true
    • The user can add custom titles via "Other"
  2. Min base salary

    • Header: "Salary"
    • Question: "What is your minimum base salary?"
    • Options: $200K, $250K, $300K
    • Multi-select: false
  3. Remote preference

    • Header: "Remote"
    • Question: "What is your remote work preference?"
    • Options: Remote only, Remote preferred, Open to hybrid, Open to all
    • Multi-select: false
  4. Exclude patterns (multi-select)

    • Header: "Exclude"
    • Question: "Which patterns should be excluded from results?"
    • Options: junior, associate, intern, entry level
    • Multi-select: true

Question batch 2:

  1. Default time range
    • Header: "Time range"
    • Question: "What default time range should job searches use?"
    • Options: Last week, 2 weeks, Month
    • Multi-select: false
Show full SKILL.md (160 more words)Show less
Step 4: Save Preferences

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:

json
{
  "preferences": {
    "targetTitles": ["Staff AI Engineer", "Principal ML Engineer"],
    "minBaseSalary": "$250K",
    "remotePreference": "remote only",
    "excludePatterns": ["junior", "associate", "intern", "entry level"],
    "defaultTimeRange": "last week"
  }
}
Step 5: Confirm

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-search skill. Invoke job-preferences again any time to update them.


Updating Preferences

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.


Safety Rules

  1. Use only the helper — initialize, read, and merge preferences through the bundled answer-memory skill; never directly edit files under ~/.job-apply/
  2. Preserve existing profile — use preferences-set without --replace for selective updates
  3. No defaults without user input — always ask the user, never assume values

© neonwatty, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/job-preferences of neonwatty/job-apply-plugin.

Open the folder on GitHubat commit 370204c

Compare with similar skills

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.

Job Search Preferences compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Job Search Preferences this skillneonwatty/job-apply-plugin119—~1.1kAutomated safety check: NotesMIT
Career-Ops Job Search Centercareer-ops-hq/career-ops74k—~3.6kAutomated safety check: PassMIT
Reactive Resume Builderreactive-resume/reactive-resume44k—~2kAutomated safety check: PassMIT
freehire Tech Job SearchMadsLorentzen/ai-job-search45k—~2.7kAutomated safety check: PassMIT
Interview Prepreactive-resume/reactive-resume44k—~10kAutomated safety check: PassMIT
LinkedIn Job SearchMadsLorentzen/ai-job-search45k—~1.2kAutomated safety check: PassMIT

Similar skills

  • 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.

    74k GitHub stars~3.6k tokensUpdated today
    Business, Finance & HRAuto-check passed
  • Reactive Resume Builder

    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.

    44k GitHub stars~2k tokensUpdated yesterday
    Business, Finance & HRAuto-check passed
  • freehire Tech Job Search

    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.

    45k GitHub stars~2.7k tokensUpdated 2 days ago
    Business, Finance & HRAuto-check passed
  • Interview Prep

    reactive-resume/reactive-resume

    Prepares the user for a specific interview from their real experience.

    44k GitHub stars~10k tokensUpdated yesterday
    Business, Finance & HRAuto-check passed
  • LinkedIn Job Search

    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.

    45k GitHub stars~1.2k tokensUpdated 2 days ago
    Business, Finance & HRAuto-check passed
  • Internship Project Preparation Tool

    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.

    2.1k GitHub stars~2.3k tokensUpdated 3 mo ago
    Business, Finance & HRAuto-check passed

More from neonwatty/job-apply-plugin

  • Job Apply Answer Memory

    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.

    119 GitHub stars~2.9k tokensUpdated yesterday
    Auto-check: notes
  • 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.

    119 GitHub stars~4.9k tokensUpdated yesterday
    Auto-check: notes
  • Job Search

    neonwatty/job-apply-plugin

    Search LinkedIn, Hacker News, and Twitter/X for jobs with connections, hiring manager insights, and preference-based scoring.

    119 GitHub stars~3.5k tokensUpdated yesterday
    Auto-check: notes

Questions about Job Search Preferences

What does Job Search Preferences do?

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.

When should I use Job Search Preferences?

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.

How do I install Job Search Preferences in Claude Code?

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.

How do I install Job Search Preferences in Codex?

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.

Can I use Job Search Preferences in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Job Search Preferences need to run?

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.

Does Job Search Preferences access the network?

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.

Is Job Search Preferences safe to install?

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.

What licence does Job Search Preferences use?

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.

How many tokens does Job Search Preferences use?

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.

What are the alternatives to Job Search Preferences?

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.

Who maintains Job Search Preferences?

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.