LinkedIn Engagement Growth

LinkedIn Engagement — comments first, outreach second

by alirezarezvani · MIT license · ★ 26,349 on GitHub · updated Aug 30

LinkedIn Engagement — comments first, outreach second cover

Use when someone wants to grow reach through comments, replies, groups, or outreach on LinkedIn — a commenting roster, a connection request note, a DM or InMail, a networking plan, or a check on whether their outreach volume is safe.…

---
name: linkedin-engagement
description: Use when someone wants to grow reach through comments, replies, groups, or outreach on LinkedIn — a commenting roster, a connection request note, a DM or InMail, a networking plan, or a check on whether their outreach volume is safe. Triggers on "who should I engage with", "write a connection request", "cold DM", "LinkedIn outreach", "networking strategy", "how many invites can I send". Builds a weekly comment roster inside a real time budget, assembles one message at a time and refuses templates, and caps volume against LinkedIn's limits. Nothing is ever sent.
license: MIT
metadata:
  version: 1.0.0
  author: Alireza Rezvani
  category: marketing
  updated: 2026-08-25
---

# LinkedIn Engagement — comments first, outreach second

From a standing start your posts reach almost nobody, and publishing harder does not fix it.
A substantive comment on a post that already has an audience puts your name, headline, and a
paragraph of thinking in front of people already reading about your subject, for six minutes
of work — the cheapest distribution on the platform, and the most badly used.

Overview

From a standing start your posts reach almost nobody, and publishing harder does not fix it. A substantive comment on a post that already has an audience puts your name, headline, and a paragraph of thinking in front of people already reading about your subject, for six minutes of work — the cheapest distribution on the platform, and the most badly used.

Manual install (npx, ZIP)
Claude Codenpx skills add alirezarezvani/claude-skills --skill linkedin-engagement -g -a claude-code
Claude Code (degit)npx degit alirezarezvani/claude-skills/marketing/linkedin/skills/linkedin-engagement#main ~/.claude/skills/linkedin-engagement
Claude.ai / desktopZip the folder and upload it under Settings → Capabilities → Skills.
Codex, Cursor, other agentsPoint them at SKILL.md. The other files are plain text.

Connects with Agent Alley MCP · agentalley.io/mcp

Files included

  • SKILL.md5.3 KB
Read SKILL.md here
alirezarezvani/main1 file shown
SKILL.md
Show the full text101 lines

LinkedIn Engagement — comments first, outreach second

From a standing start your posts reach almost nobody, and publishing harder does not fix it. A substantive comment on a post that already has an audience puts your name, headline, and a paragraph of thinking in front of people already reading about your subject, for six minutes of work — the cheapest distribution on the platform, and the most badly used.

Nothing here sends anything — no credentials, no API calls. Automated connecting, messaging, commenting, liking, and sharing are prohibited by User Agreement §8.2.

Workflow

1. Build the comment roster. Name 8-12 accounts they would read anyway, with audience overlap and rough size tier, then:

python3 scripts/comment_target_planner.py --account "Priya Raman:5:4:larger" \
  --account "Tomas Lind:5:3:peer" --minutes-per-day 18 --output human

Tiers are huge (10x+, crowded), larger (2-10x, the best ratio), peer (~1x, where reciprocity compounds), smaller (goodwill). The roster caps any account at twice a week — commenting daily on one person reads as following them around — and keeps the huge tier under half of any day. It builds the roster, never the comments: a generated comment is exactly what §8.2 names, and it is recognisable anyway.

2. Outreach — check the volume before writing anything.

python3 scripts/outreach_volume_guard.py --invites 20 --pending 5 --minutes 120 \
  --acceptance 0.42 --output human

Exit 0 safe / 2 tight / 3 over a cap or the time budget / 4 refused above 40 invitations a day, because nobody reads that many profiles and writes that many specific lines. Pending invitations count against the weekly limit (observed around 100), and acceptance below 20% is a stop signal — it is the pattern LinkedIn reviews, and the targeting is wrong.

3. Write one message, for one person.

python3 scripts/outreach_message_builder.py --type connection \
  --recipient "Priya" --specific-line "..." --reason "..." --output human

It refuses without a person-specific line, refuses an ask in a first-touch connection note, and enforces the 200-character cap (300 with --premium). In large third-party samples a note barely moves acceptance (~26.4% either way) but roughly doubles the post-accept reply rate: the note earns the conversation, not the meeting.

