developer-tools
Одна роль в YAML вместо четырёх копий правил
Promtime
developer-toolsPersonetta описывает роль для кодового ИИ-агента один раз в YAML и рендерит её в родные форматы сразу четырёх инструментов: Cursor, GitHub Copilot, Claude Code и Cline. Проект опубликован на Github под лицензией MIT, а установка выполняется одной командой pip install personetta.
Коротко
- Рецепт персоны собирается из слоёв YAML: базовая роль, языковой слой и задача, а конфликтующие поля сводит движок слияния по стратегиям из файла merge-config.yaml, все файлы валидируются по JSON-схемам.
- Одна команда раскладывает рецепты по родным каталогам инструментов, от ~/.cursor/rules до ~/Documents/Cline/Rules, а маски вроде 'test-*' и '*python*' задают, какие группы персон ставить за один вызов.
- Вместо четырёх вручную поддерживаемых наборов инструкций разработчик держит один исходник, а смена активной персоны сводится к одной команде, потому что рецепты заранее собраны и лежат в локальном кэше.
Правила для ассистентов давно стали частью конфигурации проекта, но каждый инструмент читает их по-своему: свой формат, свой каталог, свои ограничения. Personetta выглядит как попытка вынести этот слой в отдельный версионируемый артефакт с валидацией, по аналогии с тем, как в своё время унифицировали конфигурацию линтеров. Издержка подхода, вероятно, в привязке к тому, насколько быстро автор успевает за изменениями форматов у четырёх вендоров.
Персона собирается из трёх слоёв YAML и проверяется по JSON-схемам
Исходные данные разложены по каталогам: в data/base лежат базовые роли, среди них инженер, ревьюер и тестировщик, data/language_specific добавляет слои для языков и фреймворков, а data/recipes описывает саму композицию, то есть какие слои берутся, в каком порядке и с какими переопределениями.
Стратегии слияния для каждого поля и правила разрешения конфликтов вынесены в data/config/merge-config.yaml, а структура всех YAML-файлов описана JSON-схемами из data/schemas. Прогнать проверку по всему набору можно командой personetta validate. Схемы применяются ко всем файлам данных, включая базовые роли, языковые слои и рецепты.
Готовые рецепты разбиты по типам задач: дизайн, реализация, ревью и тесты, каждый в языковой версии, например implement-python и review-python. Полный список доступных ролей и рецептов выводит команда personetta list, а собранный текст одного рецепта для конкретного формата печатает personetta recipe.
Для каждого инструмента ставятся три файла и локальный кэш рецептов
Генератор из src/generator загружает, валидирует, собирает и рендерит каждый рецепт через форматтер конкретного инструмента, после чего ставит три файла: постоянно действующий базовый набор, индекс-роутер по всем персонам и полный текст активного рецепта. Рядом сохраняется локальный кэш, поэтому переключение персоны ничего не пересобирает.
Файлы попадают в родные каталоги самих инструментов, по одному набору на каждый: ~/.cursor/rules, ~/.copilot/instructions, ~/.claude/rules и ~/Documents/Cline/Rules. Целевой формат задаётся флагом --format со значениями cursor, copilot, claude или cline, а вызов personetta install '*' ставит сразу все доступные рецепты для выбранного инструмента.
Активная персона переключается вызовом personetta set-active с именем рецепта и форматом, например implement-python или review-python для Claude Code. Текущий выбор показывает personetta current, установленные рецепты снимает personetta remove с шаблоном имени и форматом. После переключения ассистент описывает новую роль в ответ на вопрос о том, какую роль он играет.
В репозитории 1 641 проходящий тест и лимиты сложности в pytest
В репозитории 1 641 проходящий тест, они разделены на модульные, интеграционные и качественные наборы. Часть проверок оформлена как правила pytest: цикломатическая сложность не выше 10, функция не длиннее 25 строк, файл не длиннее 400 строк, плюс лимиты на количество методов и импортов и контроль принятых в проекте соглашений.
Помимо функциональных тестов, отдельная группа упаковочных проверок собирает настоящий wheel из исходников и подтверждает, что в готовый пакет попадает каждый рецепт из набора. Код линтуется ruff и проходит проверку типов в mypy, а непрерывная интеграция запускается на каждый push в репозиторий.
Пакет требует Python 3.11 или новее, для изолированной установки CLI предлагается pipx. В каталоге scripts поставляются вспомогательные сценарии с настройкой PATH и проверкой результата установки: Setup-Personetta.ps1 для Windows и install-personetta.sh для Linux и macOS.
Поддержка других инструментов не заявлена
В описании проекта перечислены только четыре целевых формата: сроков поддержки других ассистентов, дат релизов и планов по расширению набора форматов оно не содержит. Проверить состояние установки можно командой personetta verify, она сверяет версию, наличие пакета в PATH и данные рецептов.
Документация в репозитории разложена по восьми разделам: быстрый старт, руководство пользователя, концепции композиции с диаграммами, работа с рецептами, справочник CLI, техническая архитектура, правила подготовки пул-реквестов и разбор типичных проблем. Проект распространяется по лицензии MIT, в подписи указаны Edward Fry и 2026 год.
Комментарии
Пока никто не написал. Будьте первым.
Присоединяйтесь к разговору
Войдите через Google, чтобы оставить комментарий. Имя и аватар подставятся из вашего профиля Google, а комментарий появится после модерации.
Из Google мы используем только имя и аватар. Почту не сохраняем.
