Use when editing Tiny World Builder prompts, model-generated worlds, Auto suggestions, or any model behavior that should create coherent low-poly 3D board scenes.
65
77%
Does it follow best practices?
Run evals on this skill
Adds up to 20 points to the overall score
View guide
Passed
No findings from the security scan
Fix and improve this skill with Tessl
tessl review fix ./.codex/skills/tinyworld-lowpoly-world-prompt/SKILL.mdThe built-in model should act like a compact low-poly diorama designer, not a random tile filler.
Prompt principles:
gpt-5.5 for validated
world JSON and do not add an image-generation topology prepass unless the
user explicitly asks for images again.HOME_GRID_OPTIONS size, so prompts must include the requested
gridSize and coordinate bounds instead of assuming 8x8./clear, preserve the
existing board and return only complete final-state cells that should be
added or changed.terrainFloors, not
as a field of rock objects. Rocks are sparse landmarks or boulders only.floors as variation/intensity, including terrain stacking and object detail.buildingType only when a distinct one-cell variant is wanted; otherwise leave houses as buildingType: null so cluster logic can work.Primitive assembly prompting:
customParts voxel-build hero cell instead of reducing it to rocks, houses, or terrain.Voxel stamp prompting:
customParts first instead
of raw voxel clouds. This preserves editable object structure and avoids
low-quality broad blocks.allowedBounds, and a
quality target that calls out connected layered detail.customParts kind: "cable" for ropes, balloon basket lines, tethers,
rigging, and mooring-style connections. Cable parts need from/to
endpoints, radius, sag, and the usual compatibility size/pos/scale.sphere/ellipsoid custom parts for rounded envelopes, domes, tanks,
and canopies. A hot-air balloon should have a rounded ellipsoid/sphere
envelope with colored fabric panel bands, not a box body. Use
phiStart/phiLength ellipsoid slices for curved balloon panels instead of
flat rectangular plates.customFootprint around 1.1-1.3 for compact props, bridges, decks, and
docks; reserve 1.5-1.8 for clear hero objects such as balloons, airships,
domes, and greenhouses. For bridges/decks that need to sit into water or
terrain, prefer a small negative transform.offsetY instead of making the
geometry oversized.customParts to stone/rock unless the
requested object is stone. Prefer TinyWorld material names such as wood,
brass, copper, metal, steel, glass, glassGreen, fabric,
canvas, rope, cable, and accent colors.{x,y,z,color} voxels after a seed exists and the user asks to
reinterpret/upscale/refine density; keep returned voxels bounded and omit
hidden interior fill.For Auto suggestions:
Offline random island generation:
generateProceduralWorld() is the public entry point used by the Generate
panel and command palette, but it delegates to generateRandomIslandWorld().tiny-markov/island-lab flow into
TinyWorld schema cells: connected island mask, archetype terrain/object
weights, water/bridge/path passes, then a deliberate token-to-native mapping.docs/random-island-generation-assets.md. Any change to those source blocks
must update that manifest and its source digest in the same patch.x, z, terrain, kind,
floors, terrainFloors, buildingType, and fenceSide.terrainFloors: 1 for every generated cell. Keep island identity in terrain
material, roads, water composition, object grouping, traits, and economy
profile rather than generated height variation.kind:"house" with buildingType:"tower",
manor -> kind:"house" with buildingType:"manor", lamp -> lamp-post,
berries -> bush, ore -> crystal, water-bridge -> bridge on water.
Do not invent unsupported kind values just because the lab catalogue has
a matching label.spotlight is explicitly generation-suppressed
even though legacy mapping/scoring still understands it for compatibility.lamp-post as Commerce/Charm punctuation,
but final output is capped at two lamps and lamps must not be adjacent.appearance.objectStyle = "voxel" so
the in-app test exercises the existing voxel asset factories instead of the
standalone lab's flat preview tokens.house / manor habitation when space allows.
Tower houses are landmarks and do not count as the main-house food buffer.watchtower/castle tokens should resolve to corner-adjacent
kind:"house", buildingType:"tower" cells with the count profile
0/1/2/3/4 = 6.25%/50%/25%/12.5%/6.25%. Tower doors are on local +z, so
generated towers must emit a transform.rotationY that faces the door inward
toward the island center/core.water-bridge
only when the water cell has path on opposite banks horizontally or
vertically and water continues under the bridge on the perpendicular axis.
A harbor edge/dock should use waterfront path/shore composition unless it is
a true road crossing over a visible water channel.manor, watchtower/castle -> tower-like
houses) need a buffer from ordinary house clusters because their rendered
meshes can occupy more visual footprint than one logical cell.New world action is the in-app Tinyverse-style test path
for the offline generator: it chooses a random archetype/seed, applies the
generated TinyWorld state, saves it as a named local world slot, then opens
the cinematic economy reveal. Keep economy scoring derived from the loaded
TinyWorld cells, not from pre-mapping lab tokens, so the stats describe the
real rendered assets.buildRandomIslandEconomyProfile().
It mirrors island-lab's Food / Materials / Commerce / Defense / Charm,
gold/day, rarity, traits, synergies, and feature highlight groups, but it is
presentation/runtime data rather than part of the saved world schema.
Rarity is archetype-relative after normalized scoring so a strong forest or
ruins island can be rare without needing village-level absolute commerce.npm run stats:random-island -- --samples=10000. Each run writes a
timestamped JSON artifact under ignored stats-runs/random-island/ and
refreshes stats-runs/random-island/latest.json.npm run sample:random-island -- --count=16. Each run writes seeds, terrain
glyph maps, water components, economy profile data, and full world JSON under
ignored random-island-runs/.f21f84b
If you maintain this skill, you can claim it as your own. Once claimed, you can manage eval scenarios, bundle related skills, attach documentation or rules, and ensure cross-agent compatibility.