Agent skill

Linkedin API

by ericrisco in ericrisco/rsc-harness

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…

MITAuto-check passedBackend & APIs

Install Linkedin API

skills CLI
$ npx skills add ericrisco/rsc-harness --skill linkedin-api -a claude-code

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

GitHub CLI
$ gh skill install ericrisco/rsc-harness linkedin-api --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/ericrisco/rsc-harness.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/linkedin-api .claude/skills/linkedin-api && 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
linkedin-api
GitHub stars
156
Token cost
~2.9k tokens
SKILL.md length
1,085 words
Files
5 (incl. scripts, references)
Skills in repo
229
Repo updated
First seen
Licence
MIT

At a glance

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…

  • Works in 5 steps: 3-legged OAuth → resolve the author URN → publish → …
  • Wiring an app to LinkedIns organic Posts / Community Management API — 3-legged OAuth
  • SKILL.md covers Prereqs: app + products + scopes, Step 1 — 3-legged OAuth, Step 2 — resolve the author URN and Step 3 — publish, plus 5 more sections
  • Runs Shell scripts from its folder; calls curl; reaches api.linkedin.com and linkedin.com; needs LINKEDIN_CLIENT_SECRET and LINKEDIN_TOKEN

What it does

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.

When your agent uses it

  • Wiring an app to LinkedIns organic Posts / Community Management API — 3-legged OAuth
  • Publishing text
  • Document posts to a member profile
  • Pulling impressions

Example prompts

  • “/linkedin-api”

Requirements

  • A Bash shell
  • A credential in LINKEDIN_CLIENT_SECRET
  • A credential in LINKEDIN_TOKEN

Workflow steps

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

  1. 3-legged OAuth
  2. resolve the author URN
  3. publish
  4. pull analytics
  5. ingest performance into the wiki

What it can do on your machine

Read from SKILL.md and the folder at commit 92fde8f. 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 1 file in scripts/ (Shell), which the agent can run.

    Shell commands in SKILL.md call:

    • curl

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • api.linkedin.com
    • linkedin.com

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names these keys or tokens, usually read from environment variables:

    • LINKEDIN_CLIENT_SECRET
    • LINKEDIN_TOKEN

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~108
When it runs · the whole SKILL.md, loaded when a task matches
~2.9k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~4.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); the scripts in this folder are not scanned.

SKILL.md

The full file from ericrisco/rsc-harness at commit 92fde8f, republished under its MIT licence (© ericrisco). 1,085 words, ~2,936 tokens.

