The Agent Skill

The repository carries an agent skill at skills/spider-silk/, in the Agent Skills format: a SKILL.md the agent loads once a task touches the framework, and reference files it reads only as the task needs them. An AI coding agent that has never seen Spider Silk guesses, and a framework this deliberate is a bad place to guess. The Gradle plugin resolves from Maven Central rather than the Plugin Portal, JSON mapping is written rather than reflected, and the Controller interface an agent invents out of habit is exactly what Handlers says not to build. The skill is distilled from this manual, and the manual stays the source of truth: a question the skill cannot settle is answered here, and a release that changes an API changes the skill alongside it. Every installation below takes the skill from the latest release’s tag, v1.1.0, so the skill describes the API of the jars on Maven Central rather than the unreleased one on main.

Claude Code

The repository doubles as a plugin marketplace, so installation is two commands inside Claude Code:

/plugin marketplace add benelog/spider-silk
/plugin install spider-silk@spider-silk

The skill then loads on demand in every project, and you remove it through /plugin.

An installed skill follows a new release once its marketplace is refreshed. Claude Code refreshes a marketplace outside Anthropic’s own only when auto-update is on for it, and auto-update is off by default. /plugin turns it on: Marketplaces, then spider-silk, then Enable auto-update. With auto-update off, one command refreshes the marketplace and installs the new release:

/plugin marketplace update spider-silk

The running session keeps the version it loaded, and /reload-plugins or a restart applies the new one.

Copy the skill directory into the project’s .claude/skills/ for a single project instead, so that collaborators get the skill by cloning and install nothing of their own:

git clone --depth 1 --branch v1.1.0 https://github.com/benelog/spider-silk /tmp/spider-silk
mkdir -p .claude/skills
cp -r /tmp/spider-silk/skills/spider-silk .claude/skills/

A project-level copy is also what Cursor and GitHub Copilot read, as their sections below say, so one directory can serve three tools.

Codex

The repository doubles as a Codex plugin marketplace too, so installation is two commands in a shell:

codex plugin marketplace add benelog/spider-silk
codex plugin add spider-silk@spider-silk

The skill then loads in every Codex session, and codex plugin remove spider-silk@spider-silk uninstalls it.

An installed skill stays at the version it was installed at until it is added again. Two commands fetch the marketplace and install the release it names:

codex plugin marketplace upgrade spider-silk
codex plugin add spider-silk@spider-silk

A Codex session started afterwards loads the new version.

Codex also reads skills from a project’s own .agents/skills/. Copy the skill directory there for a single project instead, so that collaborators get the skill by cloning:

git clone --depth 1 --branch v1.1.0 https://github.com/benelog/spider-silk /tmp/spider-silk
mkdir -p .agents/skills
cp -r /tmp/spider-silk/skills/spider-silk .agents/skills/

Restart Codex if a copied skill does not appear right away.

Cursor

Cursor reads a project’s .cursor/skills/ and the user-level ~/.cursor/skills/. It also reads the project’s .claude/skills/, so a project already set up for Claude Code needs nothing more.

GitHub Copilot

Copilot reads a project’s .github/skills/, and ~/.copilot/skills/ for the coding agent and the CLI. It too reads the project’s .claude/skills/.

Any other tool

The format is an open standard, and this skill uses nothing tool-specific: YAML frontmatter with a name and a description, a Markdown body, and relative links to the reference files beside it. Any tool that discovers SKILL.md files takes the same directory unchanged. https://agentskills.io keeps the list of them.

What is in it

SKILL.md carries what every task needs: the framework’s principles stated as rules the agent’s code must respect, the dependency and plugin repositories a first build needs, and the core API at a glance. Five reference files carry the rest, one per territory: setup, the web API, content, servers and deployment, and testing. An agent then reads only the file for the territory its task touches. Nothing in the skill is new information: every statement comes from this manual, compressed for an agent’s context window instead of a reader’s screen.

The measured effect

The skill was benchmarked in 2026-08 by running the same three tasks twice, once with the skill installed and once without, on three Claude models: Fable 5, Opus 5, and Sonnet 5. Every result was graded against eighteen behavioural assertions per arm. The tasks were a notes API built from an empty directory, a content-negotiation-plus-API-key change to a working app, and an SSE endpoint whose literal path had to be registered ahead of an existing {id} route.

Every assertion passed in every run, with the skill and without, on all three models. An agent without the skill is not helpless: given the published jars, every model reconstructed the API by unpacking the sources jar or running javap over ~/.m2, and found its way to accepts, the before-filter’s null contract, and WebResponse.sse on its own.

The skill changes the cost of that reconstruction. With the skill the same tasks completed with 12% fewer tokens on Fable 5, 16% fewer on Opus 5, and 22% fewer on Sonnet 5. The saving grows as the model tier goes down, because the reconstruction costs more on a lower tier: the skill-less baseline cost 80k tokens per task on Fable, 100k on Opus, and 130k on Sonnet. Wall-clock time moved only three to six percent, because Gradle dominates it. Even on the top model tier, where correctness converges, the skill’s advantage is token savings: the API reconstruction an agent would otherwise repeat in every project is done once, in the skill.

Two effects never reached the pass rate but are worth recording. The skill-less agents, told the benchmark machine held the artifacts in mavenLocal, shipped builds that resolve nowhere else, while the skill’s agents declared the GitHub Packages repository and its credential pattern alongside. The one run that stumbled into the registration-order trap fixed it by matching the failure to the skill’s own warning, while the skill-less runs had to derive the rule from scratch before writing code.

The numbers are single runs of each task on one machine, so read them as a shape, not a measurement.