3,583 papers
arXiv:2610.04832 87 4 окт. 2026 г. FREE

Конкретные правила в SKILL.md: как одна строка с командой или путём заставляет агента действовать

КЛЮЧЕВАЯ СУТЬ
16 моделей получили запрос «разложи заметку по папкам проекта». Ни одна не прочитала нужный индексный файл — ни со старым скилом (файлом-инструкцией для агента), ни вообще без него. Одна новая строка с путём к этому файлу, и нужное действие сделали 43 из 80 попыток. Метод позволяет заставить агента вроде Claude Code читать нужный файл, запускать нужную проверку и класть результат куда надо. Фишка: путь, который просто лежит в репозитории, не работает. Работает только строка-приказ с точным именем. Это правило с токеном — команда, флаг или путь в обратных кавычках. Расплывчатые пояснения и переформулировки почти ничего не дают, а прибавка к качеству приходит почти целиком от таких строк.
Адаптировать под запрос
⚡

TL;DR

Исследователи сравнивали старые и новые версии реальных SKILL.md (файлов-инструкций для агента вроде Claude Code). Вывод: прибавка к качеству работы агента приходит почти целиком от добавленных конкретных правил. Правило — это строка-приказ, где названа команда, путь или имя (run allium check, Must read: knowledge/projects/_index.md). Расплывчатые пояснения и переформулировки почти ничего не дают.

Агент не знает, чего вы от него хотите, если вы не назвали конкретное действие. В одном из примеров 16 моделей на запрос «разложи заметку по папкам проекта» ни разу не прочитали нужный индексный файл ни со старой версией скила, ни вообще без него. С новой версией, где одна строка называла этот файл, нужное действие сделали 43 из 80 попыток. Просто «видеть» путь где-то в репозитории или контексте не помогает. Нужна строка, которая прямо приказывает его использовать.

Метод простой: в инструкции агенту добавляй проверяемые правила с точным токеном (команда, флаг, путь, идентификатор) в обратных кавычках. Особенно важны токены, о которых в инструкции раньше не было ни слова. Но учти: в реальных агентах тело скила подгружается только когда агент сам решит, что оно нужно. Из-за этого агенты теряют примерно половину прироста.

🔬

Схема метода

ШАГ 1: Найди, где агент ошибается или пропускает действие → список «что он должен был сделать»
ШАГ 2: Для каждого пропуска напиши правило-приказ с точным токеном в `кавычках` → одна строка
ШАГ 3: Проверь, что токена не было в старой инструкции → если был, правило даёт меньше
ШАГ 4: Прогони тот же запрос до и после → смотри, появилось ли нужное действие
ШАГ 5: Выкинь правила без заметного эффекта → не раздувай файл

Это работа с файлом инструкций, не один промпт. Шаги 4–5 — это отдельные запуски агента.

🚀

Пример применения

Задача: Вы ведёте продукт в приложении доставки продуктов (в духе «Самоката»). Агент в Claude Code пишет релиз-ноуты для магазинов приложений. Каждый раз он выдумывает свой тон и забывает про проверку лимита символов. В скиле release-notes написано расплывчатое: «Пиши в нашем тоне, следи за длиной».

Промпт (правки в SKILL.md):

---
name: release-notes
description: Пишет текст релиза для App Store и RuStore. Используй, когда просят
  подготовить release notes, «что нового» или описание версии.
---

# Правила

- **Перед написанием** прочитай `docs/tone-of-voice.md`.
- Список изменений бери только из `CHANGELOG.md`, не из памяти.
- Сформируй текст для RuStore в файле `release/rustore.txt`, для App Store — в `release/appstore.txt`.
- **После написания** запусти `npm run check:length` и исправь текст, если проверка не пройдена.
- Не используй слова из списка `docs/banned-words.md`.

Результат: Агент чаще начнёт работу с чтения именно docs/tone-of-voice.md, возьмёт изменения из CHANGELOG.md, создаст два файла по указанным путям и запустит проверку длины. Прирост будет заметнее по тем пунктам, где раньше в инструкции не было ни пути, ни команды. Часть этого эффекта потеряется, если агент решит не загружать скил целиком. Поэтому в description стоит перечислить фразы, по которым скил должен включаться.

🧠

Почему это работает

