npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

@avcodes/skilled

v0.4.1

Published

TUI dashboard for skill usage stats across AI coding tools

Readme

screenshot

release npm pypi license TypeScript + Rust

Your AI coding tools keep traces. Skilled reads them.

Live TUI dashboard that aggregates skill usage across Claude Code, OpenCode, Codex, Grok, and Droid. Reads local history files only. Zero network, zero telemetry.

What you get

  • 30 fps terminal dashboard: bar charts, 16-week activity heatmap, hourly histogram, recent activity feed
  • Skill audit: heavy hitters, rising/declining trends, stale skills, one-offs, cross-project patterns
  • CLI with JSON output: skilled list, skilled audit, skilled detail <skill>. Filter by source or project.

Install

Shell (Linux / macOS):

curl -fsSL https://raw.githubusercontent.com/av/skilled/main/install.sh | sh

npm:

npm install -g @avcodes/skilled

pip:

pip install skilled

Then run skilled.

Usage

skilled                          Interactive dashboard
skilled list                     All skills ranked by usage
skilled list --sort recent       Sorted by last used
skilled detail review            Deep dive on one skill
skilled audit                    Health report across all skills
skilled calls --source codex     Raw invocations from a specific tool
skilled providers                Which tools are detected

Add --json to any command for machine-readable output. Filter with --source <tool> and --project <path>.

TUI keys

| Key | Action | |-----|--------| | s | Cycle sort: count → alphabetical → recent | | Tab | Toggle sort direction | | j / k | Scroll | | Enter | Toggle skill detail (replaces right panel) | | / / f | Open filter bar (source, project, skill name) | | a | Toggle audit view | | r | Refresh data | | Esc | Close detail/audit/filter, or quit | | q | Quit |

Supported tools

| Tool | What it reads | |------|--------------| | Claude Code | ~/.claude/history.jsonl + session JSONL files | | OpenCode | Local session history | | Codex | Local session history | | Grok | Local session history, including read_file of skills/<name>/SKILL.md | | Droid | Local session history |

Skilled auto-detects which tools are installed. No configuration needed. If the history files exist, they show up.

How it works

Each tool writes session traces to predictable local paths. Skilled has a provider for each one that parses those files and extracts skill invocations (slash commands, tool calls, skill triggers, and Grok read_file loads of skills/<name>/SKILL.md) into a common format: skill name, timestamp, project, session, source.

From there: frequency counts, weekly trends, hourly distribution, per-project breakdowns, and audit heuristics (rising = 50%+ increase over 4 weeks, stale = unused 28+ days, etc.).

The TUI renders at 30 fps using @opentui/core. Bar charts use 8-level Unicode block elements for sub-character precision. The heatmap uses a 5-level green intensity ramp.

No data leaves your machine. No accounts, no config files, no API keys.

Desktop

The same data model as the TUI, as a native window: Tauri v2 shell, Rust index linked in-process, React UI. macOS (universal .dmg), Linux (.AppImage, .deb, .rpm) and Windows (.msi, NSIS installer) bundles are built by the Desktop workflow.

desktop dashboard

  • Dashboard, skill detail, raw activity, audit, providers and settings views with the TUI filter syntax (source:codex p:myapp review) and the same sort modes and keyboard shortcuts (s, Tab, j/k, /, a, r, Esc, q, Ctrl/Cmd+1…5).
  • Native extras: system tray with live counts, live refresh when a provider writes a new session, JSON/CSV export through the save dialog, open/reveal the session file behind any call, OS light/dark appearance, restored window position.
  • Offline by construction: CSP forbids network, no http plugin, no telemetry.

Screenshots of every view and a recording of the app running live in desktop/docs (tour.mp4 / tour.gif, regenerated by desktop/scripts/capture.sh --record).

┌──────────────────────────── Skilled.app ─────────────────────────────┐
│  React UI (desktop/ui)  ──── src/view.ts, src/data.ts (shared w/ TUI) │
│        │ invoke("snapshot")                                           │
│  Tauri v2 shell (desktop/src-tauri)                                   │
│        ├─ skilled_index (index/, in-process)  → ~/.skilled/index.db   │
│        ├─ fallback: `skilled --no-index --json` (TS providers)        │
│        └─ notify watcher on provider dirs → live refresh + tray       │
└───────────────────────────────────────────────────────────────────────┘

Develop and build (requires Bun, Rust and the Tauri prerequisites):

cd desktop
bun install
bun run dev              # tauri dev with UI rebuild-on-change
bun run test             # unit tests: view models + the snapshot → views data path (headless React)
cd src-tauri && cargo test && cd ..   # Tauri commands invoked over IPC on the mock runtime, index, settings, watcher
sh scripts/dev-check.sh  # typecheck + debug binary
bun run test:e2e         # launches the debug binary against tests/fixtures/home, incl. a live history update
bun run build            # release bundles in src-tauri/target/release/bundle

Build from source

Requires Bun:

git clone https://github.com/av/skilled.git
cd skilled
bun install
bun run start

Compile to a standalone binary:

bun run build    # outputs ./skilled

Optional: Rust index

For faster re-scanning of large history files:

cd index
cargo build --release

The TUI will use the index automatically when available.

License

MIT