Building an Open Source Tool I Actually Use Every Day

It started as a config file

I use Claude Code a lot. For almost every project I work on — InkWeave, the H1B map, this site, random scripts, code reviews.

And every time I set up a new project or jumped to a different machine, I'd spend twenty minutes re-configuring things I'd already figured out. What hooks to enable. Which agents to add. How to structure the commit workflow. How to make Claude remember lessons from past sessions.

So I started keeping my configuration in one place. Not as a publishable project — just as a folder I could copy from.

At some point I thought: this might be useful to someone else.

What I learned about open source

I'd contributed to open source projects before, in small ways. But I'd never been the one to start something and put it out there.

When I finally did — added a README, opened the repo, set up a CONTRIBUTING.md and issue labels and "good first issue" tags for the first time — something clicked.

Open source isn't about building something impressive and releasing it. It's about sharing something you actually use, trusting that other people have the same problem, and seeing what happens when they do. You use it, it gets better, someone else uses it, they find something broken, it gets better again.

人人为我,我为人人 — everyone for me, me for everyone. That's the feeling.

The first PRs

The first few pull requests came from friends. But they were using Clade, and they were fixing things that actually mattered to them:

PR #2 — someone who SSHs into remote machines wanted to see the server hostname in the session context HUD, so they'd know which machine Claude was running on.

PR #3 — a fix for terminals that don't render emoji. The status line indicator looked broken on plain SSH sessions. They added an auto-detect mode and a plain ASCII fallback.

PR #4 — a Minimax usage checker, because not everyone is using the same Claude subscription. Someone who uses Minimax Coding Plan wanted the /usage skill to auto-detect which service they're on.

PR #5 — macOS compatibility. Five scripts used Linux-only flags. Someone on a Mac tracked down each incompatibility and fixed them all.

Each of these is a real use case from a real person. That's what made them satisfying to merge — not that the code was contributed, but that they showed up because someone was actually using the tool and ran into something.

What Clade does

Claude Code is powerful, but out of the box it starts fresh every session. No memory. You re-explain context, re-describe what not to do, re-set up workflows you've already figured out.

Clade adds the infrastructure around it:

A session context hook that loads git history, recent handoff notes, and correction rules at the start of every session — so Claude knows where things were left off without being told.

A correction learning loop that captures mistakes. When you correct Claude — "no, don't do it that way" — the hook logs it, Claude writes a rule, and that rule loads into future sessions automatically.

A guardian hook that blocks genuinely dangerous operations before they run: database migrations that time out, rm -rf on the wrong path, force push to main.

A set of skills/commit, /handoff, /pickup, /batch-tasks, /review, /loop — that handle the recurring patterns: structured commits, session continuity, autonomous multi-step execution.

And an Orchestrator Web UI for when you want multiple Claude agents working in parallel on the same codebase, coordinated without conflicts.

None of this was designed in advance. Each piece was added because I ran into a problem and solved it for myself.

Speed is the superpower

Shipping fast is not a shortcut. It's the entire strategy.

Ideas don't validate themselves. Code sitting in a branch does nothing. Clade exists in its current form because I kept using it, kept finding problems, and kept fixing them — often the same day.

In the last year I've made 3,577 contributions across projects. The last 40+ days have been consecutive. Not because I'm trying to fill a GitHub heatmap, but because when you're working on things that genuinely matter to you, you just keep going.

You can't get to the good version of something without going through the bad and mediocre versions first. The only question is how fast you move through them. But speed without direction is chaos — you have to stay honest about whether what you're building is actually working, and be willing to drop it when the answer is no.

Every feature in Clade started with something that annoyed me. When something feels tedious, that's signal — automate it or redesign it.

The numbers, and what they don't mean

The repo hit around 2,000 clones in its first two weeks. Clone counts don't tell you how many became active users. But it was more than I expected, and it felt good in a specific way: not like going viral, but like finding out that the problem I thought was mine alone is actually pretty common.

Most of the stars are from people I know. That's fine. People I know are the ones who gave me the most useful feedback, filed the most specific issues, and pushed the first PRs. Community starts somewhere.

What's next

Clade is a personal tool first. All the iterations come from my own use — I try something, it breaks or doesn't feel right, I fix it. That constraint keeps it honest. When I'm tempted to add a feature because it seems cool, I ask myself: would I actually use this?

The next thing I want to explore is distribution. The tool works. People who find it and try it seem to find it useful. But "people who find it" is doing a lot of work in that sentence. Getting something discovered — without feeling like you're just shouting — is a direction I'm excited to spend more time on.

What won't change is that I'm not going to chase growth by making it something it isn't. Clade will keep evolving through use — mine and the people who contribute. Every change will have a real reason behind it.


If you're new to Claude Code and want a faster setup, it's at github.com/shenxingy/Clade. Install takes 30 seconds. If something doesn't work for you, open an issue — that's how it gets better.