3,583 papers
arXiv:2610.18927 84 13 окт. 2026 г. FREE

Аудит скилов на противоречия: чинить стоит то, что агент реально выполнит, и зависит это от модели

КЛЮЧЕВАЯ СУТЬ
Противоречия нашли в двух третях скилов (скил — папка с инструкциями, скриптами и конфигами для агента). Но их число почти ничего не говорит о реальном вреде. Метод позволяет проверить скил до запуска и найти только те противоречия, которые сломают результат. Ищи расхождения по трём границам (среда и скил, документ и документ, документ и код), а потом оставляй только те, что лежат на пути выполнения. Агент читает скил почти в 100% запусков, но реакция на ошибку зависит от модели. Правка сильно помогла Claude Haiku 4.5 и почти не повлияла на DeepSeek-V4-Flash.
Адаптировать под запрос
⚡

TL;DR

Исследователи проверили, что бывает, когда в скиле агента (папка с SKILL.md, скриптами и конфигами) разные файлы противоречат друг другу. Например, документация обещает сортировку, а скрипт её не делает. Или в одном месте указана версия библиотеки 6, а в другом 7.9. Они нашли такие противоречия в двух третях скилов, взяли 49 реальных случаев и прогнали агентов в трёх режимах: без скила, со скилом как есть и со скилом, где противоречие минимально исправлено.

Главная находка: число найденных противоречий почти ничего не говорит о реальном вреде. Агент читает скил почти в 100% запусков, то есть сталкивается с ошибкой всегда. Разница в том, что он делает после. Слабая модель берёт ошибочную инструкцию и честно доводит её до сломанного результата. Сильная замечает несостыковку, обходит её или чинит на лету. В итоге исправление скила сильно помогло одной модели (Claude Haiku 4.5) и почти не повлияло на другую (DeepSeek-V4-Flash).

Метод по сути такой: аудит скила по трём «границам». Первая — среда и скил, вторая — документ и документ, третья — документ и код. Затем минимальная правка только противоречащего места. Приоритет получают дефекты, которые лежат на пути выполнения. Чем слабее модель, тем важнее чистота скила.

🔬

Схема метода

ШАГ 1: Прочитать весь скил целиком (SKILL.md + скрипты + конфиги) → карта: что в нём есть и что на что ссылается
ШАГ 2: Искать противоречия по трём границам → список находок
        • Среда ↔ скил (версии, зависимости, пути, права)
        • Документ ↔ документ (две части описания говорят разное)
        • Документ ↔ код (обещано одно, сделано другое)
ШАГ 3: Отсеять мелочи (код умеет больше, чем описано — обычно безвредно) → подтверждённые находки
ШАГ 4: Ранжировать по достижимости: попадёт ли это место в обычный запуск? → приоритет
ШАГ 5: Минимально исправить одно место (не переписывать скил) → «чинёный» скил
ШАГ 6: Сравнить результат задачи: без скила / оригинал / исправленный → решить, стоила ли правка усилий

Шаги 1–4 можно сделать в одном чате или в одной сессии агента. Шаг 6 требует нескольких запусков.

🚀

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

Задача: Вы руководите небольшим интернет-магазином на Wildberries и Ozon. Вы скачали из открытого репозитория скил для Claude Code «еженедельный отчёт по выручке из выгрузок маркетплейсов». Дешёвая модель на нём то и дело выдаёт отчёт с неправильным порядком недель и ломается на установке pandas. Перед тем как винить модель, вы проверяете сам скил.

Промпт:

Ты аудитор скилов для агентов. Ниже папка скила «weekly-revenue-report»: 
SKILL.md, README.md, scripts/build_report.py, requirements.txt.

Найди противоречия по трём границам:
1. Среда ↔ скил: версии Python/библиотек, пути, права, внешние сервисы.
2. Документ ↔ документ: SKILL.md, README и комментарии говорят о разном.
3. Документ ↔ код: документация обещает то, чего код не делает 
   (over-promised), или код делает противоположное написанному.
   Если код умеет больше, чем описано — пропусти, это безвредно.

Для каждой находки: тип, цитата из каждого файла с номерами строк, 
почему это конфликт, попадёт ли это место в обычный запуск 
(да / нет / не уверен), как минимально исправить.
В конце — топ-3 находки по вероятности сломать результат.

[вставить содержимое файлов]

