Agent skill

Threejs Gltf Loading

by corosolto in corosolto/client

Load glTF/GLB models in three.js with GLTFLoader and play their skinned animations with AnimationMixer, including DRACO/Meshopt-compressed meshes and KTX2 textures.

Apache-2.0Auto-check passedGame Development

Install Threejs Gltf Loading

skills CLI
$ npx skills add corosolto/client --skill threejs-gltf-loading -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install corosolto/client threejs-gltf-loading --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/corosolto/client.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.agents/skills/threejs-gltf-loading .claude/skills/threejs-gltf-loading && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
threejs-gltf-loading
GitHub stars
257
Used in
1 other repo
Token cost
~1.8k tokens
SKILL.md length
506 words
Files
2 (incl. references)
Skills in repo
20
Repo updated
First seen
Licence
Apache-2.0

At a glance

Load glTF/GLB models in three.js with GLTFLoader and play their skinned animations with AnimationMixer, including DRACO/Meshopt-compressed meshes and KTX2 textures.

  • Works in 5 steps: Load a model and frame it → Play a skinned animation with… → Cross-fade between two clips → …
  • Importing 3D models into three.js — when the user mentions glTF
  • SKILL.md covers When to use, Core workflow, Patterns and Pitfalls, plus 2 more sections
  • Reaches cdn.jsdelivr.net

What it does

Threejs Gltf Loading is an agent skill from corosolto/client. Load glTF/GLB models in three.js with GLTFLoader and play their skinned animations with AnimationMixer, including DRACO/Meshopt-compressed meshes and KTX2 textures. Use when importing 3D models into three.js — when the user mentions glTF, GLB, GLTFLoader, AnimationMixer, animation clips, DRACOLoader, or "load a 3D model". For scene/camera/renderer setup use threejs-scene-setup; for materials and lights use threejs-materials-lighting.

Its SKILL.md is about 1.8k tokens, which your agent loads only when the skill is triggered. The skill folder holds 2 other files, including reference files (for example `references/loaders-and-animation.md`). Compatibility notes: three.js r165+ (verified against r184; GLTFLoader from three/addons)

It sits in Game Development, covering 3D graphics and WebGL. It works with Three.js. The repository describes itself as: FPS satírico de navegador: 5 facções brasileiras caricatas, 44 personagens, 5 mapas e 26 armas — rounds e Capture the Flag contra bots, direto na aba, sem instalar nada. Three.js… The licence is Apache-2.0.

When your agent uses it

  • Importing 3D models into three.js — when the user mentions glTF
  • Animation clips
  • Load a 3D model

Example prompts

  • “load a 3D model”
  • “/threejs-gltf-loading”

Requirements

  • Compatibility (from SKILL.md): three.js r165+ (verified against r184; GLTFLoader from three/addons)

Workflow steps

5 steps, taken from the step headings in SKILL.md.

  1. Load a model and frame it
  2. Play a skinned animation with AnimationMixer
  3. Cross-fade between two clips
  4. DRACO-compressed geometry
  5. Find and animate a named part

What it can do on your machine

Read from SKILL.md and the folder at commit 0d37b27. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    No scripts in the folder and no shell commands in SKILL.md (its code samples are javascript).

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    Hosts in commands or code, which the agent is likely to contact:

    • cdn.jsdelivr.net

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    three.js r165+ (verified against r184; GLTFLoader from three/addons)

    From compatibility in the SKILL.md frontmatter.

Context cost

Threejs Gltf Loading loads about 1.8k tokens when it runs, and up to ~2.9k if it reads all its reference files. Until then it costs about 115 tokens; SKILL.md has 506 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~115
When it runs · the whole SKILL.md, loaded when a task matches
~1.8k
With references · SKILL.md plus every file in references/, read only if the agent opens them
~2.9k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from corosolto/client at commit 0d37b27, republished under its Apache-2.0 licence (© corosolto). 506 words, ~1,776 tokens.

