30 Days of Claude All 30 days
Day 11 · Layer 2: Data

Every file in Claude Code, explained

You open a project and there are files you've never seen. Six of them stop people quitting in the first ten minutes. This page has all eleven.

Next: Day 12

Why this one matters

Everything else in this series so far has been "here's a thing I built". This one is purely "here's what you're looking at". Someone opens a project, sees eight files they don't recognise, and quietly closes it. Eleven answers fixes that, and the last one is the reason you're reading this instead of a leaked API key.

The six from the reel

CLAUDE.md

This is the brain. Whatever project or folder you're working in, this is the file that tells Claude what the business is, how you work, and what the rules are. It's the first thing Claude reads, every single session — there are actually a few levels that stack rather than override (an organisation-wide one, a personal one at ~/.claude/CLAUDE.md that applies across all your projects, the project one, and a private local one). You make the first draft by typing /init and letting Claude read your codebase.

.md — Markdown

That .md on the end stands for Markdown, and it catches people out: it isn't code. It doesn't run. It's plain text with a few symbols for formatting — a hash for a heading, two stars for bold. That's the whole thing. It's readable by you and readable by Claude, which is exactly why everything in this series is written in it.

.env

This is where your secrets live. API keys, tokens, passwords — the things that let Claude get into your other platforms. One file, all of it, in one place. It's a Python and Node convention rather than a Claude Code feature: Claude Code doesn't read it automatically, your own scripts load it.

.gitignore — the one nobody mentions

A .gitignore is a list of files that never leave your machine. Your .env goes in it. If it doesn't, the day you back your project up online, you've just published every key you own. This is the beat worth slowing down on in the reel, and it's the reason the starter file below exists.

.py — Python

Anything ending .py is Python: a script. The reason that matters is a script does the exact same thing every single time. Ask Claude to do a job by hand and you'll get it slightly different each time. Get it to write you a script, and it runs identically forever.

GitHub

GitHub is where your project gets backed up, privately or publicly, your choice. But it's not really storage, it's history. Every version you've ever had is saved, so when something breaks, you go back to the one that worked. Code goes on there. Secrets don't — that's what the .gitignore above is for.

The rest of the glossary

The reel only had time for six. Here's the other five.

.claude/

The folder where your slash commands, skills and agents live: commands/ for things like /commit or /content, skills/ for instructions Claude loads automatically when the job matches, agents/ for custom subagents, and settings.json for configuration. This whole series is built out of files in this folder.

README.md

What the project is, written for humans. Same Markdown as CLAUDE.md, different audience: CLAUDE.md briefs Claude, README.md briefs whoever else ever opens the project, including you in six months when you've forgotten why you built it.

.mcp.json

Where your connectors are configured when you're adding one directly inside Claude Code, rather than through claude.ai. It relates to the connectors you set up on claude.ai in Day 8 — those are visible to Claude Code too, and a local server you add with claude mcp add can be scoped and shared through this file so it stays with the project instead of just your machine.

requirements.txt and package.json

The shopping list. requirements.txt is Python's version, package.json is Node's: both just list which external tools and libraries a project needs, so anyone (or any Claude) setting it up fresh knows what to install.

.venv and node_modules/

The downloaded libraries themselves, once installed from the shopping list above. Large, regenerable, and never worth backing up. Both go in your .gitignore alongside .env — that's the second reason the starter file below exists.

A starter .gitignore

Copy this into a new project before you do anything else. It covers the usual mistakes: your secrets, and the two big folders nobody means to upload.

.gitignore
.env
.env.local
node_modules/
.venv/
__pycache__/
*.pyc
.claude/settings.local.json
.DS_Store
*.log

Where this goes

Six files, and Claude Code stops looking like somebody else's computer. Layer 2 wraps up with Day 12: asking your own data anything, in plain English.

Previous
Day 10: turning your data into a dashboard you can click
Next
Day 12: ask your own data anything in plain English
When you would rather not build it yourself

Book a free 30-minute AI assessment

Thirty minutes, no pitch. We work out which system would make the biggest difference in your business, and you leave with the answer whether you ever hire me or not.

Book the assessment