intro-email-generator
Skill0 starsChanged 3 months agoMITView on GitHub
Crafts compelling, forwardable introduction emails for intro requests. Use when user needs help writing an email asking a mutual connection to introduce them to someone at a company that's hiring. The skill produces emails that can be forwarded without editing.
2 other projects use a version of this.
Adopted by
Most recently taken up by
- latour-ai/skillstheir own version, first seen Oct 19, 2026
- samsational-code/business-skillstheir own version, first seen Sep 2, 2026
Other versions2 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 2
- latour-ai/skills★ 69same name
- samsational-code/business-skills★ 0same name
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 repository7 other files it gives its agents.
- AGENTS.mdAGENTS.md
- worker/AGENTS.mdAGENTS.md
- careers-discoverSkill
- jobs-ingestSkill
- network-jobs-importSkill
- network-jobs-setupSkill
- network-jobsSkill
The file
Show its rules and text
We split this skill into the rules it gives an agent
13 rules. About 0 are common, 6 are distinctive, and 7 are very specific to this project.
≈0
Common · estimate
Many files like this have a rule of this kind.
≈6
Distinctive · estimate
This author's own choices. Worth a look.
7
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- Distinctive: line 42
One question per call: Ask it, wait for the answer, then ask the next (which role first, then which forwarder).
- Distinctive: line 48
Put the deciding data in the option label (fit score, company, title overlap), never in surrounding prose the user has to correlate.
- Distinctive: line 50
Always keep a free-text / "none of these" path.
- Distinctive: line 51
No such tool in this host?
- Very specific: line 66
Use at most 1–2 roles and 1–2 forwarders.
- Very specific: line 76
If resume is missing, ask one question: run network-jobs profile import <file> (recommended) or paste the text now.
- Distinctive: line 113
Every metric must be verified against resume
- Distinctive: line 114
Use company/product names, never "you" or "your" (bad: "your platform" → good: "the Amplitude platform")
- Very specific: line 151
network-jobs: - Search job openings at companies where you have connections through your network.
- Very specific: line 155
If the user found a job using the network-jobs skill:
- Very specific: line 156
Prefer explicitly reviewed roles: network-jobs intros --title "..." / --url ...
- Very specific: line 163
Ask who the user actually knows well at that company — one question per company, recommending the strongest title overlap but saying …
- Very specific: line 181
After the exact text is approved, finish in-mail when possible: if the host exposes a mail/compose capability (Gmail MCP, Outlook/Graph, or …
≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
Intro Email Generator
How Intro Requests Work
This skill helps with a specific scenario involving three people:
- The Job Seeker — Looking for an opportunity at a target company
- The Forwarder — Knows both the job seeker AND someone at the target company
- The Target Contact — Works at the company that's hiring
The flow:
- Job Seeker writes email addressed to The Forwarder
- The Forwarder receives it, adds a quick note ("Hey, worth a look!"), and forwards to The Target Contact
- The Target Contact sees a well-crafted pitch they can act on
CRITICAL: The email is addressed to The Forwarder, NOT The Target Contact. The magic is that it reads well when forwarded — The Forwarder doesn't need to rewrite anything.
Common Mistake
People often write the email addressed to the wrong person. They write to the target contact instead of the forwarder.
Wrong: "Hi Sarah, I saw that Acme Corp is hiring and I'd love to chat about the PM role..." (This is written to the target contact — the forwarder can't just forward this)
Right: "Hey Mike, I'm interested in the PM role at Acme Corp. Would you be open to connecting me with Sarah?" (This is written to the forwarder — they can forward it directly to Sarah)
Asking the user
Whenever the next step is picking from a known set, use the host's choice tool —
AskUserQuestion (Claude Code), question (opencode), ask_user_choice, or the
harness equivalent — instead of a prose list.
- One question per call. Ask it, wait for the answer, then ask the next (which role first, then which forwarder). Never bundle two questions into one prompt or one tool call, even when the tool accepts several.
- Recommend, and say why. Lead with the option you would pick and a one-line reason ("Recommended: Mike — he's the strongest tie you named and overlaps the PM title").
- Put the deciding data in the option label (fit score, company, title overlap), never in surrounding prose the user has to correlate.
- Always keep a free-text / "none of these" path.
- No such tool in this host? Use a short numbered list, recommendation first, never more than 4 options.
Required Inputs
Gather before generating:
- Resume — prefer
~/.network-jobs/resume/text.md(orsource.*); else uploaded file, pasted text, or URL - Ranked intros — run the helper first (joins full
connections.json, not the 10-person sample):
network-jobs intros --k-roles 2 --k-forwarders 2
DATA="${NETWORK_JOBS_HOME:-$HOME/.network-jobs}" # always resolve from the env; never export a literal DATA
cat "$DATA/search/intros.json"Use at most 1–2 roles and 1–2 forwarders. fetchJdUrls is the only set of job URLs to fetch. If a JD fetch fails, draft from department (and title) — do not scrape every posting.
- Profile —
~/.network-jobs/profile.jsonfor seeker name/email when present - Additional context (optional) — key achievements, why they're interested, specific angles to emphasize
DATA="${NETWORK_JOBS_HOME:-$HOME/.network-jobs}" # always resolve from the env; never export a literal DATA
cat "$DATA/profile.json"
cat "$DATA/resume/text.md" 2>/dev/null || ls -la "$DATA/resume"If resume is missing, ask one question: run network-jobs profile import <file> (recommended) or paste the text now.
Email Structure
Subject: Quick intro request - [Company] [Role]
Hey [Forwarder's first name],
[Opening: 2-3 sentences connecting a verified achievement to the company's specific challenge. Show understanding of what the company does.]
Quick background:
• [HIGH PRIORITY: Most relevant achievement with metric + context]
• [MEDIUM PRIORITY: Supporting achievement with metric + context]
• [Additional evidence: Leadership, scale, or relevant experience]
[Interest statement: Connect strongest achievement to company's specific needs]
Would you be open to connecting me with someone on the [Team] team? I'm interested in this role: [job URL]
Best,
[Job Seeker's name]Analysis Approach
- Extract company context from job description: stage, core problems, team structure, success metrics
- Map candidate experience to job requirements: find overlaps, note gaps, identify unique value
- Verify claims against resume: only use achievements that have evidence
- Select style:
- DATA-DRIVEN: When context emphasizes metrics, growth, analytics ("achieved 250% growth...")
- ACTION-DRIVEN: When context emphasizes building, launching, leadership ("after launching from 0-to-1...")
See reference.md for detailed analysis framework.
Quality Standards
- Every metric must be verified against resume
- Use company/product names, never "you" or "your" (bad: "your platform" → good: "the Amplitude platform")
- Bullets use "• " format, max 12 words each
- Total body under 150 words
- Include job URL in closing (or job title if URL unavailable)
- Tone: professional but conversational, not templated
Example
Request: "I want to ask my friend Mike to intro me to someone at AnalyticsCo for their PM role."
Generated Email:
Subject: Quick intro request - AnalyticsCo Product Manager
Hey Mike,
Having achieved 250% WAU growth in our analytics product, I appreciate the scale of AnalyticsCo's platform challenges. My experience optimizing retention metrics showed me how critical accurate data is to product decisions, and I see direct parallels with how AnalyticsCo helps companies turn data into insights.
Quick background:
• Led analytics product growth from 10K to 35K WAU over 18 months
• Redesigned retention tracking, improving engagement 40% YoY
• Managed 4-person team through Series B product overhaul
Based on my experience scaling analytics products, I see valuable opportunities to help AnalyticsCo expand their enterprise offering.
Would you be open to connecting me with someone on the Product team? I'm interested in this role: https://analyticsCo.com/jobs/pm
Best,
AlexMike can now forward this directly to his contact at AnalyticsCo.
For more examples, see examples.md.
Related Skills
network-jobs - Search job openings at companies where you have connections through your network. Use this skill first to find opportunities, then use intro-email-generator to craft the outreach email.
Integration with network-jobs
If the user found a job using the network-jobs skill:
- Prefer explicitly reviewed roles:
network-jobs intros --title "..."/--url .../--company ...(joinssearch/ranked.json+connections/connections.json). Barenetwork-jobs introstakes the tail of the last search — fine as a default, but ask one question first when the user has reviewed specific roles (use the reviewed role, recommended, or the last-search tail). - Forwarder order measures title overlap only, never relationship
strength (every connection is 1st degree; closeness isn't in the data).
Ask who the user actually knows well at that company — one question per
company, recommending the strongest title overlap but saying plainly that
the data cannot rank closeness — and pin their answer with
intros --prefer "Name"(repeatable). Never present the top scorer as their closest tie. - Confirm 1–2 roles and 1–2 forwarders with the user, following Asking the user above: one question per call — role first (group by family → specific role, or company → role), wait for the answer, then ask which forwarder. Offer multi-select only where several answers are genuinely valid. Lead with your recommended role/forwarder and a one-line reason, put the deciding data in the option labels (fit score, company, title overlap, connection count) — never in surrounding prose the user must correlate — and always keep a free-text path for anything not listed. Never bundle the role and forwarder questions into one prompt or one tool call; prose satisfies the letter of "confirm" but costs the user a summarization task.
- Fetch JD only for
fetchJdUrls(or skip and usedepartment) - Job seeker name/email may be in ~/.network-jobs/profile.json
- Generate the intro email using the job details + resume
- After the exact text is approved, finish in-mail when possible: if the
host exposes a mail/compose capability (Gmail MCP, Outlook/Graph, or a
provider-agnostic compose tool), create a draft —
To= forwarder's address on file, subject + approved body, JD as a link. If the forwarder has no email on file, do not guess one: report that no draft could be addressed and fall back to text. Never send — draft only, always, and only after the user approves the exact text. With no mail capability available, emit the text plus a one-line note that it pastes into any mail client.
Helpers
network-jobs intros(wrapshelpers/rank-intros.py) — 1–2 roles + 1–2 forwarders →$DATA/search/intros.json
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.

