img2threejs
Turn an object or character reference image into a quality-gated, animation-ready procedural Three.js model built in code.
Skill by img2threejs
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.
About
Use cases: code-generation
Reviews
Write a reviewNo 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
- Repository
- github.com/img2threejs/img2threejs
- Website
- img2threejs.io
- First seen
- Oct 24, 2026
- Last checked
- Oct 24, 2026
- Source
- GitHubgithub-graphql
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)