К основному содержанию
скилл CX Codex

tdd-workflow — скилл для Claude Code: что делает и как установить

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

Установить в Claude Code · Через Skills CLI (Vercel) Все способы и платформы ↓
npx skills add ruvnet/ruflo --skill tdd-workflow -a claude-code
Открыть на GitHub

Что делает 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: если он не подключён, эти шаги не выполнятся. Перед отчётом скилл требует прогнать целевые тесты и регрессию после последней правки и записать команды, коды выхода, факт запуска и имена упавших тестов. Пропущенная проверка считается провалом.

Какие задачи решает

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

Примеры запросов агенту

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

Как установить tdd-workflow

1Через Skills CLI (Vercel)

npx skills add ruvnet/ruflo --skill tdd-workflow -a claude-code

2Вручную: положить файлы

~/.claude/skills/tdd-workflow/SKILL.md

Папка скилла целиком; для одного проекта — .claude/skills/tdd-workflow/

По шагам, с командами для каждой платформы: Как установить скилл в Claude Code: пять способов

Вопросы о tdd-workflow

Как установить tdd-workflow в Claude Code?

Выполните npx skills add ruvnet/ruflo --skill tdd-workflow -a claude-code. Скилл появится в ~/.claude/skills/tdd-workflow/SKILL.md.

Что делает tdd-workflow?

Проводит агента по циклу London School: падающий тест с моками, минимальная реализация, рефакторинг, следующий тест. Тесты описывают поведение, а не устройство кода.

Почему без ruflo-core скилл работает не полностью?

Он вызывает mcp__plugin_ruflo-core_ruflo__hooks_pre-task до начала работы и mcp__plugin_ruflo-core_ruflo__hooks_post-task перед отчётом. Эти хуки даёт MCP-сервер плагина ruflo-core.

Исходный текст

SKILL.md · MIT
---
name: tdd-workflow
description: TDD London School workflow -- mock-first, outside-in test development
argument-hint: "<module-path>"
allowed-tools: Bash(npx * npm *) mcp__plugin_ruflo-core_ruflo__hooks_pre-task mcp__plugin_ruflo-core_ruflo__hooks_post-task Read Write Edit
---
Follow the TDD London School (mock-first) approach:

1. **Write the failing test first** -- define expected behavior with mocked dependencies
2. **Run the test** -- confirm it fails for the right reason
3. **Implement minimal code** -- make the test pass with the simplest solution
4. **Refactor** -- clean up while keeping tests green
5. **Repeat** -- add the next behavior

Before starting: `mcp__plugin_ruflo-core_ruflo__hooks_pre-task({ description: "TDD: FEATURE_NAME" })`
Before reporting the outcome, run the final target tests and the regression suite after the last edit. Record the actual commands, exit codes, whether tests ran, and failing test names. The initial red test is expected during TDD; only the final validation determines success.

Call `mcp__plugin_ruflo-core_ruflo__hooks_post-task` with the observed result, including when the task is abandoned or validation is interrupted. Set `completed`, `targetTestsRan`, and `regressionTestsRan` to true only when observed; use null for missing exit codes. Skipped or unrun validation is not success. Never substitute an expected result for an observed one.

The following example maps those observations to the hook input (tool-call notation):
```javascript
const success = completed && targetTestsRan && regressionTestsRan
  && targetExitCode === 0 && regressionExitCode === 0;
mcp__plugin_ruflo-core_ruflo__hooks_post-task({
  taskId: "tdd-FEATURE",
  success,
  storeResults: true,
  task: JSON.stringify({
    feature: "FEATURE",
    targetCommand, targetExitCode, targetTestsRan,
    regressionCommand, regressionExitCode, regressionTestsRan,
    failingTestNames,
    failureReason: success ? null : failureReason
  })
});
```
On failure, report `success: false` and the failing test names in `task`. If the runner failed before identifying tests, or the task was abandoned, state that reason instead of inventing test names.

Principles:
- Mock external dependencies at boundaries
- Test behavior, not implementation
- One assertion per test when possible
- Descriptive names: `should [behavior] when [condition]`

© ruvnet · MIT · ruvnet/ruflo

Похожие скиллы

Всё по теме «Тесты и QA» →
tdd backnotprop Скилл заставляет агента сначала написать падающий тест на баг, а потом править код. Включается только когда тест дешёвый и очевидный. CX Codex +1 5 100установок laravel-tdd iSerter Скилл ведёт агента по циклу red-green-refactor в Laravel: сначала падающий тест на Pest, потом минимальный код, потом рефакторинг. CX Codex +1 378установок tdd-gate davila7 Хук блокирует правку production-файлов, пока рядом нет теста. Пригодится, если хотите удержать TDD в работе с агентом. 192установок rtk-tdd rtk-ai Скилл ведёт разработку на Rust по циклу Red-Green-Refactor и сам включается для задач с кодом, тестами, рефакторингом и исправлением ошибок. CX Codex +1 2 100установок tdd-rust rtk-ai Скилл для разработки RTK-фильтров по методу TDD. Пишешь тест на реальных данных, реализуешь минимум кода, проверяешь экономию токенов — и фиксируешь формат вывода снимком через insta. CX Codex +1 1 400установок tdd-red Seth Hobson Слэш-команда пишет только тесты, которые обязаны падать, и не трогает рабочий код. Первый шаг TDD, когда нужно зафиксировать поведение до реализации. CX Codex ★ 41 729звёзд репо

Из того же набора146

trader-signal Скилл находит аномалии в котировках через neural-trader, оценивает Z-score и строит торговые сигналы с точками входа, стопа и тейка. CX Codex +1 744установок loop-worker Запускает фоновых воркеров Ruflo по расписанию /loop и проверяет их через MCP. Нужен для повторяющихся проверок кода и задач. CX Codex +1 744установок daa-agent Создаёт агентов с Dynamic Agentic Architecture: они меняют поведение по метрикам, накапливают опыт и делятся им с другими агентами. CX Codex +1 744установок workflow-run Управляет выполнением сценариев через инструменты MCP или нативные скрипты оркестрации. Пригодится при координации нескольких субагентов и контроле шагов. CX Codex +1 743установок git-workflow Скилл для ИИ-агентов: ведёт ветки, разбирает конфликты и проводит пулл-реквест через оценку риска диффа. CX Codex +1 743установок doc-gen Генерирует документацию по кодовой базе, находит расхождения между кодом и текстами, а также запускает фоновые проверки по расписанию. Пригодится при частых изменениях в API. CX Codex +1 743установок autopilot-predict Выбирает следующую задачу по состоянию работы и накопленным паттернам. Пригодится для итераций, где агенту нужно решать, что делать дальше. CX Codex +1 743установок safety-scan Сканирует входные данные на попытки prompt injection, jailbreak-атаки и небезопасный контент перед обработкой моделью. Нужен, если вы принимаете данные от пользователей, API или вебхуков. CX Codex +1 743установок

Спонсоры проекта

Компании, которые помогают держать аналитику открытой