Install any skill in seconds. Free to start, no credit card required.
Get Started Free →Craft and send personalized recruitment messages to passive candidates. Use when sourcing talent from LinkedIn, GitHub, or other platforms.
.claude/skills/migrateforce-candidate-outreach/SKILL.md| Model | Eval pass | Runs |
|---|---|---|
| gemini-3.6-flash | 100% | 16 |
| Test case | Without → With | Effect | Δ tokens | Δ turns |
|---|---|---|---|---|
| case-03 | ✗→✓ | ▲ Improved | 76% | 0% |
| case-06 | ✗→✓ | ▲ Improved | 85% | 0% |
| case-20 | ✗→✓ | ▲ Improved | 84% | 0% |
| case-04 | ✓→✓ | = Same ✓ | 80% | 0% |
| case-07 | ✓→✓ | = Same ✓ | 60% | 0% |
This skill generates personalized, high-converting outreach messages to passive candidates. It researches the candidate's background, finds relevant connection points, and crafts messages that stand out from generic recruiter spam.
| Field | Type | Required | Description | |-------|------|----------|-------------| | candidate_profile | object | yes | LinkedIn/GitHub profile data | | job_opportunity | object | yes | Role being recruited for | | company_info | object | yes | Company details and selling points | | outreach_channel | enum | yes | linkedin, email, twitter, github | | tone | enum | no | professional, casual, technical | | sequence_stage | number | no | Which follow-up message (1-4) |
| Field | Type | Description | |-------|------|-------------| | subject_line | string | Email/InMail subject | | message_body | text | Personalized outreach message | | personalization_points | array | Specific details referenced | | follow_up_date | date | When to send next message | | ab_variant | string | Which template variant used |
From LinkedIn:
From GitHub:
PERSONALIZATION HIERARCHY (best to worst):
1. Mutual connection ("Sarah mentioned you...")
2. Their content ("Loved your post on...")
3. Shared experience ("Fellow [school] alum...")
4. Their work ("Your project X is impressive...")
5. Company news ("Congrats on the Series B...")
6. Role relevance ("Your [skill] expertise...")Structure:
Length:
Generate 2-3 variants testing:
| Stage | Timing | Focus | |-------|--------|-------| | 1 | Initial | Personalized intro | | 2 | +3 days | Value add (article, insight) | | 3 | +7 days | Social proof (team, culture) | | 4 | +14 days | Final follow-up |
Hi [First Name],
[Personalized hook - reference their work/post/project]
I'm reaching out because we're building [brief description] at [Company],
and your experience with [specific skill/project] caught my attention.
We're looking for a [Role] to [key responsibility]. The team includes
[notable person/background], and we just [recent achievement].
Would you be open to a quick call to learn more? No pressure either way.
[Your name]
P.S. [Optional: mutual connection, relevant link, or conversation starter]Subject: Re: [Original subject]
Hi [First Name],
Wanted to follow up on my note from last week.
I came across [relevant article/resource] and thought you might find it
interesting given your work on [their project].
[Company] is [brief value prop]. We're solving [problem] for [customers].
If you're not looking right now, I completely understand. But if you know
anyone who might be interested, I'd appreciate a referral.
Best,
[Your name]Subject: Closing the loop
Hi [First Name],
I've reached out a few times about the [Role] opportunity at [Company].
I'll assume the timing isn't right.
If that changes, feel free to reach out. I'd still love to connect.
Wishing you continued success at [Current Company].
[Your name]Generic (Bad): > "I came across your profile and thought you'd be a great fit for our role."
Personalized (Good): > "Your talk at ReactConf on state management was excellent—we're dealing with > similar complexity at scale. Would love to chat about how you'd approach our > real-time collaboration challenges."
Generic (Bad): > "We're a fast-growing startup looking for talented engineers."
Personalized (Good): > "We just closed our Series B to build AI tools for recruiters (yes, ironic > that I'm recruiting you). Your work on the recommendation engine at Spotify > is exactly what we need."
User: Write outreach for Jane Doe, Staff Engineer at Google, for our Senior Backend role
Agent: I've researched Jane's profile and crafted this outreach:
**Personalization points found:**
- Recent blog post on distributed systems
- Speaker at KubeCon 2024
- Open source contributor to Envoy
- Mutual connection: Mike (our CTO)
**LinkedIn InMail:**
Subject: Your KubeCon talk + a question
Hi Jane,
Your KubeCon talk on service mesh performance was one of the best I've seen—
especially the latency optimization section. We're running into similar
challenges at [Company] as we scale to 10M requests/sec.
Mike Chen (I think you worked together at Stripe?) suggested I reach out.
We're building [product] and looking for a Staff Engineer to lead our
infrastructure team.
The role: own our Kubernetes platform, scale distributed systems,
mentor 5 engineers. Comp: $350-450k total.
Open to a 20-min call next week?
[Your name]
**A/B Variant (more casual):**
Subject: Fellow Envoy contributor here 👋
Hi Jane,
Saw your Envoy PRs on connection pooling—nice work on the memory
optimization. We're heavy Envoy users at [Company] and running into
an interesting challenge you might have thoughts on...
[continues]
**Recommended send time:** Tuesday 10am PST
**Follow-up scheduled:** Friday if no responseinterview-scheduler| Case | Status | Duration (ms) | Turns | Tokens | Tool calls | ||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Without | With | Δ | Without | With | Δ | Without | With | Δ | Without | With | Δ | ||
case-01 | fail→fail | 11,811 | 7,565 | -36% | 1 | 1 | 0% | 1,928 | 2,906 | +51% | 0 | 0 | — |
case-02 | fail→fail | 10,702 | 7,621 | -29% | 1 | 1 | 0% | 1,729 | 2,813 | +63% | 0 | 0 | — |
case-03 | fail→pass | 9,953 | 8,667 | -13% | 1 | 1 | 0% | 1,627 | 2,868 | +76% | 0 | 0 | — |
case-04 | pass→pass | 9,724 | 7,322 | -25% | 1 | 1 | 0% | 1,592 | 2,858 | +80% | 0 | 0 | — |
case-05 | fail→fail | 12,698 | 9,548 | -25% | 1 | 1 | 0% | 1,950 | 3,077 | +58% | 0 | 0 | — |
case-06 | fail→pass | 9,350 | 8,748 | -6% | 1 | 1 | 0% | 1,581 | 2,932 | +85% | 0 | 0 | — |
case-07 | pass→pass | 8,336 | 4,901 | -41% | 1 | 1 | 0% | 1,497 | 2,392 | +60% | 0 | 0 | — |
case-08 | pass→pass | 9,355 | 6,479 | -31% | 1 | 1 | 0% | 1,526 | 2,538 | +66% | 0 | 0 | — |
case-09 | pass→pass | 12,937 | 11,085 | -14% | 1 | 1 | 0% | 2,016 | 3,325 | +65% | 0 | 0 | — |
case-10 | pass→pass | 9,058 | 7,898 | -13% | 1 | 1 | 0% | 1,208 | 2,770 | +129% | 0 | 0 | — |
case-11 | pass→pass | 7,482 | 3,801 | -49% | 1 | 1 | 0% | 1,242 | 2,072 | +67% | 0 | 0 | — |
case-12 | pass→pass | 9,977 | 8,440 | -15% | 1 | 1 | 0% | 1,622 | 2,741 | +69% | 0 | 0 | — |
case-13 | pass→pass | 12,291 | 13,262 | +8% | 1 | 1 | 0% | 2,041 | 3,624 | +78% | 0 | 0 | — |
case-14 | pass→pass | 6,330 | 8,701 | +37% | 1 | 1 | 0% | 969 | 2,693 | +178% | 0 | 0 | — |
case-15 | fail→fail | 7,396 | 7,118 | -4% | 1 | 1 | 0% | 1,276 | 2,591 | +103% | 0 | 0 | — |
case-16 | pass→pass | 7,869 | 6,267 | -20% | 1 | 1 | 0% | 1,291 | 2,591 | +101% | 0 | 0 | — |
case-17 | pass→pass | 7,488 | 5,107 | -32% | 1 | 1 | 0% | 1,212 | 2,314 | +91% | 0 | 0 | — |
case-18 | pass→pass | 13,216 | 12,050 | -9% | 1 | 1 | 0% | 2,204 | 3,356 | +52% | 0 | 0 | — |
case-19 | pass→pass | 11,470 | 8,665 | -24% | 1 | 1 | 0% | 2,046 | 3,144 | +54% | 0 | 0 | — |
case-20 | fail→pass | 15,774 | 17,934 | +14% | 1 | 1 | 0% | 2,532 | 4,665 | +84% | 0 | 0 | — |
case-21 | pass→pass | 13,191 | 9,988 | -24% | 1 | 1 | 0% | 2,410 | 3,322 | +38% | 0 | 0 | — |
case-22 | pass→pass | 13,302 | 11,649 | -12% | 1 | 1 | 0% | 2,581 | 3,758 | +46% | 0 | 0 | — |
DecimalAI ran this skill against gemini-3.6-flash twice over the same eval suite — once with the skill loaded and once without — and compared the two runs case by case. 22 cases were attempted. The headline lift of +14 percentage points is the difference between those two pass rates over the 22 comparable cases.
Without the skill loaded, the model failed this case. With it loaded, the same prompt on the same model passed. This is one improved case from the latest verified run; every case, including any that regressed, is in the table above.
Other measured skills in the registry, with their headline benchmark lift.