gfroy.com

CLAUDE.md, skills and MCP servers

TL;DR

Keep CLAUDE.md as close to empty as you can. Add a line only when Claude keeps missing something. Instructions for one kind of task go in a skill. Use an MCP server only when a script or CLI can’t do the job.

How it works

Three ways to give Claude Code more than your code. They differ in what they cost in every conversation. Whatever is loaded up front is sent again with every request, so it costs Claude’s attention and your usage limits on every message, whether the task needs it or not.

My take

Gotchas

Example

A CLAUDE.md after a few months, with the one thing Claude kept missing:

- Before changing a REST endpoint, read `docs/api-guidelines.md`.

A skill, in .claude/skills/db-migration/SKILL.md:

---
name: db-migration
description: Use when adding or changing a Flyway migration.
---

- Never edit a migration that's already on main. Add a new one.
- Name it `V<yyyyMMddHHmm>__<what_it_does>.sql`.
- Make it safe to run while the previous version of the application is still running.