diff --git a/CLAUDE.md b/CLAUDE.md
new file mode 100644
index 0000000..13dd7c3
--- /dev/null
+++ b/CLAUDE.md
@@ -0,0 +1,44 @@
+# Working on Amber Compare & Export
+
+A browser-only tool for Australian electricity bills (Amber Electric vs other plans, bill checks, a solar and battery planner). Read these first:
+
+- [README.md](README.md): what the app does, for users
+- [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md): modules, data model, each tab's flow, the planner engine, storage, releases
+- [docs/FRONTEND.md](docs/FRONTEND.md): the UI contract (IDs, data attributes, help keys, CSP) and known UI issues
+- [docs/REVIEW.md](docs/REVIEW.md): invariants, risk areas, technical debt, test map
+
+## Commands
+
+```bash
+npm install
+npm run build:css # after changing any Tailwind class in index.html or js/; commit css/app.css
+npm run test:unit # Node unit checks (fast)
+npm test # unit checks + Playwright (starts scripts/static-server.js on :4173)
+npx playwright test tests/planner.spec.js --workers=2 # one spec
+npm run serve # http://127.0.0.1:4173
+```
+
+If Playwright can't find its browser, point it at an installed Chromium with `launchOptions.executablePath` in a local config, not by editing `playwright.config.js`. Don't leave your own server running on port 4173 during a test run: Playwright reuses it.
+
+## Rules of the codebase
+
+- **No build step for JS, no framework, no ES modules.** Each `js/*.js` is an IIFE adding to `window.Amber`; the load order in `index.html` matters (`app.js` is last). New files need a `
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+