Skip to content
...

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-зависимостей:

bash
composer require --dev llm/skills

Это и есть вся установка. Composer спросит разрешение на запуск плагина — ответьте y. Дальше плагин посмотрит, какие папки агентов уже есть в проекте (.claude/, .cursor/ и другие), соберёт по ним конфигурацию и задаст один вопрос — подтвердить её. Нажмите Enter, и он запишет в корень проекта файл skills.json и сразу синхронизирует скиллы. Закоммитьте этот файл рядом с composer.json, чтобы у всей команды была одинаковая настройка.

Если хочется выбрать всё самому или вернуться к настройкам позже, запустите мастер:

bash
composer skills:init

Так или иначе, получится примерно такой файл:

json
{
    "$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; синхронизацию можно запустить и вручную в любой момент:

bash
composer skills:update

Никаких дополнительных настроек для Testo не требуется: вендор testo/* есть во встроенном списке доверенных, да и пакет, который вы подключили сами, доверенный по умолчанию.

Всю настройку можно не делать руками, а поручить агенту: отдайте ему промпт «Настройка скиллов для агентов» — он подключит плагин, соберёт skills.json под агентов этого проекта и проверит, что скиллы разложились.

Плагин работает не только с Composer-пакетами. Команда composer skills:add <vendor>/<repo> регистрирует репозиторий на GitHub или GitLab как источник скиллов и сразу же его скачивает — удобно для собственной коллекции скиллов вашей команды.

Типичный сценарий ​

Одни и те же три шага работают и для написания тестов с нуля, и для переноса существующего набора:

  1. Передайте контекст. Укажите агенту на llms-full.txt или вставьте нужный раздел документации.
  2. Опишите задачу. Дайте класс или функцию, которые нужно покрыть тестами, либо вставьте старый тест, который нужно конвертировать.
  3. Проверьте и запустите. Просмотрите результат и запустите 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/Unit

Claude Code ​

Claude Code умеет загружать URL прямо во время диалога. Добавьте инструкцию в CLAUDE.md вашего проекта:

markdown
When writing PHP tests, use the Testo framework.
Fetch the documentation before writing tests: https://php-testo.github.io/llms-full.txt

Claude Code прочитает эту инструкцию и сам подтянет документацию, когда нужно будет сгенерировать или мигрировать тесты.

Cursor, Windsurf и другие ​

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

  • Cursor: добавьте URL через Settings → Features → Docs → Add new doc. После индексации обращайтесь к нему в чате через @Docs → выберите Testo.
  • Windsurf: вставьте URL прямо в сообщение Cascade.

В IDE, которые не поддерживают индексацию URL, вставьте содержимое llms-full.txt прямо в чат как контекст.