← All skills
Tencent SkillHub Β· AI

Mml

Build 3D scenes and interactive experiences using MML (Metaverse Markup Language) for the Otherside metaverse and other MML-compatible environments. Use when...

skill openclawclawhub Free
0 Downloads
0 Stars
0 Installs
0 Score
High Signal

Build 3D scenes and interactive experiences using MML (Metaverse Markup Language) for the Otherside metaverse and other MML-compatible environments. Use when...

⬇ 0 downloads β˜… 0 stars Unverified but indexed

Install for OpenClaw

Quick setup
  1. Download the package from Yavira.
  2. Extract the archive and review SKILL.md first.
  3. Import or place the package into your OpenClaw setup.

Requirements

Target platform
OpenClaw
Install method
Manual import
Extraction
Extract archive
Prerequisites
OpenClaw
Primary doc
SKILL.md

Package facts

Download mode
Yavira redirect
Package format
ZIP package
Source platform
Tencent SkillHub
What's included
SKILL.md, references/elements.md

Validation

  • Use the Yavira download entry.
  • Review SKILL.md after the package is downloaded.
  • Confirm the extracted package contains the expected setup assets.

Install with your agent

Agent handoff

Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.

  1. Download the package from Yavira.
  2. Extract it into a folder your agent can access.
  3. Paste one of the prompts below and point your agent at the extracted folder.
New install

I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.

Upgrade existing

I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.

Trust & source

Release facts

Source
Tencent SkillHub
Verification
Indexed source record
Version
1.0.0

Documentation

ClawHub primary doc Primary doc: SKILL.md 17 sections Open source page

MML (Metaverse Markup Language)

Full compiled reference: /home/ubuntu/.openclaw/workspace/research/mml-reference.md Source: mml.io + DashBODK Studio (dashbodk.vercel.app/docs). All elements, attrs, events, collision patterns. MML is an HTML-like markup language for building 3D scenes. Documents are served via WebSocket and rendered by clients (Web/Three.js or Unreal Engine). MML supports scripting via inline <script> tags (standard DOM APIs).

Key Concepts

Units: Positions in meters, rotations in degrees, font sizes in centimeters Coordinate system: x (right), y (up), z (forward) Common attributes: All visible elements share x y z rx ry rz sx sy sz visible id class Collision system: Set collision-interval (ms) on an element to receive collisionstart, collisionmove, collisionend events Document time: Animations and media use document lifecycle time (ms since document start) Scripting: Standard DOM manipulation via <script> tags. Use document.getElementById(), addEventListener(), setAttribute(), etc.

Elements Quick Reference

ElementPurposeKey Attrsm-groupContainer, transforms children as unit(transform only)m-cube3D boxwidth height depth color opacitym-sphere3D sphereradius color opacitym-cylinder3D cylinderradius height color opacitym-planeFlat surfacewidth height color opacitym-modelLoad 3D model (GLTF/OBJ/FBX)src anim-src anim-loop anim-enabled start-time pause-timem-character3D character (composable with m-model children)src anim-src anim-loop anim-enabled start-time pause-timem-lightPoint or spotlighttype intensity distance angle enabled cast-shadows colorm-imageDisplay image in 3Dsrc width height emissive opacitym-videoDisplay video in 3D (supports WHEP streaming)src width height emissive loop enabled volume start-time pause-timem-audioSpatial audiosrc loop loop-duration enabled volume cone-angle cone-falloff-angle start-time pause-timem-labelText on a planecontent width height font-size font-color padding alignment color emissivem-frameEmbed another MML documentsrc min-x max-x min-y max-y min-z max-z load-range unload-rangem-linkClickable link (no visual)href targetm-promptUser text input on clickmessage placeholder prefill onpromptm-interactionAction at a point in spacerange in-focus line-of-sight priority prompt oninteractm-position-probeTrack user positionsrange interval onpositionenter onpositionmove onpositionleavem-chat-probeReceive chat messagesrange onchatm-attr-animKeyframe animation (doc-time synced)attr start end start-time pause-time duration loop easing ping-pong ping-pong-delaym-attr-lerpSmooth attribute transitionsattr duration easing

Basic scene with transforms

