Skill Wiki v0.1.0

Docs / spec / registry

On this page

Registry contract

A Prime ships as a tarball + manifest. A registry is anything that exposes the minimum HTTP contract below. prime publish and prime install are clients of this contract. The reference implementation is @skill-wiki/registry.

The minimum HTTP contract

MethodPathPurpose
POST/publishUpload a Prime tarball + manifest.
GET/pack/:scopeList versions of a Prime by scope.
GET/pack/:scope/:versionGet manifest of a specific version.
GET/pack/:scope/:version/tarballDownload the Prime tarball.

Prime manifest

Every published Prime ships with pack.yaml at the tarball root:

name: "@frontend-design"
version: "0.1.0"
description: "Design knowledge for AI agents — 898 atoms across 9 sub-domains."
license: Apache-2.0

atoms: 898
namespaces:
  - "@community"
  - "@impeccable"
  - "@anthropic-impeccable"
  - "@nielsen"
  - "@w3c"

prime-version: "1.0"   # protocol version the Prime targets
sha256: "..."          # over the tarball; verified at install

Tarball layout

pack.tar.gz
├── pack.yaml
├── domain.yaml          # if the Prime ships its own domain
├── primes/
│   └── sources/
│       └── @scope/
│           └── kind-name.prime
└── compiled/            # optional, pre-compiled artifact
    └── ...

Authentication

The reference registry uses bearer tokens for POST /publish; reads are public. Token issuance is registry-specific and outside the protocol — pick a model (per-org, per-user, per-CI) that fits your distribution.

Versioning

  • Prime versions are semver. Patch = atom edits. Minor = new atoms or new edge targets. Major = removed atoms or removed verbs.
  • Atoms inside a Prime are also semver'd via the version field.
  • prime install @scope resolves to the latest semver matching the consumer's SKILL.md's declared range.

Running your own registry

The reference registry is a single file:

# Run on port 4000 with a SQLite-backed Prime store.
bun run packages/registry/src/index.ts --port 4000

# Publish to it from any Prime root.
prime publish --remote http://localhost:4000

# Install from it on any consumer.
prime install @your-prime --remote http://localhost:4000

See Publish & Install for the full round-trip.