nirholas/three.ws · Archived

rig-a-model

Auto-rig a static 3D GLB model into an animation-ready one.

First seen Aug 14, 2026

Installation

$ npx skills add nirholas/three.ws --skill rig-a-model

Summary

  • Auto-rig a static 3D GLB model into an animation-ready one.
  • Use when you or the user have an existing GLB and want to rig it, add a skeleton, add bones, make it posable, or make it animatable — "rig this model", "add a skeleton to my GLB", "make this character animation-ready".
  • Takes a GLB URL, adds a humanoid skeleton plus skin weights, and returns the rigged GLB URL and a pose-studio link.

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 nirholas/three.ws · top by installs.

npx skills add nirholas/three.ws

Browse all from nirholas/three.ws

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

Stars 95
License LICENSE
Default branch main
Open issues 7
Status Archived

Skill metadata

Parsed from SKILL.md frontmatter.

LicenseMIT
More metadata
category
3d/creative
cross-platform-safe
1
pack
three-ws-skills

Package contents

Files included with this skill beyond the listing page.

  • skill md SKILL.md 4,316 B
  • docs SUMMARY.md 415 B

History

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

SKILL.md

Rig a 3D model

Turn a static GLB into an animation-ready one. The three.ws auto-rig pipeline (Make-It-Animatable) adds a humanoid skeleton and per-vertex skin weights, so the model can be posed and play animation clips.

The result is a riggedGlbUrl plus a pose-studio link that opens the rigged model in the browser, ready to pose.

When to use which tool

Goal Use
Add a skeleton to a GLB you already have this skill
A new static object / prop from text generate-3d-model
A new rigged character from text/image in one call create-3d-avatar

Rigging assumes a roughly humanoid figure (head, torso, two arms, two legs, standing). Props, furniture, and vehicles won't rig meaningfully.

Fastest path — the MCP tool

If the three.ws MCP server is connected, call the rig tool directly:

  • Tool: rig_mesh
  • Input: { "glb_url": "<https URL to the static GLB>" }

- Any reachable GLB URL works — a glbUrl from generate-3d-model, a CDN link, or a model you host yourself.

  • Returns: riggedGlbUrl, sourceGlbUrl, poseStudioUrl, jobId,

creationId, durationMs.

Portable path — the hosted HTTP endpoint

No MCP client needed. rig_mesh is exposed free on the hosted studio JSON-RPC endpoint at https://three.ws/api/mcp-studio (no key, no account):

curl -s -X POST https://three.ws/api/mcp-studio \
  -H 'content-type: application/json' \
  -d '{
    "jsonrpc": "2.0",
    "id": 1,
    "method": "tools/call",
    "params": {
      "name": "rig_mesh",
      "arguments": { "glb_url": "https://three.ws/avatars/cesium-man.glb" }
    }
  }'

structuredContent returns the rigged model:

{
  "ok": true,
  "riggedGlbUrl": "https://three.ws/cdn/creations/def456/rigged.glb",
  "sourceGlbUrl": "https://three.ws/avatars/cesium-man.glb",
  "poseStudioUrl": "https://three.ws/pose?src=https%3A%2F%2Fthree.ws%2F...",
  "jobId": "r9k2m7x4",
  "durationMs": 48000
}

Raw REST pipeline

The MCP tool is a thin client over the public rig endpoint. Submit, then poll:

# 1. Start the rig job
curl -s -X POST "https://three.ws/api/forge?action=rig" \
  -H 'content-type: application/json' \
  -d '{ "glb_url": "https://three.ws/avatars/cesium-man.glb" }'
# → { "job_id": "r9k2m7x4", ... }

# 2. Poll until done (every ~3s, budget ~180s)
curl -s "https://three.ws/api/forge?job=r9k2m7x4" -H 'accept: application/json'
# → { "status": "done", "glb_url": "https://.../rigged.glb" }  (or "failed" / still "running")

Build the pose-studio link yourself from any rigged GLB URL: https://three.ws/pose?src=<URL-encoded riggedGlbUrl>.

What to do with the result

  1. Give the user the pose-studio link — pose and preview in the browser.
  2. Give the riggedGlbUrl for download / import; it carries a humanoid

skeleton and skin weights, so animation clips retarget onto it.

  1. The original mesh is never modified — sourceGlbUrl stays valid.

Errors

  • rate_limited / 429 — the rigger is busy; honor retryAfter and retry.
  • not_configured / 503 — auto-rigging momentarily unavailable; retry shortly.
  • rig_failed — the model couldn't be rigged (usually not humanoid enough).

Tell the user why and suggest create-3d-avatar to generate a riggable figure.

  • timeout — the job outlived the poll budget; the response includes a

resumeUrl — keep polling it rather than restarting the job.

Never report a dead or empty link as success — only return a riggedGlbUrl the job actually produced.