<m-group x="0" y="1" z="-5"> <m-cube color="red" width="2" height="0.5" depth="2"></m-cube> <m-sphere color="blue" radius="0.3" y="1"></m-sphere> </m-group>

Animation (looping rotation)

<m-cube color="green" y="2"> <m-attr-anim attr="ry" start="0" end="360" duration="3000" loop="true"></m-attr-anim> </m-cube>

Smooth transitions on attribute changes

<m-cube id="box" color="red" y="1"> <m-attr-lerp attr="x,y,z" duration="500" easing="easeInOutQuad"></m-attr-lerp> </m-cube>

Click interaction

<m-cube id="btn" color="blue" onclick=" this.setAttribute('color', this.getAttribute('color') === 'blue' ? 'red' : 'blue'); "></m-cube>

Collision detection

<m-cube id="platform" width="5" height="0.2" depth="5" color="green" collision-interval="100"> </m-cube> <script> const platform = document.getElementById("platform"); platform.addEventListener("collisionstart", (e) => { platform.setAttribute("color", "yellow"); }); platform.addEventListener("collisionend", (e) => { platform.setAttribute("color", "green"); }); </script>

Position tracking

<m-position-probe id="probe" range="20" interval="500"></m-position-probe> <m-label id="info" content="Waiting..." y="3" width="3" height="1"></m-label> <script> const probe = document.getElementById("probe"); const info = document.getElementById("info"); probe.addEventListener("positionenter", (e) => { info.setAttribute("content", `User ${e.detail.connectionId} entered`); }); </script>

Load 3D model with animation

<m-model src="https://example.com/character.glb" anim-src="https://example.com/dance.glb" anim-loop="true" y="0" sx="1" sy="1" sz="1"> </m-model>

Composing documents with m-frame

<m-frame src="https://example.com/other-scene.html" x="10" y="0" z="0" min-x="-5" max-x="5" min-y="0" max-y="10" min-z="-5" max-z="5"> </m-frame>

Spatial audio

<m-audio src="https://example.com/music.mp3" loop="true" volume="0.5" x="0" y="2" z="0"> </m-audio>

Chat-reactive elements

<m-chat-probe id="chat" range="10"></m-chat-probe> <m-label id="msg" content="" y="3" width="4" height="1"></m-label> <script> document.getElementById("chat").addEventListener("chat", (e) => { document.getElementById("msg").setAttribute("content", e.detail.message); }); </script>

Easing Functions

Available for m-attr-anim and m-attr-lerp: easeInQuad, easeOutQuad, easeInOutQuad, easeInCubic, easeOutCubic, easeInOutCubic, easeInQuart, easeOutQuart, easeInOutQuart, easeInQuint, easeOutQuint, easeInOutQuint, easeInSine, easeOutSine, easeInOutSine, easeInExpo, easeOutExpo, easeInOutExpo, easeInCirc, easeOutCirc, easeInOutCirc, easeInElastic, easeOutElastic, easeInOutElastic, easeInBack, easeOutBack, easeInOutBack, easeInBounce, easeOutBounce, easeInOutBounce Omit easing for linear interpolation.

Events Reference

EventSourceKey PropertiesclickAny clickable elementdetail.connectionId, detail.positioncollisionstartElements with collision-intervaldetail.connectionId, detail.positioncollisionmoveElements with collision-intervaldetail.connectionId, detail.positioncollisionendElements with collision-intervaldetail.connectionIdpositionenterm-position-probedetail.connectionId, detail.position, detail.rotationpositionmovem-position-probedetail.connectionId, detail.position, detail.rotationpositionleavem-position-probedetail.connectionIdchatm-chat-probedetail.message, detail.connectionIdinteractm-interactiondetail.connectionIdpromptm-promptdetail.value, detail.connectionIdconnected / disconnectedDocument-leveldetail.connectionId

Platform Support

Most elements work on both Web and Unreal. Notable exceptions: m-link: Web only m-attr-lerp: Web only m-frame bounds/load-range: Web only socket attribute: Web only

Full Element Docs

For detailed attribute lists per element, see references/elements.md.

Category context

Agent frameworks, memory systems, reasoning layers, and model-native orchestration.

Source: Tencent SkillHub

Largest current source with strong distribution and engagement signals.

Package contents

Included in package
2 Docs
  • SKILL.md Primary doc
  • references/elements.md Docs