Skip to content
Agentmart
Submit a tool

img2threejs

Turn an object or character reference image into a quality-gated, animation-ready procedural Three.js model built in code.

Skill by img2threejs

IndexedApache-2.0★ 19,103
Write a review

Install

Works with Claude Code, Claude apps, Codex, Cursor, Gemini CLI, GitHub Copilot, VS Code, OpenCode, Goose, Windsurf. Read the repository before you give any tool access to your data.

npx agentmarket install skill/img2threejs-img2threejs

Asks which of your tools to add it to (Claude Code, Codex, Cursor, VS Code, Windsurf, Gemini CLI, Claude Desktop) and shows the change first. See https://agentmart.dev/cli.

Get the weekly diff

The weekly diff: one email a week with new agent tools, notable updates and grade changes, plus security alerts for tools you follow. Double opt-in, one-click unsubscribe.

We use your email only for this newsletter. Privacy

About

Turn an object or character reference image into a quality-gated, animation-ready procedural Three.js model built in code. Use for image-to-3D reconstruction, detail-accurate object rebuilds, stylized/likeness-maximized human characters, sculpt specs, and staged code generation.

Use cases: code-generation

No reviews yet. Installed it? Reviews come from verified installers only. How reviews work

Permissions

What this skill can do and what it asks for, from its SKILL.md. Checked Oct 25, 2026.

Tools
No tools found
Secrets
None asked for
Install scripts
None found
Runs as
Python package

Network hosts it talks to 1

  • codeload.github.com · found in install command

Files it touches

  • ~/.claude/skills/img2threejs

What's inside

Skill name
img2threejs
Description
Turn an object or character reference image into a quality-gated, animation-ready procedural Three.js model built in code. Use for image-to-3D reconstruction, detail-accurate object rebuilds, stylized/likeness-maximized human characters, sculpt specs, and staged code generation.
License
Apache-2.0
Instructions
461 lines in SKILL.md · view on GitHub

Before installing

  • Ships executable scripts

Files (200)

  • FUNDING.yml · .github/
  • bug_report.yml · .github/ISSUE_TEMPLATE/
  • contribution_intent.yml · .github/ISSUE_TEMPLATE/
  • feature_request.yml · .github/ISSUE_TEMPLATE/
  • pull_request_template.md · .github/
  • release.yml · .github/
  • beta-release.yml · .github/workflows/
  • ci.yml · .github/workflows/
  • cli-publish.yml · .github/workflows/
  • docs-quality.yml · .github/workflows/
  • issue-triage.yml · .github/workflows/
  • pr-issue-close-policy.yml · .github/workflows/
  • readme-tables-sync.yml · .github/workflows/
  • release.yml · .github/workflows/
  • .gitignore
  • CHANGELOG.md
  • CLAUDE.md
  • CONTRIBUTING.md
  • LAB-FINDINGS.md
  • LICENSE
  • README.md
  • ROADMAP.md
  • SKILL.md
  • logo.svg · assets/
  • atlas-cloud-logomark-black.svg · assets/sponsors/
  • atlas-cloud-logomark-white.svg · assets/sponsors/
  • hyper3d-logomark-black.png · assets/sponsors/
  • hyper3d-logomark-white.png · assets/sponsors/
  • tripo-logomark-black.svg · assets/sponsors/
  • tripo-logomark-white.svg · assets/sponsors/
  • img2threejs.mjs · bin/
  • img2threejs.mjs-test.mjs · bin/
  • ARCHITECTURE.md · docs/
  • EMISSION_TARGET_SOCKET.md · docs/
  • GLB_ANIMATED_CHARACTER_PROMPT.md · docs/
  • GLB_CHARACTER_ANIMATION_PROMPT.md · docs/
  • GLB_CHARACTER_POLISH_PROMPT.md · docs/
  • GLB_CHARACTER_PROMPT.md · docs/
  • HAIR_PIPELINE.md · docs/
  • INSTALL.md · docs/
  • PLUGINS.md · docs/
  • RESEARCH_TRELLIS2_TO_IMG2THREEJS.md · docs/
  • STAGE_R_BACKLOG.md · docs/
  • STAGE_R_TEST_PLAN.md · docs/
  • TOKEN_COST.md · docs/
  • UPGRADE_PLAN.md · docs/
  • reference_fidelity_tooling.md · docs/integrations/
  • issue-triage.md · docs/
  • IMAGE_MATERIAL_ANALYSIS.md · docs/materials/
  • README.md · docs/materials/
  • THREEJS_MATERIAL_REFERENCE.md · docs/materials/
  • material-reference.json · docs/materials/
  • character-rigging-animation-1.5.2.md · docs/pipelines/
  • .keep · docs/raw/
  • img2threejs-skill-dataset.json · docs/raw/
  • render-profile.v2.example.json · docs/specs/
  • render-profile.v2.schema.json · docs/specs/
  • README.md · docs/specs/vocabulary/
  • core_3d.jsonl · docs/specs/vocabulary/
  • core_3d_reconstruction.jsonl · docs/specs/vocabulary/
  • …and 140 more

