AI-агенты
AI-агенты хорошо пишут тесты на Testo и так же хорошо переписывают на него существующие тесты с других фреймворков.
Самый быстрый путь к первому тесту — установить пакет (см. Начало работы) и попросить агента написать или мигрировать тесты, скормив ему ссылку на llms-full.txt (см. ниже).
Как агенты читают документацию Testo
Документация Testo публикуется в формате llms.txt — это один машиночитаемый файл, который AI загружает вместо того, чтобы парсить HTML-страницы.
| Файл | Содержимое | Когда использовать |
|---|---|---|
/llms.txt | Список страниц с кратким описанием и лучшими практиками. | Быстрый обзор доступной документации. |
/llms-full.txt | Полный текст всех страниц документации. | Когда агенту нужен полный контекст для генерации кода. |
Скиллы для агентов
Помимо llms.txt, у Testo есть набор AI-скиллов — коротких инструкций, которые агент (Claude Code, Codex и другие) подхватывает по триггерам, когда видит подходящую задачу. Они покрывают написание тестов, миграцию с других фреймворков, параметризацию, бенчмарки, покрытие и другие сценарии. Полный список — в папке skills/.
Грубо говоря, llms.txt рассказывает агенту, что есть в API, а скилл — когда что применять и где грабли. При срабатывании скилл сам отправляет агента читать llms.txt за уточнениями, поэтому документация не дублируется и скиллы не протухают вместе с API.
Установка через Composer-плагин
Чтобы каждый раз вручную не копировать скиллы из vendor/testo/testo/skills/ в место, где их видит ваш агент (.claude/skills/, .cursor/skills/ и т. п.), есть отдельный пакет llm/skills — он сам раскладывает скиллы из доверенных Composer-зависимостей:
composer require --dev llm/skillsЭто и есть вся установка. Composer спросит разрешение на запуск плагина — ответьте y. Дальше плагин посмотрит, какие папки агентов уже есть в проекте (.claude/, .cursor/ и другие), соберёт по ним конфигурацию и задаст один вопрос — подтвердить её. Нажмите Enter, и он запишет в корень проекта файл skills.json и сразу синхронизирует скиллы. Закоммитьте этот файл рядом с composer.json, чтобы у всей команды была одинаковая настройка.
Если хочется выбрать всё самому или вернуться к настройкам позже, запустите мастер:
composer skills:initТак или иначе, получится примерно такой файл:
{
"$schema": "https://raw.githubusercontent.com/roxblnfk/skills/master/resources/skills.schema.json",
"target": ".agents/skills",
"aliases": [".claude/skills", ".cursor/skills"],
"auto-sync": true
}Скиллы попадают в target — это единственная настоящая папка, по умолчанию не привязанная к конкретному агенту. На каждый путь из aliases плагин создаёт ссылку на неё (junction на Windows, symlink на POSIX), поэтому все агенты видят один и тот же набор скиллов, а файлы не дублируются. Пока включён auto-sync (а он включён по умолчанию), скиллы обновляются после каждого composer install и composer update; синхронизацию можно запустить и вручную в любой момент:
composer skills:updateНикаких дополнительных настроек для Testo не требуется: вендор testo/* есть во встроенном списке доверенных, да и пакет, который вы подключили сами, доверенный по умолчанию.
Всю настройку можно не делать руками, а поручить агенту: отдайте ему промпт «Настройка скиллов для агентов» — он подключит плагин, соберёт skills.json под агентов этого проекта и проверит, что скиллы разложились.
Плагин работает не только с Composer-пакетами. Команда composer skills:add <vendor>/<repo> регистрирует репозиторий на GitHub или GitLab как источник скиллов и сразу же его скачивает — удобно для собственной коллекции скиллов вашей команды.
Типичный сценарий
Одни и те же три шага работают и для написания тестов с нуля, и для переноса существующего набора:
- Передайте контекст. Укажите агенту на
llms-full.txtили вставьте нужный раздел документации. - Опишите задачу. Дайте класс или функцию, которые нужно покрыть тестами, либо вставьте старый тест, который нужно конвертировать.
- Проверьте и запустите. Просмотрите результат и запустите
vendor/bin/testo.
Примеры промптов
Готовые промпты для более сложных сценариев (инициализация проекта, миграция существующего набора тестов через bridge-rector и другие) собраны на странице Промпты. Ниже — два коротких промпта для быстрого старта.
Написание тестов с нуля:
Documentation: https://php-testo.github.io/llms-full.txt
Using the Testo PHP testing framework, write tests for the following class:
{вставьте ваш класс сюда}Миграция с других фреймворков:
Documentation: https://php-testo.github.io/llms-full.txt
Rewrite the tests in the following folder to Testo. Keep the same assertions and data providers,
do not invent extra scenarios.
Tests folder: tests/UnitClaude Code
Claude Code умеет загружать URL прямо во время диалога. Добавьте инструкцию в CLAUDE.md вашего проекта:
When writing PHP tests, use the Testo framework.
Fetch the documentation before writing tests: https://php-testo.github.io/llms-full.txtClaude Code прочитает эту инструкцию и сам подтянет документацию, когда нужно будет сгенерировать или мигрировать тесты.
Cursor, Windsurf и другие
AI-редакторы кода позволяют зарегистрировать внешнюю документацию как контекст. Обычно URL добавляют один раз, а затем ссылаются на него в чате.
- Cursor: добавьте URL через Settings → Features → Docs → Add new doc. После индексации обращайтесь к нему в чате через
@Docs→ выберите Testo. - Windsurf: вставьте URL прямо в сообщение Cascade.
В IDE, которые не поддерживают индексацию URL, вставьте содержимое llms-full.txt прямо в чат как контекст.