# <Product name> workspace

This folder holds <N> sibling repositories that together make <product>. It is not a git
repository itself. Each folder below is its own repo with its own remote. Sessions start
from this folder so that all of them are visible at once, with shared memory.

## Repositories

| Folder | Tech | Role |
|---|---|---|
| **backend** | <framework, database> | <what it does, in one line> |
| **web** | <framework> | <what it does> |
| **mobile** | <framework> | <what it does> |

Each repo has its own `CLAUDE.md` with detailed conventions. It loads automatically the first
time you read a file in that repo. Apply both this file and that one. Do not read a repo's
`CLAUDE.md` again once it is in context.

## How the pieces communicate

- **Web to backend:** <protocol>. Routes are defined in `<path>`. Auth is <method>.
- **Mobile to backend:** <same API or different>.
- **<Other link>:** <how, and where the handler lives>.

## Cross-repo change patterns

Most real features touch more than one repo. When making one of these changes, do all of it
in the same session:

- **Changing an API response shape:** backend controller, plus web or mobile (or both), so
  the contract cannot drift.
- **Adding a field to a record:** backend model, migration, write path, every read endpoint,
  and the frontend that shows it.
- **<Your own pattern>:** <every place it touches>.

## Git rules

- Do not commit, push or bump versions on your own. Stop after the edit and say it is ready.
  When I say "ship", run the command with `# ship-ok` appended. A hook enforces this.
- For any git operation, use `git -C <repo-folder> ...` and never rely on an earlier `cd`.
  Before any push, print the remote in the same command and check it.
- One commit per repo. Never try to commit across repos.
- Before staging, run `git status`. A changed file you did not edit belongs to another
  session: do not stage it. Stage files by name, never `git add -A`. Never `git stash`.

## Memory

Memory holds lessons that would otherwise be learned twice: a non-obvious trap, a decision
and its reason, a preference. Do not store status such as "feature built, not shipped yet".
It goes stale, and git history already records it.

## Working efficiently

- Read a file once. Do not re-read what is already in context.
- Run independent shell commands in one call.
- Edit existing files instead of rewriting them.

## What not to do

- <Something that looks reasonable and is wrong here, and why.>
- <A folder or system that must not be touched, and why.>