Слабость LLM. Модель не знает структуру вашего проекта. Фраза «следуй нашему тону» не говорит, где этот тон записан и что делать. Модель подставит среднее по интернету. Если нужный файл просто лежит в репозитории или упомянут где-то рядом, этого мало. В исследовании «видел токен рядом» не заменяло правило.

Сильная сторона LLM. Модель отлично выполняет прямые указания, когда в них есть точное имя: «прочитай X», «запусти Y», «положи в Z». Такой приказ можно выполнить буквально, и результат легко проверить. Кроме того, старые и новые поколения моделей выигрывают примерно одинаково, так что приём не завязан на самую свежую модель.

Как метод обходит слабость. Правило с токеном превращает расплывчатое пожелание в конкретное действие. Больше всего это помогает, когда токена в старой инструкции не было совсем: агент не мог угадать ни путь, ни команду.

Рычаги управления: - Название и описание скила → агент загружает тело только по ним. Туманное описание — тело не загрузится, и все ваши правила пропадут. Пиши, в каких ситуациях скил нужен. - Число правил → каждое правило стоит токенов. В исследовании примерно в одной из пяти пар «правило — модель» токены добавились, а пользы не было. Проверяй и удаляй пустые. - Конкретность токена → путь и команда в обратных кавычках работают лучше, чем «сверься с гайдом». - Новизна токена → правило про то, чего в инструкции ещё не было, даёт максимум. Переформулировка существующего правила почти ничего не меняет.

Про стоимость. Новая версия добавляет примерно 18–19% входных токенов в одиночном ответе. Но ответ при этом становится короче. В агентном эпизоде обнаружить рост расхода от самой правки не удалось. Зато сама подгрузка тела скила повышает расход эпизода в среднем на 50%.

📋

Шаблон промпта

---
name: {имя_скила}
description: {что делает скил}. Используй, когда {ситуации_запуска_через_запятую}.
---

# Правила

- Перед {действие_1} прочитай `{путь_к_файлу_1}`.
- Для {задача_2} используй команду `{команда_2}`.
- Результат сохраняй в `{путь_для_результата}`.
- После {действие_3} запусти `{команда_проверки}` и исправь, если проверка не пройдена.
- Не используй `{запрещённое_имя_или_флаг}`.

Что подставлять: - {имя_скила} и {что делает скил} — короткое имя и одна фраза о назначении. - {ситуации_запуска} — реальные формулировки запросов, по которым агент должен включить скил. - {путь_к_файлу}, {команда}, {путь_для_результата} — точные токены из вашего проекта. Не «наш гайд по стилю», а docs/tone-of-voice.md. - {команда_проверки} — любая команда, по результату которой можно сразу понять, сделано ли действие.

🚀 Быстрый старт — вставь в чат с агентом или обычной LLM:

Вот шаблон правил для SKILL.md. Адаптируй под мою задачу: {твоя задача}.
Вот мой текущий SKILL.md (или инструкция): {вставить}.
Задавай вопросы, чтобы заполнить поля.

[вставить шаблон выше]

LLM спросит про точные пути, команды и ситуации запуска, потому что метод работает только на конкретных токенах. Она сверит их с вашей текущей инструкцией, найдёт те, о которых там ничего не сказано, и превратит их в правила-приказы.

⚠️

Ограничения

⚠️ В реальных агентах эффект меньше: в одиночном ответе правило поднимает соблюдение очень сильно. В агентной среде прирост заметно скромнее. По итоговой правильности результата (по слепой оценке людей) он умеренный.

⚠️ Скил может не загрузиться: реальные инструменты подгружают тело скила только когда агент решит, что оно нужно. При такой загрузке сохраняется примерно половина прироста, у открытых моделей — около трети.

⚠️ Только проверяемые правила: измеряли правила с точным токеном (команда, путь, имя). Правила про тон, стиль и «будь аккуратнее» в исследовании не оценивали. Для них вывод не доказан.

⚠️ Лишние токены: загрузка тела скила повышает расход эпизода примерно наполовину. В части случаев (около каждой пятой пары правило — модель) токены тратятся без видимой пользы.

⚠️ Условия проверки: режим «размышления» у моделей отключали, часть экспериментов шла на небольших открытых моделях. Проверка в одиночных ответах шла по буквальному совпадению строки, что точное, но грубое мерило. Песочница — 80 задач.

⚠️ Эффект работает только там, где правило нужно: все результаты — для запросов, в которых правило применимо. Если запрос его не касается, пользы нет.

🔍

Как исследовали

