Model or dataset
Jakeschincariol/linkedin-agent-skill avatar
Jakeschincariol/linkedin-agent-skill

linkedin-agent-skill: eleven Claude Code commands for LinkedIn content that stops at the draft

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.

1,792 stars258 forksPythonMIT

At a glance

What is it?
linkedin-agent-skill is a set of eleven MIT-licensed Claude Code skills for writing LinkedIn content, from posts and comments to profile rewrites and weekly plans. Every command ends at a copy-ready block you paste yourself; the humanizer ships two local Python scripts that strip AI markers without calling any external service.
Who is it for?
Use this project if you write LinkedIn content with Claude Code and want structured help across posts, comments, profiles and DMs. The approval gate is real: nothing posts without your action.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 24 days ago.
What is it written in?
Mainly Python, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 11, 2026, and from our analysis. They are not legal advice.

Editorial analysis

Eleven slash commands for LinkedIn content, none of them posting on your behalf

linkedin-agent-skill is eleven Claude Code skills for managing a LinkedIn presence without any direct connection to LinkedIn. Each is a slash command: /li-post for drafting posts, /li-comment for responding to others' posts, /li-reply for managing threads under your own post, /li-profile for scoring and rewriting your profile, /li-plan for the week's schedule, /li-human for the humanizer, /li-carousel for document posts, /li-repurpose for converting longer content into standalone posts, /li-dm for connection messages, /li-inbox for triaging incoming messages, and /li-audit for reviewing published posts' performance.

Every skill terminates at a copy-ready text block. LinkedIn restricts accounts that automate posting through browser tools or unauthorized apps; any posting API requires approved partner status, which the README cites from LinkedIn's User Agreement. Because of that constraint, nothing is sent to LinkedIn automatically. Claude drafts, you paste.

How /li-post, /li-comment and /li-reply each handle their part of a LinkedIn account

One topic input to /li-post triggers a lookup in hooks.json, which stores 21 formulas, and returns 3 hook variations. A full draft follows, already processed by the humanizer before you see it. /li-comment covers 9 comment types, each matched to the content of the source post. That matching is how the skill avoids producing a generic affirmation when a more specific observation would fit better.

For incoming comments under your own post, /li-reply classifies each one before generating a reply. Five categories cover the range: lead, substance, peer, support and noise. Replies are written in that priority order rather than chronologically. /li-profile uses a 12-part rubric from rubric.json to score your profile out of 100 and sequences rewrites from highest-impact items first. /li-plan writes the week's content schedule to ~/.claude/linkedin/plan.md, including 10 engagement targets. /li-dm produces the 200-character invite note, the first message, and two follow-ups.

Three install paths: paste-and-go, git clone, or plugin marketplace

The first install path requires no terminal: paste the repository URL followed by a confirmation line into a Claude chat. The second is the Claude Code path:

bash
git clone https://github.com/Jakeschincariol/linkedin-agent-skill.git
cp -r linkedin-agent-skill/skills/li-* ~/.claude/skills/

After running these two commands, all eleven slash commands are available globally in Claude Code. The third path uses the plugin system:

bash
/plugin marketplace add Jakeschincariol/linkedin-agent-skill
/plugin install linkedin-agent

For project-local use rather than global, copy the skill folders into your repo's .claude/skills/ directory instead of ~/.claude/skills/. Without a Claude Code installation, pasting any single SKILL.md into a chat activates that skill as a conversational mode. Only /li-human loses meaningful function this way: its two Python scripts are unavailable outside Claude Code, which the README identifies as 'most of the point' of that command.

voice.md is the file every skill reads before writing

All eleven skills read one file before generating output: ~/.claude/linkedin/voice.md. Skip it and the README warns that 'everything comes out sounding like everyone else.' Ten minutes filling in this file affects every command.

Two creation paths exist: copy templates/voice.md from the repository and fill it in, or paste three of your own published posts into Claude and say 'write my voice.md from these.' For anyone with existing posts, the second path is the faster route. For a new account with nothing published, the template is the starting point. No skill checks whether the file exists before running, so the penalty for skipping it is not an error: only output that lacks your patterns.

The humanizer: what humanize.py removes automatically from a draft

/li-human ships two Python scripts that run locally with no external dependencies and no uploads. humanize.py cleans a draft; detect.py scores it. The README gives the full command syntax:

bash
python3 humanize.py draft.txt --report      # clean it, show every change
python3 detect.py draft.txt                  # score it, five checks
python3 detect.py before.txt after.txt       # prove the delta