Download SKILL.mdSave it as .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.
name
linkedin-api
description
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`).
tags
linkedin, social-api, oauth, community-management-api, analytics, connector
recommends
api-connector-builder, webhooks, analytics, knowledge-ops
origin
risco

LinkedIn API: publish and pull analytics over the wire

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.

  • Words, hooks, CTA for one post → linkedin-content (planned sibling).
  • Cadence, pillars, audience plan → linkedin-strategy (planned sibling).
  • The multi-slide PDF artifact → linkedin-carousels (planned sibling) builds it; you only upload the resulting document URN.
  • DMs, connection requests, sequences → linkedin-outreach (planned sibling).
  • Generic OAuth2 / webhook scaffolding with no LinkedIn specifics → ../api-connector-builder/SKILL.md, ../webhooks/SKILL.md.

Prereqs: app + products + scopes

You configure this on the LinkedIn Developer portal once, before any code runs.

  1. Create a developer app, associate it with a company page (required to request org products).
  2. On the Products tab, request the product that grants the scopes you need:
    • Share on LinkedIn → grants w_member_social (default-grantable, post as the member).
    • Community Management API / Marketing Developer Platform (MDP) → grants the organization scopes and member-read. These require approval — the app sits in a review queue.
  3. Add your exact redirect URI under Auth. It must match the one in the authorize URL byte-for-byte or the callback fails.
ScopeGrantsProduct neededPage-role requirement
w_member_socialpost/comment/like as the authed memberShare on LinkedInnone
r_member_socialread the member's own postsrestricted — approved apps onlynone
w_organization_socialpost on behalf of an orgCommunity Management / MDPADMINISTRATOR, CONTENT_ADMIN, or DIRECT_SPONSORED_CONTENT_POSTER on the page
r_organization_socialread org posts/statsCommunity Management / MDPsame 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.

Step 1 — 3-legged OAuth

Authorization-code flow. Two endpoints:

text
GET  https://www.linkedin.com/oauth/v2/authorization   # send the user here
POST https://www.linkedin.com/oauth/v2/accessToken     # exchange code -> token

Send 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:

bash
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.

text
Bad:  client_secret = "WPL_AP1.abc..."            # committed in source
Good: client_secret = process.env.LINKEDIN_CLIENT_SECRET   # injected at runtime, file gitignored

Never 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.

Step 2 — resolve the author URN

Every post needs an author. Two shapes:

  • Member: urn:li:person:{id} (the sub from the OpenID userinfo / token introspection).
  • Organization: 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.

Step 3 — publish

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:

bash
LINKEDIN_VERSION=202605   # latest; 202505 is sunset — pinning a sunset version breaks

Every versioned call carries two headers (omit either and you get 426/400):

text
Linkedin-Version: 202605
X-Restli-Protocol-Version: 2.0.0
Text post
bash
curl -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.

Article (link share) post

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:

jsonc
"content": {
  "article": {
    "source": "https://example.com/post",
    "title": "Our launch writeup",
    "description": "What we shipped and why",
    "thumbnail": "urn:li:image:C5..."
  }
}
Document post

Upload the file via the Documents API to get urn:li:document:{id}, then reference it:

jsonc
"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.

Step 4 — pull analytics

Share statistics (post-level engagement)
text
GET https://api.linkedin.com/rest/organizationalEntityShareStatistics
    ?q=organizationalEntity
    &organizationalEntity=urn%3Ali%3Aorganization%3A12345

Organic 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).

Show full SKILL.md (433 more words)Show less
Follower statistics
text
GET https://api.linkedin.com/rest/organizationalEntityFollowerStatistics

Lifetime 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.

Step 5 — ingest performance into the wiki

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.

markdown
---
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-patterns

Anti-patternWhy it breaksDo instead
Pinning Linkedin-Version: 202505That version is sunset; calls start failing on cutoverPin 202605 in one constant; bump deliberately
Sending only Linkedin-Version, dropping X-Restli-Protocol-VersionVersioned endpoints reject the request (426/400)Always send both headers together
Expecting the API to scrape an article URLPosts API never fetches OG tags; you get a bare linkSet source/title/description + an uploaded Image URN
Reading the new post id from the response bodyThe URN is in x-restli-id, body has no idRead the x-restli-id response header
Treating share statistics as total reachThey are organic only, 12-month windowPull sponsored from the ads stats endpoints separately
Un-encoded URN in the URL path/queryThe colons break routing → 400/404URL-encode every URN argument
Committing the token or client_secretLeaked credential, instant revokeRead from env; gitignore token files
Re-prompting consent on every token expiryBreaks unattended jobs, looks brokenStore the refresh token, refresh before ~60-day expiry
Granted scope but member has no page rolePublish still returns 403 ACCESS_DENIEDVerify ADMINISTRATOR/CONTENT_ADMIN/DSC role first
Polling analytics in a tight loop429 TOO_MANY_REQUESTS throttleBack off and batch; schedule, don't hammer

Verify

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

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

Files

SKILL.md and 4 other files (scripts, references) in skills/linkedin-api of ericrisco/rsc-harness.

  • SKILL.md
  • evals/README.md
  • evals/cases.yaml
  • references/api-reference.md
  • scripts/verify.sh

Open the folder on GitHubat commit 92fde8f

Compare with similar skills

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.

Linkedin API compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Linkedin API this skillericrisco/rsc-harness156—~2.9kAutomated safety check: PassMIT
Socialite Developmenthexlet-volunteers/hexlet-sicp1145 repos~1.2kAutomated safety check: PassMIT
Passport Developmenttrypostit/trypost676—~1.9kAutomated safety check: PassMIT
Int Linkedinevolution-foundation/evo-nexus544—~519Automated safety check: NotesCustom licence
LinkedinLeoYeAI/openclaw-master-skills2.2k—~5.8kAutomated safety check: PassMIT
Banner Design Systemnextlevelbuilder/ui-ux-pro-max-skill134k1 repos~1.8kAutomated safety check: PassMIT

Similar skills

  • Socialite Development

    hexlet-volunteers/hexlet-sicp

    Manages OAuth social authentication with Laravel Socialite. An agent skill from hexlet-volunteers/hexlet-sicp.

    114 GitHub starsUsed in 5 repos~1.2k tokens
    Backend & APIsAuto-check passed
  • Passport Development

    trypostit/trypost

    Develops OAuth2 API authentication with Laravel Passport. An agent skill from trypostit/trypost.

    676 GitHub stars~1.9k tokensUpdated today
    Backend & APIsAuto-check passed
  • Int Linkedin

    evolution-foundation/evo-nexus

    Query LinkedIn API — profile info, posts (when approved), org stats.

    544 GitHub stars~519 tokensUpdated 4 mo ago
    Backend & APIsAuto-check: notes
  • Linkedin

    LeoYeAI/openclaw-master-skills

    LinkedIn API integration with managed OAuth. An agent skill from LeoYeAI/openclaw-master-skills.

    2.2k GitHub stars~5.8k tokensUpdated 2 mo ago
    Backend & APIsAuto-check passed
  • Banner Design System

    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.

    134k GitHub starsUsed in 1 repo~1.8k tokens
    Frontend & DesignAuto-check passed
  • Fortify Development

    coollabsio/coolify

    ACTIVATE when the user works on authentication in Laravel. An agent skill from coollabsio/coolify.

    63k GitHub starsUsed in 4 repos~1.9k tokens
    Backend & APIsAuto-check passed

More from ericrisco/rsc-harness

All 229 skills in this repo
  • Ab Testing

    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…

    156 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Accessibility

    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…

    156 GitHub stars~3.4k tokensUpdated yesterday
    Auto-check passed
  • Ads

    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…

    156 GitHub stars~2.2k tokensUpdated yesterday
    Auto-check passed
  • Agent Eval

    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…

    156 GitHub stars~3.2k tokensUpdated yesterday
    Auto-check passed
  • AI Media

    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…

    156 GitHub stars~3.3k tokensUpdated yesterday
    Auto-check passed
  • Analytics

    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.

    156 GitHub stars~2.8k tokensUpdated yesterday
    Auto-check passed

Works with

Categories

Questions about Linkedin API

What does Linkedin API do?

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.

When should I use Linkedin API?

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.

How do I install Linkedin API in Claude Code?

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.

How do I install Linkedin API in Codex?

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.

Can I use Linkedin API 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 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.

What does Linkedin API need to run?

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.

Does Linkedin API access the network?

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.

Is Linkedin API 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 API use?

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.

How many tokens does Linkedin API use?

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.

What are the alternatives to Linkedin API?

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.

Who maintains Linkedin API?

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.