Done-for-you buildA specialist builds your first campaign Β· 6 build slots left Β· closes in β€”Claim a build slot

The LinkedIn Skill Library: 68 Skills, 10 Playbook Modules, 7 Categories

AI Driven, Personalized Outreach on LinkedIn: Prosp πŸ’œ

Try Prosp Free3 working days to live Β· 6 slots left this week
5/5 rated on CapterraΒ·Used by 800+ agencies and sales teams
Playbook5 sections
Section 1

The Index: 7 Categories, What Got Merged, and the One Ceiling

Every LinkedIn skill from across the library, deduplicated into seven categories. 68 skills plus the 10 playbook modules.

Skills appeared under different names in different guides. post-engager-scorer and linkedin-post-engager-scorer are the same thing. Where that happened I kept one name and noted the alias.

The seven categories

# Category Skills Runs
1 Foundation and ICP 7 Once, then quarterly
2 List Building 11 Per campaign
3 Enrichment and Grading 9 Per list, before any send
4 Content and Warmup 13 Weekly
5 Engagement and Connection 10 Daily
6 DM and Sell-By-Chat 12 On every reply
7 Reporting and Diagnostics 6 Weekly

The order is the order. Categories 1 to 3 produce a list. Category 4 makes the list warm. Categories 5 and 6 work it. Category 7 tells you which of the previous six is broken.

Install the whole library

# 1. Foundation and ICP
mkdir -p .claude/skills/{icp-from-customers,icp-prompt-builder,tam-sanity-check,linkedin-profile-optimizer,positioning-line,disqualifier-writer,proof-library-builder}

# 2. List Building
mkdir -p .claude/skills/{linkedin-list-builder,raw-list-source,competitor-engagers,disco-like,job-posting-trigger-list,funding-signal-list,linkedin-icp-list-builder,sales-prospect-list,event-attendee-import,group-member-import,signal-finder}

# 3. Enrichment and Grading
mkdir -p .claude/skills/{icp-filter-pass,list-quality-scorecard,post-engager-scorer,linkedin-enrich,decision-maker-mapper,duplicate-detector,contact-hygiene-check,verify-and-segment,email-finder}

# 4. Content and Warmup
mkdir -p .claude/skills/{content-engine,linkedin-post-writer,lead-magnet-post-writer,hook-last-and-humanize,editorial-calendar,content-bucket-planner,point-of-view-extractor,borrowed-reach-formatter,linkedin-carousel-builder,voice-note-transcriber,total-addressable-content-finder,linkedin-personal-branding,linkedin-daily-post}

# 5. Engagement and Connection
mkdir -p .claude/skills/{linkedin-feed-engage,feed-engagement-session,comment-quality-checker,linkedin-connection-note-writer,connection-request-batcher,linkedin-high-intent,reciprocity-tracker,referral-intro,social-selling,linkedin-daily-engagement}

# 6. DM and Sell-By-Chat
mkdir -p .claude/skills/{linkedin-warm-dm-sequencer,sequence-builder,opener-writer,prosp-prompt-writer,voice-note-scripter,linkedin-reply-classifier,one-question-filter,mirror-style-analyzer,objection-handler,next-step-closer,dm-self-check,voice-calibration}

# 7. Reporting and Diagnostics
mkdir -p .claude/skills/{linkedin-campaign-reporter,campaign-diagnostic,acceptance-rate-diagnostic,reply-rate-diagnostic,dm-reply-time-monitor,warm-signal-tracker}

# Shared context, read by everything
mkdir -p context/{icp,brand,proof}
mkdir -p output

68 folders. Paste each file from the category pages.

What got merged

Seven skills appeared under two or three names across the library. Kept name first, aliases after.

  • post-engager-scorer ← linkedin-post-engager-scorer
  • linkedin-connection-note-writer ← connection-note-writer
  • linkedin-reply-classifier ← reply-classifier, reply-router
  • linkedin-warm-dm-sequencer ← warm-dm-sequencer
  • linkedin-list-builder ← icp-list-builder, target-list-builder
  • icp-filter-pass ← fit-filter
  • list-quality-scorecard ← list-grader

If you have already installed any of the source guides, delete the alias folder rather than keeping both. Two skills with near-identical descriptions collide on triggering and you get whichever one loads first.

The shared context files

Every skill in the library opens by reading these three. Build them before installing anything.

context/icp/derived-icp.md      # from closed-won, not a workshop
context/icp/disqualifiers.md    # who this is not for
context/brand/voice.md          # 3 adjectives, 2 banned phrases
context/brand/reference-posts.md # 3 that performed, in full
context/brand/banned.md         # claims nobody approved
context/proof/case-studies.md   # with a permission column

reference-posts.md does more than voice.md. Three adjectives describe a voice, three real posts demonstrate one.

case-studies.md needs the permission column. Every skill here pulls proof from that file and nowhere else, which is what stops any of them inventing a number or naming a client who never agreed to be a reference.

The send ceiling, once

Stated here rather than repeated in every skill. Recommended limits:

Action Free Premium / Sales Nav
Connection requests 20/day, 100/week 30 to 50/day
Direct messages ~100/week ~150/week
Profile views 80/day 150/day
Comments 60/day 60/day
InMail n/a 50/month

Account-wide, not per campaign. Three campaigns at 20 each means 60 attempts a day and a restricted account. Split it and set each campaign individually.

Request and message limits are separate buckets, so both run at full allocation at once. When capped, only connection requests pause, and it resets in 2 to 3 days.