Download SKILL.mdSave it as .claude/skills/threejs-gltf-loading/SKILL.md (or your agent's skills folder). This skill also uses 1 other file; get the full folder from GitHub.
name
threejs-gltf-loading
description
Load glTF/GLB models in three.js with GLTFLoader and play their skinned animations with AnimationMixer, including DRACO/Meshopt-compressed meshes and KTX2 textures. Use when importing 3D models into three.js — when the user mentions glTF, GLB, GLTFLoader, AnimationMixer, animation clips, DRACOLoader, or "load a 3D model". For scene/camera/renderer setup use threejs-scene-setup; for materials and lights use threejs-materials-lighting.
compatibility
three.js r165+ (verified against r184; GLTFLoader from three/addons)
license
Apache-2.0
metadata.engine
threejs
metadata.category
web-engines
metadata.difficulty
intermediate

three.js glTF Loading

Load .gltf/.glb models and play their animations in three.js, including compressed geometry (DRACO/Meshopt) and textures (KTX2). Patterns target r165+, verified against r184.

When to use

  • Use to import a 3D model, add it to the scene, inspect its node hierarchy, and play baked/skinned animation clips with an AnimationMixer.
  • Use when files are .gltf/.glb, or code imports GLTFLoader / DRACOLoader / KTX2Loader from three/addons/loaders/....

When not to use: creating the renderer/camera/loop → threejs-scene-setup. Tuning surface look, lights, or shadows on the loaded model → threejs-materials-lighting. Authoring/exporting the model itself (Blender) is out of scope; prefer glTF over OBJ/FBX for runtime.

Core workflow

  1. Why glTF. It's a transmission format: binary vertex data, PBR materials, and animations are ready to render with minimal parsing. Prefer it over OBJ (no scene graph, no animation) and FBX (heavy) for the web.
  2. Load with GLTFLoader. loader.load(url, onLoad, onProgress, onError). The result gltf has gltf.scene (the Object3D root), gltf.animations (AnimationClip[]), gltf.cameras, and gltf.asset.
  3. Add gltf.scene to your scene and frame it. Inspect the hierarchy with traverse / getObjectByName to find the parts you'll control.
  4. Play animations with an AnimationMixer. One mixer per animated root; mixer.clipAction(clip).play(); advance with mixer.update(delta) every frame.
  5. Decode compressed assets. Attach a DRACOLoader (and/or KTX2Loader + Meshopt) so DRACO meshes and KTX2 textures load; point the decoders at their files.
  6. Verify what loaded — log the scene graph and gltf.animations, and confirm the model is visible (right scale, lit) and the clip actually plays.

Patterns

1. Load a model and frame it
js
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';

const loader = new GLTFLoader();
loader.load(
  'assets/robot.glb',
  (gltf) => {
    const root = gltf.scene;
    scene.add(root);
    // Inspect: gltf.animations is an array of AnimationClip.
    console.log('clips:', gltf.animations.map((c) => c.name));
  },
  (event) => console.log(`${(event.loaded / event.total) * 100}% loaded`),
  (error) => console.error('glTF load failed:', error)
);
2. Play a skinned animation with AnimationMixer
js
import * as THREE from 'three';
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';

let mixer;                                  // declare outside so the loop can see it
const clock = new THREE.Clock();

new GLTFLoader().load('assets/character.glb', (gltf) => {
  scene.add(gltf.scene);
  mixer = new THREE.AnimationMixer(gltf.scene);          // one mixer per animated root
  const clip = THREE.AnimationClip.findByName(gltf.animations, 'Run')
            ?? gltf.animations[0];
  mixer.clipAction(clip).play();
});

renderer.setAnimationLoop(() => {
  const dt = clock.getDelta();
  if (mixer) mixer.update(dt);              // advance the animation by real seconds
  renderer.render(scene, camera);
});
3. Cross-fade between two clips
js
const actions = {};
mixer = new THREE.AnimationMixer(gltf.scene);
for (const clip of gltf.animations) {
  actions[clip.name] = mixer.clipAction(clip);
}
actions['Idle'].play();

function transitionTo(name, duration = 0.3) {
  const next = actions[name];
  next.reset().play();
  for (const [n, action] of Object.entries(actions)) {
    if (n !== name) action.crossFadeTo(next, duration, false);
  }
}
4. DRACO-compressed geometry
js
import { GLTFLoader } from 'three/addons/loaders/GLTFLoader.js';
import { DRACOLoader } from 'three/addons/loaders/DRACOLoader.js';

const draco = new DRACOLoader();
// Point at the decoder files you ship (or a pinned CDN copy of the same version).
draco.setDecoderPath('https://cdn.jsdelivr.net/npm/three@0.184.0/examples/jsm/libs/draco/');

const loader = new GLTFLoader();
loader.setDRACOLoader(draco);
loader.load('assets/city-draco.glb', (gltf) => scene.add(gltf.scene));
5. Find and animate a named part
js
new GLTFLoader().load('assets/car.glb', (gltf) => {
  scene.add(gltf.scene);
  const wheels = [];
  gltf.scene.traverse((node) => {
    if (node.name.startsWith('Wheel')) wheels.push(node);
  });
  renderer.setAnimationLoop(() => {
    const dt = clock.getDelta();
    for (const w of wheels) w.rotation.x += dt * 4;
    renderer.render(scene, camera);
  });
});
Show full SKILL.md (234 more words)Show less

Pitfalls

  • Model loads but is invisible → it has lit (PBR) materials and the scene has no light or environment. Add a light or scene.environment (see threejs-materials-lighting), and check scale — glTF is in metres, so a 0.01-scaled asset is tiny.
  • load is async → gltf only exists inside the callback; declare mixer/refs outside and assign them in the callback, or use await loader.loadAsync(url).
  • Animation never moves → you didn't call mixer.update(delta) each frame, or you passed milliseconds instead of seconds (use clock.getDelta()), or you forgot action.play().
  • DRACO/KTX2 model fails → the decoder/transcoder path is wrong or version- mismatched. setDecoderPath/setTranscoderPath must point at files matching your three.js version.
  • Multiple mixers fighting → use one AnimationMixer per animated root and create all actions from it; don't make a new mixer per clip.
  • Baked-in transforms surprise you → exporters sometimes bake scale/rotation onto child nodes. Dump the hierarchy (names + position/rotation/scale) before relying on a node's local transform; re-export from the source if the rig is unusable.
  • Origins are off → re-parent a part under a fresh Object3D to give it a clean pivot rather than fighting baked offsets.

References

  • For the full decode/transcode setup (DRACO + Meshopt + KTX2 together), loadAsync
    • a LoadingManager progress bar, reusing models with SkeletonUtils.clone, and exporter guidance (apply transforms, one clean root), read references/loaders-and-animation.md.
  • threejs-scene-setup — the renderer, camera, and loop this model renders into.
  • threejs-materials-lighting — lighting/environment so PBR models look right.
  • fps-shooter — a 3D genre that composes three.js skills.

© corosolto, Apache-2.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

SKILL.md and 1 other file (references) in .agents/skills/threejs-gltf-loading of corosolto/client.

  • SKILL.md
  • references/loaders-and-animation.md

Open the folder on GitHubat commit 0d37b27

Used in 1 other repository

We found 1 copy of this SKILL.md (exact, near-identical or edited) in other folders, from 1 other GitHub owner. This page covers the copy in corosolto/client, which our catalogue first saw on October 7, 2026.

Compare with similar skills

Threejs Gltf Loading next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Threejs Gltf Loading compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Threejs Gltf Loading this skillcorosolto/client2571 repos~1.8kAutomated safety check: PassApache-2.0
Image to Three.js Modelimg2threejs/img2threejs18k1 repos~8.2kAutomated safety check: PassApache-2.0
Web CloneJane-xiaoer/claude-skill-web-clone1k2 repos~2.7kAutomated safety check: PassMIT
Threejs Game Directormajidmanzarpour/threejs-game-skills2.4k—~2.2kAutomated safety check: PassMIT
Threejs Gameplay Systemsvalkor-ai/loom1.2k1 repos~1.4kAutomated safety check: PassApache-2.0
Threejs World Generationcalesthio/OpenMontage65k—~2kAutomated safety check: PassAGPL-3.0

Similar skills

  • Image to Three.js Model

    img2threejs/img2threejs

    Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.

    18k GitHub starsUsed in 1 repo~8.2k tokens
    Game DevelopmentAuto-check passed
  • Web Clone

    Jane-xiaoer/claude-skill-web-clone

    网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 /…

    1k GitHub starsUsed in 2 repos~2.7k tokens
    Game DevelopmentAuto-check passed
  • Threejs Game Director

    majidmanzarpour/threejs-game-skills

    Entrypoint for building, upgrading, and finishing Three.js browser games.

    2.4k GitHub stars~2.2k tokensUpdated 10 days ago
    Game DevelopmentAuto-check passed
  • Build and iterate playable Three.js game systems: starter scaffold, architecture, design briefs, core loops, level and encounter design, entities, input, camera, collision and physics, scoring…

    1.2k GitHub starsUsed in 1 repo~1.4k tokens
    Game DevelopmentAuto-check passed
  • Threejs World Generation

    calesthio/OpenMontage

    Build deterministic, editable, free-viewpoint Three.js worlds from text or structured briefs.

    65k GitHub stars~2k tokensUpdated 5 days ago
    Game DevelopmentAuto-check passed
  • 3Dviz Pro Max Scene Builder

    viettranx/3dviz-pro-max

    Guides building an expressive 3D scene in Three.js or Blender by reasoning through intent, object construction and scientific grounding before using a catalog of recipes and kits.

    683 GitHub stars~2.8k tokensUpdated 27 days ago
    Game DevelopmentAuto-check passed

More from corosolto/client

All 20 skills in this repo
  • Threejs Gameplay Systems

    corosolto/client

    Build and iterate playable Three.js game systems. An agent skill from corosolto/client.

    257 GitHub stars~1.5k tokensUpdated today
    Auto-check passed
  • Threejs 3D Generator

    corosolto/client

    Generate, texture, rig, animate, stylize, convert, and download 3D assets for Three.js games using the Tripo API.

    257 GitHub stars~3.4k tokensUpdated today
    Auto-check passed
  • Light and shade a three.js scene: choose materials (MeshStandardMaterial PBR vs unlit MeshBasicMaterial), add ambient/hemisphere/directional/point/spot lights, turn on shadow maps, and use an…

    257 GitHub starsUsed in 1 repo~1.8k tokens
    Auto-check passed
  • Threejs Scene Setup

    corosolto/client

    Stand up a three.js scene: import maps and the three/addons path, the Scene/PerspectiveCamera/WebGLRenderer trio, the setAnimationLoop render loop, responsive resize, and OrbitControls.

    257 GitHub starsUsed in 1 repo~1.7k tokens
    Auto-check passed
  • Threejs Game Director

    corosolto/client

    Primary entrypoint for complete Three.js browser game creation and premium iteration.

    257 GitHub stars~2.8k tokensUpdated today
    Auto-check passed
  • Gauntlet Fps

    corosolto/client

    Roda o Gauntlet Loop do CS BRASIL / CORO SOLTO — o ciclo crítico-adversarial → builders em paralelo → captura medida → verificação A/B → caçador de regressões que melhora gráficos, mapas, armas, UI…

    257 GitHub stars~2.6k tokensUpdated today
    Auto-check passed

Works with

Questions about Threejs Gltf Loading

What does Threejs Gltf Loading do?

Load glTF/GLB models in three.js with GLTFLoader and play their skinned animations with AnimationMixer, including DRACO/Meshopt-compressed meshes and KTX2 textures. Threejs Gltf Loading is an agent skill from corosolto/client.js with GLTFLoader and play their skinned animations with AnimationMixer, including DRACO/Meshopt-compressed meshes and KTX2 textures.

When should I use Threejs Gltf Loading?

Threejs Gltf Loading fits situations like: importing 3D models into three.js — when the user mentions glTF; animation clips; load a 3D model.

How do I install Threejs Gltf Loading in Claude Code?

Run `npx skills add corosolto/client --skill threejs-gltf-loading -a claude-code`. Or copy the skill folder (.agents/skills/threejs-gltf-loading in corosolto/client) into .claude/skills/threejs-gltf-loading in your project. Claude Code loads it when a task matches its description.

How do I install Threejs Gltf Loading in Codex?

Run `npx skills add corosolto/client --skill threejs-gltf-loading -a codex`. Or copy the skill folder (.agents/skills/threejs-gltf-loading in corosolto/client) into .agents/skills/threejs-gltf-loading in your project. Codex loads it when a task matches its description.

Can I use Threejs Gltf Loading in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add corosolto/client --skill threejs-gltf-loading -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/threejs-gltf-loading, .gemini/skills/threejs-gltf-loading, .github/skills/threejs-gltf-loading and .opencode/skills/threejs-gltf-loading in your project.

What does Threejs Gltf Loading need to run?

SKILL.md names no scripts, command-line tools or credentials: Threejs Gltf Loading is instructions for the agent only. Compatibility (from SKILL.md): three.js r165+ (verified against r184; GLTFLoader from three/addons).

Does Threejs Gltf Loading access the network?

SKILL.md names 1 domain. In commands or code: cdn.jsdelivr.net; the agent is likely to contact it when it follows the instructions. This is read from the text; nothing was executed.

Is Threejs Gltf Loading safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Threejs Gltf Loading use?

Threejs Gltf Loading is published under the Apache-2.0 licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Threejs Gltf Loading use?

About 1.8k tokens (SKILL.md is roughly 7.1k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full. Its references folder adds about 1.1k tokens, read only when the agent opens those files.

What are the alternatives to Threejs Gltf Loading?

Skills that share tags, products or a category with Threejs Gltf Loading: Image to Three.js Model (img2threejs/img2threejs, 18k stars), Web Clone (Jane-xiaoer/claude-skill-web-clone, 1k stars), Threejs Game Director (majidmanzarpour/threejs-game-skills, 2.4k stars) and Threejs Gameplay Systems (valkor-ai/loom, 1.2k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Threejs Gltf Loading?

corosolto (a GitHub organization) maintains it in corosolto/client, which has 257 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.

Source: corosolto/client on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.