Agent skill

Post Scorer

by charlie947 in charlie947/social-media-skills

Score a LinkedIn post using real performance data. An agent skill from charlie947/social-media-skills.

MITAuto-check passedWriting & Content

Install Post Scorer

skills CLI
$ npx skills add charlie947/social-media-skills --skill post-scorer -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install charlie947/social-media-skills post-scorer --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/charlie947/social-media-skills.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/post-scorer .claude/skills/post-scorer && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
post-scorer
GitHub stars
3.8k
Token cost
~2.4k tokens
SKILL.md length
1,210 words
Files
1
Skills in repo
15
Repo updated
First seen
Licence
MIT

At a glance

Score a LinkedIn post using real performance data. An agent skill from charlie947/social-media-skills.

  • Works in 6 steps: Get the post → Load scoring data → Analyse the top performers → …
  • The user says score my post
  • SKILL.md covers Codex and Claude runtime, CRITICAL: Auto-start on load, Step 1. Get the post and Step 2. Load scoring data, plus 5 more sections
  • Instructions only: no scripts, shell commands, URLs or credentials in SKILL.md

What it does

Post Scorer is an agent skill from charlie947/social-media-skills. Score a LinkedIn post using real performance data. Pulls the user's own post history via Apify (or uses cached data) to identify what actually performs, then scores the draft against those patterns. Use this skill whenever the user says "score my post", "review my post", "rate this post", "give me feedback", "how good is this post", or pastes a LinkedIn post and asks for critique. Separates historical comparisons from an explicitly labelled editorial-only fallback. Designed for live scoring at events and everyday…

Its SKILL.md is about 2.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Writing & Content, covering Social media posts and Web scraping. It works with LinkedIn and Apify. The licence is MIT.

When your agent uses it

  • The user says score my post
  • Give me feedback
  • How good is this post
  • Pastes a LinkedIn post and asks for critique

Example prompts

  • “score my post”
  • “review my post”
  • “rate this post”
  • “/post-scorer”

Workflow steps

6 steps, taken from the step headings in SKILL.md.

  1. Get the post
  2. Load scoring data
  3. Analyse the top performers
  4. Score the post
  5. Output the scorecard
  6. Offer next steps

What it can do on your machine

Read from SKILL.md and the folder at commit 8cefb5b. 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

    No scripts in the folder and no shell commands in SKILL.md.

    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

Post Scorer loads about 2.4k tokens when it runs. Until then it costs about 136 tokens; SKILL.md has 1,210 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~136
When it runs · the whole SKILL.md, loaded when a task matches
~2.4k

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); files beside SKILL.md are not scanned.

SKILL.md

The full file from charlie947/social-media-skills at commit 8cefb5b, republished under its MIT licence (© charlie947). 1,210 words, ~2,376 tokens.

