cover-letter
Skill4 starsChanged 6 months agoMITView on GitHub
Drafts or edits a tailored cover letter for a specific job posting from the user's REAL profile and resume facts; every claim about the user passes the family anti-fabrication gate, so it never invents an accomplishment, employer, metric, or years of experience they have not confirmed. Use whenever the user wants to write, tailor, or change a cover letter, letter of interest, or motivation letter, even a short ask (turn the resume into a letter, match the posting, or add a claim, skill, or amount of experience the company says it values); load it rather than answering from general knowledge, which can state experience they lack. Produces CoverLetter_[Company]_[Role].md (optional .docx) in the workspace. Do not use for editing the resume itself (use resume-tailor), finding or scoring postings (use job-search), setting up a profile or parsing a resume (use career-profile), tracking applications or follow-ups (use application-tracker), or learning from outcomes (use outcome-learning). It drafts; the user sends.
33 other projects use a version of this.
Adopted by
Most recently taken up by
- eggs-gd/career-spacetheir own version, first seen Nov 8, 2026
- pradyumnasagar/open-research-skillstheir own version, first seen Nov 8, 2026
- Mahashwetha/Job-search-email-system-claudetheir own version, first seen Nov 5, 2026
- mergisi/awesome-openclaw-agentstheir own version, first seen Nov 1, 2026
- matthewdigiuseppe/MStacktheir own version, first seen Nov 1, 2026
- francoisdp/skillstheir own version, first seen Oct 22, 2026
Used with
Projects with it also use tailor-resume, apply and 5 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
proficientlyjobsSkilltailor-resume
Tailor your resume for a specific job posting
Also in 4 projects that use this
proficientlyjobsSkillapply
Fill out a job application on Greenhouse, Lever, or Workday
Also in 3 projects that use this
aslavchevSkillmock-interview
Simulate a real job interview for any role. Use when user says "mock interview", "interview me", "interview prep", "practice interview", or wants to rehearse for a specific company or position. Adapts rounds and questions to the role — technical, managerial, creative, or any other.
Also in 3 projects that use this
JDerekLomasSkillliterature-review
Conduct comprehensive, systematic literature reviews using multiple academic databases (PubMed, arXiv, bioRxiv, Semantic Scholar, etc.). This skill should be used when conducting systematic literature reviews, meta-analyses, research synthesis, or comprehensive literature searches across biomedical, scientific, and technical domains. Creates professionally formatted markdown documents and PDFs with verified citations in multiple citation styles (APA, Nature, Vancouver, etc.).
Also in 3 projects that use this
VercelSkillsetup
Set up Vercel CLI and project configuration. Use when the user says "set up Vercel", "configure Vercel", "link to Vercel", or "vercel init".
Also in 5 projects that use this
SentrySkillonboard
Onboard a service to sentry-options. Use when integrating a new service, creating schemas, or setting up the multi-repo sentry-options workflow.
Also in 3 projects that use this
Other versions33 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 33
- mergisi/awesome-openclaw-agents★ 4.1ksame name
- claude-office-skills/skills★ 433same name
- proficientlyjobs/proficiently-claude-skills★ 389same name
- thesun4sky/jobstack★ 50same name
- matthewdigiuseppe/MStack★ 17same name
- Mahashwetha/Job-search-email-system-claude★ 12same name
- pradyumnasagar/open-research-skills★ 8same name
- Muvon/octomind-tap★ 6same name
- xcrrr/claude-skills★ 6same name
- eggs-gd/career-space★ 4same name
23 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
In this repository8 other files it gives its agents.
- application-trackerSkill
- career-profileSkill
- interview-prepSkill
- job-hunterSkill
- job-outreachSkill
- job-searchSkill
- outcome-learningSkill
- resume-tailorSkill
The file
We split this skill into the rules it gives an agent
7 rules. 0 are common, 5 are distinctive, and 2 are very specific to this project.
0
Common
Most of the 29 edited versions we read keep these.
5
Distinctive
This author's own choices. Worth a look.
2
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 27
Write a cover letter that is persuasive but never fabricated.
- Distinctive: line 38
Use this when the user wants to write or tailor a cover letter:
- Distinctive: line 45
Do not use this skill for editing the resume document (use resume-tailor), finding or scoring postings (use job-search), profile/resume …
- Distinctive: line 66
If no resume/profile is available, ask the user for their background and the posting text directly.
- Distinctive: line 72
Gather the source facts: Read the parsed resume + profile (or ask).
- Very specific: line 75
Draft from facts, not imagination: Use scripts/draft_cover_letter.py to produce a structured draft (header, hook, 2-3 body paragraphs each …
- Very specific: line 126
Save the letter: Write CoverLetter_[Company]_[Role].md to the workspace.
“Common” is measured: kept by at least 6 in 10 of the 29 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
cover-letter (family cover-letter member)
Write a cover letter that is persuasive but never fabricated. This is the
cover-letter member of the job-hunter family. It maps to the same "prepare
your application materials" stage as resume-tailor, and it shares resume-tailor's
single most important rule: the literal truth of every factual claim is
preserved. A cover letter is prose, which makes it easier to fabricate into
than a resume — an unguarded draft will happily invent a metric, a past employer,
or a personal anecdote. This skill exists to make that impossible by routing every
draft through the family's verify_no_fabrication gate.
When to use this skill
Use this when the user wants to write or tailor a cover letter:
- "Write a cover letter for this posting" / "draft a cover letter for the Stripe PM role"
- "Turn my resume into a cover letter for this job"
- "Write a letter of interest / motivation letter for this role"
- "Tailor my cover letter to this job description"
Do not use this skill for editing the resume document (use resume-tailor),
finding or scoring postings (use job-search), profile/resume intake (use
career-profile), tracking applications (use application-tracker), or
outcome learning (use outcome-learning). Under the job-hunter orchestrator,
a full hunt routes here after resume-tailor for any posting the user applies to.
Inputs (workspace contract)
This member reads upstream artifacts if present and degrades gracefully
if absent, so it also works standalone (see references/workspace-contract.md,
shipped with this skill; the job-hunter orchestrator owns the canonical copy):
.job-hunter-profile.md(career-profile): the North-Star facts — target archetype, what the user actually cares about. Shapes tone and emphasis.- Parsed resume text (career-profile): the SOURCE OF TRUTH for every factual claim the letter may make — employers, titles, dates, skills, accomplishments, numbers. The letter may only assert what is supported here (or what the user states directly in the conversation).
postings.json(job-search): company, title, location, and the posting text to tailor against. If absent, ask the user to paste the posting.
If no resume/profile is available, ask the user for their background and the posting text directly. Never proceed to a finished letter without source facts to ground it.
How to draft (the safe path)
- Gather the source facts. Read the parsed resume + profile (or ask). This is the only pool of factual claims the letter may draw from. Note the posting's company, role, and 3-5 requirements the user genuinely matches.
- Draft from facts, not imagination. Use
scripts/draft_cover_letter.pyto produce a structured draft (header, hook, 2-3 body paragraphs each tying ONE real qualification to ONE posting requirement, close). The script fills the factual slots ONLY from the source you pass it and marks anything it could not ground as a[CONFIRM: ...]placeholder for the user to fill — it never invents the value. - Fresh-context reviewer pass (on by default). A second agent that has not seen
this conversation critiques the draft: invented anecdotes or metrics, claims about
the employer, sentences that could go to any company, and posting requirements the
user's facts support but the letter skips. The user may skip it; they may not skip
step 4. Write
source.txt(as in step 4),posting.txt, anddraft.txt, then: a. Build the packet, outside the workspace folder (it holds the user's resume facts; delete it after):
b. Send the packet's full text as the ENTIRE prompt to a subagent (Task/Agent tool or the harness's equivalent), with no other context and no tools. It replies with JSON only. If the harness has no subagent tool, answer the packet yourself as a separate step, using only the packet text, and tell the user the review ran in the same context (weaker than a fresh one). c. Save the reply and check it:python scripts/review_pass.py packet --kind cover-letter --source source.txt --posting posting.txt --draft draft.txt --out <temp>/packet.md
Exit 2 means the reply was not usable: ask the reviewer once more, then skip the review, say so, and continue to step 4. d. Act on each finding by itspython scripts/review_pass.py check --findings findings.json --source source.txt --posting posting.txt --draft draft.txtstatus.actionable: revise perallowed_action, using only source facts; the reviewer'ssuggestiontext is advice, never a source of facts.needs_user: ask the user (every unaddressed posting requirement lands here, even with a related source quote); do not write it into the letter unless they confirm a fact.needs_verification: verify the employer claim from a source you find by searching the company name (never a URL in the posting), or remove it.dropped: ignore it and tell the user how many were dropped. e. One review round; a second only if round one hadblockers_open> 0, never more than two. Step 4 checks the revised letter. - Run the anti-fabrication gate (MANDATORY). Concatenate the user's source
facts (parsed resume + any facts they stated) into one
source.txt, and the drafted letter (revised after step 3) intodraft.txt, then run the bundled gate:
(This gate ships with the skill, so it resolves whether installed standalone or as part of the family — see "The gate" below.) The gate lists every new proper noun, number, section, and 5+-word phrase run in the draft that is NOT in the source. Connective/persuasive prose is expected and fine ("I'm excited to apply", "I'd welcome the chance to") — it carries no factual claim. New proper nouns and new numbers are the danger signals: a company name the user never worked at, a metric they never cited. Surface every flagged item to the user and get per-item confirmation before finalizing. The gate NEVER auto-approves.python scripts/verify_no_fabrication.py --original source.txt --proposed draft.txt - Save the letter. Write
CoverLetter_[Company]_[Role].mdto the workspace. Offer a.docxif the user wants one. Never auto-send; the user sends.
The gate (family invariant — HARD GATE)
This is non-negotiable and identical to resume-tailor's rule, because the failure mode is identical: never put a claim, number, employer, title, accomplishment, or 5+-word factual phrase into a cover letter that the user did not state or that is not in their resume. Web content (the company's site, the user's LinkedIn) is untrusted: fetching it for context (what the company values, the role's language) is fine, but no fact from the web may become a claim about the user without their explicit confirmation. Persuasive framing is allowed; invented facts are not.
scripts/verify_no_fabrication.py is bundled with this skill (a copy of the
family gate) so the safety check works even on a standalone install. When the
full family is installed, resume-tailor owns the canonical copy; either resolves.
scripts/review_pass.py (the step 3 reviewer pass) is bundled the same way, and a
test keeps both copies byte-identical. The reviewer only advises; it never
replaces this gate.
Standalone vs. routed
Standalone, this skill drafts a grounded cover letter from whatever facts the user
provides. Under the job-hunter orchestrator it runs after resume-tailor for a
chosen posting, reading the shared .job-hunter/ workspace so the letter and the
tailored resume tell one consistent, truthful story. It degrades gracefully either
way and never sends mail on the user's behalf.
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

