Socialite Development
hexlet-volunteers/hexlet-sicp
Manages OAuth social authentication with Laravel Socialite. An agent skill from hexlet-volunteers/hexlet-sicp.
A skill your agent uses when wiring an app to LinkedIn's organic Posts / Community Management API — 3-legged OAuth, publishing text, article or document posts to a member profile or company page…
$ npx skills add ericrisco/rsc-harness --skill linkedin-api -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness linkedin-api --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/linkedin-api .claude/skills/linkedin-api && rm -rf skills-srcUse ~/.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/
Install the "linkedin-api" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/linkedin-api into .claude/skills/linkedin-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-api", 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.
$skill-installer install https://github.com/ericrisco/rsc-harness/tree/main/skills/linkedin-apiType 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.
$ npx skills add ericrisco/rsc-harness --skill linkedin-api -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness linkedin-api --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/linkedin-api .agents/skills/linkedin-api && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "linkedin-api" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/linkedin-api into .agents/skills/linkedin-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-api", 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.
$ npx skills add ericrisco/rsc-harness --skill linkedin-api -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness linkedin-api --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/linkedin-api .cursor/skills/linkedin-api && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "linkedin-api" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/linkedin-api into .cursor/skills/linkedin-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-api", 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.
$ gemini skills install https://github.com/ericrisco/rsc-harness.git --path skills/linkedin-api--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add ericrisco/rsc-harness --skill linkedin-api -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness linkedin-api --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/linkedin-api .gemini/skills/linkedin-api && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "linkedin-api" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/linkedin-api into .gemini/skills/linkedin-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-api", 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.
$ gh skill install ericrisco/rsc-harness linkedin-apiInstalls 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).
$ npx skills add ericrisco/rsc-harness --skill linkedin-api -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/linkedin-api .github/skills/linkedin-api && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "linkedin-api" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/linkedin-api into .github/skills/linkedin-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-api", 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.
$ npx skills add ericrisco/rsc-harness --skill linkedin-api -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install ericrisco/rsc-harness linkedin-api --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/ericrisco/rsc-harness.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/linkedin-api .opencode/skills/linkedin-api && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "linkedin-api" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/linkedin-api into .opencode/skills/linkedin-api/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "linkedin-api", 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.
linkedin-apiA skill your agent uses when wiring an app to LinkedIn's organic Posts / Community Management API — 3-legged OAuth, publishing text, article or document posts to a member profile or company page…
Linkedin API is an agent skill from ericrisco/rsc-harness. Use when wiring an app to LinkedIn's organic Posts / Community Management API — 3-legged OAuth, publishing text, article or document posts to a member profile or company page, and pulling impressions, engagement and follower stats into a durable feedback record. NOT writing the post copy (that is linkedin-content), NOT planning cadence (that is linkedin-strategy), NOT DM sequences (that is linkedin-outreach).
Its SKILL.md is about 2.9k tokens, which your agent loads only when the skill is triggered. The skill folder holds 7 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/api-reference.md`).
It sits in Backend & APIs, covering Social media marketing and OAuth and OpenID Connect. It works with LinkedIn. The repository describes itself as: Your agent invents things because it has no memory, and can't touch your database because it has no arms. rsc is the meta-harness that gives it both, plus the trade to know the… The licence is MIT.
5 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 92fde8f. It shows what the files ask for, not the result of running them.
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.
Ships 1 file in scripts/ (Shell), which the agent can run.
Shell commands in SKILL.md call:
curlFrom the folder's file list and the shell code blocks in SKILL.md.
Hosts in commands or code, which the agent is likely to contact:
api.linkedin.comlinkedin.comFrom URLs in SKILL.md, links to its own repository left out.
Names these keys or tokens, usually read from environment variables:
LINKEDIN_CLIENT_SECRETLINKEDIN_TOKENFrom names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Linkedin API loads about 2.9k tokens when it runs, and up to ~4.4k if it reads all its reference files. Until then it costs about 108 tokens; SKILL.md has 1,085 words of instructions outside code blocks.
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.
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.
The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,085 words, ~2,936 tokens.
.claude/skills/linkedin-api/SKILL.md (or your agent's skills folder). This skill also uses 4 other files; get the full folder from GitHub.You own the transport. Auth headers, scopes, URNs, request shapes, rate-limit handling, token refresh, and the write that turns post performance into a durable feedback log. You do not decide what to post or why.
Decision line: if the question is which HTTP call, which header, which scope, which URN, how do I store the numbers → you. If it is about the meaning of the content → a sibling.
linkedin-content (planned sibling).linkedin-strategy (planned sibling).linkedin-carousels (planned sibling) builds it; you only upload the resulting document URN.linkedin-outreach (planned sibling).../api-connector-builder/SKILL.md, ../webhooks/SKILL.md.You configure this on the LinkedIn Developer portal once, before any code runs.
w_member_social (default-grantable, post as the member).| Scope | Grants | Product needed | Page-role requirement |
|---|---|---|---|
w_member_social | post/comment/like as the authed member | Share on LinkedIn | none |
r_member_social | read the member's own posts | restricted — approved apps only | none |
w_organization_social | post on behalf of an org | Community Management / MDP | ADMINISTRATOR, CONTENT_ADMIN, or DIRECT_SPONSORED_CONTENT_POSTER on the page |
r_organization_social | read org posts/stats | Community Management / MDP | same role set |
"unauthorized scope
w_organization_social" at the consent screen does not mean a typo — it means the app's Community Management / MDP product is not yet approved. The fix is product approval, not code.
Authorization-code flow. Two endpoints:
GET https://www.linkedin.com/oauth/v2/authorization # send the user here
POST https://www.linkedin.com/oauth/v2/accessToken # exchange code -> tokenSend the user to authorize with response_type=code, your client_id, redirect_uri, a CSRF state, and space-separated scope. On callback, exchange the code:
curl -X POST https://www.linkedin.com/oauth/v2/accessToken \
-d grant_type=authorization_code \
-d code="$AUTH_CODE" \
-d redirect_uri="$LINKEDIN_REDIRECT_URI" \
-d client_id="$LINKEDIN_CLIENT_ID" \
-d client_secret="$LINKEDIN_CLIENT_SECRET"Access tokens are short-lived (~60 days). Marketing / Community apps can be issued refresh tokens — store the refresh token and exchange it (grant_type=refresh_token) before expiry. Why: re-prompting consent on every expiry breaks unattended publishing and looks broken to the user.
Bad: client_secret = "WPL_AP1.abc..." # committed in source
Good: client_secret = process.env.LINKEDIN_CLIENT_SECRET # injected at runtime, file gitignoredNever write the token or secret into a tracked file. scripts/verify.sh greps for committed client_secret= and AQED-style token literals and fails the build if it finds one.
Every post needs an author. Two shapes:
urn:li:person:{id} (the sub from the OpenID userinfo / token introspection).urn:li:organization:{id} (the numeric page id).Before publishing as an org, confirm the authed member holds an eligible page role (ADMINISTRATOR / CONTENT_ADMIN / DIRECT_SPONSORED_CONTENT_POSTER). Why: with the scope granted but no role, the publish still returns 403 ACCESS_DENIED — the scope authorizes the app, the role authorizes the person.
Current organic endpoint: POST https://api.linkedin.com/rest/posts. The legacy /v2/ugcPosts and /v2/shares are deprecated — migrate to the versioned /rest/posts. Pin the version once:
LINKEDIN_VERSION=202605 # latest; 202505 is sunset — pinning a sunset version breaksEvery versioned call carries two headers (omit either and you get 426/400):
Linkedin-Version: 202605
X-Restli-Protocol-Version: 2.0.0curl -X POST https://api.linkedin.com/rest/posts \
-H "Authorization: Bearer $LINKEDIN_TOKEN" \
-H "Linkedin-Version: $LINKEDIN_VERSION" \
-H "X-Restli-Protocol-Version: 2.0.0" \
-H "Content-Type: application/json" \
-d '{
"author": "urn:li:organization:12345",
"commentary": "Shipping notes for this week.",
"visibility": "PUBLIC",
"distribution": {
"feedDistribution": "MAIN_FEED",
"targetEntities": [],
"thirdPartyDistributionChannels": []
},
"lifecycleState": "PUBLISHED",
"isReshareDisabledByAuthor": false
}'Success is 201, and the new post URN comes back in the x-restli-id response header (urn:li:share:{id} or urn:li:ugcPost:{id}) — not the body. Capture that header; you need the URN to pull analytics later.
The Posts API does NOT scrape the URL. You set the preview fields yourself, and the thumbnail must be an Image URN you uploaded via the Images API first:
"content": {
"article": {
"source": "https://example.com/post",
"title": "Our launch writeup",
"description": "What we shipped and why",
"thumbnail": "urn:li:image:C5..."
}
}Upload the file via the Documents API to get urn:li:document:{id}, then reference it:
"content": { "media": { "id": "urn:li:document:C4..." } }(Images → Images API → urn:li:image:; videos → Videos API → urn:li:video:.) Full reshare / multi-image / poll payloads and the retrieval finders live in references/api-reference.md.
GET https://api.linkedin.com/rest/organizationalEntityShareStatistics
?q=organizationalEntity
&organizationalEntity=urn%3Ali%3Aorganization%3A12345Organic only (sponsored excluded), rolling 12-month window. Omit timeIntervals for lifetime; include it for a time-bound slice. Returns impressionCount, uniqueImpressionsCount, clickCount, likeCount, commentCount, shareCount, and engagement (engagement rate).
GET https://api.linkedin.com/rest/organizationalEntityFollowerStatisticsLifetime or time-bound follower counts, segmented by facet (geo, industry, seniority, function, staff size), covering paid + organic followers.
URNs in any URL path or query must be URL-encoded:
urn:li:organization:12345→urn%3Ali%3Aorganization%3A12345. An un-encoded colon silently breaks the route.
This is the deliverable that makes the skill durable: after pulling stats, write one file per post under 02-DOCS/wiki/linkedin/. Later content decisions get grounded in what actually worked, not vibes.
Filename: the post id slug, e.g. 02-DOCS/wiki/linkedin/share-7012345678901234567.md.
---
type: linkedin-record
title: "Share 7012345678901234567 — OAuth pitfalls carousel"
description: Performance snapshot for one LinkedIn post, pulled from organizationalEntityShareStatistics.
tags: [linkedin, analytics, post-performance]
timestamp: "2026-06-02T10:00:00Z"
topic: linkedin
status: stable
post_urn: "urn:li:share:7012345678901234567"
author: "urn:li:organization:12345"
captured_at: "2026-06-02T10:00:00Z"
impressions: 4821
unique_impressions: 4102
clicks: 213
likes: 96
comments: 14
shares: 8
engagement: 0.0683
---
# Share 7012345678901234567 — OAuth pitfalls carousel
Carousel on OAuth pitfalls. Highest unique-impression post this month;
CTR ~4.4%. The "common 403 causes" hook outperformed the plain howto.type is the only required OKF v0.1 field; title/description/tags/timestamp are the recommended OKF surface. The DOMAIN keys below them are mandatory and must stay byte-for-byte — verify.sh checks that post_urn, captured_at, impressions, and engagement are present in every file under that directory. captured_at is the API-capture instant (a domain value verify.sh parses); timestamp is the OKF last-edit field — keep both. Note these files share 02-DOCS/wiki/linkedin/ with linkedin-strategy; using type: linkedin-record keeps the two skills' wiki content consistent.
| Anti-pattern | Why it breaks | Do instead |
|---|---|---|
Pinning Linkedin-Version: 202505 | That version is sunset; calls start failing on cutover | Pin 202605 in one constant; bump deliberately |
Sending only Linkedin-Version, dropping X-Restli-Protocol-Version | Versioned endpoints reject the request (426/400) | Always send both headers together |
| Expecting the API to scrape an article URL | Posts API never fetches OG tags; you get a bare link | Set source/title/description + an uploaded Image URN |
| Reading the new post id from the response body | The URN is in x-restli-id, body has no id | Read the x-restli-id response header |
| Treating share statistics as total reach | They are organic only, 12-month window | Pull sponsored from the ads stats endpoints separately |
| Un-encoded URN in the URL path/query | The colons break routing → 400/404 | URL-encode every URN argument |
Committing the token or client_secret | Leaked credential, instant revoke | Read from env; gitignore token files |
| Re-prompting consent on every token expiry | Breaks unattended jobs, looks broken | Store the refresh token, refresh before ~60-day expiry |
| Granted scope but member has no page role | Publish still returns 403 ACCESS_DENIED | Verify ADMINISTRATOR/CONTENT_ADMIN/DSC role first |
| Polling analytics in a tight loop | 429 TOO_MANY_REQUESTS throttle | Back off and batch; schedule, don't hammer |
Run scripts/verify.sh [TARGET_DIR] (default current dir). It is read-only and static — no network. It confirms each 02-DOCS/wiki/linkedin/*.md carries the required front-matter keys, and fails on any committed token / client secret in the tree. A clean or not-yet-run target passes with a NOTE.
references/api-reference.md — full curl bodies (text, article, document, reshare, multi-image, poll), post retrieval finders, the complete analytics query params and response schemas for both statistics endpoints, the HTTP error-code catalog (400/401/403/404/409/422/429/500/503), URL-encoding and query-tunneling rules, and the version-deprecation note.
© ericrisco, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
SKILL.md and 4 other files (scripts, references) in skills/linkedin-api of ericrisco/rsc-harness.
Open the folder on GitHubat commit 92fde8f
Linkedin API 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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Linkedin API this skillericrisco/rsc-harness | 156 | — | ~2.9k | Automated safety check: Pass | MIT | |
| Socialite Developmenthexlet-volunteers/hexlet-sicp | 114 | 5 repos | ~1.2k | Automated safety check: Pass | MIT | |
| Passport Developmenttrypostit/trypost | 676 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Int Linkedinevolution-foundation/evo-nexus | 544 | — | ~519 | Automated safety check: Notes | Custom licence | |
| LinkedinLeoYeAI/openclaw-master-skills | 2.2k | — | ~5.8k | Automated safety check: Pass | MIT | |
| Banner Design Systemnextlevelbuilder/ui-ux-pro-max-skill | 134k | 1 repos | ~1.8k | Automated safety check: Pass | MIT |
hexlet-volunteers/hexlet-sicp
Manages OAuth social authentication with Laravel Socialite. An agent skill from hexlet-volunteers/hexlet-sicp.
trypostit/trypost
Develops OAuth2 API authentication with Laravel Passport. An agent skill from trypostit/trypost.
evolution-foundation/evo-nexus
Query LinkedIn API — profile info, posts (when approved), org stats.
LeoYeAI/openclaw-master-skills
LinkedIn API integration with managed OAuth. An agent skill from LeoYeAI/openclaw-master-skills.
nextlevelbuilder/ui-ux-pro-max-skill
Walks through designing a banner for social media, ads, a website hero or print, from gathering requirements to building 2 or 3 art-direction options in HTML and CSS.
coollabsio/coolify
ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.
ericrisco/rsc-harness
A skill your agent uses when designing or analyzing a controlled experiment — falsifiable hypothesis, sample size from an MDE, reading significance/CI/power, CUPED, or rescuing tests that won't go…
ericrisco/rsc-harness
A skill your agent uses when making a web UI conform to WCAG 2.2 Level AA — axe-core or Lighthouse a11y violations, keyboard operability, focus management, ARIA roles/names/live regions, contrast…
ericrisco/rsc-harness
A skill your agent uses when running or fixing paid acquisition on Google or Meta — campaign structure (Performance Max, Demand Gen, Search, Advantage+), platform-fit creative, budget/scaling rules…
ericrisco/rsc-harness
A skill your agent uses when measuring whether an LLM or agent system actually got better and gating merges on it: golden sets, fixing an inflated LLM-as-judge, scoring RAG (faithfulness, contextual…
ericrisco/rsc-harness
A skill your agent uses when a creative goal must become a finished media file: pick and order generative-media models per modality — AI voiceover, image-to-video clips, score — then glue them with…
ericrisco/rsc-harness
A skill your agent uses when instrumenting product or web analytics — GA4/PostHog SDK wiring, event taxonomy, funnels, double-counted events, consent gating, PII scrubbing.
Works with
Categories
A skill your agent uses when wiring an app to LinkedIn's organic Posts / Community Management API — 3-legged OAuth, publishing text, article or document posts to a member profile or company page…. Linkedin API is an agent skill from ericrisco/rsc-harness. Use when wiring an app to LinkedIn's organic Posts / Community Management API — 3-legged OAuth, publishing text, article or document posts to a member profile or company page, and pulling impressions, engagement and follower stats into a durable feedback record.
Linkedin API fits situations like: wiring an app to LinkedIns organic Posts / Community Management API — 3-legged OAuth; publishing text; document posts to a member profile; pulling impressions.
Run `npx skills add ericrisco/rsc-harness --skill linkedin-api -a claude-code`. Or copy the skill folder (skills/linkedin-api in ericrisco/rsc-harness) into .claude/skills/linkedin-api in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill linkedin-api -a codex`. Or copy the skill folder (skills/linkedin-api in ericrisco/rsc-harness) into .agents/skills/linkedin-api in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add ericrisco/rsc-harness --skill linkedin-api -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-api, .gemini/skills/linkedin-api, .github/skills/linkedin-api and .opencode/skills/linkedin-api in your project.
Going by SKILL.md and its folder, Linkedin API needs a shell for the scripts in its folder, the command-line tools its instructions call (curl) and credentials named LINKEDIN_CLIENT_SECRET and LINKEDIN_TOKEN. Our summary lists: A Bash shell; A credential in LINKEDIN_CLIENT_SECRET; A credential in LINKEDIN_TOKEN.
SKILL.md names 2 domains. In commands or code: api.linkedin.com and linkedin.com; the agent is likely to contact these when it follows the instructions. This is read from the text; nothing was executed.
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.
Linkedin API is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 2.9k tokens (SKILL.md is roughly 12k 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 1.5k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Linkedin API: Socialite Development (hexlet-volunteers/hexlet-sicp, 114 stars), Passport Development (trypostit/trypost, 676 stars), Int Linkedin (evolution-foundation/evo-nexus, 544 stars) and Linkedin (LeoYeAI/openclaw-master-skills, 2.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
ericrisco (a GitHub user) maintains it in ericrisco/rsc-harness, which has 156 GitHub stars. The repository holds 229 skills in this directory. The repository was last updated on October 6, 2026.
Source: ericrisco/rsc-harness on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.