This is the constraint that makes categories 2 and 3 matter. Comments are free, lists are cheap, sends are not, so the order you work a list in decides the quarter.

Section 2

Categories 1 to 3: Foundation, List Building, Grading (27 Skills)

27 skills across three categories. These produce a graded list. Nothing in categories 4 to 6 works without them.

The order is the cost control: build raw, filter cheap, grade, then enrich only what survived.

Category 1: Foundation and ICP, 7 skills

---
name: icp-from-customers
description: Derive an ICP from closed-won deals rather than a
  workshop. Use when targeting is unclear, before any list building.
---

Pull closed-won deals from the CRM, last 12 months. Per deal: company
size, industry, tech stack if visible, buyer job title, deal size,
days to close, and the trigger that started it.

Output to context/icp/derived-icp.md:
1. Three attributes correlating with fast closes
2. Three correlating with long or lost deals
3. Exact job titles that actually signed, not the ones targeted
4. Size band with the highest win rate
5. A searchable LinkedIn or Sales Navigator filter string
6. The gap between the stated ICP and the actual one

Fewer than 10 closed-won deals means say so. Do not derive a pattern
from three customers.
---
name: icp-prompt-builder
description: Turn a rough ICP description into a structured, reusable
  definition other skills can read.
---

Ask for, in one message: what they sell, exact buyer job title,
company type and size, the job the buyer is trying to do, what they
have already tried that failed, and who this is not for.

Output a structured ICP with each field filled or explicitly marked
UNKNOWN. Never fill a field by inference.

End with the searchable filter string and the three attributes a
list-building skill would filter on.
---
name: tam-sanity-check
description: Check whether an ICP is large enough to run a campaign
  against. Use before building a list, not after.
---

Estimate the addressable count for the ICP filter string.

Report: the count, the source of the count, and the arithmetic.

Then the send maths. At 20 connection requests a day, state how many
weeks the full list takes to work. If the list is smaller than four
weeks of sending, the ICP is too narrow for a campaign and needs
widening or a second segment.

If the count cannot be established from an observable source, say so
rather than estimating.
---
name: linkedin-profile-optimizer
description: Audit and rewrite a LinkedIn profile for inbound. Use
  before any outreach campaign, since outreach drives profile visits.
---

Audit nine checks, each PASS, WEAK or FAIL with one line of evidence:
proof, empty adjectives, brand clarity, gaps, call to action, visual
consistency, mobile readability, searchability, contact hygiene.

Then rewrite:
- Headline, three options with character counts, flagging mobile
  truncation. Never job-title-at-company.
- About, four movements: hook, the problem solved, proof, CTA. First
  person. Keywords in the first two lines.
- Featured: what to pin, treated as mandatory.
- Experience: action plus method plus measurable outcome per role.
- Skills: cut generic filler, merge into 10 to 15 clusters.

Critique the positioning, never the person. Photo assessed only on
quality and consistency with claimed seniority, never appearance.

Never invent a metric. Ask for one or leave the gap.
---
name: positioning-line
description: Produce the one sentence everything else says. Use before
  content or outreach copy.
---

Output one sentence a stranger would understand, then:
- Who this positioning deliberately repels
- Two beliefs held that the market mostly disagrees with
- The named competitors, with the honest difference for each and
  where each is genuinely better

Write to context/brand/positioning.md.

A positioning line that repels nobody converts nobody. If the "who
this repels" field is empty, the line is too broad.
---
name: disqualifier-writer
description: Write the explicit list of who an offer is not for. Use
  after the ICP exists, before list filtering.
---

Output to context/icp/disqualifiers.md. Each entry: the attribute,
and one line on why it fails.

Cover at minimum: too small to afford the price, wrong buyer
seniority, competitor, agency when we sell to in-house teams, sector
we cannot serve, geography we cannot serve.

This file is what icp-filter-pass reads to produce DROP verdicts, so
vagueness here becomes a bad list later.
---
name: proof-library-builder
description: Build the single file every other skill takes proof from.
  Use once, then update after each engagement.
---

One row per past result in context/proof/case-studies.md:

client | can we name them (YES/NO/ANONYMISED) | sector | size |
the problem | what we did | the result with a real number |
timeframe | service line | their quote if we have one

RULES
- The result column needs a number you can defend. "Improved their
  rankings" is a sentence, not a result. Leave the row out.
- The permission column is not optional. Skills read it to decide
  whether to name or anonymise.
- Twelve solid rows beat forty thin ones, because skills pick the
  closest match and a thin match produces weak output.

Category 2: List Building, 11 skills

The first four are the ones to run. The rest are source-specific variants.

---
name: linkedin-list-builder
description: Build a raw prospect list from any LinkedIn source. Use
  after the ICP exists.
---

Read context/icp/derived-icp.md.

Source in priority order, highest intent first:
1. Commenters and likers on a relevant post, ours or a competitor's
2. Attendees of a relevant LinkedIn event
3. Members of a relevant LinkedIn group
4. Search matching the ICP filter string
5. Job boards, for companies hiring the role our offer replaces

Capture per lead: full name, headline, company, company size,
location, LinkedIn URL, and the source.

Write to output/prospects.csv with a linkedin_url column. That header
name is required by the import later, so do not rename it.

Enrich nothing. Look up no emails. Most of this list is discarded in
the next step.
---
name: competitor-engagers
description: Build a list from people engaging with a competitor's
  content. Highest-intent cold source available.
