Systems Lab

Agent skill

linkedin-outreach

Execute LinkedIn outreach via Sales Navigator + session-based tools — connection requests with ≤300 char notes, follow-up messages, InMails — with strict LinkedIn ToS compliance, weekly rate limits, and personalization-hook enforcement.

slowingNeeds a keyInstructions only1,164 words

Filed under LinkedIn and social and Outbound email.

From devangk003/gtm-agent-skills · 32 skills · 0 · pushed 2026-06-18

What it does when it runs

Execute LinkedIn outreach via Sales Navigator + session-based tools — connection requests with ≤300 char notes, follow-up messages, InMails — with strict LinkedIn ToS compliance, weekly rate limits, and personalization-hook enforcement. Use when email is the wrong channel, LinkedIn URL is the strongest identity signal, the play is relationship-first social-selling, or multi-channel cadence requires a LinkedIn leg.

Read from the skill and the 3 files bundled beside it. A skill’s own description is written to be selected by an agent, so it describes the job and not the dependencies.

Keys and connectors you must supply
  • AGENTIC_APP_TOKEN
Hosts it reaches
No third-party host appears in the skill or its bundled files.
Tool permissions it declares
No allowed-tools in the frontmatter. It only issues instructions, so there is nothing to bound.
Actions present in the files
None. Instructions only.

Ask about linkedin-outreach

Opens your assistant with this page's verified links already in the prompt.

Is this safe to install?ClaudeChatGPT
Adapt it to my stackClaudeChatGPT
What else do I need for it to workClaudeChatGPT
Rather ask a human? Talk to Cheetah
git clone --depth 1 --filter=blob:none --sparse https://github.com/devangk003/gtm-agent-skills.git /tmp/gtm-agent-skills
git -C /tmp/gtm-agent-skills sparse-checkout set "linkedin-outreach"
mkdir -p ~/.claude/skills/linkedin-outreach
cp -R "/tmp/gtm-agent-skills/linkedin-outreach/." ~/.claude/skills/linkedin-outreach/

Picked up without a restart. A project skill of the same name is shadowed by your personal one. For one repository only, swap ~/.claude/skills for .claude/skills. Claude Code docs ↗

The folder is the same in every client that implements the format — 46 of them — so if yours is not above, only the destination changes.

Before you install: this skill will not complete its job on a bare agent. It needs AGENTIC_APP_TOKEN, which you have to obtain separately.

Reproduced in full from devangk003/gtm-agent-skills/blob/6b9a1b0094ffd83d6c02bc03b7ce1610661a1644/linkedin-outreach/SKILL.md, which is licensed MIT (skill frontmatter). 1,164 words, 9 headings.

LinkedIn Outreach

Execute LinkedIn-channel touches — connection requests, messages to existing connections, InMails — through session-based tools or manual Sales Nav UI. Hard-codes ToS compliance (NO direct scraping), respects weekly rate limits, defaults to personalization-hook contract per touch.

Clarification Protocol

When you encounter any of the following, STOP and ask the user — do NOT make a silent assumption, and do NOT flatly refuse:

  • Ambiguous or missing input
  • A fork in approach (multiple valid frameworks, segments, scopes, or sources)
  • A rule that would block progress
  • An assumption that materially shapes the output
  • Unverified data that a downstream step depends on

Present 2–4 concrete options with trade-offs and your recommendation.

Format:

Decision needed: <what's being decided> Options:

  • A) <option> — trade-off
  • B) <option> — trade-off
  • C) <option> — trade-off My recommendation: <X> because <reason>. Confirm or pick a different option before I continue.

Refusing to proceed is NEVER the final answer. Every "block" must come with an override option. If the user picks an override, honor it on the first request — do not re-prompt the same block multiple times in one run.

Scope

This skill ONLY produces LinkedIn outreach sequences (connection requests + InMail) with ToS-compliant cadence and personalized hooks. Do not expand into adjacent topics. If the user's request implies adjacent scope, trigger Clarification Protocol with options to (A) stay in scope, (B) note the adjacent need as a follow-up, (C) hand off to a different skill.

When to Use

  • Email is wrong channel — risky/catch-all email status, email-fatigued segments
  • LinkedIn URL is strongest identity signal in Lead schema
  • Relationship-first social-selling play
  • Multi-channel cadence requires a LinkedIn leg
  • Email reply rate plateaued <2% on a segment
  • Pre-launch with high LI URL coverage (>80%)

Quick Reference

ConceptValue
Risk-tiered modes✅ Manual/native (PRIMARY); ⚠️ Desktop session; 🔴 Cloud automation (high ban risk); 🔴 "API" = does NOT exist
Connection note≤300 chars, NO URL, NO emoji, single CTA
Connection requests/week≤80 (default); ≤150 high-SSI only; rolling 7-day reset
Daily distribution15–25/day max; never bulk-burst
Free-account notes cap5/month (new since 2023)
InMail limits25/day Premium; 1,000/week Recruiter (Tier-1 only)
Account safetyGreen only; amber/red = 7-day cool-down
Acceptance rate target15–25% healthy; <12% = copy/targeting broken
Optimal send timeWeekday 9am–5pm recipient local; Tue–Thu best
Hook gateEvent-based + content-engagement need citable URL
GDPR (EU/UK)gdpr_basis: legitimate-interest + opt-out in follow-up

