/axi — Agent eXperience Interface Router
AXI is not a protocol. It is 10 design principles for agent-ergonomic CLIs that beat both raw CLI and MCP on success, cost, duration, and turns (axi.md, kunchenguid/axi).
This skill is the main router for the AXI catalog (official + community). It picks the right AXI, installs/runs it agent-first (npx -y <axi>), and teaches the principles when you build or review agent-facing CLIs.
North Star
| Depth |
File |
| 10 principles (full spec) |
rules/principles.md |
| Official + community catalog |
rules/catalog.md |
| AXI vs MCP vs raw CLI vs mktg tools |
rules/prefer-axi.md |
| Build / review an AXI |
rules/build.md |
| Benchmark numbers |
rules/benchmarks.md |
| Upstream build-skill snapshot |
references/upstream-axi-skill.md |
Workflow (escalation)
- Unclear — User wants "the right tool." Detect domain → route via the table. Explain out loud.
- Use — An AXI exists for the domain. Prefer
npx -y <axi> … (zero global install). Fall back to global binary if already on PATH.
- Ambient — Repeated sessions in one domain → suggest
<axi> setup hooks (SessionStart) after explicit user opt-in.
- Build / review — Designing an agent-facing CLI → load rules/principles.md + rules/build.md. Do not invent a parallel MCP server first.
- Missing AXI — No catalog entry → prefer the least-bad existing path (mktg skill, raw CLI, MCP) per rules/prefer-axi.md, and offer to scaffold a new AXI.
On Activation (every time)
- Restate the domain in one sentence ("You need GitHub PR/CI triage" / "You need live browser extraction").
- Probe availability (non-blocking):
which gh-axi chrome-devtools-axi 2>/dev/null; npx -y gh-axi --version 2>/dev/null | head -1
- Optional:
mktg doctor --json --fields checks and note cli-gh, cli-gh-axi, cli-chrome-devtools-axi.
- Route via the AXI Routing Table. Always say why: "I'm using
gh-axi instead of raw gh / GitHub MCP because AXI wins on cost and success for GitHub tasks."
- Prefer content-first invocation: run the AXI with no args once to see live state +
help[] next steps, then follow those templates.
- If the user is building a CLI for agents → skip catalog routing; open principles + build rules.
- Never silently fall back to MCP when an AXI exists for that domain.
AXI Routing Table
| Need |
AXI |
Install / run |
Layer |
| GitHub issues, PRs, CI runs, releases, secrets, projects |
gh-axi |
npx -y gh-axi (needs gh auth login) |
Official |
| Browse, click, fill, extract, tables, Lighthouse |
chrome-devtools-axi |
npx -y chrome-devtools-axi |
Official |
| Human review of HTML artifacts (annotate → agent feedback) |
lavish-axi |
npx skills add kunchenguid/lavish-axi / see catalog |
Official |
| Local Claude/Codex/Cursor/Copilot/Grok quota windows |
quota-axi |
see rules/catalog.md |
Official |
| Jujutsu history |
jj-axi |
community |
VCS |
| npm registry inspect |
npm-axi |
community |
Packages |
| SQLite inspect / capped queries |
sqlite-axi |
community |
Data |
| Slack read/search/draft |
slack-axi |
community |
Comms |
| Gmail/Calendar/Docs/Drive/Slides (draft-only mail) |
gws-axi |
community |
Workspace |
| Harvest time tracking |
harvest-axi |
community |
Ops |
| Spec-driven agent workflow (AXI-in-skill demo) |
specops |
community |
Process |
| Git-backed record sheets |
gitsheets-axi |
community |
Data |
| Metabase SQL/MBQL |
metabase-axi |
community |
Analytics |
| Otter.ai transcripts |
otter-axi |
community |
Meetings |
| Notion pages/databases |
notion-axi |
community |
Docs |
| ClickUp tasks |
clickup-axi |
community |
Tasks |
| Databricks jobs/runs |
databricks-axi |
community |
Data |
| AWS host/deploy |
aws-axi |
community |
Cloud |
| Docker app lifecycle |
docker-axi |
community |
Cloud |
| DynamoDB |
dynamodb-axi |
community |
Data |
| PostgreSQL |
pg-axi |
community |
Data |
| MongoDB |
mongodb-axi |
community |
Data |
| Elasticsearch |
elasticsearch-axi |
community |
Data |
| Kubernetes workloads |
kubernetes-axi |
community |
Cloud |
| Redis |
redis-axi |
community |
Data |
| Celery queues |
celery-axi |
community |
Cloud |
| Oracle DB |
oracle-axi |
community |
Data |
| tmux / herdr / WezTerm sessions |
cyber-mux |
community (overlaps /tmux, /herdr) |
Terminal |
| GitLab issues / MRs / pipelines |
glab-axi |
community |
VCS |
| Design / review agent CLI ergonomics |
(this skill → principles) |
read rules |
Meta |
| Marketing playbook (brand, content, publish) |
/cmo |
mktg skills |
Out of scope |
Full URLs + one-liners: rules/catalog.md.
Disambiguation
| User says |
Route to |
Not |
Why |
| "check the PR / CI / issues" |
gh-axi |
raw gh, GitHub MCP |
AXI: 100% success @ $0.050 vs CLI 86% / MCP ~$0.10–0.15 |
| "open this page / click / fill form / extract table" |
chrome-devtools-axi |
chrome-devtools-mcp, agent-browser |
Combined ops + --query; 100% @ $0.074, 4.5 turns |
| "scrape this URL I already have" (static content) |
firecrawl / exa-contents |
chrome-devtools-axi |
Don't pay for a browser when fetch/crawl is enough |
| "search the web for X" (unknown URLs) |
exa-search / Exa MCP |
chrome-devtools-axi |
Semantic search ≠ browser automation |
| "automate Instagram/TikTok login post" |
/cmo + browser profile / mktg publish |
chrome-devtools-axi alone |
Marketing distribution is /cmo's job |
| "help me market / write copy / SEO" |
/cmo |
/axi |
AXI routes tools; CMO routes marketing skills |
| "build a CLI for my agent" |
/axi principles + build |
MCP-first design |
Principled CLI beats MCP on the published benches |
| "use MCP for GitHub/browser" |
Prefer matching AXI first |
Eager MCP schemas |
MCP schema overhead ~2.3× input tokens in GitHub bench (185K vs 79K) |
| "what's my Cursor/Claude quota" |
quota-axi |
guessing from UI |
Local-first usage windows for routing-aware agents |
| "review this HTML with humans" |
lavish-axi |
paste into chat |
Annotation loop back to the agent |
First 5 Minutes (new machine)
- Confirm Node 20+ for
npx.
- For GitHub work:
gh auth login once, then npx -y gh-axi (home view).
- For browser work:
npx -y chrome-devtools-axi open https://example.com --query "Example".
- Optional ambient context:
npm i -g gh-axi && gh-axi setup hooks (restart session).
- Tell the user which AXI you chose and the one-line why.
Guardrails
- Prefer AXI when a catalog entry exists for that domain. Explain the preference; don't debate protocol religion.
- Zero-install first:
npx -y <axi> … before asking the user to npm i -g.
- Follow
help[]: AXI outputs next-step command templates — use them; don't invent flags.
- Fail loud: unknown flags must error (exit 2). Never invent flags and trust unscoped output.
- No interactive prompts. If a required value is missing, fail with a structured error + suggested command.
- Pipe for tokens:
| head, | rg on AXI stdout is encouraged; don't dump full snapshots into context when --query exists.
- Skills never call skills.
/axi orchestrates tool choice; leaf AXIs execute. Exception: /cmo owns marketing — hand off explicitly.
- Hooks are opt-in. Never run
setup hooks without clear user intent.
- TOON on the wire. When building AXIs, stdout is TOON; keep internals on JSON. Spec: https://toonformat.dev/
Anti-Patterns
| Anti-pattern |
Why it's wrong |
Do this instead |
| Loading full MCP tool schemas for GitHub/browser when an AXI exists |
Schema tax balloons input tokens every turn |
Route to gh-axi / chrome-devtools-axi |
navigate then separate snapshot every click |
Doubles turns; AXI combines ops |
open, click --query, fill … --submit |
| Dumping full page snapshots into context |
Burns the token budget |
--query "…", pipe filters, truncation + --full |
Silent fallback to raw gh because "I know the flags" |
Raw CLI loses accuracy on the GitHub bench |
Use gh-axi; keep gh only for gaps AXI doesn't wrap yet |
| Building a new MCP server before an AXI CLI |
Protocol choice ≠ ergonomics |
Apply the 10 principles; ship CLI + optional skill + optional hooks |
| Presenting the entire catalog as a menu |
Shifts the decision to the human |
Recommend 1 AXI with a one-line why |
| Using browser AXI for static URL fetch |
Overkill cost/latency |
firecrawl / exa-contents / curl |
Error Recovery
| Failure |
Fix |
npx / network blocked |
Install global once: npm i -g gh-axi (or the needed AXI); retry |
gh-axi auth error |
gh auth login (and gh auth refresh -s project when Projects need scope) |
chrome-devtools-axi bridge stale |
chrome-devtools-axi stop then retry; or new CHROME_DEVTOOLS_AXI_SESSION=… |
STALE_REF on click |
Re-snapshot / open --query and use the new @g:… ref |
Unknown command (navigate) |
Read AXI help[] / --help — prefer open, not MCP verb names |
| No AXI for domain |
Use prefer-axi fallback; offer to scaffold per rules/build.md |
Progressive Enhancement
| Level |
What /axi can do |
| L0 |
Route by domain; run via npx -y with no prior setup |
| L1 |
Binaries on PATH; faster cold start |
| L2 |
setup hooks ambient home views for Claude Code / Codex / OpenCode |
| L3 |
Multiple community AXIs installed; quota-aware routing via quota-axi |
| L4 |
Team ships internal AXIs using principles + contributor catalog workflow |
Attribution
Principles, catalog, and benchmarks from AXI / kunchenguid/axi (MIT). This mktg skill is the router + catalog orchestrator adapted for /cmo-style activation; the upstream build-skill snapshot lives in references/upstream-axi-skill.md.
1---2name: axi3description: Agent eXperience Interface (AXI) router — the main entry point for agent-ergonomic CLIs. Use whenever the agent needs GitHub, browser automation, human review, quota routing, Slack, Notion, AWS/Docker/K8s, databases, GitLab (glab-axi), Oracle DB (oracle-axi), tmux/herdr/WezTerm sessions (cyber-mux), or any AXI-catalog tool; when choosing AXI vs MCP vs raw CLI; when building or reviewing an agent-facing CLI; or when the user says axi, gh-axi, chrome-devtools-axi, TOON output, agent ergonomics, or "prefer AXI". When in doubt about which external tool interface to use, start here.4---56# /axi — Agent eXperience Interface Router78AXI is not a protocol. It is **10 design principles** for agent-ergonomic CLIs that beat both raw CLI and MCP on success, cost, duration, and turns ([axi.md](https://axi.md), [kunchenguid/axi](https://github.com/kunchenguid/axi)).910This skill is the **main router** for the AXI catalog (official + community). It picks the right AXI, installs/runs it agent-first (`npx -y <axi>`), and teaches the principles when you build or review agent-facing CLIs.1112## North Star1314| Depth | File |15|---|---|16| 10 principles (full spec) | [rules/principles.md](rules/principles.md) |17| Official + community catalog | [rules/catalog.md](rules/catalog.md) |18| AXI vs MCP vs raw CLI vs mktg tools | [rules/prefer-axi.md](rules/prefer-axi.md) |19| Build / review an AXI | [rules/build.md](rules/build.md) |20| Benchmark numbers | [rules/benchmarks.md](rules/benchmarks.md) |21| Upstream build-skill snapshot | [references/upstream-axi-skill.md](references/upstream-axi-skill.md) |2223## Workflow (escalation)24250. **Unclear** — User wants "the right tool." Detect domain → route via the table. Explain out loud.261. **Use** — An AXI exists for the domain. Prefer `npx -y <axi> …` (zero global install). Fall back to global binary if already on PATH.272. **Ambient** — Repeated sessions in one domain → suggest `<axi> setup hooks` (SessionStart) after explicit user opt-in.283. **Build / review** — Designing an agent-facing CLI → load [rules/principles.md](rules/principles.md) + [rules/build.md](rules/build.md). Do not invent a parallel MCP server first.294. **Missing AXI** — No catalog entry → prefer the least-bad existing path (mktg skill, raw CLI, MCP) per [rules/prefer-axi.md](rules/prefer-axi.md), and offer to scaffold a new AXI.3031## On Activation (every time)32331. Restate the domain in one sentence ("You need GitHub PR/CI triage" / "You need live browser extraction").342. Probe availability (non-blocking):35 - `which gh-axi chrome-devtools-axi 2>/dev/null; npx -y gh-axi --version 2>/dev/null | head -1`36 - Optional: `mktg doctor --json --fields checks` and note `cli-gh`, `cli-gh-axi`, `cli-chrome-devtools-axi`.373. Route via the **AXI Routing Table**. Always say why: "I'm using `gh-axi` instead of raw `gh` / GitHub MCP because AXI wins on cost and success for GitHub tasks."384. Prefer **content-first** invocation: run the AXI with no args once to see live state + `help[]` next steps, then follow those templates.395. If the user is **building** a CLI for agents → skip catalog routing; open principles + build rules.406. Never silently fall back to MCP when an AXI exists for that domain.4142## AXI Routing Table4344| Need | AXI | Install / run | Layer |45|---|---|---|---|46| GitHub issues, PRs, CI runs, releases, secrets, projects | `gh-axi` | `npx -y gh-axi` (needs `gh auth login`) | Official |47| Browse, click, fill, extract, tables, Lighthouse | `chrome-devtools-axi` | `npx -y chrome-devtools-axi` | Official |48| Human review of HTML artifacts (annotate → agent feedback) | `lavish-axi` | `npx skills add kunchenguid/lavish-axi` / see catalog | Official |49| Local Claude/Codex/Cursor/Copilot/Grok quota windows | `quota-axi` | see [rules/catalog.md](rules/catalog.md) | Official |50| Jujutsu history | `jj-axi` | community | VCS |51| npm registry inspect | `npm-axi` | community | Packages |52| SQLite inspect / capped queries | `sqlite-axi` | community | Data |53| Slack read/search/draft | `slack-axi` | community | Comms |54| Gmail/Calendar/Docs/Drive/Slides (draft-only mail) | `gws-axi` | community | Workspace |55| Harvest time tracking | `harvest-axi` | community | Ops |56| Spec-driven agent workflow (AXI-in-skill demo) | `specops` | community | Process |57| Git-backed record sheets | `gitsheets-axi` | community | Data |58| Metabase SQL/MBQL | `metabase-axi` | community | Analytics |59| Otter.ai transcripts | `otter-axi` | community | Meetings |60| Notion pages/databases | `notion-axi` | community | Docs |61| ClickUp tasks | `clickup-axi` | community | Tasks |62| Databricks jobs/runs | `databricks-axi` | community | Data |63| AWS host/deploy | `aws-axi` | community | Cloud |64| Docker app lifecycle | `docker-axi` | community | Cloud |65| DynamoDB | `dynamodb-axi` | community | Data |66| PostgreSQL | `pg-axi` | community | Data |67| MongoDB | `mongodb-axi` | community | Data |68| Elasticsearch | `elasticsearch-axi` | community | Data |69| Kubernetes workloads | `kubernetes-axi` | community | Cloud |70| Redis | `redis-axi` | community | Data |71| Celery queues | `celery-axi` | community | Cloud |72| Oracle DB | `oracle-axi` | community | Data |73| tmux / herdr / WezTerm sessions | `cyber-mux` | community (overlaps `/tmux`, `/herdr`) | Terminal |74| GitLab issues / MRs / pipelines | `glab-axi` | community | VCS |75| Design / review agent CLI ergonomics | (this skill → principles) | read rules | Meta |76| Marketing playbook (brand, content, publish) | `/cmo` | `mktg` skills | Out of scope |7778Full URLs + one-liners: [rules/catalog.md](rules/catalog.md).7980## Disambiguation8182| User says | Route to | Not | Why |83|---|---|---|---|84| "check the PR / CI / issues" | `gh-axi` | raw `gh`, GitHub MCP | AXI: 100% success @ $0.050 vs CLI 86% / MCP ~$0.10–0.15 |85| "open this page / click / fill form / extract table" | `chrome-devtools-axi` | chrome-devtools-mcp, agent-browser | Combined ops + `--query`; 100% @ $0.074, 4.5 turns |86| "scrape this URL I already have" (static content) | `firecrawl` / `exa-contents` | `chrome-devtools-axi` | Don't pay for a browser when fetch/crawl is enough |87| "search the web for X" (unknown URLs) | `exa-search` / Exa MCP | `chrome-devtools-axi` | Semantic search ≠ browser automation |88| "automate Instagram/TikTok login post" | `/cmo` + browser profile / `mktg publish` | `chrome-devtools-axi` alone | Marketing distribution is `/cmo`'s job |89| "help me market / write copy / SEO" | `/cmo` | `/axi` | AXI routes tools; CMO routes marketing skills |90| "build a CLI for my agent" | `/axi` principles + build | MCP-first design | Principled CLI beats MCP on the published benches |91| "use MCP for GitHub/browser" | Prefer matching AXI first | Eager MCP schemas | MCP schema overhead ~2.3× input tokens in GitHub bench (185K vs 79K) |92| "what's my Cursor/Claude quota" | `quota-axi` | guessing from UI | Local-first usage windows for routing-aware agents |93| "review this HTML with humans" | `lavish-axi` | paste into chat | Annotation loop back to the agent |9495## First 5 Minutes (new machine)96971. Confirm Node 20+ for `npx`.982. For GitHub work: `gh auth login` once, then `npx -y gh-axi` (home view).993. For browser work: `npx -y chrome-devtools-axi open https://example.com --query "Example"`.1004. Optional ambient context: `npm i -g gh-axi && gh-axi setup hooks` (restart session).1015. Tell the user which AXI you chose and the one-line why.102103## Guardrails104105- **Prefer AXI when a catalog entry exists** for that domain. Explain the preference; don't debate protocol religion.106- **Zero-install first:** `npx -y <axi> …` before asking the user to `npm i -g`.107- **Follow `help[]`:** AXI outputs next-step command templates — use them; don't invent flags.108- **Fail loud:** unknown flags must error (exit 2). Never invent flags and trust unscoped output.109- **No interactive prompts.** If a required value is missing, fail with a structured error + suggested command.110- **Pipe for tokens:** `| head`, `| rg` on AXI stdout is encouraged; don't dump full snapshots into context when `--query` exists.111- **Skills never call skills.** `/axi` orchestrates tool choice; leaf AXIs execute. Exception: `/cmo` owns marketing — hand off explicitly.112- **Hooks are opt-in.** Never run `setup hooks` without clear user intent.113- **TOON on the wire.** When building AXIs, stdout is TOON; keep internals on JSON. Spec: https://toonformat.dev/114115## Anti-Patterns116117| Anti-pattern | Why it's wrong | Do this instead |118|---|---|---|119| Loading full MCP tool schemas for GitHub/browser when an AXI exists | Schema tax balloons input tokens every turn | Route to `gh-axi` / `chrome-devtools-axi` |120| `navigate` then separate `snapshot` every click | Doubles turns; AXI combines ops | `open`, `click --query`, `fill … --submit` |121| Dumping full page snapshots into context | Burns the token budget | `--query "…"`, pipe filters, truncation + `--full` |122| Silent fallback to raw `gh` because "I know the flags" | Raw CLI loses accuracy on the GitHub bench | Use `gh-axi`; keep `gh` only for gaps AXI doesn't wrap yet |123| Building a new MCP server before an AXI CLI | Protocol choice ≠ ergonomics | Apply the 10 principles; ship CLI + optional skill + optional hooks |124| Presenting the entire catalog as a menu | Shifts the decision to the human | Recommend 1 AXI with a one-line why |125| Using browser AXI for static URL fetch | Overkill cost/latency | `firecrawl` / `exa-contents` / `curl` |126127## Error Recovery128129| Failure | Fix |130|---|---|131| `npx` / network blocked | Install global once: `npm i -g gh-axi` (or the needed AXI); retry |132| `gh-axi` auth error | `gh auth login` (and `gh auth refresh -s project` when Projects need scope) |133| `chrome-devtools-axi` bridge stale | `chrome-devtools-axi stop` then retry; or new `CHROME_DEVTOOLS_AXI_SESSION=…` |134| `STALE_REF` on click | Re-`snapshot` / `open --query` and use the new `@g:…` ref |135| Unknown command (`navigate`) | Read AXI `help[]` / `--help` — prefer `open`, not MCP verb names |136| No AXI for domain | Use prefer-axi fallback; offer to scaffold per [rules/build.md](rules/build.md) |137138## Progressive Enhancement139140| Level | What `/axi` can do |141|---|---|142| L0 | Route by domain; run via `npx -y` with no prior setup |143| L1 | Binaries on PATH; faster cold start |144| L2 | `setup hooks` ambient home views for Claude Code / Codex / OpenCode |145| L3 | Multiple community AXIs installed; quota-aware routing via `quota-axi` |146| L4 | Team ships internal AXIs using principles + contributor catalog workflow |147148## Attribution149150Principles, catalog, and benchmarks from [AXI](https://axi.md) / [kunchenguid/axi](https://github.com/kunchenguid/axi) (MIT). This mktg skill is the **router + catalog orchestrator** adapted for `/cmo`-style activation; the upstream build-skill snapshot lives in `references/upstream-axi-skill.md`.