This repository is a generator (bootstrapper), not a Valheim mod project. It produces standalone Valheim mod-suite repositories from template/.
When work concerns the structure, behavior, or context of generated projects, start at template/AGENTS.md and follow its routing.
bootstrap/: generator code (model.py,naming.py,render.py,validate_generated.py,create_project.py). Pure Python, stdlib only.template/: the complete standalone project template rendered into every generated project.tests/bootstrap/,tests/template/,tests/fixtures/: generator unit tests, template structural tests, generated-fixture tests.scripts/create-project.sh,scripts/validate-template.sh: bootstrapper entry points.docs/GENERATOR_ARCHITECTURE.md,docs/TEMPLATE_MAINTENANCE.md: bootstrapper documentation.
template/must remain a complete, standalone project tree. It must never depend on files outside itself and must never importbootstrap/Python modules.- Never repository-wide string-replace project identity. All identity substitution flows through the token vocabulary documented in
docs/TEMPLATE_MAINTENANCE.md, applied bybootstrap/render.py. suite.config.jsonand<RootNamespace>.slnare generated programmatically from the model (bootstrap/model.py), not templated static files; never add them undertemplate/.- Adding a token requires updating
bootstrap/model.py'stoken_map, the template files that use it,bootstrap/render.py'sKNOWN_TOKENS, anddocs/TEMPLATE_MAINTENANCE.md. bootstrap/naming.py's regex constants andtemplate/scripts/suite_metadata.py's own copies must stay in agreement; update both together (the generated project cannot import the bootstrapper).- Never commit a generated project's
Environment.props,.valheim/dev.json, game assemblies, or credentials. Test fixtures must render under system temp directories, never under this repo tree. - Run
scripts/validate-template.shafter anytemplate/change. - Do not create generic planner/reviewer/scout/worker agents for this project; use native harness capabilities.
- Keep changes minimal and scoped. Do not add a templating dependency (Jinja2 etc.) — the dependency-free token substitution in
render.pyis deliberate. - Do not implement Vibeheim (or any generated project's) gameplay features from this repository.
template/must stay a generic framework; feature-specific work belongs inside the generated project. - Prefer targeted and adjacent tests during iteration. Run the full suite once before completing broad or cross-cutting changes when warranted. Do not repeatedly run the full suite for narrow changes.