I use multiple AI coding tools — Claude Code, Codex, OpenClaw — and each one reads skills from its own directory. When I add a new skill to my repo, I have to symlink it into every tool manually. When I want to block a skill from a specific tool, I have to remember which directories to leave it out of. It gets messy fast.
Skill Manager is a small web dashboard that manages all of that through a single UI.
What it does
- Scans your local skill repositories and shows every skill in a grouped table.
- Displays the link status per tool: linked, missing, blocked, wrong target, or manual unlink.
- Click a status badge to toggle the link. Right-click for block, allow, and fix options.
- Sync all creates every missing symlink in one shot, respecting your rules.
- Clean removes dangling links whose targets no longer exist.
Rules system
The most useful part is the three-level blocking system:
- Tool rule — block all skills from a tool, with an allow-list for exceptions.
- Group rule — block or restrict an entire project from specific tools.
- Skill rule — fine-grained control over a single skill per tool.
Rules are stored in a local tools.json config file alongside the server.
How the stack works
The backend is a small Express server with about 16 API endpoints. All symlink operations run on the file system directly — no database, no sync service. The frontend is a single vanilla JS HTML file: no build step, no framework. The server hot-reloads when tools.json changes on disk, so external edits are picked up automatically.
A pre-commit hook runs the full test suite before every commit. Coverage threshold is enforced at 80%.
What is next
- Better conflict handling when the same skill name exists in multiple repos.
- Smarter sync diff: show what would change before committing.
- Optional PM2 startup so the dashboard runs on boot without manual intervention.
Try it
The project is open source: https://github.com/ryderme/skill-manager