On this page
Publish & install
Distribution is HTTP-only — anything that implements the registry contract is a registry. The reference server is one file.
Stand up a registry
# Run the reference registry on port 4000 (SQLite-backed Skill store).
bun run packages/registry/src/index.ts --port 4000
# Or use Docker if you prefer:
docker run -p 4000:4000 \
-v $(pwd)/registry-data:/data \
ghcr.io/skill-wiki/registry:0.1.0 Author a Skill manifest
Add pack.yaml to the root of your Skill:
name: "@my/cooking"
version: "1.0.0"
description: "Cooking knowledge — methods, terms, and rules."
license: Apache-2.0
prime-version: "1.0"
sources: "primes/sources"
compiled: "primes/compiled" Publishing via CLI (one-command flow)
To list your Skill on the public marketplace at skill-wiki.github.io, you don't need to fork or hand-edit YAML. The CLI does it for you:
# From the root of your corpus repo (must contain pack.yaml + compiled/)
prime publish-marketplace \
--description "Typed atoms for X domain" \
--tags "x,y,z"
# Preview the YAML entry without forking / pushing:
prime publish-marketplace --dry-run --description "..." --tags "..." What it does:
- Reads
pack.yamlfor name / version / compiled subdir. - Detects the GitHub repo from
git remote get-url origin. - Forks
skill-wiki/skill-wiki.github.ioviagh repo fork(idempotent). - Clones the fork, appends an entry to
data/skills.yaml, branches, commits, pushes. - Opens a PR via
gh pr createand prints the URL.
Requires the GitHub CLI (gh) to be installed and
authenticated (gh auth login). If anything goes wrong mid-flow, your branch is
pushed to your fork — open the PR by hand from there.
Publish (registry server)
# Compile first (publish bundles compiled/)
bun scripts/build-atom-dirs.ts \
--src primes/sources \
--out primes/compiled
# Publish
prime publish --remote http://localhost:4000
# What it does:
# 1. Tarball the Skill (excluding node_modules, .git, .l2-cache.json)
# 2. Compute sha256
# 3. POST /publish with manifest + tarball
# 4. Print the assigned URL Install
# Install into ./.primes/
prime install @my/cooking --remote http://localhost:4000
# With a version range
prime install '@my/cooking@^1.0' --remote http://localhost:4000
# Install everything declared in SKILL.md frontmatter
prime install --remote http://localhost:4000 Versioning
- Skill semver: patch = atom edits, minor = added atoms, major = removed atoms or removed verbs.
- Atom semver: internal versioning per-atom via
version: "x.y.z"field. - Resolution: latest matching range; lockfile is
.primes/lock.yaml.
Verify the install
prime ls --dir .primes
# → @my/cooking @ 1.0.0
prime list --dir .primes/@my/cooking/primes/compiled
# → ... atoms ... Round-trip test
The full round-trip is in scripts/test-registry-roundtrip.sh:
bash scripts/test-registry-roundtrip.sh
# 1. Boot a clean registry
# 2. Publish examples/recipes
# 3. Install in a fresh dir
# 4. Diff compiled artifacts
# 5. Tear down Authentication
The reference registry uses bearer tokens for POST /publish; reads are
public. Issue tokens via the registry CLI:
bun run packages/registry/src/cli.ts token create --org skill-wiki
# → token: pri_token_...
# Use it
prime publish --remote http://localhost:4000 --token pri_token_... Hosting options
- Self-host: run the reference registry on any Node-capable VM. ~50 MB RAM.
- Cloudflare Workers: the reference impl ports cleanly with R2 for Skill storage.
- Static + CDN: for read-only distribution, a public S3 bucket + manifest index works.