CLAUDE.md example
A CLAUDE.md sits in the root of a repository and tells a coding agent how this project works. The same shape works as AGENTS.md, which other tools read.
claude-md.md
# Project conventions
## What this is
A Next.js site with a client-side markdown viewer. Everything renders in the
browser: there is no API route and no server-side processing of user content.
## Commands
```bash
npm run dev # development server on port 3040
npm run build # production build
npm test # vitest
npm run lint # eslint
```
## Rules that are not obvious from the code
- Nothing a visitor supplies may be sent anywhere. If a change needs a server
round trip for user content, it is the wrong change.
- The site sets no cookies. The privacy page says so, so it has to stay true.
- `lib/markdown.ts` sanitizes untrusted input. `renderTrustedMarkdown` skips the
sanitizer and is only for content committed to this repository.
- Copy is written in British English, and never uses em dashes.
## Before you finish
1. `npm run lint` and `npm test` both clean.
2. Any page whose words changed has its `updated` date moved with them.
3. If you changed the palette, update `brand/README.md` in the same commit.
Project conventions
What this is
A Next.js site with a client-side markdown viewer. Everything renders in the browser: there is no API route and no server-side processing of user content.
Commands
npm run dev # development server on port 3040
npm run build # production build
npm test # vitest
npm run lint # eslint
Rules that are not obvious from the code
- Nothing a visitor supplies may be sent anywhere. If a change needs a server round trip for user content, it is the wrong change.
- The site sets no cookies. The privacy page says so, so it has to stay true.
lib/markdown.tssanitizes untrusted input.renderTrustedMarkdownskips the sanitizer and is only for content committed to this repository.- Copy is written in British English, and never uses em dashes.
Before you finish
npm run lintandnpm testboth clean.- Any page whose words changed has its
updateddate moved with them. - If you changed the palette, update
brand/README.mdin the same commit.