AGENT SKILL

write-outreach

Write a short, profile-grounded cold outreach message to a recruiter, hiring manager, or potential referrer — LinkedIn DM or email — with one clear CTA and no flattery.

License 许可
MIT
最近更新
2026-06-09
Stars
★ 7
Forks
1

01 前言 Front Matter

name
write-outreach
description
Write a short, profile-grounded cold outreach message to a recruiter, hiring manager, or potential referrer — LinkedIn DM or email — with one clear CTA and no flattery.
when_to_use
Use when the user wants to reach out cold for a referral, info chat, recruiter intro, or post-event/post-interview follow-up — targeted at a specific person at a specific company.
allowed-tools
Read, Write
user-invocable
true

03 SKILL.md 正文

write-outreach

Compose a short outreach message that earns a reply. Hard rules: see ../_shared/RULES.md — non-negotiable. Use the Communication verbs in ../tailor-resume/reference/action-verbs.md.

Inputs

  1. Profile: read profile/master-profile.md (esp. Notes / voice, target.tracks, and the context: block for direction only — never echo).
  2. Recipient: { name, role, company }. Optional: known mutual, a recent post/work they did, prior touch.
  3. Platform: linkedin (≤ 120 words, no subject) or email (≤ 180 words, with subject).
  4. Goal: intro (be known) · referral (ask for an internal referral) · info (informational chat) · follow-up (post-application / post-interview / post-event).

If recipient / platform / goal is missing, ask once, batched.

Method

  1. Region note. Read the target region pack — outreach norms differ slightly (US: direct; IN: referrals matter more, lead with mutuals/track when possible).

  2. Pick the hook. One verifiable, profile-grounded fact connecting candidate → company / role / recipient. Examples that work: same OSS project, alum overlap, identifiable recent work overlap, shared track. Examples that don't: generic "I admire your mission", company-name flattery in the opener.

  3. One CTA only. Schedule 15 min · share a referral · answer a specific question · introduce a third party. No multi-CTA messages — they get ignored.

  4. Draft.

    • LinkedIn — ≤ 120 words. No "Dear", no "Hope this finds you well." Open with the hook in ≤ 1 sentence. One CTA. Sign with first name.
    • Email — ≤ 180 words. Subject = 4–8 specific words ("Quick question on Mercury API roadmap", not "Quick question"). Body = 2 short paragraphs (hook+credential → CTA). Sign with full name + 1-line current credential.
  5. Self-check against the anti-patterns and rubric before output.

Output

  • Console: the message (and subject if email).
  • Write outreach/<company-slug>-<role-slug>-<platform>.md (create outreach/ if needed). Include the subject as the H1 for email.
  • 2-line rationale: what hook you chose · what CTA you set. Helps the user judge before sending.
  • Region tip when relevant (e.g., IN: "open with the mutual / IIT-batch line — converts far harder than the cold version").

Anti-patterns (do not ship)

  • Generic flattery ("I admire X's mission", "your work is incredible"). Cut.
  • Naming the recipient's company in the first 5 words of the body. Sounds canned.
  • Multi-CTA ("would you be open to a chat, OR willing to refer me, OR share advice?"). Pick one.
  • First-person filler at the start: "I am writing to you because…" / "I wanted to reach out…". Remove.
  • Echoing context.career_goal / context.additional_info. Direction only.
  • Emoji.

Rubric (one-page self-check)

  • [ ] Hook is profile-grounded and verifiable (not flattery).
  • [ ] Exactly one CTA.
  • [ ] LinkedIn ≤ 120 words · Email ≤ 180 words.
  • [ ] No company name in the first 5 words.
  • [ ] No context: echo.
  • [ ] Verb openers vary across the body (Communication / Leadership categories).
  • [ ] Tone matches profile Notes / voice.

Next steps

Message ready — you send it. After you reach out, /infer-status to track the touch.

04 同仓库更多 Skills

jain777
jain777/jobclaw-skills

write-cover-letter

Produce a job-specific, profile-grounded cover letter in markdown — ≤ 350 words, ≤ 1 page, three paragraphs (hook → two quantified proofs → fit close). Reuses keywords from a prior tailor-resume sidecar when present. Writes a JSON sidecar reserved for a future /render-resume --kind cover-letter (rendercv).

★ 7
jain777
jain777/jobclaw-skills

triage-inbox

Classify a recruiting email (or a batch) into one of the 10 canonical email classes, extract structured fields (company / role / dates / links / asks / deadline / sentiment), and suggest the next action. Writes inbox/triage-<YYYY-MM-DD>.json — consumed by infer-status and draft-reply.

★ 7
jain777
jain777/jobclaw-skills

tailor-resume

Produce a job-specific, ATS-optimized resume from the user's master profile and a target job — reordering, reframing, and surfacing the most relevant real experience and keywords. Enforces a content rubric (bullet shape, length, parallel grammar, metric coverage), then renders a polished PDF by default (via render-resume) and visually QAs it. Never fabricates.

★ 7
jain777
jain777/jobclaw-skills

score-fit

Score how well the user's master profile fits a specific job — an ATS-style match percentage with matched/missing keywords, strengths, gaps, and a clear apply-or-skip recommendation. Optionally writes a structured sidecar that tailor-resume consumes.

★ 7
jain777
jain777/jobclaw-skills

review-render

Visually QA a rendered resume PDF and auto-fix layout/content defects in a bounded loop: render → screenshot → deterministic gate → vision rubric → apply one fix → re-render, until it passes or hits a pass cap. Catches widows, under-fill, overflow, orphaned headers, and imbalance that text-only logic can't see.

★ 7
jain777
jain777/jobclaw-skills

research-company

Build a structured company × role brief — compensation, day-to-day, career growth, recent news, community sentiment (Reddit / Blind / Glassdoor), red flags, and a "fit for this user" view. Heavy reasoning — runs forked. Writes companies/<slug>.{md,json} sidecars consumed by prep-interview and coach-negotiation.

★ 7