ai-skill-development
Перед созданием или существенной правкой переносимого навыка получи
ai-work-control/full; используй его решение и не дублируй контроль.
Помогай проектировать и сопровождать навыки агента так, чтобы они снижали конкретные ошибки, экономили контекст и оставались проверяемыми.
Обязательный порядок
- Зафиксируй цель навыка: кто его вызовет, в какой задаче, какую ошибку он должен предотвратить и почему обычной инструкции недостаточно.
- Проверь основание: реальная задача, повторяемая ошибка, проектный артефакт, внешний источник или другое проверяемое свидетельство.
- Определи границы: когда навык обязан сработать, когда не должен, какие соседние навыки или правила проекта имеют приоритет.
- Перед изменением существующего навыка прочитай целиком его
SKILL.mdи релевантныеreferences/,evals/,agents/,assets/илиscripts/. Выбери класс изменения по качеству результата: локальное уточнение, переработка процедуры, перенос деталей в справку, удаление или объединение правил, обновлениеdescription, проверок или соседних материалов. Не ограничивайся добавлением нового правила, если корневая проблема в структуре навыка, порядке применения, проверяемости или устаревших частях. 4а. Для переносимого навыка проверь все поставляемые материалы на границу продукта. Оставляй только правила, примеры, данные и зависимости, нужные пользователю навыка или его проекту. Сведения из внутренней работы преобразуй в самостоятельное правило, вымышленный пример или проверку; не переноси путь, данные, настройку, процесс, средство или историю проекта-разработчика. Новую точку интеграции добавляй только с явно описанным назначением для пользователя. 4б. Если изменяется исходник публикуемого навыка в.apm/skills/**, до запуска Python или APM подключиai-setup-apm. Этот навык отвечает за содержание и проверки навыка, аai-setup-apm— за чистоту исходного дерева, проекций и файла блокировки при самоприменении коллекции. Не откладывай второй маршрут до момента, когдаapm auditуже обнаружил дрейф. - Спроектируй
descriptionкак маршрутизатор. Оно должно описывать намерения пользователя и ситуации загрузки, а не пересказывать внутренний процесс. Держи его достаточно коротким для бюджетов контекста и проверяй это отдельной командой коллекции, если она существует. - Держи
SKILL.mdкоротким: триггеры, обязательный порядок, ограничения, умолчания и навигация к дополнительным материалам. - Для каждого создаваемого или изменяемого навыка отдельно оцени действия,
которые можно вынести из работы модели в скрипт. Скрипт предпочтителен для
повторяемой, наблюдаемой и детерминированной механики, если его создание,
запуск и сопровождение дешевле повторного рассуждения модели. Не выноси в
скрипт интерпретацию, неоднозначный выбор или решение владельца. Зафиксируй
решение и основание; для критериев, контракта и проверки скрипта читай
references/script-decision.md. 7а. Если у навыка есть или появляетсяscripts/**, классифицируй основной маршрут и каждый скрипт по классам P0, P1 и P2 изreferences/portability.md. Сохрани полезный P0 без запуска поставляемого кода, кроме навыка с неотделимой платформенной зависимостью. До P1 и P2 выполни предварительную проверку среды. При недоступности необязательной автоматизации продолжи P0 и явно назови непроверенную часть результата. Заполни полеcompatibilityвSKILL.mdи не объявляй более широкий охват, чем подтверждает процедура. 7б. Не оставляй__pycache__,.pycили.pyoв исходниках.apm, развёрнутых проекциях.agents,.claude,.codex, поставляемой оснастке иapm.lock.yaml. Для обычного запуска Python предпочитайPYTHONDONTWRITEBYTECODE=1, когда защита должна наследоваться дочерними процессами. Ключ-Bдопустим для одного подтверждённого процесса. Обе меры не останавливают явныеpy_compileиcompileall, поэтому не применяй эти компиляторы к защищённым деревьям даже вместе с-Bили переменной среды. Синтаксис проверяй чтением исходника иcompile(..., mode="exec")в памяти либо поставляемым валидатором. До и после тестов и самоприменения APM запускай проверку физических деревьев и семантических путей в файле блокировки. 7в. Для каждого публичного Python-скрипта P1 первого уровня вscripts/добавьevals/script-contract-tests.json. Сценарий запускает именно поставляемую команду в копии реалистичной фикстуры и проверяет наблюдаемый результат, а не только внутреннюю функцию,--helpили ожидаемый отказ. Вoperationsконтракта объяви обязательные операции, а вcoversуспешного сценария укажи покрываемую операцию. Сопоставь команды из процедуры навыка сoperations. Скрипт, который создаёт или изменяет состояние, обязан успешно пройти этот путь и сохранить его в проверяемом внешнем формате. Для JSON проверь повторное чтение созданного файла. Для каждой операции явно укажиinputs: перечисли условные входные файлы и настройки, которые меняют результат, либо запиши пустой массив после проверки кода. Контрактный запускатель наблюдает проверки действительно отсутствующих путей внутри успешной фикстуры. Проверка типа существующего файла или каталога с отрицательным результатом не делает путь отсутствующим входом. Запускатель исключает пути, созданные или заменённые самой операцией, и отклоняет оставшиеся необъявленные пути. Отсутствие поля не считается завершённой инвентаризацией. Подключи поставляемую командуrun-skill-script-contract-tests.pyкscripts.tests, если коллекция использует оснасткуai-setup-apm. - Выноси условные сведения в
references/, повторяемую механику вscripts/, шаблоны и примеры входа вassets/. - Синхронизируй
agents/openai.yaml, если он есть или нужен для интерфейса навыка. - Проверь тестовое покрытие сопровождаемого навыка по
references/validation.md. - Сначала запускай самый узкий достаточный набор проверок: изменённый файл, каталог навыка или отдельный сценарий. Расширяй запуск до соседних навыков и всей коллекции, когда меняется маршрутизация, общая процедура, инфраструктура тестов или несколько навыков.
- Для каждого теста результата зафиксируй, какую поверхность применения навыка он проверяет: маршрутизацию, обязательный шаг, ограничение, изменение артефакта, качество результата или остановку по правилу.
- Не принимай тест как достаточный, если он проверяет только косвенный сигнал: формат без ошибок, наличие модельного вызова, отдельный внешний признак ответа или совпадение фрагмента без доказательства применения навыка.
- Если тестов нет, они устарели, их не хватает или навык меняется, создай либо обнови постоянные тесты в рамках текущей правки.
- Добавь или обнови
evals/triggers.json, если меняетсяdescription, область применения или границы с соседними навыками. - Если проект использует автоматическую проверку бюджета
description, обнови её вместе с правкой и не оставляй описание длиннее, чем нужно для маршрутизации. - Если постоянный тест нельзя создать в текущей задаче, явно укажи, какого теста не хватает, почему он не добавлен сейчас и какой риск остаётся. Не заменяй создание доступного теста одним предложением добавить его позже.
- Перед созданием или изменением навыка проверь, не дешевле ли решить задачу локальной проектной инструкцией вместо нового или расширенного навыка.
- Если изменение создаёт или меняет текст, предназначенный для человека, маршрут должен включать роль технического писателя. Это относится к инструкциям, справкам, описаниям, примерам использования, заметкам и другим человеко-ориентированным текстам независимо от имени файла и места хранения.
Что читать дополнительно
- Для проектных навыков читай
references/project-specific-skills.md. - Для проверки существующего навыка читай
references/review-checklist.md. - Для решения о скрипте читай
references/script-decision.md. - Для классов переносимости, предварительной проверки и поведения без среды
выполнения читай
references/portability.md. - Для проверок срабатывания, качества результата и состава исполнимого
контракта скрипта читай
references/validation.md.
Читай только те справки, которые нужны для текущей задачи.
Ограничения
- Не превращай навык в переносной
AGENTS.md: правила конкретного проекта, команды, Git-политики и локальные запреты должны оставаться в проекте. - Не используй в поставляемых материалах внутренние сведения проекта-разработчика как входные данные, примеры, зависимости или скрытые предположения о среде проекта-потребителя.
- Разработка навыка не заменяет технического писателя при подготовке текста для человека.
- Не дублируй одно правило в
SKILL.mdиreferences/. - Не фиксируй быстро меняющиеся внешние факты без процедуры проверки или обновления.
- Не делай интерпретатор, сторонний пакет, сеть или POSIX-оболочку скрытой зависимостью основного результата общего навыка.
- Если идея навыка слишком широкая или дешевле решается локальной инструкцией, прямо назови риск и предложи меньший вариант.
- Размер изменения не является мерой качества изменения навыка. Меньший вариант уместен только если он устраняет причину проблемы без ухудшения проверяемости, маршрутизации и будущей стоимости контекста.
Проверка результата
Для существенного изменения навыка сообщи:
- какие файлы изменены;
- на какие источники, утверждения или реальные задачи опиралось изменение;
- какие тесты навыка созданы, обновлены или предложены;
- какие проверки выполнены;
- какие проверки не выполнены и какой риск остался;
- нужно ли вместо навыка или вместе с ним обновить локальные правила проекта.