Тема: Часть 14. Собственный процесс через навыки Qwen Code
Уровень сложности: Средний
Расчётное время изучения: 4-6 часов (теория + практика)
Предварительные требования: Базовое знание Qwen Code и работы с CLI-агентами
Понимание Git и ветвления
Опыт работы с Markdown
Знакомство с концепцией SDD (Specification-Driven Development)
Пройденные части 1-13 курса (особенно работа с QWEN.md)
Цели обучения: Создавать и настраивать навыки (skills) агента в Qwen Code для автоматизации повторяющихся процессов
Различать личные и проектные навыки, обосновывать выбор типа навыка для командной работы
Формулировать эффективные description в YAML-шапке SKILL.md для корректного автоматического обнаружения навыка
Внедрять правила эскалации, предотвращающие нежелательные автономные действия агента
Применять техники гигиены контекста для поддержания качества длительных сессий с агентом
Обзор: Эта часть курса посвящена автоматизации повторяющихся инженерных процессов через систему навыков (skills) Qwen Code. Вы научитесь превращать часто повторяемые запросы в структурированные, переиспользуемые навыки агента, создавать проектные и личные навыки, внедрять правила эскалации для безопасной работы агента и управлять контекстом длительных сессий. Основной фокус — на практическом применении: спецификация фичей в SDD-формате и ведение журнала изменений как примеры типовых навыков, которые ускоряют работу команды и стандартизируют инженерные практики.
Ключевые концепции: Навык агента (skill): Директория с файлом SKILL.md, содержащая описание конкретного процесса: когда и как агент должен его применять. Навык — это единица автоматизации повторяющихся запросов в Qwen Code. В отличие от слеш-команды, навык вызывается моделью автоматически или через /skills, описывая возможность, а не жёсткий интерфейс.
Личный навык: Навык, расположенный в ~/.qwen/skills/<name>/SKILL.md. Доступен только текущему пользователю на данной машине. Подходит для индивидуальных предпочтений и экспериментов, но не попадает в систему контроля версий.
Проектный навык: Навык, расположенный в .qwen/skills/<name>/SKILL.md внутри репозитория. Попадает в Git, становится частью инженерного процесса команды, обеспечивает консистентность между всеми разработчиками и агентами, работающими с проектом.
Yaml-шапка skill.md: Метаданные в формате YAML между маркерами --- в начале файла SKILL.md. Содержит обязательные поля name (без пробелов) и description (конкретное описание условий применения). Корректная шапка критична для обнаружения навыка агентом.
Правила эскалации: Явный контракт, описывающий ситуации, когда агент обязан остановиться и запросить подтверждение у человека вместо самостоятельного действия. Предотвращают угадывание агента при недостатке контекста, защищают от нежелательных изменений.
Деградация контекста (context rot): Пhenomenon ухудшения качества работы агента на длительных сессиях из-за накопления нерелевантного контекста. Старые решения из соседних задач случайно подтягиваются в текущую работу, снижая точность и релевантность выдачи.
Гигиена контекста: Совокупность практик управления контекстом агента: регулярное использование /clear между сменой ролей, ограничение длительности сессий, явное указание файлов через @file вместо передачи целых директорий, перезапуск с чтением QWEN.md при подозрении на путаницу.
Вспомогательные файлы навыка: Дополнительные ресурсы в директории навыка (templates/, примеры, сниппеты), которые SKILL.md может ссылать для расширения функциональности без раздувания основного файла. Шаблоны не копируются с комментариями в итоговые спецификации.
Agents.md: Межагентный стандарт правил в корне репозитория, дополняющий QWEN.md. Читается не только Qwen Code, но и другими совместимыми инструментами. Обеспечивает консистентность при параллельном использовании нескольких разных агентов в одном проекте.
Практические упражнения: Название: Создание базового навыка спецификации фичи
Проблема: В вашем проекте регулярно создаются SDD-спецификации новых фич по дорожной карте. Повторяющийся запрос: «Создай спецификацию для следующей фазы из roadmap.md». Необходимо автоматизировать этот процесс через навык агента. Создайте проектный навык feature-spec с корректной YAML-шапкой, процессом из 8 шагов, тремя выходными файлами (requirements.md, plan.md, validation.md) и ограничениями. Проверьте обнаружение через /skills.
Решение: 1. Создайте директорию: mkdir -p .qwen/skills/feature-spec
- Создайте файл .qwen/skills/feature-spec/SKILL.md с содержимым:
--- name: feature-spec description: Создаёт новую SDD-спецификацию фичи из следующей незавершённой фазы дорожной карты. Используйте перед началом следующей фичи, написанием спецификации или подготовкой новой фазы перед реализацией. --- # Спецификация фичи ## Процесс
- Прочитать specs/roadmap.md
- Найти первую незавершённую фазу
- Создать ветку phase-N-kebab-name
- Задать человеку три группы вопросов: границы, решения, контекст
- Прочитать specs/mission.md и specs/tech-stack.md
- Создать specs/YYYY-MM-DD-feature-name/
- Записать requirements.md, plan.md, validation.md
- Не реализовывать код
## Файл requirements.md — границы, за границами, решения, контекст, открытые вопросы ## Файл plan.md — пронумерованные группы задач, каждая проверяется отдельно ## Файл validation.md — автоматические проверки, ручной проход, проверка отклонений, критерии готовности ## Ограничения: соблюдать tech-stack.md, не добавлять зависимости без одобрения, оставлять фазу пригодной для поставки, не редактировать несвязанные файлы
- Перезапустите Qwen Code
- Выполните /skills — убедитесь, что feature-spec отображается
- Проверьте вызов: «Используй навык feature-spec, чтобы начать следующую фичу из дорожной карты. Код не реализуй»
- Если навык не сработал, проверьте: путь к файлу, корректность YAML-шапки (--- в начале и конце), отсутствие пробелов в name, конкретность description, перезапуск агента
Сложность: beginner
Название: Расширение навыка вспомогательными шаблонами
Проблема: Процесс спецификации фичи вырос, и файл SKILL.md стал громоздким. Кроме того, разные спецификации требуют единообразной структуры, но команда тратит время на форматирование. Необходимо вынести шаблоны в отдельные файлы и обновить SKILL.md для их использования.
Решение: 1. Создайте директорию templates внутри навыка: mkdir -p .qwen/skills/feature-spec/templates
- Создайте .qwen/skills/feature-spec/templates/requirements.md с начальной структурой:
# Требования ## Границы <!-- Что входит в фичу --> ## За границами <!-- Что явно не входит --> ## Решения <!-- Принятые архитектурные решения --> ## Контекст <!-- Почему приняты именно такие решения --> ## Открытые вопросы <!-- Что требует уточнения -->
- Аналогично создайте templates/plan.md и templates/validation.md
- Обновите SKILL.md, добавив в процесс:
«Используй templates/requirements.md как начальную структуру. Не копируй комментарии шаблона в итоговые спецификации.»
- Проверьте, что агент корректно использует шаблоны без переноса комментариев-инструкций в выходные файлы
- Закоммитьте изменения: git add .qwen/skills/ && git commit -m "Add feature-spec skill with templates"
Сложность: intermediate
Название: Внедрение правил эскалации
Проблема: Агент в вашем проекте несколько раз принимал спорные решения самостоятельно: добавлял зависимости без согласования, изменял файлы вне границ спецификации, редактировал tech-stack.md. Необходимо формализовать правила эскалации в QWEN.md или навыке, чтобы агент обязательно останавливался и запрашивал подтверждение.
Решение: 1. Откройте или создайте QWEN.md в корне репозитория (или добавьте в существующий SKILL.md)
- Добавьте раздел «Правила эскалации»:
Остановись и спроси человека, не действуй, в следующих случаях:
- если в спецификации фичи остаются разные интерпретации одного требования;
- если ты собираешься изменить файл вне границ текущей спецификации;
- если ты собираешься добавить новую зависимость, не указанную в tech-stack.md;
- если ты собираешься изменить tech-stack.md, mission.md или roadmap.md;
- если требуется выполнить миграцию, drop, delete или rm с нетривиальным радиусом;
- если ты не нашёл файл, на который ссылается пользователь;
- если результат не совпадает с фактом из validation.md, и факт не помечен как «отложен»;
- если запрос пользователя противоречит ранее принятым правилам QWEN.md.
В каждом таком случае выведи короткое объяснение, что именно неоднозначно, и предложи 2–3 конкретных варианта на выбор. Не выбирай за человека.
- Протестируйте на сценарии: попросите агента добавить библиотеку, отсутствующую в tech-stack.md — убедитесь, что он остановился с вариантами
- Дополнительно: изучьте хук Stop из части 17 для программной проверки соблюдения правил
Сложность: intermediate
Название: Создание навыка журнала изменений
Проблема: Команда тратит время на ручное обновление CHANGELOG.md перед слиянием фич. История коммитов разрозненная, форматирование непоследовательное. Создайте навык changelog, который автоматизирует процесс на основе git log и git diff.
Решение: 1. Создайте директорию: mkdir -p .qwen/skills/changelog
- Создайте .qwen/skills/changelog/SKILL.md:
--- name: changelog description: Обновляет CHANGELOG.md по истории Git и изменениям текущей ветки перед слиянием ветки фичи. --- # Журнал изменений
- Посмотреть git log и git diff относительно main
- Создать или обновить CHANGELOG.md
- Использовать заголовки с датами
- Писать краткие пункты, понятные заинтересованным людям
- Не включать шумные внутренние детали
- Перезапустите Qwen Code, проверьте через /skills
- Создайте тестовую ветку с несколькими коммитами, попросите агент использовать навык changelog
- Проверьте результат: даты в заголовках, отсутствие внутренних деталей вроде «рефакторинг функции X», наличие понятных описаний для пользователей
- Используйте навык перед реальным слиянием в main
Сложность: beginner
Название: Диагностика и устранение проблем с обнаружением навыка
Проблема: Вы создали навык, но агент не видит его в /skills или не применяет при явном запросе. Систематически диагностируйте и устраните проблему.
Решение: 1. Проверьте путь: файл должен быть в .qwen/skills/<name>/SKILL.md (проектный) или ~/.qwen/skills/<name>/SKILL.md (личный)
- Проверьте YAML-шапку:
- Начинается и заканчивается точными маркерами --- (без пробелов, без BOM)
- Поле name без пробелов, только латиница, дефисы, подчёркивания
- Поле description конкретно описывает условия применения, не общие фразы вроде «полезный навык»
- Проверьте права доступа: файл должен быть читаем
- Проверьте перезапуск: Qwen Code кэширует навыки при старте, изменения требуют перезапуска
- Проверьте синтаксис Markdown: сломанные заголовки или таблицы могут мешать парсингу
- Проверьте отсутствие конфликтов имён: два навыка с одинаковым name недопустимы
- Если всё корректно — проверьте версию Qwen Code, возможно, требуется обновление
- Временное решение: используйте явный импорт через /load или эквивалентную команду вашей версии
Сложность: intermediate
Название: Оптимизация длительной сессии с гигиеной контекста
Проблема: Вы работаете с агентом над сложной задачей уже 90 минут. Замечены признаки деградации контекста: агент ссылается на решения из предыдущей задачи, предлагает нерелевантные файлы, путает границы текущей фичи. Примените техники гигиены контекста для восстановления качества работы.
Решение: 1. Выполните /clear для полной очистки контекста сессии
- Перечитайте QWEN.md с нуля: «Прочитай QWEN.md и следуй его правилам»
- Перечитайте активную спецификацию: «Прочитай specs/YYYY-MM-DD-feature-name/requirements.md и все связанные файлы»
- Явно укажите нужные файлы через @file вместо «найди сам» или передачи целых директорий
- Разбейте оставшуюся работу на подзадачи по 15-20 минут каждая
- Между подзадачами используйте /clear и перечитывайте только релевантный контекст
- Если включено автоматическое сжатие контекста — помните, что оно сохраняет резюме, которое может содержать ложные подсказки; /clean предпочтительнее для смены роли
- Документируйте промежуточные результаты в файлах проекта, не полагайтесь на память сессии
Сложность: advanced
Кейсы: Название: Внедрение SDD-навыков в финтех-стартапе: от хаоса к стандартизации
Сценарий: Финтех-стартап с 12 разработчиками и 3 продуктовыми командами. Каждая команда использовала разный формат спецификаций фич: одни писали в Google Docs, другие — в Notion, третье — вообще обходились устными договорённостями. При ротации разработчиков между командами требовалось 2-3 дня на адаптацию к новому формату. Введение Qwen Code не решило проблему: агент генерировал спецификации в том формате, который видел последним в контексте, что приводило к фрагментации.
Задача: Необходимо было: (1) стандартизировать формат SDD-спецификаций для всех команд, (2) сделать этот формат автоматически применяемым агентом без дополнительных инструкций, (3) обеспечить версионирование и эволюцию формата, (4) минимизировать время адаптации при ротации.
Решение: Техлид создал проектный навык feature-spec в корневом репозитории компании (mono-repo с 40+ сервисами). Навык включал: строгий процесс из 8 шагов, три выходных файла с детальными требованиями к содержимому, шаблоны в поддиректории templates/, и правила эскалации, запрещающие агенту отклоняться от tech-stack.md. Дополнительно был создан навык changelog для единообразного ведения журналов изменений. Для межкомандной консистентности в корень mono-repo добавили AGENTS.md с базовыми правилами, читаемыми всеми инструментами команды.
Результат: Через 3 недели после внедрения: время создания спецификации сократилось с 4 часов до 45 минут (включая время на уточняющие вопросы агента); адаптация при ротации сократилась до 2 часов (достаточно прочитать SKILL.md); 94% спецификаций принимались без доработки на ревью (против 60% ранее); единый CHANGELOG позволил автоматизировать генерацию release notes; команда выявила и исправила 7 случаев, когда агент пытался добавить неодобренные зависимости, благодаря правилам эскалации.
Извлечённые уроки: Проектные навыки в корневом репозитории эффективнее личных навыков отдельных разработчиков для масштабирования практик
Правила эскалации — не избыточная бюрократия, а экономия: 7 предотвращённых инцидентов с зависимостями сэкономили неделю работы на откат изменений
Шаблоны в templates/ ускоряют работу агента и повышают консистентность, но требуют явного правила «не копируй комментарии»
AGENTS.md необходим при использовании нескольких инструментов (Qwen Code, Cursor, собственные скрипты) — предотвращает дивергенцию правил
Связанные концепции: Проектный навык
Правила эскалации
Вспомогательные файлы навыка
AGENTS.md
Гигиена контекста
Название: Спасение от деградации контекста в агентной сессии длительного рефакторинга
Сценарий: Команда из 4 разработчиков проводила масштабный рефакторинг ядра платёжной системы. Один разработчик использовал Qwen Code для последовательной обработки 15 связанных сервисов в одной сессии длительностью 3 часа. Начиная с 8-го сервиса, агент стал предлагать решения, характерные для 3-го сервиса (устаревшая архитектура, уже отменённая), и пытался изменить tech-stack.md, «оптимизируя» под паттерн, который команда сознательно отказалась.
Задача: Диагностировать и остановить деградацию контекста без потери прогресса; понять, почему автоматическое сжатие контекста не спасло; восстановить корректную работу агента; предотвратить повторение в будущих длительных сессиях.
Решение: Разработчик применил экстренную гигиену контекста: /clear, перечитывание QWEN.md и активной спецификации, явное указание @file для конкретного сервиса вместо «обработай оставшиеся». Для оставшихся 7 сервисов разбил работу на отдельные сессии по 20 минут каждая с обязательным /clear между ними. Промежуточные результаты фиксировались в файлах проекта, а не в памяти сессии. Выявлено, что автоматическое сжатие сохранило «резюме» устаревших решений как «важный контекст», что и стало источником ложных подсказок.
Результат: Последние 7 сервисов обработаны корректно, без отклонений от утверждённой архитектуры. Разработчик задокументировал инцидент во внутренней базе знаний. Команда ввела правило: сессии агента ограничены 45 минутами, принудительный /clear и перечитывание QWEN.md между этапами. В последующих рефакторингах подобных инцидентов не наблюдалось.
Извлечённые уроки: Автоматическое сжатие контекста помогает для длинной непрерывной задачи, но вредит при последовательных разных задачах — резюме становится источником ложных подсказок
/clear гарантирует чистый старт, но требует дисциплины документирования промежуточных результатов в файлах
Ограничение длительности сессии (45 минут) — простое и эффективное правило, легко проверяемое в ретроспективе
Явное указание файлов через @file критично после /clear: агент не «догадается» о контексте из предыдущей сессии
Связанные концепции: Деградация контекста
Гигиена контекста
Правила эскалации
Проектный навык
Советы по изучению: Начните с создания личного навыка в ~/.qwen/skills/, отладьте его на своём проекте, затем перенесите в проектный — так вы избежете коммитов нерабочих версий в Git
Проверяйте YAML-шапку валидатором (например, yamllint) — невидимые ошибки в форматировании часто приводят к необнаружению навыка
Ведите «дневник эскалации»: записывайте случаи, когда агент должен был остановиться, но не остановился — по ним дополняйте правила
Используйте технику «параллельного сравнения»: создайте один и тот же навык двумя способами (через SKILL.md и через слеш-команду), протестируйте на одной задаче, зафиксируйте различия в поведении агента
Практикуйте «стресс-тест гигиены»: намеренно создавайте длинную сессию с переключением ролей, чтобы научиться распознавать ранние признаки деградации контекста
Создайте «навык для навыков» — мета-навык, который помогает создавать новые навыки по шаблону, с корректной YAML-шапкой и структурой
Изучайте чужие проектные навыки в open-source репозиториях — сообщество Qwen Code активно делится best practices
Комбинируйте визуальное, аудиальное и кинестетическое обучение: читайте SKILL.md вслух для проверки ясности инструкций, рисуйте блок-схемы процессов, пишите навыки от руки перед цифровым вводом для лучшего запоминания структуры
Дополнительные ресурсы: Официальная документация qwen code: https://github.com/QwenLM/Qwen-Code (актуальные примеры навыков и обновления формата)
Часть 15 курса — agents.md и межагентная совместимость: part-15-agent-replaceability.md (в репозитории курса)
Часть 17 курса — хук stop для программной проверки эскалации: part-17-stop-hooks.md (в репозитории курса)
Часть 19 курса — управляемая память агента на sqlite: part-19-agent-memory-sqlite.md (в репозитории курса)
Yaml specification 1.2: https://yaml.org/spec/1.2.2/ (для глубокого понимания требований к шапке SKILL.md)
Примеры проектных навыков от сообщества: https://github.com/search?q=path%3A.qwen%2Fskills+SKILL.md&type=code (поиск публичных репозиториев)
Исследование context rot в llm-агентах: https://arxiv.org/abs/2404.06910 (академический анализ деградации контекста)
Интерактивный тренажёр yaml-шапок: https://www.yamllint.com/ (проверка синтаксиса метаданных навыков)
Резюме: Ключевые выводы части 14: (1) Повторяющиеся запросы следует автоматизировать через навыки агента — это экономит время и стандартизирует процессы. (2) Проектные навыки (.qwen/skills/) предпочтительнее личных (~/.qwen/skills/) для командной работы, так как версионируются в Git и доступны всем участникам. (3) Корректная YAML-шапка с конкретным description критична для автоматического обнаружения навыка агентом. (4) Правила эскалации — обязательный контракт безопасности, предотвращающий нежелательные автономные действия агента при неопределённости. (5) Гигиена контекста (/clear, ограничение длительности сессий, явное указание файлов) не менее важна, чем качество навыков — деградация контекста разрушает эффективность даже идеально написанных инструкций. (6) Навыки и слеш-команды дополняют друг друга: навыки — для автоматического применения, команды — для явного вызова. (7) Вспомогательные файлы (templates/) позволяют масштабировать сложные навыки без раздувания SKILL.md.