К основному содержанию
скилл Claude Code CX Codex Cursor GitHub Copilot

rtk-tdd — скилл для Claude Code: TDD в Rust

Скилл ведёт разработку на Rust по циклу Red-Green-Refactor и сам включается для задач с кодом, тестами, рефакторингом и исправлением ошибок.

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

Что делает rtk-tdd

rtk-tdd задаёт для Rust строгий цикл TDD: сначала тест в модуле #[cfg(test)] того же файла, затем проверка падения, минимальная реализация, повторный запуск, рефакторинг и финальная проверка. Для тестов используются идиоматичные паттерны Rust: Arrange-Act-Assert, assert_eq!, assert!, проверки Result, #[should_panic] и tempfile::NamedTempFile для файловых сценариев.

Скилл учитывает разные виды кода: для парсеров проверяет содержимое результата, для валидации тестирует границы, для ошибок ожидает is_err(), а для сериализации проверяет обратное преобразование. В финальный проход входят cargo fmt --all --check, cargo clippy --all-targets и cargo test. Это повод проверить процесс, если проект допускает команды, прямой ввод-вывод или CLI-связку: для них скилл советует тестировать парсер, чистую логику или интеграционные сценарии.

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

  • вести разработку Rust-кода через падающий тест
  • проверять ошибки парсинга и невалидные входные данные
  • тестировать файловую логику через tempfile::NamedTempFile
  • проверять roundtrip сериализации и десериализации
  • запускать финальный контроль через cargo fmt, cargo clippy и cargo test

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

  • Реализуй `parse_config` по циклу TDD: сначала добавь тест в `#[cfg(test)]`, запусти `cargo test MODULE::tests::test_parse_config_invalid_input`, затем внеси минимальную реализацию.
  • Добавь тест для отклонения пути `../etc/passwd` и проверь его через `cargo test MODULE::tests::test_validate_path_traversal`.
  • Проведи финальную проверку Rust-кода командами `cargo fmt --all --check`, `cargo clippy --all-targets` и `cargo test`.

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

1Через Skills CLI (Vercel)

npx skills add rtk-ai/rtk --skill rtk-tdd -a claude-code

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

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

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

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

Весь набор →

Похожие

agent-eval colbymchenry Сравнивает работу агента с CodeGraph и без него на реальном репозитории. Нужен для проверки качества поиска кода и версии CodeGraph. Claude Code CX Codex Cursor +1 1 800установок testing-strategy официальный anthropics Скилл помогает спроектировать стратегию тестирования и план проверок для проекта. Пригодится, когда нужно выбрать типы тестов и найти пробелы в покрытии. Claude Code CX Codex Cursor +1 6 400установок apple-appstore-reviewer официальный github Проверяет iOS-проект глазами ревьюера Apple App Store и ранжирует риски отклонения. Нужен перед отправкой приложения на модерацию. GitHub Copilot 11 295установок hatch-pet официальный openai Создаёт и упаковывает анимированных питомцев и спрайт-листы для Codex. Пригодится, когда нужен персонаж по описанию, изображению или фирменным ориентирам. Claude Code CX Codex Cursor +1 3 300установок playwright-best-practices currents.dev Справочник по тестированию на Playwright: от написания E2E-сценариев до Page Object Model. Помогает разбирать флакующие тесты, настраивать мокирование API и проверять доступность. Claude Code CX Codex Cursor +1 98 200установок python-mcp-server-generator официальный github Создаёт Python MCP-серверы для подключения функций, API или базы данных к ИИ-клиентам. Подходит, когда нужен новый сервер на MCP Python SDK v2. GitHub Copilot 10 418установок improve-codebase-architecture Matt Pocock Скилл ищет архитектурные узкие места в кодовой базе и показывает варианты углубления модулей в HTML-отчёте. Подойдёт для ревью перед рефакторингом. Claude Code 1 163 035установок design-taste-frontend Leonxlnx Скилл задаёт арт-дирекцию для публичных страниц и рабочих экранов, а затем проверяет результат в браузере по скриншотам. Нужен, когда интерфейс выглядит шаблонным или недоработанным. Claude Code CX Codex Cursor +1 673 100установок

