#373 by GitHub stars
Jakeschincariol/linkedin-agent-skill
Eleven free Claude skills that run a LinkedIn account: posts off 21 hook formulas, comments, replies, profile score, weekly plan, and a humanizer that strips the AI fingerprint and scores the draft before it goes out.
History
Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.
View weekly changes
skills/li-audit/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
skills/li-carousel/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
skills/li-comment/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
skills/li-dm/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
skills/li-human/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Local scripts → After Local scripts
add2c23882fe → add2c23882fe
skills/li-inbox/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
skills/li-plan/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
skills/li-post/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
skills/li-profile/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
skills/li-reply/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
skills/li-repurpose/SKILL.md
Week of Oct 26, 2026 · +0 / −0 lines
Before Instructions only → After Instructions only
add2c23882fe → add2c23882fe
Verified commit add2c23882fe79180737d242ff80a5da205eda6a
git clone --filter=blob:none --no-checkout https://github.com/Jakeschincariol/linkedin-agent-skill.git .hotskills/jakeschincariol-linkedin-agent-skill && git -C .hotskills/jakeschincariol-linkedin-agent-skill checkout --detach add2c23882fe79180737d242ff80a5da205eda6a
# Copy each selected skill directory from .hotskills/jakeschincariol-linkedin-agent-skill into .claude/skills/<skill-name>/Heat
7.3- Star growth, last 7 daysAhead of 98% of tracked repositories
- Star growth, last 24 hoursAhead of 98% of tracked repositories
- Rank movement, last 7 daysAhead of 96% of tracked repositories
- Commits, last 30 daysAhead of 0% of tracked repositories
- Accounts asking about it through MCP, last 7 daysNot available
- Hot votes this weekAhead of 0% of tracked repositories
Heat never changes the order by stars, and sponsorship never touches it. How heat works
Stars over time
Individual skills in this repository
- li-audit
skills/li-audit - li-carousel
skills/li-carousel - li-comment
skills/li-comment - li-dm
skills/li-dm - li-human
skills/li-human - li-inbox
skills/li-inbox - li-plan
skills/li-plan - li-post
skills/li-post - li-profile
skills/li-profile - li-reply
skills/li-reply - li-repurpose
skills/li-repurpose
How it works
li-audit
When your agent uses it
Post-mortem on what the user has already published - which posts actually worked, why, and what to stop doing. Use when the user pastes their LinkedIn analytics or past posts and asks "what's working", "why did this flop", "read my analytics", "audit my content", or wants to know what to double down on.
What it loads into context
Frontmatter
88 tokensAlways available to the agent
SKILL.md
866 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Input
- What to actually measure
- Then find the pattern
- Output
Files
../../.claude-plugin/marketplace.jsonasset603 bytes../../.claude-plugin/plugin.jsonasset656 bytesSKILL.mdcore3,417 bytesSKILL.mdcore3,417 bytes
Read SKILL.md
# li-audit
The only honest source of what works for an account is that account. Every
rule in every LinkedIn guide, including the ones in this pack, is a prior. The
user's own last 30 posts are the evidence.
## Input
Ask for whichever the user has:
- The post analytics export (LinkedIn: Analytics -> Content -> Export). CSV.
- Or a screenshot per post with impressions, reactions, comments, reposts.
- Or just the posts and their reaction counts, which is enough for a first
pass.View the complete source on GitHubli-carousel
When your agent uses it
Build a LinkedIn document post (carousel) - slide-by-slide copy, the cover that earns the swipe, and the PDF to upload. Use when the user says "carousel", "document post", "slides for LinkedIn", "turn this into a carousel", or has a list-shaped idea that would die as a text post.
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
747 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- When to use it instead of a text post
- Structure
- Slide copy rules
- Making the PDF
- Output
Files
SKILL.mdcore2,860 bytesSKILL.mdcore2,860 bytes
Read SKILL.md
# li-carousel
Document posts are the highest-dwell format on LinkedIn, because a swipe is
counted and a scroll is not. The format rewards one idea broken into steps.
It punishes a text post cut into pieces.
## When to use it instead of a text post
Use a carousel when the idea has **sequence** - steps, a countdown, a
before/after progression, a framework with parts. Use a text post when the
idea is one claim. Splitting one claim across eight slides is the most common
way carousels fail, and if that is what the user has, say so and hand them to
`/li-post`.
View the complete source on GitHubli-comment
When your agent uses it
Write comments on other people's LinkedIn posts that read as a person with an opinion, not a bot. Use when the user pastes a post and wants a comment, says "comment on this", "engage with this", "what do I say here", or wants a batch of comments for their engagement round.
What it loads into context
Frontmatter
80 tokensAlways available to the agent
SKILL.md
1,045 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Input
- The nine comment types
- Rules
- Output
- Batch mode
- Never
Files
SKILL.mdcore4,160 bytes
Read SKILL.md
# li-comment
Commenting is the highest-leverage thing on LinkedIn and the easiest to do
badly. A comment on a post with 400 reactions gets seen by more people than
most of your own posts. A generic one gets seen by nobody and costs you
credibility with the author.
## Input
The user pastes the post text (and the author's name and role if they have
it). If they paste a screenshot, read it. If they give you a URL you cannot
open, ask them to paste the text - do not guess what the post said, and do not
use browser automation to scrape the feed.
View the complete source on GitHubli-dm
When your agent uses it
Write connection notes and DM follow-ups that get replies - the 200-character invite, the first message, and the 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.
What it loads into context
Frontmatter
83 tokensAlways available to the agent
SKILL.md
754 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Before writing, get the specifics
- The invite note (200 characters)
- The first message, after they accept
- Follow-ups
- Never
- Output
Files
SKILL.mdcore3,117 bytes
Read SKILL.md
# li-dm
The invite note is 200 characters. The first DM decides whether there is a
second one. Neither is a pitch.
## Before writing, get the specifics
Ask for, in one batched question:
1. **Who** - name, role, company.
2. **The hook** - the actual reason to reach out now. A post they wrote, a
thing their company shipped, a mutual connection, a talk they gave. Not
"they fit my ICP".
3. **What the user wants** - a conversation, a referral, a job, a sale. BeView the complete source on GitHubli-human
When your agent uses it
Strip the machine fingerprint out of any draft - em dashes, AI slop words, invisible watermark characters - and score it against a five-check detection panel before it goes out. Use whenever text needs to sound human, when the user says humanize, "does this sound like AI", "remove the em dashes", "de-slop this", "will this get flagged", or before any LinkedIn post, comment, reply or DM is shown to the user.
What it loads into context
Frontmatter
114 tokensAlways available to the agent
SKILL.md
1,088 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- What gets fixed automatically
- What does NOT get fixed automatically
- The five checks
- Say this honestly
- Order of operations
Scripts executed separately
detect.pyhumanize.py
Files
SKILL.mdcore4,522 bytesSKILL.mdcore4,522 bytesdetect.pyruns8,526 byteshumanize.pyruns9,460 bytesslop.jsonasset15,874 bytes
Read SKILL.md
# li-human
Two tools live in this folder and they both actually run. Use them. Do not
eyeball this.
```bash
python3 humanize.py draft.txt --report # clean it, show what changed
python3 detect.py draft.txt # score it, five checks
python3 detect.py before.txt after.txt # prove the delta
```
Both read `slop.json`, which is the lexicon: 100+ stock words and phrases with
plain-English replacements, 17 invisible character classes, 11 typographic
substitutions, and 11 structural tells. It is meant to be edited. If the userView the complete source on GitHubli-inbox
When your agent uses it
Triage the LinkedIn inbox - sort connection requests and DMs into leads, recruiters, peers and spam, and draft the replies worth sending. Use when the user says "my inbox is a mess", "triage my DMs", "should I reply to this", pastes a batch of LinkedIn messages, or is drowning in connection requests.
What it loads into context
Frontmatter
86 tokensAlways available to the agent
SKILL.md
766 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Input
- Sort into five
- Detecting a sequence
- Replies
- Output
Files
SKILL.mdcore2,892 bytes
Read SKILL.md
# li-inbox
Most LinkedIn inboxes are 80% noise, and the cost of that noise is that the
20% goes unanswered for a week. This skill separates them, then writes only
what is worth writing.
## Input
The user pastes the messages. Screenshots are fine. Do not log into their
account or read their inbox with a browser tool.
## Sort into five
| bucket | signal | action |View the complete source on GitHubli-plan
When your agent uses it
Build the week on LinkedIn - what to post, when to post it, and who to engage with. Use when the user says "plan my week", "what should I post", "content calendar", "I have nothing to post about", or wants a posting schedule and an engagement list.
What it loads into context
Frontmatter
76 tokensAlways available to the agent
SKILL.md
961 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Input
- What to post
- When to post
- Who to engage with
- Output
Files
SKILL.mdcore3,617 bytes
Read SKILL.md
# li-plan
The control room. Everything else in this pack executes; this decides what
gets executed. Run it once a week, on the same day.
## Input
If `~/.claude/linkedin/voice.md` and `log.md` exist, read them - the plan
should not repeat a theme from the last fortnight. If they do not exist, ask
for four things and write them down:
1. What the user sells, and to whom.
2. The three or four themes they want to be known for.
3. What actually happened this week - a client call, a number, a mistake, aView the complete source on GitHubli-post
When your agent uses it
Write a LinkedIn post from a raw idea using 21 proven hook formulas, in the user's own voice, humanized so it does not read as AI. Use whenever the user wants a LinkedIn post, a hook, a draft for the feed, "post about X", "turn this into a LinkedIn post", or asks for hook options. Produces three hook options, one full draft, and a copy-ready block that is never published without an explicit yes.
What it loads into context
Frontmatter
115 tokensAlways available to the agent
SKILL.md
1,131 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Before you write
- The shape
- The loop
- Rules that make the difference
- Example
Files
SKILL.mdcore4,336 byteshooks.jsonasset9,414 bytes
Read SKILL.md
# li-post
Turns one raw idea into a LinkedIn post that sounds like the person who
posted it.
## Before you write
1. Read `~/.claude/linkedin/voice.md` if it exists. That file is the user's
voice profile: how they talk, what they never say, who they are talking to.
If it does not exist, ask for **three of their own past posts**, infer the
voice from those, and write the file. Do not skip this and do not invent a
voice. A post in the wrong voice is worse than no post.
2. Read `hooks.json` in this folder. All 21 formulas, with templates, filled
examples, what each is for, and how each one usually gets ruined.View the complete source on GitHubli-profile
When your agent uses it
Score a LinkedIn profile out of 100 against a 12-part rubric and rewrite the parts that lose points - headline, about, experience, featured, banner. Use when the user says "optimize my profile", "score my LinkedIn", "rewrite my headline", "fix my about section", or pastes their profile and asks how it reads.
What it loads into context
Frontmatter
90 tokensAlways available to the agent
SKILL.md
813 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Input
- Score it
- Then rewrite, in this order
- Output
Files
SKILL.mdcore3,271 bytesrubric.jsonasset2,462 bytes
Read SKILL.md
# li-profile
A profile is not a resume. A resume answers "what have you done". A profile
answers "should I message this person", and it answers it in about four
seconds, from the headline and the first two lines of the about.
## Input
Ask the user to paste: headline, about section, current role and the last two
experience entries, plus whether they have a banner and featured section. A
screenshot of the top card is enough for the first pass. Do not log into
LinkedIn on their behalf.
## Score itView the complete source on GitHubli-reply
When your agent uses it
Handle the replies under the user's own LinkedIn posts - draft answers to every comment, sorted by which ones are worth answering. Use when the user pastes the comments on their post, says "reply to these", "handle my comments", "someone said X on my post", or is dealing with a critic or a lead in the comments.
What it loads into context
Frontmatter
88 tokensAlways available to the agent
SKILL.md
778 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Input
- Triage first
- How to reply
- Output
Files
SKILL.mdcore3,016 bytes
Read SKILL.md
# li-reply
The reply thread under your own post is where reach is actually decided. Every
reply is a second engagement event on the post, and the first hour of replies
does most of the work. But the value is not equal across comments, so this
skill sorts before it writes.
## Input
The user pastes the comments, ideally with names and roles. Screenshots are
fine. Do not scrape the thread with a browser tool.
## Triage first
View the complete source on GitHubli-repurpose
When your agent uses it
Turn one long asset - a YouTube video, podcast, newsletter, blog post, transcript or client call - into a week of LinkedIn posts. Use when the user says "repurpose this", "turn this into posts", "I have a video/newsletter/ transcript", or pastes a long piece of content and wants it on LinkedIn.
What it loads into context
Frontmatter
86 tokensAlways available to the agent
SKILL.md
682 tokensWhen the skill is activated
Reference documents
0 tokensLoaded on request
Token counts are estimates. Scripts run separately; they are not counted as reference context.
The playbook
- Input
- Extract, do not summarise
- Then build the week
- Output
Files
SKILL.mdcore2,720 bytesSKILL.mdcore2,720 bytes
Read SKILL.md
# li-repurpose
One good long asset contains four to six posts. Most people extract one and
throw the rest away.
## Input
A transcript, an article, a newsletter, a script, a call summary. If the user
gives a YouTube URL and there is a transcript tool available in the session,
use it; otherwise ask them to paste the text. Read the whole thing before
extracting anything.
## Extract, do not summarise
View the complete source on GitHubSkills included
- li-audit
- li-carousel
- li-comment
- li-dm
- li-human
- li-inbox
- li-plan
- li-post
- li-profile
- li-reply
- li-repurpose
Repository facts
- License
- MIT
- Created
- Sep 7, 2026
- Last pushed
- Sep 17, 2026
- Forks
- 524
- Open issues
- 7
- Project activity
- Active
Rank over the last 12 weeks
Now #373 · best #373 · up 160 in 30 days
- #395 on Nov 1
- #393 on Nov 2
- #386 on Nov 3
- #381 on Nov 4
- #378 on Nov 5
- #373 since Nov 6
53 earlier periods
- #915 on Sep 6
- #939 on Sep 7
- #949 on Sep 8
- #936 on Sep 9
- #931 on Sep 10
- #897 on Sep 11
- #893 on Sep 12
- #892 on Sep 13
- #928 on Sep 14
- #914 on Sep 15
- #926 on Sep 16
- #920 on Sep 17
- #895 on Sep 18
- #866 on Sep 19
- #874 on Sep 20
- #887 on Sep 21
- #895 on Sep 22
- #856 on Sep 23
- #794 on Sep 24
- #755 on Sep 25
- #753 on Sep 26
- #758 on Sep 27
- #762 on Sep 28
- #751 on Sep 29
- #704 on Sep 30
- #643 on Oct 1
- #638 on Oct 2
- #593 on Oct 3
- #574 on Oct 4
- #551 on Oct 5
- #546 on Oct 6
- #537 on Oct 7
- #533 on Oct 8
- #518 on Oct 9
- #498 on Oct 10
- #487 on Oct 11
- #475 on Oct 12
- #460 on Oct 13
- #458 on Oct 14
- #450 on Oct 15
- #451 on Oct 16
- #436 on Oct 17
- #434 on Oct 18
- #435 on Oct 19
- #434 on Oct 20
- #430 on Oct 21
- #423 on Oct 22
- #418 on Oct 23
- #408 on Oct 24
- #427 on Oct 25
- #405 on Oct 28
- #404 from Oct 29 to Oct 30
- #399 on Oct 31
Before you install
Local scriptsAutomated signals, not a guarantee
Checked Nov 2, 2026
Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.
Show 4 notes
skills/li-audit/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/li-carousel/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/li-human/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzedskills/li-repurpose/SKILL.md:1Analysis incomplete: Referenced executable target unavailable; not analyzed
- No broad tool permissions
- No dangerous shell commands
- 14 network referencesin 2 files: .claude-plugin/marketplace.json:1 .claude-plugin/plugin.json:5
- No hidden or obfuscated text
- No instruction overrides
- 2 executable scriptsin 2 files: li-human/detect.py:1 li-human/humanize.py:1
- No access to secrets
- No requests to vote in Hot
Show all 16 signals by file
.claude-plugin/marketplace.json
- Network accessline 1
{ "$schema": "https://anthropic.com/claude-code/marketplace.schema.json", - Network accessline 2
"$schema": "https://anthropic.com/claude-code/marketplace.schema.json", - Network accessline 5
"owner": { "name": "Jake Schincariol", "url": "https://opusjake.ai" - Network accessline 6
"name": "Jake Schincariol", "url": "https://opusjake.ai" }, - Network accessline 7
"url": "https://opusjake.ai" - Network accessline 13
"source": "./", "category": "productivity", "homepage": "https://opusjake.ai/r/linkedin-agent" - Network accessline 14
"category": "productivity", "homepage": "https://opusjake.ai/r/linkedin-agent" } - Network accessline 15
"homepage": "https://opusjake.ai/r/linkedin-agent"
.claude-plugin/plugin.json
- Network accessline 5
"author": { "name": "Jake Schincariol", "url": "https://opusjake.ai" - Network accessline 6
"name": "Jake Schincariol", "url": "https://opusjake.ai" }, - Network accessline 7
"url": "https://opusjake.ai" - Network accessline 8
}, "homepage": "https://opusjake.ai/r/linkedin-agent", "repository": "https://github.com/Jakeschincariol/linkedin-agent-skill", - Network accessline 9
"homepage": "https://opusjake.ai/r/linkedin-agent", - Network accessline 10
"repository": "https://github.com/Jakeschincariol/linkedin-agent-skill",
skills/li-human/detect.py
- Executable scriptline 1
#!/usr/bin/env python3
skills/li-human/humanize.py
- Executable scriptline 1
#!/usr/bin/env python3
How the signals fit together
Facts from a static read of the files at the pinned commit. They describe what the code does, not why.
Some files could not be read; the facts below still hold.
Signal confidence: 16 facts
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:1High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:2High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:5High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:6High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:7High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:13High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:14High confidence
- Network access in code of the plugin configuration.claude-plugin/marketplace.json:15High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:5High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:6High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:7High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:8High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:9High confidence
- Network access in code of the plugin configuration.claude-plugin/plugin.json:10High confidence
- Executable script in code of a file that runsli-human/detect.py:1High confidence
- Executable script in code of a file that runsli-human/humanize.py:1High confidence
Works with
| Agent | Status | Evidence | Install to |
|---|---|---|---|
| Claude Code | Native | Manifest .claude-plugin/marketplace.json | .claude/skills/<skill-name>/ |
| Codex | Compatible | Standard SKILL.md skills/li-audit/SKILL.md | .agents/skills/<skill-name>/ |
| Cursor | Compatible | Standard SKILL.md skills/li-audit/SKILL.md | .cursor/skills/<skill-name>/ |
| Gemini CLI | Compatible | Standard SKILL.md skills/li-audit/SKILL.md | .gemini/skills/<skill-name>/ |
| GitHub Copilot | Compatible | Standard SKILL.md skills/li-audit/SKILL.md | .github/skills/<skill-name>/ |
| OpenCode | Compatible | Standard SKILL.md skills/li-audit/SKILL.md | .opencode/skills/<skill-name>/ |
- Native The repository ships a manifest, folder or frontmatter field for this agent.
- Compatible A standard SKILL.md that this agent can read.
- Unknown No evidence either way.
Derived automatically from paths, manifests and frontmatter. Not tested on each agent.
Add this badge to your README
It updates every night and links to this page.
[](https://hotskills.dev/skill/jakeschincariol-linkedin-agent-skill/)