Download SKILL.mdSave it as .claude/skills/post-scorer/SKILL.md (or your agent's skills folder).
name
post-scorer
description
Score a LinkedIn post using real performance data. Pulls the user's own post history via Apify (or uses cached data) to identify what actually performs, then scores the draft against those patterns. Use this skill whenever the user says "score my post", "review my post", "rate this post", "give me feedback", "how good is this post", or pastes a LinkedIn post and asks for critique. Separates historical comparisons from an explicitly labelled editorial-only fallback. Designed for live scoring at events and everyday post review.

Post Scorer

Codex and Claude runtime

  • Use this skill in Codex or Claude with the tools actually available in the current task. AskUserQuestion examples describe the questions, not a required API: use an available question tool within its limits, or ask in chat. Reuse answers and source material already supplied.
  • Work in the user-selected project. Read its about-me.md, voice.md and relevant brand files before personalised work. Confirm the intended author if files conflict or contain starter defaults. Ask for missing facts or run voice-builder; never inherit the maintainer's identity, accounts or private files.
  • Resolve bundled references/ relative to this skill folder. For an explicitly requested profile refresh, read and update the canonical about-me.md, voice.md or newsletter-voice.md in place, preserving unrelated user facts and rules. Consumers must reread those canonical files. Use a new filename only for new deliverables that would collide with unrelated existing files. Installation alone never starts an interview or writes files. Do not write persistent learnings unless requested.
  • Use supplied evidence first. Verify external claims through available search/source tools when needed. If a source or integration is unavailable, name the missing capability and offer supplied text/export input. Never invent facts, first-person experience, metrics or a successful tool run.
  • Connect only services needed for the chosen route through the user's existing account. Never print credentials or overwrite connections. Drafting, saving and reviewing do not authorise publishing, sending messages or changing accounts.

CRITICAL: Auto-start on load

When this skill triggers, go straight to Step 1. Do not summarise. Do not explain the scoring method. Start immediately.

Step 1. Get the post

If the user already pasted a post in the same message, use it. Otherwise say:

Paste the LinkedIn post you want scored.

Wait for the post.

Step 2. Load scoring data

The scorer needs two things: the user's voice system and real performance data.

Voice system

Read about-me.md and voice.md from the project if they exist. If missing, note it and score without voice matching.

Performance data

Check for user-supplied exports or cached post data in the selected project. Verify the author, collection date and coverage before using it. Never search another user's folders or fall back to the maintainer's benchmarks.

If data is missing, offer:

  1. Use an uploaded export of the user's posts and aggregate engagement counts.
  2. Fetch the user's post bodies and aggregate counts with their authorised Apify connection. Confirm the account, scope and current cost before a paid run. Verify the actor's current documented input schema before calling it; do not guess fallback actor inputs.
  3. Give an editorial review now, with performance comparison marked unavailable.

For an Apify run, apimaestro/linkedin-profile-posts is the existing provider route. Use a small requested batch (up to 100 posts). Request post bodies and aggregate counts only. Never scrape comments or replies, including through deepScrape or numComments. If the actor cannot exclude comment bodies, use a different verified post-only route or request an export. Do not run a comments scrape then discard it afterwards.

Save the resulting permitted post data under outputs/post-scorer/ in the project with the author and collection date. If Apify is unavailable, preserve the draft and offer the export/editorial routes. Do not claim the history was fetched.

Step 3. Analyse the top performers

When performance data is available, run this analysis before scoring:

  1. Calculate engagement score for every post: total_reactions + (aggregate_comment_count x 3), an editorial weighting rather than private reach analytics
  2. Identify the top 10% of posts by engagement score
  3. From those top posts, extract:
    • Hook types that appear most often (contrarian, number-led, bold claim, personal story, question, news)
    • Average post length (word count)
    • Format distribution (text only, image, carousel, video)
    • CTA patterns (newsletter mention, comment gate, repost ask, question, none)
    • Topic clusters that over-index on engagement
    • Sentence rhythm (average sentence length, paragraph breaks per post)
  4. Also note the bottom 10% patterns to identify what fails

Record the source, date, sample size and patterns in this review. Do not write persistent memory unless requested. Unknown counts are missing, not zero; say when the sample is too small or selected to support a performance comparison.

Step 4. Score the post

Score across 5 criteria, each 1 to 10. Separate editorial judgement from measured historical comparisons. If neither a voice profile nor confirmed author samples exist, mark Voice match unavailable and report the total over 40; otherwise use 50. No numerical total implies predicted performance.

Show full SKILL.md (478 more words)Show less
Hook strength (1 to 10)

Compare the draft's opening line to the hook types in the top 10%.

  • Does it use a hook type that historically performs for this author?
  • Is it specific with a number, name, or concrete detail?
  • Would it stop a scroll based on what actually stops scrolls in their data?
  • With history, cite the relevant pattern; without it, label the hook score editorial and leave historical fit unavailable
Voice match (1 to 10)

If voice.md exists:

  • Does the post match tone, rhythm, sentence length from voice.md?
  • Does it violate any rule in voice.md's absence patterns section (what the voice never does)?
  • Does the sentence length match the average from their top performers? If no voice files: use confirmed author samples from their post data. If neither is available, mark this criterion unavailable.
Value density (1 to 10)

Compare to the user's top-performing posts:

  • Do their best posts teach, give steps, share data, or tell stories?
  • Does this draft match that value pattern?
  • Is the takeaway specific enough that someone would save or share it?
  • Compare word count to their top 10% average. Flag if way over or under.
Structure and format (1 to 10)

Based on their data:

  • What format (text, image, carousel) gets the most engagement for them?
  • Does the draft's structure match the line break and paragraph rhythm of top posts?
  • Is the post scannable on mobile?
  • Does the CTA match patterns from their best performers?
Publish readiness (1 to 10)
  • Are all claims supported, required items covered, and edits complete? Do not infer authorship from style.
  • Would this post blend naturally into their feed based on their posting history?
  • Are there any red flags: banned words listed in voice.md's absence patterns, generic phrases, corporate tone?
  • Is it the right length compared to their top performers?

Step 5. Output the scorecard

Output in a code block:

LINKEDIN POST SCORE

Data source: [verified author export / verified Apify results / editorial only]
Posts analysed: [number or unavailable]
Top 10% avg engagement: [measured number or unavailable]

Hook strength:         [X] / 10  [hook type detected]
Voice match:           [X] / 10
Value density:         [X] / 10
Structure and format:  [X] / 10  [format: text/image/carousel]
Publish readiness:     [X] / 10
----------------------------------------
TOTAL:                 [XX] / [50 or 40, excluding unavailable voice]

VERDICT: [One sentence referencing specific data]

TOP PERFORMER COMPARISON:
Your top posts average [X] words, use [hook type] hooks,
and include [CTA pattern]. This draft [matches/differs] because [specific reason].

FIXES:
1. [Specific fix backed by data, e.g. "Your top 10% posts open with numbers. This opens with a question. Switch to a stat."]
2. [Second fix backed by data]
3. [Third fix if needed]

Cite actual evidence for historical comparisons. For editorial-only review, omit the top-performer comparison and give specific copy/structure fixes labelled editorial. Never fill the template with invented metrics. Check every required roster item or step against the exact draft before scoring.

Step 6. Offer next steps

After the scorecard:

Want me to rewrite the weakest section using patterns from your top posts, or ship it?

If rewrite requested, apply the fixes and output the revised post in a code block.

Rules

  • Always try to use real data before falling back to generic advice.
  • Mark each finding as sourced/history-based or editorial judgement.
  • A high editorial score does not establish historical fit or predict reach.
  • Be honest. A generous scorer is useless.
  • If data is stale (14+ days old), suggest a refresh before scoring.
  • Inform the user before running an Apify scrape (costs money).
  • Never use em dashes in any output.
  • British English throughout.
  • Keep the scorecard compact. It needs to look good on a big screen at events.

© charlie947, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/post-scorer of charlie947/social-media-skills.

Open the folder on GitHubat commit 8cefb5b

Compare with similar skills

Post Scorer 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.

Post Scorer compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Post Scorer this skillcharlie947/social-media-skills3.8k—~2.4kAutomated safety check: PassMIT
Linkedin Engager Analyticssergebulaev/linkedin-skills4.4k1 repos~1.4kAutomated safety check: PassMIT
Linkedin Commenter Extractorgooseworks-ai/goose-skills1.2k1 repos~722Automated safety check: PassMIT
Linkedin Post Researchgooseworks-ai/goose-skills1.2k1 repos~1.3kAutomated safety check: NotesMIT
Fullenrich Content EngagersOthmane-Khadri/YALC-the-GTM-operating-system318—~1.5kAutomated safety check: WarnMIT
Linkedin Comment To Outreachgethouston/houston118—~2.1kAutomated safety check: PassMIT

Similar skills

  • Linkedin Engager Analytics

    sergebulaev/linkedin-skills

    Pull the people who liked or commented on any LinkedIn post and segment them by ICP fit (peer / aspirational / prospect / other).

    4.4k GitHub starsUsed in 1 repo~1.4k tokens
    Writing & ContentAuto-check passed
  • Linkedin Commenter Extractor

    gooseworks-ai/goose-skills

    Extract commenters from LinkedIn posts via Apify. An agent skill from gooseworks-ai/goose-skills.

    1.2k GitHub starsUsed in 1 repo~722 tokens
    Writing & ContentAuto-check passed
  • Linkedin Post Research

    gooseworks-ai/goose-skills

    Search LinkedIn posts by keywords, sorted by engagement or date.

    1.2k GitHub starsUsed in 1 repo~1.3k tokens
    Writing & ContentAuto-check: notes
  • Fullenrich Content Engagers

    Othmane-Khadri/YALC-the-GTM-operating-system

    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…

    318 GitHub stars~1.5k tokensUpdated 1 mo ago
    Writing & ContentAuto-check: warnings
  • Turn a single LinkedIn post URL into a paused cold email campaign in Instantly.

    118 GitHub stars~2.1k tokensUpdated today
    Writing & ContentAuto-check passed
  • Social Fetch

    coreyhaines31/makerskills

    When you or another skill needs to fetch the content of a social media post by URL — tweet, X thread, LinkedIn post, Instagram post, TikTok video, Bluesky post, Reddit thread, Mastodon status…

    851 GitHub stars~1.9k tokensUpdated 2 days ago
    Writing & ContentAuto-check passed

More from charlie947/social-media-skills

All 15 skills in this repo
  • Newsletter Voice

    charlie947/social-media-skills

    Build newsletter writing instructions inside a Codex or Claude project.

    3.8k GitHub stars~2.5k tokensUpdated 26 days ago
    Auto-check passed
  • Voice Builder

    charlie947/social-media-skills

    Build a personalised voice profile inside a Codex or Claude project from a short interview plus 3 to 5 sample pieces of writing.

    3.8k GitHub stars~3.3k tokensUpdated 26 days ago
    Auto-check passed
  • Content Matrix

    charlie947/social-media-skills

    Generate 24 to 40 LinkedIn post ideas in a single table by pairing the user's content pillars with 8 proven content formats.

    3.8k GitHub stars~1.6k tokensUpdated 26 days ago
    Auto-check passed
  • Gemini Carousel

    charlie947/social-media-skills

    Generate a branded slide-by-slide LinkedIn carousel using Gemini.

    3.8k GitHub stars~1.7k tokensUpdated 26 days ago
    Auto-check passed
  • Hook Generator

    charlie947/social-media-skills

    Generate 6 clickbait-style LinkedIn hook variations for any topic.

    3.8k GitHub stars~1.1k tokensUpdated 26 days ago
    Auto-check passed
  • Niche Research

    charlie947/social-media-skills

    Surface the 20 most relevant stories in a niche from the last 7 days using available live research tools.

    3.8k GitHub stars~1.7k tokensUpdated 26 days ago
    Auto-check passed

Works with

Questions about Post Scorer

What does Post Scorer do?

Score a LinkedIn post using real performance data. An agent skill from charlie947/social-media-skills. Post Scorer is an agent skill from charlie947/social-media-skills. Score a LinkedIn post using real performance data.

When should I use Post Scorer?

Post Scorer fits situations like: the user says score my post; give me feedback; how good is this post; pastes a LinkedIn post and asks for critique.

How do I install Post Scorer in Claude Code?

Run `npx skills add charlie947/social-media-skills --skill post-scorer -a claude-code`. Or copy the skill folder (skills/post-scorer in charlie947/social-media-skills) into .claude/skills/post-scorer in your project. Claude Code loads it when a task matches its description.

How do I install Post Scorer in Codex?

Run `npx skills add charlie947/social-media-skills --skill post-scorer -a codex`. Or copy the skill folder (skills/post-scorer in charlie947/social-media-skills) into .agents/skills/post-scorer in your project. Codex loads it when a task matches its description.

Can I use Post Scorer 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 charlie947/social-media-skills --skill post-scorer -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/post-scorer, .gemini/skills/post-scorer, .github/skills/post-scorer and .opencode/skills/post-scorer in your project.

What does Post Scorer need to run?

SKILL.md names no scripts, command-line tools or credentials: Post Scorer is instructions for the agent only.

Does Post Scorer 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 Post Scorer 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. Review the folder before installing.

What licence does Post Scorer use?

Post Scorer is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Post Scorer use?

About 2.4k tokens (SKILL.md is roughly 9.5k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Post Scorer?

Skills that share tags, products or a category with Post Scorer: Linkedin Engager Analytics (sergebulaev/linkedin-skills, 4.4k stars), Linkedin Commenter Extractor (gooseworks-ai/goose-skills, 1.2k stars), Linkedin Post Research (gooseworks-ai/goose-skills, 1.2k stars) and Fullenrich Content Engagers (Othmane-Khadri/YALC-the-GTM-operating-system, 318 stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Post Scorer?

charlie947 (a GitHub user) maintains it in charlie947/social-media-skills, which has 3,844 GitHub stars. The repository holds 15 skills in this directory. The repository was last updated on September 15, 2026.

Source: charlie947/social-media-skills on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.