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.
A reusable job application workflow for Codex and other AI agents.
$ npx skills add DanielPan12/JobHuntBot --skill jobhuntbot -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install DanielPan12/JobHuntBot jobhuntbot --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
Claude Code skills documentation · loads skills from .claude/skills/
Install the "jobhuntbot" agent skill from https://github.com/DanielPan12/JobHuntBot/tree/main into .claude/skills/jobhuntbot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobhuntbot", 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.
$ npx skills add DanielPan12/JobHuntBot --skill jobhuntbot -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install DanielPan12/JobHuntBot jobhuntbot --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "jobhuntbot" agent skill from https://github.com/DanielPan12/JobHuntBot/tree/main into .agents/skills/jobhuntbot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobhuntbot", 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 DanielPan12/JobHuntBot --skill jobhuntbot -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install DanielPan12/JobHuntBot jobhuntbot --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "jobhuntbot" agent skill from https://github.com/DanielPan12/JobHuntBot/tree/main into .cursor/skills/jobhuntbot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobhuntbot", 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.
$ npx skills add DanielPan12/JobHuntBot --skill jobhuntbot -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install DanielPan12/JobHuntBot jobhuntbot --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "jobhuntbot" agent skill from https://github.com/DanielPan12/JobHuntBot/tree/main into .gemini/skills/jobhuntbot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobhuntbot", 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 DanielPan12/JobHuntBot jobhuntbotInstalls 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 DanielPan12/JobHuntBot --skill jobhuntbot -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "jobhuntbot" agent skill from https://github.com/DanielPan12/JobHuntBot/tree/main into .github/skills/jobhuntbot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobhuntbot", 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 DanielPan12/JobHuntBot --skill jobhuntbot -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install DanielPan12/JobHuntBot jobhuntbot --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "jobhuntbot" agent skill from https://github.com/DanielPan12/JobHuntBot/tree/main into .opencode/skills/jobhuntbot/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "jobhuntbot", 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.
jobhuntbotA reusable job application workflow for Codex and other AI agents.
Jobhuntbot is an agent skill from DanielPan12/JobHuntBot. A reusable job application workflow for Codex and other AI agents. Use when a user wants to set up or run an AI-assisted job search system: collecting a candidate profile, creating an application dashboard, defining screening and resume-routing rules, finding and ranking job leads, applying to jobs within explicit safety boundaries, recording outcomes, triaging blockers, or iterating a job application workflow.
Its SKILL.md is about 3.1k tokens, which your agent loads only when the skill is triggered. The skill folder holds 34 other files, including reference files (for example `README.md`, `dashboard/server.js` and `dashboard/start-dashboard.sh`).
It sits in Business, Finance & HR, covering Job search and resumes. The repository describes itself as: Agent-led job application workflow with a local progress-tracking dashboard — works with any AI coding agent that can read files and follow instructions.AI Agent… The licence is MIT.
10 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 0ccaa11. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Ships script files (JavaScript, Batch and Shell, from the files we listed), which the agent can run.
From 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.
Jobhuntbot loads about 3.1k tokens when it runs, and up to ~10k if it reads all its reference files. Until then it costs about 106 tokens; SKILL.md has 1,683 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 DanielPan12/JobHuntBot at commit 0ccaa11, republished under its MIT licence (© DanielPan12). 1,683 words, ~3,080 tokens.
.claude/skills/jobhuntbot/SKILL.md (or your agent's skills folder). This skill also uses 32 other files; get the full folder from GitHub.JobHuntBot is a job application operating workflow for AI agents. It helps users turn job searching into a repeatable system: profile, dashboard, screening rules, resume strategy, application execution, blocker triage, and follow-up.
Optimize for truthful, traceable, interview-generating applications, not blind volume.
Treat setup as an agent-led onboarding flow, not a user homework packet. Ask only for the minimum information needed to start safely, create drafts/templates for the user, then iterate after the first trial run.
Before searching or applying, make sure the user has:
If any source is missing, initialize it first. Do not guess identity, legal, work authorization, compensation, current employment, sponsorship, relocation, or other high-impact facts.
Read references/setup-workflow.md when:
Use the templates in templates/ to create user-owned files:
candidate_profile.template.jsonapplication_rules.template.mdresume_routing.template.mdanswer_bank.template.mdexperience_bank.template.mddashboard-template/*.csvWhen the user names a specific company (or you're evaluating one you found), work it one company at a time:
job_pool. If not, add one (role family, target city, etc.) before doing anything else — every company you touch should be traceable in the dashboard.job_pool immediately (job_url, next_action, notes, and a status update if warranted) — don't hold research in your head until the end of the session.job_pool for tracking a specific recurring question (e.g. whether a hiring cycle is confirmed open), set it explicitly every time you finish checking a row rather than leaving the dashboard to infer it from free-text notes — notes-based regex guessing quietly rots into false positives once notes get detailed. A stale structured column means the dashboard won't reflect what you just learned, even after a refresh.Prioritize jobs by freshness, fit, feasibility, and conversion likelihood. Default to fresh jobs from the last 24 hours, then 48 hours if needed.
Skip or defer roles that violate the user's rules, are clearly overleveled, are closed or duplicate, require unsupported work authorization, need missing materials, or involve long account-heavy flows with weak fit.
Once a company's opening is confirmed, don't jump straight to filling out a form. Find the specific postings that match the user's target role families (search the portal by keyword — job categories on a careers site often don't literally say "supply chain" even when a matching role exists) and present a short list: title, one-line fit summary, level/eligibility, location, and whether it's full-time campus recruiting (not an internship or a stale prior-cycle posting).
If a company limits applicants to one or two total submissions in the cycle, say so before the user picks — it changes the decision. Let the user pick which posting to pursue; only proceed on your own initiative if the user has already named the exact posting.
Before touching the application, decide which of the candidate's experiences to actually feature for this specific posting — this is a separate decision from which resume file to use.
experience_bank.md (created from templates/experience_bank.template.md during setup) for the target role family's candidate pool — it deliberately keeps a wide, overlapping pool per role family (aim for 3-5 internships + 3+ projects rated 强/中, fewer only where the candidate's real background is genuinely thin in that direction) rather than one narrow "owned" set, since closely related role families usually share supporting evidence.强 matches, but a 中 match that happens to hit something the JD specifically calls out can outrank a 强 match that doesn't. If the JD emphasizes something the whole pool underrepresents, pull in a different experience from the full inventory instead of forcing a weak fit.application_log's notes — this lets a later application to a similar role or company reuse the same reasoning instead of re-deriving it.Use the user's chosen strategy:
Default to Volume mode unless the user explicitly asks for Precision. Individual high-fit roles can be promoted from Volume to Precision.
Never fabricate experience, credentials, degrees, employers, dates, work authorization, or portfolio artifacts.
Read references/application-playbook.md before operating browser-based applications, LinkedIn Easy Apply, Simplify, Greenhouse, Lever, Ashby, Workday, or other ATS flows.
Read the user's application_rules.md for current execution preferences. Default to the playbook's Batch Filling & Consolidated Verification: prepare confirmed answers once, fill the largest predictable group of fields in one tool call, then inspect the saved module together and repair only discrepancies. Group adjacent simple modules when the page and controls remain predictable; avoid a separate model turn or full-page read after each field.
On a new form, prefer uploading the chosen resume first and auditing the parsed entries together. Avoid re-parsing an already repaired form unless necessary, since parsing can overwrite corrections. Fill whatever you confidently can from candidate_profile.json, resume_routing.md, experience_bank.md (for relevant-experience/self-evaluation fields, using the combo picked in step 5), and answer_bank.md. Collect questions together for anything on the never_guess list, anything requiring a subjective call, or anything not backed by the résumé or profile; leave those fields pending while filling independent confirmed fields. Verify saved-account bio text before retaining it in a real submission.
Stop or hand off for CAPTCHA, Cloudflare, anti-bot checks, login or 2FA, unclear legal/identity questions, missing files, payment prompts, permission prompts, or anything that would require bypassing a site control.
Before the final submit click, show the user a summary (company, role, resume version, the internship/project experiences selected in step 5, key answers, compensation figures). Do not click final submit until the user explicitly says to — a preview screen is not consent. After submitting, look for real confirmation evidence (success text, a thank-you/confirmation URL, a candidate ID) before recording anything as Submitted.
Every job lead or attempt must end in one of these states:
Submitted: explicit confirmation was seen.Skipped: not worth applying, with reason.Blocked: automation could not proceed, with blocker and next step.Needs user: user must provide a missing high-impact fact, complete CAPTCHA/login/upload, answer a sensitive question, or make a required judgment before the agent can decide.Pending: selected for later action because it appears worth reviewing or applying after known prerequisites are satisfied.Count only confirmed submissions. Saved jobs, trackers, autofill badges, or "quick apply" labels do not count.
For a first trial or demo run, default to lead finding only: find, screen, classify, and update the dashboard without opening real application flows or submitting anything. In lead-finding-only runs, update job_pool, daily_dashboard, blocker_queue, and automation_rules as needed; leave application_log empty because no application attempt occurred.
For a real submission, update the same dashboard files (job_pool status, application_log with the resume version/evidence/answers used, follow_up if a next step is already known, daily_dashboard summary) and the candidate's own profile: if filling the form surfaced a fact that isn't already in candidate_profile.json (a new internship detail, an updated exam/grade result, a preference the user stated on the spot, anything), write it back into the profile before moving on — don't let it live only in the one application you just filed. Same discipline as everywhere else in this skill: record what you've confirmed, don't invent what you haven't.
When recording a submission in application_log, also capture the full job description text (responsibilities and requirements) from the official posting into the job_description field, copied verbatim from the source — not summarized or paraphrased. This is what makes later interview prep possible without having to re-find a posting that may since have been taken down.
After each run, summarize blockers and convert repeated issues into rules. JobHuntBot should improve through use: address matching, dropdown handling, resume upload checks, account/session checks, and ATS-specific lessons belong in the dashboard and rules.
Read references/safety-and-boundaries.md when the user asks about automation limits, CAPTCHA, email verification, account login, privacy, public sharing, or what should not be included in a repo.
Do not publish or copy private resumes, phone numbers, emails, addresses, immigration documents, application history, browser sessions, cookies, OTPs, or user-specific secrets into a public JobHuntBot package.
© DanielPan12, 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 32 other files (references) in the repository root of DanielPan12/JobHuntBot.
Open the folder on GitHubat commit 0ccaa11
Jobhuntbot 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 |
|---|---|---|---|---|---|---|
| Jobhuntbot this skillDanielPan12/JobHuntBot | 855 | — | ~3.1k | Automated safety check: Pass | MIT | |
| Reactive Resume Builderreactive-resume/reactive-resume | 44k | — | ~1.5k | Automated safety check: Pass | MIT | |
| Career-Ops Job Search Centercareer-ops-hq/career-ops | 74k | — | ~3.6k | Automated safety check: Pass | MIT | |
| freehire Tech Job SearchMadsLorentzen/ai-job-search | 45k | — | ~2.7k | Automated safety check: Pass | MIT | |
| LinkedIn Job SearchMadsLorentzen/ai-job-search | 45k | — | ~1.2k | Automated safety check: Pass | MIT | |
| Internship Project Preparation ToolLiuMengxuan04/shushu-internship-tool | 2.1k | — | ~2.3k | Automated safety check: Pass | Custom licence |
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.
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.
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
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.
career-ops-hq/career-ops
How to scan a job source through an Apify actor as a keyed provider.
Categories
A reusable job application workflow for Codex and other AI agents. Jobhuntbot is an agent skill from DanielPan12/JobHuntBot. A reusable job application workflow for Codex and other AI agents.
Jobhuntbot fits situations like: A user wants to set up; run an AI-assisted job search system: collecting a candidate profile; creating an application dashboard; defining screening and resume-routing rules.
Run `npx skills add DanielPan12/JobHuntBot --skill jobhuntbot -a claude-code`. Or copy the skill folder (the DanielPan12/JobHuntBot repository) into .claude/skills/jobhuntbot in your project. Claude Code loads it when a task matches its description.
Run `npx skills add DanielPan12/JobHuntBot --skill jobhuntbot -a codex`. Or copy the skill folder (the DanielPan12/JobHuntBot repository) into .agents/skills/jobhuntbot 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 DanielPan12/JobHuntBot --skill jobhuntbot -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/jobhuntbot, .gemini/skills/jobhuntbot, .github/skills/jobhuntbot and .opencode/skills/jobhuntbot in your project.
Going by SKILL.md and its folder, Jobhuntbot needs JavaScript, Windows cmd and a shell for the scripts in its folder. Our summary lists: Node.js; A Bash shell.
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.
Jobhuntbot is published under the MIT licence (from the LICENSE file in the skill folder). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.1k tokens (SKILL.md is roughly 12k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.2k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Jobhuntbot: Reactive Resume Builder (reactive-resume/reactive-resume, 44k stars), Career-Ops Job Search Center (career-ops-hq/career-ops, 74k stars), freehire Tech Job Search (MadsLorentzen/ai-job-search, 45k stars) and LinkedIn Job Search (MadsLorentzen/ai-job-search, 45k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
DanielPan12 (a GitHub user) maintains it in DanielPan12/JobHuntBot, which has 855 GitHub stars. The repository was last updated on September 17, 2026.
Source: DanielPan12/JobHuntBot on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.