Команда взяла 3159 реальных SKILL.md из 856 репозиториев на GitHub и восстановила историю правок каждого. Для 2608 пар «первая версия — последняя версия» они выбрали строки, которые мейнтейнеры добавили или удалили: приказ плюс конкретное имя (команда, путь, флаг) в обратных кавычках. Из этого получилось 396 «зондов»: пользовательский запрос, где правило обязательно нужно, но о нём прямо не сказано. Проверка шла по строке: есть в ответе нужный путь или команда, или нет.

Каждый зонд прогнали в трёх условиях: без тела скила, со старой версией и с новой. Разница «новая минус старая» показывает чистый эффект правки. Тестировали 21 модель (16 открытых, 5 закрытых, включая Claude Sonnet 4.5 и GPT-5.5) и четыре агента в песочнице на 80 исполняемых задачах. Результаты проверяли слепой оценкой людей.

Прирост соблюдения в одиночном ответе оказался в среднем +0.41, у агентов — действие совершается чаще на +0.23, итоговая правильность растёт на +0.10. Неожиданно, что само присутствие токена где-то ещё в контексте не заменяло правило, а в агентном эпизоде правка не добавила заметных затрат. Практический вывод: пиши прямые указания с названием действия, но следи, чтобы скил вообще загружался.

📄

Оригинал из исследования

Request (generated; never mentions the directive):
I need to save a new note about the Q4 marketing strategy. Please categorize it into the correct project folder based on our current project structure.

Added directive (line 21 of the new version of the Skill note-organizer):
Must read: knowledge/projects/_index.md

Check: response must contain knowledge/projects/_index.md

Result (compliant samples, none / old / new):
Qwen 3.5-9B: 0/5, 0/5, 5/5
All 16 models: 0/80, 0/80, 43/80

Контекст: это иллюстрация из статьи (Fig. 2). Реальный скил организует заметки. Одна добавленная строка с путём превратила «никто не читает индекс» в «читают в большинстве случаев».

💡

Адаптации и экстраполяции

💡 Адаптация для правил в CLAUDE.md и AGENTS.md: файлы инструкций проекта, в отличие от тела скила, обычно лежат в контексте всегда. Критичные приказы («перед коммитом запусти npm run lint», «не трогай legacy/») логично держать там, а в скиле оставить детали процедуры. Эту схему статья напрямую не сравнивала. Это вывод из механики загрузки, проверяй на своих задачах.

# CLAUDE.md
- Перед любым коммитом запусти `npm run lint` и `npm test`.
- Для задач про релизные тексты используй скил `release-notes`.

🔧 Техника: усиль description → скил включается чаще. Если агент решает, загружать скил или нет, по одному описанию, перечисли в нём реальные формулировки запросов: «Используй, когда просят release notes, “что нового”, описание версии». Это тоже вывод из механики, а не измеренный в статье приём.

🔗

Ресурсы

  • Статья: Agent Skill Evolution: How Revisions Affect Coding Agents
  • Авторы: Jiajie Wang (The University of Arizona), Yutong Zhao (California State University, Long Beach), Tianlin Li (Nanyang Technological University), Huashan Chen (Institute of Information Engineering, Chinese Academy of Science), Jinfu Chen (Wuhan University), Kebin Peng (East Carolina University), Sen He (The University of Arizona)
  • Данные: датасет SkillMD-138K, 396 зондов, 80 исполняемых задач и разметка людей (в статье указан пакет для воспроизведения)

📋 Дайджест исследования

Ключевая суть

16 моделей получили запрос «разложи заметку по папкам проекта». Ни одна не прочитала нужный индексный файл — ни со старым скилом (файлом-инструкцией для агента), ни вообще без него. Одна новая строка с путём к этому файлу, и нужное действие сделали 43 из 80 попыток. Метод позволяет заставить агента вроде Claude Code читать нужный файл, запускать нужную проверку и класть результат куда надо. Фишка: путь, который просто лежит в репозитории, не работает. Работает только строка-приказ с точным именем. Это правило с токеном — команда, флаг или путь в обратных кавычках. Расплывчатые пояснения и переформулировки почти ничего не дают, а прибавка к качеству приходит почти целиком от таких строк.

Принцип работы

