| name | claude-of-tanks-skill |
| description | Build and verify Claude of Tanks without crossing simulation, rendering, fleet-generation, or shared-worktree ownership boundaries. |
claude-of-tanks — working here
Purpose
Ship the browser game while preserving deterministic combat, first-party tank
fidelity, smooth low-end performance, and reproducible visual/test evidence.
Mental model & key files
src/main.js composes engine/world/vehicles/UI. src/game/state.js owns legacy
battle integration; src/sim/ owns gameplay math; src/net/ is the new
transport-independent multiplayer authority; tools/ contains performance,
fleet, screenshot, and release gates. Start with docs/ARCHITECTURE.md and the
nearest directory SKILL.md.
Patterns to follow / invariants
- Work from the current remote safe boundary in an isolated worktree when the
shared checkout is dirty or another tank-generation task is active.
- Preserve fixed-step semantics and seeded randomness.
- Keep rendering/presentation out of headless simulation and network modules.
- Make optional/high-cost features dynamically reachable, not boot-critical.
- Verify focused behavior first, then
npm test and the public build.
Common tasks → first action
- Runtime flow: trace
src/main.js plus src/game/state.js exports.
- Physics/combat: read
src/sim/SKILL.md, then its existing selftests.
- UI: read
src/ui/SKILL.md and inspect the rendered browser surface.
- Multiplayer: read
docs/MULTIPLAYER-ARCHITECTURE.md and src/net/SKILL.md.
- Tank fidelity/assets: read
src/vehicles/SKILL.md and current program state.
- Performance: capture a baseline with the committed probes before editing.
Gotchas
The root checkout is frequently mixed dirty and may lag hundreds of tank
commits. Do not pull, reset, clean, or blanket-stage it. Public builds strip
quarantined assets; both a green build and runtime provenance checks matter.