Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add OpenLAIR/OpenSkill --skill evo-threejs-to-objgit clone --depth 1 https://github.com/OpenLAIR/OpenSkillWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/openlair/openskill/evo-threejs-to-obj)<a href="https://agentmods.dev/skills/openlair/openskill/evo-threejs-to-obj"><img src="https://agentmods.dev/badge/skills/openlair/openskill/evo-threejs-to-obj/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/openlair/openskill/evo-threejs-to-obj"><img src="https://agentmods.dev/badge/skills/openlair/openskill/evo-threejs-to-obj.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00047 | $0.00836 |
| Opus 5 | $0.00023 | $0.00418 |
| Sonnet 5 | $0.00009 | $0.00167 |
| Haiku 4.5 | $0.00005 | $0.00084 |
Grade A, and why
evo-threejs-to-obj scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured yesterday.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
How it starts
The opening of the file, as written. The whole thing — 86 lines — stays where its author put it; the contents beside it link to each section on GitHub.
evo-threejs-to-obj
Purpose
Convert Three.js scene graphs to Wavefront OBJ format suitable for Blender (Z-up coordinate system).
Key Domain Knowledge
Coordinate System Conversion
- Three.js: Y-up, -Z forward, right-handed
- Blender: Z-up, -Y forward, right-handed
- Apply -90° X rotation: X→X, Y→Z, Z→-Y
- Rotation matrix Rx(-90°): [[1,0,0],[0,0,1],[0,-1,0]]
- Applied AFTER world transform baking, BEFORE writing OBJ
Pipeline (per geometry)
- Clone source BufferGeometry
- Apply node's world matrix (or composed world*instance matrix for InstancedMesh)
- Apply -90° X rotation for Y-up to Z-up conversion
- Collect transformed geometry
InstancedMesh Handling
- Each instance has a per-instance 4x4 matrix
- Final transform: mesh.matrixWorld * instanceMatrix[i]
- Must export each instance as separate geometry
- Standard OBJExporter does NOT handle InstancedMesh - manual traversal required
Non-Uniform/Negative Scales
- Apply full world matrix directly (don't decompose to pos/rot/scale)
- Negative scale flips winding order
- Decomposition loses shear from nested non-uniform scales
Geometry Preparation for Merging
- Convert indexed geometries to non-indexed (toNonIndexed())
- Compute vertex normals if missing (computeVertexNormals())
- Remove extra attributes (UV, etc.) to ensure homogeneous attribute sets
- Keep only 'position' and 'normal' attributes
- Merge all into single BufferGeometry using mergeGeometries()
OBJ Export Strategy
- Manual traversal with per-geometry transform baking (most reliable)
- Merge all geometries into single Mesh
- Pass single Mesh to OBJExporter (avoids exporter's limited traversal)
World Matrix Update
- MUST call root.updateMatrixWorld(true) before reading any world matrices
- Without this, child nodes carry identity/stale matrices (DR ref: cite 17, 18, 20, 21)
Scene Module Loading
- The input object.js may export via different patterns:
export default function createScene()or similar named exportexport function createScene()- May return a Mesh, Group, Scene, or Object3D
- Must handle all common export patterns robustly
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- yesterday First seen · 86 lines · 47 tokens per session scan A d4493abdcf65
evo-threejs-to-obj is a skill published in the GitHub repository OpenLAIR/OpenSkill (90 stars, last pushed 2d ago), licensed Apache-2.0. It adds 47 tokens to every session and 836 once invoked, about $0.0002 per session on Opus 5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-09-11.
Other skills, from other repositories
dialogue-graph
A library for building, validating, visualizing, and serializing dialogue graphs. Use this when parsing scripts or creating branching narrative structures.
audio-design
Implement game audio practice — bus/mixer architecture and gain in decibels, ducking (sidechain), adaptive/dynamic music via layering and re-sequencing, SFX variation, and beat synchronization. Engine-neutral. Use when the user mentions audio mixing, audio buses, adaptive/dynamic music, ducking, SFX variation, music…
threejs-world-generation
Build deterministic, editable, free-viewpoint Three.js worlds from text or structured briefs. Use for cinematic 3D terrain, semantic regions, procedural biomes, explicit landmarks, environmental scattering, camera fly-throughs, world diagnostics, or requests for a real 3D environment rather than generated 2D footage.…
hatch-pet
Create, repair, validate, visually QA, and package Codex-compatible animated pets and pet spritesheets from character art, generated images, company or prospect brand cues, or visual references. Use when a user wants a lightweight-worker Codex pet workflow, a non-pixel custom pet style, a prospect or company mascot…
animation-system
Use when implementing animations — AnimationPlayer, AnimationTree, blend trees, state machines, sprite animation, and code-driven animation.
novel-to-game
Turn a novel into a fully playable game on the selected target platform. Orchestrates the whole adaptation pipeline — requirements intake, gameable deconstruction, concept selection, world and visual design, target-runtime build, and evidence-based QA — for a novel in any language. Use for novel to game, story to…