Skip to content

Skill registry

v1.0.0 is the public launch: a tiered, quality-gated registry of published skills. It is local-first — publish / install read and write a JSON manifest on disk, with no network and no telemetry, consistent with SkillWeave's posture. The registry lives in src/catalog/, distinct from the runtime resolver (src/registry.ts) and the schema store (schemas/registry/).

The 9-point quality gate

gradeSkill(skill) scores a skill contract against nine checks and returns a QualityReport (points · max · checks · tier):

#CheckPasses when
1namename is kebab-case
2doesdoes is a substantive description (≥ 10 chars)
3does_notdoes_not declares explicit exclusions
4state scopestate_read and state_write are declared
5capabilitiescapabilities is declared (security scope)
6assertionsat least one assertion
7schema pinpins an input_schema or output_schema
8neutraldoes / does_not are model-neutral
9classificationprobabilistic ⇒ confidence_threshold + ≥1 golden anchor; deterministic ⇒ no retry budget

Trust tiers

The point total maps to a tier:

TierPoints
verified9 / 9
community6 – 8
experimental3 – 5
(rejected)< 3 — publishing is refused

Each published entry also carries a reputation = round(points / 9 * 100). (Reputation is seeded from the quality score; deriving it from trace/run history is a planned follow-up.)

Publish / install

The store is .registry/skills.json (gitignored, like traces/ and .context/):

bash
npm run cli -- publish extract-highlights
# ✓ published extract-highlights — verified (9/9 · reputation 100)

npm run cli -- registry            # list the catalog grouped by tier
npm run cli -- install extract-highlights

publishSkill upserts by name and refuses anything below the experimental floor (CatalogError). The four reference skills grade 9/9 → verified; load-context grades 8/9 → community (it pins no schema).

Programmatic API

The catalog is part of the stable src/index.ts surface, so a host can grade and publish skills in-process:

ts
import { gradeSkill, publishSkill, installSkill, listRegistry } from "skillweave";

const report = gradeSkill(mySkill);     // { points, max, checks, tier }
if (report.tier) publishSkill(mySkill); // throws CatalogError if rejected

MIT License