Image to Three.js Model
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
A skill your agent uses when changing Tiny World Builder selection placement, freehand drawing, asset clipboard, cut/copy/paste/duplicate, saved templates, or Stamps panel navigation.
$ npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install jasonkneen/tiny-world-builder tinyworld-asset-editing --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ git clone --depth 1 https://github.com/jasonkneen/tiny-world-builder.git skills-src && mkdir -p .claude/skills && cp -r skills-src/.codex/skills/tinyworld-asset-editing .claude/skills/tinyworld-asset-editing && rm -rf skills-srcUse ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.
Claude Code skills documentation · loads skills from .claude/skills/
Install the "tinyworld-asset-editing" agent skill from https://github.com/jasonkneen/tiny-world-builder/tree/main/.codex/skills/tinyworld-asset-editing into .claude/skills/tinyworld-asset-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tinyworld-asset-editing", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/jasonkneen/tiny-world-builder/tree/main/.codex/skills/tinyworld-asset-editingType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install jasonkneen/tiny-world-builder tinyworld-asset-editing --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jasonkneen/tiny-world-builder.git skills-src && mkdir -p .agents/skills && cp -r skills-src/.codex/skills/tinyworld-asset-editing .agents/skills/tinyworld-asset-editing && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "tinyworld-asset-editing" agent skill from https://github.com/jasonkneen/tiny-world-builder/tree/main/.codex/skills/tinyworld-asset-editing into .agents/skills/tinyworld-asset-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tinyworld-asset-editing", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install jasonkneen/tiny-world-builder tinyworld-asset-editing --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jasonkneen/tiny-world-builder.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/.codex/skills/tinyworld-asset-editing .cursor/skills/tinyworld-asset-editing && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "tinyworld-asset-editing" agent skill from https://github.com/jasonkneen/tiny-world-builder/tree/main/.codex/skills/tinyworld-asset-editing into .cursor/skills/tinyworld-asset-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tinyworld-asset-editing", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/jasonkneen/tiny-world-builder.git --path .codex/skills/tinyworld-asset-editing--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install jasonkneen/tiny-world-builder tinyworld-asset-editing --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jasonkneen/tiny-world-builder.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/.codex/skills/tinyworld-asset-editing .gemini/skills/tinyworld-asset-editing && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "tinyworld-asset-editing" agent skill from https://github.com/jasonkneen/tiny-world-builder/tree/main/.codex/skills/tinyworld-asset-editing into .gemini/skills/tinyworld-asset-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tinyworld-asset-editing", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install jasonkneen/tiny-world-builder tinyworld-asset-editingInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/jasonkneen/tiny-world-builder.git skills-src && mkdir -p .github/skills && cp -r skills-src/.codex/skills/tinyworld-asset-editing .github/skills/tinyworld-asset-editing && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "tinyworld-asset-editing" agent skill from https://github.com/jasonkneen/tiny-world-builder/tree/main/.codex/skills/tinyworld-asset-editing into .github/skills/tinyworld-asset-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tinyworld-asset-editing", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install jasonkneen/tiny-world-builder tinyworld-asset-editing --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/jasonkneen/tiny-world-builder.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/.codex/skills/tinyworld-asset-editing .opencode/skills/tinyworld-asset-editing && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "tinyworld-asset-editing" agent skill from https://github.com/jasonkneen/tiny-world-builder/tree/main/.codex/skills/tinyworld-asset-editing into .opencode/skills/tinyworld-asset-editing/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "tinyworld-asset-editing", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
tinyworld-asset-editingA skill your agent uses when changing Tiny World Builder selection placement, freehand drawing, asset clipboard, cut/copy/paste/duplicate, saved templates, or Stamps panel navigation.
Tinyworld Asset Editing is an agent skill from jasonkneen/tiny-world-builder. Use when changing Tiny World Builder selection placement, freehand drawing, asset clipboard, cut/copy/paste/duplicate, saved templates, or Stamps panel navigation.
Its SKILL.md is about 5.6k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.
It sits in Game Development. The licence is AGPL-3.0.
Read from SKILL.md and the folder at commit 49e8abd. It shows what the files ask for, not the result of running them.
Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
npmFrom the folder's file list and the shell code blocks in SKILL.md.
No URLs in SKILL.md. Its commands use npm, which can reach the network depending on how they are called.
From URLs in SKILL.md, links to its own repository left out.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Tinyworld Asset Editing loads about 5.6k tokens when it runs. Until then it costs about 47 tokens; SKILL.md has 2,934 words of instructions outside code blocks.
Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.
The automated check found no risky patterns in SKILL.md.
Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.
The full file from jasonkneen/tiny-world-builder at commit 49e8abd, republished under its AGPL-3.0 licence (© jasonkneen). 2,934 words, ~5,649 tokens.
.claude/skills/tinyworld-asset-editing/SKILL.md (or your agent's skills folder).Use the existing board intent contract:
world[x][z] is intent and cellMeshes['x,z'] is render state.
New asset edits must flow through setCell(x, z, opts) or helpers that call it.
Selection state is exposed through window.__tinyworldSelection; use worldCoords(), materialize(), and replaceWorldCoords(). Do not parse raw selectedCells keys in new code.
Select-tool dragging of an already-selected cell/object should be preview-first: clone the current rendered object/extras into a separate hologram group, update only that virtual offset during pointermove, and commit the real cut/paste once on pointerup. Do not call shiftSelectedCellIntent() repeatedly from pointermove, because intermediate cut/paste steps can wipe cells along the drag path.
The dedicated Build Brush dock is intentionally top-centered under the world selector/top chrome, not near the bottom toolbar, so users can find it before painting.
Brush shape modes should keep the same safety contract: Single may use the existing live freehand draw path, but Line/Rectangle/Fill/Scatter must render a holographic footprint first and commit through applyToolToCell() only on pointer-up. Fill previews a bounded flood fill of matching connected cells; Scatter previews a deterministic organic subset inside the dragged rectangle. Keep the current brush mode in window.__tinyworldBrushModes so the mode indicator and UI stay in sync. Non-single brush modes should still feel like paint: selecting one from Select/Island/non-drawable tools (and pressing the canvas while one is active) must switch to a safe drawable fallback, the brush pointer path must win over editable-island widgets and orbit fallback, the ground footprint should update during pointermove before the drag threshold, and release should apply the paint without requiring a second click.
Duplicate, paste, and latest-template placement should be preview-first: copy/normalize the payload into a pending placement state, show a holographic representation following hover (clone live meshes when available; otherwise use a lightweight clipboard footprint), and commit only on the next board click. Keep Escape as a cancel path and keep any immediate helper explicitly opt-in/fallback-only.
Radial color changes should be preview-first: swatches should arm a tinted hologram for the selected object/cells and commit through updateSelectedBoardObjects() only on the next board click; Escape cancels.
Radial Generate should be contextual: summarize the current selection/selected object into the generator prompt/status instead of opening a blank generic modal. Do not imply a scoped apply unless the generator actually supports one; phrase it as context for the preview.
Generate should be preview-first: after the model returns validated world JSON, stage it as a holographic diff overlay with Apply / Regenerate / Discard controls. Do not call applyState() until the user applies the preview; discard must dispose preview geometries/materials.
Selected-cell rotation should be preview-first too: radial/keyboard rotate arms a holographic rotated clone, commits the real sel.rotate() on the next board click, and cancels with Escape. Keep immediate rotation as an explicit fallback only.
Contextual selected-object menus:
engine/world/33-radial-menu.js; prefer extending that radial menu over adding a second floating menu for object actions.duplicateActiveCellIntent(), deleteActiveCellIntent(), openGenerateModal(), selection API methods) rather than writing directly to world.data-pos-type="danger"; keep generation/AI actions on tertiary/orange styling so users can distinguish “create” from “mutate/delete”.Placement rules:
applyTool() path once per selected world coord with { skipSelectionBulk: true }. This preserves tool variants, terrain overrides, ghost transforms, fence logic, model stamp settings, and existing setCell side effects.Actions row can expose an Apply tool command; it should reuse the same bulk-placement helper rather than duplicating placement logic.dragMode === 'draw', drawVisitedCells, drawLastWorldCoord, and applyDrawToolToHit(). Drawing should not repeatedly stack terrain, bridges, or same-kind objects while the pointer crosses the same cell.kind: 'fence'; use fenceSide plus floors. Wall starts at level 4, boundary at level 5. Drawing a higher-level fence over an existing same-side fence should upgrade to that base level, not silently no-op. This also applies when the fence is stored as an extras entry beside another occupant.fenceSide from each draw step direction, not from the final pointer edge copied onto every skipped cell. The fence tool is now a single icon with no variant flyout. The placement hologram previews the auto fenceSide from hover (nearest tile edge), and repeat-clicking the same side levels it up 1→2→3→4→5 (wood → taller → wire → stone wall → steel boundary), so Wall/Boundary are reached by re-clicking rather than separate tool variants. The old fixed-direction variants (north, east, center-x, …) and the Edge/Wall/Boundary type variants were removed; the underlying fenceSide values (n/e/s/w/center-x/center-z) and floors levels are still valid for stored/rendered cells.Clipboard and templates:
{ version, origin, size, cells: [{ dx, dz, cell }] }.cloneCellIntent() so terrain, terrain height, kind, floors, building type, fence side, extras, rotation, offsetX/Y/Z, appearance, and waterFlow survive copy/paste and saved templates.tinyworld:asset-templates.v1 in localStorage. Keep these world-intent templates separate from model stamps and voxel build stamps.replaceWorldCoords() with placed cells so the pasted region stays selected for immediate follow-up edits.Templates; selecting one should place from its one-shot template payload and preserve the user's explicit copy/cut clipboard.localStorage entry, refreshes Stamps counts/cards, and clears stale selected-template tool state.Delete/Backspace should clear the active selection or hovered cell without writing to the asset clipboard; keep this separate from cut/copy semantics.Actions row should expose the same non-clipboard Delete path so mouse users can clear selected assets without using Cut.Shift+Arrow shifts selected cells through the internal move path without replacing the user's explicit clipboard, while arrows without an active selection keep camera/ghost behavior.Selection properties:
Edit, Transform, Appearance, Ground) so dense multi-selection actions stay scannable.?ai=0 / html.ai-disabled); hide prompt/chat controls, not the selected-object properties surface, and open selected objects directly to Properties so the property rows are visible.selectionAction so behavior remains centralized.applySelectionProperty().tinyworld:selection-props-active-tab.v1); keep the durable row keys/actions intact underneath tabbed Edit/Transform/Appearance/Ground views.tinyworld:selection-props-collapsed.v1; toggling sections must not remove or rename underlying row keys/actions.aria-label/title; the glyph is visual shorthand, not the action contract.currentValue plus aria-pressed/.active on property chips when a selected value is uniform, and leave mixed selections unpressed.bodyColor/topColor for any supported built-in kind, not just buildings. Expand applyAppearanceToObject() material buckets when exposing new colour rows so the world render and selection preview actually change.Default option that clears only the matching bodyColor/topColor override while preserving materials, style, transform, and the other colour row.objectScale, scaleX, scaleY, or scaleZ, preserving materials, colours, model IDs, and style.offsetX/Y/Z, preserving rotation, scale, materials, colours, model IDs, and style.new-island tool should select/create an editable island
board and route gizmo movement/rotation to the island group, while normal
object transform rows continue to operate on selected cells only.window.__tinyworldSelection.replaceWorldCoords(), not by
mutating selection internals, and should refresh from tinyworld:selection-changed,
tinyworld:world-changed, and tinyworld:grid-changed events.window.__tinyworldSelection.clear() / clearSelection(). That clear path
must deselect cells, editable-island engines, and whole editable islands
(selectEditableIsland(null)), not merely hide the radial DOM.window.__tinyworldSubEdit, not a
parallel inspector state. Layers should show part rows from
__tinyworldSubEdit.hierarchy(), select them with selectPart(partKey), and
refresh from tinyworld:sub-selection-changed. The shared transform gizmo can
target __tinyworldSubEdit.selectedGizmoTarget(); use movePart(..., { snap: !shiftKey }), scalePart(), and rotatePart() so keyboard, Properties, and
in-scene handles stay consistent.isVoxelSubEditableKind().
Radial menu and Properties must use that helper instead of maintaining
separate kind lists. When a supported built-in object enters sub-edit,
renderCellObjectImpl() forces the voxel renderer for that active cell so
rock/fence/crop/animal/micro voxel objects get real part keys. Entering edit
should not auto-explode; explicit Explode remains a user action. A plain
canvas click that misses a selectable part exits sub-edit and must not fall
through to cell selection or placement on the same click.voxel-build / customParts objects are editable through the same
Layers / Properties appearance rows as built-ins: All material, Body material,
Top material, Body/Top colour, and matching material-scale resets. Keep
model-stamp excluded from Body/Top material rows, but do not exclude
voxel-build.Stamps panel:
stampBuilderAllTools() builds model, voxel, and built-in stamp tools; filtering combines active category and search text.tuft; do not leave toolbar-only assets out of the searchable stamp library.Recent stamps category is derived from tinyworld:stamp-builder-recent.v1 and should use the same stampBuilderSelectionKey() values as selected-card state. Keep it ordered by most recent selection and remove deleted template keys.Recent; ignore Select, Erase, Auto, hidden tools, and other non-stamps so stale keys do not crowd out real stamps.tinyworld:stamp-builder-hidden.v1, normal category/recent/flyout rendering
must exclude hidden tools, and the Hidden category is the only normal place
to show them again. Manage cards can hide/unhide removable tools and delete
local templates, voxel-build stamps, and dropped model stamps.window.__tinyworldOwnerToolsAllowed() so non-owner builders can still use
the shared asset library without importing arbitrary local files.mtllib and map_Kd lines. VoxEdit-style Tr 1.000000 should not make a textured model fully transparent; treat it as opaque unless a d dissolve value says otherwise.clone(true) can leave skeletons tied to the cached source scene when multiple stamps are placed.gltf.animations in the model-stamp asset cache. Runtime systems such as crowd character replacements use those clips after cloning the cached scene.43-drag-drop-import.js. Model files register through
window.__tinyworldRegisterDroppedModelStamps, including local sidecars and
object URLs, while chat attachments expose window.__tinyworldAgentDropAttachments
for image/model prompt context. Canvas model drops must still place via setCell()
and keep selection sync through window.__tinyworldSelection.modelStampId: the
prompt context should use MUST-level wording, and generated model-stamp
cells should be repaired to the attached id before applyState() /
applyStatePatch() when there is exactly one attached model.window.__tinyworldModelStampLoadState; do not leave the generic
model-stamp placeholder as the only feedback.ready
before calling setCell(). If the GLB/GLTF fails, show the loader error and
do not stamp the placeholder into the world.appearance.modelStampId, but shared/exported world JSON must embed the
referenced droppedModelStamps records so another browser can resolve the
same model id instead of rendering the generic placeholder.Validation:
npm test, and npm run build.1/E, R/F, clear, perspective toggle, and console errors.32-layers-panel.js + #layers-panel. Styled like the blocks panel: a grab-cue
drag bar (no title), a block-style Layers / Properties tab bar, glass +
resize: both. The tree is island-grouped — collectIslands() builds a top-level
<details> per board (Home Island + each editableIslands entry) whose
children are that board's terrain cells -> objects/extras (world coords as the
cell id). Clicking a tree item selects its cell and switches to the Properties
tab, which relocates the shared #agent-selection-properties node (rendered
by module 28) into #layers-props-host; switching back to Layers / closing the
panel restores that node to the agent panel (selPropsHome). Keep the tree dense
(small summary padding, 14px branch indent, 1px gaps).
The old agent-panel Preview/Properties selection dialog has been retired: module
28 renders the shared properties node as a hidden staging element, while radial
More/Style/Move and multi-cell selection should open window.openLayersPropertiesPanel().
Because that staging element is hidden, updateSelectionPreview(target) must
clear the preview and avoid starting the preview WebGL requestAnimationFrame
loop unless the preview UI is genuinely visible again.
Canvas selection and Layers selection must stay visually synced. The tree should
derive selected rows from window.__tinyworldSelection.worldCoords(), include a
selected default grass tile even when it would otherwise be omitted as an empty
cell, highlight matching child object rows as well as the terrain parent, force
the selected branch open, and scroll the selected row into view when the panel is
open.
Brush modes should be discoverable in the dedicated floating #brush-mode-dock as well as any compact appbar copy. Both use data-brush-mode, so _brushInitToolbar() and _brushSetMode() update every visible copy together. If users report not seeing Brush, prioritize the floating dock's position/visibility before adding more hidden appbar controls.
Brush shapes are modifiers for the active paint/build tool, not standalone Select actions. If a user chooses Line/Rect/Fill/Scatter while still in Select, auto-switch to a safe paint tool (Grass) so dragging the board starts a holographic brush preview instead of orbiting/spinning the island.
© jasonkneen, AGPL-3.0. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file
Just SKILL.md in .codex/skills/tinyworld-asset-editing of jasonkneen/tiny-world-builder.
Open the folder on GitHubat commit 49e8abd
Tinyworld Asset Editing next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Tinyworld Asset Editing this skilljasonkneen/tiny-world-builder | 1.6k | — | ~5.6k | Automated safety check: Pass | AGPL-3.0 | |
| Image to Three.js Modelimg2threejs/img2threejs | 18k | 1 repos | ~8.2k | Automated safety check: Pass | Apache-2.0 | |
| Web CloneJane-xiaoer/claude-skill-web-clone | 1k | 1 repos | ~2.7k | Automated safety check: Pass | MIT | |
| Threejs Game Directormajidmanzarpour/threejs-game-skills | 2.5k | — | ~2.2k | Automated safety check: Pass | MIT | |
| Game Asset Generatorhtdt/godogen | 7.1k | — | ~2.8k | Automated safety check: Pass | MIT | |
| Threejs Gameplay Systemsvalkor-ai/loom | 1.2k | 1 repos | ~1.4k | Automated safety check: Pass | Apache-2.0 |
img2threejs/img2threejs
Rebuilds the object in a reference image as a procedural, animation-ready Three.js model written entirely in code, using staged sculpting with quality checks.
Jane-xiaoer/claude-skill-web-clone
网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 /…
majidmanzarpour/threejs-game-skills
Entrypoint for building, upgrading, and finishing Three.js browser games.
htdt/godogen
Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.
valkor-ai/loom
Build and iterate playable Three.js game systems: starter scaffold, architecture, design briefs, core loops, level and encounter design, entities, input, camera, collision and physics, scoring…
CyberAgentGameEntertainment/NovaShader
Execute C with Unity APIs when existing uloop tools cannot inspect or edit enough.
jasonkneen/tiny-world-builder
Lightweight 3D effects for decorative elements and micro-interactions using Zdog, Vanta.js, and Vanilla-Tilt.js.
jasonkneen/tiny-world-builder
create robust, browser-runnable three.js primitive reconstructions from static low-poly, voxel, isometric, or stylized game-art reference images.
jasonkneen/tiny-world-builder
A skill your agent uses whenever an LLM agent needs to search, browse, or download 3D models from Poly Pizza (poly.pizza) using their REST API.
jasonkneen/tiny-world-builder
A skill your agent uses when styling any tool/block button, palette tile, icon chip, or new clickable square in Tiny World Builder.
jasonkneen/tiny-world-builder
A skill your agent uses when changing ghost board generation, path / road / river continuity, deterministic regen, edge connections, or anything that runs inside makeGhostWorld in…
jasonkneen/tiny-world-builder
A skill your agent uses when changing the home island layout, edge dressing, undersides, autoincentive sponsor banner (now a top-left logo-adjacent DOM banner), plane/crop-duster flight paths…
Categories
A skill your agent uses when changing Tiny World Builder selection placement, freehand drawing, asset clipboard, cut/copy/paste/duplicate, saved templates, or Stamps panel navigation. Tinyworld Asset Editing is an agent skill from jasonkneen/tiny-world-builder. Use when changing Tiny World Builder selection placement, freehand drawing, asset clipboard, cut/copy/paste/duplicate, saved templates, or Stamps panel navigation.
Tinyworld Asset Editing fits situations like: changing Tiny World Builder selection placement; freehand drawing; asset clipboard; cut/copy/paste/duplicate.
Run `npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a claude-code`. Or copy the skill folder (.codex/skills/tinyworld-asset-editing in jasonkneen/tiny-world-builder) into .claude/skills/tinyworld-asset-editing in your project. Claude Code loads it when a task matches its description.
Run `npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a codex`. Or copy the skill folder (.codex/skills/tinyworld-asset-editing in jasonkneen/tiny-world-builder) into .agents/skills/tinyworld-asset-editing in your project. Codex loads it when a task matches its description.
Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/tinyworld-asset-editing, .gemini/skills/tinyworld-asset-editing, .github/skills/tinyworld-asset-editing and .opencode/skills/tinyworld-asset-editing in your project.
Going by SKILL.md and its folder, Tinyworld Asset Editing needs the command-line tools its instructions call (npm).
SKILL.md contains no URLs. Its commands use npm, which can reach the network depending on how they are called. This is read from the text; nothing was executed.
Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.
Tinyworld Asset Editing is published under the AGPL-3.0 licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.
About 5.6k tokens (SKILL.md is roughly 23k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.
Skills that share tags, products or a category with Tinyworld Asset Editing: Image to Three.js Model (img2threejs/img2threejs, 18k stars), Web Clone (Jane-xiaoer/claude-skill-web-clone, 1k stars), Threejs Game Director (majidmanzarpour/threejs-game-skills, 2.5k stars) and Game Asset Generator (htdt/godogen, 7.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.
jasonkneen (a GitHub user) maintains it in jasonkneen/tiny-world-builder, which has 1,592 GitHub stars. The repository holds 29 skills in this directory. The repository was last updated on October 10, 2026.
Source: jasonkneen/tiny-world-builder on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.