Install the "linkedin-engagement-analytics" agent skill from https://github.com/borghei/Claude-Skills/tree/main/tools/linkedin/linkedin-engagement-analytics into .claude/skills/linkedin-engagement-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-engagement-analytics", then confirm the skill loads.
Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Type this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
skills CLI
$ npx skills add borghei/Claude-Skills --skill linkedin-engagement-analytics -a codex
Project install goes to .agents/skills/; add -g for ~/.codex/skills/.
Install the "linkedin-engagement-analytics" agent skill from https://github.com/borghei/Claude-Skills/tree/main/tools/linkedin/linkedin-engagement-analytics into .agents/skills/linkedin-engagement-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-engagement-analytics", then confirm the skill loads.
Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add borghei/Claude-Skills --skill linkedin-engagement-analytics -a cursor
Project install goes to .agents/skills/; add -g for ~/.cursor/skills/.
Install the "linkedin-engagement-analytics" agent skill from https://github.com/borghei/Claude-Skills/tree/main/tools/linkedin/linkedin-engagement-analytics into .cursor/skills/linkedin-engagement-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-engagement-analytics", then confirm the skill loads.
Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
skills CLI
$ npx skills add borghei/Claude-Skills --skill linkedin-engagement-analytics -a gemini-cli
Project install goes to .agents/skills/; add -g for ~/.gemini/skills/.
Install the "linkedin-engagement-analytics" agent skill from https://github.com/borghei/Claude-Skills/tree/main/tools/linkedin/linkedin-engagement-analytics into .gemini/skills/linkedin-engagement-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-engagement-analytics", then confirm the skill loads.
Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Installs for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
skills CLI
$ npx skills add borghei/Claude-Skills --skill linkedin-engagement-analytics -a github-copilot
Project install goes to .agents/skills/; add -g for ~/.copilot/skills/.
Install the "linkedin-engagement-analytics" agent skill from https://github.com/borghei/Claude-Skills/tree/main/tools/linkedin/linkedin-engagement-analytics into .github/skills/linkedin-engagement-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-engagement-analytics", then confirm the skill loads.
GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
skills CLI
$ npx skills add borghei/Claude-Skills --skill linkedin-engagement-analytics -a opencode
OpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
Install the "linkedin-engagement-analytics" agent skill from https://github.com/borghei/Claude-Skills/tree/main/tools/linkedin/linkedin-engagement-analytics into .opencode/skills/linkedin-engagement-analytics/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-engagement-analytics", then confirm the skill loads.
OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
Facts
Skill name
linkedin-engagement-analytics
GitHub stars
881
Token cost
~3.7k tokens
SKILL.md length
1,945 words
Files
11 (incl. scripts, references, assets)
Skills in repo
349
Repo updated
First seen
Licence
MIT
At a glance
Segments who reacted to and commented on a post from a CSV or JSON export, and says whether it reached the intended audience.
Works in 4 steps: Remove unneeded columns from the export… → Copy… → Run the segmenter. → …
Reviewing a posts engagers
SKILL.md covers When to use this skill, Inputs the skill expects, Clarify First and Workflows, plus 3 more sections
Runs Python scripts from its folder; calls python3
What it does
Linkedin Engagement Analytics is an agent skill from borghei/Claude-Skills. Segments who reacted to and commented on a post from a CSV or JSON export, and says whether it reached the intended audience. Use when reviewing a post's engagers, checking audience fit, or building a baseline.
Its SKILL.md is about 3.7k tokens, which your agent loads only when the skill is triggered. The skill folder holds 13 other files, including scripts, reference files and assets (for example `assets/post_readout_template.md`, `assets/sample_engagers_earlier_post.json` and `assets/sample_target_audience.json`).
It sits in Writing & Content, covering CSV and tabular files. It works with LinkedIn. The repository describes itself as: 385 AI skills, 77 expert agents, and 900 stdlib Python tools for every team: engineering, PM, marketing, C-level, compliance, business ops, research, and a LinkedIn toolkit… The licence is MIT.
When your agent uses it
Reviewing a posts engagers
Checking audience fit
Building a baseline
Example prompts
“Use the linkedin-engagement-analytics skill to segment who reacted to and commented on a post from a CSV or JSON export, and says whether it reached…”
“/linkedin-engagement-analytics”
Requirements
Python 3
Workflow steps
4 steps, taken from the first numbered list in SKILL.md.
1Remove unneeded columns from the export (links, locations, identifiers)
2Copy assets/target_audience_template.json and describe the intended
3Run the segmenter.
4The agent reports coverage, the core share with its interval, the largest
What it can do on your machine
Read from SKILL.md and the folder at commit 4a698e8. It shows what the files ask for, not the result of running them.
Tool permissions
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Runs code
Ships 2 files in scripts/ (Python), which the agent can run.
Shell commands in SKILL.md call:
python3
From the folder's file list and the shell code blocks in SKILL.md.
Network
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Credentials
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Context cost
Linkedin Engagement Analytics loads about 3.7k tokens when it runs, and up to ~11k if it reads all its reference files. Until then it costs about 60 tokens; SKILL.md has 1,945 words of instructions outside code blocks.
Always· name and description, kept in context so the agent knows when to use it
~60
When it runs· the whole SKILL.md, loaded when a task matches
~3.7k
With references· SKILL.md plus every file in references/, read only if the agent opens them
~11k
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
Safety
Auto-check passed
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); the scripts in this folder are not scanned.
Download SKILL.mdSave it as .claude/skills/linkedin-engagement-analytics/SKILL.md (or your agent's skills folder). This skill also uses 10 other files; get the full folder from GitHub.
name
linkedin-engagement-analytics
description
Segments who reacted to and commented on a post from a CSV or JSON export, and says whether it reached the intended audience. Use when reviewing a post's engagers, checking audience fit, or building a baseline.
A post gets two hundred reactions and the author concludes it worked. Nobody
checks who the two hundred were. Often a third are colleagues, a third are
recruiters and vendors, and the people the post was written for are a handful.
The next post is modelled on the "successful" one, and the account drifts
toward whatever earns the most reactions from the widest crowd, away from the
readers it was meant to reach.
This skill answers a narrower question than "how did it do": of the people who
responded, what share were the people it was for, and is that better or worse
than this author's own recent posts? It classifies each engager's headline
into a seniority band and a function, sets aside colleagues, compares the mix
with a target audience written beforehand, and states the result with an
interval so that noise is not reported as a change. It works offline, from
an export the user supplies. It does not collect engagement data, log in to
anything, or call any service.
Personal data. An export contains real people's names, job titles and
employers. Keep it local, remove columns the analysis does not need, report
segments and never individuals, add nothing about anyone from another source,
and delete the file once the readout is written. The scripts print aggregates
only. The agent does not produce contact lists, per-person notes or lookups
from an export, whoever asks. Full rules: references/data-handling.md.
Scope boundary. This skill describes the audience of a post after the
fact. It does not write or polish posts (linkedin-post-writer,
linkedin-humanizer), assess opening lines (linkedin-hook-analyzer), or
write comments and replies (linkedin-comment-writer,
linkedin-reply-manager). It does not follow conversations over time
(linkedin-thread-tracker), plan or reuse content (linkedin-content-planner,
linkedin-content-repurposer), or interview for stories
(linkedin-story-interviewer). Profiles are linkedin-profile-optimizer;
team programmes and their measurement are linkedin-employee-advocacy. Each
is independent of this one.
When to use this skill
A post drew a response and the author wants to know whether it reached the intended readers
Reactions are rising and inbound from the right people is not
An author wants a baseline of their own audience mix before changing what they write
Two subjects or framings need comparing on who they attract, not how many
A sponsor asks whether content is reaching a named segment and the answer so far is a reaction count
An export exists and someone is about to turn it into a contact list (use this instead, and say why)
Inputs the skill expects
One export per post, CSV or JSON, with at least a headline column (references/segmentation-method.md §2 lists accepted column names)
How and when each export was produced; it must be the user's own post and a permitted method
A target audience file written before the export is read: seniority bands, functions, title keywords, optionally named organisations
Every name the user's own employer goes by, so colleagues can be set aside
Optionally, the user's own goal for core share and a trailing baseline from earlier posts
Clarify First
Before analysing, confirm these inputs. If any is unknown or vague, ASK — do not assume:
Who the post was written for — the whole verdict is measured against it; a target invented after reading the export describes whoever turned up
Where the export came from and whose post it is — decides whether the analysis should run at all, and which limits go in the readout
The user's own-company names — without them colleagues count as audience and the fit figure is inflated
Whether a baseline exists — with one, the readout can say above, in line or below; without one, this run becomes the first baseline point and no verdict is given
Stop rule: ask only the 2-3 that most change the output. If the user says "just draft it," proceed and list your assumptions at the top of the artifact.
Workflows
Workflow 1 — Quick start: read one post's audience
Remove unneeded columns from the export (links, locations, identifiers)
and save it locally.
Copy assets/target_audience_template.json and describe the intended
reader. Check the band and function names with --list-rules.
Run the segmenter.
The agent reports coverage, the core share with its interval, the largest
segments and the limits, using the script output only. It does not open
the raw rows or name anyone.
Workflow 3 — Tune the classification, then write the readout
If coverage is low, test the headlines that are typical of the user's
sector one at a time and extend the patterns
(references/segmentation-method.md §11).
Re-run earlier exports so both sides of any comparison use the same rules.
Fill in assets/post_readout_template.md. Verify that no cell describes a
single person and that the wording of the verdict matches where the
baseline sits relative to the interval.
Optionally use --fail-on-miss as a quality gate in a content review:
it exits 1 only when the sample is adequate and the core share is below
the goal (or the baseline if no goal is set).
bash
python3 tools/linkedin/linkedin-engagement-analytics/scripts/segment_rules.py \
--classify "Head of Developer Experience at Example Energy"
python3 tools/linkedin/linkedin-engagement-analytics/scripts/engager_segmenter.py \
--input tools/linkedin/linkedin-engagement-analytics/assets/sample_engagers.csv \
--target tools/linkedin/linkedin-engagement-analytics/assets/sample_target_audience.json \
--min-sample 40 --fail-on-miss
Decision frameworks
Reading the verdict
Where your baseline or goal sits
Say
Do
Below the whole interval
[RECOMMENDED] "Above our baseline"
Note the subject and framing; repeat once before concluding
Inside the interval
[RECOMMENDED] "In line with our baseline"
Report no change, in either direction
Above the whole interval
[RECOMMENDED] "Below our baseline"
Look at the adjacent and off groups to see who came instead
Sample under the minimum
"Too few to judge"
Describe counts; pool with other posts on the subject
No baseline or goal
"First baseline point"
Record it; judge nothing yet
What the mix is telling you
Pattern
Likely reading
Next post
High volume, low core share, many off
The subject is broad; it travelled beyond the intended reader
Narrow the subject to a problem only the target has
Large adjacent group: right function, lower seniority
Practitioners found it useful
Decide whether they are in fact the audience; they often forward upward
Large adjacent group: right seniority, other functions
It read as general leadership content
Add the specifics of your field
Internal share above a third
The post mostly reached colleagues
Fewer company announcements; more that stands alone for an outsider
Core share higher among commenters than reaction-only
The target had something to say
[EXPERIMENTAL] Try ending on a question for that reader and compare over several posts
Many sales and recruiting titles
Vendors treat the comment section as a lead source
Expect it; exclude nothing, but do not count it as reach
Show full SKILL.md (786 more words)Show less
What to compare with
Comparison
Verdict
This post against your own trailing baseline
[PROVEN] The only comparison that controls for your audience, sector and account size
This post against a goal you set from your baseline
[RECOMMENDED]
Subject A against subject B, several posts each
[RECOMMENDED]
Your figures against published industry benchmarks
No. Different accounts, sectors and definitions; not comparable
One colleague's figures against another's
No. Audience differences swamp everything else
What may be done with an export
Request
Answer
Segment the audience and compare with a target
Yes
Count engagers from named organisations
Yes, as a count
List the directors who reacted
No. Per-person output is outside this skill
Look up the people with unclear headlines
No. No enrichment
Draft messages to the engagers
No. Different purpose from the one the data serves here
Analyse a competitor's post
No. Own posts only
Anti-Patterns
Counting reactions as reach to the target
Mistake: A post with the highest reaction count of the quarter is declared the model for future posts.
Why it happens: The count is on the post, costs nothing to read, and bigger feels better.
Instead: Segment the engagers. In the sample export an eighth of engagers are colleagues and about a quarter of the classified outsiders are off target; the figure that matters is the core share and its interval, read against the author's own baseline.
Writing the target after reading the list
Mistake: The author looks through who engaged, then defines the target audience as roughly those people.
Why it happens: The target file is filled in at analysis time, when the names are already on screen.
Instead: Write the target when the post is drafted, or at the latest before the export is opened. Record the intent in one sentence. A target that cannot be missed measures nothing.
Turning the export into a prospect list
Mistake: The spreadsheet gains columns for "fit score", "contacted" and "notes", and gets shared with sales.
Why it happens: The names are right there, each one looks like an opportunity, and the step from analysis to outreach feels small.
Instead: Keep the purpose to audience analysis. The scripts print no names for this reason. Answer people who comment or message, as anyone would; do not build a file on people who clicked a reaction. references/data-handling.md §3 sets the line.
Enriching to fix low coverage
Mistake: Half the headlines are slogans, so someone looks each person up to fill in their role and company.
Why it happens: Low coverage looks like a data-quality problem with an obvious manual fix.
Instead: Report coverage as it is. Extend the patterns for recurring titles, add a company column if the source already has one, and otherwise accept that the mix describes the classifiable part.
Reporting noise as a trend
Mistake: "Core share rose from 21% to 28%" goes into a monthly update on the strength of one post with thirty-five engagers.
Why it happens: Two numbers invite a subtraction, and a rise is welcome news.
Instead: Read the interval. If the baseline sits inside it, the correct statement is "in line with our baseline". Wait for a second post in the same direction, or pool posts on the subject.
Borrowing a benchmark
Mistake: The readout says the post was "above the industry average engagement rate".
Why it happens: A sponsor asks whether the result is good, and a published figure offers an easy answer.
Instead: Compare with the author's own trailing history, and say so. Published figures blend accounts unlike yours and rarely define their terms; this skill ships none.
Files
Tools overview and reference documentation for this skill:
File
Purpose
scripts/engager_segmenter.py
Reads one or more CSV or JSON exports, merges duplicates, sets aside colleagues, segments by seniority, function and company, and judges core share against the user's goal and baseline with a Wilson interval; aggregate output only; --fail-on-miss turns it into a gate
scripts/segment_rules.py
Ordered seniority and function patterns, headline splitting, the fit rule, target validation and the interval calculation; --list-rules prints the patterns, --classify tests one headline
references/metrics-layers.md
The four measurement layers, what an export can and cannot show, definitions and formulas, building a trailing baseline, reading intervals, small samples
references/segmentation-method.md
Export sources and format, cleaning, headline parsing, bands and functions, writing a target, fit levels, extending patterns, known weaknesses
references/data-handling.md
Purpose limits, minimisation, local storage, segments-not-dossiers, no enrichment, retention, sharing, untrusted text, rules for an agent
assets/sample_engagers.csv
Invented export of 58 rows with duplicates, colleagues, slogans and a blank headline
assets/sample_engagers_earlier_post.json
Smaller invented export in JSON form, for pooling into a baseline
assets/sample_target_audience.json
Target audience, own-company names, goal and baseline for the sample
assets/target_audience_template.json
Blank target audience file
assets/post_readout_template.md
One-page readout and baseline log that identifies no one
Linkedin Engagement Analytics next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
Linkedin Engagement Analytics compared with similar skills
Skill
Stars
Used in
Tokens
Auto-check
Licence
Repo updated
Linkedin Engagement Analytics this skillborghei/Claude-Skills
A skill your agent uses when the user says "enrich people who engaged with this post", "qualify post engagers with FullEnrich", "scrape and enrich LinkedIn post {URL}", "engagers from this post into…
A skill your agent uses when planning a posting schedule, building a multi-platform content calendar, or reshaping one source asset into channel-native posts across X, LinkedIn, Instagram, Threads…
A skill your agent uses when the user says "activate co-founder network with FullEnrich", "enrich LinkedIn connections export", "qualify my LinkedIn connections CSV", "turn Connections.csv into a…
Segments who reacted to and commented on a post from a CSV or JSON export, and says whether it reached the intended audience. Linkedin Engagement Analytics is an agent skill from borghei/Claude-Skills. Segments who reacted to and commented on a post from a CSV or JSON export, and says whether it reached the intended audience.
When should I use Linkedin Engagement Analytics?
Linkedin Engagement Analytics fits situations like: reviewing a posts engagers; checking audience fit; building a baseline.
How do I install Linkedin Engagement Analytics in Claude Code?
Run `npx skills add borghei/Claude-Skills --skill linkedin-engagement-analytics -a claude-code`. Or copy the skill folder (tools/linkedin/linkedin-engagement-analytics in borghei/Claude-Skills) into .claude/skills/linkedin-engagement-analytics in your project. Claude Code loads it when a task matches its description.
How do I install Linkedin Engagement Analytics in Codex?
Run `npx skills add borghei/Claude-Skills --skill linkedin-engagement-analytics -a codex`. Or copy the skill folder (tools/linkedin/linkedin-engagement-analytics in borghei/Claude-Skills) into .agents/skills/linkedin-engagement-analytics in your project. Codex loads it when a task matches its description.
Can I use Linkedin Engagement Analytics in Cursor, Gemini CLI or GitHub Copilot?
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add borghei/Claude-Skills --skill linkedin-engagement-analytics -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/linkedin-engagement-analytics, .gemini/skills/linkedin-engagement-analytics, .github/skills/linkedin-engagement-analytics and .opencode/skills/linkedin-engagement-analytics in your project.
What does Linkedin Engagement Analytics need to run?
Going by SKILL.md and its folder, Linkedin Engagement Analytics needs Python for the scripts in its folder and the command-line tools its instructions call (python3). Our summary lists: Python 3.
Does Linkedin Engagement Analytics access the network?
SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.
Is Linkedin Engagement Analytics safe to install?
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. The check reads SKILL.md only: the scripts in the folder are not scanned, so read them before running anything.
What licence does Linkedin Engagement Analytics use?
Linkedin Engagement Analytics is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.
How many tokens does Linkedin Engagement Analytics use?
About 3.7k tokens (SKILL.md is roughly 15k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 7.6k tokens, read only when the agent opens those files.
What are the alternatives to Linkedin Engagement Analytics?
Skills that share tags, products or a category with Linkedin Engagement Analytics: Fullenrich Content Engagers (Othmane-Khadri/YALC-the-GTM-operating-system, 317 stars), Competitor Engagers (growthenginenowoslawski/coldoutboundskills, 742 stars), Champion Tracker (majiayu000/claude-skill-registry, 666 stars) and Social Publisher (ericrisco/rsc-harness, 167 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
Who maintains Linkedin Engagement Analytics?
borghei (a GitHub user) maintains it in borghei/Claude-Skills, which has 881 GitHub stars. The repository holds 349 skills in this directory. The repository was last updated on October 7, 2026.
Source: borghei/Claude-Skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.