world-of-claudecraft: Skill for Claude Code

.claude/skills/image-to-glb/SKILL.md

image-to-glb is a skill for Claude Code, Codex from levy-street/world-of-claudecraft. It costs 99 tokens per session (1,591 once invoked), scanned A, original, MIT.

A production workflow for turning a reference image into a texture-free GLB 3D model. GLB is a portable file format commonly used for 3D assets in games and web applications.

In plain words
What is it for?
Use it to create game-ready props, furniture, buildings, landmarks, stalls and other service objects from concept images. It does not cover characters, deforming meshes or animation-heavy assets.
Why use it?
It gives static, stylized world objects a defined process for checking the reference, exporting, optimizing and testing the final model.

Skill for Claude CodeCodex

Written for Claude Code and Codex: user-invocable in frontmatter, but also reads ~/.codex or $CODEX_HOME. Also seen: reads .claude/ paths; mentions CLAUDE.md; mentions Claude Code.

This is levy-street/world-of-claudecraft's own configuration. It tells Claude Code and Codex how to work on world-of-claudecraft itself, so it is not a mod to install elsewhere. Copy it as a starting point and replace the rules that are about this project. Everything world-of-claudecraft configures →

About the project

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.

levy-street/world-of-claudecraft · 2,251 stars · on GitHub · worldofclaudecraft.com

Reuse

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.

Copy the file
curl -O https://raw.githubusercontent.com/levy-street/world-of-claudecraft/main/.claude/skills/image-to-glb/SKILL.md
Clone the repo
git clone --depth 1 https://github.com/levy-street/world-of-claudecraft

Made for: Claude Code, Codex.

Wrote 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.

agentmods badge for image-to-glb

README.md
[![agentmods](https://agentmods.dev/badge/skills/levy-street/world-of-claudecraft/image-to-glb/github.svg)](https://agentmods.dev/skills/levy-street/world-of-claudecraft/image-to-glb)
Your own site
<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.

agentmods 80×15 button for image-to-glb

Your own site · 80×15
<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>
Per session 99 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 1,591 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe. Third-party audits
  • NVIDIA SkillSpector warn 7 Sept 2026
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]
How audits are shown
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce 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

Measured 13d ago against content hash cb5b4b65b128, method: parsed. Prices are Anthropic first-party input rates as of 2026-09-12, from the pricing page.

Security

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.

.claude/skills/image-to-glb/SKILL.md · 95 lines

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

  1. 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.md and imagegen-provenance.md; every shipped asset gets a CREDITS.md row. Run the img2threejs admission gates (check_reference_admission.py, pre-spec assessment, detail inventory) and keep transient intake artifacts under tmp/.
  2. 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.
  3. 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.
  4. 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 and userData.sculptRuntime contract metadata. Treat generated scaffolds as candidates: the banker chest shipped only after the generic scaffold was replaced by a purpose-built factory. Reuse scripts/assets/eastbrook_town/shared.js helpers where they fit instead of copying them.
  5. Export and optimize deterministically. Copy the exporter archetype (export_<asset>.mjs + export_entry.js + source_fingerprint.mjs + a scripts/assets/specs/<asset>.json spec with keepExtras: true). The exporter writes the raw GLB to tmp/asset_src/, stamps the source fingerprint, spawns scripts/assets/build_assets.mjs (resample, prune, dedup, meshopt) into public/models/props/, and verifies the full contract. Use --no-preview for fingerprint-only rebuilds and --verify-staged to prove staged bytes. Then refresh the media manifest: node scripts/build_media_manifest.mjs generate.
  6. 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.
  7. 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).
  8. Integrate behind a render module (src/render/<asset>.ts), never inline in renderer.ts: register the preload, clone only transforms from one template, convert materials through surfaceMat (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.
  9. 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, then npm run gate, and report the exact asset byte/triangle delta (node scripts/asset_budget.mjs --json stays red on pre-existing aggregate overages; never claim it passed).

Read the full file on GitHub · 95 lines

Changes

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.

  1. 13d ago First seen · 95 lines · 99 tokens per session scan A cb5b4b65b128

Subscribe to this mod's changes

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.

Related

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.

IvanMurzak/Unity-MCP · 49 tokens

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).

IvanMurzak/Unity-MCP · 59 tokens

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…

gamedev-skills/awesome-gamedev-agent-skills · 95 tokens

motion

How an agent turns a character mesh into a usable animated FBX — and how to judge whether the result is shippable.

OpenDCAI/GameFactory-3A · 0 tokens

unity-addressables

Manage Addressables groups, entries, profiles and content builds (com.unity.addressables, reflection-based).

Besty0728/Unity-Skills · 25 tokens

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.

scottstts/Threejs-Awesome-Graphics-Agent-Skills · 60 tokens