---

Given a competitor's profile or company page, identify their recent
posts with above-average engagement.

For each: capture commenters and likers, with the post URL and the
topic of the post recorded per lead.

The topic column is the point. Someone who commented on a post about
pricing has a different opener from someone who commented on one
about onboarding.

Score each on whether the comment was substantive or a reaction only.

Never contact someone based on a single reaction to a single post.
That is fit, not intent.
---
name: job-posting-trigger-list
description: Build a list from companies hiring the role our offer
  replaces or supports. Strongest budget signal available.
---

Search job boards for the target role within the ICP filter.

Per company capture: the role, the posting date, the seniority, and
the named hiring manager where visible.

Why this is tier one: a company posting for the role has budget
allocated and an unmet need at the same time.

The hiring manager is usually the buyer. Where they are not visible,
run decision-maker-mapper.

Postings older than 45 days are stale. Either it is filled or the
budget moved. Drop them.
---
name: signal-finder
description: Find a dated, verifiable reason to contact each lead on
  an existing list.
---

One signal per lead, ranked by proximity to a budget decision.

TIER 1, act this week
- Posted about the exact problem we solve, last 30 days
- Hiring for the role our offer replaces
- Raised in the last 90 days
- New leader in post, last 60 days

TIER 2, act this month
- Commented on a competitor's post
- Company shipped something relevant
- Attended a relevant event
- Expanding into a new market

TIER 3, ICP fit only, no observable trigger

Every signal verifiable and dated. Record the date and the URL,
because it appears in the first message and they will check.

No signal means write NONE. Never stretch "works at a SaaS company"
into a trigger.

The remaining seven, each a source variant of linkedin-list-builder with the same output contract:

  • raw-list-source β€” broad first pass with no filtering, deliberately unqualified
  • disco-like β€” people who liked a specific post, discovery-oriented
  • funding-signal-list β€” companies that raised in the last 90 days
  • linkedin-icp-list-builder β€” search-URL driven, straight from the filter string
  • sales-prospect-list β€” Sales Navigator saved-search driven
  • event-attendee-import β€” attendee lists post-event
  • group-member-import β€” members of a relevant group

All seven write to the same output/prospects.csv contract with a source column, so downstream skills do not care which one produced the row.

Category 3: Enrichment and Grading, 9 skills

---
name: icp-filter-pass
description: Filter a raw list against the ICP before any enrichment.
  Run on the cheapest model at the lowest effort.
---

Read context/icp/derived-icp.md and context/icp/disqualifiers.md.

Per row return exactly one of KEEP, DROP, UNSURE, with a reason of 12
words maximum.

KEEP    Matches the title band and the size band
DROP    Fails either, or hits a disqualifier
UNSURE  Headline is ambiguous. Do not guess.

KEEP and UNSURE to output/filtered-leads.csv.
DROP to output/dropped.csv so the filter can be audited when someone
asks why a company was excluded.

Report the drop rate. Below 40% usually means the search was too
narrow rather than the list being unusually good.

This is classification across volume, not reasoning. Running it at
high effort is where the cost advantage disappears, and it touches
every row so it is the highest-volume call in the library.
---
name: list-quality-scorecard
description: Grade a list A to F before it enters a campaign. The
  gate. Nothing sends below B.
---

Grade output/filtered-leads.csv across eight dimensions, 1 to 10:

1 ICP fit: share matching both bands
2 Title accuracy: decision makers or influencers
3 Affordability against the stated price
4 Data completeness: rows missing fields
5 Deduplication: within the list, against past campaigns, and
  against any other active campaign on this account
6 Recency: how recently each profile was active
7 Reachability: how many are already 1st degree
8 Signal strength: how many carry a tier 1 or 2 signal

Average into a grade.
A 9.0+ send today   B 7.5+ send   C 6.0+ fix the two lowest first
D 4.5+ rebuild the list   F below rebuild the ICP, not the list

Below B, stop. Name the two lowest dimensions and the fix for each.

Dimension 7 changes the campaign shape rather than the quality.
Mostly 1st degree messages directly. Mostly cold needs connection
requests first, which is a different daily budget.

Dimension 8 predicts reply rate better than any other. A B-grade list
where most rows carry a tier 1 signal beats an A-grade list with none.
---
name: post-engager-scorer
description: Score people who engaged with a post by depth and fit so
  the send budget goes to the right people first.
alias: linkedin-post-engager-scorer
---

Two axes, 1 to 3, multiplied. Maximum 9.

DEPTH
1  Reaction only
2  Short comment
3  Substantive comment, or engaged more than once

FIT, against context/icp/derived-icp.md
1  Adjacent to the ICP
2  Right role wrong company type, or the reverse
3  Exact match

6 to 9  Contact this week
3 to 5  Hold. Watch for a second signal.
1 to 2  No outreach. Keep in the list, spend no send on it.

Add a score column, sort descending.

The reason to score rather than blanket-send: 20 connection requests
a day is account-wide, so a list of 400 is five weeks of the entire
budget. The order decides the quarter.
---
name: decision-maker-mapper
description: Find who actually signs at a target account. Use when
  the list has companies but not the right people.
---

Given a company, map the buying committee:
- The economic buyer, who owns the budget line
- The champion, who feels the problem daily
- The blocker, whose remit the change touches
- The technical evaluator, if the offer needs one

Per person: name, title, LinkedIn URL, and which role they play.

