# :skills — `pw.binom.agentik.skills` **Парсер opencode-style скилов: `SKILL.md` или `*.yaml` с YAML-frontmatter + markdown body.** Загружается в system prompt как отдельная секция; модели доступны тулы `read_skill` / `skill_save` / `skill_delete` (если они подключены через `:agent-toolsets`). ## Какую проблему решает Агенту нужно **знать**, какие процедуры/инструкции у него есть, не таская их в коде. Скил — это: ```markdown --- name: backend:spring:db-base description: Правила JPA/Flyway миграций и репозиториев в agentik. --- Правила, которые применяются ко всем изменениям схемы: - миграции только в Flyway; - новые колонки nullable by default; - ... ``` Парсер читает такие файлы из каталога (рекурсивно), валидирует обязательные поля (`name`, `description`), собирает каталог для system prompt и **поддерживает горячее обновление**: добавил файл — доступен в следующем `read_skill` без рестарта. ## Формат Поддерживаются оба варианта: - **`SKILL.md`** — единый файл в каталоге (с frontmatter + body). - **`*.yaml`** + опциональный `*.md`-компаньон с тем же basename. Frontmatter — YAML, минимум `name` (с `:` для вложенности) и `description`. Остальные поля — пользовательские, доступны через `SkillFile.frontmatter`. ## Подключение ```kotlin commonMain { implementation("pw.binom.agentik:skills:$version") implementation("com.charleskorn.kaml:kaml:0.55.0") } ``` ## Использование ```kotlin import pw.binom.agentik.skills.SkillCatalog val catalog = SkillCatalog.fromDirectory(Path("/etc/agentik/skills")) catalog.listAll().forEach { skill -> println("- ${skill.name}: ${skill.description}") } val skill = catalog.findByName("backend:spring:db-base") val body = skill?.body ``` `SkillPrompt` умеет отрендерить каталог в markdown-секцию для system prompt (с truncate по длине, чтобы не раздувать контекст). ## Где смотреть версии - `version` из `gradle.properties` (`version=0.1.0`) - релизы: `https://git.binom.pw/subochev/agentik/releases` ## Сборка ```bash ./gradlew :skills:build ./gradlew :skills:jvmTest ``` KMP-таргеты — полный набор как у `:proto`. Зависимости — только `kotlinx-serialization` + `kaml`.