Your skills deserve a home. Skilldex indexes every agentic skill you've installed, lets you search them by intent, shows which you actually use, and gives you a place to learn the ones you forgot you had.
Two surfaces, one brain:
- TUI —
skilldex tui— Textual app with semantic search + analytics. - Web —
skilldex web— Local FastAPI dashboard athttp://127.0.0.1:8765.
Both read from the same local sqlite index. No accounts, no network calls, nothing leaves your machine.
Claude Code power users accumulate skills fast. A typical power user today has 100+ skills spread across:
~/.claude/skills/— skills you've written or cloned.~/.claude/plugins/marketplaces/*/plugins/*/skills/— every installed plugin's skills.$PWD/.claude/skills/— project-local skills.skill_packs/— vendored packs inside a repo.
Without a dashboard that unifies them, your library becomes a junk drawer: you can't remember what each skill does, you don't know which you actually use, you can't search by intent, and there's no feedback loop on whether your triggers are working.
Skilldex fixes this.
- Multi-source indexer — finds skills in all four locations above. Dedupes. Flags name collisions across sources.
- Semantic search — "find a skill for verifying a deploy" → top-k relevant skills. Works offline by default (hashing embedder). Upgrade to sentence-transformers with one extra.
- Usage analytics from your transcripts — parses
~/.claude/projects/*/*.jsonlfor historical slash-command and Skill tool invocations. Shows top-used, dormant, and time-windowed counts. - Interactive playground — skill detail page with description, triggers, past invocations, one-click "copy invocation."
- Doctor — flags name collisions, missing descriptions, weak trigger guidance.
- TUI + Web — same data, two interfaces. TUI is fast in the terminal. Web is shareable on localhost.
ls ~/.claude/skills |
Plugin marketplace browse | skilldex | |
|---|---|---|---|
| Lists user skills | ✓ | ✓ | ✓ |
| Lists plugin skills | – | ✓ | ✓ |
| Lists project-local skills | – | – | ✓ |
| Unified view across all sources | – | – | ✓ |
| Flags collisions across sources | – | – | ✓ |
| Semantic ("what do I need for X") | – | – | ✓ |
| Usage analytics from transcripts | – | – | ✓ |
| Interactive playground / detail | – | partial (docs) | ✓ |
| Works offline | ✓ | – | ✓ |
No one else is unifying user + plugin + project + pack skills with usage data pulled from your own transcripts. That's the wedge.
pipx install skilldex # recommended — isolated CLI
# or
pip install skilldexOptional: upgrade to neural embeddings (~80MB download, better semantic quality):
pipx install 'skilldex[embed]'Requires Python 3.11+.
skilldex index # build the local index
skilldex search "verify a deploy after shipping" # semantic lookup
skilldex stats # top + dormant skills
skilldex tui # launch the terminal UI
skilldex web # open http://127.0.0.1:8765First index takes ~2s for ~100 skills. Re-runs are incremental and near-instant.
skilldex tui/focus the filter box.- Type freely for fuzzy name/description match.
- Press
s→ filter becomes semantic-search. Type "test a website" →runthrough,browse,qasurface. a→ analytics modal: total, used, dormant, top-10, dormant-10.- Arrow keys on the list update the detail pane on the right.
eopens the selected SKILL.md in$EDITOR.ccopies the/<skill-name>invocation to clipboard.qorCtrl+Cquits.
skilldex web --port 8765
open http://127.0.0.1:8765/— card grid of every skill, filterable by source (chips at the top)./skill/<id>— description, triggers, allowed tools, usage stats, recent invocations, "copy invocation" button./search— HTMX live-filtering semantic search (types-as-you-go)./analytics— top-used vs dormant, linked to detail pages./doctor— severity-colored findings for your library.
Skilldex does four things on index:
- Walks your skill sources (see Configuration below).
- Parses each
SKILL.md(YAML frontmatter + mined "use when" lines). - Scans
~/.claude/projects/**/**.jsonlfor bothtool_useSkill blocks and<command-name>/…</command-name>slash-command markers. - Embeds every skill and caches vectors in sqlite keyed by content hash (so re-runs don't re-embed unchanged skills).
Everything lives at ~/.local/share/skilldex/skilldex.db. Safe to delete — just re-index.
See document/docs/architecture.md for the full picture.
Run skilldex info to see resolved paths. Overrides via env vars:
| var | effect |
|---|---|
CLAUDE_HOME |
Override ~/.claude (useful for testing on a fake tree). |
SKILLDEX_EMBED |
st (sentence-transformers) or hash (offline default). |
XDG_DATA_HOME |
Move the sqlite db off ~/.local/share. |
Full reference: document/docs/configuration.md.
Don't want skilldex reading your transcripts? skilldex index --skip-usage.
Skilldex is a library, not just a CLI. Core modules are stable:
from skilldex.core.config import load
from skilldex.core.discovery import discover
from skilldex.core.search import build_index, search
cfg = load()
r = discover(cfg)
build_index(cfg.db_path, r.skills)
hits = search(cfg.db_path, "audit a PR", k=3)Full reference: document/docs/api_reference.md.
See CONTRIBUTING.md. Bug reports and PRs welcome — especially additional data sources (e.g. ~/.claude/agents/), more doctor rules, or ideas for the TUI.
MIT.