Legend — Reply-Likelihood / Profile-Fit

  • [H] High — strong ICP match + warm signal (mutual, recent post, event)
  • [M] Medium — partial match or cold; plausible angle but no warm signal
  • [L] Low — weak fit, low priority; mark lower-personalization if pursued

Procedure

  1. Validate prerequisites — Read scored Leads with verified LinkedIn URLs; load ICP P-T-O + message house; check LI account state (age, SSI, dormancy). On gate failure, default to surface + trigger Clarification Protocol with options (A) fix gate, (B) proceed with documented risk and lower-confidence, (C) cancel. If dormant, surface activity-warmup as the recommended option.

  2. Determine mode (risk-tiered) — Manual/native → PRIMARY. Desktop session → acceptable with caveats. Cloud automation → NOT recommended; surface HeyReach Dec 2024 precedent + require explicit risk-ack. "API" mode and direct-scraping are ToS/legal violations — default refuse, but if the user insists, trigger Clarification Protocol restating the legal precedent (hiQ, Bright Data v. Meta) and require explicit written ack persisted to provenance before proceeding. See ${HERMES_SKILL_DIR}/references/li-tos-compliance.md.

  3. Filter recipient list — Drop no-LI-URL; drop EU/UK without LIA; apply tier filter; dedup against active email cadences.

  4. Pre-flight: capacity check — Weekly: 80 connects/150 high-SSI / 200 messages / 50 InMail monthly. Enforce 5/month notes (free accounts). Distribute 15–25/day. Reference ${HERMES_SKILL_DIR}/references/li-rate-limits.md.

  5. Pick framework + generate copy — Warm-intro / Event-based (citable URL) / Content-engagement (prior interaction). For generic-no-context (no warm signal, no event, no engagement), trigger the Clarification Protocol prompt below — do NOT auto-route to a review queue. Connection note ≤300 chars, no URL, single CTA. Follow-up 2–3 sentences post-accept. InMail 4–6 sentences (Tier-1 only).

    Decision needed: This lead has no verified personalization hook (no warm intro, no recent event, no content engagement). Options:

    • A) Enrich now (run data-enrichment to find an event/engagement signal)
    • B) Proceed with a generic-but-relevant angle (mark lower-personalization)
    • C) Skip this lead
    • D) Override and use the unverified hook anyway (mark lower-personalization) My recommendation: A if time permits, else B. Confirm or pick a different option before I continue.

    User override of the hook rule is permitted and must be honored on the first request. The hook rule is a default, not a hard gate. If the user says "proceed," "skip this rule," or similar, continue and tag affected touches personalization_status: lower-personalization. Do NOT re-prompt the same block multiple times in one run.

  6. Compose Touch records — Per conventions §2.1: channel linkedin-connect/message/inmail, full provenance, scheduled_for (weekday 9am–5pm), GDPR compliance.

  7. Schedule via tool or hand off — Manual: paste-ready notes + per-touch schedule + runbook. Desktop: campaign at safe pace (4–5/day). Cloud (if authorized): explicit risk-ack persisted.

  8. Push to CRM + run summary — Run ${HERMES_SKILL_DIR}/scripts/push_to_crm.py. Run summary: eligible/dropped counts, framework distribution, capacity headroom, account safety, recommended next skill.

Pitfalls

  • Cloud tools can disappear overnight — HeyReach Dec 2024: page deleted, founders banned, retroactive flagging
  • No LinkedIn outreach API exists — SNAP paused new partners Aug 2025; any "API" = unofficial reverse-engineered = ban risk
  • Direct scraping is a ToS violation — hiQ settlement Nov 2022; Bright Data v. Meta Jan 2024
  • Skipping account state pre-check — sudden activity on dormant account = instant red flag
  • Bulk-bursting weekly cap on Day 1 — rolling 7-day reset (NOT calendar week)
  • Forgetting 5/month personalized-note cap on free accounts
  • Generic connection notes / URLs in notes — auto-rejected, flagged

Verification

  1. Zero notes >300 chars or with URLs; every event-based/content-engagement Touch has citable hook URL or is tagged personalization_status: lower-personalization under explicit user override; zero sends on "API" mode without persisted risk-ack
  2. Rolling 7-day cap respected; daily distribution 15–25; acceptance ≥12% by D+7
  3. Account safety stays green; cloud-mode runs have explicit user risk-ack persisted

Output Format

  • Sections required: Outreach Plan (per touch), Per-Touch Message Bodies, Compliance/ToS Notes, Send Schedule
  • Tables / fields: Outreach Plan = Touch # | Day offset | Type [connect/inmail/comment] | Hook | Status; Per-Touch = Body | CTA | Word count
  • Length target: per-message ≤200 chars (connect note) / ≤500 chars (InMail); brief ≤500 words
  • File type: markdown
  • Mandatory closing sections: Verification Notes, Next Step

Files bundled with it

These load only when the skill asks for them, so they cost nothing until it runs.

Other skills for the same job

Different authors, same problem. Matched on the words in the skill name, across every library in the catalogue except this one.

Need help setting it up?

This page tells you what linkedin-outreach does and what it needs. Cheetah builds the agent setup it runs inside: data, CRM, sequencing and the guardrails.

Book a call →

The directory stays free. There is nothing gated behind this.