# CLAUDE.md — godosa-engine Shared engine library for Avalonia + Silk.NET games. Terse everywhere. Private notes (tasks, specs, catalog) are kept outside this repo; never add them here (see `.gitignore`). ## Rules - Lib knows no game: no game types, game names, env var names or settings classes. The game passes values in or implements a small interface (`IAudioMix`, key-target `Func`, env var name via `Configure`). - `Godosa.Core` = pure .NET, tested. `Godosa.Desktop` / `Godosa.Audio` / `Godosa.Gamepad` = Avalonia+GL, OpenAL, SDL glue. - `public` for anything a game uses. Warnings are errors. Package versions only in `Directory.Packages.props`, equal to the games' (Avalonia 12.1.2, all Silk.NET 2.23.0). - New tests mutation-checked: `scripts/mutate.sh` = KILLED. - Breaking API is allowed: the games adapt when they take the update. ## Build / test (≈ 10 s) `dotnet build Godosa.slnx` (0 warnings) · `dotnet test Godosa.slnx` · `python3 -m unittest discover -s scripts -p 'test_*.py'`. From a game: its solution includes the lib projects, so its `dotnet test` runs the lib tests too. ## Git - Branch `master`. Games use this repo as the submodule `lib/godosa-engine`. - Work in a git worktree on a branch (`.worktrees/`), not in the main tree; ff-merge to `master` when green. ## Where `src/Godosa.*` · `scripts/` · `docs/notes/`.