4. The order that works. Comment on their work for two weeks. Then invite, referencing something specific from that reading. Then, after acceptance and a pause, ask once, small.

Rules

  • Nothing is auto-sent. Ever. The user pastes and sends, one person at a time.
  • No engagement pods. Coordinated reciprocal commenting is inauthentic engagement under §8.2 regardless of who pressed the key. Build a real reciprocity list instead.
  • Every message carries a line that could only have been written for that person.
  • Never paste the same comment twice. Identical comments at volume are the definition of the thing §8.2 prohibits.
  • One follow-up, a week later, only with something new to say.
  • Agreement is not a comment. Add the counter-example, the number, or the case where it breaks — or skip the slot.

Scripts

Script Role
scripts/comment_target_planner.py Weekly roster from scored accounts, inside a time budget, with per-account and per-tier caps.
scripts/outreach_message_builder.py Assembles one message; refuses templates, premature asks, and 14 dead phrases.
scripts/outreach_volume_guard.py Caps invitations against the observed weekly limit, pending backlog, acceptance floor, and the hours available.

References and assets

Distinct from

  • linkedin-content — writes posts. A comment is a different craft on a different budget.
  • marketing-skill/cold-email — email. Different channel, law, and caps.
  • business-growth/, commercial/ — sales process and deal economics, not networking.

Version: 1.0.0

1---
2name: linkedin-engagement
3description: Use when someone wants to grow reach through comments, replies, groups, or outreach on LinkedIn — a commenting roster, a connection request note, a DM or InMail, a networking plan, or a check on whether their outreach volume is safe. Triggers on "who should I engage with", "write a connection request", "cold DM", "LinkedIn outreach", "networking strategy", "how many invites can I send". Builds a weekly comment roster inside a real time budget, assembles one message at a time and refuses templates, and caps volume against LinkedIn's limits. Nothing is ever sent.
4license: MIT
5metadata:
6 version: 1.0.0
7 author: Alireza Rezvani
8 category: marketing
9 updated: 2026-08-25
10---
11 
12# LinkedIn Engagement — comments first, outreach second
13 
14From a standing start your posts reach almost nobody, and publishing harder does not fix it.
15A substantive comment on a post that already has an audience puts your name, headline, and a
16paragraph of thinking in front of people already reading about your subject, for six minutes
17of work — the cheapest distribution on the platform, and the most badly used.
18 
19**Nothing here sends anything** — no credentials, no API calls. Automated connecting,
20messaging, commenting, liking, and sharing are prohibited by User Agreement §8.2.
21 
22## Workflow
23 
24**1. Build the comment roster.** Name 8-12 accounts they would read anyway, with audience
25overlap and rough size tier, then:
26 
27```bash
28python3 scripts/comment_target_planner.py --account "Priya Raman:5:4:larger" \
29 --account "Tomas Lind:5:3:peer" --minutes-per-day 18 --output human
30```
31 
32Tiers are `huge` (10x+, crowded), `larger` (2-10x, the best ratio), `peer` (~1x, where
33reciprocity compounds), `smaller` (goodwill). The roster caps any account at twice a week —
34commenting daily on one person reads as following them around — and keeps the huge tier under
35half of any day. It builds the roster, never the comments: a generated comment is exactly
36what §8.2 names, and it is recognisable anyway.
37 
38**2. Outreach — check the volume before writing anything.**
39 
40```bash
41python3 scripts/outreach_volume_guard.py --invites 20 --pending 5 --minutes 120 \
42 --acceptance 0.42 --output human
43```
44 
45Exit 0 safe / 2 tight / 3 over a cap or the time budget / **4 refused** above 40 invitations
46a day, because nobody reads that many profiles and writes that many specific lines. Pending
47invitations count against the weekly limit (observed around 100), and acceptance below 20% is
48a stop signal — it is the pattern LinkedIn reviews, and the targeting is wrong.
49 
50**3. Write one message, for one person.**
51 
52```bash
53python3 scripts/outreach_message_builder.py --type connection \
54 --recipient "Priya" --specific-line "..." --reason "..." --output human
55```
56 
57It refuses without a person-specific line, refuses an ask in a first-touch connection note,
58and enforces the 200-character cap (300 with `--premium`). In large third-party samples a
59note barely moves acceptance (~26.4% either way) but roughly doubles the post-accept reply
60rate: **the note earns the conversation, not the meeting.**
61 
62**4. The order that works.** Comment on their work for two weeks. Then invite, referencing
63something specific from that reading. Then, after acceptance and a pause, ask once, small.
64 
65## Rules
66 
67- **Nothing is auto-sent.** Ever. The user pastes and sends, one person at a time.
68- **No engagement pods.** Coordinated reciprocal commenting is inauthentic engagement under
69 §8.2 regardless of who pressed the key. Build a real reciprocity list instead.
70- **Every message carries a line that could only have been written for that person.**
71- **Never paste the same comment twice.** Identical comments at volume are the definition of
72 the thing §8.2 prohibits.
73- **One follow-up, a week later, only with something new to say.**
74- **Agreement is not a comment.** Add the counter-example, the number, or the case where it
75 breaks — or skip the slot.
76 
77## Scripts
78 
79| Script | Role |
80|---|---|
81| [`scripts/comment_target_planner.py`](scripts/comment_target_planner.py) | Weekly roster from scored accounts, inside a time budget, with per-account and per-tier caps. |
82| [`scripts/outreach_message_builder.py`](scripts/outreach_message_builder.py) | Assembles one message; refuses templates, premature asks, and 14 dead phrases. |
83| [`scripts/outreach_volume_guard.py`](scripts/outreach_volume_guard.py) | Caps invitations against the observed weekly limit, pending backlog, acceptance floor, and the hours available. |
84 
85## References and assets
86 
87- [`references/comment_strategy.md`](references/comment_strategy.md) — tiers, what a comment competes on, pods, replying to your own posts (7 sources)
88- [`references/outreach_ethics_and_benchmarks.md`](references/outreach_ethics_and_benchmarks.md) — the benchmark numbers with their provenance, and the personalisation claim corrected (7 sources)
89 
90- [`assets/outreach_worksheet.md`](assets/outreach_worksheet.md) — fillable per-person prep sheet
91- [`assets/example_outreach.json`](assets/example_outreach.json) — input shape for the builder
92 
93## Distinct from
94 
95- **`linkedin-content`** — writes posts. A comment is a different craft on a different budget.
96- **`marketing-skill/cold-email`** — email. Different channel, law, and caps.
97- **`business-growth/`, `commercial/`** — sales process and deal economics, not networking.
98 
99---
100**Version:** 1.0.0
101 
View all files on GitHub →

