EvanFlow – A TDD driven feedback loop for Claude Code
67 points
7 hours ago
| 10 comments
| github.com
| HN
dmitry_dv
8 minutes ago
[-]
The refactor step is the silent casualty in AI-assisted TDD. Once the test is green, Claude optimizes for moving to the next test, not for cleaning up the impl that just passed. An "iterate-until-clean" pass at the end is a different thing: you're refactoring cold code, not refactoring with a freshly-written test as the safety net.
reply
Deeds67
4 hours ago
[-]
To be honest, the official superpowers/brainstorming skill already does TDD so well, I don't see that much of a need for this. TDD is definitely the way to go with agentic development.
reply
shruubi
5 hours ago
[-]
Two questions

1) Do you not feel self-conscious or weird about calling this "EvanFlow"? Seems like a lot of people these days are naming their AI tools/skills/whatever after themselves which seems self-absorbed. Either that or they hope that if their thing takes off like OpenClaw did then they'll grab the fame that comes along with it.

2) Why does your TDD flow miss the refactor step of TDD?

reply
toyg
2 hours ago
[-]
I initially thought it was a pun on Pearl Jam's classic "Even Flow", then I read your comment and noticed the username... Sad.
reply
wenc
5 hours ago
[-]
I feel like 1 is a self correcting problem. If this goes nowhere it will soon be forgotten.

I can think of one example that did go somewhere: Linux.

reply
globular-toast
3 minutes ago
[-]
Linus did not name it Linux himself: https://en.wikipedia.org/wiki/Linux#Naming
reply
EvanKnowles
46 minutes ago
[-]
Feels like a bonus to me.
reply
normie3000
5 hours ago
[-]
Ref 1, he should have called it Daughter.
reply
reitzensteinm
5 hours ago
[-]
No Code, surely?
reply
ButlerianJihad
2 hours ago
[-]
"Evenflo is a hundred year old infant feeding brand." Probably named to market its baby bottles and accessories.

Everybody who grew up to listen to Pearl Jam had seen or used an Evenflo pacifier, baby bottle, or car seat. That's one reason the song already sounded so familiar.

reply
s20n
6 hours ago
[-]
EvanFlow - thoughts arrive like butterflies?
reply
sbseitz
6 hours ago
[-]
Oh, he don't know, so he chases them away
reply
jamesbfb
6 hours ago
[-]
Oooohhhh
reply
ge96
3 hours ago
[-]
Seeeethinnggg tests failing not complete... again
reply
__mharrison__
4 hours ago
[-]
Someday soon he'll begin his life again
reply
evanklem2004
7 hours ago
[-]
Built this as an opinionated Claude Code development flow based on evidence based practices and what has been working for me while developing professional code.

EvanFlow is a single TDD-driven loop. Say "let's evanflow this" and it walks brainstorm → plan → execute → tdd → iterate → STOP. Real checkpoints at design and plan approval. Never auto-commits, never auto-stages, never proposes integration - every git op is your call.

The three things that actually changed how I work:

1. Vertical-slice TDD. One failing test → minimal impl → next test. Watch each test fail before writing the impl that passes it. (Sounds obvious. Almost no agent does it by default. ~62% of LLM-generated test assertions are wrong per HumanEval research, so testing TDD discipline matters more than the impl discipline.)

2. Embedded grilling at decision points. Before locking a plan: what breaks if a user does X? What's the rollback? What's explicitly out of scope? Catches design flaws while they're still cheap.

3. Iterate-until-clean (hard cap of 5 rounds). Re-read the diff against dead code, naming, the deletion test, assertion correctness, and a Five Failure Modes pass (hallucinated actions, scope creep, cascading errors, context loss, tool misuse). For UI: screenshot via headless Chromium.

For bigger plans with 3+ independent units sharing types, it forks into a parallel coder/overseer orchestration. Integration tests at touchpoints ARE the cohesion contract.

Three install paths: Claude Code plugin marketplace, npx skills add, manual copy. MIT.

reply
girvo
4 hours ago
[-]
Please don’t post AI generated comments :(

Just write it yourself. I promise it’s worth it

reply
deaux
2 minutes ago
[-]
He's even being cheeky by intentionally replacing the em-dash by a regular dash, haha
reply
dpark
4 hours ago
[-]
I’ve thought of going down the TDD model for LLMs as a way of providing constraints on their behavior. I would think that “vertical slice” TDD would encourage the LLM to start tailoring the tests to the implementation rather than establishing the invariants up front, though. I was considering “horizontal” TDD to force the agent to implement constraints before coding to them.
reply
lukewrites
4 hours ago
[-]
Curious, In the repo you mention

> Several rules come from 2025-2026 industry research on agentic coding failure modes

What are some of the papers you read?

reply
esperent
3 hours ago
[-]
With no disrespect intended because this is also how I would do it (but I wouldn't publish and name it after myself!) - they didn't read the research. They had the AI that actually created this do that for them.
reply
esperent
3 hours ago
[-]
> execute → tdd

How are these separate steps?

TDD is how you execute, not something you tack on afterwards.

reply
nghnam
1 hour ago
[-]
superpowers/brainstorming is doing TDD as well.
reply
here2learnstuff
4 hours ago
[-]
Not bad, but also, forgive how mean this is going to come across: not using a product from someone who just started their undergrad.
reply
xaxfixho
43 minutes ago
[-]
i'm new around here, how do i *DOWN VOTE* stuff?
reply
fragmede
2 hours ago
[-]
Linus started Linux when he was 21, an undergrad at the University of Helsinki. You're entirely welcome to use whatever filtering function for products you use, but it doesn't seem like soley using this particular product's creator's age as a disqualifier comes from a place of sound reasoning, to me.
reply
avyjit
3 hours ago
[-]
This is such a BS take. If you feel the product is immature or not great - that's valid criticism. This is not
reply
sdevonoes
2 hours ago
[-]
TDD in 2026? Besides, TDDs main benefit is to come up with a decent architecture for your system… LLMs can already do that if instructed. I don’t see the point of TDD
reply
jtfrench
6 hours ago
[-]
How does this handle “dumb zone” evasion while looping?
reply
cratermoon
5 hours ago
[-]
reply