Skip to content

Скиллы ​

Скилл — инструкция, как делать определённый вид работы: «как у нас добавляют эндпоинт», «как писать тесты к репозиторию», «как менять React-компонент». Jarvis сам подбирает агенту подходящие скиллы, а агент может прочитать и любой другой, если тот пригодится.

Где лежат ​

Jarvis собирает скиллы из нескольких мест. Если имена совпадают, берётся тот, что выше в списке:

ОткудаГдеФормат
проект.jarvis/skills/<id>/skill.yaml и instructions.md
документация командыпапки из knowledge.sourcesдокумент, помеченный как скилл; читается на месте
проект, общий формат.agents/skills/<имя>/, .claude/skills/<имя>/SKILL.md
встроенныев Jarvissdd-implementation, unit-testing, refactor
личные~/.jarvis/skills/, ~/.agents/skills/, ~/.claude/skills/оба формата

Скилл проекта заменяет встроенный с тем же именем. Личные скиллы только добавляют новые имена и не перекрывают ни проектные, ни встроенные.

Скилл, нужный всей команде, кладите в проект. Личный есть только у вас, поэтому у коллег и в CI задача пойдёт без него.

Формат SKILL.md ​

Это тот же формат, что читают Claude Code, opencode и Codex, поэтому у команды может быть один набор скиллов на все инструменты. В шапке обязательны name и description. Где скилл применим, задаётся в metadata, значения перечисляются через запятую:

markdown
---
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 ​

yaml
# .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-кейс из такой задачи предупредит, что на другой машине этого скилла не будет.
sh
jarvis skills list    # какие скиллы видит Jarvis в этом проекте

Как скиллы улучшаются ​

Ревью предлагает улучшение конкретного скилла, и оно ждёт вас в «База знаний → Кандидаты». Если принять, текст допишется в конец инструкции скилла, а версия вырастет. Со следующей задачи агенты получат новую версию.

Встроенный скилл перед правкой копируется в проект, и дальше проектная копия его заменяет. Личные скиллы и скиллы из документации команды Jarvis не правит: их меняют там, где они лежат.

Предложить улучшение самому можно формой на «Обзоре» базы знаний или командой:

sh
jarvis candidates add skill-improvement "Называть фикстуры по кейсу" --skill unit-testing \
  "5. Фикстура называется по кейсу, который она готовит."

Настройки ​

yaml
# .jarvis/project.yaml
knowledge:
  maxSkills: 2                                         # сколько скиллов идёт агенту целиком
  split: { skills: 0.4, standards: 0.35, knowledge: 0.25 }   # доли бюджета контекста
  sources:                                             # документация команды, читается на месте
    - path: documentation
      skills: ["SKILL_*.md"]                           # эти документы — скиллы

Apache-2.0