Результат: Модель выдаст структурированный список находок. У каждой будет тип (среда, документ-документ, документ-код), две цитаты рядом, оценка «попадёт ли в запуск» и вариант минимальной правки. В конце будет короткий приоритетный топ-3. Ожидайте в нём конфликты версий и места, где в тексте обещана сортировка или проверка, а в скрипте её нет. Часть находок придётся отбросить вручную как ложные.

🧠

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

Слабость: Агент читает скил как инструкцию, а не как спор. Если в тексте написано «сортируй по дате», слабая модель так и сделает, даже когда рядом лежит скрипт, который этого не умеет. Она не сверяет обещания с реальностью, а исполняет текст. Поэтому ошибка в скиле становится ошибкой в результате.

Сильная сторона: LLM хорошо находит расхождения между двумя фрагментами текста, если положить их рядом и прямо спросить. Сопоставить цитату из README с кодом ей проще, чем ловить ошибку «на лету» при выполнении. Поэтому аудит до запуска работает лучше, чем надежда, что агент сам разберётся.

Как метод это использует: Вы переносите проверку из момента выполнения в момент подготовки. Три границы дают модели чёткую рамку вместо расплывчатого «найди ошибки». Фильтр «попадёт ли в запуск» не даёт утонуть в сотне безобидных замечаний. Статья показывает, что именно ранжирование по достижимости важнее, чем число находок.

Рычаги управления: - Модель агента. Слабая или дешёвая модель: чини скил обязательно. Сильная: можно сначала проверить без правок. - Фильтр «безвредных». В оригинале «код умеет больше, чем описано» отбрасывают. Для скилов, которые потом читают люди, этот фильтр можно убрать. - Режим правки. «Минимальная правка» держит скил стабильным. «Перепиши целиком» — риск внести новые расхождения. - Глубина проверки. Попросите «не уверен» вместо вердикта, и модель не станет выдумывать конфликты.

📋

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

В статье нет готового текста промпта: аудитор SkillAudit — это код с несколькими LLM-проверками. Шаблон ниже собран по его описанию и таксономии из статьи, то есть это реконструкция.


Ты аудитор скилов для LLM-агентов. Твоя задача — найти места, где части 
скила противоречат друг другу, и оценить, сломают ли они выполнение.



Скил: {название_скила}
Файлы:
{содержимое_файлов_с_именами_и_номерами_строк}



Шаг 1. Карта скила. Перечисли файлы, что каждый делает, на что ссылается.
Шаг 2. Поиск по трём границам:
  A. Environment: скил ↔ среда ({среда_запуска}). Версии, зависимости, пути, права.
  B. Inter-Document: документ ↔ документ. Разные версии, шаги, ограничения 
     в SKILL.md, README, комментариях.
  C. Document-Code: документ ↔ код. Отмечай два вида:
     • Over-promised: документация обещает, код не делает
     • Semantically-conflicting: оба описывают поведение, но по-разному
     Under-promised (код умеет больше, чем описано) — не включай.
Шаг 3. Проверка каждой находки: убедись, что обе цитаты есть и действительно 
  конфликтуют. Сомнительное помечай «не уверен», не выдумывай.
Шаг 4. Достижимость: для каждой находки ответь, попадёт ли это место 
  в обычный запуск по задаче «{типовая_задача}»: да / нет / не уверен.



Для каждой находки:
- Тип (A / B / C-over / C-conflict)
- Цитата 1 (файл:строка) и цитата 2 (файл:строка)
- Почему это конфликт
- Достижимость: да / нет / не уверен
- Минимальная правка: что изменить в ОДНОМ месте. Не переписывай остальное.
В конце: топ-3 находки по вероятности сломать результат.

Что подставлять: - {название_скила} — имя папки или навыка. - {содержимое_файлов_с_именами_и_номерами_строк} — тексты файлов. Номера строк нужны, чтобы цитаты можно было проверить. - {среда_запуска} — например, «Python 3.11, Linux, без интернета». - {типовая_задача} — что обычно просит пользователь от этого скила.

🚀 Быстрый старт — вставь в чат:

Вот шаблон аудита скилов. Адаптируй под мой скил: [опиши, что делает скил и в какой среде запускается].
Задавай вопросы, чтобы заполнить поля.

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

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

⚠️

Ограничения

⚠️ Масштаб экспериментов: Влияние исправлений измеряли на 49 задачах и трёх небольших моделях. Там по одному целевому дефекту на задачу. Реальные скилы содержат много дефектов одновременно, и их взаимодействие не изучали.

