Удаление навыков
Что вы сможете делать после изучения
- Использовать
openskills manageдля интерактивного удаления нескольких навыков - Использовать
openskills removeдля скриптового удаления указанных навыков - Понимать сценарии использования обоих способов удаления
- Подтверждать, удаляете ли вы навык из project или global местоположения
- Безопасно очищать ненужные навыки
Ваша текущая проблема
По мере увеличения количества установленных навыков вы можете столкнуться с такими проблемами:
- "Некоторые навыки мне больше не нужны, хочу удалить несколько, но удалять по одному — слишком утомительно"
- "Хочу автоматически удалять навыки в скрипте, команда manage требует интерактивного выбора"
- "Не уверен, установлен ли навык в project или global, хочу проверить перед удалением"
- "При массовом удалении навыков боюсь случайно удалить используемые"
OpenSkills предоставляет два способа удаления для решения этих проблем: интерактивный manage (подходит для ручного выбора нескольких навыков) и скриптовый remove (подходит для точного удаления одного навыка).
Когда использовать этот способ
| Сценарий | Рекомендуемый способ | Команда |
|---|---|---|
| Ручное удаление нескольких навыков | Интерактивный выбор | openskills manage |
| Автоматическое удаление в скрипте или CI/CD | Точное указание имени навыка | openskills remove <name> |
| Быстрое удаление, когда знаете имя навыка | Прямое удаление | openskills remove <name> |
| Просмотр списка навыков перед удалением | Сначала список, потом удаление | openskills list → openskills manage |
Основная идея
Два способа удаления OpenSkills применяются в разных сценариях:
Интерактивное удаление: openskills manage
- Характеристика: Отображает все установленные навыки и позволяет отметить те, которые нужно удалить
- Применение: Ручное управление библиотекой навыков, удаление нескольких навыков за раз
- Преимущество: Не удаляет случайно, можно заранее увидеть все варианты
- Поведение по умолчанию: Ничего не выбрано (для предотвращения случайного удаления)
Скриптовое удаление: openskills remove <name>
- Характеристика: Непосредственно удаляет указанный навык
- Применение: Скрипты, автоматизация, точное удаление
- Преимущество: Быстро, не требует взаимодействия
- Риск: При ошибке в имени навыка — ошибка, не удалит другие навыки
Принцип удаления
Оба способа удаляют весь каталог навыка (включая SKILL.md, references/, scripts/, assets/ и все остальные файлы), не оставляя следов.
Удаление необратимо
Удаление навыка удаляет весь каталог навыка без возможности восстановления. Рекомендуется перед удалением убедиться, что навык больше не нужен, или просто переустановить его.
Действуйте вместе со мной
Шаг 1: Интерактивное удаление нескольких навыков
Зачем Когда нужно удалить несколько навыков, интерактивный выбор безопаснее и нагляднее
Выполните команду:
npx openskills manageВы должны увидеть
Сначала отобразится список всех установленных навыков (отсортированных по project/global):
? Select skills to remove:
❯◯ pdf (project)
◯ code-analyzer (project)
◯ email-reader (global)
◯ git-tools (global)- Синий
(project): навыки уровня проекта - Серый
(global): глобальные навыки - Пробел: отметить/снять отметку
- Enter: подтвердить удаление
Предположим, вы отметили pdf и git-tools, затем нажали Enter:
Вы должны увидеть
✅ Removed: pdf (project)
✅ Removed: git-tools (global)
✅ Removed 2 skill(s)По умолчанию ничего не выбрано
Команда manage по умолчанию ничего не выбирает, это сделано для предотвращения случайного удаления. Вам нужно использовать пробел для ручного выбора навыков для удаления.
Шаг 2: Скриптовое удаление одного навыка
Зачем Когда знаете имя навыка и хотите быстро его удалить
Выполните команду:
npx openskills remove pdfВы должны увидеть
✅ Removed: pdf
From: project (/Users/yourname/project/.claude/skills/pdf)Если навык не существует:
Error: Skill 'pdf' not foundПрограмма завершится с кодом ошибки 1 (подходит для проверки в скриптах).
Шаг 3: Подтверждение местоположения удаления
Зачем Перед удалением подтвердить местоположение навыка (project vs global), чтобы избежать случайного удаления
При удалении навыка команда отображает местоположение удаления:
# Скриптовое удаление показывает подробное местоположение
npx openskills remove pdf
✅ Removed: pdf
From: project (/Users/yourname/project/.claude/skills/pdf)
# Интерактивное удаление также показывает местоположение каждого навыка
npx openskills manage
# Выбор и подтверждение
✅ Removed: pdf (project)
✅ Removed: git-tools (global)Правила определения:
- Если путь содержит текущий каталог проекта →
(project) - Если путь содержит домашний каталог →
(global)
Шаг 4: Проверка после удаления
Зачем Подтвердить успешное удаление, чтобы ничего не упустить
После удаления навыка используйте команду list для проверки:
npx openskills listВы должны увидеть
Удалённые навыки больше не отображаются в списке.
Контрольный пункт ✅
Подтвердите следующее:
- [ ] Выполнение
openskills manageпоказывает список всех навыков - [ ] Можно использовать пробел для выбора/снятия выбора навыков
- [ ] По умолчанию ничего не выбрано (предотвращение случайного удаления)
- [ ] Выполнение
openskills remove <name>удаляет указанный навык - [ ] При удалении отображается, это project или global местоположение
- [ ] После удаления с помощью
openskills listподтверждается исчезновение навыка
Возможные проблемы
Проблема 1: Случайное удаление используемого навыка
Проявление: После удаления обнаруживается, что навык всё ещё нужен
Решение:
Переустановите навык:
# Если устанавливали с GitHub
npx openskills install anthropics/skills
# Если устанавливали с локального пути
npx openskills install ./path/to/skillOpenSkills записывает источник установки (в файле .openskills.json), при переустановке информация об исходном пути не теряется.
Проблема 2: Команда manage показывает "No skills installed"
Проявление: Выполнение openskills manage сообщает, что навыки не установлены
Причина: В текущем каталоге действительно нет навыков
Шаги по устранению:
- Проверьте, находитесь ли вы в правильном каталоге проекта
- Подтвердите, установлены ли глобальные навыки (
openskills list --global) - Перейдите в каталог с установленными навыками и попробуйте снова
# Перейдите в каталог проекта
cd /path/to/your/project
# Попробуйте снова
npx openskills manageПроблема 3: Команда remove выдаёт ошибку "Skill not found"
Проявление: Выполнение openskills remove <name> сообщает, что навык не найден
Причина: Ошибка в написании имени навыка или навык уже удалён
Шаги по устранению:
- Сначала проверьте правильное имя навыка с помощью команды list:
npx openskills listПроверьте написание имени навыка (обратите внимание на регистр и дефисы)
Подтвердите, является ли навык project или global (ищите в разных каталогах)
# Просмотр навыков проекта
ls -la .claude/skills/
# Просмотр глобальных навыков
ls -la ~/.claude/skills/Проблема 4: После удаления навык всё ещё в AGENTS.md
Проявление: После удаления навыка в AGENTS.md всё ещё есть ссылка на него
Причина: Удаление навыка не обновляет AGENTS.md автоматически
Решение:
Выполните команду sync повторно:
npx openskills syncКоманда sync заново сканирует установленные навыки и обновляет AGENTS.md, удалённые навыки автоматически исключаются из списка.
Резюме урока
OpenSkills предоставляет два способа удаления навыков:
Интерактивное удаление: openskills manage
- 🎯 Сценарий использования: Ручное управление библиотекой навыков, удаление нескольких навыков
- ✅ Преимущество: Наглядно, без случайного удаления, с предварительным просмотром
- ⚠️ Примечание: По умолчанию ничего не выбрано, требуется ручной выбор
Скриптовое удаление: openskills remove <name>
- 🎯 Сценарий использования: Скрипты, автоматизация, точное удаление
- ✅ Преимущество: Быстро, без необходимости взаимодействия
- ⚠️ Примечание: Ошибка в написании имени навыка вызовет ошибку
Ключевые моменты:
- Оба способа удаляют весь каталог навыка (невозможно восстановить)
- При удалении отображается, это project или global местоположение
- После удаления используйте
openskills listдля проверки - Не забудьте выполнить
openskills syncповторно для обновления AGENTS.md
Анонс следующего урока
В следующем уроке мы изучим Режим Universal: мультиагентная среда.
Вы узнаете:
- Как использовать флаг
--universalдля избежания конфликтов с Claude Code- Единое управление навыками в мультиагентной среде
- Роль каталога
.agent/skills
Приложение: Справочник по исходному коду
Нажмите, чтобы развернуть и посмотреть расположение исходного кода
Обновлено: 2026-01-24
| Функция | Путь к файлу | Номера строк |
|---|---|---|
| Реализация команды manage | src/commands/manage.ts | 10-62 |
| Реализация команды remove | src/commands/remove.ts | 8-21 |
| Поиск всех навыков | src/utils/skills.ts | 30-64 |
| Поиск указанного навыка | src/utils/skills.ts | 66-90 |
Ключевые функции:
manageSkills(): Интерактивное удаление навыков с использованием inquirer checkbox для выбора пользователемremoveSkill(skillName): Скриптовое удаление указанного навыка, выход с ошибкой, если не найденfindAllSkills(): Обход 4 каталогов поиска, сбор всех навыковfindSkill(skillName): Поиск указанного навыка, возврат объекта Skill
Ключевые константы:
- Нет (все пути и конфигурации вычисляются динамически)
Основная логика:
Команда manage (src/commands/manage.ts):
- Вызов
findAllSkills()для получения всех навыков (строка 11) - Сортировка по project/global (строки 20-25)
- Использование inquirer
checkboxдля выбора пользователем (строки 33-37) - По умолчанию
checked: false, ничего не выбрано (строка 30) - Обход выбранных навыков, вызов
rmSyncдля удаления (строки 45-52)
- Вызов
Команда remove (src/commands/remove.ts):
- Вызов
findSkill(skillName)для поиска навыка (строка 9) - Если не найден, вывод ошибки и
process.exit(1)(строки 12-14) - Вызов
rmSyncдля удаления всего каталога навыка (строка 16) - Определение project или global через
homedir()(строка 18)
- Вызов
Операция удаления:
- Использование
rmSync(baseDir, { recursive: true, force: true })для удаления всего каталога навыка recursive: true: рекурсивное удаление всех дочерних файлов и каталоговforce: true: игнорирование ошибки "файл не существует"
- Использование