Getting it into your agent
This one installs as part of its plugin. Adding the marketplace and installing the plugin brings it with everything else the plugin ships.
/plugin marketplace add extrasmall0/dear-hiring-manager/plugin install dear-hiring-managerWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/extrasmall0/dear-hiring-manager/onboarding)<a href="https://agentmods.dev/skills/extrasmall0/dear-hiring-manager/onboarding"><img src="https://agentmods.dev/badge/skills/extrasmall0/dear-hiring-manager/onboarding/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/extrasmall0/dear-hiring-manager/onboarding"><img src="https://agentmods.dev/badge/skills/extrasmall0/dear-hiring-manager/onboarding.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00073 | $0.01492 |
| Opus 5 | $0.00036 | $0.00746 |
| Sonnet 5 | $0.00015 | $0.00298 |
| Haiku 4.5 | $0.00007 | $0.00149 |
Grade A, and why
onboarding scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 9d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 81 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Onboarding
Goal: produce a complete, human-readable ~/.dear-hiring-manager/profile.md and register a resume,
so later applications fill themselves. Keep it fast — parse what you can, only ask for gaps.
Procedure
-
Ensure the data dir exists. Create
~/.dear-hiring-manager/if missing. -
Check for an existing profile.
- If
~/.dear-hiring-manager/profile.mdexists: show a short summary, ask whether to edit a section or view. Only touch what they name. Do not restart the interview. - If not: copy
${CLAUDE_PLUGIN_ROOT}/templates/profile.template.mdto~/.dear-hiring-manager/profile.mdand continue.
- If
-
Register + parse the resume (do this first — it prefills most fields).
- Ask for the resume path. Copy it to
~/.dear-hiring-manager/resume.<ext>. - Read it. Prefill name, email/phone, location, education, and an experience summary into the profile. Then only ask the user to confirm/correct those, not retype them. Do NOT prefill LinkedIn/GitHub/portfolio URLs from the resume — ask for those directly (see the interview step).
- Ask for the resume path. Copy it to
-
Interview the gaps via the option-picker. For every field whose answer is a discrete choice, ASK WITH THE
AskUserQuestionOPTION-PICKER (not prose) — present sensible options plus "prefer not to answer" where relevant; the user clicks (or types via "Other"). Batch up to 4 questions per picker call to minimize rounds. Use free-text prompts only for genuinely open fields (name, contact, links, an exact salary number, references). Fill every template field.- Identity + email/phone/name — prefill from the resume, then confirm.
- Links (LinkedIn, GitHub, portfolio/website): ALWAYS ASK the user directly — do NOT read them from the resume, and NEVER guess a URL from the name. In a PDF these are hyperlinks whose real target URL usually can't be recovered by text parsing, so any parsed or name-guessed value is likely wrong.
- Location & relocation, remote/onsite — options (relocate: Yes/No; preference: Remote / Hybrid / Onsite / Open). Plus home address (street, city, state, ZIP) — free text; many forms require the full address, not just the city.
- Work authorization — options: authorized to work there (Yes/No); require sponsorship now or in future (Yes / No / Not now, yes later); + country and visa status. On almost every form — get exact.
- Compensation — options for salary (a few ranges + "market/negotiable", Other for an exact number) and notice period / earliest start (2 weeks / 1 month / immediately / flexible).
- Job-search targets — desired job title(s) (free text), target experience level (options:
Intern / Entry / Mid / Senior / Staff / Principal / Director), years of experience (options:
0–2 / 3–5 / 5–8 / 8–12 / 12+, or an exact number — forms ask this constantly), and minimum fit
score to apply (options 40 / 50 / 60 / 70, default 50; the hard filter apply scores each job
against). Title + level also feed
apify-collectas the default search. - Standard screening (legal attestations) — template leaves these blank. Offer the safe defaults (non-compete: No, felony: No, illegal activity: No, accommodation: No, previously employed here: No, 18+: Yes) as options and have the user confirm each or override. Write a value only after explicit confirmation. Skipped → stays blank (unconfirmed); apply flags it, never auto-attests.
- EEO / demographics (gender, race/ethnicity, veteran, disability) — options, each including "prefer not to answer". State clearly these are voluntary. Record exactly what they pick.
- Pronouns — options (He/him / She/her / They/them / Prefer not to say). References — free text or "available on request".
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 9d ago First seen · 81 lines · 73 tokens per session scan A 3ce3b32253ae
onboarding is a skill published in the GitHub repository extrasmall0/dear-hiring-manager (108 stars, last pushed 1mo ago), licensed MIT. It adds 73 tokens to every session and 1,492 once invoked, about $0.0004 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
apply
Apply to a single job (URL or pasted page) with fit review, or score and apply the job links pasted into an apply campaign when no argument is given.
scan-inbox
Classify unscanned mailbox messages, fuzzy-match each to an existing application, and write the proposal back. The user approves in /inbox.
resume-campaign
Resume a paused JobPilot campaign by id. Re-flips the campaign to inprogress and replays the apply loop on any remaining approved jobs without re-asking for fit confirmation.
job-triage
Search and classify job-related emails in Outlook Web — rejections / interview invites / action required / confirmations / recruiter outreach / other. Proactively invoke this skill (do NOT answer conversationally) when the user asks "check my inbox", "check Outlook", "any replies", "triage my inbox", "any rejections"…
job-apply
Apply to a job by URL — auto-routes to the right ATS filler (LinkedIn Easy Apply / Greenhouse / Lever / Jobvite / Ashby), dry-run by default, renders an emoji-tagged result table. Proactively invoke this skill (do NOT answer conversationally) when the user pastes a LinkedIn/Greenhouse/Lever/Jobvite/Ashby job URL (with…
job-status
Batch-update application statuses (Rejected / Interview / Offer / Withdrawn / …) in both the local CSV and the Google Sheet, with a before/after diff and confirmation gate. Proactively invoke this skill (do NOT answer conversationally) when the user has one or more status updates to apply — says "mark as rejected"…