kasetto — швидкий менеджер AI-скілів, написаний на Rust
Привіт cпільното DOU!
Хочу поділитись open-source інструментом який зробив для себе, і який, сподіваюсь, стане в нагоді іншим розробникам що працюють з AI-агентами.
GitHub: github.com/pivoshenko/kasetto
Docs: www.kasetto.dev
Чому kasetto?
Назва від японського カセット (kasetto) — касета. Пам’ятаєте автомобільні касетні магнітоли? Вставив касету — грає одна музика, витягнув, вставив іншу — вже інша. Без налаштувань, без інсталяцій. Просто hot-swap.
Скіли в kasetto працюють так само. Кожне джерело скілів — це касета, яку можна вставити, замінити або поділитись з другом. Один YAML-конфіг — це ваша колекція касет.

Проблема
Ви налаштували Claude Code під себе — додали скіли, промпти, правила. Все працює ідеально. А потім сідаєте за інший комп і починаєте все заново. Або в команді кожен має свій набір скілів і ніхто не знає хто що використовує.
Скіли для AI-агентів — це по суті конфігураційні markdown-файли які живуть у локальних директоріях. Немає ні пакетного менеджера, ні lock-файлу, ні способу синхронізувати їх між машинами чи тім мейтами.
Це як pip install без requirements.txt — працює поки не перестає працювати.
Що робить kasetto
Один YAML-конфіг описує всі ваші скіли — звідки їх брати, для якого агента ставити, і куди класти.
kst sync
Без ручного копіювання. Без скриптів. Одна команда.
Конфігурація
Створюєте skills.config.yaml у корені проєкту або будь-де:
# Вказуєте агент - kasetto знає куди ставити скіли agent: claude-code skills: # Тягнемо конкретні скіли з GitHub-репозиторію - source: https://github.com/org/skill-pack branch: main skills: - code-reviewer - name: design-system # Синхронізуємо все з локальної папки - source: ~/Development/my-skills skills: "*" # Скіли з підпапки монорепи - source: https://github.com/acme/monorepo skills: - name: custom-skill path: tools/skills
Змінили агент з claude-code на cursor або codex? Один рядок — і скіли ставляться в правильну директорію автоматично. Підтримується 35+ агентів: Claude Code, Cursor, Copilot, Codex, Windsurf, Gemini CLI, Roo Code, Cline та інші.
Команди
# Синхронізація з дефолтного конфігу (skills.config.yaml) kst sync # Синхронізація з конкретного файлу kst sync --config skills.config.yaml # Тімовий конфіг по URL - кожен розробник запускає одну команду kst sync --config https://raw.githubusercontent.com/org/configs/main/skills.yaml # Подивитись що зміниться без запису на диск kst sync --dry-run # JSON-вивід для CI/CD пайплайнів kst sync --json # Інтерактивний браузер встановлених скілів (vim-style навігація) kst list # Діагностика: версія, шляхи, статус останньої синхронізації kst doctor
Приклад для команди
Тімлід комітить skills.config.yaml в репозиторій:
agent: claude-code skills: - source: https://github.com/our-company/engineering-skills skills: - code-review-guidelines - name: api-design-standards - name: testing-conventions - source: https://github.com/our-company/frontend-skills branch: v2 skills: - name: react-patterns - name: accessibility-checker
Новий розробник в команді робить:
kst sync # або якщо з ремоута kst sync --config https://raw.githubusercontent.com/our-company/engineering-skills/refs/heads/main/skills.config.yaml
Готово. Всі скіли на місці, ідентичні до решти команди.
Приклад для CI
# GitHub Actions - name: Sync AI skills run: | curl -fsSL https://raw.githubusercontent.com/pivoshenko/kasetto/main/scripts/install.sh | sh kst sync --config skills.config.yaml --json
Чому Rust
Написаний на Rust з mimalloc та fat LTO. Синхронізація навіть великого набору скілів займає мілісекунди. Для
Для кого це корисно
- Розробники які використовують AI-агентів щодня
- Тімліди які хочуть стандартизувати набір скілів у команді
- Всі хто працює на кількох машинах і втомився від ручної синхронізації
- DevOps/CI — автоматичне розгортання скілів через пайплайни
Спробувати
# macOS / Linux curl -fsSL https://raw.githubusercontent.com/pivoshenko/kasetto/main/scripts/install.sh | sh # Homebrew brew install pivoshenko/tap/kasetto # Windows powershell -ExecutionPolicy Bypass -c "irm https://raw.githubusercontent.com/pivoshenko/kasetto/main/scripts/install.ps1 | iex" # Cargo cargo install kasetto
У планах підтримка MCP конфігів, хуків та інших MD файлів.
Натхненний підходом uv для Python-пакетів — kasetto робить те саме для AI-скілів.
Буду радий фідбеку! А як ви синхронізуєте налаштування своїх AI-агентів між машинами?
12 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівА можете оформити окремою бібліотекою ?
Привіт! Додав у TODO нотатки 😄
А чим це краще ніж якщо просто тримати репозиторій на Github зі скілами?
Головна ідея в тому, що kasetto дозволяє не просто тримати скіли в одному репозиторії, а підключати їх з інших репозиторіїв як залежності і потім автоматично підтягувати оновлення, якщо автор скіла щось змінив.
Якщо ж просто тримати все в одному GitHub-репозиторії, то далі зазвичай є три варіанти:
— копіювати скіли вручну
— возитися з git submodules
— писати свої скрипти (типу батчом ранити npx skills install)
Тобто GitHub сам по собі вирішує лише зберігання, але не дуже зручно вирішує перевикористання, оновлення і синхронізацію скілів між різними джерелами.
Наприклад, у моєму сетапі частина скілів локальні, а частина підтягнута з інших репозиторіїв:
github.com/...b/main/skills.config.yaml
Найбільше це відчувається в команді: можна гарантувати, що всі тіммейти мають однаковий набір скілів, без ручного копіювання.
У новому оновленні буде додано також інсталяція скілів по проєкту замість глобалу, а також підтримка AGENTS.md i т.д.
Чудово! Кілька питань — планується можливість додавати per project (а не тримати усі скіли глобально)? І ще — чому не alias (one source of truth) та можливість вказати кілька агентів одразу?
Дякую за підтримку! Так обидві фічі у планах! 😉
Було добре оформити бібліотекою, я би будував би тоді у свій github.com/pomazanbohdan/vida-stack
Оо гарна пропозиція, додав у нотатки. Також підтримав ваш проєкт, виглядає дуже цікаво!
Просто зізнайтесь, що захотіли зробити проєкт на Rust — я зрозумію 😉
Проєкт підтримав зірочкою на GitHub.
Будете писати про проєкт далі? На Reddit, LinkedIn, Hacker News?
Ахах так! 😄👀 Так думаю трохи пробустити проєкт, в першу чергу зробив для себе та друзів, але виглядає так, що ніша вільна (напр. vercel skills не мають декларативності), то можливо залитить!
Дякую за підтримку проєкту!
1. У тебе буде максимум кілька десятків скілів
2. Синхронізувати будеш раз в день в перші тижні, раз в тиждень потім
3. rust ніяк не прискорить завантаження скілів з гіта, а це буде основним тормозом
4. Воркфлоу де будь-який запит в агента займає хвилини, якось пофіг засинранізуєш ти скіли раз в тиждень за секунди чи мілісекунди
Пан президент має рацію по суті. Але, як то кажуть, коли проєкт на Rust — одразу з’являються карти на руках