humanize.py targets three categories of AI-associated markers. On the invisible side, it removes all Unicode formatting controls that keyboards do not produce: zero-width space variants, word joiners, soft hyphens, byte-order marks, Unicode tag characters and specialty non-breaking space variants. These survive copy-paste and are undetectable in text editors. The typography pass converts em dashes to commas, en dashes to hyphens, curly quotes to straight, and ellipses to three dots. The lexicon pass applies 113 word-and-phrase replacements from slop.json with capitalisation preserved and URLs skipped. slop.json is described as meant to be edited.

The five detection checks and why the weakest check pulls 40% of the verdict

detect.py scores a draft on five checks, each from 0 to 100, where higher means more human. BURSTINESS captures how much sentence length varies; AI text tends toward uniformity, which is a signal the check targets. SPECIFICITY counts numbers, names and concrete markers per 100 words. SLOP DENSITY counts lexicon hits per 100 words. FINGERPRINT tracks invisible characters, em dashes and curly quotes per 1,000 characters. VOICE flags contractions, person and structural tells.

The verdict formula adds a floor penalty: 60% of the weight goes to the mean across all five checks, and the remaining 40% comes from whichever single check scores lowest. One weak check drags the final score down harder than its proportional share, reflecting the point that a single distinctive signal is sufficient for an external detector to fire. The README shows this with a sample run: a badly written draft scores 24.8 (FLAGGED); after humanize.py processes it with structural issues still unresolved, the score reaches 69.7 (REVIEW), a gain of +44.9.

What the scripts flag instead of fix, and why REVIEW is the designed ceiling

humanize.py deliberately stops short of PASS. Structural patterns are returned as flags rather than automated corrections: 'It's not just X, it's Y' constructions, rule-of-three triads, one-word rhetorical questions, hashtag walls, reflex engagement bait and uniform sentence length. Restructuring a sentence for natural variation requires human judgement rather than a regex substitution, so the script hands those back.

The five checks are local heuristics and make no calls to GPTZero, Originality, Copyleaks, Winston or Turnitin, which the README names specifically. They measure the same underlying signals those services use, so improving the script's output tends to improve those external scores. But the README states directly that no one can honestly promise 'undetectable.' Code is MIT licensed and the last push was on 2026-09-17.

Editorial conclusion

Use this project if you write LinkedIn content with Claude Code and want structured help across posts, comments, profiles and DMs. The approval gate is real: nothing posts without your action. Skip it if you expect automation that posts to LinkedIn directly; the README is clear that no official API exists for personal profile posting and that browser automation violates LinkedIn's User Agreement. Before relying on the humanizer's scores, note that detect.py is not GPTZero or Originality and cannot guarantee PASS on those platforms. Set up ~/.claude/linkedin/voice.md before using any command.

Frequently asked questions

How do I install linkedin-agent-skill?

Three paths are available: paste the GitHub URL into a Claude chat followed by an install confirmation, run git clone and cp commands in Claude Code, or use /plugin marketplace add followed by /plugin install linkedin-agent. Project-local install copies the skill folders into your repo's .claude/skills/ directory.

What does the /li-human command do?

/li-human runs two local Python scripts: humanize.py removes invisible characters, fixes typography and replaces 113 stock phrases from slop.json, while detect.py scores the result on five checks from 0 to 100. Both scripts run on your machine with no dependencies and nothing is uploaded.

Does linkedin-agent-skill post to LinkedIn automatically?

No. Every skill ends at a copy-ready block that you paste manually. LinkedIn requires approved partner status for any posting API, and the README cites the platform's User Agreement as the reason automating posts through third-party tools restricts accounts.

What is the voice.md file in linkedin-agent-skill?

voice.md lives at ~/.claude/linkedin/voice.md and holds your writing patterns. Every skill reads this file before generating output. You can create it by filling in templates/voice.md or by pasting three of your posts into Claude and asking it to write the file from those.

Can linkedin-agent-skill guarantee that content passes AI detection?

No. The five checks in detect.py are local heuristics that measure the same signals external services use, but the README names GPTZero, Originality, Copyleaks, Winston and Turnitin specifically and states the scripts do not call those services. The README also says no one can honestly promise 'undetectable.'

Official sources

  1. Issues
  2. Jakeschincariol/linkedin-agent-skill on GitHub
  3. License: MIT
  4. Project website
  5. README
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/jakeschincariol-linkedin-agent-skill.svg)](https://hysenlabs.com/projects/jakeschincariol-linkedin-agent-skill)