Скиллы
Скилл — инструкция, как делать определённый вид работы: «как у нас добавляют эндпоинт», «как писать тесты к репозиторию», «как менять React-компонент». Jarvis сам подбирает агенту подходящие скиллы, а агент может прочитать и любой другой, если тот пригодится.
Где лежат
Jarvis собирает скиллы из нескольких мест. Если имена совпадают, берётся тот, что выше в списке:
| Откуда | Где | Формат |
|---|---|---|
| проект | .jarvis/skills/<id>/ | skill.yaml и instructions.md |
| документация команды | папки из knowledge.sources | документ, помеченный как скилл; читается на месте |
| проект, общий формат | .agents/skills/<имя>/, .claude/skills/<имя>/ | SKILL.md |
| встроенные | в Jarvis | sdd-implementation, unit-testing, refactor |
| личные | ~/.jarvis/skills/, ~/.agents/skills/, ~/.claude/skills/ | оба формата |
Скилл проекта заменяет встроенный с тем же именем. Личные скиллы только добавляют новые имена и не перекрывают ни проектные, ни встроенные.
Скилл, нужный всей команде, кладите в проект. Личный есть только у вас, поэтому у коллег и в CI задача пойдёт без него.
Формат SKILL.md
Это тот же формат, что читают Claude Code, opencode и Codex, поэтому у команды может быть один набор скиллов на все инструменты. В шапке обязательны name и description. Где скилл применим, задаётся в metadata, значения перечисляются через запятую:
---
name: orders-endpoint
description: Как добавить эндпоинт в orders-api
metadata:
jarvis/agents: implementation
jarvis/kinds: feature, change
jarvis/stacks: kotlin
jarvis/paths: src/**/api/**
jarvis/version: 2
---
1. Контракт сначала в openapi.yaml…Без jarvis/* в metadata Jarvis не знает, где скилл применим, и сам его не подбирает. Такой скилл агенты видят в общем списке и читают, когда он подходит к работе, а шаг сценария может назвать его явно.
Файлы рядом со скиллом, например references/…, агент может прочитать. Папку scripts/ Jarvis не запускает и агентам не отдаёт.
Формат .jarvis/skills
# .jarvis/skills/react-component-change/skill.yaml
id: react-component-change
version: 1
title: Change a React component
appliesTo:
stacks: [react]
paths: ["src/**/components/**"]
kinds: [feature, change] # пусто — любой тип задачи
agents: [implementation] # пусто — implementation
requiredStandards: ["STD-REACT-*"]Текст для агента лежит рядом, в instructions.md.
Как скилл попадает к агенту
Перед каждым обращением к агенту Jarvis подбирает скиллы по четырём признакам: какой это агент, какой тип задачи, на каком стеке проект и какие файлы затронуты.
- Целиком идут самые точные совпадения, не больше
knowledge.maxSkills(по умолчанию два). - По запросу — остальные подходящие: имя и описание, полный текст агент читает сам.
- Все прочие скиллы, в том числе для других агентов, агент видит коротким списком «имя — описание» и тоже может прочитать любой.
Тип задачи определяется так: что выбрали вы в «Новой задаче» (или --kind), иначе тип сценария (у fix — исправление), иначе по словам задачи («баг», «не работает» — исправление, «рефакторинг», «добавь тесты»), иначе «изменение». Что выбрано и почему, видно в форме и в шапке задачи.
Шаг сценария может назвать свои скиллы сам — тогда агент получает ровно их, целиком и в этом порядке. Так обязательная процедура не зависит от того, догадается ли модель её запросить. Как это записать — на странице сценарии задач.
Где это видно
- База знаний → Скиллы: откуда скилл, в каком он формате, не заменён ли проектным, доходил ли до агентов в последних задачах.
- Страница задачи: под каждым шагом — какие скиллы получил агент и почему: подобраны или названы шагом.
- История задачи: какой скилл какой версии был у агента. Личный скилл помечен отдельно, и eval-кейс из такой задачи предупредит, что на другой машине этого скилла не будет.
jarvis skills list # какие скиллы видит Jarvis в этом проектеКак скиллы улучшаются
Ревью предлагает улучшение конкретного скилла, и оно ждёт вас в «База знаний → Кандидаты». Если принять, текст допишется в конец инструкции скилла, а версия вырастет. Со следующей задачи агенты получат новую версию.
Встроенный скилл перед правкой копируется в проект, и дальше проектная копия его заменяет. Личные скиллы и скиллы из документации команды Jarvis не правит: их меняют там, где они лежат.
Предложить улучшение самому можно формой на «Обзоре» базы знаний или командой:
jarvis candidates add skill-improvement "Называть фикстуры по кейсу" --skill unit-testing \
"5. Фикстура называется по кейсу, который она готовит."Настройки
# .jarvis/project.yaml
knowledge:
maxSkills: 2 # сколько скиллов идёт агенту целиком
split: { skills: 0.4, standards: 0.35, knowledge: 0.25 } # доли бюджета контекста
sources: # документация команды, читается на месте
- path: documentation
skills: ["SKILL_*.md"] # эти документы — скиллы