Agent skill

Tinyworld Asset Editing

by jasonkneen in jasonkneen/tiny-world-builder

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.

AGPL-3.0Auto-check passedGame Development

Install Tinyworld Asset Editing

skills CLI
$ npx skills add jasonkneen/tiny-world-builder --skill tinyworld-asset-editing -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install jasonkneen/tiny-world-builder tinyworld-asset-editing --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ 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-src

Use ~/.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/

Facts

Skill name
tinyworld-asset-editing
GitHub stars
1.6k
Token cost
~5.6k tokens
SKILL.md length
2,934 words
Files
1
Skills in repo
29
Repo updated
First seen
Licence
AGPL-3.0

At a glance

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.

  • Changing Tiny World Builder selection placement
  • SKILL.md covers Layers dialog (redesigned) and Brush visibility
  • Calls npm
  • Freehand drawing

What it does

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.

When your agent uses it

  • Changing Tiny World Builder selection placement
  • Freehand drawing
  • Asset clipboard
  • Cut/copy/paste/duplicate

Example prompts

  • “/tinyworld-asset-editing”

What it can do on your machine

Read from SKILL.md and the folder at commit 49e8abd. It shows what the files ask for, not the result of running them.

  • Tool permissions

    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.

  • Runs code

    Shell commands in SKILL.md call:

    • npm

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    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.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

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.

Always · name and description, kept in context so the agent knows when to use it
~47
When it runs · the whole SKILL.md, loaded when a task matches
~5.6k

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.

Safety

Auto-check passed

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.

SKILL.md

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.

