---
name: koda-learn
description: "Позволяет найти и установить дополнительные навыки (скиллы), расширяющие функционал Koda для решения конкретных задач. Помогает подобрать подходящие навыки для текущего проекта. Навыки нужны для фокусирования агента на способах решения конкретных задач и обогащения контекста дополнительными знаниями. Активируется инструментом `read_skill` (vscode/jetbrains) или `Activate Skill` (cli) с передачей аргумента `koda-learn`."
license: MIT
metadata:
  author: koda
  version: 1.0.0
---

# Поиск и установка навыков (скиллов)

## Когда применять

1. Пользователь может попросить:
   - установить дополнительные навыки;
   - подобрать дополнительные навыки для текущего конкретного проекта;
2. Нельзя устанавливать новые навыки, если пользователь так или иначе не разрешил этого.

**Типичные фразы-триггеры:**

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

## Как применять

1. Из задачи пользователя определи требования к искомым навыкам.
2. Если задача непонятна, уточни у пользователя хочет ли он установить конкретный навык или ему подойдёт любой из лучших.
3. Если пользователь просит найти подходящие для проекта навыки, сначала изучи проект, файлы KODA.md и AGENTS.md (при наличии).
4. **Директория установки навыков:** `.koda/skills/<имя_навыка>/` в корне проекта.

### Поиск и обработка результатов

1. Запрещено использовать поиск в интернете пока не будут испытаны все источники, указанные ниже.
2. Если при поиске найдено больше 1 навыка, предложи ознакомиться с каждым из них, пронумеровав строго по порядку, и ожидай явного подтверждения.
3. Всегда давай пользователю активную ссылку на web-страницу каждого навыка в формате: `[ссылка](ссылка)`.

### Принятие решений

1. Пользователь может согласиться установить все найденные навыки, некоторые из них или ни одного.
2. Если результаты поиска не подходят, остановись и предложи пользователю найти навык самостоятельно и установить в директорию установки.
3. Если найден один подходящий навык, сразу переходи к установке.
4. Избегай конфликтов имён с установленными навыками.
5. Установка навыка допустима только если выполняются обязательные требования.
6. Приоритет у того навыка, который суммарно удовлетворяет большему количеству требований по всем критериям оценки.

### Установка

#### Источник 1 - официальный репозиторий Koda

**URL:** https://raw.githubusercontent.com/XCode-NLP/KodaSkills/refs/heads/main/metadata.json

> **ВАЖНО**: При любой технической ошибке переходи к источнику 2.

1. Получи данные об имеющихся в репозитории навыках.
2. В массиве объектов `skills` важны следующие поля:
   - `name`: имя;
   - `description`: описание;
   - `url.web`: ссылка на просмотр текста в браузере;
   - `url.raw`: ссылка на сырой текст для установки;
3. Оцени соответствие запроса пользователя с этими полями по критериям ниже.

**Критерии оценки:**

1. Имя и описание должны максимально соответствовать запросу пользователя.
2. Ссылки должны вести на репозиторий `XCode-NLP/KodaSkills`.

**Установка:**

1. Получи текст навыка по адресу `url.raw`
2. Сохрани текст в корень текущего проекта (workspace): `.koda/skills/<name>/SKILL.md`.

#### Источник 2 - каталог agentskill

**URL:** https://agentskill.sh/api/skills?limit=30&q=<поисковый_запрос>

> **ВАЖНО**: При любой технической ошибке переходи к источнику 3.

1. Получи данные об имеющихся в каталоге навыках.
2. Важны следующие поля ответа:
   1. Базовая обязательная информация:
      - `name`: имя навыка;
      - `owner`: имя автора;
      - `claimed`: автор подтверждён;
   2. Критерии релевантности:
      - `seoSummary`: описание навыка;
      - `category`, `skillTypes`, `tools`: ключевые слова, характеризующие область применения и технологический стек;
      - `jobRoles`, `jobCategories`: ключевые слова, характеризующие релевантные роли или профессии;
      - `tags`: дополнительные ключевые слова, характеризующие навык;
   3. Числовые показатели качества:
      - `securityScore`: показатель безопасности (0-100);
      - `downvotes`: количество негативных оценок;
      - `upvotes`, `contentQualityScore`, `creatorTrustScore`, `hotScore`, `recentInstalls24h`, `recentInstalls3d`, `recentInstalls7d`, `recentRatings3d`, `recentRatings7d`, `topScore`, `trendingScore`, `score`, `ratingCount`, `installCount`, `githubStars`: показатели качества и популярности навыка;