Вопросы о rtk-tdd

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

Выполните npx skills add rtk-ai/rtk --skill rtk-tdd -a claude-code, затем повторите npx skills add rtk-ai/rtk --skill rtk-tdd -a claude-code. Файл скилла находится по пути ~/.claude/skills/rtk-tdd/SKILL.md.

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

Скилл заставляет агента проходить цикл Red-Green-Refactor при разработке на Rust: написать падающий тест, добавить минимум кода, затем проверить и отрефакторить результат.

Какие команды входят в финальную проверку?

Нужно выполнить cargo fmt --all --check, cargo clippy --all-targets и cargo test. Все три шага должны завершиться успешно.

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

SKILL.md · Apache-2.0
---
name: rtk-tdd
description: >
  Enforces TDD (Red-Green-Refactor) for Rust development. Auto-triggers on
  implementation, testing, refactoring, and bug fixing tasks. Provides
  Rust-idiomatic testing patterns with anyhow/thiserror, cfg(test), and
  Arrange-Act-Assert workflow.
allowed-tools:
  - Read
  - Write
  - Edit
  - Bash
effort: medium
tags: [tdd, testing, rust, red-green-refactor, rtk]
---

# Rust TDD Workflow

## Three Laws of TDD

1. Do NOT write production code without a failing test
2. Write only enough test to fail (including compilation failure)
3. Write only enough production code to pass the failing test

Cycle: **RED** (test fails) -> **GREEN** (minimum to pass) -> **REFACTOR** (cleanup, cargo test)

## Red-Green-Refactor Steps

```
1. Write test in #[cfg(test)] mod tests of the SAME file
2. cargo test MODULE::tests::test_name  -- must FAIL (red)
3. Implement the minimum in the function
4. cargo test MODULE::tests::test_name  -- must PASS (green)
5. Refactor if needed, re-run cargo test (still green)
6. cargo fmt && cargo clippy --all-targets && cargo test  (final gate)
```

Never skip step 2. If the test passes immediately, it tests nothing.

## Idiomatic Rust Test Patterns

| Pattern | Usage | When |
|---------|-------|------|
| Arrange-Act-Assert | Base structure for every test | Always |
| `assert_eq!` / `assert!` | Direct comparison / booleans | Deterministic values |
| `assert!(result.is_err())` | Error path testing | Invalid inputs |
| `Result<()>` return type | Tests with `?` operator | Fallible functions |
| `#[should_panic]` | Expected panic | Invariants, preconditions |
| `tempfile::NamedTempFile` | File/I/O tests | Filesystem-dependent code |

## Patterns by Code Type

| Code Type | Test Pattern | Example |
|-----------|-------------|---------|
| Pure function (str -> str) | Input literal -> assert output | `assert_eq!(truncate("hello", 3), "...")` |
| Parsing/filtering | Raw string -> filter -> contains/not-contains | `assert!(filter(raw).contains("expected"))` |
| Validation/security | Boundary inputs -> assert bool | `assert!(!is_valid("../etc/passwd"))` |
| Error handling | Bad input -> `is_err()` | `assert!(parse("garbage").is_err())` |
| Struct/enum roundtrip | Construct -> serialize -> deserialize -> eq | `assert_eq!(from_str(to_str(x)), x)` |

## Naming Convention

```
test_{function}_{scenario}
test_{function}_{input_type}
```

Examples: `test_truncate_edge_case`, `test_parse_invalid_input`, `test_filter_empty_string`

## When NOT to Use Pure TDD

- Functions calling `Command::new()` -> test the parser, not the execution
- `std::process::exit()` -> refactor to `Result` first, then test the Result
- Direct I/O (SQLite, network) -> use tempfile/mock or test the pure logic separately
- Main/CLI wiring -> covered by integration/smoke tests

## Pre-Commit Gate

```bash
cargo fmt --all --check
cargo clippy --all-targets
cargo test
```

All 3 must pass. No exceptions. No `#[allow(...)]` without documented justification.

© rtk-ai · Apache-2.0 · rtk-ai/rtk

Смотрите также

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

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