⚠️ Нет флагманов: Проверяли Claude Haiku 4.5, Qwen3.6-35B (с 4-битным сжатием) и DeepSeek-V4-Flash без режима рассуждений. На самых сильных моделях картина, возможно, ещё мягче, но этого статья не показала. Абсолютные сравнения моделей между собой авторы просят делать осторожно.

⚠️ Эффект не одинаков: Для одной модели правка дала заметный прирост, для другой почти нулевой. Универсального «починил скил — стало лучше на X%» нет.

⚠️ Аудит сам делает LLM: Автоматический поиск противоречий давал ложные срабатывания, поэтому авторы подтверждали находки вручную. Результат промпта-аудитора надо проверять глазами.

⚠️ Нет готового промпта: Статья даёт таксономию и описание конвейера, но не текст промптов. Шаблон выше — реконструкция. Проверять его эффективность вам придётся самим.

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

🔍

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

Идея была простая: если в скиле есть противоречие, это плохо? Исследователи собрали 575 скилов: 488 из популярных GitHub-репозиториев и 87 из тестового набора SkillBench. Сначала сделали таксономию противоречий: среда, документ-документ, документ-код. Затем автоматический инструмент нашёл кандидатов, а двое авторов вручную подтвердили 1182 реальных несостыковки. Они встречаются у 67% скилов с GitHub и у 64% скилов SkillBench. Даже вручную написанные образцовые скилы не чище. В SkillBench больше всего случаев «документ обещает, код не делает» (45,6% всех находок).

Потом пришёл главный эксперимент. Из 49 находок сделали выполняемые задачи в Docker, с проверкой результата программой, без LLM-судьи. Для каждой создали пару: исходный скил и минимально исправленный. Каждую задачу прогнали в трёх режимах (без скила, исходный, исправленный) на трёх моделях, по три повторения. Всего получилось 441 пара траекторий для разбора.

Удивило вот что. Казалось бы, у моделей разный прирост, потому что одни читают скил, а другие нет. Но скил читали в 97% запусков. Разница возникает после контакта с ошибкой. Haiku шёл за ошибкой в провал в 30% запусков, Qwen в 24%, DeepSeek в 12%. При этом DeepSeek восстанавливался в 56% случаев, когда ошибку заметил. Вывод для практики: считать дефекты в скиле бесполезно. Нужно смотреть, на какой модели скил работает и попадает ли дефект на реальный путь выполнения.

📄

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

Таксономия противоречий (определения слоёв дословно):

We first classify inconsistencies by the participants of the violated contract:
• Environmental layer: Skill vs. runtime environment.
• Inter-document layer: conflicts among descriptive documents.
• Document-code layer: documentation vs. implementation.

Within the Document-code layer, we further classify inconsistencies by the direction of deviation:
• Over-promised (Doc > Code). The documentation promises functionality, constraints, or behavior that the implementation does not provide.
• Semantically-conflicting (Doc ≠ Code). The documentation and implementation both specify the relevant behavior but contradict each other semantically.
• Under-promised (Doc < Code). The implementation provides capabilities that are not documented.

Контекст: Это основа, по которой инструмент SkillAudit искал находки. Under-promised случаи авторы по умолчанию отбрасывали как безвредные.

💡

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

💡 Адаптация: минимальная правка противоречия

Статья описывает правило ремонта: правка точечная, решение не «подсказывает» ответ задачи. Для чата это превращается в отдельный промпт на второй проход:

Вот находка из аудита: {находка}.
Определи, какой из двух фрагментов авторитетнее (ориентируйся на то, что 
реально работает в {среда_запуска}). Исправь ТОЛЬКО это место: 
согласуй описание или код. Если обещание нельзя выполнить в нашей среде, 
сузь документацию, а не пиши новый код. Не меняй ничего другого.
Покажи diff.

🔧 Техника: добавить «стоп-правило» в файл инструкций → меньше слепого следования (экстраполяция, в статье не проверялась)

Статья показала, что слабые модели слепо идут за ошибочной инструкцией. Логично попробовать добавить в CLAUDE.md или AGENTS.md:

Если в инструкциях скила и в реальном поведении скриптов, ошибках или 
выводе команды есть расхождение — не продолжай по инструкции. 
Назови расхождение одной строкой и выбери вариант, который подтверждён 
реальным выводом.

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

🔗

