# Send Mml to your agent
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
## Fast path
- Download the package from Yavira.
- Extract it into a folder your agent can access.
- Paste one of the prompts below and point your agent at the extracted folder.
## Suggested prompts
### New install

```text
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

```text
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.
```
## Machine-readable fields
```json
{
  "schemaVersion": "1.0",
  "item": {
    "slug": "mml",
    "name": "Mml",
    "source": "tencent",
    "type": "skill",
    "category": "AI 智能",
    "sourceUrl": "https://clawhub.ai/honeybee1130/mml",
    "canonicalUrl": "https://clawhub.ai/honeybee1130/mml",
    "targetPlatform": "OpenClaw"
  },
  "install": {
    "downloadUrl": "/downloads/mml",
    "sourceDownloadUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mml",
    "sourcePlatform": "tencent",
    "targetPlatform": "OpenClaw",
    "packageFormat": "ZIP package",
    "primaryDoc": "SKILL.md",
    "includedAssets": [
      "SKILL.md",
      "references/elements.md"
    ],
    "downloadMode": "redirect",
    "sourceHealth": {
      "source": "tencent",
      "slug": "mml",
      "status": "healthy",
      "reason": "direct_download_ok",
      "recommendedAction": "download",
      "checkedAt": "2026-05-02T10:50:28.012Z",
      "expiresAt": "2026-05-09T10:50:28.012Z",
      "httpStatus": 200,
      "finalUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mml",
      "contentType": "application/zip",
      "probeMethod": "head",
      "details": {
        "probeUrl": "https://wry-manatee-359.convex.site/api/v1/download?slug=mml",
        "contentDisposition": "attachment; filename=\"mml-1.0.0.zip\"",
        "redirectLocation": null,
        "bodySnippet": null,
        "slug": "mml"
      },
      "scope": "item",
      "summary": "Item download looks usable.",
      "detail": "Yavira can redirect you to the upstream package for this item.",
      "primaryActionLabel": "Download for OpenClaw",
      "primaryActionHref": "/downloads/mml"
    },
    "validation": {
      "installChecklist": [
        "Use the Yavira download entry.",
        "Review SKILL.md after the package is downloaded.",
        "Confirm the extracted package contains the expected setup assets."
      ],
      "postInstallChecks": [
        "Confirm the extracted package includes the expected docs or setup files.",
        "Validate the skill or prompts are available in your target agent workspace.",
        "Capture any manual follow-up steps the agent could not complete."
      ]
    }
  },
  "links": {
    "detailUrl": "https://openagent3.xyz/skills/mml",
    "downloadUrl": "https://openagent3.xyz/downloads/mml",
    "agentUrl": "https://openagent3.xyz/skills/mml/agent",
    "manifestUrl": "https://openagent3.xyz/skills/mml/agent.json",
    "briefUrl": "https://openagent3.xyz/skills/mml/agent.md"
  }
}
```
## Documentation

### 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.
## Trust
- Source: tencent
- Verification: Indexed source record
- Publisher: honeybee1130
- Version: 1.0.0
## Source health
- Status: healthy
- Item download looks usable.
- Yavira can redirect you to the upstream package for this item.
- Health scope: item
- Reason: direct_download_ok
- Checked at: 2026-05-02T10:50:28.012Z
- Expires at: 2026-05-09T10:50:28.012Z
- Recommended action: Download for OpenClaw
## Links
- [Detail page](https://openagent3.xyz/skills/mml)
- [Send to Agent page](https://openagent3.xyz/skills/mml/agent)
- [JSON manifest](https://openagent3.xyz/skills/mml/agent.json)
- [Markdown brief](https://openagent3.xyz/skills/mml/agent.md)
- [Download page](https://openagent3.xyz/downloads/mml)