Агент не умеет угадывать. Написано «следи за длиной» — он не знает чем мерить. Написано «после текста запусти npm run check:length» — он просто запускает. Это приказ с точным именем: прочитай X, запусти Y, положи в Z. Его можно выполнить буквально и сразу проверить. Главное правило: чем меньше агент мог догадаться сам, тем сильнее правило работает. Токены, о которых в старой инструкции не было ни слова, дают максимум прироста. Если просто переписать уже существующее правило другими словами, эффекта почти нет. Это как записка на холодильнике. «Купи что-нибудь к ужину» — получишь среднее по магазину. «Купи гречку и кефир в «Пятёрочке» у дома» — получишь гречку и кефир.

Почему работает

Модель не знает структуру вашего проекта. Фраза «следуй нашему тону» не говорит, где этот тон записан. Модель подставит среднее по интернету. Если файл лежит рядом или упомянут где-то в контексте, этого мало. В исследовании «видел токен рядом» не заменяло правило. Сильная сторона моделей — прямые указания с точным именем. Старые и новые поколения моделей выигрывают от таких правил примерно одинаково, поэтому приём не привязан к самой свежей модели. Теперь про цену, и тут не всё гладко: - Новая версия добавляет 18–19% входных токенов в одиночном ответе, но сам ответ становится короче. - Примерно в каждой пятой паре «правило — модель» токены потратили, а пользы не получили. - В реальных агентах тело скила подгружается, только когда агент решит, что оно нужно. Из-за этого теряется примерно половина прироста, у открытых моделей около двух третей. - Сама подгрузка тела поднимает расход эпизода в среднем на 50%. В агентной среде эффект скромнее, чем в одиночном ответе. По итоговой правильности (слепая оценка людей) прирост умеренный. Не ждите чуда, ждите, что агент перестанет пропускать очевидные шаги.

Когда применять

Работа с агентами для кода и документов (Claude Code и похожие) → конкретно для скилов, где агент регулярно пропускает действие: не читает нужный файл, не запускает проверку, кладёт результат не туда. Особенно когда нужное имя, команда или путь в инструкции вообще не упоминались. Не подходит для правил про тон, стиль и «будь аккуратнее». Их в исследовании не измеряли, вывод для них не доказан. Не поможет и если запрос не касается правила: пользы не будет.

Мини-рецепт

1. Поймай пропуски: прогони типичный запрос и выпиши, что агент должен был сделать, но не сделал.
2. Напиши приказ: одна строка на пропуск. Внутри точное имя в обратных кавычках: путь, команда, флаг или идентификатор.
3. Проверь новизну: было ли это имя в старой инструкции? Если было, жди меньше эффекта.
4. Добавь проверку: дай команду, по результату которой сразу ясно, сделано ли дело: npm run check:length, run allium check.
5. Не забудь про описание: в description скила перечисли реальные фразы запросов, по которым он должен включаться. Туманное описание — тело не загрузится, и все правила пропадут.
6. Прогони до и после: тот же запрос на старой и новой версии, отдельными запусками. Смотри, появилось ли нужное действие.
7. Выкинь пустое: правило без заметного эффекта удаляй. Каждая строка стоит токенов.

Быстрый старт: вставь в чат с агентом или обычной LLM:
Вот шаблон правил для SKILL.md. Адаптируй под мою задачу: {твоя задача}. Вот мой текущий SKILL.md: {вставить}. Задавай вопросы, чтобы узнать точные пути, команды и ситуации запуска. Найди имена, о которых в инструкции ничего не сказано, и превратиprи их в правила-приказы.

Примеры

[ПЛОХО] Задача: агент пишет текст релиза для магазинов приложений доставки продуктов. Каждый раз выдумывает свой тон и забывает про лимит символов. : Пиши в нашем тоне, следи за длиной.
[ХОРОШО] : `` - Перед написанием прочитай docs/tone-of-voice.md. - Список изменений бери только из CHANGELOG.md, не из памяти. - Текст для RuStore сохрани в release/rustore.txt, для App Store — в release/appstore.txt. - После написания запусти npm run check:length и исправь текст, если проверка не пройдена. - Не используй слова из docs/banned-words.md. ` В «хорошо» нет ни одного пожелания, только приказы с точными именами. Агент чаще начнёт с чтения docs/tone-of-voice.md, создаст два файла по нужным путям и запустит проверку длины. Особенно заметен прирост там, где раньше не было ни пути, ни команды. Чтобы скил точно включился, добавь в описание: description: Пишет текст релиза для App Store и RuStore. Используй, когда просят подготовить release notes, «что нового» или описание версии.`
Источник: AgentSkill Evolution: How Revisions Affect CodingAgents
ArXiv ID: 2610.04832 | Сгенерировано: 2026-10-06 06:10