State confidence per assignment. A title is evidence of a role, not
proof of one.

Where a role cannot be identified, write UNKNOWN rather than
assigning the nearest title. Contacting the wrong person burns the
account and you do not get a second first message.

The remaining five:

  • linkedin-enrich β€” fills headline, company size, location and recent activity from the profile
  • duplicate-detector β€” within the list, against past campaigns, and across other active campaigns on the same account
  • contact-hygiene-check β€” dead links, malformed URLs, profiles that no longer exist
  • verify-and-segment β€” splits a graded list into send-order segments by score and signal tier
  • email-finder β€” run on the cheapest model, and only after filtering. Note that email extraction on LinkedIn works only for 1st-degree connections who list an address, so do not promise it for cold lists.

Why this order and not another

The expensive mistake is enriching a thousand rows to find six hundred were never going to buy. Enrichment is per-lookup pricing and the filter costs almost nothing at low effort.

So: linkedin-list-builder β†’ icp-filter-pass β†’ list-quality-scorecard β†’ signal-finder β†’ post-engager-scorer β†’ enrich only the survivors.

Once graded, Prosp takes the CSV directly. It needs headers in row one and a linkedin_url column, which is why every list skill here writes that exact header. AI column mapping handles the rest, and custom variables from the CSV become usable in message prompts, so the signal column travels with the lead into the copy.

Section 3

Categories 4 and 5: Content, Warmup, Engagement (23 Skills)

23 skills across two categories. Content makes a cold list warm. Engagement is what gets the content seen in the first place.

Run category 5 before category 4 in week one. Posting into a feed nobody has seen you in is publishing into a void.

Category 4: Content and Warmup, 13 skills

---
name: content-engine
description: Turn one long asset into a month of channel content. Use
  monthly. The only original writing in the month.
---

Read context/brand/reference-posts.md, voice.md, banned.md and
context/proof/case-studies.md.

ONE LONG ASSET becomes everything else. Never write channel content
from a blank page.

EXTRACT 10 to 12 standalone ideas. One idea per line. No idea that
needs the others to make sense.

THEN per idea produce one post via linkedin-post-writer.

STATUS on every output: DRAFT. Never scheduled, never published.

If the long asset yields fewer than 8 standalone ideas, say so. It is
not substantial enough to repurpose, and forcing it produces filler.
---
name: linkedin-post-writer
description: Write a single LinkedIn post in the house voice. Use for
  any post that is not a lead magnet post.
---

Read context/brand/reference-posts.md. Match the reference pieces,
not the adjective list.

RULES
- Hook is lines 1 to 2 and must earn the See More click alone. If
  deleting the body leaves the hook feeling complete, rewrite it.
- One idea per line. Three lines maximum per paragraph.
- No em dashes. No hashtags in the body.
- One CTA.
- Specific beats generic. A named figure beats "a lot".
- Only proof from case-studies.md.
- Check banned.md before writing any claim.

Output the post, the character count, and which pillar it serves.

Never more than one post a day on the calendar. Same-day multiples
suppress each other.
---
name: lead-magnet-post-writer
description: Write a post offering a free resource in exchange for a
  comment, so commenters become a lead list.
---

Never write before you have all five, asked in ONE message:
1. The resource, and what is literally inside it
2. The ICP, exact job title and company type
3. Comment keywords, one per variant, same semantic family
4. Proof, a real number they can stand behind
5. The offer, one line, used for the PS only

No proof is a valid answer. Write a curiosity or mechanism version
that makes no results claim rather than inventing one.

Produce 3 variants, each a different formula, differing in angle not
wording. Each gets its own keyword.

CTA depends on connection state:
Mostly connected: Comment "[WORD]" and I'll DM it over.
Mostly not:       Comment "[WORD]" and connect with me so I can send it.
                  PS. If we're already connected, just drop the comment.

List contents as objects, not outcomes. "43 prompts, 6 sequences, 1
tracker" not "unlock your potential".

Pick one to post first and say why. Never hedge. Order the other two
a week apart.
---
name: hook-last-and-humanize
description: Write the body first, then the hook, then strip the AI
  tells. Use as the final pass on any post.
---

HOOK LAST
Write the body before the hook. A hook written first constrains the
body to fit it, which is why so many posts have a great line one and
nothing underneath.

Then write three hooks for the finished body and pick the one that is
true rather than the one that is loudest.

HUMANIZE, then check:
- Numbers not all round. 85 to 11, not 85 to 9.
- No perfect parallelism in lists. At least one element differs in
  length or form.
- One genuine break in the flow of thought, not an inserted "anyway".
- Case studies carry one vague detail alongside one hyper-specific
  one. Real memory is uneven.
- Not every post resolves. At least one a week ends open.
- No em dashes anywhere.

Final test: could a competent human have written this in five
minutes? If it reads like it took a committee, that is what it reads
as.
---
name: point-of-view-extractor
description: Find the contrarian position inside a piece of research
  or a call transcript. Use when content feels agreeable and flat.
---

Read the source. Output:
- Three claims in it that the market mostly agrees with
- Two the market mostly disagrees with
- One the author would defend under pushback

The last one is the post. The first three are the reason most content
is ignored.

State what someone would say against it, and whether the position
survives that.

A point of view nobody could disagree with is not a point of view.

