Files
agentik/skills/README.md
T
subochev 0fdc12695e
ci / JVM build + tests (push) Failing after 1m57s
docs: per-module README + root navigation hub + CI/release workflows
- README.md в каждом подмодуле: для библиотек — описание проблемы,
  подключение через maven-central/caffeine, версии в gradle/libs.versions.toml.
  Для запускаемых модулей — команды запуска + переменные среды с дефолтами.
- Корневой README.md переписан как навигационный хаб: что это, где клиенты,
  где серверы, как собрать, как опубликовать.
- build.gradle.kts: per-module POM-description через единую карту в rootProject.extra
  (порядок важен — нужно ДО apply плагина KMP, поэтому beforeEvaluate в subprojects).
- .gitea/workflows/ci.yml (новый): build + jvmTest + shadowJar на PR/push main.
- .gitea/workflows/release.yml (обновлён): публикует библиотеки в caffeine
  Nexus + собирает 3 fatjar'а и крепит их к release как бинарные ассеты.
2026-09-16 16:24:03 +03:00

78 lines
2.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# :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`.