kjanat/glb-compressor · Archived

glb-compressor-cli

Compress GLB/glTF 3D models using the glb-compressor CLI. Use when running compression from the command line, writing shell scripts that compress models, or integrating into CI/CD pipelines.

First seen Feb 20, 2026

Installation

$ npx skills add kjanat/glb-compressor --skill glb-compressor-cli

Stronger alternatives

This repository is archived — consider an actively maintained alternative.

Similar popular skills

Related neighbors and high-traction skills in the same topics — useful to compare before installing.

Also in this package

Other skills from kjanat/glb-compressor.

npx skills add kjanat/glb-compressor

Browse all from kjanat/glb-compressor

More details

Agent compatibility

Declared targets from SKILL.md / docs. Unmarked agents are not listed — the skill may still install via the CLI.

Claude Code Not declared
Cursor Not declared
Codex Not declared
GitHub Copilot Not declared
Windsurf Not declared
Gemini CLI Not declared
Cline Not declared
OpenCode Not declared

Repository health

License LICENSE
Default branch master
Open issues 0
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

LicenseMIT
CompatibilityRequires Bun >= 1.3 or Node.js >= 22.22.2. Optional gltfpack binary for best compression.

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 5,358 B
  • docs SUMMARY.md 216 B

History

  1. First seen on skills.sh
  2. First recorded snapshot · 13 installs

SKILL.md

glb-compressor CLI

Command-line tool for compressing GLB/glTF 3D model files. Supports glob patterns, configurable presets, mesh simplification, and batch processing. Built on dreamcli, so --help, --version, --quiet, and --json are framework-owned root flags.

Binary Name

glb-compressor (installed via npm/bun) or bun run cli (from source).

Usage

glb-compressor <files...> [options]

Options

Flag Description Default
-o, --output <dir> Output directory Same as input (with -compressed suffix)
-p, --preset <name> Compression preset default
-s, --simplify <0-1> Mesh simplification ratio (e.g. 0.5 = 50%) None
-k, --keep-nodes Preserve node hierarchy, node and material names, for parts moved at runtime by name (wheels, doors) false
-f, --force Overwrite existing output files false
-q, --quiet Suppress informational output (root flag, for scripting) false
--json Emit machine-readable JSON output (root flag) false
-h, --help Show help text
-V, --version Show version

Presets

Preset Behavior
default Conservative, preserves all detail
balanced Moderate animation quantization, 24 Hz resample
aggressive Strong animation quantization, 15 Hz resample (best for avatars)
max Aggressive + supercompression + lower vertex precision

Examples

# Compress a single file
glb-compressor model.glb

# Aggressive preset to an output directory
glb-compressor model.glb -p aggressive -o ./out/

# Batch compress with glob, overwrite existing
glb-compressor *.glb -f -p balanced

# Quiet mode for CI/scripts (exit code 0 = success, 1 = failure)
glb-compressor model.glb -q -p max

# Simplify mesh to ~50% vertex count
glb-compressor model.glb -s 0.5

# From source (development)
bun run cli -- model.glb -p aggressive -o ./compressed/

Output Naming

Output files are named <input>-compressed.glb. When -o is specified, files are placed in that directory. Without -o, output is written alongside the input file.

Exit Codes

Code Meaning
0 All files compressed successfully
1 One or more files failed, or invalid simplify ratio
2 Parse or constraint error (e.g. unknown preset)

Pipeline

The CLI runs the same 6-phase pipeline as the library:

  1. Cleanup - dedup, prune, remove unused UVs (+ flatten/join/weld for

static)

  1. Geometry - merge by distance, remove degenerate faces, auto-decimate
  2. GPU - instancing, vertex reorder, sparse encoding
  3. Animation - resample keyframes, remove static tracks, normalize weights
  4. Textures - compress to WebP (max 1024x1024)
  5. Final - gltfpack (preferred) or meshopt WASM fallback

Skinned models are auto-detected and take a conservative path that skips transforms known to break skeleton hierarchies.

Skinned Model Awareness

When a GLB contains skins (e.g. avatars), the CLI automatically skips: flatten, join, weld, mergeByDistance, reorder, quantize, and auto-decimate. This prevents broken skeleton hierarchies, vertex weight denormalization, and mesh clipping artifacts.

Dependencies

  • gltfpack (optional): If found in $PATH, used for final compression (best

results). Falls back to meshopt WASM if unavailable.

  • sharp: Used for texture compression to WebP.