Most people think using Claude Code is about writing better prompts.
It’s not.
The real unlock is structuring your repository so Claude can think like an engineer.
If your repo is messy, Claude behaves like a chatbot.
If your repo is structured, Claude behaves like a developer living inside your codebase.
Your project only needs 4 things:
• the why → what the system does
• the map → where things live
• the rules → what’s allowed / forbidden
• the workflows → how work gets done
I call this:
The Anatomy of a Claude Code Project 👇
━━━━━━━━━━━━━━━
1️⃣ CLAUDE.md = Repo Memory (Keep it Short)
This file is the north star for Claude.
Not a massive document.
Just three things:
• Purpose → why the system exists
• Repo map → how the project is structured
• Rules + commands → how Claude should operate
If CLAUDE.md becomes too long, the model starts missing critical signals.
Clarity beats size.
━━━━━━━━━━━━━━━
2️⃣ .claude/skills/ = Reusable Expert Modes
Stop repeating instructions in prompts.
Turn common workflows into reusable skills.
Examples:
• code review checklist
• refactoring playbook
• debugging workflow
• release procedures
Now Claude can switch into specialized modes instantly.
Result:
More consistent outputs across sessions and teammates.
━━━━━━━━━━━━━━━
3️⃣ .claude/hooks/ = Guardrails
Models forget.
Hooks don’t.
Use hooks for things that must always happen automatically.
Examples:
• run formatters after edits
• trigger tests after core changes
• block sensitive directories (auth, billing, migrations)
Hooks turn AI workflows into reliable engineering systems.
━━━━━━━━━━━━━━━
4️⃣ docs/ = Progressive Context
Don’t overload prompts with information.
Instead, let Claude navigate your documentation.
Examples:
• architecture overview
• ADRs (engineering decisions)
• operational runbooks
Claude doesn’t need everything in memory.
It just needs to know where truth lives.
━━━━━━━━━━━━━━━
5️⃣ Local CLAUDE.md for Critical Modules
Some areas of your system have hidden complexity.
Add local context files there.
Example:
src/auth/CLAUDE.md
src/persistence/CLAUDE.md
infra/CLAUDE.md
Now Claude understands the danger zones exactly when it works in them.
This dramatically reduces mistakes.
━━━━━━━━━━━━━━━
Here’s the shift most people miss:
Prompting is temporary.
Structure is permanent.
Once your repository is designed for AI:
Claude stops acting like a chatbot...
…and starts behaving like a project-native engineer. 🚀
I'm Boris and I created Claude Code. Lots of people have asked how I use Claude Code, so I wanted to show off my setup a bit.
My setup might be surprisingly vanilla! Claude Code works great out of the box, so I personally don't customize it much. There is no one correct way to use Claude Code: we intentionally build it in a way that you can use it, customize it, and hack it however you like. Each person on the Claude Code team uses it very differently.
So, here goes.
I'm Boris and I created Claude Code. I wanted to quickly share a few tips for using Claude Code, sourced directly from the Claude Code team. The way the team uses Claude is different than how I use it. Remember: there is no one right way to use Claude Code -- everyones' setup is different. You should experiment to see what works for you!
A checklist for secure vibe coded apps.
Putting things on the internet is kind of like parking your car in San Francisco—there's inherent risk. 😅
Luckily, there are some straightforward things you can do to minimize those risks. Here are 16 simple things to make secure vibe coded apps. 👇
Train Etiquette Art Posters in Japan ⛩️
Seibu Railways has been releasing these Ukiyo-e inspired posters, in a series called 「電車内迷惑図絵」 (“Drawings of what bothers other people on the train”).
More here: https://t.co/e3GO40PrU1
Baffling to see the disclosure around DeepSeek
Last I checked the tech industry, we celebrate small teams pushing the industry forward, coming up w novel ways to build software more efficiently. And sharing it.
Yet now there's a class of folks who think this is some bad thing?
The more I use GenAI coding tools, the more I am convinced keeping to "traditional" software engineering practices is what works most productive here. As in 10x more productive. E.g.
- Small changes
- Test that the change works before moving on
- (unit) tests wherever you can
My biggest contribution to scientific progress has been telling every researcher I've ever worked with about mamba (to replace conda), and gifting them a copy of Barrett's Linux Pocket Guide.
Are there any sci fi stories set in a world as it goes deep down the augmented reality tech tree?
That is, at the start of the story, they start with something like the Meta Glasses
Then 2 decades later, most of the world is just a canvas for augmented reality projections
It was really valuable for me to stay at a single company long enough to live with the consequences of my own engineering decisions. To come face-to-face with my own technical debt.
It takes a few years for this to play out but IMO it's an important part of engineering growth.
The last several years, conventional career advice in tech was "job hop for better salary - don't worry about tenure."
Job hopping once or twice is not a problem. But never staying anywhere 3+ years means you don't have this kind of forced learning - about your own decisions:
i am about to teach a new applied linear algebra course at @PennEngineers, meant for datasci/ML/AI.
to support the class, i've written a book...
[see below for links to text]