Перейти к содержимому

Правила для ИИ-ассистента: 12 файлов вместо догадок

Правила для ИИ-ассистента: 12 файлов вместо догадок

Ассистент, который придумывает имя метода, стоит цикла ревью. Он пишет Auth::login() там, где в движке login_with_secret(), ревьюер это ловит, а следующая подсказка повторяет ошибку. Правила для ИИ-ассистента снимают этот круг, потому что модель читает настоящую сигнатуру до того, как печатает.

Код: Atomic-Framework-Skills, лицензия GPL-3.0.

Двенадцать файлов описывают по одной области фреймворка на PHP 8.1, в ядре которого 25 папок компонентов и 44 документа.

Что заменяет такой файл

Он заменяет догадку, на которую модель обречена, когда репозиторий не влезает в подсказку. Без файла модель видит несколько открытых вкладок и общее знание PHP, и общее знание это источник придуманного метода.

С файлом ассистент получает имена классов, цепочку загрузки, соглашения о маршрутах и список помощников, которые существуют. Расстояние между подсказкой и работающим кодом сокращается до расстояния между файлом и исходником движка, и это расстояние авторы сверяют руками.

Двенадцать областей вместо одного документа

Деление повторяет устройство фреймворка: обзор, ядро, приложение и авторизация, данные, командная строка и API, события с хуками и переводами и почтой, мьютексы и сессии, очередь с планировщиком и телеметрией, шаблоны темы, плагины, инструменты с WebSocket и карта документации.

Файл на область это решение про контекст, а не про порядок в папке. Подсказка, в которую загружен один файл на триста строк про сессии, даёт ответы лучше, чем та, куда загрузили всё и надеются, что модель найдёт нужный абзац.

Файл обзора существует, чтобы его читали первым, а карта документации нужна в момент, когда агенту требуется найти документ, а не метод.

Почему правила обязаны идти из исходника

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

Там же просят дописывать пометку ## Guardrails, когда ошибка легко повторяется. Это и есть часть, которую большинство наборов правил пропускает: заметка о том, где модель ошибается именно здесь, написанная после того, как она ошиблась, стоит абзаца общих советов.

Как файлы подключаются

В VS Code путь вписывается в github.copilot.chat.skills.instructionFilesGlob и указывает на skills/**/*.md. Агент не читает их все: он выбирает по полю description в заголовке, либо вы вызываете файл по имени.

Это поведение стоит понять до того, как на него положатся. Размытое описание ведёт к загрузке не того файла, а не тот файл даёт уверенные ответы про чужую подсистему.

Чего правила не делают

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

Что проверить в чужом наборе правил

Спросите, откуда взяты сигнатуры, и откройте одну наугад рядом с исходником. Если файл не сводится к строке кода, это проза про фреймворк, а не справка по нему.

Потом посмотрите описания. Набор, в котором все файлы звучат одинаково, загрузит не тот файл, и провал будет выглядеть как слабая модель, а не как слабая библиотека.

Третья проверка это дата. Навык без сверки после последнего выпуска фреймворка опаснее пустого места: он уверенно называет метод, который переименовали.

Что это меняет в оценке

День на написание и сверку правил экономится на каждом тикете, который касается незнакомой подсистемы. Измеримая часть это время ревью: меньше циклов на метод, которого не было, и меньше разговоров о том, почему ассистент уверен и неправ.

Рядом: фреймворк для бизнес-приложений о фреймворке, который эти правила описывают, и скелет PHP-проекта о репозитории, с которого команда стартует.