On this page
Specification — overview
The protocol surface, frozen at v1.0 (2026-05-07).
Status
Spec: v1.0, frozen 2026-05-07. No further breaking changes
before v2.
Implementation: ~75 % of v1 spec. See site index
for the component-by-component status table.
The seven things in the protocol
1. Atoms
The unit of knowledge. 28 kinds across 5 layers (Data / Behaviour /
Composition / Style / Meta). Every atom declares its id,
version, body fields specific to its kind, and a list of
edges out.
2. Edges
14 typed verbs: related, requires, enhances,
validates-with, contradicts, specializes,
conflicts, extends, derived-from,
compatible, supplies-to, see-also,
includes, relationships. Each verb has allowed source
and target kinds, and semantics the L3 cross-atom checker reasons over.
3. Projection
Each atom is rendered to three Markdown views:
summary (~30 tokens, always-in-index),
core (~150 tokens, on retrieval-hit),
full (~380 tokens, on direct hit). The chunker is kind-aware —
a rule's summary is its claim; a method's summary
is its goal.
4. Composition contracts
The contract block on a method, persona, or
scope declares atoms that must be included when the
parent is loaded, atoms that must be avoided, and atoms that are
conditionally required. Contracts are evaluated by the runtime,
not by the agent — the agent always sees a complete-by-construction set.
5. Registry contract
A Prime ships as a tarball + manifest. A registry is anything that implements the
HTTP routes POST /publish, GET /pack/:scope, and
GET /pack/:scope/:version/tarball. prime publish and
prime install are clients of this contract; the reference
implementation is @skill-wiki/registry.
_index.xml format
The always-loaded index. One <cluster> per domain;
<atom> entries inside list id, kind,
tokens (full count), q (quality score), and
<edge> children.
Projection levels are agent-selectable
The agent chooses which projection to load via the MCP tool's level
parameter. A retrieval-driven turn typically loads core for selected
atoms; a focal turn loads full. summary never needs to be
loaded — it's already in the index.
What the protocol does not specify
Skill Wiki is intentionally domain-blind. The protocol does not specify:
- What kinds your domain uses. Pick from the 28; the rest are no-ops in your corpus.
- Which intent fields to emit at L1. That's the domain plugin's job.
- How to validate generated output at L5. Also domain plugin.
- How to retrieve. The reference impl uses 6-axis ranking; alternative implementations are free to differ.
See Domain plugin for the boundary.