SKILL.md (first lines)

# img2threejs — Image to procedural Three.js

Rebuild the object visible in a reference image as a **code-only** procedural Three.js model,
gated by a staged sculpting pipeline and an AI-vision self-correction loop. This is
reconstruction-by-code, **not** photogrammetry, mesh extraction, or downloaded art packs. That
promise governs how the model is *built* — it says nothing about which file formats it can
subsequently be *exported* to; an explicitly-selected emission target (`--target <kind>`) is a
terminal, whole-artifact transform of the already-built model, verified to its own stated limit,
never a second way to build one.

Agent-agnostic: works under Hermes, Claude Code, Codex, or OpenCode. Wherever this doc says "agent vision" or "agent browser tool", use
whatever the host provides — native image reading, a browser MCP (playwright/chrome-devtools), the
project preview, or a user-supplied screenshot.

This file is the always-loaded router: it holds the order of operations and every hard rule as one
line. The full contract behind each rule lives in the `grimoire/` or `docs/` file that rule names —
read the named file at the moment you reach that stage, not before.

## Canonical shared checkout

Keep one checkout of this repository and let every host enter it through a symlink, so the hosts
execute the same code instead of drifting apart. `npx --yes img2threejs@latest install` does this
for the hosts it detects (`hermes`, `claude`, `codex`, `opencode`); it refuses (exit 2) to replace a
link it does not manage, so a hand-made link is never silently swapped for a release copy.
**Hermes** reads skills per profile: also link `~/.hermes/profiles/<profile>/skills/img2threejs`
(the installer writes only `~/.hermes/skills/`). Install, manual symlinks, and troubleshooting:
[`docs/INSTALL.md`](docs/INSTALL.md).

## When To Use

The user attaches/points to an object image and wants a procedural Three.js model, a
reconstruction/animation/destruction plan, a sculpt spec, or code. Also for material studies,
action-ready props, game objects, botanical/mechanical parts, and stylized reconstructions.

## Profile preflight (once per run, before `forge/next.py`)

Domain knowledge (CS2 skins, animated characters, emission targets) lives in plugins, not in this
checkout. Pick the profile from the subject, then confirm this environment can start it:

```bash
python3 forge/state.py init --help | grep -- --profile   # profiles available here
```

