with one click
cover-letter
// Write a tailored one-page cover letter from a job description and the user's resume, humanized for natural tone.
// Write a tailored one-page cover letter from a job description and the user's resume, humanized for natural tone.
Apply to a single job (URL or pasted page) with fit review, or drain the pending queue when no argument is given.
Search a job board and autonomously apply to matching jobs one at a time, until paused, exhausted, or the max-applications cap is hit.
Migrate a React @tanstack/react-form codebase from the prop-drilled `useForm` + erased-form-type pattern to the official `createFormHook` composition API (`useAppForm` / `withForm` / `field.X`). Use when a project threads a `form` object (often cast to an `any`-erased type like `ReactFormExtendedApi<any,...>`) through field-wrapper components that take `form`+`name` props, and you want typed field names/values, no casts, and reusable bound field components. Triggers: "migrate forms to createFormHook", "adopt useAppForm/withForm", "remove AnyReactForm cast", "type-safe tanstack form fields".
Re-score a run's skipped jobs and promote the eligible ones to `approved` for later applying. Recovers jobs wrongly dropped for location, a sparse JD, 1099, or seniority. Does not apply.
Resume an interrupted or paused JobPilot run by id. Re-flips the run to in_progress and replays the apply loop on any remaining approved jobs without re-asking for fit confirmation.
Search a chosen job board via Playwright, rank results by fit against the user's resume, and save them to the run so the user can review.
| name | cover-letter |
| description | Write a tailored one-page cover letter from a job description and the user's resume, humanized for natural tone. |
| argument-hint | <job_description> |
Write a tailored, one-page cover letter connecting the candidate's resume to a specific role.
Follow plugin/skills/shared/setup.md to load profile and resume. Then Read the resume file at data.primaryResumeSourceAbsolutePath for full context (identity, education, experience, skills, projects, research, awards).
From the argument, identify: company + what they do, role title and level, key responsibilities, required/preferred qualifications, tech stack and domain, culture cues.
From the resume, pick the most relevant: 2–3 work experiences, 2–3 projects, research (if AI/ML/CV), education (if relevant to level).
Header (values from data.profile.*):
[Full Name]
[City, State] | [Phone] | [Email]
[LinkedIn] | [GitHub] | [Website]
Opening (2–3 sentences): state the role, lead with strongest specific qualifier, show you understand what the team needs. No "I'm excited to apply" / "I'm writing to express my interest".
Body 1 — relevant experience (3–5 sentences): connect your closest work to their needs, include specific metrics and outcomes, name projects and results (not just technologies).
Body 2 — technical depth (3–5 sentences): deeper alignment with their stack/domain, reference specific projects or research. For AI/ML roles: reference publications.
Body 3 — why this company (2–3 sentences): what specifically draws you here (genuine, not generic), how your background uniquely fits, what you'd bring beyond the requirements.
Closing (2–3 sentences): interest in discussing further, portfolio/GitHub link if relevant, brief thanks.
Sign-off:
Best regards,
[Full Name]
Invoke the humanizer skill on the full text. The final output must read as written by a real person.
Plain text with header and sign-off, ready to paste or convert to PDF.