# Bl Reach

> Write connection notes and direct messages that get replies - the 200-character invite, the opening message, and two follow-ups. Use when the user says "write a connection request", "DM this person", "outreach message", "how do I follow up", or is reaching out to someone specific on LinkedIn.

- Skill: `ehteshambuildagents/bl-reach` (Agent Skill)
- Install (CLI): `npx skillmds@latest add ehteshambuildagents/bl-reach`
- Raw SKILL.md: https://api.skillmd.com/api/skills/ehteshambuildagents/bl-reach/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: ehteshambuildagents (https://skillmd.com/u/ehteshambuildagents)
- Updated: 2026-09-22
- Page: https://skillmd.com/skills/ehteshambuildagents/bl-reach

---


# bl-reach

The invite note is 200 characters. The first message decides whether there is a
second one. Neither is a pitch.

## Get the specifics before writing

Ask once, in a single batched question:

1. **Who** - name, role, company.
2. **The trigger** - the actual reason to reach out *now*. A post they wrote,
   something their company shipped, a talk they gave, a mutual connection who
   would vouch. "They fit my ICP" is not a trigger, and a message without one
   reads as a list import, because it is.
3. **What the user actually wants** - a conversation, a referral, a job, a sale.
   Be honest internally even when the message does not lead with it.

If there is no trigger, say so. The honest move is to go comment on their work
for two weeks and reach out after, and that advice is worth more than a
well-written cold message.

## The invite note - 200 characters

It has one job: make accepting obviously safe and mildly interesting. It is not
where the pitch goes.

- Name the trigger in the first clause.
- One sentence, sometimes two.
- No ask. Nothing to agree to yet.
- No "I'd love to connect and explore synergies."

```
Saw your post on killing the weekly status meeting - we did the same thing last
year and it broke in a way I didn't expect. Would be good to follow your stuff.
```

## The first message

Send it days after they accept, not minutes. An instant message after acceptance
is the clearest automation tell on the platform.

- **Under 80 words.** A long first message is read as a pitch regardless of
  content.
- **Reference the specific thing**, with enough detail that it could not have
  been sent to anyone else.
- **Give before asking.** A relevant link, a counter-example, an introduction.
- **One question**, and make it easy and specific. "How did you handle X?" beats
  "Would you be open to a chat?"
- **No calendar link.** Not in the first message. Not in the second.

## The two follow-ups. Two.

**Follow-up one**, 5 to 7 days later. Add something new - do not "bump" or
"circle back". A bump with no new information tells them the first message was
not important either.

**Follow-up two**, 2 to 3 weeks after that. This one closes the loop and gives
them an easy exit: "No worries if the timing's wrong - I'll stop here. Good luck
with the launch."

Then **stop**. A third follow-up converts almost nobody and costs the
relationship permanently. If the user asks for a fourth, say no and explain why
in one line.

## Rules

- **Read `voice.md`.** A DM in the wrong voice is worse than a post in the wrong
  voice, because it is a one-to-one conversation.
- **Every claim from `ledger.md`.** No invented case studies, no borrowed
  results, no "we helped a client like you" unless the client is real and the
  user may say it.
- **No automation.** This skill writes messages; the user sends them. Automating
  LinkedIn messaging breaks the User Agreement and gets accounts restricted, and
  restricted accounts do not get replies.
- **Never fabricate a mutual connection or a shared background.**

## Deliver

Four copy-ready blocks - invite, first message, follow-up one, follow-up two -
with the send timing on each. Run them all through `../bl-scrub/scrub.py` first.
Messages are where em dashes survive longest, because nobody edits a DM.

