Skip to content

Запрос и перечисление доступных навыков

Что вы сможете сделать после изучения

  • Использовать инструмент get_available_skills для перечисления всех доступных навыков
  • Фильтровать определённые навыки с помощью поисковых запросов
  • Точно находить навыки с помощью пространств имён (например, project:skill-name)
  • Определять источники навыков и список исполняемых скриптов

Ваша текущая проблема

Вы хотите использовать определённый навык, но не помните его точное название. Возможно, вы знаете, что это навык в проекте, но не знаете, в каком пути обнаружения он находится. Или вы просто хотите быстро просмотреть, какие навыки доступны в текущем проекте.

Когда использовать этот метод

  • Изучение нового проекта: при присоединении к новому проекту быстро узнайте, какие навыки доступны
  • Неопределённость названия навыка: вы помните только часть названия или описание навыка, нужно нечёткое сопоставление
  • Конфликт имён в нескольких пространствах: в проектном и пользовательском уровнях есть навыки с одинаковыми названиями, нужно явно указать, какой использовать
  • Поиск скриптов: вы хотите узнать, какие автоматизированные скрипты доступны в каталоге навыка

Основная идея

Инструмент get_available_skills помогает вам просматривать все навыки, доступные в текущей сессии. Плагин автоматически сканирует навыки из 6 путей обнаружения:

Приоритет обнаружения навыков

  1. .opencode/skills/ (проектный уровень OpenCode)
  2. .claude/skills/ (проектный уровень Claude)
  3. ~/.config/opencode/skills/ (пользовательский уровень OpenCode)
  4. ~/.claude/skills/ (пользовательский уровень Claude)
  5. ~/.claude/plugins/cache/ (кэш плагинов)
  6. ~/.claude/plugins/marketplaces/ (установленные плагины)

Навыки с одинаковыми названиями сохраняются только по приоритету, первая найденная версия сохраняется, последующие игнорируются.

Информация, возвращаемая инструментом, включает:

  • Название навыка
  • Метку источника (project, user, claude-project и т. д.)
  • Описание
  • Список исполняемых скриптов (если есть)

Синтаксис пространства имён

Вы можете явно указать источник с помощью формата namespace:skill-name:

  • project:my-skill — использовать навык проектного уровня OpenCode (.opencode/skills/)
  • claude-project:my-skill — использовать навык проектного уровня Claude (.claude/skills/)
  • user:my-skill — использовать навык пользовательского уровня OpenCode (~/.config/opencode/skills/)
  • claude-user:my-skill — использовать навык пользовательского уровня Claude (~/.claude/skills/)
  • claude-plugins:my-skill — использовать навык из плагина Claude

Пошаговое руководство

Шаг 1: Перечисление всех доступных навыков

В OpenCode просто попросите ИИ перечислить навыки:

Ввод пользователя:
Перечислите все доступные навыки

Ответ системы:
skill-helper (project)
  Помощник по операциям Git и управлению ветками [scripts: tools/branch.sh, tools/commit.sh]

test-helper (user)
  Инструмент для модульного тестирования и анализа покрытия

docker-helper (project)
  Руководство по контейнеризации и развёртыванию Docker [scripts: build.sh, deploy.sh]

claude-code-superpowers (claude-plugins)
  Полный рабочий процесс разработки ПО

Что вы должны увидеть: список навыков, каждый навык отображает название, метку источника, описание и список скриптов.

Шаг 2: Использование поисковых запросов для фильтрации

Если вы помните только часть названия навыка:

Ввод пользователя:
Найдите навыки, содержащие "docker"

Ответ системы:
docker-helper (project)
  Руководство по контейнеризации и развёртыванию Docker [scripts: build.sh, deploy.sh]

Поиск сопоставляет ключевые слова в названиях и описаниях навыков, поддерживает подстановочный символ *:

Ввод пользователя:
Найдите навыки, начинающиеся с "test"

Ответ системы:
test-helper (user)
  Инструмент для модульного тестирования и анализа покрытия

Что вы должны увидеть: отображаются только навыки, соответствующие условиям запроса.

Шаг 3: Испытание нечёткого сопоставления и предложений

Если вы ввели неправильное название навыка:

Ввод пользователя:
Я хочу использовать docker-asistant

Ответ системы:
No skills found matching "docker-asistant". Did you mean "docker-helper"?

Плагин на основе расстояния Левенштейна рассчитывает сходство и автоматически предлагает название наиболее близкого навыка.

Что вы должны увидеть: сообщение об ошибке и правильное предложение навыка.

Шаг 4: Точное позиционирование с помощью пространства имён

Предположим, что на проектном и пользовательском уровнях есть навык с названием build-helper:

Ввод пользователя:
Перечислите подробную информацию о build-helper

Ответ системы:
build-helper (project)
  Конфигурация сборки, специфичная для проекта, и оптимизация компиляции [scripts: build.sh, optimize.sh]

Если пользователь хочет навык пользовательского уровня:

Ввод пользователя:
Используйте user:build-helper

Ответ системы:
build-helper (user)
  Универсальный инструментарий сборки и конфигурация непрерывной интеграции [scripts: ci.sh, test.sh]