Download SKILL.mdSave it as .claude/skills/tinyworld-asset-editing/SKILL.md (or your agent's skills folder).
name
tinyworld-asset-editing
description
Use when changing Tiny World Builder selection placement, freehand drawing, asset clipboard, cut/copy/paste/duplicate, saved templates, or Stamps panel navigation.

Tiny World Asset Editing

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:

  • The selected-object popup is engine/world/33-radial-menu.js; prefer extending that radial menu over adding a second floating menu for object actions.
  • Radial actions should reuse existing edit helpers (duplicateActiveCellIntent(), deleteActiveCellIntent(), openGenerateModal(), selection API methods) rather than writing directly to world.
  • Keep destructive actions visually separated with data-pos-type="danger"; keep generation/AI actions on tertiary/orange styling so users can distinguish “create” from “mutate/delete”.

Placement rules:

  • Bulk placement over a selection should call the normal 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.
  • Bulk placement with a saved asset template should paste a one-shot template payload at each selected world coord and leave every placed template cell selected, not just the final paste.
  • The selection properties Actions row can expose an Apply tool command; it should reuse the same bulk-placement helper rather than duplicating placement logic.
  • Shift-drag rectangle fill with a placement tool should leave the filled region selected so users can immediately adjust properties, move, copy, template, or apply another tool.
  • Freehand drawing uses dragMode === 'draw', drawVisitedCells, drawLastWorldCoord, and applyDrawToolToHit(). Drawing should not repeatedly stack terrain, bridges, or same-kind objects while the pointer crosses the same cell.
  • Successful freehand placement strokes should replace the active selection with the drawn world coords so the Properties panel, copy/duplicate, and template flows are immediately available for the stroke.
  • Freehand fence/wall/boundary drawing should de-dupe by world cell plus resolved fence side, so repeated strokes of the same side no-op but corner strokes can add another side to the tile.
  • Fence, wall, and boundary are still 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.
  • Interpolated freehand fence/wall/boundary cells should derive auto 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:

  • The asset clipboard shape is { version, origin, size, cells: [{ dx, dz, cell }] }.
  • Build clipboard cells with 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.
  • Template saves live under tinyworld:asset-templates.v1 in localStorage. Keep these world-intent templates separate from model stamps and voxel build stamps.
  • Saving a template should build a one-shot clipboard payload from the active selection/hover target and must not overwrite the user's explicit copy/cut clipboard.
  • Pasting or duplicating a multi-cell clipboard should call replaceWorldCoords() with placed cells so the pasted region stays selected for immediate follow-up edits.
  • Duplicating selected cells should use a one-shot payload and must not overwrite the user's explicit copy/cut clipboard.
  • Moving selected cells between board tiles should reuse the clipboard payload shape internally but must not overwrite the user's explicit copy/cut clipboard.
  • Select-tool dragging from inside an active selection should move the selected cells cell-by-cell through the same internal move path, preserving selection and leaving the user's explicit copy/cut clipboard untouched.
  • Paste actions should target the hovered cell first, then fall back to the selected region origin. Clear stale hover when the pointer leaves the canvas so this fallback remains reachable. The latest-template shortcut should paste a one-shot template payload, not overwrite the user's explicit copy/cut clipboard.
  • Saved asset templates should also surface in the Stamps panel under Templates; selecting one should place from its one-shot template payload and preserve the user's explicit copy/cut clipboard.
  • Template cards in Stamps should provide a delete control that removes the localStorage entry, refreshes Stamps counts/cards, and clears stale selected-template tool state.
  • Saved template names should summarize their copied cell contents so template cards stay readable and searchable without a separate naming dialog.
  • Delete/Backspace should clear the active selection or hovered cell without writing to the asset clipboard; keep this separate from cut/copy semantics.
  • The selection properties Actions row should expose the same non-clipboard Delete path so mouse users can clear selected assets without using Cut.
  • Keyboard tile moves should keep selection behavior consistent with the property panel: 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:

  • Keep selection property controls grouped by durable sections (Edit, Transform, Appearance, Ground) so dense multi-selection actions stay scannable.
  • Selection properties must remain available when AI interfaces are disabled (?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.
  • Split dense edit actions into scannable rows when needed, but keep routing through durable row keys such as selectionAction so behavior remains centralized.
  • Section changes should be presentation-only unless the edit contract changes; preserve existing row keys and route behavior through applySelectionProperty().
  • Property group tabs are presentation state only (tinyworld:selection-props-active-tab.v1); keep the durable row keys/actions intact underneath tabbed Edit/Transform/Appearance/Ground views.
  • Collapsible property sections should persist in tinyworld:selection-props-collapsed.v1; toggling sections must not remove or rename underlying row keys/actions.
  • Icon/round-button treatments for rotate, nudge, scale, and history controls should preserve full labels through aria-label/title; the glyph is visual shorthand, not the action contract.
  • Use currentValue plus aria-pressed/.active on property chips when a selected value is uniform, and leave mixed selections unpressed.
  • Colour rows and preview quick chips should route through 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.
  • Colour rows should include a Default option that clears only the matching bodyColor/topColor override while preserving materials, style, transform, and the other colour row.
  • Selected-object transform reset controls should clear rotation, offsets, object scale, and per-axis scale while preserving non-transform appearance fields like model/voxel stamp IDs, materials, colours, and style.
  • Selected-object scale rows should also provide per-scale reset controls that clear only objectScale, scaleX, scaleY, or scaleZ, preserving materials, colours, model IDs, and style.
  • Selected-object nudge controls should include a recenter path that clears only offsetX/Y/Z, preserving rotation, scale, materials, colours, model IDs, and style.
  • Selected-object material scale controls should offer a reset path that clears only the matching texture-scale key and keeps the chosen texture/material, colours, model IDs, and style intact.
  • The in-scene transform gizmo is constrained to selected object transforms: within-tile X/Z offset, lift, Y rotation, and object scale. It should update the same cell fields as the Properties panel and stay undoable as a single drag batch.
  • Duplicate islands are board-level transforms, not selected object transforms. The 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.
  • Selection overlays on duplicate islands must be drawn in island-local cell axes. When an island is rotated, transform both selected tile centers and edge-strip offsets through the island group instead of offsetting borders in world X/Z.
  • The Layers panel is a read-only world hierarchy surface. It should select cells through window.__tinyworldSelection.replaceWorldCoords(), not by mutating selection internals, and should refresh from tinyworld:selection-changed, tinyworld:world-changed, and tinyworld:grid-changed events.
  • The radial root X and the Escape key must close by exiting sub-edit when active, then clearing the active selection through 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.
  • Sub-object editing is surfaced through 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.
  • Sub-object edit eligibility is centralized in 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.
  • Model stamps should expose All material / All mat scale controls, but Body/Top material controls should be limited to selected asset kinds with known Tiny World material buckets; mixed selections must not write part-material fields onto model stamps.
  • Generated 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.
Show full SKILL.md (972 more words)Show less

Stamps panel:

  • Stamps navigation is client-side. stampBuilderAllTools() builds model, voxel, and built-in stamp tools; filtering combines active category and search text.
  • Include terrain/landscape tools in Stamps alongside objects so the panel can replace toolbar hunting for grass/path/dirt/water/stone/lava/sand/snow placement.
  • Include every normal placeable tool in Stamps, including small plant tools like tuft; do not leave toolbar-only assets out of the searchable stamp library.
  • Keep Tiny World's voxel-build stamp library aligned with the standalone voxel builder concepts where practical, especially tree/garden/utility stamps that users expect under Stamps.
  • Category counts should reflect the current search. Search is token-based: every whitespace-separated term must match the tool search text. Status text should reflect the number of shown stamps and the active category/search.
  • Stamps search should support fast keyboard selection: Enter activates the first selectable visible stamp, ArrowDown focuses the first selectable card, and Escape clears a non-empty search before closing the panel.
  • Stamps card thumbnail rendering should stay responsive: draw cheap fallback thumbnails immediately, cancel stale thumbnail queues on re-render, and build expensive 3D card thumbs in small requestAnimationFrame batches.
  • The 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.
  • Toolbar, flyout, and keyboard selections that correspond to stamp-builder tools should update Recent; ignore Select, Erase, Auto, hidden tools, and other non-stamps so stale keys do not crowd out real stamps.
  • The Stamps panel has a Manage library mode. Hidden asset keys live in 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.
  • File import/export, voxel JSON import, agent file attachments, and GLB/GLTF drag/drop imports are owner-only. Gate new file surfaces through window.__tinyworldOwnerToolsAllowed() so non-owner builders can still use the shared asset library without importing arbitrary local files.
  • Model-stamp categories are inferred from labels, paths, formats, URLs, and sidecars. Do not add generator manifest fields unless a durable category contract is explicitly needed.
  • Model-stamp OBJ/MTL support must preserve filenames with spaces in 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.
  • Rigged GLTF/GLB model stamps need a skinned-mesh-aware clone path. Plain clone(true) can leave skeletons tied to the cached source scene when multiple stamps are placed.
  • Preserve gltf.animations in the model-stamp asset cache. Runtime systems such as crowd character replacements use those clips after cloning the cached scene.
  • Drag/drop imports live in 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.
  • Chat-attached model imports must keep the exact dropped 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.
  • Dropped model loader failures must surface through the drop status and window.__tinyworldModelStampLoadState; do not leave the generic model-stamp placeholder as the only feedback.
  • Canvas model drops should wait for the dropped model to reach loader ready before calling setCell(). If the GLB/GLTF fails, show the loader error and do not stamp the placeholder into the world.
  • Dropped model stamps must persist their source files outside the world JSON (currently IndexedDB plus portable data-url records for dropped models) and restore them into the model-stamp registry on boot. Saved cells may keep only 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:

  • Run the inline script syntax check, npm test, and npm run build.
  • Browser-check Stamps category plus search, selected bulk placement, draw wall/boundary behavior, copy/paste/templates, duplicate, 1/E, R/F, clear, perspective toggle, and console errors.

Layers dialog (redesigned)

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 visibility

  • 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

Files

Just SKILL.md in .codex/skills/tinyworld-asset-editing of jasonkneen/tiny-world-builder.

Open the folder on GitHubat commit 49e8abd

Compare with similar skills

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.

Tinyworld Asset Editing compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Tinyworld Asset Editing this skilljasonkneen/tiny-world-builder1.6k—~5.6kAutomated safety check: PassAGPL-3.0
Image to Three.js Modelimg2threejs/img2threejs18k1 repos~8.2kAutomated safety check: PassApache-2.0
Web CloneJane-xiaoer/claude-skill-web-clone1k1 repos~2.7kAutomated safety check: PassMIT
Threejs Game Directormajidmanzarpour/threejs-game-skills2.5k—~2.2kAutomated safety check: PassMIT
Game Asset Generatorhtdt/godogen7.1k—~2.8kAutomated safety check: PassMIT
Threejs Gameplay Systemsvalkor-ai/loom1.2k1 repos~1.4kAutomated safety check: PassApache-2.0

Similar skills

  • 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.

    18k GitHub starsUsed in 1 repo~8.2k tokens
    Game DevelopmentAuto-check passed
  • Web Clone

    Jane-xiaoer/claude-skill-web-clone

    网站复刻 / 克隆方法论。USE WHEN 用户说 复刻网站、克隆网站、clone website、抄个站、仿站、 照着这个站做一个、reproduce site、还原某个网页效果、把这个站搬下来改成我的、 复刻某个交互/WebGL/Canvas/Three.js 效果。提供「先拿真源码 → 判路径 → 逆向拆解 → 搭工程 → 替换内容」的可移植决策树,覆盖静态站 /…

    1k GitHub starsUsed in 1 repo~2.7k tokens
    Game DevelopmentAuto-check passed
  • Threejs Game Director

    majidmanzarpour/threejs-game-skills

    Entrypoint for building, upgrading, and finishing Three.js browser games.

    2.5k GitHub stars~2.2k tokensUpdated 12 days ago
    Game DevelopmentAuto-check passed
  • Generates game art from text prompts: PNG images, GLB 3D models, rigged characters, animations and sprites, with background removal.

    7.1k GitHub stars~2.8k tokensUpdated 8 days ago
    Game DevelopmentAuto-check passed
  • 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…

    1.2k GitHub starsUsed in 1 repo~1.4k tokens
    Game DevelopmentAuto-check passed
  • Uloop Execute Dynamic Code

    CyberAgentGameEntertainment/NovaShader

    Execute C with Unity APIs when existing uloop tools cannot inspect or edit enough.

    1.6k GitHub starsUsed in 1 repo~1.9k tokens
    Game DevelopmentAuto-check passed

More from jasonkneen/tiny-world-builder

All 29 skills in this repo
  • Lightweight 3D Effects

    jasonkneen/tiny-world-builder

    Lightweight 3D effects for decorative elements and micro-interactions using Zdog, Vanta.js, and Vanilla-Tilt.js.

    1.6k GitHub starsUsed in 1 repo~5.7k tokens
    Auto-check passed
  • Threejs Primitive Reconstructor

    jasonkneen/tiny-world-builder

    create robust, browser-runnable three.js primitive reconstructions from static low-poly, voxel, isometric, or stylized game-art reference images.

    1.6k GitHub stars~1.1k tokensUpdated today
    Auto-check passed
  • Poly Pizza API

    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.

    1.6k GitHub stars~1.9k tokensUpdated today
    Auto-check passed
  • Tinyworld Block Button Style

    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.

    1.6k GitHub stars~2k tokensUpdated today
    Auto-check passed
  • Tinyworld Ghost World Gen

    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…

    1.6k GitHub stars~1.6k tokensUpdated today
    Auto-check passed
  • Tinyworld Island And Planes

    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…

    1.6k GitHub stars~4.7k tokensUpdated today
    Auto-check passed

Questions about Tinyworld Asset Editing

What does Tinyworld Asset Editing do?

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.

When should I use Tinyworld Asset Editing?

Tinyworld Asset Editing fits situations like: changing Tiny World Builder selection placement; freehand drawing; asset clipboard; cut/copy/paste/duplicate.

How do I install Tinyworld Asset Editing in Claude Code?

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.

How do I install Tinyworld Asset Editing in Codex?

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.

Can I use Tinyworld Asset Editing in Cursor, Gemini CLI or GitHub Copilot?

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.

What does Tinyworld Asset Editing need to run?

Going by SKILL.md and its folder, Tinyworld Asset Editing needs the command-line tools its instructions call (npm).

Does Tinyworld Asset Editing access the network?

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.

Is Tinyworld Asset Editing safe to install?

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.

What licence does Tinyworld Asset Editing use?

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.

How many tokens does Tinyworld Asset Editing use?

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.

What are the alternatives to Tinyworld Asset Editing?

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.

Who maintains Tinyworld Asset Editing?

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.