Godot Content Graph Doctor
godot-content-graph-doctor validates data-driven content used by Godot
projects. It is useful when items, recipes, quests, dialogue, enemies, levels,
or content packs live in JSON, CSV, or TOML files.
It does not need the Godot editor. It reads content files, checks ids and references, and produces reports that work locally or in CI.
Every configured collection is required. Missing, unreadable, malformed, or unsupported inputs are reported as errors so incomplete content cannot appear healthy.
Install
python -m pip install godot-content-graph-doctor
From a source checkout:
python -m pip install -e .\godot-content-graph-doctor
Quick Start
godot-content-graph examples\tiny-content-project --config content-graph.toml
Use a built-in preset when the project follows common data folder names:
godot-content-graph path\to\godot-project --preset recipes
godot-content-graph path\to\godot-project --preset quests --preset dialogue --format markdown
See available presets:
godot-content-graph . --list-presets
Write machine-readable output:
godot-content-graph examples\tiny-content-project --config content-graph.toml --format json --output reports\content-graph.json
Create a Mermaid graph:
godot-content-graph examples\tiny-content-project --config content-graph.toml --format mermaid --fail-on none
Show the collections touched by changed files and any downstream collections that reference them:
godot-content-graph path\to\godot-project --preset recipes --changed-file data/items.json --format markdown
Config Example
Presets are useful for quick starts. A config file is still best when a project uses custom paths, field names, or references. Config collections with the same name as a preset collection override the preset.
[collections.items]
path = "data/items.json"
id = "id"
roots = ["copper_ore"]
warn_unused = true
numeric_fields = ["value"]
[collections.recipes]
path = "data/recipes.json"
id = "id"
numeric_fields = ["craft_time"]
[[collections.recipes.references]]
field = "inputs[].item"
collection = "items"
[[collections.recipes.references]]
field = "outputs[].item"
collection = "items"
Each collection points to one file. JSON may be a list of objects or an object
containing items, data, rows, or a key matching the collection name. CSV
uses the header row. TOML uses items, data, rows, or the collection name.
Reference fields support simple dotted paths and list traversal with [], such
as inputs[].item.
Built-In Presets
items:data/items.jsonwith common value, price, and weight summaries.recipes:data/items.jsonplusdata/recipes.jsoninput/output item references.quests: quest prerequisites and optional item rewards.dialogue: dialogue speaker and next-node references.levels: level references to item and enemy catalogs.content-pack: overlay item packs undermods/content_pack/items.json.
Checks
- missing or duplicate ids;
- references to ids that do not exist in the target collection;
- unused ids when
warn_unused = true; - numeric field summaries and transparent outlier warnings.
Outputs
text: local terminal report.json: CI and scripts.markdown: PR comments and release notes.mermaid: graph of configured collection references.
JSON, text, and Markdown reports include report metadata, plain-language rule
titles, and suggested fixes. JSON reports also include a rules object with
the rule explanations used by the current report.
Changed-file impact reports are included in text, json, and markdown
output when --changed-file or --changed-files is provided.
Exit Codes
0: no findings at the selected threshold.1: findings met the selected threshold.2: CLI usage error.
Metadata
Release files for godot-content-graph-doctor 0.1.4
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| godot_content_graph_doctor-0.1.4.tar.gz | 15.2 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| godot_content_graph_doctor-0.1.4-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 30.5 kB
Release files / godot_content_graph_doctor-0.1.4.tar.gz
| Download URL | godot_content_graph_doctor-0.1.4.tar.gz |
|---|---|
| Size | 15.2 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
7208f92c08709f9c4e3a81a4bd598b8d5cfaf9d0dc17877a4034f75268bb8178
|
|
BLAKE2b-256 checksum How to use checksums |
b1d6ced7ef433c6c9aad8196660af65bdfb29cf95d9fb0c41f7876986a37f403
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 10, 2026.
Transparency logRelease files / godot_content_graph_doctor-0.1.4-py3-none-any.whl
| Download URL | godot_content_graph_doctor-0.1.4-py3-none-any.whl |
|---|---|
| Size | 15.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b531ca8b912009136e46a1038f2634366becd826da88ccce30a45274ec688060
|
|
BLAKE2b-256 checksum How to use checksums |
4b06b8a2418dae41655b966447f2e743c3b04bc1ec8eef2646d83ea385f7a2d7
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/6.1.0 CPython/3.13.13
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Jul 10, 2026.
Transparency log