Ресурсы

  • Название работы: Why Static Skill Inconsistencies Do Not Equate to Runtime Risks: A Behavioral Analysis of LLM Agent Execution
  • Авторы: Fengrui Fan, Huahao Wang, Jingyi Fang, Yutao Hu, Yueming Wu, Deqing Zou
  • Организация: Huazhong University of Science and Technology, China
  • Упоминаемые в работе: SkillBench (набор скилов с эталонными задачами), SkillAudit (инструмент статического аудита), WildSkills (набор из 49 проверяемых задач)
  • Проверяемые модели: Claude Haiku 4.5, Qwen3.6-35B-A3B, DeepSeek-V4-Flash

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

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

Противоречия нашли в двух третях скилов (скил — папка с инструкциями, скриптами и конфигами для агента). Но их число почти ничего не говорит о реальном вреде. Метод позволяет проверить скил до запуска и найти только те противоречия, которые сломают результат. Ищи расхождения по трём границам (среда и скил, документ и документ, документ и код), а потом оставляй только те, что лежат на пути выполнения. Агент читает скил почти в 100% запусков, но реакция на ошибку зависит от модели. Правка сильно помогла Claude Haiku 4.5 и почти не повлияла на DeepSeek-V4-Flash.

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

Работает как проверка по трём стыкам. 1. Среда и скил: версии библиотек, пути, права. В одном месте указана версия 6, в другом 7.9. 2. Документ и документ: SKILL.md и README говорят разное. 3. Документ и код: в тексте обещана сортировка, а скрипт её не делает. Дальше идёт фильтр. Если код умеет больше, чем описано, это обычно безвредно, пропускай. Для остального задай вопрос: попадёт ли это место в обычный запуск? Чини одно место минимальной правкой, а не переписывай скил целиком. Слабая модель исполняет текст как приказ. Сильная замечает несостыковку и обходит её. Поэтому чем дешевле модель, тем важнее чистота скила.

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

Слабая модель читает скил как инструкцию, а не как спор двух документов. Написано «сортируй по дате» — она сортирует, даже если скрипт этого не умеет. Ошибка в тексте превращается в ошибку в результате. У LLM есть и сильная сторона. Она хорошо находит расхождения, если положить два фрагмента рядом и прямо спросить. Сопоставить цитату из README с кодом проще, чем поймать ошибку на лету во время выполнения. Метод переносит проверку из момента выполнения в момент подготовки, и там LLM справляется заметно лучше. Три границы дают чёткую рамку вместо расплывчатого «найди ошибки». Фильтр «попадёт ли в запуск» защищает от сотни безобидных замечаний. Честно про масштаб: проверяли 49 задач и три небольшие модели, по одному дефекту на задачу. Как дефекты ведут себя вместе, неизвестно.

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

Агентные скилы (Claude Code и похожие) → скачанные из открытых репозиториев или написанные командой, особенно когда дешёвая модель выдаёт кривой результат и непонятно, виновата модель или скил. Хорошо работает перед массовым запуском на слабой модели. Чем она дешевле, тем больше выигрыш. НЕ подходит, если у вас сильная модель и скил почти не меняется: сначала проверьте её без правок, эффект может быть около нуля. Также не доверяйте списку находок слепо, часть окажется ложными срабатываниями.

Мини-рецепт

1. Собери скил целиком: SKILL.md, README, скрипты, конфиги. С номерами строк, чтобы цитаты можно было проверить.
2. Опиши среду и задачу: например, «Python 3.11, Linux, без интернета» и что обычно просят от скила. Без этого достижимость не оценить.
3. Запусти аудит по трём границам: среда и скил, документ и документ, документ и код. «Код умеет больше, чем описано» пропускай.
4. Разреши сомневаться: попроси ответ «да / нет / не уверен» про попадание в запуск. Тогда модель не выдумывает конфликты.
5. Проверь топ-3 глазами: часть находок будет ложной. Отбрасывай их вручную.
6. Поправь одно место на находку: минимально, без переписывания остального.
7. Сравни три запуска: без скила, оригинал, исправленный. Так увидишь, стоила ли правка усилий именно для вашей модели.

Роль для аудитора: <роль>аудитор скилов для LLM-агентов

Примеры

