SYSTEM 5: DM SEQUENCING AND REPLY HANDLING
mkdir -p .claude/skills/linkedin-warm-dm-sequencer
---
name: linkedin-warm-dm-sequencer
description: When writing a warm DM sequence for a newly accepted
connection or engaged prospect, load this skill. Output hands to Prosp
for scheduled sending.
---
Input: prospect name/title/company, relationship start context, offer.
Touch 1 (within 24h): reference specific context, human question, no
offer, under 150 characters.
Touch 2 (3 days later): different angle, no pitch, under 200 characters.
Touch 3 (7 days after touch 2): honest check-in, can introduce offer
briefly, no guilt, under 150 characters.
If touch 1 gets a reply, do not send touch 2, hand to reply-classifier.
Output: {name, touch_1_text, touch_1_date, touch_2_text, touch_2_date,
touch_3_text, touch_3_date, source_context}
mkdir -p .claude/skills/linkedin-reply-classifier
---
name: linkedin-reply-classifier
description: When a LinkedIn DM reply comes in and needs classifying
for next action, load this skill.
---
Classify: POSITIVE_INTEREST / POSITIVE_BUT_BUSY / NEUTRAL_QUESTION /
OBJECTION / NOT_INTERESTED / OUT_OF_OFFICE_OR_AUTOMATED /
ESCALATE_TO_HUMAN.
For each: classification, confidence. If POSITIVE_INTEREST or
NEUTRAL_QUESTION: suggested next message. If POSITIVE_BUT_BUSY: extract
follow-up date. If OBJECTION: which specific one. If ESCALATE: one-line
reason.
When in doubt, classify toward ESCALATE_TO_HUMAN. Never auto-draft a
reply for OBJECTION or ESCALATE without human review.
mkdir -p .claude/skills/warm-signal-tracker
Monitor engagement against ICP. Flag anyone who crossed the threshold
for a proactive DM: 3+ comments across different posts, or repeated
profile views from within the exact ICP.
Output: warm-signals.csv (name, signal type, signal count, date last
seen, recommended action).
mkdir -p .claude/skills/dm-reply-time-monitor
Track every inbound DM timestamp against current time.
Escalate anything approaching 24 hours unanswered.
Output: overdue-replies.csv (name, message received, hours elapsed,
priority).
mkdir -p .claude/skills/dm-self-check
Count uses of I/we/our/my against you/your in this DM: [PASTE]
If the first count is higher, rewrite to be about them.
Return the corrected version with the before/after count.
mkdir -p .claude/skills/one-question-filter
Check this drafted DM for more than one question.
If more than one exists, rewrite down to a single binary, clarifying,
or permission-based question.
Return the corrected DM.
mkdir -p .claude/skills/mirror-style-analyzer
Read this prospect's last few messages: [PASTE]
Return their communication style: fast/casual or slow/formal.
Adjust the next reply draft to mirror that pace and register.
mkdir -p .claude/skills/next-step-closer
Check this drafted DM ends with a specific, low-friction next step
(a deliverable, a deadline, a proposed time), not an open-ended
"let's stay in touch."
If it fails, rewrite the closing line only.
mkdir -p .claude/skills/voice-calibration
Input: 5-10 real messages/posts/comments the user has written and
considers on-voice.
Analyse: sentence length pattern, vocabulary, directness, what they
never say, opening/closing patterns.
Write or update brand-voice.md as concrete rules, not vague adjectives.
On later runs with feedback: update the specific correction, do not
rewrite the whole file.
mkdir -p .claude/skills/objection-handler
1. "We already have something": ask what gap exists in their current solution.
2. "Not ready right now": ask if it's timing or priority.
3. "Price too high": ask if it's the number or the value-relative-to-cost.
4. "Need to talk to my team": offer to help build the internal case.
5. "Budget freeze": ask if it's across the board or specific lines.
Push when the objection is a reason not a decision. Let go after three
reasons with zero curiosity about your response.
SYSTEM 6: CRM AND PIPELINE LOGGING
mkdir -p .claude/skills/crm-activity-logger
Input: outreach-batch.csv (what was sent today). Call notes/transcripts.
1. For each row: log activity (contact, channel, date, content sent, status)
2. For each call: log contact, duration, outcome, next step, notes
3. Flag any contact at 3rd+ touch with no reply, for review
Output: CRM-ready activity log + summary (total logged, needs review count).
Never mark complete without a real timestamp. Flag likely duplicates.
mkdir -p .claude/skills/lead-qualifier
Qualify: Director/Founder/Owner/Manager/C-suite. Company type: SaaS,
B2B, agency. Function: owns or influences outbound, lead gen, or GTM.
Skip: open to work badge, pure IC with no GTM responsibility.
Tier 1 (contact immediately): exact title, ICP-range company, active signal.
Tier 2 (within 3 days): adjacent title, unclear size, no signal but ICP.
Tier 3 (if capacity): partial match, unclear influence.
mkdir -p .claude/skills/sales-call-prep
Pull together everything known: original sourcing signal, every
comment/DM exchange, profile context.
Produce one-page brief: who they are, why they engaged, what they
likely want to know, specific outcome to aim for.
mkdir -p .claude/skills/meeting-notes
Classify meeting type: client / internal / sales discovery / strategy.
Extract: decisions made (agreed only, with who), action items (task,
owner, due date, flag if none), open questions (who raised, status),
80-word summary.
For discovery calls also: pain in their words, decision process,
timeline, next step with date, ICP fit hot/warm/cold.
Never invent a decision not explicitly made. Flag missing due dates.
mkdir -p .claude/skills/hubspot-deal-sync
Sync this qualified lead into HubSpot as a new deal.
Stage: [initial stage based on qualification tier]
Associate contact and company records. Log the source signal as a
deal note. Set next step task with a due date.
Confirm the deal ID created before ending.
mkdir -p .claude/skills/pipeline-stage-mover
Given this list of contacts and their latest interaction: [PASTE],
determine which pipeline stage each belongs in now.
Flag any contact that has been stalled in the same stage for 14+ days.
Output: stage-moves.csv (contact, old stage, new stage, reason).
mkdir -p .claude/skills/notion-pipeline-writer
Write qualified leads to [NOTION DATABASE URL].
Fields: Name, LinkedIn URL, Company, Score, Heat, Status = New Lead,
Date Added, Source Signal.
Check for existing record by LinkedIn URL before creating a duplicate.
Update in place if a record already exists.
mkdir -p .claude/skills/duplicate-record-check
Scan the CRM or pipeline database for duplicate contact records.
Match on: exact email, exact LinkedIn URL, or name+company combination.
Output: duplicates.csv with a recommended merge (keep the record with
more complete data and more recent activity).
mkdir -p .claude/skills/contact-tagging
Tag each contact in this list based on: source (cold/high-intent/
feed-engage/referral), ICP tier, and current sequence stage.
Apply tags consistently using this exact taxonomy: [PASTE TAG LIST].
Flag any contact missing a required tag.
mkdir -p .claude/skills/follow-up-scheduler
Given this list of contacts and their next-touch dates: [PASTE],
build tomorrow's follow-up queue.
Prioritise by: overdue first, then by heat tier (hot before warm),
then by days since last contact.
Output: tomorrows-followups.csv.
SYSTEM 7: REPORTING AND DIAGNOSTICS
mkdir -p .claude/skills/linkedin-campaign-reporter
---
name: linkedin-campaign-reporter
description: When summarising LinkedIn outreach campaign performance
from raw metrics, load this skill.
---
Input: connections sent, accepted, DMs sent, replies, meetings booked,
per campaign/week.
Calculate: acceptance rate, reply rate, meeting conversion, week-over-
week change.
Output: This Week in One Sentence, Performance table, What the Numbers
Suggest, Recommended Action for Next Week.
If acceptance below 15%: flag the connection note. If acceptance
healthy but reply rate low: flag the DM sequence. Never call a change
significant without enough volume.
mkdir -p .claude/skills/campaign-diagnostic
Input: campaign metrics, sample of actual messages sent.
Diagnose: targeting broken (low acceptance despite decent note), voice
broken (decent acceptance, low reply rate), reply handling broken
(good replies, few meetings booked).
Output: precise diagnosis, specific fix list, note to run
voice-calibration if voice is the issue.
mkdir -p .claude/skills/client-report
Step 1 intake: which client, input available, primary focus, wins to
lead with, anything not to include.
Step 2 language filter: translate internal jargon to client language
(e.g. "bounce rate exceeded threshold" -> "we cleaned the contact list
to protect domain health").
Step 3 format: This Week in One Sentence, Performance table, What We
Learned, What We Are Doing Next Week.
Never hide a problem. Under 250 words.
mkdir -p .claude/skills/weekly-gtm-digest
Pull: campaign performance signals (deliverability alerts, bounces
over 4%, paused sequences), new unread positive replies, client
messages after 6pm/before 7am.
Post format: Campaigns / Needs Response Today / Deliverability Flags /
New ICP Signals / Client Messages After Hours.
Never flag urgent unless action is needed before noon. Omit empty
sections. Maximum 25 lines.
mkdir -p .claude/skills/acceptance-rate-diagnostic
Current connection acceptance rate: [X]%.
Is this healthy for our ICP and channel? If not, diagnose whether ICP
targeting, the connection note, or the profile itself is the likely
cause.
Give the single most likely cause, not a list of possibilities.
mkdir -p .claude/skills/reply-rate-diagnostic
Current DM reply rate: [X]%. Sample messages: [PASTE]
Diagnose whether the opener, the offer, or the overall tone is the
issue.
Give one specific rewrite recommendation, not a general critique.
mkdir -p .claude/skills/competitive-brief
Research [COMPETITOR] from website, G2 (last 90 days), LinkedIn (last
30 days), job postings.
Return: positioning in their words, top 5 customer complaints, hiring
signal analysis, one claim we can make they cannot, what to say when
their name comes up, one honest thing they do well.
Verify pricing/feature claims. Never invent a G2 complaint.
mkdir -p .claude/skills/gtm-day-planner
Ask: active campaigns and status, what happened overnight, what I'm
worried about, deadlines before noon.
Produce: Tier 1 fix first (max 2), Tier 2 move forward now (max 3),
Tier 3 defer, Claude Code sessions to queue, the one question to
answer first, the time block to protect.
Flag any campaign stalled 3+ days regardless of tier.
mkdir -p .claude/skills/decide
Three passes: Structurer (options, assumptions, pros/cons), Contrarian
(holes, hidden assumptions, second-order effects), Synthesizer
(recommendation, reversibility, kill criteria).
Interview: what's the decision, options, why now, gut lean, what would
prove the gut wrong, who's affected, reversible in 90 days.
Never recommend a tool change for a copy/ICP problem. No em dashes.
mkdir -p .claude/skills/monthly-system-health-review
Review this month's full funnel: content reach, comment activity,
connections sent, DMs sent, replies, meetings booked, closed deals.
Identify the biggest drop-off point in the funnel.
Output: one specific fix for that drop-off, not a general improvement list.
SYSTEM 8: PROSP HANDOFF AND SCALING
mkdir -p .claude/skills/prosp-handoff-brief
For this contact who just accepted a connection or replied warm:
[PASTE CONTEXT]
Produce the handoff object for Prosp: name, source signal, engagement
history summary, recommended sequence type (post-engagement /
cold-connect-warmup / high-intent), first-touch draft already written.
Flag if this contact is a duplicate of anyone already in an active
Prosp sequence.
mkdir -p .claude/skills/sequence-router
Given this batch of warm contacts: [PASTE], route each into the
correct Prosp sequence type based on how the relationship started:
comment-origin, cold-accept-origin, or high-intent-origin.
Output: routed-contacts.csv with sequence_type column.
mkdir -p .claude/skills/multi-account-round-robin
Given [N] connected LinkedIn accounts and a batch of [M] connection
requests to send, distribute the sends evenly across accounts
respecting each account's individual daily cap.
Output: send-assignment.csv (prospect, assigned account, send order).
mkdir -p .claude/skills/daily-cap-checker
Query current usage against daily caps: 20 connection requests, 100
profile lookups, 15 searches, 15 feed comments.
Return remaining budget per category.
If any cap is already exhausted, flag which skills should not run
again today.
mkdir -p .claude/skills/campaign-fatigue-detector
We have run the same outreach angle for [N] weeks. Reply rate trend:
[PASTE].
Determine if fatigue has set in (declining reply rate with no other
explanation). If yes, recommend the specific new angle to rotate to.
mkdir -p .claude/skills/icp-expansion-decision
Current ICP is producing [N] qualified leads per week.
Argue whether we should widen ICP criteria or whether the volume
ceiling is actually a targeting precision issue.
Give the actual recommendation, not just both sides.
mkdir -p .claude/skills/team-onboarding-brief
A new team member is joining this LinkedIn lead gen system.
Write the onboarding brief: which skills they'll use and in what
order, the daily routine, the rules that must never be broken (daily
caps, comment quality bar, no fabricated claims).
mkdir -p .claude/skills/skill-library-audit
Given this list of skills in the system: [PASTE], check campaign logs
to determine which are being run regularly, which are underused, and
which need updating based on recent diagnostic results.
Output: audit report with a specific recommendation per skill.
mkdir -p .claude/skills/amplify-connector-setup
Check 3 components before considering the LinkedIn automation setup
complete:
1. Persistent memory: campaign history and voice examples accumulate
across sessions
2. API connection: LinkupAPI or equivalent, confirmed connected
3. Sub-agent delegation: research, drafting, and reply handling split
across dedicated skills rather than one general prompt
Output: checklist confirming all 3, or specific gaps to fix.
mkdir -p .claude/skills/campaign-kill-continue
This campaign has run for [N] weeks with these results: [PASTE].
Give the actual recommendation: continue, adjust, or kill.
If adjust: the single specific change to make before the next run.