The remaining eight:

  • editorial-calendar β€” four weeks visible, status per row: IDEA, DRAFT, SCHEDULED, LIVE, LOGGED
  • content-bucket-planner β€” three pillars, each a repeatable topic not a theme. "Cold email" is a topic, "growth" is a theme and produces nothing.
  • borrowed-reach-formatter β€” reformats a post to be quotable by others, so the reach comes from reshares rather than the algorithm
  • linkedin-carousel-builder β€” one idea per slide, 8 to 12 slides, first slide carries the whole promise
  • voice-note-transcriber β€” turns a spoken idea into a draft, which is the fastest route to something that sounds like the person
  • total-addressable-content-finder β€” finds every topic the ICP already engages with, so the pillars are chosen from evidence
  • linkedin-personal-branding β€” the profile-level positioning that content reinforces
  • linkedin-daily-post β€” the scheduled version, publishing today's planned post plus an auto-comment 20 minutes later

On linkedin-daily-post: the 20-minute gap is deliberate. The first comment on your own post lifts early engagement, and 20 minutes is late enough to read as a considered addition rather than a planted one.

Category 5: Engagement and Connection, 10 skills

---
name: feed-engagement-session
description: Run a timeboxed engagement session with quality rules
  enforced. Use daily, 25 minutes.
---

Target: 8 to 10 likes, 5 comments.

SIX RULES, all enforced
1. At most 2 of 5 comments mention our product. 3 of 5 reads as
   promotion.
2. No two comments share a structure. Repetition is the second
   strongest tell after promotion.
3. At least 1 of 5 outside our niche. Only-on-niche scores worse,
   because a real person's feed is not perfectly on-brand.
4. At most 1 promotional phrase across the whole session. "I use it
   every day" is advertising.
5. If you simply agree, like it. Do not comment. Extending an
   agreement thread adds nothing and is visible.
6. At least 1 comment on a post with 200+ reactions. Large-post
   comments carry a 7 to 12x reach multiplier.

Score each comment 1 to 10 before posting. Below 7 gets rewritten,
not posted. Target an 8.0 session average.

Log each comment, its structure type, its score, the target post and
its reaction count. The structure type column is what makes rule 2
enforceable across days rather than only within a session.
---
name: comment-quality-checker
description: Score a comment before it posts. Use inside every
  engagement session.
---

Score 1 to 10:

9-10  Adds something the author did not know. Likely to get a reply.
8     Adds a real perspective or number. Reads as a peer.
7     Relevant and specific but adds little. Acceptable.
6     Generic but on topic. Rewrite.
5     Could be pasted under any post in the niche. Rewrite.
1-4   Praise, agreement, or a restatement. Never post.

SIX STRUCTURES to rotate, none twice in a session:
1 The counterexample. "Worked differently for us, here's what happened"
2 The specific number. Adds one figure the post did not have.
3 The narrowing question. Asks about the case the post did not cover.
4 The mild disagreement. Agrees with the premise, disputes the
  conclusion. This is the one that gets replies.
5 The extension. Takes the point one step further.
6 The short reaction. One line, genuine, no argument.

A week averaging below 7.0 means the rules need adjusting, not the
volume. More bad comments is worse than fewer good ones, because each
one is publicly attached to a name.
---
name: linkedin-connection-note-writer
description: Write the note attached to a connection request. Use
  when acceptance rate is below 30%.
alias: connection-note-writer
---

Under 200 characters. Sales Navigator is required to send a note at
all; without it, leave it blank rather than writing one that will not
send.

STRUCTURE
Line 1  the specific reason, dated. Not "saw your profile".
Line 2  the connection to something they would care about.
No ask. A connection request is not the place for one.

BANNED
"I came across your profile"
"I'd love to connect and learn more about what you do"
"I help [vertical] with [service]"
"Let's connect!"

Acceptance below 15% means this file is the problem, not the
sequence. Above 30% means leave it alone and look at the first
message instead.
---
name: linkedin-high-intent
description: Identify and act on the highest-intent signals in the
  feed same-day. Use daily, before the general session.
---

SCAN for, in priority order:
1. Someone in the ICP posting about the exact problem we solve
2. Someone in the ICP asking for a recommendation in our category
3. A competitor's customer publicly complaining
4. Someone in the ICP announcing a new role, last 7 days

Signals 1 and 2 are same-day or not at all. A comment on a
two-day-old post asking for recommendations is late.

PER SIGNAL output: the action (comment, DM, or connect), the copy,
and the reason this is same-day.

Signal 3 needs care. Answer the problem, never mention the
competitor. Naming them reads as opportunism and gets screenshotted.

The remaining six:

  • linkedin-feed-engage β€” the broader feed pass, less structured than a session
  • connection-request-batcher β€” batches requests against the daily cap, ordered by score
  • reciprocity-tracker β€” tracks who has engaged with you and not been reciprocated, which is the cheapest warm list there is
  • referral-intro β€” the forwardable warm intro your connector only has to press send on
  • social-selling β€” the personal brand and distribution layer that feeds pipeline
  • linkedin-daily-engagement β€” the scheduled version of the session, 09:00

The order in week one

Category 5 before category 4. Engagement first, content second.

The reason: a post published into a feed where nobody recognises the name gets the reach of a name nobody recognises. Two weeks of substantive commenting on ICP posts changes that, and it costs nothing but time.

The practical week one: feed-engagement-session daily from day one, content-engine and the first posts from day eight, outreach from day fifteen.

Rule 6 in the session skill is the one agencies underuse. A good comment on a large post outperforms a good post on a small account, at a fraction of the effort, and the people who reply to it become an importable list via Prosp from that post URL.

