build-an-agent-skill skillA
build-an-agent-skill is agent-read markdown (skill) from nirholas/three.ws: Write a real three.ws agent skill bundle (manifest.json + SKILL.md + tools.json + handlers.js) that gives a 3D agent a new capability, then install it on an agent and test it. Use when you or the user want to build, write, author, or code a custom skill, capability, tool, or ability for a three.ws agent or an <agent-3d> embed ("give my agent a new skill", "make my agent able to check the weather", "write a custom tool for my avatar", "add a gesture skill"). Covers the four-file bundle layout, th.
Indexed from public GitHub and served as immutable, content-addressed versions. Install it pinned to an exact SHA-256 with the mdr CLI, and every file is verified against the hash recorded here before it reaches your agent. The deterministic audit below grades the latest version, and the same file always earns the same grade.
What the file says
# Build a three.ws agent skill A three.ws skill is a directory served from any URL. The agent runtime fetches it, injects its instructions into the system prompt, exposes its tools to the LLM, and runs its handlers in a Web Worker sandbox. Because a skill is just files behind a URL, the same bundle installs into every agent without copying code. Do not confuse this with the Claude skill you are reading: that one teaches an external model how to use three.ws. This one teaches a three.ws agent a new capability. ## The four files | File | Required | Purpose | | --- | --- | --- | | `manifest.json` | yes | Identity, version, what it provides, config defaults | | `SKILL.md` | yes | Instructions injected into the agent's system prompt | | `tools.json` | yes, if it exposes tools | JSON Schema tool definitions the LLM can call | | `handlers.js` | no | ES module implementing each tool | A bundle with no `handlers.js` is valid and always trusted: it is a declarative skill that only shapes behavior (an accent, a house style, a refusal policy). Assets (`clips/`, `morphs/`, `prompts/`, `assets/`) sit beside those files and are resolved against `ctx.skillBaseURI`. …
Read the whole file at its exact version.
How to install
mdr add nirholas/three.ws/build-an-agent-skill@git:20260920.ad744e2mdr add nirholas/three.ws/build-an-agent-skill@sha256:0a1e49c876aacb76Pin to a label to follow the author's releases, or to a sha256 to freeze the exact bytes forever. Either way the resolved hash is written to mdr.lock, and mdr install reproduces it on any machine.
[](https://markdownregistry.com/a/art_evth2z5f7wct4te4)
1 badge views in 30 days
Versions
Audit of the latest version
- pass: Frontmatter block present
- pass: Frontmatter declares a name
- pass: Frontmatter declares a description
- pass: Size between 200 bytes and 200 KB (9809 bytes)
- pass: No zero-width or bidi control characters
- pass: No instruction hidden inside an HTML comment
- pass: No link to an exfiltration or paste host
- pass: No credential-shaped string
- pass: No instruction to send local credentials anywhere
- pass: No text hidden with inline styles
- pass: No prompt-injection phrasing
- pass: No curl or wget piped into a shell
- pass: No recursive delete of root, home or parent
- pass: No instruction to read or print local credentials
- pass: No base64 blob over 200 characters
- pass: No link to a raw IP address
- pass: No script tag
Source
nirholas/three.ws · 211 stars · license Apache-2.0 · pushed 2026-09-23 · branch main
API
GET https://markdownregistry.com/api/v1/artifacts/art_evth2z5f7wct4te4 GET https://markdownregistry.com/api/v1/resolve?ref=nirholas/three.ws/build-an-agent-skill GET https://markdownregistry.com/api/v1/blob/0a1e49c876aacb76d8e46eafda2b025da0ec7f0f050778e29796b905237e71e3
Your agent does the legwork. You hear about the deals worth your word. Hand yours the standing instructions at modelranch.com and it joins the network that reads files like this one.