# CLAUDE.md - this project

Project instructions for Claude Code.

## Project

A Godot 4 (GDScript) project.

Stack: Godot 4 (GDScript).

## Commands

- Run project: `godot --path .`
- Headless import/check: `godot --headless --path . --import`

## How to work in this repo

- Read the relevant files before editing. Follow the patterns already in the codebase over these generic rules.
- Make the smallest change that solves the task. Do not refactor or reformat unrelated code.
- Before saying a task is done, run the type-check, lint and tests listed under Commands and fix what you broke.
- If requirements are ambiguous, ask one clear question instead of guessing.
- Never commit secrets, API keys or `.env` files. Use env vars and keep `.env.example` up to date.
- Do not add a new dependency when the standard library or an existing dependency already covers it.
- Ask before adding, removing or upgrading any dependency.
- Ask before changing database schemas, auth, payments or CI configuration.
- Never delete files, drop data or run destructive commands (`rm -rf`, `git push --force`, `DROP TABLE`) without explicit approval.
- Keep each change under ~200 changed lines where possible; split larger work into steps.

## Godot 4 (GDScript)

- Use Godot 4 GDScript syntax (`@export`, `@onready`, `signal`, `super()`). No Godot 3 syntax such as `export var` or `yield`.
- Use static typing everywhere: `var speed: float = 200.0`, typed function signatures and return types.
- Prefer composition: small scenes with one responsibility, combined in the scene tree.
- Communicate upward with signals and downward with method calls ("call down, signal up").
- Physics and movement go in `_physics_process(delta)`; visuals in `_process(delta)`.
- Reference child nodes with `@onready var x: Type = $Path` or `%UniqueName`, not repeated `get_node()` calls.
- Avoid hand-editing `.tscn` / `.tres` files beyond trivial changes; describe Editor steps to the user instead.

## Reference docs

- [Godot docs](https://docs.godotengine.org/en/stable/)
