Skip to content
Back to skills

Tinyworld Tinyverse Race Track

ASecurity

Use when changing the Tinyverse ground-surface race track, perimeter bridge loop, rally karts, or poser-surface show/hide hook.

  • 1,587 stars
  • 0 votes
  • 0 copies
  • 3 views
  • Added September 3, 2026
designnode

Works with

  • cli

Security analysis

A100/100

Scanned September 3, 2026

npx -y skills add jasonkneen/tiny-world-builder --skill tinyworld-tinyverse-race-track --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tinyworld Tinyverse Race Track?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tinyworld Tinyverse Race Track
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/jasonkneen-tinyworld-tinyverse-race-track/badge)](https://www.skillsdirectory.com/skills/jasonkneen-tinyworld-tinyverse-race-track)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tinyworld-tinyverse-race-track
description: Use when changing the Tinyverse ground-surface race track, perimeter bridge loop, rally karts, or poser-surface show/hide hook.
---

# Tinyverse Race Track

The race track lives in `engine/world/61-tinyverse-race-track.js`.

Rules:

- Keep the system isolated from avatar files. The track wraps
  `window.__tinyworldPoserSurface.{build,show,hide}` and attaches one root group
  under the poser-surface group.
- Respect sky-island vs ground-surface separation: do not add race-track meshes
  to `worldGroup` directly and do not mutate editable island or home-grid cells.
- The poser surface scales Y three times harder than X/Z. Keep
  `root.scale.y = 1 / 3` and multiply sampled terrain heights by `3` before
  placing track/kart geometry.
- Use existing TinyWorld material families (`M.path`, `M.pathTrim`,
  `M.bridgeWood`, `M.bridgeWoodD`, `M.castleStoneD`) instead of new texture
  assets. Clone them locally when the track needs `fog=false` readability, but
  never mutate shared `M.*` materials.
- Keep static road/bridge pieces in a static subgroup and run
  `mergeStaticBaseMeshesByMaterial(...)` after authoring. Dynamic karts should
  stay in their own subgroup and animate by transform only.
- The HUD should be visible only while the poser surface is visible.
  `PS.hide()` must hide it and clear active race state.
- Keep an obvious user-facing entry point. The `Play rally` launcher should call
  `watch()`, descend to the poser surface, frame the route from the ground
  layer, and start the race after the descent settles. Do not leave the rally as
  a console-only or hidden-key feature.
- Watch mode may set `body.tinyverse-rally-watch` to clear obstructive editor
  panels and use a lightweight follower camera. Keep this state scoped to
  `watch()` and clear it on hide.
- Do not create a local `requestAnimationFrame` loop. The module exposes
  `window.__tinyworldRaceTrack._tick(dt)`, and `25-animation-loop-schema.js`
  calls it from the main loop; `_tick` must stay a fast no-op while hidden.
- Public runtime hook: `window.__tinyworldRaceTrack` exposes `show()`,
  `hide()`, `watch()`, `startRace()`, `stopRace()`, `rebuild()`, `group()`, and
  `routeLength()`.

Validation:

- `node --check engine/world/61-tinyverse-race-track.js`
- `node tools/check.js`
- Visual check: click `Play rally` or call `window.__tinyworldRaceTrack.watch()`
  and confirm the app descends to the ground islands, frames the road loop, shows
  the HUD, and starts moving karts.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.