docs: per-module README + root navigation hub + CI/release workflows
ci / JVM build + tests (push) Failing after 1m57s
ci / JVM build + tests (push) Failing after 1m57s
- 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 как бинарные ассеты.
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
# :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`.
|
||||
Reference in New Issue
Block a user