Section 4

Categories 6 and 7: DM, Sell-By-Chat, Diagnostics (18 Skills)

18 skills across two categories. Category 6 handles everything after someone replies. Category 7 tells you which of the seven categories is actually broken.

Most outreach systems generate replies and no meetings, because nothing owns the space between the two.

Category 6: DM and Sell-By-Chat, 12 skills

---
name: opener-writer
description: Write the first-touch message from a signal. Use after
  signal-finder, before sequence-builder.
---

RULES
- Under 300 characters. Longer reads as a template.
- Line one references the signal specifically. Not "saw your post"
  but the actual thing the post said.
- One ask, answerable in under ten words.
- No compliments. No "hope this finds you well".
- Never mention the product in message one.
- No em dashes.

STRUCTURE
Line 1  the signal, dated and specific
Line 2  the inference drawn from it
Line 3  the question

ONE PER TIER
Tier 1  lead with the signal. It is recent and they know it.
Tier 2  lead with the observable problem. There is no event.
Tier 3  lead with the vertical-level pattern. Claim no
        personalisation you cannot back.

BANNED, burnt:
"I came across your profile"
"I help [vertical] with [service]"
"Are you open to a quick chat"
"Quick question for you"
---
name: linkedin-warm-dm-sequencer
description: Build the full sequence spec for a warm, post-engaged
  list. Use after the list is graded B or above.
alias: warm-dm-sequencer, sequence-builder
---

Output a node list, not prose. Per node: action, delay before it,
exact copy, exit condition.

RULES
- Every touch a different angle. Never "just following up".
- Message 2 references something message 1 did not.
- Four touches maximum. After that the answer is no.
- Reply stops the sequence for that lead, always.
- A connection request auto-detects acceptance over two weeks, so no
  wait node after one.
- Any voice note pairs with a written message, before or after.

BRANCH on connection state:
1st degree     message straight away
Not connected  connection request, then message on acceptance

STATE the daily send split against the account ceiling. If the
requested volume exceeds it, state the ceiling and the split rather
than writing the sequence.
---
name: linkedin-reply-classifier
description: Classify every inbound reply and route it. Use on every
  reply before drafting a response.
alias: reply-classifier, reply-router
---

Exactly one category:

ENGAGED          Asked about a specific point, or disputed one. The
                 strongest signal in the system.
INTERESTED       Wants to know more about the offer
TIMING           Interested, not now. Capture the date named.
OBJECTION        Price, fit, incumbent, internal capacity
WRONG_PERSON     Not their remit. Ask who owns it.
NOT_INTERESTED   Clear no. Thank them, stop, never pitch again.
AUTO_REPLY       Out of office. Reschedule to their return date.
ESCALATE         Anything below 8 confidence

Per reply: category, confidence 1 to 10, the sentence that decided
it, the recommended next action.

Below 8 confidence, always ESCALATE. Do not guess at tone. Sarcasm,
brevity and politeness all read the same in text.

ENGAGED goes straight to a call offer. Someone arguing with your
point is more likely to buy than someone praising it, because they
engaged with the substance.

Never auto-send to NOT_INTERESTED. A human closes that loop.
---
name: one-question-filter
description: Reduce any drafted reply to a single question. Use on
  every outbound message in a live conversation.
---

Read the draft. Count the questions in it.

If more than one, pick the one whose answer changes what you do next,
and cut the rest.

Two questions in a DM gets you an answer to the easier one. Three
gets you no reply, because now it is work.

Output the single question, and name which ones you cut and why.

The test for the surviving question: could they answer it in under
ten words while walking? If not, it is too big for a DM and belongs
on a call.
---
name: mirror-style-analyzer
description: Match a prospect's message register before replying. Use
  on any reply that will be more than one line.
---

Read their message and identify:
- Message length. Reply within roughly 20% of it.
- Punctuation. Do they use full stops in short messages, or not.
- Capitalisation. Sentence case or lowercase.
- Formality. "Hi James," or "hey".
- Do they use emoji. If not, do not.

Then draft the reply to match.

A three-line reply to a six-word message reads as eager. A six-word
reply to a three-paragraph message reads as dismissive. Register
mismatch is the most common reason a warm thread cools.

Never mirror hostility or unprofessionalism. Match energy, not
behaviour.
---
name: next-step-closer
description: Decide whether to ask for the meeting, then draft the
  ask. Use when reply-classifier returns INTERESTED or ENGAGED.
---

Decide IF before HOW.

ASK NOW WHEN
- They asked something needing more than 400 characters to answer
- They named a problem we solve
- They asked about price, timeline or implementation
- Two substantive messages have gone each way

DO NOT ASK YET WHEN
- They replied with one line
- They have not named a problem
- It is still the first exchange
Instead, ask one more question that gets them to name the problem.

HOW
- Name the length and the agenda. "15 minutes, three questions, no deck"
- Offer the link and two concrete times. Some book, some reply.
- Say what happens on the call, one line.
- Never "let me know what works". Decision fatigue kills bookings.

Under 350 characters including the link.

After sending, tag the lead so the sequence does not follow up on
someone who already has a meeting booked. That is the most avoidable
bad impression in the whole system.
---
name: dm-self-check
description: Check a drafted DM against the rules before it sends.
  Use as the last step on every message.
---

Seven checks, five must pass:

[ ] Under 300 characters
[ ] One question only
[ ] References something specific and dated, not a category
[ ] No banned opener
[ ] No claim absent from case-studies.md
[ ] Register matches theirs
[ ] No em dashes

Report pass or fail per check with the evidence. Do not summarise as
"looks good".

If fewer than five pass, rewrite rather than send. A message that
fails three checks will not be saved by the follow-up.

The remaining five:

  • prosp-prompt-writer β€” converts message copy into per-lead personalisation prompts. {{double curly}} for profile data, [square brackets] for AI instructions. Only the opening line varies; the ask stays identical so results are comparable.
  • voice-note-scripter β€” under 20 seconds, roughly 50 words, written for speech with contractions and one filler word. Never sent alone.
  • objection-handler β€” agree with the true part, add the one thing they do not know, ask a question that moves it forward. Never two objections in one message.
  • voice-calibration β€” tunes the written voice against past messages that got replies
  • linkedin-dm-prep β€” the scheduled version. Drafts replies for human review at 10:00 and never sends.

Category 7: Reporting and Diagnostics, 6 skills

---
name: campaign-diagnostic
description: Diagnose which stage is broken. Run weekly. Stops at the
  first failure rather than reporting everything.
---

Pull: requests sent, accepted, messages sent, replied, meetings
booked.

Work the chain IN ORDER. Stop at the first failure.

1 ACCEPTANCE BELOW 15%
  The connection note, or the list is off-ICP. Not the sequence.
  Do not touch the sequence.
2 ACCEPTANCE FINE, REPLIES BELOW 10%
  The list is fine. The first message is the problem. Check: is the
  signal specific, one ask, under 300 characters.
3 REPLIES FINE, MEETINGS LOW
  The outreach works. The ask is mistimed, or the offer is wrong.
4 MEETINGS FINE, NOTHING CLOSING
  Not a LinkedIn problem. Price or offer fit.
5 ALL FINE, VOLUME LOW
  Not quality. Check the daily cap split across campaigns.

Output the failing stage, the evidence, and ONE change.

Never more than one change per week. Change three things and a lift
tells you nothing about which one worked.

If figures are incomplete, name which stage cannot be assessed. A
diagnosis on partial data points at the wrong stage.
---
name: acceptance-rate-diagnostic
description: Diagnose a low connection acceptance rate specifically.
  Use when campaign-diagnostic stops at stage 1.
---

Below 15% is a problem. 30%+ is healthy.

Check in order, stop at the first hit:
1. Is a note attached at all? Sales Navigator is required to send
   one. Without it, requests go bare.
2. Does the note reference something specific and dated, or a
   category?
3. Does the note contain an ask? A request is not the place for one.
4. Is the list actually the ICP? Run a sample of 20 against
   derived-icp.md by hand.
5. Is the profile optimised? Every request drives a profile visit,
   and a weak headline loses the accept there rather than in the note.

Output the failing item and the fix. Check 5 is the one people miss,
because it is not in the message at all.

The remaining four:

  • linkedin-campaign-reporter β€” the weekly report. Every metric pairs with an action, percentages sit beside absolutes, impressions never lead.
  • reply-rate-diagnostic β€” for stage 2. Checks signal specificity, ask count, length, and whether the opener is on the burnt list.
  • dm-reply-time-monitor β€” tracks how long replies sit before a response. The single cheapest improvement in most accounts.
  • warm-signal-tracker β€” flags leads who engaged again after going quiet, which is a re-entry signal most sequences miss because the lead is already marked Contacted.

Where the numbers come from

Stages 1 to 3 of the diagnostic need outreach data that LinkedIn itself does not export usefully.

Prosp supplies it: requests sent and accepted, messages sent, replies received, per campaign and per account. Native HubSpot integration with field mapping, 12 webhook events including Message Replied and Connection Accepted, and a REST API at prosp.ai/api/v1/leads.

The lead states also feed warm-signal-tracker directly: Not Contacted, In Campaign, Contacted, Not Accepted after 14 days with auto-withdraw, Replied which stops the campaign, Duplicate, Blacklist, Failed.

On voice notes, since voice-note-scripter depends on it: across 1000+ campaigns they average around a 47% reply rate against roughly 8% for written messages, largely because under 1% of LinkedIn outreach uses them. Cloning needs a 30 second minimum recording, ideally of the actual script.

Section 5

The 10 Playbook Modules, and the Weekly Loop

The ten modules from the 10 Call / Day playbook, mapped to the skills that automate them.

The modules are the method. The skills are the execution. Read the module once, then let the skill run it.

The 10 modules, and what runs them

# Module Skills that run it
1 How to Define Your ICP icp-from-customers, icp-prompt-builder, tam-sanity-check, disqualifier-writer
2 Optimise Your Profile linkedin-profile-optimizer, linkedin-personal-branding
3 Viral Post Templates linkedin-post-writer, hook-last-and-humanize, content-bucket-planner
4 The BEST DM on LinkedIn opener-writer, dm-self-check, one-question-filter
5 Sales Nav Tutorial linkedin-icp-list-builder, sales-prospect-list
6 Scrape Competitor Company Followers competitor-engagers, icp-filter-pass, prosp-prompt-writer
7 Steal Competitor Leads from Comments competitor-engagers, post-engager-scorer
8 500+ Comment Lead Magnet Strategy lead-magnet-post-writer, post-engager-scorer
9 10+ Copy-Paste DM Templates opener-writer, linkedin-warm-dm-sequencer, mirror-style-analyzer
10 Sell-By-Chat Framework linkedin-reply-classifier, one-question-filter, objection-handler, next-step-closer

