d31d8af180
Slim root CLAUDE.md (90 lines) and add 7 nested CLAUDE.md files for progressive disclosure. Each nested file loads automatically when Claude reads files in that directory. Nested files: - game/ scenarios + NPC phrases (source-of-truth) - tools/ Python tooling (Runtime 3, TTS, MCP, dev CLI) - tests/ Python unittest patterns - specs/ contracts governance - frontend-scratch-v2/ React 19 + Blockly + Vite (legacy) - frontend-v3/ pnpm monorepo (production target) - desktop/ Electron Zacus Studio (macOS) Root CLAUDE.md gains a Where-to-Look table and pointer to nested guidance. ESP32_ZACUS submodule is intentionally not covered (separate repo with its own CI).
1.4 KiB
1.4 KiB
Game Content
Source-of-truth for scenarios, NPC dialogue, and prompts. Edits here propagate to firmware, frontends, and TTS pools.
Canonical Files
| File | Role |
|---|---|
scenarios/zacus_v2.yaml |
Master scenario (Runtime 3 IR source) |
scenarios/npc_phrases.yaml |
All Professor Zacus lines (FR), categorised |
prompts/ |
LLM prompt templates for hints/coherence |
Editing Rules
- IDs are foreign keys: changing
puzzle.idorzone.idbreaks audio + printables manifests, firmware bundles, and frontend tests. Sync cross-file when renaming. - Never edit
exports/or generated MD — regenerate viatools/scenario/export_md.py. - French dialogue only in
npc_phrases.yaml; full diacritics required. - New NPC phrase categories must be added to schema validator and
tools/tts/generate_npc_pool.py.
Validate Before Commit
python3 tools/scenario/validate_scenario.py scenarios/zacus_v2.yaml
python3 tools/scenario/compile_runtime3.py scenarios/zacus_v2.yaml
python3 tools/audio/validate_manifest.py ../audio/manifests/zacus_v2_audio.yaml
python3 tools/printables/validate_manifest.py ../printables/manifests/zacus_v2_printables.yaml
Anti-Patterns
- Editing generated outputs in
exports/instead of YAML source - Renaming IDs without grepping the repo for cross-references
- Adding NPC phrases without regenerating the MP3 pool
- Mixing French narrative with English code identifiers in YAML values