Skip to main content
GDT
SkillFreeBy GameSkillGameSkill original

GLB to Godot Acceptance (is this model really done?)

/glb-godot-acceptance

A GameSkill original that decides whether a 3D model is ready for a game: Godot 4 imports the GLB like any file in the project, then checks import errors, triangle budget, size in metres with Y up, origin at the base, materials, colliders, the clips the code plays, a drop test on a floor and runtime errors, with a fix for every failure. Works on any GLB from Blender or an image-to-3D model.

License
MIT
By
By GameSkill
Download ZIP

Tested by GameSkill

36/36 checks passed on Godot 4.7.2 (glTF import, physics) + Blender 5.2.3 LTS (background) (2026-11-03): trigger, a runnable example, a screenshot and self-check, one job per skill, and English + Chinese docs. Trigger checks match prompts against skill descriptions; they are not a live agent run.

Test report

GameSkill's tested copy

Written and tested by GameSkill for gameskill.dev. The ZIP holds the whole skill: SKILL.md and its Chinese version, scripts, a runnable example, tests, the self-check list and our test report.

Download tested ZIP (105 KB)Roadmap: Engine basics

A GameSkill original, released under MIT. The ZIP keeps LICENSE and CREDITS.md, which lists the workflow inspiration, the CC0 test assets and the third-party libraries with their licenses.

GLB to Godot Acceptance (is this model really done?)

Self-check

  • 导出前问清尺寸(米)、面数预算、动画名和是不是物理物体 / Before export, ask for the size in metres, the triangle budget, the clip names and whether it is a physics object
  • accept.py 打印 ACCEPTED,退出码 0 / accept.py prints ACCEPTED and exits 0
  • 尺寸差不超过 5%,最低点在 y = 0 / Size within 5% and the lowest point at y = 0
  • 碰撞体来自文件本身,不是 --collider auto / Colliders come from the file, not from --collider auto
  • 代码要播的每个动画名都在 / Every clip name the code plays is there
  • 看过 --shot 渲染图 / The --shot render was looked at

Install

Tell your AI

Install the skill from https://gameskill.dev/skills/glb-godot-acceptance/install.md

GameSkill's tested copy

Tested copy into .claude/skills/
mkdir -p .claude/skills
curl -fsSL https://gameskill.dev/dl/skills/glb-godot-acceptance.zip -o /tmp/gameskill-glb-godot-acceptance.zip
unzip -oq /tmp/gameskill-glb-godot-acceptance.zip -d .claude/skills
rm /tmp/gameskill-glb-godot-acceptance.zip

What you get

  • tools/accept.py: one command that imports a GLB into a throwaway Godot project and prints PASS / FAIL with a fix for each failure (exit 0, 1 or 2; --json, --report)
  • tools/accept.gd: the 10 Godot checks, from triangle budget and size to a 120-frame drop test
  • tools/shot.gd: a render of the model as imported and at the end of a clip, colliders tinted
  • Moss mailbox example (164 triangles, open clip, convex collider proxies) and a broken copy with the usual mistakes
  • 24 checks in test/run_tests.py, run against Godot 4.7.2 and Blender 5.2.3

Good fit

  • Checking a model from Blender, an AI 3D generator or an asset store before it goes into a Godot level
  • Models that arrive 100 times too big, floating, sinking, without collisions or without their animation
  • Giving an agent a clear definition of done for 3D assets

Not for

  • Judging how good a model looks: look at the render as well
  • Making, decimating or rigging the model: use the Blender and art skills
  • Unity or Unreal imports: the checks are Godot's

Try this prompt

Prompt
I exported a mailbox prop from Blender as GLB. Check it is ready for my Godot game: about 1.4 m tall, under 3,000 triangles, with colliders and an open animation.

About this skill