Modules 6, 7 and 8 are three routes to the same thing: a list of people who have already engaged with your topic. They differ only in whose content they engaged with.

Module 1: ICP, and why it comes first

The playbook is explicit that this is the important one, and every skill in the library reads its output.

The method: derive from who actually bought rather than who you meant to sell to. The gap between the two is usually the most valuable line in the document.

Run icp-from-customers against the CRM.

Then tam-sanity-check on the result, and give me the send maths: at
20 connection requests a day, how many weeks does the full
addressable list take to work?

If that is under four weeks, the ICP is too narrow for a campaign.
Name the widening options rather than proceeding.

Then disqualifier-writer, so the filter has something to filter on.

The send maths is the step people skip. An ICP that produces 60 prospects is not a campaign, it is a list of people to contact by hand.

Modules 6 and 7: the competitor plays

Two routes to the same list. Followers of a competitor's company page, and commenters on a competitor's posts.

The commenters are better. A follower expressed interest once, possibly years ago. A commenter engaged with a specific idea on a specific date, and you know which idea.

Run competitor-engagers on [COMPETITOR].

Capture the post topic per lead, not just the lead. Someone who
commented on a pricing post has a different opener from someone who
commented on an onboarding post.

Then post-engager-scorer, depth x fit. Contact 6+ this week.

Then icp-filter-pass, because a competitor's audience is not
automatically your ICP.

The filter step matters more here than anywhere else. A competitor with a broader offer has an audience that mostly does not fit you, and their follower count is not a measure of your addressable market.

Module 8: the 500+ comment strategy

The highest-volume play in the playbook, and the one that breaks without the delivery half.

Run lead-magnet-post-writer. Three variants, three keywords, one
recommendation.

CTA depends on connection state:
Mostly connected: Comment "[WORD]" and I'll DM it over.
Mostly not:       Comment "[WORD]" and connect with me so I can send it.

A post pulling 500 comments is 500 people expecting a link, and that is where this play either compounds or collapses. Prosp imports the commenters and likers straight from the post URL, including future reactions as they keep arriving.

Five nodes: import from the post, a lead is 1st level condition, the message with the link on the YES branch, a connection request then the message on the NO branch, and a Reply Comment node so every public comment gets a public reply too.

Connection requests auto-detect acceptance, checking every 24 hours for two weeks with a random 1 to 24 hour delay, so no wait card is needed after that step. It is the most common unnecessary node people add.

Module 10: the Sell-By-Chat framework

The module that turns replies into calls, run by four skills in sequence.

On every reply:

1. linkedin-reply-classifier
   One of eight categories, with confidence. Below 8, escalate.

2. mirror-style-analyzer
   Match their length, punctuation, capitalisation and formality
   before drafting anything.

3. one-question-filter
   Reduce the draft to a single question. Two questions gets you an
   answer to the easier one. Three gets you nothing.

4. next-step-closer
   Decide IF before HOW. Then name the length and the agenda, offer
   two concrete times, and tag the lead so the sequence stops.

If the classifier returns OBJECTION, insert objection-handler between
2 and 3.

Run dm-self-check as the final gate on whatever comes out.

The ordering is the framework. Classify before drafting, match register before writing, cut to one question before sending, and only then decide whether to ask for the call.

Most people do these in reverse: draft the pitch, then try to make it fit the reply.

The weekly loop, everything together

Once, then quarterly
  Category 1. ICP, profile, positioning, proof library.

Week 1 to 2, before any outreach
  feed-engagement-session daily. Nothing else.

From week 2
  Mon  campaign-diagnostic. One change, no more.
  Mon  content-engine or editorial-calendar for the week
  Tue  linkedin-list-builder, then icp-filter-pass, then
       list-quality-scorecard. Below B, rebuild.
  Tue  signal-finder and post-engager-scorer on the survivors
  Wed  linkedin-post-writer, publish. One post a day maximum.
  Wed  feed-engagement-session
  Thu  linkedin-warm-dm-sequencer, launch or top up
  Daily linkedin-reply-classifier over the inbox, then the
        sell-by-chat chain on whatever it routes
  Fri  linkedin-campaign-reporter
  Fri  Check caps: sends used against allocation, per account

One change per week is the rule that makes the diagnostic worth running. Change three things and a lift tells you nothing about which one worked.

Three things to remember

  1. Build the context files before installing anything. Sixty-eight skills reading one ICP file behave like a system. Sixty-eight reading nothing behave like sixty-eight tools.
  2. Engagement before content, content before outreach. Two weeks of substantive commenting costs nothing and changes what every later step is worth.
  3. Comments are free, lists are cheap, sends are not. Twenty connection requests a day account-wide is the real constraint, which makes post-engager-scorer and list-quality-scorecard the highest-leverage skills in the library.

The library writes it. Prosp sends it πŸ’œ

↳ Start a 14 Day Free Trial πŸ’œ ↳ Watch Full Tutorial ▢️

6 build slots left Β· closes in β€”

Have your first campaign built for you

Send us your ICP and a Prosp specialist sources the list, writes the sequence and clones your voice. You review every draft before a single message sends.

5/5 rated on CapterraΒ·800+ agencies and sales teamsΒ·Set up in 5 minutes
6 done-for-you build slots left this weekTry Prosp Free