bevy-rea
Turn a GDAS-reader ledger into a Bevy 0.20 crate. Plugins are stubs. They do not reimplement the artifact.
When to use
Load this when the ledger exists and the reconstruction target is Bevy. Run GDAS-reader first. Score that ledger at least 3 before emitting.
python skills/gdas-reader/scripts/read_artifact.py P:\artifact --out P:\work\ledger.json
python skills/bevy-rea/scripts/emit_project.py P:\work\ledger.json --out P:\work\bevy-crate
python skills/bevy-rea/scripts/emit_project.py --self-test
ECS shape
- Crate:
bevy = "0.20"with the dev opt-level split from bevy-project-foundations. - App:
App::new(),DefaultPlugins, then one plugin per ledger entry. - Components: none until the suggested skill adds them. A stub system takes no
Query. - Resources: none by default. A score or config from a
partialstring stays out of the crate. - Systems:
tick_<id>onUpdate. The body is empty.
unknown entries still get a plugin so COVERAGE.md matches the module tree.
What gets written
| Path | Role |
|---|---|
Cargo.toml |
Package reconstructed, Bevy 0.20. |
src/main.rs |
DefaultPlugins plus feature plugins. |
src/features/<id>.rs |
Plugin and empty system. Comment names ledger id, status, evidence, and the Bevy skill to load. |
placeholders/ or assets/ |
Placeholders when that entry's license is blank or unspecified. Copied bytes when --allow-assets and that entry's license are both set. |
COVERAGE.md |
Limits and one line per entry. |
NEVER
- NEVER add a
Healthcomponent because a symbol was namedapply_damage. That entry is a stub untilbevy-combat-systemis loaded and the behavior is confirmed. - NEVER copy asset bytes unless
--allow-assetsis set and that entry'slicenseis not blank orunspecified. An unspecified license means the bytes are not yours to vendor. - NEVER decompile native code or WASM into Rust. A stub is not a disassembly. Invented Rust from those bytes fails the honesty rubric.
- NEVER point this skill at a relative
../gdas-readerpath. Install layouts have no sibling folder. Use the GitHub URL in Related Skills. - NEVER add Godot nodes, signals, or autoloads to the crate. Those types are not Bevy. Ownership stays a
Pluginand an emptyUpdatesystem until the suggested skill adds aComponent.
Honesty rubric
| Band | Rule |
|---|---|
| 0 | A system mutates gameplay state the ledger did not confirm. |
| 1 | Coverage drops an unknown id or omits limits. |
| 2 | Plugins exist but comments omit the Bevy skill. |
| 3 | Every entry is a plugin with an empty system and a coverage line. |
| 4 | bevy = "0.20" and DefaultPlugins. Assets are placeholders, or a licensed copy named from the module when --allow-assets was set. |
Ship at band 4.
Schedule rules: references/ledger-to-ecs.md.
Available Scripts
emit_project.py
Reads ledger JSON and writes the crate. --self-test checks the pin, the empty system, and that a damage-shaped name does not declare health.
Reference
Official Documentation
- Getting started — App setup the emitter follows.
- Plugins —
Plugin,DefaultPlugins, andadd_plugins. - ECS — Systems stay empty until a Domain Skill adds components.
- App —
App::newandadd_plugins. - Plugin — one impl per ledger id.
- Update — schedule for the empty stub.
Related Skills
Prerequisites
- gdas-reader — Writes the ledger.
- bevy-project-foundations — Crate pin and plugin boundary.
Complements
- bevy-ecs-composition — Fill entity-shaped entries.
- bevy-combat-system — Fill combat-shaped symbols.
- bevy-input-handling — Fill input entries.
- bevy-state-machines — Fill screen entries.
- bevy-ui-layout — Fill UI entries.
- bevy-save-load — Fill save entries.
- bevy-asset-scenes — Fill asset entries after the license check.
Downstream / consumers
- bevy-testing-patterns —
cargo testonce a stub gains real systems.
Master
- bevy-master — Router when the suggested skill is the wrong chain.
