ActorSkill actor.skill@1
Generated at from
openvibe-contracts v0.419.0 and
openvibe-sdk v0.161.0.
actor.skill@2.- Version
- 1.1.0
- Owner
- actor
- Visibility
- public
- Status
- active
- Compatibility
- backward
- Decision
- ADR-058
- Schema
https://openvibe.network/contracts/actor/skill.v1.json
actor.skill@1: a skill, the document an agent loads to do one kind of job well (ADR-058). It follows the open Markdown-skill shape (a name, a one-line description, Markdown instructions) with what OpenVibe adds: a slug, a version, up to ten TEXT resources, and REQUIRES, what the skill may ask an agent to do. A skill GRANTS NOTHING: requires only declares; the agent's level and approvals decide every step (actor approvals, HO1), and a step of a kind the skill did not declare is a scan finding (actor.skill-listing@1). A v1 skill RUNS AS A PROMPT and nothing else: no code, no binary, no install recipe (a skill that runs code waits for a sandbox and a new major). DESCRIPTION is the only part an agent reads before it loads the skill (progressive disclosure), so it says when to use it. The INTEGRITY block is a sha256 over the canonical JSON of the document: it shows the file was not edited after it was written and says nothing about who wrote it, so the AUTHOR is a claim; the registry's listing is the only place a publisher is vouched for. The canonical JSON is the document's own fields, in this order: skill, slug, name, description, version, instructions, resources, requires, runs, license, author; an optional field that is absent or empty is left out; resources are [{ path, media_type, text }] in the document's order; requires is { kinds, apps, hosts } with empty lists left out; author is { subject } or { subject, name }; the value is the compact JSON of that object (no spaces). CREATED_AT is not hashed.
Fields
| Field | Type | Required | Description | Constraints |
|---|---|---|---|---|
skill | const | yes | The document marker. |
|
slug | string | yes | Its name in the registry: lowercase letters, digits and hyphens. |
|
name | string | yes | What a person reads on its card. |
|
description | string | yes | When to use it, in one line: the only part an agent reads before it loads the skill. |
|
version | string | yes | Its semantic version. |
|
instructions | string | yes | What to do, in Markdown. The agent reads it as guidance; it never grants a permission. |
|
resources | array of object | Text the instructions refer to (a checklist, a template, a table). Never code to run. |
| |
resources[].path | string | yes | A relative name, no "..", ending in .md, .txt, .json or .csv. |
|
resources[].media_type | enum | yes |
| |
resources[].text | string | yes |
| |
requires | object | What the skill may ask an agent to do. It grants nothing: each step still goes through the agent's level and approvals. |
| |
requires.kinds | array of enum | The kinds of act (actor approvals, HO1) its steps may be. |
| |
requires.apps | array of string | Connected apps it uses (connect slugs). The person connects each one themselves. |
| |
requires.hosts | array of string | Web hosts it reads from or writes to. |
| |
runs | const | yes | How it runs. v1 skills are instructions and text only. |
|
license | string | An SPDX licence id, such as MIT or CC-BY-4.0. |
| |
author | object | Who the document says wrote it: a claim, never checked here. |
| |
author.subject | string | yes |
| |
author.name | string |
| ||
created_at | string | When the document was written. Not hashed. |
| |
integrity | object | yes | A sha256 over the canonical JSON: the file was not edited after it was written. Not a signature. |
|
integrity.alg | const | yes |
| |
integrity.hash | string | yes |
|
Examples
From the contract's own test fixtures: valid ones validate, rejected ones must fail.
The fixtures that ship with the package are the current major's.
Validate
const contracts = require('openvibe-contracts');
contracts.validate('actor.skill@1', value); // { valid, errors: [{ path, message }] }