/
yome.work / skills
Protocol

JSON-as-truth: why every Yome skill is one signature file

Yome TeamApr 12, 20265 min read

Every Yome skill, official or community, declares its surface in a single signature.json file at the package root. That file is the truth. The agent loader, the macOS bridge, the sandbox replayer, and the CLI all parse the same shape — so a skill can never drift between "what the docs say" and "what the runtime accepts".

The shape

signature.jsonjson
1
{
2
  "domain": "ppt",
3
  "version": "0.1.3",
4
  "commands": {
5
    "new":         { "args": { "title": "string" } },
6
    "slide.add":   { "args": { "after": "number", "layout": "string" } },
7
    "text.set":    { "args": { "slide": "number", "text": "string" } }
8
  },
9
  "backends": ["macos", "node", "sandbox"]
10
}

Why JSON, not TypeScript

Because the Swift macOS host, the Node CLI, and the Edge runtime all need to parse it without a compiler in the loop. JSON is the only format that survives a five-language round trip without us writing four separate adapters.

The compress router

Once the loader has the signature, every agent call funnels through a single compress router: domain.action(args) → resolveBackend → enqueue. The router does not know anything about the specific skill; it only knows the shape. New skills cost zero router code.

Replay equivalence

Because every call is just (domain, action, args), the sandbox replay path is identical to the live path — minus the side effects. Test cases recorded on a real macOS run replay byte-for-byte in the browser viewer.