[ПЛОХО]: `Проверь мой скил и найди ошибки` [ХОРОШО]: `Ты аудитор скилов. Ниже файлы скила weekly-revenue-report: SKILL.md, README.md, scripts/build_report.py, requirements.txt. Найди противоречия по трём границам: среда и скил, документ и документ, документ и код. Если код умеет больше, чем описано, пропусти. Для каждой находки дай тип, две цитаты с номерами строк, почему это конфликт, попадёт ли место в обычный запуск (да / нет / не уверен) и минимальную правку. В конце топ-3 по вероятности сломать отчёт.` [ПЛОХО]: `Перепиши весь скил, чтобы он был без ошибок` [ХОРОШО]: `В SKILL.md сказано «сортируй недели по дате», а в build_report.py сортировки нет. Предложи правку в ОДНОМ месте: либо добавь сортировку в скрипт, либо убери обещание из текста. Остальное не трогай.`
Источник: Why Static Skill Inconsistencies Do Not Equate to Runtime Risks: A Behavioral Analysis of LLM Agent Execution
ArXiv ID: 2610.18927 | Сгенерировано: 2026-10-15 05:10

Проблемы LLM

ПроблемаСутьКак обойти
Слабая модель выполняет противоречивую инструкцию буквальноВ пакете инструкций (описание, скрипты, конфиги) части говорят разное. Текст обещает "сортируй по дате", а скрипт так не умеет. Или в одном месте версия библиотеки 6, в другом 7.9. Слабая модель берёт текст и не сверяет его с остальным. Она честно доводит ошибку до сломанного результата. Сильная модель чаще замечает несостыковку и обходит её. Поэтому одни и те же дефекты бьют по моделям по-разномуНе надейся, что модель разберётся сама. Проверь пакет инструкций до запуска. Для дешёвых моделей чисти обязательно. Для сильных сначала запусти как есть, чини, если результат плохой. Чини минимально: одно противоречащее место, без переписывания всего

Методы

МетодСуть
Аудит противоречий по трём границам — находит поломки до запускаДай модели все файлы разом, с номерами строк. Попроси искать конфликты по трём границам. 1. Среда ↔ инструкции: версии, зависимости, пути, права. 2. Документ ↔ документ: две части описания говорят разное. 3. Документ ↔ код: обещано одно, сделано другое. Для каждой находки требуй: тип, две цитаты с номерами строк, почему это конфликт, попадёт в обычный запуск: да / нет / не уверен, минимальная правка. В конце — топ-3 по риску. Почему работает: модель хорошо сравнивает два фрагмента, когда они лежат рядом и вопрос прямой. Это проще, чем ловить ошибку на лету во время выполнения. Три границы дают рамку вместо расплывчатого "найди ошибки". Разрешение ответить "не уверен" снижает выдуманные конфликты. Фильтр "код умеет больше, чем описано — пропусти" убирает безвредный шум. Когда да: любые наборы инструкций из нескольких частей. Это агентские навыки, системные промпты с приложениями, базы документов, README рядом с кодом. Когда нет: одна короткая инструкция, один файл. Важно: модель даёт ложные срабатывания. Проверяй находки глазами
📖 Простыми словами

Why Static Skill Inconsistencies Do Not Equate to Runtime Risks: A Behavioral Analysis ofLLMAgentExecution

arXiv: 2610.18927

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

Это как собирать шкаф из IKEA по инструкции от стиральной машины. В книжке написано «вкрутите болт М8», а в коробке лежат только гвозди, но рабочий пытается вкрутить гвоздь, потому что в мануале же так сказано. Модель не сомневается: написано сортировать по дате — она сделает вид, что сортирует, даже если скрипт в глаза не видел дат.

Авторы взяли 49 реальных конфликтов и прогнали агентов через три сценария: без скила, со скилом как есть и с минимально исправленным конфигом. Результаты вскрыли корень бед: агент ломается не из-за тупости, а из-за статических несоответствий. Когда в доке прописана версия библиотеки 6, а в коде вызывается версия 7.9, модель ловит ступор и падает на ровном месте.

Эксперимент ставили на базовых скриптах, но грабли общие для всего стека: от инструментов в Claude Code до агентов, сводящих выгрузки маркетплейсов. Если ты скармливаешь LLM внешний инструмент, модель всегда предпочтёт текст документации здравой логике. Конфликт документации и кода гарантированно убьёт пайплайн, даже если ты запустишь самую дорогую модель на рынке.

Хватит винить нейросеть за то, что она «опять отупела» — сначала вычисти мусор из файлов самого скила. Минимальная синхронизация кода и текста чинит поведение агента быстрее, чем бесконечная смена промптов. Либо ты руками убираешь противоречия, либо агент продолжит уверенно ломать твои задачи за твои же деньги.

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

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

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