Review a CLI against the 10 canonical AXI principles black-box: run a staged battery of read and write probes against a user-provided target, judge each principle strictly against axi.md, and emit a report-card table. Ships as SKILL.md plus AXI-PRINCIPLES.md (per-principle rubric with probes and PASS/PARTIAL/FAIL criteria) and REPORT-FORMAT.md (the single-table card format and verdict vocabulary). Claude-Session: https://claude.ai/code/session_015uc7R6zNYZpCxFWJMXrxwh
3.9 KiB
name, description
| name | description |
|---|---|
| axi-review | Review a CLI for conformance to the 10 AXI (Agent eXperience Interface) principles by running it black-box and scoring each principle on a report card. Use when asked to review, audit, check, or measure a CLI's AXI conformance, or when "AXI principles", "Agent eXperience Interface", or axi.md is named. |
axi-review
Review a CLI against the 10 canonical AXI principles by running it and judging what it emits. The review is black-box: the tool's observed output is the evidence, and source is consulted only where a facet cannot be triggered by running the tool. It writes by default, so it creates real artifacts in a target you provide.
The rubric lives in AXI-PRINCIPLES.md — one entry per principle, each with the probe to run and its PASS/PARTIAL/FAIL criteria.
The card's shape lives in REPORT-FORMAT.md.
1. Establish what you are reviewing
Fix the invocation string first — how this CLI is run (gitea-axi, a binary path, npx -y foo).
Locate the tool's own Agent Skill file, since it is the authoritative description of the command surface and is itself the evidence for Principle 7.
Look under ~/.claude/skills/<tool>/SKILL.md, then in the installed package or the repo.
A missing skill file is a Principle 7 FAIL that you carry into the judging step.
When it is missing, enumerate the surface from --help and no-arg output instead.
Run the bare no-arg invocation to confirm the tool executes.
If nothing runs at all — binary absent, npx fails — stop and report that a behavioural review is impossible.
Emit no card in that case.
Done when the tool has run, you have its subcommand surface, and you know whether a skill file exists.
2. Get the write target
The write battery creates real artifacts, so it needs a target you are cleared to mutate — the repo, folder, or destination this CLI acts on.
How the tool takes that target comes from its skill file, for example gitea-axi's -R owner/name.
If the invoking prompt did not name a target, ask the user for one in prose before running any command.
Done when you have a write target you may create artifacts in.
3. Run the battery once, capturing a transcript
Read AXI-PRINCIPLES.md and run every probe it lists, capturing each command's stdout and exit code into one transcript.
The battery is staged, not a single command: run the empty-state reads first, then the write probes, then the reads that depend on what the writes created.
Run it once in that sense — one transcript reused across principles, not a fresh run per principle — since one command's output is evidence for several.
The write probes include creating any fixture a read probe needs, such as the long-body entity Principle 3 inspects. The read probes create nothing. The write probes create real artifacts — record each one in the artifacts manifest as you create it, so nothing is orphaned silently. Capture stdout and stderr separately, since Principle 6 turns on which stream an error lands in. If the target rejects the write probes, mark the write facet of Principle 6 BLOCKED with the reason and continue with the read probes.
Done when every probe has a captured result or a recorded BLOCKED reason, and every created artifact is in the manifest.
4. Judge all 10 principles
For each principle in AXI-PRINCIPLES.md, apply its criteria to the transcript and assign PASS, PARTIAL, FAIL, N/A, or BLOCKED.
Judge strictly against the canonical statement.
When the tool's skill file documents a deviation, note it on the row but keep the canonical verdict.
Done when all 10 principles carry a verdict backed by a cited command and a short output excerpt from the transcript.
5. Emit the report card
Render the card in-session following REPORT-FORMAT.md.
Done when the card matches REPORT-FORMAT.md and every non-PASS row carries a concrete fix.