Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx agentmods add instructions/netlify/axis/agents-mdgit clone --depth 1 https://github.com/netlify/axisWhat it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5 | $0.03335 | $0.03335 |
| Opus 5 | $0.01667 | $0.01667 |
| Sonnet 5 | $0.00667 | $0.00667 |
| Haiku 4.5 | $0.00333 | $0.00333 |
Grade D, and why
axis AGENTS.md scanned grade D with 2 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Reads agent configuration directoriesmediumAgent snooping
.claude/, .codex/, .gemini/ hold keys, settings and other credentials a mod has no legitimate need for.
`claude-code` and `codex` declare `requiredEnv` (`ANTHROPIC_API_KEY`, `CODEX_API_KEY`) AND implement `hasLocalSession`. Pre-flight in `runner.ts` checks env vars first; if missing, it calls `hasLocalSession` and only thr Recursive force deletehighDestructive command
rm -rf with a variable or a broad path is one typo away from removing the wrong tree.
rm -rf dist && npm run build # Always clean build -stale dist/ causes subtle issues How it starts
The opening of the file, as written. The whole thing — 149 lines — stays where its author put it; the contents beside it link to each section on GitHub.
AGENTS.md
Project Overview
AXIS (Agent Experience Index Score) is a synthetic testing framework for AI agents. It runs agents against scenarios, captures transcripts, and produces graded scores across four dimensions: goal achievement, environment quality, service quality, and agent quality.
- ESM TypeScript, built with
tsc, tested withvitest, CLI viacommander - Live terminal display uses
ink(React for CLIs), rendered to stderr - Runner is fully decoupled from display via a
Loggerinterface
Terminology
- AXIS Result (not "AXIS Score") -the composite 0–100 number. "AXIS Score" reads as "score score" since AXIS already stands for "Agent Experience Index Score".
- Use "AXIS Result" in all user-facing text, display output, and documentation.
- The internal property names (
axisScore,averageAxisScore) are fine as code identifiers.
Architecture
| Layer | Key Files | Purpose |
|---|---|---|
| CLI | src/cli.ts |
Entry point, ink display, signal handling |
| Runner | src/runner/runner.ts, lifecycle.ts |
Job orchestration, concurrency, isolation; runLifecyclePhase captures $AXIS_OUTPUT markdown for setup/teardown/beforeAll/afterAll phases |
| Adapters | src/adapters/*.ts |
Spawn agent CLIs, parse NDJSON streams |
| Scoring | src/scoring/ |
LLM judge + interaction-based evaluation pipeline |
| Reports | src/reports/writer.ts, reader.ts |
Persistent .axis/reports/ store |
| Config | src/config/loader.ts, remote-scenarios.ts |
Parses axis.config.*; mergeRemoteConfig clones any git-URL entries in scenarios into .axis/remotes/, inlines their paths, AND folds each remote repo's env/mcp_servers/skills/artifacts/adapters into the parent (parent wins on collisions) |
| Display | src/ui/format.ts, LiveStatus.tsx, AnimatedTokens.tsx |
Pure formatting + ink components (incl. live token counter) |
| Types | src/types/ |
Shared interfaces (agent, config, output, scoring, report) |
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 149 lines · 3,335 tokens per session scan D 20abf2d32f7d
axis AGENTS.md is an instructions file published in the GitHub repository netlify/axis (55 stars, last pushed 10d ago), licensed MIT. It adds 3,335 tokens to every session, about $0.0167 per session on Opus 5. A static security scan graded it D with 2 findings (reads agent configuration directories, recursive force delete). No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other instructions, from other repositories
waku-agent CLAUDE.md
Instructions for ShenSeanChen/waku-agent, covering waku-agent — working conventions, architecture map (file ↔ diagram box), rules and commands.
Tracely-ai CLAUDE.md
Claude Code instructions for Jwuthri/Tracely-ai, covering claude.md, commands, architecture, hard rules and gotchas.
mastra AGENTS.md
AGENTS.md instructions for mastra-ai/mastra: Unless asked, don't inspect reference or modify examples. Use the most-specific AGENTS.md; for package work, read packages/ /AGENTS.md first.
AgentEval copilot-instructions.md
Instructions for AgentEvalHQ/AgentEval, covering agenteval - ai coding agent instructions, architecture overview, environment setup, optional: secondary models for comparison and build & test commands.
AgentEval maf-upgrade-preparation.instructions.md
Instructions for analyzing a new MAF version and producing an upgrade plan BEFORE updating the NuGet package.
AgentEval tracing.instructions.md
Guidelines for implementing trace recording and replay.