rtk-tdd
Rust開発においてTDD(Red-Green-Refactor)サイクルを徹底するスキル。実装・テスト・リファクタリング・バグ修正タスクで自動起動し、`anyhow`/`thiserror`や`cfg(test)`を活用したRustらしいテストパターンとArrange-Act-Assertワークフローを提供する。
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.
SKILL.md 本文
Rust TDD ワークフロー
TDD の 3 つの法則
- 失敗するテストなしに本番コードを書かない
- 失敗する程度のテストのみを書く (コンパイルエラーを含む)
- 失敗するテストをパスさせる最小限の本番コードのみを書く
サイクル: RED (テスト失敗) -> GREEN (最小限でパス) -> REFACTOR (整理、cargo test)
Red-Green-Refactor のステップ
1. 同じファイルの #[cfg(test)] mod tests にテストを記述
2. cargo test MODULE::tests::test_name -- 失敗する必要あり (red)
3. 関数に最小限の実装を追加
4. cargo test MODULE::tests::test_name -- パスする必要あり (green)
5. 必要に応じてリファクタ、cargo test を再実行 (green を維持)
6. cargo fmt && cargo clippy --all-targets && cargo test (最終チェック)
ステップ 2 をスキップしないこと。テストが即座にパスする場合、何もテストしていない。
Rust の慣用的なテストパターン
| パターン | 用途 | 使用時 |
|---|---|---|
| Arrange-Act-Assert | すべてのテストの基本構造 | 常に |
assert_eq! / assert! | 直接比較 / ブール値 | 確定的な値 |
assert!(result.is_err()) | エラーパスのテスト | 無効な入力 |
Result<()> の戻り型 | ? 演算子を使うテスト | フォールバル関数 |
#[should_panic] | 予期されるパニック | 不変式、前置条件 |
tempfile::NamedTempFile | ファイル/I/O テスト | ファイルシステム依存コード |
コード種別別パターン
| コード種別 | テストパターン | 例 |
|---|---|---|
| 純粋関数 (str -> str) | 入力リテラル -> 出力をアサート | assert_eq!(truncate("hello", 3), "...") |
| パース/フィルタリング | 生文字列 -> フィルタ -> contains/not-contains | assert!(filter(raw).contains("expected")) |
| バリデーション/セキュリティ | 境界入力 -> ブール値をアサート | assert!(!is_valid("../etc/passwd")) |
| エラーハンドリング | 不正な入力 -> is_err() | assert!(parse("garbage").is_err()) |
| Struct/enum のラウンドトリップ | 構築 -> シリアライズ -> デシリアライズ -> 比較 | assert_eq!(from_str(to_str(x)), x) |
命名規則
test_{関数名}_{シナリオ}
test_{関数名}_{入力型}
例: test_truncate_edge_case, test_parse_invalid_input, test_filter_empty_string
Pure TDD を使わない場合
Command::new()を呼び出す関数 -> 実行ではなくパーサーをテストstd::process::exit()-> まずResultにリファクタ、その後 Result をテスト- 直接 I/O (SQLite、ネットワーク) -> tempfile/mock を使用するか、純粋ロジックを別途テスト
- Main/CLI の配線 -> 統合テスト/スモークテストでカバー
プリコミットゲート
cargo fmt --all --check
cargo clippy --all-targets
cargo test
3 つ全てがパスする必要があります。例外なし。正当な理由がない限り #[allow(...)] は不可。
ライセンス: Apache-2.0(寛容ライセンスのため全文を引用しています) · 原本リポジトリ
詳細情報
- 作者
- rtk-ai
- リポジトリ
- rtk-ai/rtk
- ライセンス
- Apache-2.0
- 最終更新
- 不明
Source: https://github.com/rtk-ai/rtk / ライセンス: Apache-2.0
関連スキル
newsblur-cli
ターミナルからNewsBlurを管理できます。フィードの閲覧、ストーリーの検索、記事の保存・共有、インテリジェンス分類器の学習、新しいフィードの発見、ワークフローの自動化がNewsBlur CLIで実現します。ユーザーがNewsBlurアカウントを操作したい場合、フィードの確認、購読管理、またはニュース読み込みに関するスクリプト構築時に活用してください。
caveman-compress
自然言語のメモリファイル(CLAUDE.md、todos、preferences)を「原始人形式」に圧縮し、入力トークンを削減します。技術的な内容、コード、URL、構造はすべて保持したまま圧縮します。圧縮版が元のファイルを上書きし、人間が読める形のバックアップはFILE.original.mdとして保存されます。トリガー:/caveman-compress FILEPATH または「compress memory file」
find-skills
日本語の意図から Agent Skills を発見する。「楽天SEOのスキル探して」「PDFを処理したい」「データ分析を自動化したい」などの日本語リクエストに対応。Claude Code (CLI)、Codex、Gemini CLI、claude.ai (Web) いずれでも動作。日本最大の Agent Skills データベース「Agent Skills by ALSEL」(11,000件超、全件日本語化、ダウンロード可能スキル8,600件超) から、ユーザーの意図に合うスキルを推薦・インストール案内する。
planning-and-task-breakdown
仕事を順序立てたタスクに分割します。仕様書や要件が明確にあり、実装可能なタスクに分解する必要がある場合に利用してください。タスクが大きすぎて着手しづらい場合、スコープを見積もる必要がある場合、または並列で作業を進められる場合に活用できます。
docx
このスキルは、ユーザーがWord文書(.docxファイル)を作成、読み込み、編集、操作したいときに使用します。以下の場合に実行してください:「Word文書」「.docx」などの記述、または目次・見出し・ページ番号・レターヘッドなどのフォーマットを含む専門的な文書の作成リクエスト。また、.docxファイルのコンテンツ抽出・再編成、文書への画像挿入・置換、Word形式での検索置換、変更履歴やコメント機能の使用、コンテンツを整形したWord文書への変換の場合も対象です。ユーザーが「レポート」「メモ」「手紙」「テンプレート」などの成果物をWord形式または.docxファイルで求める場合はこのスキルを使用してください。PDF、スプレッドシート、Google Docs、文書作成と無関係なコーディングタスクには使用しないでください。
idea-refine
アイデアを反復的に改善します。構造化された発散的思考と収束的思考を通じて、アイデアを洗練させることができます。「idea-refine」または「ideate」を使用してトリガーします。