Case study
A universal intent router for Claude Code, matching fast-path first and falling back to dynamic skill discovery.
Sole author · Active · since
npm downloads, first 30 days
npm downloads, trailing year
npm downloads, trailing 30d
All three download figures above measure the same metric over three different windows, not three different claims. 2,259 is what the original brief cited; it was real, just aged: it's the total from claude-jarvis's first 30 days after release (2026-04-03 to 2026-05-02; expand that figure above for the peak single day). A fresh pull on 2026-08-11 shows 2,690 over the trailing year and 95 over the trailing 30 days.
Claude Code's plugin ecosystem gives every plugin its own invocation surface, which means a user has to remember which specific skill or command handles a given intent. A router that fast-paths obvious requests and falls back to dynamically discovering the right SKILL.md for anything else removes that memorisation burden entirely.
A fast-path matcher handles common, unambiguous intents directly. Anything that doesn't match falls through to dynamic SKILL.md discovery across installed plugins, built against the Claude Code Plugin API in TypeScript.
The download figure I drafted for this page was 2,259: accurate the day I wrote it, and stale by the time I re-audited this case study on 2026-08-11. It's the project's launch-window total, the first 30 days after release, doing duty as if it were a current run rate four months on. A trailing-30-day pull the same day I rewrote this section showed 95.
Both numbers are true; only one of them answers 'how many people are downloading this right now.' My fix wasn't a code fix: it was publishing all three windows (launch, trailing year, trailing 30 days) side by side instead of the one that reads best, and naming the exact window on every figure instead of letting 'downloads' imply an ongoing rate it was never measuring.
The download figures above are directly reproducible against npm's public registry: no authentication required.
# Trailing 30-day downloads (drifts daily; the figure above is a snapshot
# from 2026-08-11)
curl https://api.npmjs.org/downloads/point/last-month/claude-jarvis
# Trailing 12-month downloads
curl https://api.npmjs.org/downloads/point/last-year/claude-jarvis
# Launch-window downloads (the 30 days following release)
curl https://api.npmjs.org/downloads/range/2026-04-03:2026-05-02/claude-jarvisI haven't published an independently-runnable check for fast-path routing behaviour the way I have for Synapse's test suite: that's on the list below.
| Technology | Role |
|---|---|
| TypeScript | Implementation language. |
| Claude Code Plugin API | The integration surface the router is built against. |
Re-running this same independent audit on a fixed schedule instead of ad hoc, so a download figure never sits unchecked for four months again. Expanding fast-path coverage based on real-world routing misses as they turn up. Writing this project's first decision record once there's a decision worth documenting in more depth than 'match fast-path first, fall back to discovery.'