# tdd-workflow

Скилл ведёт агента по циклу London School: падающий тест с замоканными зависимостями, минимальная реализация, рефакторинг. Шаги фиксируются в MCP-хуках.

- скилл · `type=skill` · Claude Code, Codex, Cursor, GitHub Copilot, Gemini CLI, OpenCode · 743 установки · ★ 79357
- Автор: ruvnet
- Лицензия: MIT · policy=mirror · начало файла — в конце страницы
- Исходник: https://github.com/ruvnet/ruflo/tree/HEAD/plugins/ruflo-testgen/skills/tdd-workflow/SKILL.md
- Обновлён: 2026-10-25
- HTML: https://affpapa.org/nevibecode/skills/ruvnet-tdd-workflow

## Что делает

Скилл ведёт агента по циклу London School. Сначала тест на ожидаемое поведение с замоканными зависимостями, потом запуск: важно убедиться, что он падает по нужной причине. Дальше минимальная реализация, рефакторинг на зелёных тестах, следующий тест. Моки ставятся на границах модуля, тесты смотрят на поведение снаружи, имена по шаблону `should [behavior] when [condition]`.

На вход скилл берёт один аргумент `<module-path>`. Доступ к инструментам узкий: `Bash(npx * npm *)`, `Read`, `Write`, `Edit` и два вызова MCP. Для цикла тест-код-рефакторинг этого хватает.

Перед первым тестом агент вызывает `mcp__plugin_ruflo-core_ruflo__hooks_pre-task`, перед отчётом — `mcp__plugin_ruflo-core_ruflo__hooks_post-task`. Оба хука приходят с MCP-сервером плагина `ruflo-core`: если он не подключён, эти шаги не выполнятся. Перед отчётом скилл требует прогнать целевые тесты и регрессию после последней правки и записать команды, коды выхода, факт запуска и имена упавших тестов. Пропущенная проверка считается провалом.

## Установка

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

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ruvnet/ruflo --skill tdd-workflow -a claude-code
```

2. **Вручную: положить файлы**
- Файл: `~/.claude/skills/tdd-workflow/SKILL.md` — Папка скилла целиком; для одного проекта — .claude/skills/tdd-workflow/

### Codex

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ruvnet/ruflo --skill tdd-workflow -a codex
```

2. **Вручную: положить файлы**
- Файл: `.agents/skills/tdd-workflow/SKILL.md` — Для всех проектов — ~/.agents/skills/

### Cursor

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ruvnet/ruflo --skill tdd-workflow -a cursor
```

2. **Вручную: положить файлы**
- Файл: `.cursor/skills/tdd-workflow/SKILL.md` — Cursor читает и .agents/skills/, и .claude/skills/

### GitHub Copilot

1. **GitHub CLI**
```bash
gh skill install ruvnet/ruflo tdd-workflow
```

2. **Вручную: положить файлы**
- Файл: `.github/skills/tdd-workflow/SKILL.md`

### Gemini CLI

1. **Через Skills CLI (Vercel)**
```bash
npx skills add ruvnet/ruflo --skill tdd-workflow -a gemini-cli
```

2. **Командой платформы**
```bash
gemini skills install https://github.com/ruvnet/ruflo --path plugins/ruflo-testgen/skills/tdd-workflow
```

### Windsurf (Devin Desktop)

**Вручную: положить файлы**
- Файл: `.devin/skills/tdd-workflow/SKILL.md` — Старый путь .windsurf/skills/ тоже читается

### OpenCode

**Через Skills CLI (Vercel)**
```bash
npx skills add ruvnet/ruflo --skill tdd-workflow -a opencode
```

### Claude.ai

**Claude.ai**
- Упакуйте папку в zip и загрузите в Settings → Capabilities → Skills

Где указан файл, а не команда, — скопируй файлы из исходника в этот путь: https://github.com/ruvnet/ruflo/tree/HEAD/plugins/ruflo-testgen/skills/tdd-workflow/SKILL.md

## Когда брать
- написать первый падающий тест на новый модуль
- убедиться, что красный тест падает именно из-за отсутствующего поведения
- замокать внешние зависимости на границах модуля
- довести модуль до зелёных тестов минимальными правками
- записать команды, коды выхода и имена упавших тестов в отчёт

## Примеры запросов агенту
- Пройди по циклу tdd-workflow для `<module-path>`, начни с падающего теста на ожидаемое поведение
- Используй скилл tdd-workflow на `<module-path>`: зависимости замокай на границах модуля
- Доведи `<module-path>` по tdd-workflow до зелёной регрессии и отметь результат в `hooks_post-task`

## Похожие
- [tdd](https://affpapa.org/nevibecode/skills/backnotprop-tdd.md) — скилл · 5100 установок
- [laravel-tdd](https://affpapa.org/nevibecode/skills/iserter-laravel-tdd.md) — скилл · 378 установок
- [tdd-gate](https://affpapa.org/nevibecode/hooks/tdd-gate.md) — хук · 192 установки
- [rtk-tdd](https://affpapa.org/nevibecode/skills/rtk-tdd.md) — скилл · 2100 установок
- [tdd-rust](https://affpapa.org/nevibecode/skills/tdd-rust.md) — скилл · 1400 установок
- [tdd-red](https://affpapa.org/nevibecode/commands/tdd-red.md) — команда · ★ 41729

Из того же набора: [ruvnet/ruflo](https://affpapa.org/nevibecode/by/ruvnet/ruflo.md) — 146 карточек

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

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