Skill Cabinet — локальный каталог agent skills на вашей машине
📂 Исходный код на GitHubЛокальный веб-каталог agent skills, установленных на машине: сканирует пользовательские папки навыков, показывает содержимое и происхождение, находит дубликаты и риски, поддерживает карантин и удаление.
Skill Cabinet — локальный каталог agent skills на вашей машине
Чем дольше вы работаете с AI-агентами, тем больше на диске скапливается skills: что-то ставится в .claude, что-то в .codex, .cursor или .agents, часть навыков приезжает вместе с плагинами. Через пару месяцев такой жизни на простой вопрос — а что вообще установлено и можно ли этому доверять — уже никто не ответит.
Skill Cabinet — опенсорсная утилита (лицензия MIT), которая решает именно эту задачу. Это локальный веб-каталог всех agent skills на машине. Автор сравнивает его с библиотечной картотекой: ящики (drawers) — это папки, в которые агенты складывают навыки, карточки — сами skills. Утилита сканирует пользовательские «ящики», показывает каждый навык, позволяет прочитать его содержимое и frontmatter, находит дубликаты и подозрительные места, а затем отправляет лишнее в карантин или удаляет с диска.
Запуск
Утилита распространяется как npm-пакет и запускается одной командой:
npx skill-cabinet
Она поднимает локальный сервер на 127.0.0.1 (порт по умолчанию — 3781) и открывает его в браузере. Привязка выполняется только к localhost — наружу сервис не торчит.
Пара полезных вариантов запуска:
# запустить прямо из репозитория, минуя npm-пакет
npx github:subsy/skill-cabinet
# не открывать новую вкладку браузера
SKILL_CABINET_NO_OPEN=1 npx skill-cabinet
# выбрать другой порт
PORT=4000 npx skill-cabinet
Требуется Node 20+.
Что умеет
Сканер понимает пользовательские папки навыков вроде .agents, .claude, .codex, .cursor (включая плагины), профили Hermes и другие каталоги вида ~/.* /skills.
Дальше начинается собственно «картотека»:
- Поиск и фильтры. Фильтр по ящику и поиск по имени, описанию, пути, происхождению, копиям и frontmatter. Отдельные фильтры: форма (все, физические, ссылки, битые), риск (все, повышенный, скрыть), способ вызова (все, только user, model, hook, выключено).
- Чтение. Тело skill в отрендеренном виде или как исходник, YAML frontmatter и дополнительные файлы навыка. Видно, является ли skill папкой, файлом или симлинком.
- Происхождение. Утилита отслеживает GitHub-origin, если навык сам его называет или он закодирован в пути установки. Происхождение, выведенное из родительского плагина или git-remote, помечается как inferred — то есть как предположение, а не факт.
- Дубликаты и мусор. Skill Cabinet замечает одинаковые копии в разных ящиках, «виртуальные» ссылки и битые симлинки, а также статические риски в теле навыка.
- Перепись хозяйства. Отдельный взгляд на диск: что физически занимает место, что лишь указывает на занятое, и сколько байт съедают дубликаты.
- Карантин. Навык убирается из всех ящиков, которые читают агенты, но не уничтожается — он переезжает в
~/.skill-cabinet/quarantine, откуда его можно вернуть. - Удаление. По одному или сразу несколько. Симлинк отвязывается, его цель остаётся на месте.
- Темы оформления. Несколько скинов в меню Theme, по умолчанию — Carbon.
Карантина и удаление — разные вещи
Это стоит подчеркнуть, потому что разница принципиальна.
Карантин перемещает навык туда, где его не увидит ни один агент, но сохраняет на диске. Передумали — восстановили. Это безопасный способ «выключить» сомнительный skill, не разбираясь сразу, нужен он или нет.
Удаление стирает навык с диска — папку, файл или симлинк — без возможности отмены. При этом автор честно предупреждает: встроенные skills Cursor и копии из кэша плагинов могут вернуться при следующем обновлении соответствующего инструмента. Владение копией всегда видно: пользовательская, из кэша плагина или builtin — это разные сущности.
Перед деструктивным действием интерфейс называет конкретный эффект для файловой системы — unlink, удаление файла, удаление папки — без милых окошек подтверждения.
Горячие клавиши
Вся навигация доступна с клавиатуры в духе vim:
j/k— перемещение по списку;/— поиск;x— пометить;q— карантин;r— восстановить;d— удалить.
Философия: библиотека, а не SaaS
В PRODUCT.md автор описывает продукт как «тихий, точный, библиотечный»: интерфейс должен ощущаться как рабочий каталог, а не как стартап-дашборд. В списке анти-референсов — SaaS-панели, неон на тёмном фоне, глассморфизм и одинаковые сетки карточек с иконками.
Из принципов дизайна: плотность допустима в ящиках, а пустота — на поверхности для чтения; статус передаётся текстом и цветом вместе, цвет никогда не единственный сигнал; результаты статического аудита и выведенное происхождение — это улики, а не скрытый авторитет. Доступность — контраст по WCAG AA и уважение к prefers-reduced-motion.
Зачем это нужно
Самый очевидный сценарий — гигиена. Skills сейчас расходятся по машинам с той же скоростью, с какой раньше расползались npm-пакеты, и точно так же никто не читает их перед установкой. А ведь агент выполняет инструкции из этих файлов буквально: сомнительный навык в .claude — это потенциальный prompt injection прямо в контексте вашей работы.
Skill Cabinet даёт быстрый способ устроить ревизию: посмотреть, что установлено, откуда взялось, нет ли одинаковых копий в трёх ящиках сразу и нет ли в теле навыка чего-то, что вы не готовы выполнять. Затем — почистить: сомнительное в карантин, ненужное под нож.
Второй сценарий — просто порядок. Если вы работаете с несколькими агентами одновременно, дубликаты неизбежны, и перепись диска с подсчётом байт лишним не будет.
Разработка
Проект — обычное веб-приложение на Node.js с Vite. Для разработки:
git clone git@github.com:subsy/skill-cabinet.git
cd skill-cabinet
npm install
npm run dev
Дальше откройте http://127.0.0.1:5173. Продакшн-режим после сборки:
npm run build
npm start
Подробности для контрибьюторов — в CONTRIBUTING.md. Код распространяется под лицензией MIT.
Источник: https://github.com/subsy/skill-cabinet