The job search that runs on your machine. An AI-powered job application framework built on Claude Code. Fork it, fill in your profile, and let Claude evaluate job postings, tailor your CV, write cover letters, and prepare you for interviews.
$ npx -y skills add MadsLorentzen/ai-job-search --agent claude-code
Run the curl in your terminal, the rest in Claude Code.
Repo: MadsLorentzen/ai-job-search
What's inside
The job search that runs on your machine.
An AI-powered job application framework built on Claude Code. Fork it, fill in your profile, and let Claude evaluate job postings, tailor your CV, write cover letters, and prepare you for interviews.
Note: This is an independent open-source project and is not affiliated with, endorsed by, sponsored by, or maintained by Anthropic. Anthropic and Claude Code are referenced only to describe the toolchain this workflow uses.
This project has no affiliated cryptocurrency, token, or paid sponsorship program. Anything claiming otherwise is unauthorized and should be treated as a scam. The only ways to support the project are the Ko-fi link below and contributing on GitHub.
I'm a geophysicist by training. When my position was cut in late 2025, I built this framework to run my own job search - the same /scrape, /apply, and /interview workflow in this repo, used weekly, on my own career. I was upfront about it with every employer I spoke to, and instead of counting against me, it usually sparked a genuine technical conversation.
Sixty-nine tailored applications, twenty first interviews, and one signed contract later, I started as an AI engineer in June 2026. People kept asking whether this actually works. It got me hired. Now it's yours.
The longer version, including the full application funnel, is on LinkedIn.
A structured workflow that turns Claude Code into a full-stack job application assistant. The core workflow (self-profiling, fit evaluation, and the drafter-reviewer application pipeline) is language- and country-agnostic. The job portal search skills are built for the Danish market (Jobindex, Jobnet, Akademikernes Jobbank, etc.), but the pattern is designed to be swapped for your local job boards.
/setup /scrape /apply <url>
| | |
v v v
Fill in Search job Evaluate fit
your profile portals Score & recommend
| | |
v v v
Profile Present matches Draft CV + Cover Letter
files ready with fit ratings (LaTeX, tailored)
| |
v v
Pick a match Reviewer agent critiques
-> /apply -> Revise -> Final output
The framework encodes career guidance best practices, including structured evaluation criteria, forward-looking cover letter framing, and optional salary benchmarking.
AGENTS.md - the portal search skills work there out of the box, and community forks adapt the full workflow.lualatex and xelatex: TeX Live, MacTeX, TinyTeX, or MiKTeX. The CV compiles with lualatex (pdflatex often fails on modern MiKTeX installs with fontawesome5 font-expansion errors); the cover letter compiles with xelatex because cover.cls requires fontspec. If using a minimal TeX install such as TinyTeX or BasicTeX, install the extra packages listed in SETUP.md.pdftotext from poppler (macOS: brew install poppler, Debian/Ubuntu: apt install poppler-utils, Windows: choco install poppler) โ used by /apply's ATS parseability check on the compiled CV. If missing, the check degrades gracefully to a visual keyword review.๐ฅ Prefer to see it in action first? The Next New Thing did a hands-on walkthrough of how the workflow is actually used, from setup to a finished application (recorded August 2026 - commands may have evolved since).
gh repo fork MadsLorentzen/ai-job-search --clone
cd ai-job-search
PowerShell:
$tools = @("jobbank-search", "jobdanmark-search", "jobindex-search", "jobnet-search", "linkedin-search", "freehire-search")
foreach ($tool in $tools) {
Push-Location ".agents/skills/$tool/cli"
bun install
Pop-Location
}
Bash / zsh / Git Bash:
for tool in jobbank-search jobdanmark-search jobindex-search jobnet-search linkedin-search freehire-search; do
(cd .agents/skills/$tool/cli && bun install)
done
For linkedin-search and freehire-search the install is optional: both have zero runtime dependencies and run with plain bun; bun install only pulls TypeScript dev types.
claude
# Then inside Claude Code:
/setup
/setup offers three paths: read your documents/ folder if you have one populated (CV PDF, LinkedIn export, diplomas, reference letters, past applications), import a single CV pasted in chat, or walk through an interview. It auto-detects what you have and asks. Documents-folder mode is idempotent and safe to re-run as you add more material; see documents/README.md for the layout.
/scrape
This searches multiple job portals for positions matching your profile, deduplicates results, and presents them sorted by fit. Pick a match to run /apply on it directly โ or, when a scrape returns more jobs than you want to eyeball, run /rank to batch-score them all against the fit framework and get a ranked shortlist first.
/apply https://jobindex.dk/job/1234567
If the URL can't be fetched (some job portals block automated access), you can paste the job description directly instead:
/apply <paste the full job description here>
This runs the full workflow: evaluate fit, draft CV + cover letter, review with a second agent, revise, and present the final output.
Postings are treated as untrusted input (the workflow follows no instructions embedded in them and fetches no links from their body), but agentic defenses are instruction-level, not a sandbox - on an unfamiliar job board, skim what was fetched and written before you hit send. Details in SECURITY.md.
/setup, /scrape, and /apply form the core workflow. Ten more commands extend it once your profile is in place:
/interview preps you for a scheduled interview on a tracked application. It builds a stage-specific prep pack from the application's archive (the exact posting, the CV and cover letter the interviewer actually read, feedback recorded from earlier rounds), researches the company and interviewers with a verify-before-use rule, maps likely questions to your STAR examples, and offers a mock interview following the roleplay protocol in 07-interview-prep.md. Gaps get honest bridge answers, never invented experience./outcome records what happened to an application - interview stages, offers, rejections, silence. It archives the submitted CV, cover letter, and posting text into documents/applications/<company>_<role>/, keeps outcome.md in the format /setup Path A parses, and updates the tracker. It also owns the stretch before there is an outcome to record: /outcome followup surfaces open applications that have gone quiet (default 10 days), drafts a short channel-appropriate follow-up in your writing style using only claims from the materials you already submitted (drafts only, never sends; at most twice per application), and offers a thank-you note in the same turn an interview stage is recorded. Once a few applications resolve, it points you back to /setup to calibrate the fit framework from what actually got interviews./notion-sync publishes a one-way, read-only view of the pipeline into a Notion database via the official Notion MCP server (OAuth, no API keys) - one row per ranked job plus every tracked application, with a write-once briefing page per row. The repo files stay the system of record: nothing syncs back, and documents sync as filenames only. Complements /html-report: that is the deep offline dashboard you regenerate at your desk; this is the glanceable live view from anywhere Notion runs (desktop, web, phone)./gmail-sync reads your Gmail (via the Gmail connector) for status signals on your open applications - interview invites, assessment links, offers, rejections - and proposes them as a batch for you to approve before anything is written to the tracker or outcome.md, citing the source email on every proposed change. Offers stop short of proposing hired/offer_declined since that's your call; conflicting or unmatched signals get flagged for a manual /outcome pass instead of guessed./rank bridges /scrape and /apply: it batch-scores all newly scraped postings against the fit framework (parallel agents fetch each posting and score the five evaluation dimensions) and returns a ranked shortlist with honest per-job strengths and gaps. Deal-breakers veto, deadlines get urgency flags, dead postings get marked expired. Pick a number and it hands off to the full /apply workflow./expand enriches your profile by scanning public sources you've already linked in it (GitHub repos, portfolio site, Kaggle, Google Scholar) and looking up syllabi for named courses and certifications. Discovered competencies are added to your profile with a source tag. Useful right after /setup to surface skills that documents alone don't make explicit./upskill analyzes the gap between your profile, your tracked job postings, and your ranked-but-untracked postings (/rank's recorded gaps in seen_jobs.json) โ or a single posting via /upskill <URL>. Produces a prioritized heatmap of skill gaps and a learning plan with web-searched study resources and time estimates. Useful for career planning between applications./html-report generates a self-contained HTML dashboard from job_search_tracker.csv and the application archives โ stat cards, status/sector/channel/funnel charts (inline SVG, no external dependencies), and a filterable applications table. Opens directly in a browser, fully offline. Re-run it any time after /apply or /outcome adds new entries./add-template registers your own CV or cover letter template (LaTeX, Typst, or another toolchain) in place of the stock ones. It captures the template's instructions (source extension, compile command, fonts, style rules, page limit), runs a mandatory test compile, and wires the template into /apply. See Custom templates below./add-portal generates a job-portal search skill for a job board in your market. It investigates the portal (search URL pattern, result structure, access rules), scaffolds the CLI skill from the same structure as the shipped ones, and test-runs a live query before registering. See Job search tools below./reset is also available, see Starting over below.
ai-job-search/
โโโ CLAUDE.md # Main candidate profile + workflow rules
โโโ .claude/
โ โโโ commands/
โ โ โโโ apply.md # /apply workflow (drafter-reviewer)
โ โ โโโ setup.md # /setup onboarding (documents folder, CV import, or interview)
โ โ โโโ expand.md # /expand competency enrichment from documents and online presence
โ โ โโโ add-template.md # /add-template register custom templates (LaTeX, Typst, ...)
โ โ โโโ add-portal.md # /add-portal generate a job-portal search skill for your market
โ โ โโโ rank.md # /rank triage scraped jobs into a ranked shortlist
โ โ โโโ outcome.md # /outcome record application results, archive materials
โ โ โโโ gmail-sync.md # /gmail-sync auto-detect application status from Gmail
โ โ โโโ interview.md # /interview stage-specific prep pack + mock interview
โ โ โโโ html-report.md # /html-report generate application tracker dashboard
โ โ โโโ notion-sync.md # /notion-sync one-way pipeline view in a Notion database
โ โ โโโ reset.md # /reset wipe profile data or documents folder
โ โโโ skills/
โ โ โโโ job-application-assistant/ # Core application skill
โ โ โ โโโ SKILL.md # Skill definition
โ โ โ โโโ 01-candidate-profile.md # Your education, experience, skills
โ โ โ โโโ 02-behavioral-profile.md# PI/DISC/personality assessment
โ โ โ โโโ 03-writing-style.md # Tone, structure, do's and don'ts
โ โ โ โโโ 04-job-evaluation.md # Scoring framework for job fit
โ โ โ โโโ 05-cv-templates.md # LaTeX CV structure + tailoring rules
โ โ โ โโโ 06-cover-letter-templates.md # LaTeX cover letter templates
โ โ โ โโโ 07-interview-prep.md # STAR examples + interview framework
โ โ โโโ job-scraper/ # Job search orchestration
โ โ โโโ upskill/ # /upskill skill gap analysis and learning plan
โ โโโ settings.json # Claude Code permissions (shared, scoped)
โโโ .agents/skills/ # Job portal CLI tools
โ โโโ jobbank-search/ # Akademikernes Jobbank (Denmark)
โ โโโ jobdanmark-search/ # Jobdanmark.dk (Denmark)
โ โโโ jobindex-search/ # Jobindex.dk (Denmark)
โ โโโ jobnet-search/ # Jobnet.dk (Denmark, government portal)
โ โโโ linkedin-search/ # LinkedIn public job listings (country-agnostic)
โ โโโ freehire-search/ # freehire.me tech job aggregator (multi-market, REST API)
โโโ cv/
โ โโโ main_example.tex # moderncv LaTeX template
โโโ cover_letters/
โ โโโ cover.cls # Custom cover letter LaTeX class
โ โโโ cover_example.tex # Example cover letter (structural reference + CI smoke test)
โ โโโ OpenFonts/ # Lato + Raleway fonts
โโโ templates/ # Custom templates registered via /add-template
โ โโโ README.md # Folder layout instructions
โโโ documents/ # Career source materials for /setup Path A and /expand
โ โโโ README.md # Folder layout instructions
โ โโโ cv/ # Master CV (PDF or .tex)
โ โโโ linkedin/ # LinkedIn profile export (PDF)
โ โโโ diplomas/ # Degree certificates and transcripts
โ โโโ references/ # Reference letters
โ โโโ applications/ # Past application records (<company>_<role>/)
โโโ .github/workflows/ci.yml # CI: LaTeX smoke compiles, skill lint, CLI typechecks
โโโ salary_lookup.py # Salary benchmarking tool (BYO data)
โโโ tools/
โ โโโ convert_salary_excel.py # Convert salary Excel to JSON
โ โโโ lint_skills.py # CI lint for skills, commands, settings.json
โ โโโ security_guards.py # CI guards: permission allowlist, gitignore rules, manifests
โ โโโ README_SALARY_TOOL.md # Salary tool setup instructions
โโโ job_scraper/ # Scraper state (seen jobs, results)
โโโ gmail_sync/ # /gmail-sync state (processed message IDs, last sync date)
โโโ upskill/ # /upskill report output (markdown reports per run)
โโโ job_search_tracker.csv # Application tracking spreadsheet
โโโ SETUP.md # Detailed setup guide
/apply worksThe /apply command runs a drafter-reviewer workflow with mandatory PDF compilation:
pdftotext, optional dependency) and verify it the way an ATS parser sees it โ contact details present as literal text, no garbled glyphs, sane reading order โ then score the posting's keyword coverage against the extraction. Keywords the profile genuinely supports get added; genuine gaps stay visible, never stuffed.All claims in the CV and cover letter are verified against your actual profile. The system never fabricates skills or experience.
/apply command compiles and visually inspects every PDF and applies targeted fixes (\needspace, \enlargethispage, font-matching wrappers for list items) until the layout is clean. This runs automatically on every application./apply extracts the compiled CV's text layer with pdftotext and verifies contact details, reading order, and the posting's keyword coverage against what a parser actually sees. Honesty rule enforced: a keyword the profile doesn't support is acknowledged as a gap, never stuffed in.If you prefer editing files directly instead of using /setup:
| File | What to change |
|---|---|
CLAUDE.md | Your full profile (name, education, experience, skills, goals) |
01-candidate-profile.md | Structured version of your CV data |
02-behavioral-profile.md | Your behavioral assessment or self-assessment |
04-job-evaluation.md | Skill match areas, career goals, motivation filters |
05-cv-templates.md | Profile statement templates for different role types |
07-interview-prep.md | Your STAR examples from actual experience |
search-queries.md | Job search queries for your skills and location |
As your priorities evolve, you can reconfigure just the job search without re-running the full profile setup:
/setup --section search
This re-runs the search configuration interview: which roles to target, which skills to search for, which locations, and which portals. It also suggests role types you may not have considered based on your profile.
The CV uses moderncv (banking style). The cover letter uses a custom cover.cls with Lato/Raleway fonts. Both are LaTeX โ the reference engine this repo ships and maintains.
To use your own template instead โ LaTeX, Typst, or any other toolchain that compiles to PDF from the command line โ run:
/add-template
Point it at your source file (a .tex file plus any .cls/.sty files or bundled fonts; a .typ file plus any local packages; or an equivalent for another toolchain). The command interviews you for the template's instructions โ source extension, compile command, fonts and where they live, style rules to preserve, hard page limit โ stores everything under templates/, runs a mandatory test compile, and activates the template so /apply drafts and compiles from it. Templates are stored with [PLACEHOLDER] tokens instead of personal data, so they're safe to commit and share.
/add-template --list shows registered templates/add-template --use <name> switches between them/add-template --use default reverts to the stock moderncv / cover.cls templatesIf you prefer doing it by hand, the manual route still works: update the guidance in 05-cv-templates.md and 06-cover-letter-templates.md.
The four Danish CLI tools in .agents/skills/ (Jobbank, Jobdanmark, Jobindex, Jobnet) demonstrate the pattern for building a job-portal integration for a specific market. If you're in a different country, run:
/add-portal
Give it your local job board's URL. The command investigates the portal (search-URL pattern, result-page structure, robots.txt/access rules), scaffolds a CLI skill with the same structure, commands, and output contract as the shipped ones, and test-runs a live query before registering anything. Auth-walled portals are declined, and portals with restrictive terms get a prominent personal-use-only warning in the generated skill. The generated skill is market-specific and lives in your fork; the generator itself is the universal part.
Maintaining a fork adapted to your market or language? Add it to the Community forks & adaptations thread so others can find it.
For country-agnostic starting points outside Denmark, the repo ships two portal skills alongside the Danish demos:
linkedin-search โ built on LinkedIn's public, unauthenticated jobs-guest endpoints. Field-agnostic, zero runtime dependencies (runs with just bun), and takes the search location as an explicit flag, so it works for any market out of the box (-l "Berlin, Germany", -l "Mumbai, Maharashtra, India", -l "Remote", โฆ). Intended for personal use only โ automated access is against LinkedIn's Terms of Service, so keep volume low. See .agents/skills/linkedin-search/SKILL.md.freehire-search โ queries the freehire.me aggregator's public REST API (JSON, no API key). Tech-focused (software, data, engineering, DevOps, remote), multi-market via facet flags (--region, --country, --remote), and zero runtime dependencies. Unlike the HTML-scraping Danish portals, results come back structured (skills, seniority, category). The backend is MIT-licensed and self-hostable โ point FREEHIRE_API_URL at your own instance if you prefer. See .agents/skills/freehire-search/SKILL.md.Everything above adds up to an extension model, so here it is stated plainly. The framework has three extension points, and none of them require touching upstream:
*-search skill is a self-contained folder under .agents/skills/ with the same contract (a search/detail CLI, --format json|table|plain output, an enabled: flag in its SKILL.md, its own tests). /scrape auto-discovers any installed skill that follows the contract - nothing to register, nothing to wire up. /add-portal generates new ones; the community portal index catalogs the ones other forks have built./add-template registers any CV or cover-letter toolchain that compiles to PDF from the command line, LaTeX or otherwise./rank and /apply fit evaluations. Language is the one deal-breaker type with dedicated, structured handling: /setup captures every language you work in and your level (asked directly, or inferred from your CV/LinkedIn export) into a Languages table, and the Language Gate (04-job-evaluation.md) hard-rejects a posting that requires a language you haven't declared at all, while flagging - not auto-rejecting - one that asks for a higher level than you declared in a language you do work in, so a borderline case (a strict "fluent" bar against your own B1/B2, say) gets your judgment instead of a silent drop.Borrowing a portal skill from another fork is the intended way to get a board that upstream doesn't ship: find it in the portal index, open that fork, and copy the one folder into your own .agents/skills/. Before you run it:
.claude/settings.json allowlists them) against your career data. Check that the only network calls go to the job board it claims to search, that package.json has no dependencies and no lifecycle scripts (postinstall etc.), and that nothing reads or writes outside its own folder.bun test in the skill's cli/ directory) - a well-built skill's tests pass with no network access.enabled: flag and the skill's own ToS notes.The copy step is manual on purpose. Your settings already allow installed portal skills to run without asking each time - so an installer that fetched them from third-party repos for you would skip the one check that matters: you, reading the code first. There isn't one, and that's a security decision rather than a missing feature.
Market-specific data sources (a national salary database, local award-rate tables) follow the same pattern as portals: they belong in a market fork, shared via #78, not upstream.
The salary tool works with any salary data you provide (union statistics, Glassdoor exports, personal research, etc.). See tools/README_SALARY_TOOL.md for the expected format and setup. If you don't have salary data, the salary step is simply skipped.
To wipe your profile data and start fresh:
/reset profile # clears skill files, preserves framework rules
/reset documents # deletes files from documents/ folder
/reset all # both
/reset shows exactly what will be deleted and requires you to type RESET to confirm. Nothing is deleted until you do.
Upstream moves fast. Rather than pulling raw master and hoping, update your fork to a tagged release - a vetted checkpoint described in CHANGELOG.md. python3 tools/check_upstream_updates.py previews exactly which of your personalized files an update touches before you merge. Full walkthrough in SETUP.md, section 8.
The single biggest factor in output quality is how much detail you put into your profile. A thin profile produces generic applications; a detailed one enables genuinely tailored results.
/setup at your documents/ folder, paste a single CV, or walk through the interview, the principle is the same: richer input produces sharper output.The framework supports two distinct modes of job searching:
To get the most from this, invest time during /setup in describing not just your experience, but what energized you, what drained you, and what you'd want more of. This context directly shapes how the system evaluates fit and which roles it surfaces during /scrape.
Thinking about a PR? Read CONTRIBUTING.md first - it explains what gets merged, what lives in forks, and why.
MIT
.agents/
skills/
freehire-search/
cli/
package.json
README.md
src/
cli.ts
commands/
detail.ts
search.ts
helpers.ts
tests/
cli-flag-validation.test.ts
commands.test.ts
helpers.ts
parsing.test.ts
request-timeout.test.ts
retry-backoff.test.ts
tsconfig.json
SKILL.md
url-reference.md
jobbank-search/
cli/
package.json
README.md
src/
cli.ts
commands/
detail.ts
search.ts
helpers.ts
tests/
cli-contract.test.ts
cli-flag-validation.test.ts
detail-jsonld.test.ts
helpers.ts
request-timeout.test.ts
retry-backoff.test.ts
rss-fetch.test.ts
rss-parsing.test.ts
tsconfig.json
SKILL.md
url-reference.md
jobdanmark-search/
cli/
package.json
README.md
src/
cli.ts
commands/
autocomplete.ts
categories.ts
detail.ts
locations.ts
search.ts
helpers.ts
tests/
cli-contract.test.ts
cli-flag-validation.test.ts
detail-jsonld.test.ts
detail-parsing.test.ts
helpers.ts
request-timeout.test.ts
retry-backoff.test.ts
user-agent.test.ts
tsconfig.json
SKILL.md
jobindex-search/
cli/
package.json
README.md
src/
cli.ts
commands/
detail.ts
search.ts
helpers.ts
tests/
cli-contract.test.ts
cli-flag-validation.test.ts
helpers.ts
parsing.test.ts
request-timeout.test.ts
retry-backoff.test.ts
tsconfig.json
SKILL.md
url-reference.md
jobnet-search/
cli/
package.json
README.md
src/
cli.ts
commands/
detail.ts
occupations.ts
search.ts
suggestions.ts
helpers.ts
tests/
cli-contract.test.ts
cli-flag-validation.test.ts
detail-formatting.test.ts
helpers.ts
request-timeout.test.ts
retry-backoff.test.ts
search-normalization.test.ts
user-agent.test.ts
tsconfig.json
SKILL.md
linkedin-search/
cli/
package.json
README.md
src/
cli.ts
commands/
detail.ts
search.ts
helpers.ts
tests/
cli-flag-validation.test.ts
helpers.ts
parsing.test.ts
request-timeout.test.ts
retry-backoff.test.ts
search.test.ts
tsconfig.json
SKILL.md
url-reference.md
.claude/
agents/
gemini-research-expert.md
commands/
add-portal.md
add-template.md
apply.md
expand.md
gmail-sync.md
html-report.md
interview.md
notion-sync.md
outcome.md
rank.md
reset.md
setup.md
settings.json
skills/
job-application-assistant/
01-candidate-profile.md
02-behavioral-profile.md
03-writing-style.md
04-job-evaluation.md
05-cv-templates.md
06-cover-letter-templates.md
07-interview-prep.md
08-application-forms.md
09-web-research.md
SKILL.md
job-scraper/
search-queries.md
SKILL.md
upskill/
SKILL.md
.github/
FUNDING.yml
PULL_REQUEST_TEMPLATE.md
workflows/
ci.yml
.gitignore
AGENTS.md
assets/
mascot/
pip_flight_loop.gif
CHANGELOG.md
CLAUDE.md
CONTRIBUTING.md
cover_letters/
cover_example.tex
cover.cls
OpenFonts/
fonts/
lato/
Lato-Bla.ttf
Lato-BlaIta.ttf
Lato-Bol.ttf
Lato-BolIta.ttf
Lato-Hai.ttf
Lato-HaiIta.ttf
Lato-Lig.ttf
Lato-LigIta.ttf
Lato-Reg.ttf
Lato-RegIta.ttf
raleway/
Raleway-Bold.otf
Raleway-ExtraBold.otf
Raleway-ExtraLight.otf
Raleway-Heavy.otf
Raleway-Light.otf
Raleway-Medium.otf
Raleway-Regular.otf
Raleway-SemiBold.otf
Raleway-Thin.otf
cv/
main_example.tex
documents/
applications/
.gitkeep
cv/
.gitkeep
diplomas/
.gitkeep
linkedin/
.gitkeep
postings/
.gitkeep
README.md
references/
.gitkeep
job_scraper/
.gitkeep
LICENSE
README.md
salary_lookup.py
SECURITY.md
SETUP.md
templates/
README.md
tests/
__init__.py
test_apply_records_application.py
test_check_upstream_updates.py
test_convert_salary_excel.py
test_html_report_command.py
test_lint_skills.py
test_notion_sync_command.py
test_outcome_followup.py
test_rank_command.py
test_readme_assets.py
test_robots_check.py
test_salary_lookup.py
test_security_guards.py
test_tracker_status_vocab.py
test_upskill_skill.py
test_verify_pdf.py
tools/
check_framework_version.py
check_upstream_updates.py
convert_salary_excel.py
lint_skills.py
README_SALARY_TOOL.md
robots_check.py
security_guards.py
verify_pdf.py
upskill/
.gitkeepFAQ
ai-job-search is a Claude Code plugin with 3 hand-picked skills for productivity work, indexed on Flowy. Install it with the command on its page. It includes job-application-assistant, job-scraper, upskill. Its skills do not fire on their own yet. Request auto-invocation to have Flowy route them as you prompt. Free and open source.