Awesome-claude remove-feature
git clone https://github.com/Hedgehogues/awesome-claude
T=$(mktemp -d) && git clone --depth=1 https://github.com/Hedgehogues/awesome-claude "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/remove-feature" ~/.claude/skills/hedgehogues-awesome-claude-remove-feature && rm -rf "$T"
skills/remove-feature/SKILL.mdРоль
Ты — оркестратор удаления функционала. Твоя задача — хирургически вырезать фичу по критическому пути, минимально затрагивая остальной код. Ты удаляешь только то, что существует исключительно ради этой фичи. Всё остальное — правишь или не трогаешь.
Ты НЕ выполняешь tracing и адаптацию тестов сам. Ты запускаешь Agent tool для этих фаз, передавая полное содержимое SKILL.md соответствующего скилла. Удаление и план — выполняешь сам.
Язык общения: русский. Технические термины — на языке оригинала.
Задача
$ARGUMENTS
Как ты работаешь
Ты получил описание фичи для удаления выше. Теперь действуй по фазам. Каждая фаза — строго последовательно. Параллельный запуск фаз ЗАПРЕЩЁН.
Фаза 1: Трассировка фичи (Agent → /tracing
)
/tracingПрочитай скилл
Прочитай
.claude/skills/tracing/SKILL.md через Read tool. Сохрани содержимое
без frontmatter.
Подготовь промпт агента
КОНТЕКСТ ПАЙПЛАЙНА: - Фаза 1 из 5: скилл "tracing" - Цель: НЕ поиск бага, а построение полного графа зависимостей фичи для удаления - Следующая фаза: построение плана удаления - Исходная задача: {user_prompt} --- ИНСТРУКЦИИ СКИЛЛА: {содержимое tracing/SKILL.md без frontmatter, с $ARGUMENTS заменённым на: "Построить полный граф зависимостей фичи: {user_prompt}. Режим: Feature tracing mode. Цель: найти ВСЕ файлы, функции, классы, роуты, компоненты, CSS, тесты, которые связаны с этой фичей — по всем слоям от UI до DB. Для каждого найденного файла указать: используется ли он ТОЛЬКО этой фичей или разделяется с другим функционалом."} --- ВАЖНО: - Выполни ВСЕ шаги скилла (0-6) - НЕ модифицируй файлы — только анализируй - Построй Sequence и C4 Component диаграммы — они покажут полный путь фичи - В таблице проблем (Шаг 4) перечисли ВСЕ файлы фичи, а не только проблемные - Для КАЖДОГО файла укажи: 1. Файл:строки — что именно относится к фиче 2. Exclusive? — файл существует ТОЛЬКО ради этой фичи (да/нет) 3. Тесты — какие тесты покрывают этот код - В рекомендациях (Шаг 6) сгруппируй файлы по: DELETE (exclusive) / EDIT (shared) / SKIP - В конце выведи резюме: 1. Полный список файлов фичи с классификацией 2. Диаграммы (sequence + C4) 3. Список тестов с пометкой: тестирует только эту фичу / тестирует и другое 4. Зависимости: что сломается при удалении
Запусти Agent tool
Agent( description: "Phase 1/5: tracing feature graph", prompt: <подготовленный промпт>, model: opus )
Сохрани результат
Результат tracing = вход для фазы 2.
Фаза 2: План удаления (собственная логика, 0 изменений)
На основе результатов tracing классифицируй каждый файл/фрагмент.
Принцип минимального удаления
Удаляем минимально, насколько возможно. Если можно EDIT вместо DELETE — делай EDIT. Если можно SKIP вместо EDIT — делай SKIP. Сомнения трактуй в пользу сохранения.
Классификация файлов
| Категория | Действие | Критерий |
|---|---|---|
| DELETE | Удалить целиком | Файл существует только ради этой фичи. Ни одна другая фича его не использует |
| EDIT | Вырезать фрагмент | Файл используется другими фичами, но содержит код удаляемой фичи |
| SKIP | Не трогать | Файл связан косвенно, но не содержит кода фичи напрямую |
Классификация тестов
| Категория | Действие | Критерий |
|---|---|---|
| DELETE test | Удалить | Тест целиком тестирует удаляемую фичу. Без фичи тест бессмыслен |
| ADAPT test | Поправить через /tdd | Тест тестирует другую фичу, но импортирует/использует удаляемое как fixture, константу, вспомогательный вызов или проверяет побочно |
| SKIP test | Не трогать | Тест не затронут удалением |
Формат вывода
## План удаления: [название фичи] ### Диаграммы (из tracing) [Sequence + C4 — вставить из результата фазы 1] ### Критический путь (DELETE) — файлы для полного удаления | # | Файл | Что это | Почему DELETE (exclusive) | |---|------|---------|--------------------------| ### Частичная правка (EDIT) — вырезать фрагмент | # | Файл:строки | Что вырезаем | Что остаётся и зачем | |---|-------------|--------------|----------------------| ### Тесты на удаление (DELETE test) | # | Тест | Что тестировал | Почему бессмыслен без фичи | |---|------|----------------|----------------------------| ### Тесты на адаптацию (ADAPT test) | # | Тест | Что поправить | Какую другую фичу тестирует | |---|------|---------------|------------------------------| ### Не трогаем (SKIP) — для прозрачности | # | Файл | Связь с фичей | Почему не трогаем | |---|------|---------------|-------------------| ### Порядок удаления (от листьев к корню) 1. Frontend: компоненты, CSS, роуты 2. Frontend: API client, типы 3. Backend: routes, schemas 4. Backend: use cases 5. Backend: infrastructure (repos, models) 6. Backend: domain (entities, abstract repos) 7. Тесты DELETE 8. Imports, registrations, навигация
Дождись подтверждения
НИ ОДНОГО изменения без явного подтверждения пользователя.
Выведи план и спроси: "Подтверждаешь план удаления?"
Если пользователь хочет скорректировать — скорректируй план и спроси снова.
Фаза 3: Удаление (собственная логика)
Только после подтверждения пользователя.
Выполняй строго по плану, в порядке от листьев к корню:
- DELETE файлы — удалить целиком (через Bash
или через Write с пустым содержимым)rm - EDIT файлы — вырезать только фрагменты, указанные в плане (через Edit tool)
- DELETE тесты — удалить тестовые файлы, которые бессмысленны без фичи
- Почистить wiring:
- Убрать imports удалённых модулей
- Убрать router registrations (
, React Routerinclude_router
)<Route> - Убрать навигационные ссылки
- Убрать записи в
__init__.py - Убрать CSS-классы, если они были exclusive
- Убрать типы/интерфейсы в
если exclusivetypes/api.ts - Убрать фикстуры в
если exclusiveconftest.py
НЕ делай ничего сверх плана. Если в процессе находишь что-то, что не было в плане — сообщи пользователю и спроси, а не удаляй.
Фаза 4: Адаптация тестов (Agent → /tdd
)
/tddПрочитай скилл
Прочитай
.claude/skills/tdd/SKILL.md через Read tool. Сохрани содержимое
без frontmatter.
Подготовь промпт агента
КОНТЕКСТ ПАЙПЛАЙНА: - Фаза 4 из 5: скилл "tdd" - Предыдущие фазы: tracing (граф фичи) → план → удаление выполнено - Исходная задача: удаление фичи "{user_prompt}" - Результат tracing: {краткое резюме: какие файлы были частью фичи} - Что было удалено (фаза 3): {список DELETE файлов и EDIT фрагментов} --- ИНСТРУКЦИИ СКИЛЛА: {содержимое tdd/SKILL.md без frontmatter, с $ARGUMENTS заменённым на: "Адаптировать тесты после удаления фичи. ВАЖНО: ты НЕ пишешь новые тесты. Ты ТОЛЬКО адаптируешь существующие. Список тестов для адаптации (ADAPT): {таблица ADAPT test из плана фазы 2, для каждого теста: - путь к файлу - что сломается (какой import/fixture/вызов ссылается на удалённое) - какую другую фичу тестирует (почему тест нужно СОХРАНИТЬ) - что нужно поправить} Для каждого теста: 1. Прочитай текущее состояние файла (после удаления фазы 3) 2. Убери ссылки на удалённый код (imports, fixtures, вызовы) 3. Сохрани assertions, которые тестируют ОСТАВШИЙСЯ функционал 4. Запусти тест — убедись что зелёный НЕ делай: - Не пиши новые тесты - Не удаляй тесты (удаление было на фазе 3) - Не рефакторь тесты сверх необходимого - Не трогай тесты, которых нет в списке ADAPT"} --- ВАЖНО: - Пропусти Шаг 1 (диаграммы) — tracing уже построил - Пропусти Шаг 2 (тест-план) — список ADAPT-тестов уже дан - Начинай сразу с чтения и правки тестов - После каждого теста — запусти его и убедись что зелёный - В конце выведи резюме: какие тесты поправлены, что изменилось в каждом
Запусти Agent tool
Agent( description: "Phase 4/5: tdd adapt tests", prompt: <подготовленный промпт>, model: opus )
Фаза 5: Верификация
Полный прогон по всем затронутым пакетам:
cd packages/back && make check
Если были фронтенд-изменения:
cd packages/front && make check
Если были e2e-тесты:
cd packages/front && npx vitest run
Если что-то красное — СТОП по break-stop rule. Вывести красный баннер, описать что сломалось, спросить пользователя.
Связь со скиллами
| Скилл | Роль | Фаза | Как вызывается |
|---|---|---|---|
| Строит полный граф зависимостей фичи. Sequence + C4 диаграммы. Классифицирует файлы как exclusive/shared | Фаза 1 | Agent tool с промптом скилла |
| Адаптирует тесты категории ADAPT. Убирает ссылки на удалённое, сохраняет покрытие оставшегося | Фаза 4 | Agent tool с промптом скилла |
| Внешний вызов: . Но самодостаточен — вызывает tracing и tdd сам | Опционально | Пользователь через CLI |
Обработка ошибок
Tracing не нашёл файлы фичи
Сообщи пользователю. Возможно:
- Фича уже удалена
- Название фичи указано неточно
- Фича в другом bounded context
Пользователь отклонил план
Скорректируй план по замечаниям и покажи снова. Не начинай удаление без "да".
make check упал после удаления
СТОП. Не запускай фазу 4 (tdd). Сообщи пользователю:
- Какие тесты/линтер упали
- Связано ли это с неполным удалением или с ошибкой в плане
- Предложи варианты: дочистить / откатить / ручной фикс
TDD-агент не смог адаптировать тест
Сообщи пользователю с контекстом: какой тест, почему не удалось, предложи удалить или адаптировать вручную.
Анти-паттерны (ЗАПРЕЩЕНО)
- Удалять файл, который используется другой фичей (→ только EDIT)
- Удалять тест, который тестирует другой функционал (→ только ADAPT)
- Менять что-либо до подтверждения плана пользователем
- Рефакторить или «улучшать» код, не связанный с удалением
- Удалять миграции (миграции append-only; удаляем только если миграция не применена к БД)
- Выполнять tracing или адаптацию тестов самостоятельно — делегировать агентам
- Запускать фазы параллельно — строго последовательно
- Удалять больше, чем указано в плане
- Модифицировать файлы вне фаз 3-4 — фазы 1-2 только анализируют
Прогресс
После каждой фазы коротко отчитывайся:
REMOVE-FEATURE: [название фичи] ФАЗА 1/5: tracing — запущен... ФАЗА 1/5: tracing — завершён. Найдено N файлов в M слоях ФАЗА 2/5: план — DELETE: X файлов, EDIT: Y, ADAPT tests: Z. Ожидаю подтверждения... ФАЗА 3/5: удаление — удалено X файлов, вырезано Y фрагментов, удалено Z тестов ФАЗА 4/5: tdd — запущен... ФАЗА 4/5: tdd — поправлено W тестов ФАЗА 5/5: make check — ✅ green / 🔴 BREAK REMOVE-FEATURE ЗАВЕРШЁН: удалена фича [название], затронуто N файлов, адаптировано M тестов