# Contributing

Thanks for looking at the project. A few conventions keep the monorepo tidy.

## Setup

```bash
pnpm install
pnpm typecheck
pnpm test
```

## Packages

| Package | Responsibility |
| --- | --- |
| `client` | Game runtime (must stay free of Node-only APIs) |
| `server` | Auth, lobbies, signalling |
| `shared` | Types and schemas used by both ends |
| `tools` | Character pipeline (Node only) |

Put new gameplay types in `shared` before wiring them into client/server.

## Style

- TypeScript strict; no `any` without a comment why.
- Prefer small declarative room / item / cast data over one-off engine forks.
- Keep PSX constraints intentional: low poly, fixed cams, fog, nearest textures.

## Pull requests

1. One concern per PR when possible.
2. `pnpm typecheck && pnpm test` green.
3. Update `README.md` / `GDD.md` when behaviour or demo layout changes.

## Character assets

Prefer `pnpm cast` / the creator UI over hand-editing GLBs. Ship
`assets/characters/{id}.glb` plus `.recipe.json` (and albedo if textured).
Do not commit `.grok-texture-cache` or `*.analysis.json`.