Details

Updated
Aug 30, 2026
License
MIT
Stars on the repo
★ 26,349
Checked
Source
alirezarezvani/claude-skills ↗
Creator
alirezarezvani · 363 listings
View creator

Similar skills

See all →

More from alirezarezvani

SkillExperiment Resume Toolalirezarezvani/claude-skills · by alirezarezvaniResume a paused experiment. Checkout the experiment branch, read results history, continue iterating. Use when the user runs /ar:ar-resume or asks to pick up a previously started autoresearch experiment.★ 26.3k GitHub starsSkillExperiment Dashboard Vieweralirezarezvani/claude-skills · by alirezarezvaniShow experiment dashboard with results, active loops, and progress. Use when the user runs /ar:ar-status or asks how an autoresearch experiment is going.★ 26.3k GitHub starsSkillAutonomous Experiment Runneralirezarezvani/claude-skills · by alirezarezvaniStart an autonomous experiment loop with user-selected interval (10min, 1h, daily, weekly, monthly). Uses CronCreate for scheduling. Use when the user runs /ar:loop or asks to run an autoresearch experiment continuously on a schedule.★ 26.3k GitHub starsSkillSingle Experiment Iteratoralirezarezvani/claude-skills · by alirezarezvaniRun a single experiment iteration. Edit the target file, evaluate, keep or discard. Use when the user runs /ar:run or asks for one manual autoresearch iteration.★ 26.3k GitHub starsSkillAutoresearch Experiment Setupalirezarezvani/claude-skills · by alirezarezvaniSet up a new autoresearch experiment interactively. Collects domain, target file, eval command, metric, direction, and evaluator. Use when the user runs /ar:setup or asks to start optimizing a file with the autoresearch loop.★ 26.3k GitHub starsSkillExecutive Boardroom Deliberatoralirezarezvani/claude-skills · by alirezarezvani/cs:boardroom <brief> — 6-phase multi-role deliberation across the C-suite with Phase 2 isolation, critic pre-screen, and synthesis. Outputs a board memo. Use when a decision spans multiple executive domains — e.g. a pricing change touching finance, positioning, and product, or a raise-vs-cut runway call.★ 26.3k GitHub stars