3. Оцени соответствие запроса пользователя с этими полями по критериям ниже.

**Критерии оценки:**

- ОБЯЗАТЕЛЬНО: все критерии релевантности должны максимально соответствовать запросу пользователя
- ОБЯЗАТЕЛЬНО: `securityScore` должен быть в диапазоне 75-100
- ОПЦИОНАЛЬНО: `downvotes` = 0 или значительно ниже всех остальных показателей качества
- ОБЯЗАТЕЛЬНО: все остальные числовые показатели качества суммарно должны быть > 0 (чем выше, тем лучше)
- ОПЦИОНАЛЬНО: `claimed` = true

**Установка:**

1. Получи данные по адресу: `https://agentskill.sh/api/agent/skills/<name>/install?owner=<owner>`
2. Сохрани значение `skillMd` поля в корень текущего проекта (workspace): `.koda/skills/<name>/SKILL.md`.
3. Удали из этого файла строки:
   * `# --- agentskill.sh ---` (первая строка);
   * `# ---` (перед frontmatter, обычно 13-я сверху);
   * всё содержимое между ними.

#### Источник 3 - каталог neuraldeep

**URL:** https://neuraldeep.ru/api/skills?q=<поисковый_запрос>

> **ВАЖНО**: При любой технической ошибке переходи к другим источникам.

1. Получи данные об имеющихся в каталоге навыках.
2. Важны следующие поля ответа:
   1. Базовая обязательная информация:
      - `id`: uuid навыка;
      - `name`: имя навыка;
      - `owner`: имя автора;
   2. Критерии релевантности:
      - `description`: описание навыка;
      - `category`, `tags`: дополнительные ключевые слова, характеризующие навык, область его применения и технологический стек;
   3. Показатели качества:
      - `status`: статус проверки;
      - `featured`: признак "Выбор редакции";
      - `githubStars`, `installs`, `trending24h`: числовые показатели популярности навыка;
3. Оцени соответствие запроса пользователя с этими полями по критериям ниже.

**Критерии оценки:**

- ОБЯЗАТЕЛЬНО: все критерии релевантности должны максимально соответствовать запросу пользователя
- ОБЯЗАТЕЛЬНО: `status` = `approved`
- ОПЦИОНАЛЬНО: `featured` = `true`
- ОБЯЗАТЕЛЬНО: все остальные числовые показатели популярности суммарно должны быть > 0 (чем выше, тем лучше)

**Установка:**

1. Получи данные по адресу: `https://neuraldeep.ru/api/skills/readme?skillId=<id>`
2. Сохрани значение `content` поля в корень текущего проекта (workspace): `.koda/skills/<name>/SKILL.md`.

### Другие каталоги навыков

**URL:**
- `https://mcpmarket.com/search?type=skills&q=<поисковый_запрос>`
- `https://mcpservers.org/agent-skills`
- `https://github.com/openai/skills/tree/main/skills/.curated`
- `https://github.com/anthropics/skills/tree/main/skills`

> **ВАЖНО**: При любой технической ошибке, прекращай установку и переходи к этапу "Обработка результатов установки".

## Обработка результатов установки

### Ошибка

**Критерии:**

1. HTTP-запросы завершаются с кодом статуса >= 400.
2. Ошибки файловой системы.

**Действия:**

1. Если один из источников (вариантов установки) не подходит, нужно использовать другой.
2. Если использованы все источники, но успех не достигнут, следует:
   - сообщить пользователю о возникшей ошибке и возможных вариантах её исправления;
   - предложить пользователю найти навык самостоятельно в источниках.

### Успех

**Критерии:**

1. Файл SKILL.md существует в директории установки.
2. Файл начинается с frontmatter.

**Действия:**

1. Сообщи:
   - путь до установленного навыка
   - описание навыка (переведи на русский, если написано на другом языке)
   - ссылку на страницу навыка для просмотра в браузере.
2. Обрати внимание, что установленный навык может быть выключен по умолчанию и его потребуется включить вручную.