- `generic` / `character` are built in: no harness, no plugin, nothing else to check.
- A missing domain profile (e.g. `cs2`) is a setup gap: never downgrade to
  `generic` silently. Installing it edits the user's machine, so give them the commands in
  [`docs/INSTALL.md` §3](docs/INSTALL.md#3-add-a-plugin-only-if-you-need-one), get their go-ahead,
  re-check, and continue.
- Installed but not listed (wrong `$IMG2_HOME`), or a Hermes plugin link: [`docs/PLUGINS.md`](docs/PLUGINS.md).
- Then read what the profile's own steps name, at the moment you reach them: the plugin's
  `SKILL.md` and contracts govern that domain.

## Core Promise

Sculpt from a photo, in order — never one-shot a mesh:
1. **Run `python3 forge/next.py --state .img2threejs/state.json [<spec>]` first**, at every start,
   resume, and before every correction iteration. It reports the ordered checklist, exact next
   command, evidence status, and bounded correction-loop status; it never replaces the spec/pass
   gates. Obey a hard stop; never continue from memory.
2. **Validate** the image is a suitable 3D target (`grimoire/intake/validation_rubric.md`).
3. **Assess** object class + complexity, then write a `qualityContract` before any code.
4. **Spec** it: component hierarchy, materials, lighting, pivots, sockets, action anchors.
5. **Build pass-by-pass** from blockout → structure → form → material → lighting → interaction → optimization.
6. **Verify** each pass with a screenshot compared against the reference; fail a pass if an
   identity-defining feature is wrong even when the global score looks fine.

State explicitly when output is approximate/stylized/low-poly. A single image cannot reveal
hidden sides or guarantee exact geometry — say so instead of faking confidence.

## Mandatory Local State Gate

Conversation context is disposable; `.img2threejs/state.json` is the local checklist authority.
Initialize once per reconstruction, then gate every step through it:

```bash
python3 forge/state.py init --state .img2threejs/state.json --reference <img> --profile <generic|character|installed-domain> --spec object-sculpt-spec.json
python3 forge/next.py --state .img2threejs/state.json [object-sculpt-spec.json]
python3 forge/state.py mark <step-id> --state .img2threejs/state.json --evidence <path>
```

- `next.py` prints the current step, pass, incomplete mandatory steps, exact next command, and
  `loop/max`. Exit code 3 or `status=stopped` is a hard stop: report the reason and request input.
  Never bypass it by reconstructing progress from chat history.
- Every completed step needs evidence; mark a non-applicable step `skipped` only with `--reason` —
  silent omission is forbidden. Loop counts derive from `reviewHistory` actions
  (`refine-spec`/`refine-code`), not agent memory. Defaults: 3 corrections per pass, 6 total.
- A domain profile's steps, gates and reference material come from the **registry**: in-repo
  modules (`character`) and installed plugins (e.g. `cs2`) register identically, and
  `forge/state.py init` names what is available. A profile adds mandatory gates without changing
  the core order -- a domain plugin typically requires an authoritative classification, an intake
  manifest, and a machine-readable domain review before AI review; `character` requires the
  character contracts and landmark evidence; `animated-character` (requires the installed plugin-character) adds all of `character` plus the
  nine Stage R steps (`grimoire/readiness/animation_contract.md`). Pick it whenever the rig must
  MOVE — on `character` the Stage R gates are absent and the build completes without ever running
  them, which is how animation used to ship broken. Its order is load-bearing: repair the mesh,
  freeze it, bind additively, then verify parity. Every profile records suitability, projection
  applicability, and
  material-evidence applicability. The state file is a resumability index, not visual evidence:
  renders, specs, review history, and deterministic gates remain the authoritative artifacts.

## Required Inputs

- one image path / screenshot / URL / attached image (if missing or unreadable, ask)
- intended use: prop, game object, hero render, playable/destructible object, animation rig
  (default: real-time browser prop with interactive performance)
- when a domain plugin serves the item, whatever authoritative record its intake step requires, or
  an explicit request for the user/vision provider to supply one; heuristic detection alone is not
  enough to select a geometry adapter

## The Loop (scripts do enforcement; agent vision does judgment)

Run scripts from the skill root (`forge/...`). Pure Python 3.10+ stdlib, no pip installs.
Full flags: `grimoire/scripts.md`. Never let a script *score* visuals — that is the agent's job.

1. **Analyze the image first** (agent vision, before any script): work the layered observation
   protocol in `grimoire/intake/image_analysis.md` — identify/classify, decompose macro→meso→micro,
   map part relationships, name materials in PBR terms, list identity-defining features, and flag
   what the single view hides. Observation before inference; controlled 3D vocabulary; 3D
   object-space not 2D image-space. Then probe local images:

From img2threejs/img2threejs, Apache-2.0.

Compare and alternatives

    Featured in

    Signals

    Stars
    19,103
    Forks
    1,603
    Open issues
    75
    Last commit
    Oct 21, 2026 (6 days ago)
    Last release
    Sep 6, 2026 (1 month ago)

    From GitHub (fetched Oct 24, 2026).

    Details

    License
    Apache-2.0
    First seen
    Oct 24, 2026
    Last checked
    Oct 24, 2026

    Same skill elsewhere

    Copies of this SKILL.md published by others; search shows only one of them.

    More from img2threejs

    Cite this page

    img2threejs skill. Agent Mart. https://agentmart.dev/skills/img2threejs-img2threejs (last updated 2026-10-24)