agentleFS
fire17fire17/my-skills/SKILL.md

my-skills

Skill1 starsChanged 4 months agoMITView on GitHub

Visualize, query, and rank ALL of the user's Claude Code skills from a persistent on-disk registry — global (~/.claude/skills), per-project (.claude/skills), plugin-provided, and harness-native. For every skill it knows WHERE it came from — which Claude Code session created it (session id + title), WHICH MODEL wrote it (and effort when available), or that it was imported/installed — plus when it was added, its category, aliases, and user/LLM-assigned ratings. Renders sortable, filterable numbered tables; highlights newly created skills; answers questions about any skill; and ranks skills by ANY runtime criterion (powerfulness, usefulness, industry impact if published, …), persisting the scores. Use when the user types /my-skills or /msk, or asks "list/show my skills", "what skills do I have", "which skills did fable/opus create", "show me my newest skills", "where did skill X come from / which chat made it", "rank my skills by usefulness", "sort skills by category/model/date", or any question about their skill collection. Also ships a full CLI (`msk`), an interactive terminal UI (`msk tui`), and a local desktop app (`msk app`) — use those subcommands when the user asks to "open the skills app / TUI / dashboard" or wants to browse skills visually.

4 other projects use a version of this.

Adopted by

Most recently taken up by

  • Other versions4 projects use a version of this.

    Word for word · 0

    None found.

    Edited · 0

    None found.

    Wrote their own version · 4

    1. kuntal-r-d/my-skills★ 3same name
    2. BerkaySevinc/agent-toolkit★ 1same name
    3. yyy805/my-skills★ 1same name
    4. 2eeYuan/my-skills★ 0same name

    How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.

The file

Files
SKILL.md

my-skills — your skill collection, visualized

A meta-skill: one persistent registry of every skill you have, where each came from, who (which model, which chat) made it, and how they rank.

Engine: scripts/myskills.py (stdlib-only, fast). Persistent state: data/registry.json (atomic writes) + data/TABLE.md (auto-rendered markdown table, humans can open it directly). Alias: /msk.

Three surfaces, one engine

The registry has three doors — all views over the SAME engine and registry (one source of truth; every write goes through the same atomic save):

surfacecommandwhat it is
CLImsk (global, via msk install)every subcommand below, scriptable
TUImsk tuiinteractive curses table: j/k, / search, s sort, ⏎ detail overlay, y background sync, r rate, t category, e edit SKILL.md, mouse; ? = full keys
desktop appmsk applocal web app (127.0.0.1-only, stdlib server) in a chromeless Chrome window: dashboard tiles + charts, live-refreshing sortable table, detail drawer with rating/category/notes editors, sync button, JSON export, dark/light. msk web runs the server in the foreground; the daemonized server self-terminates when idle (open windows keep it alive via heartbeat)

msk stats renders the aggregate dashboard (category/model/scope/origin bars, rating averages) straight in the terminal.

Standard flow (every invocation)

  1. Always sync first — incremental and cheap after the first run:
    python3 ~/.claude/skills/my-skills/scripts/myskills.py sync
    It discovers new/changed/removed skills and attributes ONLY new ones (origin session, model). It prints what's new — surface that to the user.
  2. Then render what was asked (default = full table, most recent first):
    python3 ~/.claude/skills/my-skills/scripts/myskills.py list
    ✨-marked green rows are NEW (added <48h ago or discovered this sync). Show the table output verbatim in a code block so alignment survives.

Command cookbook

askcommand
full table, newest firstlist
only new skillslist --new
sort by name / scope / model / category`list --sort namescopemodelcategory`
skills fable createdlist --model fable (matches id or display name; opus/sonnet/haiku/fable/mythos all work)
only skills I created in chatslist --origin created
only imported ones (no origin chat found)list --origin imported
one project's skillslist --scope proj:Creations
search by keywordlist --grep voice
include plugin + native skillslist --all
machine-readablelist --json (add any filters)
everything about one skillinfo <name>
every session that touched a skillsessions <name> (★ = creator)
set category / tags / notesset <name> category orchestration (user-set categories are locked)
persist a ratingrate <name> usefulness=9 --by <model-id>
delete a ratingrate <name> usefulness=-
sort by a ratinglist --sort rating:usefulness
retry origin-attribution for "imported"sync --deep
re-guess auto categories (keeps user-set)sync --recat
raw registry dumpjson
terminal dashboard (bars + rating averages)stats
interactive terminal UItui
desktop app window (starts server if needed)app (app --browser for a plain tab)
web server in the foregroundweb (web --open also opens a tab)
install/refresh the global msk commandinstall (→ ~/.local/bin/msk)

Intelligent behaviors (you, the agent, do these)

  • Natural-language filters/sorts — translate to flags above. If no flag fits, pull list --json and filter/sort/reason yourself, then present a numbered table matching the CLI table's columns.
  • Ranking by arbitrary criteria ("rank by powerfulness / usefulness / impact on industry if published / creativity / …"): pull list --json, judge each skill from its description (Read its SKILL.md when the description is thin), score 1–10 with a one-line justification per skill, then PERSIST every score via rate <name> <criterion>=<score> --by <your exact model id> and render with --sort rating:<criterion>. Ratings are durable — future sessions build on them instead of re-judging.
  • Questions about any skill ("what does X do", "is X safe", "which is better for Y") — info X, and Read its SKILL.md for depth. Never guess.
  • "Which chats/sessions made my skills?" — origin data is already in the table; for one skill use sessions <name>. The origin transcript path in info lets you open the actual conversation for archaeology.
  • Native/built-in skills — the engine can't see harness-native skills (code-review, loop, schedule, …). YOU can: they're listed in your system prompt. When the user wants them included, record what you actually see: add-native "code-review:Review the current diff…" "loop:Run a prompt on an interval" … then list --all. Ground truth from the harness, never a hardcoded list.
  • Categorize better — sync auto-guesses categories by keyword; when the user asks for smarter grouping, re-bucket with set <name> category <cat> so it sticks.

Reading the table

  • scope: global (~/.claude/skills) · proj:<dir> (project-local) · plugin:<name> · native (harness built-in, only with --all).
  • origin: created@<session-title-or-id> — a Claude Code chat verifiably wrote it (earliest Write/Edit event in any transcript; evidence: shell means it was created via shell commands, slightly weaker). imported — it exists on disk but no transcript created it (copied in, git-cloned, or the origin chat was deleted; no session id to show, as expected).
  • model / effort: the model that made the creating write, read from that very transcript event — never self-reported. Effort is best-effort from the session's cship snapshot (~/.cship/live/<sid>.json) and may be absent: Claude Code transcripts do not record effort.
  • aliases are folded into their canonical skill (ep (+epp,epq) style), symlink-resolved — one source of truth, no duplicate rows.

Guarantees & safety

  • Transcripts and skill dirs are read read-only; the engine writes ONLY under data/ (atomic temp+rename, no torn state).
  • sync is incremental: attribution (the expensive grep over all transcripts) runs once per skill, single pass per candidate file, cached forever in the registry. Re-runs cost ~a second.
  • Origins are evidence-backed: session id, timestamp, model, transcript path all come from the transcript itself and are kept for verification.

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.