
What Goes in CLAUDE.md, and What Belongs in an ADR
You read the previous post and pasted the why into CLAUDE.md, and now that paragraph rides along on every task the agent ever runs. The sign belongs there. The reason doesn’t.

You read the previous post and pasted the why into CLAUDE.md, and now that paragraph rides along on every task the agent ever runs. The sign belongs there. The reason doesn’t.

XMPP didn’t lose. The web turned presence into a product and rented it back to us one app at a time. Matrix isn’t the successor — it’s a different bet, and the thing it turned off is the P.
ADRs were written for the future engineer who asks ‘why is it like this?’ That engineer is now an AI agent, it arrives in minutes instead of years, and it doesn’t ask - it refactors.

Context isn’t what you paste into the prompt. It’s what the model sees, prioritizes, and is constrained by. That’s not prompting — that’s system design.

Many developers have fallen into the trap of using Firebase as a quick fix for real-time chat. With just a few lines of code, you can push messages to a database and have them sync across clients in real time. It’s a magical feeling – within an afternoon, you can get a basic chat working in your web or mobile app. No server code, no infrastructure headaches. Sounds too good to be true, doesn’t it?