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 skills:update копирует скиллы в .agents/skills/ (путь настраивается через extra.skills.target в composer.json). Testo является доверенным поставщиком скиллов, так что никаких дополнительных настроек не нужно. А чтобы их подхватил конкретный агент, добавьте в extra.skills.aliases нужный путь — например, .claude/skills для Claude Code:
{
"extra": {
"skills": {
"aliases": [".claude/skills", ".cursor/skills"],
"auto-sync": true
}
}
}На этих путях плагин создаст ссылки (junction на Windows, symlink на POSIX) на основную папку — один и тот же набор скиллов будет виден всем агентам без дублирования файлов.
Типичный сценарий
Одни и те же три шага работают и для написания тестов с нуля, и для переноса существующего набора:
- Передайте контекст. Укажите агенту на
llms-full.txtили вставьте нужный раздел документации. - Опишите задачу. Дайте класс или функцию, которые нужно покрыть тестами, либо вставьте старый тест, который нужно конвертировать.
- Проверьте и запустите. Просмотрите результат и запустите
vendor/bin/testo.
Примеры промптов
Написание тестов с нуля:
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 прямо в чат как контекст.