DEV Community

hao li profile picture

hao li

404 bio not found

Joined Joined on 
Your wheel can be a valid zip and still break installers. I built a checker for that.

Your wheel can be a valid zip and still break installers. I built a checker for that.

1
Comments
2 min read

Want to connect with hao li?

Create an account to connect with hao li. You can also sign in below to proceed if you already have an account.

Already have an account? Sign in
Your Package Has a License. Your Wheel Doesn't Say So.

Your Package Has a License. Your Wheel Doesn't Say So.

Comments
3 min read
Your Python Package Installed. Its CLI Crashed on --help.

Your Python Package Installed. Its CLI Crashed on --help.

Comments
4 min read
Apple's Python Package Says 3.11. Its Wheel Requires 3.14.

Apple's Python Package Says 3.11. Its Wheel Requires 3.14.

Comments
3 min read
Google Published a PyPI Release Without Its Git Tag

Google Published a PyPI Release Without Its Git Tag

Comments
3 min read
Git Can Track Two Files Your Mac Cannot Check Out

Git Can Track Two Files Your Mac Cannot Check Out

Comments
3 min read
Your Python Tests Passed. Your Published Wheel Is Missing Files.

Your Python Tests Passed. Your Published Wheel Is Missing Files.

Comments
3 min read
I stopped letting my agents guess ports

I stopped letting my agents guess ports

Comments
2 min read
Your Subagents Are Re-Sending 51K Tokens Every Call. I Built a Tool to Prove It.

Your Subagents Are Re-Sending 51K Tokens Every Call. I Built a Tool to Prove It.

Comments
2 min read
Your Claude Code Read Deny Rule Is a Screen Door — I Built a Tool That Proves It

Your Claude Code Read Deny Rule Is a Screen Door — I Built a Tool That Proves It

Comments
4 min read
Your CLAUDE.md Might Not Be Loading — I Built a Check-Up for That

Your CLAUDE.md Might Not Be Loading — I Built a Check-Up for That

Comments
3 min read
Stop rewriting your whole plan: shard it instead

Stop rewriting your whole plan: shard it instead

Comments
2 min read
I track protein, not calories. So I built a dead-simple tracker for lifters.

I track protein, not calories. So I built a dead-simple tracker for lifters.

Comments
2 min read
Your README's demo link is dead and nobody told you.

Your README's demo link is dead and nobody told you.

Comments 2
2 min read
I tag releases, then dread writing the notes. So I automated it.

I tag releases, then dread writing the notes. So I automated it.

Comments
2 min read
The 60-second gate I run before any repo goes public.

The 60-second gate I run before any repo goes public.

Comments
2 min read
Know what that file costs before you paste it into the chat.

Know what that file costs before you paste it into the chat.

Comments
2 min read
Deployed, 500'd, forgot the env var again. I built a pre-deploy gate.

Deployed, 500'd, forgot the env var again. I built a pre-deploy gate.

Comments
1 min read
Your AI draft sounds like AI. I built a linter that scores how plain it is.

Your AI draft sounds like AI. I built a linter that scores how plain it is.

Comments
2 min read
Your AI-generated website looks AI-generated. I built a detector that scores it.

Your AI-generated website looks AI-generated. I built a detector that scores it.

Comments
2 min read
Your MCP server's tools are confusing your agent. I built a linter that scores them.

Your MCP server's tools are confusing your agent. I built a linter that scores them.

1
Comments
2 min read
My agent made 40 decisions today and wrote down zero. So I built dlog.

My agent made 40 decisions today and wrote down zero. So I built dlog.

Comments 4
2 min read
Stop debugging webhooks blind. I built a tap that shows you the raw bytes.

Stop debugging webhooks blind. I built a tap that shows you the raw bytes.

Comments
2 min read
I gave my coding agent a sense of taste. It picks restaurants from my music.

I gave my coding agent a sense of taste. It picks restaurants from my music.

1
Comments
2 min read
Everyone builds agent memory for store-and-search. I built the other half: write and delete.

Everyone builds agent memory for store-and-search. I built the other half: write and delete.

Comments
5 min read
I gave Alexa a memory for my workouts — a stdlib-only MCP server with OAuth 2.1

I gave Alexa a memory for my workouts — a stdlib-only MCP server with OAuth 2.1

1
Comments
1 min read
My agent changed `toBe(10)` to `toBe(9)` and called it done. I built hooks to stop that

My agent changed `toBe(10)` to `toBe(9)` and called it done. I built hooks to stop that

1
Comments 4
7 min read
Two Claude Code sessions, one repo, one corrupted edit. A 60-line fix.

Two Claude Code sessions, one repo, one corrupted edit. A 60-line fix.

Comments 1
1 min read
I bounce between Claude Code and Codex. I built the bridge I was missing.

I bounce between Claude Code and Codex. I built the bridge I was missing.

Comments
3 min read
Your MCP servers are eating your context window. I built a CLI to audit the tax

Your MCP servers are eating your context window. I built a CLI to audit the tax

3
Comments 3
3 min read
I gave my coding agent eyes on my real, logged-in browser (stdlib-only, local)

I gave my coding agent eyes on my real, logged-in browser (stdlib-only, local)

Comments
2 min read
loading...