.agents/skills/outreach/SKILL.md
Draft a cold email or warm-intro-request message to a specific person at a target company. Produces applications/<app_id>/outreach/<slug>.md and logs a communication_sent event. Runs after company-research. Enforces the One-Take Rule — refuses to draft without a grounded decision from company.md. This is the highest-payoff channel per 2026 hiring research.
npx skillsauth add MLGalusha/job-tracker outreachInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
This skill drafts a cold email or warm-intro-request for a specific person at a target company. It is the highest-payoff channel per notes/research/2026-ai-hiring-shift.md: cost 3, payoff 5, top of the channel ranking along with warm intros and building in public. It replaces the cover letter for engineer-led startups where formal applications are negative signal.
Core rules (from research):
decisions[] entry from company.md.cover-letter-writer refused to generate because the lane is OFF and recommended outreach insteadartifact_fit: strong and wants to open the conversationDo not run this skill if:
company.md does not exist → run company-research firstcompany.md has zero grounded decisions → rerun company-research with more primary-source attemptspeople[] entry in company.md has enough context to targetapplications/<app_id>/ directory existsapplications/<app_id>/company.md exists with at least one grounded decisionprofile/voice.md, profile/wins.md, profile/story.mdcompany.md people[]applications/<app_id>/company.md — the decisions[] and people[] sections are the goldapplications/<app_id>/role.md if it exists (not required — outreach can precede a formal role)profile/voice.md — full voice contractprofile/wins.md — quotable linesprofile/story.md — narrative arcIf Mason named someone, use them. Otherwise pick from company.md people[], preferring in this order:
grounded decisions Mason has an opinion onDo not default to generic HR / recruiter contacts. The research is explicit: recruiter outreach is near the bottom of the channel ranking. If the only identifiable person is a recruiter, flag that and ask Mason whether to send anyway or wait for a better target.
From company.md decisions[], pick the single grounded decision Mason has the strongest opinion on. This is the reason the email exists. If no grounded decision exists in company.md, refuse to draft.
Pick ONE link to include. Priority order:
artifact_shipped event exists in data)profile/projects/ — usually VTR for production credibility, Staffclaw for reverse-engineering / platform work, SonicGen for audio / hand-written-code credibilityExactly one link. Not three. Not a portfolio dump.
Two shapes, pick one:
Never "let me know if there's a fit." Never "would love to chat." Never "happy to jump on a call whenever."
Structure:
No subject-line trickery. Subject should be 4-6 words, descriptive, not clickbait. Good: "Reaction to your GPUI essay," "Audio fingerprinting + Zed question." Bad: "Quick question," "Opportunity to connect."
Against profile/voice.md, blocking violations:
company.md decision tagged grounded? If no, fail.If any fail, rewrite. If after two rewrites the One-Take still fails, stop and tell Mason which grounded decision to use or which new primary source to research.
Write to applications/<app_id>/outreach/<person_slug>.md. Structure:
---
to_name: <Full name>
to_role: <role>
to_email: <email if known, otherwise blank>
channel: <email | linkedin | twitter_dm>
one_take_source: <decision title from company.md>
artifact_link: <url>
drafted_at: <ISO date>
sent_at: <blank until Mason sends>
---
# Outreach to <Name> at <Company>
**Subject:** <4-6 word subject>
<body of email, 4-7 sentences>
Mason
---
## Reasoning
- **Person picked because:** <why them>
- **One-Take grounded in:** <decision, source URL from company.md>
- **Artifact link:** <url, what it proves>
- **Ask:** <call | pointer>
Do NOT log a communication_sent event yet. The event is logged only when Mason confirms he actually sent it.
Under 200 words. Include:
communication_sent"When Mason confirms he sent the email, log:
cd ~/Workspace/job && pnpm log communication_sent --app_id=<app_id> --channel=email --to="<Name>" --summary="Cold outreach re: <one-take topic>" --message_ref=applications/<app_id>/outreach/<slug>.md
Then update the sent_at field in the outreach file's frontmatter.
communication_sent until Mason confirms the send.company-research.cover-letter-writer.application-artifact.data-ai
Turn a job posting URL or pasted JD into a structured role.md file inside applications/<app_id>/. Extracts company, role, JD text, inferred lane (founding/AI eng/FDE/full-stack/local), required vs nice-to-have skills, fit notes against Mason's profile, and an honest truthfulness-gap list. Use whenever Mason shares a job link, pastes a JD, or asks "is this worth applying to?".
testing
Generate a tailored resume for a specific job application by combining Mason's profile, the role.md analysis, and the resume-base template. Every claim must trace back to profile/skills.md (Tier A/B), profile/projects/*.md, or profile/wins.md. Use whenever Mason wants a resume for a specific role he's decided to apply to.
testing
Draft a cold email or warm-intro-request message to a specific person at a target company. Produces applications/<app_id>/outreach/<slug>.md and logs a communication_sent event. Runs after company-research. Enforces the One-Take Rule — refuses to draft without a grounded decision from company.md. This is the highest-payoff channel per 2026 hiring research.
testing
Periodically scan a curated list of target company job boards for new postings that match Mason's lanes, and append candidate roles to a sourced-jobs queue for triage. Reads profile/target-companies.md and profile/preferences.md. Produces data/sourced-jobs.jsonl and a short daily digest. Use when Mason says "check for new jobs" or when running on a schedule.