SkinAtlas, part 3: memory that survives the session
Every Claude Code session starts empty. For a project moving as fast as SkinAtlas, that’s the central engineering problem: by day ten, no session can know about the RGBA bug, the dedup incident, or the decision never to scrape that one website — unless memory is built as infrastructure.
The memory directory
SkinAtlas keeps a .claude/memory/ directory in the repo: one markdown file
per durable fact, plus an index. Dated “shipped” notes act as changelogs.
Decision files record standing policy with the reasoning attached. Feedback
files record corrections I’ve made so they stick. A git pre-commit hook syncs
the local session memory into the repo before every commit, so memory travels
with the code to every machine and every future session, not stranded on the
laptop that learned the lesson.
My favorite example is the RGBA compositing bug. Pillow’s convert("RGB")
silently fills transparent pixels with black, which shipped black-background
product images to production. The fix is one line. The reason it never
happened again is that the lesson exists in three places: a memory file, the
image-validation skill, and the main project instructions, with the correct
snippet inline. The bug’s obituary is the guardrail.
Skills as standard operating procedure
The project has six first-party skills — ingest a product, run a mass extraction, research unknown ingredients, scrape, validate images, verify catalog ingredients. Each reads like an SOP written by someone who got burned: here’s the routing table by retailer domain, here’s the dedup guardrail, here’s what to do when the search comes back empty, here’s the measured error rate that justifies this much verification. New sessions don’t rediscover the workflow; they follow it, and when they hit something new, the skill gets a new paragraph.
Parallel sessions without collisions
Heavier work runs in git worktrees — parallel checkouts where separate agent sessions do image verification or batch ingestion without stepping on the main working copy or each other. At one point there were eight active. Combined with the progress-file pipeline from part 2, the project can have one session drafting a feature while two others grind through catalog batches, each resumable independently.
None of this is exotic. It’s a plain directory of markdown, a shell hook, and a branching feature git has had for years. The shift is treating the AI’s working knowledge as a first-class project artifact — reviewed, versioned, and debugged like everything else. Out of all five projects, this is the pattern I’d tell you to steal.