analyzelisted
Install: claude install-skill oldmilky/luno-for-cc
Write `.claude/project-map.md`: what lives where, what talks to what, and where
the load-bearing pieces are. Optional `$ARGUMENTS` narrows the refresh to one
area instead of the whole tree.
The map is **not auto-loaded** — `CLAUDE.md` is. This is the file an agent reads
on demand before working somewhere it has not been, which is why it must be
short enough to actually read and honest about size.
## What to gather
Measure, do not recall:
```bash
git ls-files -- src webview/src | xargs wc -l | sort -rn | head -20
git ls-files -- src webview/src | wc -l
```
- **Both halves.** `src/` is the extension host, `webview/src/` is the React
app. They are separate builds joined by `postMessage`, and that seam is the
single most important thing on the map.
- **The protocol.** Enumerate the message union in `webview/src/lib/rpc.ts` by
area — chat, permissions, plan, skills, MCP, checkpoints — with a count each,
both directions. A reader wants to know the shape, not all hundred names.
Then say **what enforces it**: `HandlerTable` in `src/ui/messages.ts` makes a
missing handler a compile error, and `test/unit/protocol-contract.test.ts`
fails when the two declarations drift. That answer changes over time and is
the most useful sentence on the map — check it, do not copy it forward.
- **Entry points.** `extension.ts`, `panel.ts`, `main.tsx`, and what each owns.
- **The pure core.** `src/core/*` imports no VS Code API and is unit-tested in
isolation — say so, because it