Проблемы LLM

ПроблемаСутьКак обойти
Агент не выполняет действие, если оно названо расплывчато или лежит «рядом»Пишешь в инструкции «следуй нашему тону» или «сверься с гайдом». Нужный файл при этом есть в репозитории. Агент его не открывает и берёт усреднённый стиль. Сам факт, что путь виден в контексте, не заставляет его читать файл. Страдает любая задача, где нужно прочитать, запустить или сохранить что-то конкретноеЗамени пожелание на строку-приказ с точным именем в обратных кавычках. Например: «Перед написанием прочитай docs/tone-of-voice.md». Или: «После правки запусти npm run check:length». Глагол плюс точный путь или команда
Файл инструкций может вообще не загрузитьсяМногие агентные инструменты читают только название и описание файла инструкций. Полное тело подгружается, когда агент сам решит, что оно нужно. Описание туманное — тело не загрузится, и все правила пропадут. Примерно половина прироста от правил теряется именно такПиши описание как список ситуаций запуска: «Используй, когда просят release notes, "что нового", описание версии». Используй реальные формулировки запросов пользователей. Критичные правила, которые нельзя пропустить, дублируй в запросе или в главном файле, который грузится всегда

Методы

МетодСуть
Правила-приказы с точными именами — агент делает конкретные шагиНайди, где агент пропускает действие. Для каждого пропуска напиши одну строку: глагол плюс точное имя. Форма: Перед X прочитай path/file.md, Для Y запусти команду cmd --flag, Результат сохрани в out/file.txt, Не используй banned.md. Обязательно добавь шаг проверки: «запусти команда и исправь, если не прошло». Почему работает: приказ с именем выполняется буквально, и результат легко проверить. Агент не угадывает путь или команду. Как проверять: прогони один и тот же запрос до и после правки. Смотри, появилось ли нужное действие. Правила без заметного эффекта удаляй. Примерно каждое пятое правило тратит место и ничего не даёт. Когда да: есть проверяемое действие — файл, команда, флаг, формат. Когда нет: правила про тон, стиль, «будь аккуратнее». Для них эффект не доказан. Запрос должен касаться правила. Иначе пользы нет
📖 Простыми словами

AgentSkill Evolution: How Revisions Affect CodingAgents

arXiv: 2610.04832

AI-агенты лажают не от глупости, а от твоих водянистых инструкций. В коде и промптах нейросеть не догадывается, чего ты от неё хочешь — она тупо усредняет ответ по интернету. Исследователи препарировали реальные файлы SKILL.md и выяснили жесткую правду: весь прирост качества дают исключительно строгие императивные правила, а не попытки вежливо объяснить контекст.

Это как отправить стажёра на кухню с напутствием «сделай вкусно» вместо пошагового рецепта. Он бахнет сахара с майонезом, потому что «в среднем людям заходит». Модели плевать, что нужный конфиг лежит в репозитории: если в задаче нет прямого приказа «открой вот этот файл», она даже не почешется его искать.

Что реально работает: явные имена файлов, прямые пути и команды на запуск. Прокачивает скиллы только формат армейского приказа вроде Must read: path/to/index.md или прямое требование выполнить run allium check. Любые абстрактные пожелания в духе «следи за длиной текста» — чистый мусор, агент их просто сольёт.

Тестировали на кодинг-ассистентах уровня Claude Code, но принцип универсален. Собираешь ли ты бота техподдержки, генератор релиз-ноутов или сложный парсер — логика не меняется. Забудь про философские рассуждения о «нашем уникальном tone of voice»: дай точную ссылку на гайд, лимит символов цифрой и четкий чеклист валидации.

Короче: перестань вылизывать формулировки и заниматься псевдопсихологией промптов. Только пути, только команды, только хардкор. Хочешь предсказуемый результат вместо галлюцинаций — оформляй инструкции как строгий Bash-скрипт. Кто продолжает лить воду в скиллы — тот гарантированно получает херню на выходе.

Работа с исследованием

Адаптируйте исследование под ваши задачи или создайте готовый промпт на основе техник из исследования.

0 / 2000
~0.5-2 N-токенов ~10-30с
~0.3-1 N-токенов ~5-15с