开发编程
#testing
rtk-tdd
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.
DeepseekModel
官方收录技能
质量 优秀 · 90
v1.0.0
获取
https://deepseekmodel.com/api/download.php?id=rtk-ai-rtk-claude-skills-rtk-tdd-skill-md&format=skill
下载 .skill
标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
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 Do NOT write production code without a failing test Write only enough test to fail (including compilation failure) 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 cargo fmt --all --check cargo clippy --all-targets cargo test All 3 must pass. No exceptions. No #[allow(...)] without documented justification.
Agent 识别该技能的关键词,点击任意一个即可复制。
该技能未提供触发词。
下载的 .skill 包内含以下字段。
| 字段 | 说明 |
|---|---|
| format | 格式标识(skill/v1) |
| skill_id | 技能唯一 ID |
| name | 技能名称 |
| version | 版本号 |
| description | 技能描述 |
| category | 所属分类(数组) |
| trigger_words | 触发词列表 |
| tags | 标签列表 |
| source | 来源标识 |
| source_url | 来源链接(本页地址) |
| exported_at | 导出时间(每次下载生成) |
| system_prompt | 系统提示词正文 |
| model_config | 模型参数:provider / model / temperature / max_tokens / top_p |
| examples | 示例 |
| install_guide | 各平台导入说明(Coze / Dify / Claude / 自定义框架) |