Этот skill будет вызван, когда пользователь захочет создать запрос на рефакторинг. Вы должны выполнить перечисленные ниже шаги. Вы можете пропустить шаги, если считаете их необязательными.
Запросите у пользователя длинное и подробное описание проблемы, которую он хочет решить, и любые потенциальные идеи решений.
Изучите репозиторий, чтобы подтвердить его утверждения и понять текущее состояние кодовой базы.
Спросите, рассматривал ли он другие варианты, и предложите ему альтернативы.
Проведите интервью с пользователем об реализации. Будьте предельно детальны и тщательны.
Точно определите область реализации. Решите, что вы планируете изменить, а что нет.
Изучите кодовую базу, чтобы проверить покрытие тестами этой области кода. Если покрытие тестами недостаточно, спросите пользователя о его планах по тестированию.
Разбейте реализацию на план из мелких коммитов. Помните совет Мартина Фаулера: «делать каждый шаг рефакторинга максимально маленьким, чтобы вы всегда могли видеть, что программа работает.»
Создайте issue в GitHub с планом рефакторинга. Используйте следующий шаблон для описания issue:
Формулировка проблемы
Проблема, с которой сталкивается разработчик, с точки зрения разработчика.
Решение
Решение проблемы с точки зрения разработчика.
Коммиты
ДЛИННЫЙ, подробный план реализации. Напишите план на простом английском языке, разбив реализацию на самые мелкие возможные коммиты. Каждый коммит должен оставлять кодовую базу в рабочем состоянии.
Документ о решениях
Список принятых решений по реализации. Может включать:
-
Модули, которые будут созданы/изменены
-
Интерфейсы модулей, которые будут изменены
-
Технические уточнения от разработчика
-
Архитектурные решения
-
Изменения схемы
-
Контракты API
-
Специфичные взаимодействия
НЕ включайте конкретные пути к файлам и фрагменты кода. Они могут очень быстро устареть.
Решения по тестированию
Список принятых решений по тестированию. Включает:
-
Описание того, что составляет хороший тест (тестировать только внешнее поведение, а не детали реализации)
-
Какие модули будут тестироваться
-
Прецеденты для тестов (т.е. аналогичные типы тестов в кодовой базе)
За пределами области (Out of Scope)
Описание того, что находится за пределами области этого рефакторинга.
Дополнительные заметки (опционально)
Любые дополнительные заметки о рефакторинге.
Установка
npx skills add https://github.com/mattpocock/skills --skill request-refactor-plan