Agent Skills¶
abicheck publishes three Agent Skills — portable, triggerable packages of native-compatibility expertise that a coding agent (Claude Code, GitHub Copilot, OpenAI Codex, Cursor, Gemini CLI) loads when a user asks a compatibility question in their own words.
The skills are named after the user's job, not after abicheck commands. Someone who has never heard of abicheck can ask "will this change break existing consumers?" and get a workflow that reaches for abicheck as its deterministic verification engine.
Requires abicheck 0.6.0 or later, below 0.8.0, to run. The skills check the installed abicheck version against their own declared range —
>=0.6.0,<0.8.0— and refuse to run rather than fail partway through, since several commands/options they drive postdate 0.5.0 (see "Prerequisites" below). The check runsabicheck --version— the executable actually onPATHwhen the skill runs, not a source checkout'spyproject.toml(the two can differ, e.g. a 0.7.x checkout with a separately installed 0.5.0 package). If that version isn't inside the range, the installed skill will decline to execute.
Status (2026-09-29): preview, installable with npx skills add abicheck/abicheck.
A second evaluation pilot compared agents with and without the skill. It
ran 14 compatibility scenarios with one model, headless Claude Code. With
the skill:
- the agent reached the right verdict in 30 of 30 runs, against 22 of 28 without it;
- it ran a real comparison in 93% of runs, against 54%;
- it made an unsupported compatibility claim in 7% of runs, against 68%.
The skill was revised against that same scenario set, so this is not yet a held-out result, and it has not been validated on other agents. The methodology and caveats are in the pilot report.
Second skill (2026-09-30): explain-abi-change, for a developer who
wants to understand what changed between a program and the shared libraries
it uses, whether something fails or not. It was evaluated on 10 scenarios in
the same way.
With the skill, the agent backed every answer with a real comparison (20 of
20 runs, against 14 of 20 without it), and had one zero-tolerance failure
against eight. Without it, the agent named the right mechanism just as often,
so the skill's measured value so far is evidence, not a better guess at the
cause. That evidence costs about a third more per run in money and a sixth to a
quarter more in time, and three scenarios built so that source and symbols
cannot reveal the change did not separate the two on accuracy either. On a
smaller model the picture is different: Haiku 4.5 answered correctly 85-88%
of the time with the skill against 58% without it, and each correct answer
cost less.
See its pilot report.
Portfolio status (2026-08-20): the portfolio was reset from four
published skills down to one internal candidate. No skill has measured
evidence yet that it improves agent behavior over a well-documented CLI
alone, so publishing three additional, unvalidated skills alongside the one
flagship was scaling packaging ahead of any validated product value.
native-api-evolution, native-consumer-compatibility, and
native-release-compatibility — previously published at prototype status —
are no longer published; their source is recoverable from git history for
whenever a second skill is built. check-abi-compatibility (renamed from
review-native-library-change, itself renamed from
native-binary-compatibility-review) is the sole surviving skill and
is an internal candidate: working, reviewed content, but not yet
validated and not for external publication or citation as validated in any
user-facing claim, pending
G37's
still-unrun behavioral evaluation. The same status is also kept in skills-src/CLAUDE.md, the skill's own source tree.
The catalogue¶
| Skill | Status | The question it answers |
|---|---|---|
check-abi-compatibility |
Preview (npx skills add abicheck/abicheck) |
"Will this change break existing consumers?" — review a diff, branch, commit, or PR, ending in a verdict plus a root-cause explanation. Also handles "why did this suddenly report dozens of breaks?" |
explain-abi-change |
Preview (same install) | "What changed in this library, and why does my program behave like this?" — starts from what the developer observed (undefined symbol, version ... not found, a crash or wrong results after an update, a plugin that stops loading, or just a library bump with different symbols), finds which library copy is really used, compares it with the one the program was built against, and names the mechanism and what to do. Also says when the change is harmless or not ABI-related. |
set-up-abi-compatibility-ci |
Preview (npx skills add abicheck/abicheck) |
"Set up ABI compatibility checks for our library in GitHub Actions." — inspects the repository (build system, shared libraries, public headers, language, release process), picks a baseline strategy (release snapshot, merge-base build, or committed snapshot), and writes a pinned, least-privilege workflow with a staged rollout and a setup report. Also repairs an existing check that never fails. Evaluation: skills-src/evaluation/agents/ci-setup/. |
Installing it¶
npx skills add abicheck/abicheck # all three skills, into the current project
npx skills add abicheck/abicheck -s explain-abi-change # just one of them
npx skills add abicheck/abicheck -g -a claude-code # for every project, one agent
npx skills add abicheck/abicheck -l # list what the repository offers
This uses the skills CLI, which
installs skills straight from a GitHub repository into the directory each
agent reads (Claude Code, Codex, Copilot, Cursor, Gemini CLI and others) and
handles list, update and remove itself. abicheck publishes the skills
for it as the committed, self-contained skills/<skill-name>/
trees: generated from skills-src/, with every reference each one cites copied in,
and checked against a fresh render in CI so they cannot drift.
The skill drives the abicheck CLI, so install that too:
pipx install abicheck (or pip install abicheck).
From a checkout (contributors): skills-src/ is the one hand-authored
source. The committed skills/ tree above is what npx skills add
installs; the three agent-specific trees (.agents/skills/,
.claude/skills/, .gemini/skills/) are generated build output, not
committed —
python scripts/install_dev_skill.py
--target <codex|claude|gemini|all> writes them in place.
Each installed skill directory is fully self-contained: every reference it needs comes with it, with no symlinks and no cross-skill paths.
Skills are executable content. Anthropic's own guidance applies to these as
to any others: install only from sources you trust, and read what you install.
The rules these skills hold themselves to — never manufacture a green
result, never widen a suppression, never mutate a project silently — ship inside every skill as references/shared/safety-invariants.md.
Enabling them for a whole repository¶
To make the skills available to every contributor's agent in your own
library's repository — install them into the project and commit them, make
the abicheck CLI available to local and cloud agents, and describe your
public headers, build, and baseline in AGENTS.md — see
Enabling abicheck skills in your repository.
Prerequisites¶
The skills drive the abicheck CLI, so they need whatever the workflow they run
needs — see CLI usage for installation and
evidence and build-context flags for what deeper
--depth levels require. Local CLI invocation is the only execution path a
skill uses, so a skill works in any agent with shell access and needs no
protocol server or other setup beyond installing the skill itself. (abicheck has no MCP server; the CLI is simply the backend.)
Each skill declares, in its frontmatter, the abicheck version range it
requires — the releases that actually provide the CLI surface it drives — and
checks the installed version before doing anything else rather than degrading
silently. The current portfolio targets 0.6.x and 0.7.x: several commands and
options these workflows depend on (aggregate, project plan,
output.view: [root-cause], --diagnostic-comparison,
--contract) postdate the 0.5.0 release, so an older installation
is refused up front instead of failing partway through a workflow.
Contributing¶
Edit skills-src/, never the generated trees, including the committed
skills/ tree (python scripts/gen_agent_skills.py regenerates it). skills-src/CLAUDE.md is the
contributor contract — the three-layer model, the shared-fragment rules, and
the admission bar a second public skill would have to clear. The phased plan is
G36.