Apollo Client
apollographql/skills
Guide for building React applications with Apollo Client 4.x.
A skill your agent uses when building or customizing a Shopify store across its three code surfaces — themes (Liquid, Online Store 2.0 sections, blocks and JSON templates), apps (Remix with the…
$ npx skills add ericrisco/rsc-harness --skill shopify -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install ericrisco/rsc-harness shopify --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/shopify .claude/skills/shopify && 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 "shopify" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/shopify into .claude/skills/shopify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify", 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/shopifyType 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 shopify -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install ericrisco/rsc-harness shopify --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/shopify .agents/skills/shopify && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "shopify" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/shopify into .agents/skills/shopify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify", 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 shopify -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install ericrisco/rsc-harness shopify --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/shopify .cursor/skills/shopify && 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 "shopify" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/shopify into .cursor/skills/shopify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify", 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/shopify--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 shopify -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install ericrisco/rsc-harness shopify --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/shopify .gemini/skills/shopify && 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 "shopify" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/shopify into .gemini/skills/shopify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify", 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 shopifyInstalls 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 shopify -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/shopify .github/skills/shopify && 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 "shopify" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/shopify into .github/skills/shopify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify", 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 shopify -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 shopify --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/shopify .opencode/skills/shopify && 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 "shopify" agent skill from https://github.com/ericrisco/rsc-harness/tree/main/skills/shopify into .opencode/skills/shopify/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "shopify", 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.
shopifyA skill your agent uses when building or customizing a Shopify store across its three code surfaces — themes (Liquid, Online Store 2.0 sections, blocks and JSON templates), apps (Remix with the…
Shopify is an agent skill from ericrisco/rsc-harness. Use when building or customizing a Shopify store across its three code surfaces — themes (Liquid, Online Store 2.0 sections, blocks and JSON templates), apps (Remix with the versioned GraphQL Admin API and its query-cost model), and checkout (UI extensions, Functions, Web Pixels), plus the CLI flow and checkout-extensibility migration. NOT WooCommerce or PHP stores (that is wordpress), NOT the React layer of a headless storefront (that is nextjs), NOT non-Shopify payment integrations (that is stripe).
Its SKILL.md is about 3.2k tokens, which your agent loads only when the skill is triggered. The skill folder holds 9 other files, including scripts and reference files (for example `evals/README.md`, `evals/cases.yaml` and `references/apps-graphql.md`).
It sits in Backend & APIs, covering E-commerce operations, GraphQL and Payments and billing. It works with Shopify, GraphQL, React and Next.js. 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.
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:
shopifyFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Shopify loads about 3.2k tokens when it runs, and up to ~6k if it reads all its reference files. Until then it costs about 130 tokens; SKILL.md has 1,199 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,199 words, ~3,164 tokens.
.claude/skills/shopify/SKILL.md (or your agent's skills folder). This skill also uses 6 other files; get the full folder from GitHub.The single authoritative skill for building and customizing a Shopify store. The mental model: a Shopify store is a hosted platform you extend at well-defined seams — never a server you control. You render on the storefront with Liquid, you mutate data through the versioned GraphQL Admin API, and you customize checkout through sandboxed extensions. The platform owns hosting, the database, PCI scope, and the checkout DOM; you own only the seams. Three surfaces, three toolchains — name the surface before you write a line of code.
Pinned stack (verify against shopify.dev before pinning in a repo):
shopify app config push is removed; use shopify app deploy.2026-04 — latest stable; supported window 2026-04 / 2026-01 / 2025-10 /
2025-07†. Each version is supported ~12 months. Pin apiVersion and bump quarterly.
† 2025-07 is at the edge of its window — accessible only until 2026-07-16; treat it as
sunsetting and do not pin it in new work. Re-check the live list at shopify.dev/docs/api/usage/versioning.@shopify/shopify-app-remix, App Bridge, Polaris React). GraphQL > REST —
REST Admin API is legacy; Shopify steers all new app work to GraphQL.Most Shopify mistakes are surface confusion — answering with a headless React build when the ask
was a Liquid section, or editing checkout.liquid when the seam is now an extension. Branch here:
| Surface | You're working on… | Tool & entry | Reference |
|---|---|---|---|
| Theme | .liquid files, {% schema %}, JSON templates, storefront rendering, merchant-editable content | shopify theme dev on a Dawn-based theme | references/liquid-themes.md |
| App | embedded admin UI, reading/writing store data, webhooks, automation | shopify app dev on the Remix template + Admin GraphQL | references/apps-graphql.md |
| Checkout | checkout/thank-you/order-status UI or logic, discounts, shipping, tracking | Checkout UI extensions / Functions / Web Pixels | references/checkout-extensibility.md |
If the answer is "the React rendering layer of a headless storefront", that is ../nextjs/SKILL.md,
not this skill — Shopify is only the data seam (Storefront API) there.
OS 2.0 (GA 2021, sometimes marketed "3.0") is the architecture: JSON templates + sections-
everywhere + theme blocks + @app blocks + dynamic sources. The file map:
layout/theme.liquid # the HTML shell (one per theme)
templates/product.json # JSON template: which sections render, in what order
sections/main-product.liquid # a section: markup + {% schema %} of merchant settings
sections/*.liquid # section groups (header/footer) live here too
blocks/*.liquid # theme blocks (reusable, nestable) — OS 2.0
snippets/*.liquid # partials rendered via {% render %}
config/settings_schema.json # global theme settingsRule: every section carries a {% schema %} with presets so merchants edit content in the
theme editor without a deploy. The why: content belongs in section.settings and metafields, not
in code — if a merchant has to ask you to change a headline, the section is built wrong.
<!-- Bad: copy hardcoded in Liquid; merchant can't touch it -->
<h2>Summer Sale — 20% off everything</h2>
<!-- Good: editable in the theme editor, with a preset so it appears in "Add section" -->
<h2>{{ section.settings.heading | escape }}</h2>
{% schema %}
{
"name": "Promo banner",
"settings": [
{ "type": "text", "id": "heading", "label": "Heading", "default": "Summer Sale" }
],
"blocks": [{ "type": "@app" }],
"presets": [{ "name": "Promo banner" }]
}
{% endschema %}The { "type": "@app" } block lets merchant-installed apps drop content into your section. The
Shopify Theme Store requires the main product and featured-product sections to support @app
blocks. See references/liquid-themes.md for setting types, section groups, and dynamic sources.
{% render %}, never {% include %}. render is scoped (the snippet only sees what you
pass) and cacheable; include leaks the parent scope and is deprecated.
{% comment %} Bad {% endcomment %}
{% include 'price' %}
{% comment %} Good — explicit, scoped, cacheable {% endcomment %}
{% render 'price', product: product, variant: variant %}Bound every collection loop with limit: and never nest unbounded loops — storefront render
cost is real and slow pages cost conversions. {% for p in collection.products limit: 8 %}.
Pipe all dynamic output. | money for prices (raw values render cents/locale wrong),
| escape for any user/merchant string (XSS), | json when emitting data into a <script>.
Push branchy logic into metafields/metaobjects, not conditional chains. A case/if ladder
over product types is data pretending to be code — bind a metafield and let Liquid do a lookup.
Theme work (hot-reloads against a dev theme; never edits live unprompted):
shopify theme dev # local preview + hot reload
shopify theme pull # sync live/named theme down
shopify theme push --only templates/* # push a subset; --ignore excludes paths
shopify theme check # Theme Check linter — wire into CIMulti-environment lives in shopify.theme.toml; --environment is repeatable
(shopify theme push --environment staging --environment prod).
App work:
shopify app dev # tunnel + env + reload; provisions admin.graphql()
shopify app deploy # release app + extensions (NOT `app config push` — removed in 4.x)CLI 4.x auto-upgrades via your package manager but skips CI and project-local installs — pin the version in CI so a silent bump never changes a release.
Apps are the Remix template. The shape:
app/shopify.server.js # shopifyApp({ apiVersion, sessionStorage, webhooks, ... })
app/routes/app.*.jsx # embedded admin pages (App Bridge + Polaris)
shopify.app.toml # app config, scopes, webhook subscriptions
extensions/* # app extensions (theme app ext, UI ext, Functions, Flow)Pin apiVersion in shopify.server and bump it quarterly — an unpinned client silently
follows Shopify's default and can break on a version rollover.
Use the GraphQL Admin API, not REST. REST is legacy; new fields ship to GraphQL only.
// Bad — legacy REST Admin endpoint
await fetch(`https://${shop}/admin/api/2026-04/orders.json`);
// Good — authenticated GraphQL through the template
const { admin } = await authenticate.admin(request);
const res = await admin.graphql(
`#graphql
query Orders { orders(first: 10) { nodes { id name } } }`
);Verify webhook HMAC before trusting any payload — authenticate.webhook(request) in the
template does this; never parse a raw webhook body without it.
See references/apps-graphql.md for OAuth/session storage, mutations, App Bridge, and extensions.
Admin GraphQL meters by calculated query cost (points), not request count. Every response
carries extensions.cost:
{ "extensions": { "cost": {
"requestedQueryCost": 92, "actualQueryCost": 30,
"throttleStatus": { "maximumAvailable": 2000, "currentlyAvailable": 1970, "restoreRate": 100 }
}}}MAX_COST_EXCEEDED error — you must handle it in code; it
is not an HTTP-level failure your client will throw on.throttleStatus and back off on restoreRate (points restored per second) rather than
blindly retrying.first:
pagination will throttle; bulkOperationRunQuery runs async and returns a JSONL file.checkout.liquid modelcheckout.liquid and additional scripts are deprecated and being removed. Dated facts:
checkout.liquid support.checkout.liquid). This was the deadline to act, not the auto-upgrade date.checkout.liquid customizations stop running.Migrate by surface — match the old mechanism to its new seam:
| Old (deprecated) | New seam | Notes |
|---|---|---|
checkout.liquid UI tweaks | Checkout UI extensions | sandboxed React/JS targets, not DOM access |
| Script Editor / additional-script discounts, shipping, payment logic | Functions (Rust or JS → Wasm) | deterministic, run server-side |
<script> tracking / analytics in checkout | Web Pixels + server-side events | sandboxed; no arbitrary DOM scripts |
| custom checkout colors/fonts/CSS | Checkout Branding API | GraphQL, not CSS injection |
Several checkout surfaces (full checkout UI customization, some Functions) are Shopify Plus-only.
The full migration map, extension targets, and Functions structure are in
references/checkout-extensibility.md.
@app block / blocks into themes (no theme edit).checkout.liquid logic seam.| Anti-pattern | Why it's wrong | Do instead |
|---|---|---|
{% include %} in new code | deprecated, leaks parent scope, not cacheable | {% render %} with explicit args |
Raw {{ price }} / {{ user_input }} | wrong locale/cents; XSS | | money, | escape, | json |
Editing checkout.liquid / additional scripts | deprecated; auto-upgraded away starting 2026-01 | UI extensions / Functions / Web Pixels |
| REST Admin calls in a new app | legacy; new fields are GraphQL-only | admin.graphql() |
Unpinned or stale apiVersion | breaks on Shopify's version rollover | pin a supported version, bump quarterly |
Paginated first: loop for big reads | throttles on query cost | bulkOperationRunQuery |
Ignoring extensions.cost.throttleStatus | silent MAX_COST_EXCEEDED at HTTP 200 | read cost, back off on restoreRate |
| Hardcoded copy in Liquid | merchant can't edit without a deploy | section.settings / metafields |
Section with no presets | won't appear in "Add section" in the editor | add a presets entry to {% schema %} |
Secrets committed in shopify.app.toml | leaks API credentials | env vars; keep secrets out of TOML |
| No Theme Check in CI | regressions ship to the storefront | shopify theme check in the pipeline |
| Answering with a headless React build | wrong surface for a Liquid/theme ask | confirm the surface; route React to ../nextjs/SKILL.md |
Run scripts/verify.sh <theme-or-app-dir> for an advisory scan of these foot-guns.
© 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 6 other files (scripts, references) in skills/shopify of ericrisco/rsc-harness.
Open the folder on GitHubat commit 92fde8f
Shopify 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 |
|---|---|---|---|---|---|---|
| Shopify this skillericrisco/rsc-harness | 156 | — | ~3.2k | Automated safety check: Pass | MIT | |
| Apollo Clientapollographql/skills | 116 | — | ~1.9k | Automated safety check: Pass | MIT | |
| Shopify ExpertJeffallan/claude-skills | 12k | — | ~1.8k | Automated safety check: Pass | MIT | |
| Shopify Developer Referencetech-leads-club/agent-skills | 7k | — | ~1.9k | Automated safety check: Pass | Custom licence | |
| Shopifyasgeirtj/system_prompts_leaks | 69k | — | ~2k | Automated safety check: Pass | CC0-1.0 | |
| Data Client Setupreactive/data-client | 2k | — | ~2.2k | Automated safety check: Pass | Apache-2.0 |
apollographql/skills
Guide for building React applications with Apollo Client 4.x.
Jeffallan/claude-skills
Builds Shopify themes in Liquid, custom apps, Storefront API storefronts and checkout extensions, using the Shopify CLI to lint, run locally and deploy.
tech-leads-club/agent-skills
Reference for Shopify work: Liquid templates, OS 2.0 themes, Admin and Storefront GraphQL APIs, apps, Functions and Hydrogen, on API version 2026-01.
asgeirtj/system_prompts_leaks
Set up and operate a Shopify store with Shopify's official MCP server (the installed shopify command, NOT the npm Shopify CLI).
reactive/data-client
Install and set up @data-client/react or @data-client/vue in a project.
davila7/claude-code-templates
Comprehensive fullstack development skill for building complete web applications with React, Next.js, Node.js, GraphQL, and PostgreSQL.
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.
Categories
A skill your agent uses when building or customizing a Shopify store across its three code surfaces — themes (Liquid, Online Store 2.0 sections, blocks and JSON templates), apps (Remix with the…. Shopify is an agent skill from ericrisco/rsc-harness.0 sections, blocks and JSON templates), apps (Remix with the versioned GraphQL Admin API and its query-cost model), and checkout (UI extensions, Functions, Web Pixels), plus the CLI flow and checkout-extensibility migration.
Shopify fits situations like: customizing a Shopify store across its three code surfaces — themes (Liquid; online Store 2.0 sections; blocks and JSON templates); apps (Remix with the versioned GraphQL Admin API and its query-cost model).
Run `npx skills add ericrisco/rsc-harness --skill shopify -a claude-code`. Or copy the skill folder (skills/shopify in ericrisco/rsc-harness) into .claude/skills/shopify in your project. Claude Code loads it when a task matches its description.
Run `npx skills add ericrisco/rsc-harness --skill shopify -a codex`. Or copy the skill folder (skills/shopify in ericrisco/rsc-harness) into .agents/skills/shopify 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 shopify -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/shopify, .gemini/skills/shopify, .github/skills/shopify and .opencode/skills/shopify in your project.
Going by SKILL.md and its folder, Shopify needs a shell for the scripts in its folder and the command-line tools its instructions call (shopify). Our summary lists: A Bash shell.
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.
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.
Shopify is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 3.2k tokens (SKILL.md is roughly 13k 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 2.8k tokens, read only when the agent opens those files.
Skills that share tags, products or a category with Shopify: Apollo Client (apollographql/skills, 116 stars), Shopify Expert (Jeffallan/claude-skills, 12k stars), Shopify Developer Reference (tech-leads-club/agent-skills, 7k stars) and Shopify (asgeirtj/system_prompts_leaks, 69k 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.