Repository navigation
Static Checks
minewright-checks checks a Bedrock add-on without the game before the agent says a change is done. Its outcome: a change is reported done only with a passing mw_check.py report, or with the failing checks named and fixed, and each claim in the reply points at a check that ran.
Files: skills/minewright-checks/SKILL.md, scripts/mw_check.py (standard-library Python 3.9+) and scripts/mw_mct.py. Tier moderate. The script's options and real output on the example add-on are on Checks and the BDS harness.
- Builds the TypeScript first, or the manifest check fails on a missing script entry.
- Runs
python <skill>/scripts/mw_check.py <project>from any folder. - Reads the JSON, fixes what failed, and runs it again until
okis true. - Quotes the summary (pass, fail and skip counts) in the reply. A skip is not a pass: the reply says which checks were skipped and why.
| Check | Catches | Notes |
|---|---|---|
json |
a file the game would refuse to load |
// and /* */ comments are stripped first, as Bedrock tolerates them; trailing commas are still an error |
manifest |
format_version not 2, bad or duplicate UUIDs, version arrays, missing min_engine_version, an unknown module type, a missing script entry, a pack depending on itself |
warns on a -beta module and on a pack dependency that is not in the project |
identifiers |
an entity with no client entity (invisible in game), a texture path with no .png or .tga, a geometry id no model defines, a render controller that does not exist |
warns when more than one namespace is used, or a namespace has dots or capitals |
components |
a behavior entity using a component its format_version no longer accepts (minecraft:pushable from 1.26.10) |
the whole entity then fails to load, silently in the game |
typescript |
type errors | npx --no-install tsc --noEmit |
lint |
ESLint findings | when an eslint.config.* or .eslintrc* exists |
mct |
Creator Tools' rule set | opt-in: --mct, --mct-npx or --mct-bin PATH
|
test |
unit test failures |
npm test, when package.json has a real test script |
Node tools run with npx --no-install from the project folder, so nothing is downloaded. A tool that is not installed becomes a skip with its reason (node_modules missing; run npm ci (or npm install) first).
Mojang's validator (@minecraft/creator-tools, Node 22+) runs only when asked:
-
--mctusesmctfrom the project'snode_modulesor from PATH; -
--mct-npxrunsnpx -y @minecraft/creator-tools@0.20.0, which downloads about 160 MB once, so the skill asks first; -
--mct-bin PATHnames the executable.
The script copies only the pack folders into a temporary behavior_packs/ and resource_packs/ layout and validates that. Run on a project folder, mct reports art, workflows and configs as errors. Three known false positives of 0.20.0 go to a separate noise list: "uv_anim is missing" on render controllers, FORMATVER asking client entities for 1.26.50, and UNLINK on vanilla textures in UI files.
The README records that the example passes all eight checks with --mct-npx. This wiki did not re-run Creator Tools: the run on Checks and the BDS harness shows mct as a skip.
The skill climbs only as far as the change needs, and says which rung it reached:
- Static:
mw_check.py, for any pack or script change. - Unit tests of the pure core with
node --test. - Creator Tools validation (
--mct), before a release. - A real server:
bds_run.pyloads the packs on Bedrock Dedicated Server and runs the self-test (Live server tests). A wrong module version or a runtime error shows up here and nowhere earlier. - A human playtest in the game. The reply says when one is still owed.
- A clean static check does not prove the scripts load. The example's unbuilt run on Checks and the BDS harness shows the difference:
mw_check.pyfails on the missing entry, and the server saysdoes not contain main file [main.js]. - An entity with no client entity spawns invisible, with no error in the game.
- Texture paths in client entities have no extension and are relative to the resource pack root.
- Vanilla render controllers (
controller.render.default) are not in the project; the check allows the common ones and warns on others. - Texture paths that scripts send to the HUD are invisible to every check here. The example pins them with a unit test against a saved list from
item_texture.json(HUD and UI).
This wiki describes minewright 0.1.0 (no release tag yet) and was last updated on 2026-10-27. The plugin is MIT licensed. Report problems in the issues.
Using it
The skills
How it stays current
Contributing
Elsewhere