World of ClaudeCraft is a browser-based classic-style multiplayer online game with a persistent shared world that can also run locally or be controlled through a Python reinforcement-learning interface. Players can quest and raid in the online world, while developers can host it themselves and train AI agents to play. The catalogue skills, agents, instructions, hooks, and setting support workflows for interacting with and developing the game.
Borrowing it
Nothing to install: this file belongs to levy-street/world-of-claudecraft. Take a copy, put it at the same path in your own repository, and replace the rules that are about this project with yours.
curl -O https://raw.githubusercontent.com/levy-street/world-of-claudecraft/main/.claude/skills/image-to-glb/SKILL.mdgit clone --depth 1 https://github.com/levy-street/world-of-claudecraftWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/levy-street/world-of-claudecraft/image-to-glb)<a href="https://agentmods.dev/skills/levy-street/world-of-claudecraft/image-to-glb"><img src="https://agentmods.dev/badge/skills/levy-street/world-of-claudecraft/image-to-glb/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/levy-street/world-of-claudecraft/image-to-glb"><img src="https://agentmods.dev/badge/skills/levy-street/world-of-claudecraft/image-to-glb.svg" alt="Reviewed on agentmods" width="80" height="20"></a>- NVIDIA SkillSpector warn
SkillSpector: 3 findings, up to medium
These are SkillSpector’s own severities. On a checked sample its high-severity flags on skills were ~96% false positives — a documented command, a public API, a “never do X” rule — so we show them as a caution to read, not a verdict. Why →
- medium MCP Rug Pull · line 59 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 60 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
- medium MCP Rug Pull · line 76 npx commands without a version suffix (e.g. @1.0.0) create a rug-pull risk if the upstream server is compromised and publishes a malicious update.Fix: Pin the version: npx @scope/[email protected]
What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00099 | $0.01591 |
| Opus 5 | $0.00049 | $0.00796 |
| Sonnet 5 | $0.00020 | $0.00318 |
| Haiku 4.5 | $0.00010 | $0.00159 |
Grade A, and why
image-to-glb scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 13d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 95 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Image to shipping GLB
You are producing a stylized, game-ready, texture-free GLB from a reference image, the way
the banker chest, the Eastbrook Grand Armoury, the nine-building Eastbrook town kit, the
Ravenpost mailbox, and the noticeboard were produced. The deep runbook is
docs/image-to-glb-asset-workflow.md; this skill is the operating procedure. Read
scripts/assets/CLAUDE.md before touching the pipeline.
Scope check first: this path fits static, stylized world objects. Characters, deforming meshes, and animation-heavy content need rigging and a different performance contract; say so instead of forcing them through this pipeline.
Tooling
The img2threejs skill (version pinned by the runbook) drives the intake and review gates.
Claude Code sessions install it at ~/.claude/skills/img2threejs, Codex sessions at
~/.codex/skills/img2threejs (git clone https://github.com/hoainho/img2threejs into that
path). It is an authoring aid only, never a build dependency: the committed factory,
exporter, spec, tests, and optimized GLB stay the reproducible source of truth.
The pipeline, in order
- Admit the reference. Confirm rights and provenance before anything else. AI-generated
references record their full lineage (prompt, inputs, output hash, accept/reject
rationale) following
docs/design/eastbrook-vale-rebuild/imagegen-prompts.mdandimagegen-provenance.md; every shipped asset gets aCREDITS.mdrow. Run the img2threejs admission gates (check_reference_admission.py, pre-spec assessment, detail inventory) and keep transient intake artifacts undertmp/. - Lock budgets before building. Pick triangle target and hard ceiling, byte ceiling, primitive/material counts, and dimensions, and write them down. Exemplars: banker chest 2,048 tri / 4 mats / 44 KB; noticeboard 1,184 tri / 2 mats / 25 KB; mailbox 1,640 tri / 2 mats / 33 KB; town service building 2,300 to 4,400 tri / 2 mats / 40 to 68 KB; Grand Armoury (sole major landmark) 8,226 tri / 6 mats / 137 KB.
- Author the sculpt spec through the img2threejs strict gates (
new_sculpt_spec.py,validate_sculpt_spec.py --strict-quality). Name the identity-critical systems; map every inventoried detail to a component or material entry. - Build a purpose-built procedural factory (
scripts/assets/<asset>/model.js): named semantic systems merged into 2 to 6 material buckets, vertex colors instead of embedded textures (the shared Eastbrook atlas adds mid-frequency grain at runtime), floor-seated at Y=0, centered on X/Z, +Z front, stable mesh names,Socket_*nodes anduserData.sculptRuntimecontract metadata. Treat generated scaffolds as candidates: the banker chest shipped only after the generic scaffold was replaced by a purpose-built factory. Reusescripts/assets/eastbrook_town/shared.jshelpers where they fit instead of copying them. - Export and optimize deterministically. Copy the exporter archetype
(
export_<asset>.mjs+export_entry.js+source_fingerprint.mjs+ ascripts/assets/specs/<asset>.jsonspec withkeepExtras: true). The exporter writes the raw GLB totmp/asset_src/, stamps the source fingerprint, spawnsscripts/assets/build_assets.mjs(resample, prune, dedup, meshopt) intopublic/models/props/, and verifies the full contract. Use--no-previewfor fingerprint-only rebuilds and--verify-stagedto prove staged bytes. Then refresh the media manifest:node scripts/build_media_manifest.mjs generate. - Validate from multiple angles, raw AND shipped:
npx gltf-transform inspect,npx gltf-transform validate,node scripts/asset_pipeline/pipeline.mjs preview --file <glb> --out tmp/<asset>_preview. Compare beside the reference at the img2threejs 0.70 per-critical-feature threshold; a global average never excuses a failed identity feature. Reject cardboard: silhouette must hold from front, side, three-quarter, and grazing views. - Pin the contract in a test. Parse the shipped GLB and pin bytes, sha256, triangles,
primitives, materials, COLOR_0, zero textures/animations/skins, meshopt present, bounds
floor-seated and centered, and live source-fingerprint equality (pattern:
tests/eastbrook_mailbox_asset.test.ts,tests/render_glb_replacement_assets.test.ts). - Integrate behind a render module (
src/render/<asset>.ts), never inline inrenderer.ts: register the preload, clone only transforms from one template, convert materials throughsurfaceMat(Standard and Lambert tiers), respect click targets, terrain seating, collision footprints, and the entity shadow gate. Sim-side placement and collision go through the authored layout/content records, never renderer constants. - Prove it in game and gate. Capture matched desktop Ultra and mobile Low evidence
with the committed capture helper, run the focused asset tests plus
npx tsc --noEmit, thennpm run gate, and report the exact asset byte/triangle delta (node scripts/asset_budget.mjs --jsonstays red on pre-existing aggregate overages; never claim it passed).
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 13d ago First seen · 95 lines · 99 tokens per session scan A cb5b4b65b128
image-to-glb is a skill published in the GitHub repository levy-street/world-of-claudecraft (2,251 stars, last pushed yesterday), licensed MIT. It adds 99 tokens to every session and 1,591 once invoked, about $0.0005 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
gameobject-component-destroy
Destroy one or more Components from a target GameObject. Missing (null) components are skipped — they cannot be destroyed. Use 'gameobject-find' and 'gameobject-component-get' to identify the components first.
unity-version-split
Split a C# file into Unity 6.5+ and pre-Unity 6.5 variants. Use when a file needs different implementations for different Unity versions due to API changes (e.g., EntityId vs int, GetEntityId vs GetInstanceID).
godot-signals-groups
Build event-driven, decoupled Godot 4.7 gameplay with signals and node groups: declare and emit custom signals, connect with Callables (incl. bind/one-shot), and broadcast to many nodes via groups and callgroup. Use when wiring node communication in a Godot project, replacing tight references with signals…
motion
How an agent turns a character mesh into a usable animated FBX — and how to judge whether the result is shippable.
unity-addressables
Manage Addressables groups, entries, profiles and content builds (com.unity.addressables, reflection-based).
threejs-exposure-color-grading
Build a measured exposure and grading path in Three.js. Use for a 64x36 encoded luminance meter, asynchronous readback, weighted log-average exposure, asymmetric adaptation, single tone-map ownership, and a generated 32-cube post-tone-map LUT.