tdd
Skill3.3k starsChanged 2 days agoApache-2.0View on GitHub
Red-green loop for one behaviour at an agreed seam - failing test first, the least code that passes, refactoring outside the loop. Use for test-first bug fixes and small features, or whenever the user says TDD or red-green.
We split this skill into the rules it gives an agent
6 rules. 0 are common, 6 are distinctive, and 0 are very specific to this project.
0
Common
Most of the 185 edited versions we read keep these.
6
Distinctive
This author's own choices. Worth a look.
0
Very specific
Tied to their project's names, files or tools. Probably skip.
- Common
- Distinctive
- Very specific
- could be automatic: a setting could enforce it
- Distinctive: line 11
Ask the user only when choosing between seams would create or change a design decision, saying what each catches and misses.
- Distinctive: line 12
No test goes below the seam, because a test against internals passes on wrong behaviour and fails on a harmless refactor.
- Distinctive: line 16
Write one test for one behaviour, run it, and read the failure: the assertion on the behaviour must be what fails.
- Distinctive: line 23
Write the least code that passes this test and nothing for the test you expect next.
- Distinctive: line 24
Run the one test while iterating and the unit's suite before each commit, so the loop leaves only green commits.
- Distinctive: line 29
Do not write all the tests first: tests written in bulk check the shape you imagined, go insensitive to what the code does, and fix the …
“Common” is measured: kept by at least 6 in 10 of the 185 edited versions of this file we could read. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.
Files
test-writer decides what a good test is and test-oracle-reviewer where its expected value may come from; this skill is the loop around them.
Seam
Name the seam before the first test: the public boundary where the behaviour is observed, taken from the intent or contract file, the bug report, or the existing public interface. Ask the user only when choosing between seams would create or change a design decision, saying what each catches and misses. No test goes below the seam, because a test against internals passes on wrong behaviour and fails on a harmless refactor.
Red
Write one test for one behaviour, run it, and read the failure: the assertion on the behaviour must be what fails.
A compile error, missing fixture, or setup panic is not red (unless compilation failure is the behaviour under test), since it goes away once that other problem is fixed and proves nothing.
For a bug, the expected value is one test-oracle-reviewer would class as independent, never the output of the fixed code, which only shows the fix did what it did.
A behaviour that needs a decision no intent, contract, or report states stops the loop: ask, or run grill-intent, before writing the assertion, because the test becomes the specification the code is bent to.
Green
Write the least code that passes this test and nothing for the test you expect next; a plainly stubbed answer is the signal for the next test, not a reason to write more code now. Run the one test while iterating and the unit's suite before each commit, so the loop leaves only green commits.
One slice at a time
One test, one change, repeat; each test responds to what the last cycle showed. Do not write all the tests first: tests written in bulk check the shape you imagined, go insensitive to what the code does, and fix the test structure before you understand the implementation.
Refactor outside the loop
Refactoring is its own commit after green, suite green before and after; a design finding from implementation or code-review is acted on there, so a refactor never hides behind a behaviour change.
Trending
More talk lately.about the whole repository
Who's talking about Devolutions/IronRDP
- A Hacker News story“IronRDP: a Rust implementation of Microsoft's RDP protocol”Hacker News · Mar 21, 2025 · 545 points
- @github-trending.bsky.social“🚀 Skyrocketing! 🚀 (200+ new stars) 📦 Devolutions / IronRDP ⭐ 1,328 (+276) 🗒 Rust Rust implementation of …”Bluesky · Mar 23, 2025 · 19 likes
- @hacker-news-jp.bsky.social“IronRDP: MicrosoftのRDPプロトコルのRust実装 IronRDP: a Rust implementation of Microsoft's RDP protocol 🔺 328 💬 45 …”Bluesky · Mar 21, 2025 · 5 likes
- fosrl/pangolin“Browser RDP fails with GNOME Remote Desktop And Windows Connection Errors”GitHub · Jun 14, 2026 · 3 reactions
- @rusttrending.bsky.social“Devolutions / IronRDP: Rust implementation of the Microsoft Remote Desktop Protocol (RDP) ★1304 …”Bluesky · Mar 23, 2025 · 3 likes
The biggest 5 of 60 mentions linking to the repository that our crawl found. Each line is their own headline.
See all 60
Talked about on GitHub, Bluesky and Hacker News (60 times).
On GitHub · 50
- Jun 14, 2026Browser RDP fails with GNOME Remote Desktop And Windows Connection Errors — fosrl/pangolin3 reactions · 19 comments
- Jul 29, 2026fix(kerberos): remove unnecessary sequence number incrementation — Devolutions/sspi-rs1 reaction
- Feb 25, 2026Can't connect to Ubuntu RDP host — totoshko88/RustConn1 reaction · 5 comments
- Nov 18, 2025build(deps): no zlib for flate2 on WASM — Devolutions/sspi-rs1 reaction
- Oct 7, 2025chore(webapp): bump VNC and RDP WASM packages — Devolutions/devolutions-gateway1 reaction · 2 comments
45 more on GitHub
- Aug 28, 2025fix(webapp)!: add manual clipboard mode for RDP, VNC and ARD — Devolutions/devolutions-gateway1 reaction · 3 comments
- Oct 29, 2026chore(deps): bump ironrdp-graphics from 0.9.0 to 0.10.0 — kihyun1998/justrdp0 reactions
- Oct 24, 2026Bug: (IronRDP) (Windows Server 2025) Screen tearing on resize — meanaverage/tabby-rdp0 reactions · 5 comments
- Oct 23, 2026Vendored forks: upstream drift or advisories need review — armaxri/termiHub0 reactions
- Oct 22, 2026Embedded RDP: distorted display when connecting to xrdp — totoshko88/RustConn0 reactions · 1 comment
- Oct 21, 2026Stalled transport retains an old session and blocks reconnect until service restart — MuNeNiCK/hypr-rdp0 reactions
- Oct 19, 2026Bump ironrdp-graphics from 0.6.0 to 0.9.0 — Antxj/termcraft0 reactions
- Oct 19, 2026Bump ironrdp-pdu from 0.6.0 to 0.9.0 — Antxj/termcraft0 reactions
- Oct 19, 2026Bump ironrdp-cliprdr from 0.4.0 to 0.7.0 — Antxj/termcraft0 reactions
- Oct 19, 2026Bump ironrdp-core from 0.1.5 to 0.2.1 — Antxj/termcraft0 reactions
- Oct 19, 2026Bump ironrdp-dvc from 0.4.1 to 0.8.0 — Antxj/termcraft0 reactions
- Oct 15, 2026Windows desktop service 18.11.x fails RDP license exchange on windows hosts with RDS CALs — gravitational/teleport0 reactions · 1 comment
- Oct 9, 2026Vendored forks: upstream drift or advisories need review — armaxri/termiHub0 reactions
- Oct 2, 2026feat(unattended): pivot to native Windows Devolutions Gateway and RDP readiness — hamburger-os/PalmTTY0 reactions · 1 comment
- Sep 28, 2026Bump ironrdp-pdu from 0.8.0 to 0.9.0 — athiedepayit/rustrdp0 reactions
- Sep 26, 2026[test] vendored-fork drift sync self-test (#3498) — armaxri/termiHub0 reactions · 1 comment
- Sep 26, 2026Vendored forks: upstream drift or advisories need review — armaxri/termiHub0 reactions · 1 comment
- Sep 26, 2026Vendored forks: upstream drift or advisories need review — armaxri/termiHub0 reactions · 1 comment
- Sep 26, 2026Vendored forks: upstream drift or advisories need review — armaxri/termiHub0 reactions · 1 comment
- Sep 24, 2026feat(kerberos): add support for IAKerb extension for Kerberos client — Devolutions/sspi-rs0 reactions · 9 comments
- Sep 24, 2026feat(picky-krb): add IAKerb proxy message encoding/decoding — Devolutions/picky-rs0 reactions · 1 comment
- Sep 11, 2026Support Linux user authentication through PAM — MuNeNiCK/hypr-rdp0 reactions
- Sep 7, 2026Bump ironrdp-displaycontrol from 0.7.0 to 0.8.0 — athiedepayit/rustrdp0 reactions · 1 comment
- Sep 7, 2026Bump ironrdp-input from 0.6.0 to 0.7.0 — athiedepayit/rustrdp0 reactions · 1 comment
- Sep 4, 2026[no ci]: Bump ironrdp-pdu from 0.8.0 to 0.9.0 — athiedepayit/rustrdp0 reactions · 1 comment
- Sep 4, 2026[no ci]: Bump ironrdp-cliprdr from 0.6.0 to 0.7.0 — athiedepayit/rustrdp0 reactions
- Sep 4, 2026[no ci]: Bump ironrdp-graphics from 0.8.1 to 0.9.0 — athiedepayit/rustrdp0 reactions · 1 comment
- Sep 4, 2026[no ci]: Bump ironrdp-dvc from 0.7.0 to 0.8.0 — athiedepayit/rustrdp0 reactions · 1 comment
- Sep 4, 2026[no ci]: Bump ironrdp-session from 0.10.0 to 0.11.0 — athiedepayit/rustrdp0 reactions
- Aug 26, 2026chore(deps): bump ironrdp-session from 0.8.0 to 0.11.0 in /src-tauri — voktty/voktty0 reactions · 1 comment
- Jul 28, 2026build(deps): bump ironrdp-egfx from 0.2.0 to 0.3.0 in /rdp-kotlin/rust — GlassHaven/Haven0 reactions · 2 comments
- Jul 28, 2026build(deps): bump ironrdp-displaycontrol from 0.7.0 to 0.8.0 in /rdp-kotlin/rust — GlassHaven/Haven0 reactions · 2 comments
- Jul 28, 2026build(deps): bump ironrdp-session from 0.10.0 to 0.11.0 in /rdp-kotlin/rust — GlassHaven/Haven0 reactions · 2 comments
- Jul 27, 2026Bump ironrdp-pdu from 0.7.0 to 0.9.0 in /android/yyslide-android/rdp-kotlin/rust — wuyan1337/yySlide0 reactions
- Jul 27, 2026Bump ironrdp-cliprdr from 0.5.0 to 0.7.0 in /android/yyslide-android/rdp-kotlin/rust — wuyan1337/yySlide0 reactions
- Jul 25, 2026build(deps): bump ironrdp-input from 0.6.0 to 0.7.0 in /rdp-kotlin/rust — SkyL9ne/Haven0 reactions
- Jul 25, 2026build(deps): bump ironrdp-session from 0.10.0 to 0.11.0 in /rdp-kotlin/rust — SkyL9ne/Haven0 reactions
- Jul 25, 2026build(deps): bump ironrdp-displaycontrol from 0.7.0 to 0.8.0 in /rdp-kotlin/rust — SkyL9ne/Haven0 reactions
- Jul 25, 2026build(deps): bump ironrdp-egfx from 0.2.0 to 0.3.0 in /rdp-kotlin/rust — SkyL9ne/Haven0 reactions
- Jul 25, 2026build(deps): bump ironrdp-svc from 0.7.0 to 0.8.0 in /rdp-kotlin/rust — SkyL9ne/Haven0 reactions
- Jul 25, 2026build(deps): bump ironrdp-cliprdr from 0.6.0 to 0.7.0 in /rdp-kotlin/rust — SkyL9ne/Haven0 reactions
- Jul 21, 2026build(deps): bump ironrdp-tls from 0.2.1 to 0.2.2 in /rdp-kotlin/rust — GlassHaven/Haven0 reactions · 4 comments
- Jul 21, 2026build(deps): bump ironrdp-cliprdr from 0.6.0 to 0.7.0 in /rdp-kotlin/rust — GlassHaven/Haven0 reactions · 3 comments
- Jul 21, 2026build(deps): bump ironrdp-core from 0.2.0 to 0.2.1 in /rdp-kotlin/rust — GlassHaven/Haven0 reactions · 3 comments
- Jul 16, 2026bump ironrdp-graphics from 0.8.0 to 0.9.0 — kihyun1998/justrdp0 reactions · 2 comments
On Bluesky · 9
- Mar 23, 2025🚀 Skyrocketing! 🚀 (200+ new stars) 📦 Devolutions / IronRDP ⭐ 1,328 (+276) 🗒 Rust Rust implementation of the Microsoft Remote Desktop… — @github-trending.bsky.social19 likes and reposts
- Mar 21, 2025IronRDP: MicrosoftのRDPプロトコルのRust実装 IronRDP: a Rust implementation of Microsoft's RDP protocol 🔺 328 💬 45 🔗 HN Post | Article — @hacker-news-jp.bsky.social5 likes and reposts · 1 reply
- Mar 23, 2025Devolutions / IronRDP: Rust implementation of the Microsoft Remote Desktop Protocol (RDP) ★1304 https://github.com/Devolutions/IronRDP — @rusttrending.bsky.social3 likes and reposts
- Mar 22, 2025IronRDP: a Rust implementation of Microsoft's RDP protocol https://github.com/Devolutions/IronRDP [comments] [334 points] — @hnfeed.bsky.social2 likes and reposts
- Mar 21, 2025IronRDP: a Rust implementation of Microsoft's RDP protocol https://github.com/Devolutions/IronRDP… — @newsyc200.bsky.social2 likes and reposts
4 more on Bluesky
- Mar 21, 2025IronRDP: a Rust implementation of Microsoft's RDP protocol Discussion — @hackernewsbot.bsky.social2 likes and reposts
- Oct 9, 2026I want to reach feature parity with the first-party RDP client with IronRDP: github.com/Devolutions/... — @awakecoding.com1 likes and repost · 1 reply
- Mar 22, 2025🌐IronRDP: Microsoft の RDP プロトコルの Rust 実装 https://github.com/Devolutions/IronRDP via #HackerNews — @kdmsnr.com1 likes and repost
- Mar 22, 2025https://github.com/Devolutions/IronRDP Rustで実装されたMicrosoft Remote Desktop Protocol (RDP)の紹介です。 IronRDPという名称でGitHubで公開されています。… — @topickapp.bsky.social1 likes and repost
On Hacker News · 1
- Mar 21, 2025IronRDP: a Rust implementation of Microsoft's RDP protocol545 points · 214 comments
Other versions193 projects use a version of this.
Word for word · 0
None found.
Edited · 0
None found.
Wrote their own version · 193
- mattpocock/skills★ 309ksame name
- Yeachan-Heo/oh-my-claude-sisyphus★ 40ksame name
- Yeachan-Heo/oh-my-claudecode★ 40ksame name
- QuivrHQ/quivr★ 40ksame name
- ccusage/ccusage★ 19ksame name
- ryoppippi/ccusage★ 19ksame name
- MODSetter/SurfSense★ 17ksame name
- GreyDGL/PentestGPT★ 16ksame name
- open-metadata/OpenMetadata★ 16ksame name
- prowler-cloud/prowler★ 15ksame name
183 more not listed
How matches are found. Word for word: the exact same text. Edited: shares passages with this file (“99% same” means 99% of its five-word phrases also appear here; 10% or more counts). Their own version: similar meaning, or, weakest, the same name. We can’t tell which project had it first. Projects are counted among the 200 most-starred candidates, and mentions are links to the repository we found, up to 50 per site, so both counts are a floor.
Used alongsideProjects with it also use poteto-mode, setup-pstack and 10 more.
Other files people use alongside this one.
Files found in the same public projects as a version of this one, more often than they turn up anywhere else. Each project counts once, large collections count for less, and this file's own repository is left out.
jtarorehSkillpoteto-mode
poteto's agent style for concise, detailed responses, deliberate subagents, unslopped prose, simple code, and verified work. Use for poteto, /poteto-mode, or requests to work in this style.
Also in 5 projects that use this
bnemaSkillsetup-pstack
Configure which Pi models pstack uses per role. Detects available provider/model specs and writes pstack's user configuration. Use for /setup-pstack, "configure pstack models", or changing pstack model choices.
Also in 22 projects that use this
jaydubya818Skillprinciple-laziness-protocol
Apply when a refactor is adding wrappers or abstractions instead of simplifying.
Also in 38 projects that use this
jaydubya818Skillprinciple-make-operations-idempotent
Apply when an operation must tolerate retries after partial completion.
Also in 38 projects that use this
- +8 more from jaydubya818
In this repository42 other files it gives its agents.
- AGENTS.mdAGENTS.md
- agents-md-reviewSkill
- agents-mdSkill
- blind-testsuiteSkill
- code-compressorSkill
- commit-and-pr-conventionsSkill
- commit-scopeSkill
- contract-authoringSkill
- contract-reviewSkill
- contributeSkill
- crate-readme-writerSkill
- dependency-prunerSkill
- dependency-reviewerSkill
- docs-compressorSkill
- docs-writerSkill
- grill-intentSkill
- intent-drift-auditSkill
- intent-filesSkill
- intent-reviewSkill
- ironrdp-activex-mstsc-testingSkill
- leadSkill
- llm-comment-footerSkill
- markdown-writerSkill
- new-crateSkill
- orchestrate-effortSkill
- prose-verifierSkill
- prose-writerSkill
- protocol-reviewerSkill
- public-dependencySkill
- review-feedback-loopSkill
- rust-style-reviewerSkill
- rust-styleSkill
- skeptical-reviewerSkill
- skill-disciplineSkill
- tessl-skill-lintingSkill
- test-oracle-reviewerSkill
- test-prunerSkill
- test-reviewerSkill
- test-writerSkill
- variantsSkill
- code-reviewSkill
- release-prepSkill
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