Что вы должны увидеть: с помощью префикса пространства имён можно получать доступ к навыкам с одинаковыми названиями из разных источников.

Шаг 5: Проверка исполняемых скриптов

Просмотр скриптов в каталоге навыка:

Ввод пользователя:
Какие скрипты есть у docker-helper?

Ответ системы:
docker-helper (project)
  Руководство по контейнеризации и развёртыванию Docker [scripts: build.sh, deploy.sh]

Скрипты отображаются в квадратных скобках в информации о навыке, разделённые запятыми. Вы можете выполнить эти скрипты с помощью инструмента run_skill_script.

Что вы должны увидеть: после названия навыка идёт список в формате [scripts: путь_к_скрипту1, путь_к_скрипту2, ...].

Контрольная точка ✅

  • [ ] Можете ли вы перечислить все доступные навыки?
  • [ ] Можете ли вы фильтровать определённые навыки с помощью поисковых запросов?
  • [ ] Понимаете ли вы значение меток источников навыков (project, user, claude-project и т. д.)?
  • [ ] Можете ли вы объяснить роль и синтаксис пространств имён навыков?
  • [ ] Можете ли вы определить список исполняемых скриптов из информации о навыке?

Предупреждения о подводных камнях

Ловушка 1: Перекрытие навыков с одинаковыми названиями

Если на проектном и пользовательском уровнях есть навыки с одинаковыми названиями, вы можете быть озадачены тем, почему загружается не тот навык, который вы ожидаете.

Причина: навыки обнаруживаются по приоритету, проектный уровень имеет приоритет над пользовательским, для одинаковых названий сохраняется только первый.

Решение: явно укажите пространство имён, например, user:my-skill, а не просто my-skill.

Ловушка 2: Чувствительность к регистру в поиске

Поисковые запросы используют регулярные выражения, но установлен флаг i, поэтому поиск не чувствителен к регистру.

bash
# Эти поиски эквивалентны
get_available_skills(query="docker")
get_available_skills(query="DOCKER")
get_available_skills(query="Docker")

Ловушка 3: Экранирование подстановочных символов

В поиске * автоматически преобразуется в регулярное выражение .*, ручное экранирование не требуется:

bash
# Поиск навыков, начинающихся с "test"
get_available_skills(query="test*")

# Эквивалентно регулярному выражению /test.*/i

Итог урока

get_available_skills — это инструмент для изучения экосистемы навыков, поддерживающий:

  • Перечисление всех навыков: вызов без параметров
  • Поиск и фильтрацию: сопоставление названий и описаний с помощью параметра query
  • Пространства имён: точное позиционирование с помощью namespace:skill-name
  • Предложения по нечёткому сопоставлению: автоматическое подсказывание правильного названия при орфографических ошибках
  • Список скриптов: отображение исполняемых автоматизированных скриптов

Плагин автоматически внедряет список навыков при начале сессии, поэтому обычно вам не нужно вызывать этот инструмент вручную. Однако он полезен в следующих сценариях:

  • Хотите быстро просмотреть доступные навыки
  • Не помните точное название навыка
  • Нужно различать одинаковые названия навыков из разных источников
  • Хотите просмотреть список скриптов определённого навыка

Предварительный обзор следующего урока

В следующем уроке мы изучим Загрузка навыков в контекст сессии.

Вы узнаете:

  • Использование инструмента use_skill для загрузки навыков в текущую сессию
  • Понимание того, как содержимое навыков внедряется в контекст в формате XML
  • Освоение механизма Synthetic Message Injection (внедрение синтетических сообщений)
  • Узнайте, как навыки остаются доступными после сжатия сессии

Приложение: Справочник по исходному коду

Нажмите, чтобы просмотреть расположение исходного кода

Время обновления: 2026-01-24

ФункцияПуть к файлуНомер строки
Определение инструмента GetAvailableSkillssrc/tools.ts29-72
Функция discoverAllSkillssrc/skills.ts240-263
Функция resolveSkillsrc/skills.ts269-283
Функция findClosestMatchsrc/utils.ts88-125

Ключевые типы:

  • SkillLabel = "project" | "user" | "claude-project" | "claude-user" | "claude-plugins": перечисление меток источников навыков

Ключевые константы:

  • Порог нечёткого сопоставления: 0.4 (utils.ts:124) — если сходство ниже этого значения, предложения не возвращаются

Ключевые функции:

  • GetAvailableSkills(): возвращает форматированный список навыков, поддерживает фильтрацию по запросам и предложения по нечёткому сопоставлению
  • resolveSkill(skillName: string, skillsByName: Map<string, Skill>): поддерживает разбор навыков в формате namespace:skill-name
  • findClosestMatch(input: string, candidates: string[]): на основе нескольких стратегий сопоставления (префикс, включение, расстояние редактирования) рассчитывает лучшее совпадение

Бизнес-правила:

  • Навыки с одинаковыми названиями дедуплицируются по порядку обнаружения, сохраняется только первый (skills.ts:258)
  • Поисковые запросы поддерживают подстановочный символ *, который автоматически преобразуется в регулярное выражение (tools.ts:43)
  • Предложения по нечёткому сопоставлению срабатывают только при наличии параметра запроса и отсутствии результатов (tools.ts:49-57)