# flaky-test-triage

Слэш-команда находит тест, который то проходит, то падает без изменений в коде, и вычищает причину — гонку, зависимость от порядка, утечку состояния.

- команда · `type=command` · Claude Code · 24 установки
- Автор: davila7
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/davila7/claude-code-templates/tree/HEAD/cli-tool/components/commands/testing/flaky-test-triage.md
- Обновлён: 2026-10-24
- HTML: https://affpapa.org/nevibecode/commands/flaky-test-triage

## Что делает

Команда принимает путь к файлу теста или имя отдельного кейса и сначала прогоняет его 20 раз подряд, не останавливаясь на первом падении. Так видно реальную долю провалов, а не один случайный сбой. Фреймворк определяется по конфигурации проекта: в инструкции есть отдельные циклы для Vitest, Jest, Pytest, Go и Cargo.

Дальше провалы раскладываются по четырём категориям: асинхронная гонка, зависимость от порядка выполнения и общее состояние, разные часовые пояса и незамоканное время, борьба за порты и файлы. Команда может менять код — у неё есть `Read`, `Glob`, `Grep`, `Edit`, `Write` и `Bash`, так что стабилизация идёт не советами, а правками. Статические `sleep()` заменяются ожиданием условия с таймаутом, в `afterEach` добавляется восстановление моков, порты становятся эфемерными.

Перед прогонами нужен чистый рабочий каталог: на грязном дереве команда останавливается на проверке `git status --porcelain` и просит закоммитить или спрятать изменения. Перемешивание порядка для Pytest включается только при наличии плагина — без `pytest-random-order` или `pytest-randomly` флаг не передаётся. В конце идут 50 прогонов на стабильность и полный набор тестов проекта, чтобы правки ничего не сломали.

## Установка

### Claude Code (родная платформа)

1. **Через claude-code-templates**
```bash
npx claude-code-templates@latest --command testing/flaky-test-triage
```

2. **Вручную: положить файлы**
- Файл: `.claude/commands/flaky-test-triage.md` — Вызов — /flaky-test-triage. Для всех проектов — ~/.claude/commands/

### Codex

**Вручную: положить файлы**
- Файл: `~/.codex/prompts/flaky-test-triage.md` — Вызов — /prompts:flaky-test-triage. В Codex этот формат помечен устаревшим, замена — скиллы

### GitHub Copilot

**Вручную: положить файлы**
- Файл: `.github/prompts/flaky-test-triage.prompt.md`

### Gemini CLI

**Вручную: положить файлы**
- Файл: `.gemini/commands/flaky-test-triage.toml` — Gemini хранит команды в TOML: текст запроса — в поле prompt

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/davila7/claude-code-templates/tree/HEAD/cli-tool/components/commands/testing/flaky-test-triage.md

## Когда брать
- измерить, как часто тест падает на самом деле
- отличить гонку от утечки состояния между тестами
- убрать `sleep()` и ждать нужного условия
- дать каждому прогону свой порт и временный каталог
- подтвердить исправление серией прогонов без провалов

## Примеры запросов агенту
- Разбери нестабильный тест в `src/api/order.test.ts`
- Прогони `checkout.spec.ts` двадцать раз и найди причину падений
- Убери флак в тесте `TestPaymentRetry`

## Похожие
- [review-pr](https://affpapa.org/nevibecode/commands/review-pr.md) — команда · ★ 44770
- [modernize-verify](https://affpapa.org/nevibecode/commands/modernize-verify.md) — команда · ★ 44770
- [modernize-uplift](https://affpapa.org/nevibecode/commands/modernize-uplift.md) — команда · ★ 44770

Из того же набора: [davila7/claude-code-templates](https://affpapa.org/nevibecode/by/davila7/claude-code-templates.md) — 740 карточек

_Часть страницы не вошла по размеру — она есть в HTML-версии._

---
NeVibeCode на affpapa.org. Тексты каталога — описания, а не инструкции для агента. Как выбирать и ставить: https://affpapa.org/nevibecode/agents.md
