DevOps Peach

Claude Code in Practice · Getting started – From chat box to teammate · Lesson 3 of 4

CLAUDE.md: the rules we learned the hard way

Claude starts every session knowing nothing about your project. Our CLAUDE.md is 74 lines, and almost every line is there because something went wrong once.

Practice interactively →

Every session starts from zero. Claude does not remember that yesterday you asked it to reply in Vietnamese, or that the source/raw folder holds material that must never be copied. CLAUDE.md is the file it reads before your first message, every time. Think of it as the style guide you give a new writer before their first article: it does not make them more talented, it makes them right from the start.

What is in ours

The DevOps Peach CLAUDE.md has a few short sections. Paraphrased:

# DevOps Peach
Static learning site in site/index.html, content in content/<track>/.
Reply to the owner in Vietnamese. The site itself is English only.

## Never
- Copy from source/raw. Use placeholders: example.com, 192.0.2.x, changeme-example.
- Edit tools/preview/drafts.txt, docs/content-schema.md or .claude/.
- Commit or push unless asked. On the default branch, create a branch first.

## Before merge
- Graded content (quiz, commands, final) must pass the tech-reviewer agent.
- Run python3 tools/check_content.py <module-dir>, then build_site_data.py.

## Tracks
- Cert roadmap covers AWS, Azure, Kubernetes, Linux and AI only.
- Cert practice banks live in content/cert/<id>.md ...

Where each line came from

Line The mistake that created it
Reply in Vietnamese Long English answers the owner had to translate
Placeholders only A lab example once contained a real-looking IP
Never commit unless asked An early session committed half-finished work
Cert roadmap scope Google Cloud was added to the wrong list twice
tech-reviewer before merge A quiz shipped with two correct answers

That is the method: every time you correct Claude twice for the same thing, add one line.

Rules for a good CLAUDE.md

The reward is quiet: after a few weeks you stop repeating yourself, and new sessions behave like someone who has been on the team for a month.

Use case: The line that stopped a repeat mistake

The situation

The site has two certification lists: CERTS on the roadmap page and CP_PATHS on the cert-practice page. The owner decided both should cover AWS, Azure, Kubernetes, Linux and AI only. A week later a session asked to "add GCP everywhere" for the new GCP track put Google Cloud back into both lists. It happened again in another session.

Why it kept happening

Nothing in the repository said the scope was a decision. From the code, adding GCP to a list of clouds looked like an obvious improvement. Each new session made the same reasonable guess.

What we wrote

- The certification roadmap (CERTS in site/index.html and CP_PATHS) covers
  AWS, Azure, Kubernetes, Linux and AI only. Do not add Google Cloud or
  DevSecOps there. (Owner decision; GCP certs are linked from the GCP track page.)

Later the owner did want GCP on the roadmap page only. The line changed to say so, with the date. The decision lived in one place again.

Results

Before the line After
Sessions that re-added GCP 2 in one week 0
Time spent noticing and reverting ~15 min each none
Who knows the rule the owner every session and every teammate

What we took away

Practice interactively →