Skill graph
See what your AI agent actually knows — an interactive map of your plugins, skills, hooks, and MCP servers, what references what, and what fires on a prompt. Zero dependencies.
npx -y skills add galaxyuliana/skill-graph --skill skill-graphAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
2 things to look at
- 27 days oldThe repository was created 27 days ago. New is not bad, but a brand new repository carrying a familiar-sounding name is the shape a typosquat arrives in, and there has been no time for anyone else to find a problem with it.
- 0 stars0 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Map an AI agent's setup as an interactive graph — plugins, skills, commands, hooks, MCP servers, what references what, and which skills may fire on the same prompt. Use whenever the user invokes /skill-graph, asks to see, refresh, watch, or serve the skill graph, wants their Claude Code / agent config or installed plugins visualized, or asks what's installed, what overlaps, what's dead weight, what a hook runs, or which skills would trigger on a prompt. Two modes: global (~/.claude install) and repo (a project's .claude + AGENTS.md/CLAUDE.md).
SKILL.md
3.4 KB, 786 tokens by cl100k_base, as published. Nobody here has run it
skill-graph
Build the graph of the user's agent setup and show it. Every node is a
marketplace, plugin, skill, command, subagent, hook, MCP server, or hook
script; every edge is a real relationship — contains, references (a
SKILL.md that names another skill), runs (a hook → its script), or
⚠ overlap (two skills whose "Use when…" triggers may collide).
<skill-dir> below is this skill's base directory (stated when it loads).
Default flow (manual build)
- Pick the mode. Auto-detect works: run in a repo with
.claude/,AGENTS.md, orCLAUDE.md→ repo mode; otherwise → global mode. Force with--global/--repo. - Run
python3 "<skill-dir>/scripts/skill_graph.py" [ROOT] [OUT_DIR] [flags].- Global (whole install):
python3 "<skill-dir>/scripts/skill_graph.py" . --global→ writes to~/.skill-graph/. - Repo:
python3 "<skill-dir>/scripts/skill_graph.py" "$REPO" --repo→ writes to$REPO/.skill-graph/.
- Global (whole install):
- Open
skill-graph.html(open/xdg-open/start) and relay the counts the script printed (plugins, skills, overlaps, any broken hooks). - Output dirs self-gitignore, so nothing dirties a repo.
Live mode
When the user says live / watch / serve, run with --serve in the
background and give them the URL (default
http://127.0.0.1:7188/skill-graph.html). The open page reloads itself
whenever a scanned file changes — install a plugin, edit a SKILL.md, and the
graph updates. Stop it when they ask.
Answering questions about the setup
Read <out>/skill-graph.json (rebuild first if stale):
- What's installed / dead weight — nodes by
kind; a skill within + out == 0is unreferenced. - What would fire on "<prompt>" — score each skill: sum
idf[term]overtermsthe prompt shares with the skill. Highest = most likely to trigger. (The HTML has this as an interactive box.) - What might collide — the
overlapsarray: pairs of skills with similar triggers, each with ascoreand theshareddistinctive terms. - What a hook runs —
runsedges;brokenlists hooks whose script is missing (--checkexits 1 when any exist — good for CI). - What references what —
referencesedges between skills/commands.
Privacy
Only a fixed allowlist of fields reaches the output (names, descriptions,
events, tool names, enabled state). Config objects are never copied wholesale;
env/headers/auth/token are dropped and secret-shaped strings are
redacted. Safe to share the HTML — but treat it like any config artifact.
Notes
- Stdlib-only Python 3.8+, ~1s. Honors
CLAUDE_CONFIG_DIR. - Flags:
--global--repo--serve [PORT]--watch--check--open--quiet. Overlap detection is a conservative heuristic (advisory, not a prediction of the model's real skill choice).