A GameSkill original. A model is not done when its render looks good; it is done when the game can use it. tools/accept.py builds a throwaway Godot 4 project, imports the GLB the way a game would, and checks it: import errors, triangle budget, size in metres with Y up, origin at the base, materials, colliders from the file, the clips the code plays, a 120-frame drop test on a floor and runtime errors. Every failure comes with a fix. Exit codes (0 accepted, 1 failed, 2 could not run) and --json make it a gate an agent can run after each export.

Agent steps

  1. Ask what the game expects: size in metres, triangle budget, clip names, static or physics object.
  2. Export from Blender as glTF 2.0 Binary with scale applied, the origin at the base, collider proxies named -convcolonly or -colonly, and clips named as the code calls them.
  3. Run accept.py, read each FAIL and its fix, change the source file, and run it again until it prints ACCEPTED.
  4. Report the size, triangle count and clips from the report, and look at the --shot render.

Common errors it catches

  • A model 100 times too big because it was made in centimetres, or one that floats or sinks because its origin is in the middle.
  • No colliders, or a clip still called Action.001 or NlaTrack when the code plays open.
  • An AI-generated mesh far over budget, a texture that was not packed into the GLB, and props that tip over on a floor.

Credits

The idea that a 3D asset is only done when Godot can play it comes from posts by @bykushnir and @Marlenuii (links only; no code or text was used). The code, the moss mailbox example and the text are ours.

Requirements

  • Godot 4.2+ (tested on 4.7.2), run headless; set GODOT if it is not on PATH
  • Python 3 standard library; no add-ons or packages
  • Blender 4.2+ only to rebuild the example (tested on 5.2.3)

Topics

FAQ

Based on Blender -> GLB -> Godot acceptance (post, idea only) by @bykushnir (no licence, idea only, no code or text used). Ideas only: GameSkill wrote the code and text; CREDITS.md in the ZIP lists every source. · Based on Your AI 3D demo isn't done until Godot can play it (post, idea only) by @Marlenuii (no licence, idea only, no code or text used). Ideas only: GameSkill wrote the code and text; CREDITS.md in the ZIP lists every source.

Works well with

Skills the author points to as related or as the better fit for neighbouring tasks.

Similar skills

ForgeSkills
B3D
Starter kit
By GameSkill

ForgeSkills

28 gated game-development agent skills (concept, orchestration, verification, Blender headless, reference reconstruction, textures, animation, VFX, lighting, foliage, Godot pipeline) plus Python tools that measure the result. GameSkill hosts the 27 we ran, with the tools. Apache-2.0.

BlenderGodotEngine-agnosticClaude Code · Cursor +1
Style Cards
B3D
Skill
By GameSkill

Style Cards (one art style as hard limits, switch looks by switching cards)

A GameSkill original that writes a game's art style down as a card of measurable limits (canvas, colours and palette, alpha, triangles, shading, materials, textures, voxel grid), pastes it into every asset request and checks every asset against it. Ships 12 cards from pixel and one-bit to low-poly, voxel and toon, a no-dependency PNG checker, a Blender GLB checker and a palette locker; switch the whole look by switching the card.

Engine-agnosticBlenderGodotClaude Code · Codex +2
3AGameFactory
UE5
Starter kit
956

3AGameFactory (GameFactory-3A)

An Apache-2.0 framework of agent skills and pipelines that turns a game requirement into assets (image, 3D, motion, audio, CG video) and engine-ready code for UE5, Blender, Unity, Godot 4 and three.js.

UnrealUnityGodotClaude Code · Codex +1
Image to 3D Hero
WEB
Skill
By GameSkill

Image to 3D Hero (one picture to a playable rigged GLB, free open-source route, three.js WASD)

A GameSkill original that takes one character image to a third-person hero you can walk with WASD, using free tools only: TripoSR or TRELLIS.2 for the mesh, UniRig or Blender for the rig, Quaternius CC0 clips, then a headless Blender fix step and a GLB check for scale, feet, facing and clip names. Meshy, Tripo and Mixamo are listed as alternatives only. Tested on Bram, a made-up stand-in hero.

Web (Phaser / Three.js)BlenderGodotClaude Code · Codex +2