agentleFS
andrew-shwetzerandrew-shwetzer/career-ops-plugin/skills/outreach/SKILL.md

outreach

Skill501 starsChanged 7 months agoMITView on GitHub

Draft personalized outreach messages for LinkedIn connections, hiring managers, or recruiters. Creates targeted messages using a hook + proof + proposal structure. Under 300 characters for connection requests. Use when someone says 'draft outreach', 'message the recruiter', 'reach out to', or 'write a LinkedIn message'.

18 other projects use a version of this.

Adopted by

Most recently taken up by

Used with

Projects with it also use profile.

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.
  • julienamorganSkill

    profile

    Researches the user's market, competitors, and competitive positioning to build a complete ICP profile. Shows findings for user approval before proceeding. Triggers: /profile, "research my market", "who are my competitors". Reads: ./gtm/company.md, ./gtm/icp.md. Writes: updates ./gtm/icp.md with competitive positioning. Standalone: yes (asks for domain if company.md missing).

    Also in 3 projects that use this

The file

Show its rules and text

We split this skill into the rules it gives an agent

13 rules. 0 are common, 11 are distinctive, and 2 are very specific to this project.

  • 0

    Common

    Most of the 17 edited versions we read keep these.

  • 11

    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
  1. Distinctive:

    Create personalized outreach messages for job search networking.

    line 15
  2. Very specific:

    Check data/research/{company}.md for company intelligence

    line 20
  3. Very specific:

    Check data/evaluations/ for any evaluation at this company

    line 21
  4. Distinctive:

    If no company research exists:

    line 23
  5. Distinctive:

    If no specific contact named, suggest based on research file:

    line 32
  6. Distinctive:

    Ask the user which type if not clear from context.

    line 46
  7. Distinctive:

    NEVER draft messages that misrepresent the user's background

    line 104
  8. Distinctive:

    NEVER suggest the user claim a connection that doesn't exist

    line 105
  9. Distinctive:

    NEVER draft overly flattering or sycophantic messages

    line 106
  10. Distinctive:

    Keep LinkedIn connection requests under 300 characters (hard limit)

    line 107
  11. Distinctive:

    Every message must contain something specific (not a template)

    line 108
  12. Distinctive:

    If no company research and no web search available, be honest: "This message would be stronger with specific company context.

    line 109
  13. Distinctive:

    Consider researching them first."

    line 111

“Common” is measured: kept by at least 6 in 10 of the 17 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.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Draft Outreach

Create personalized outreach messages for job search networking.

Step 0: Load Context

  1. Read data/profile.yml
  2. Check data/research/{company}.md for company intelligence
  3. Check data/evaluations/ for any evaluation at this company

If no company research exists:

"I don't have research on {company} yet. Better outreach comes from better intel. Want me to research them first, or should I draft something with what I know?"

Step 1: Identify the Contact

Parse user input for: contact name, title, company, platform.

If no specific contact named, suggest based on research file:

"Based on my research, here are contacts at {company}: {list from research} Who would you like to reach out to?"

Step 2: Determine Message Type

TypeWhenLength
LinkedIn connection requestNo existing connectionUnder 300 characters
LinkedIn messageAlready connected100-200 words
Cold emailHave their email100-150 words
Follow-upAlready reached out, no response 5+ days50-75 words

Ask the user which type if not clear from context.

Step 3: Generate Using 3-Part Structure

Part 1: Hook (about THEM, not you)

Reference something specific about the company, their work, or a recent event.

Bad: "I'm really interested in your company" (about you) Bad: "I'd love to connect" (generic) Good: "Your team's work on {specific project/launch} caught my attention" Good: "I noticed {company} just {recent event from research}"

Part 2: Proof (one quantifiable thing about you)

One sentence. One number. Directly relevant to their world.

Bad: "I have 10 years of experience in marketing" Good: "I grew organic traffic 3x at {Company} in 8 months" Good: "I managed a $2M portfolio with 98% client retention"

Pull the most relevant proof point from the user's profile that connects to the target company's needs.

Part 3: Proposal (low-pressure ask)

Bad: "Can you refer me?" (presumptuous) Bad: "I'd love to pick your brain" (vague, one-sided) Good: "Would you be open to a 15-minute chat about what {team} looks for?" Good: "I'd appreciate any advice on standing out for the {role} opening"

Step 4: Output

## Outreach: {Contact Name} at {Company}

**Platform:** {LinkedIn connection / LinkedIn message / Email / Follow-up}
**Context:** {role or department}

---

{the message, properly formatted}

---

**Character count:** {n} / {limit for platform}
**Tone:** {Professional / Warm / Direct}

Step 5: Offer Variations

"Want me to:

  • Adjust the tone? (more formal / more casual / more direct)
  • Write for a different platform? (email instead of LinkedIn)
  • Draft a follow-up for if they don't respond in a week?"

Rules

  • NEVER draft messages that misrepresent the user's background
  • NEVER suggest the user claim a connection that doesn't exist
  • NEVER draft overly flattering or sycophantic messages
  • Keep LinkedIn connection requests under 300 characters (hard limit)
  • Every message must contain something specific (not a template)
  • If no company research and no web search available, be honest: "This message would be stronger with specific company context. Consider researching them first."

Download now (ZIP)

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
What did you use it for? e.g. Reviewing pull requests in a Rails app

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.