Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Manifest JSON Schema

The machine-readable contract for adapter manifests, served by the node-local docs host (ADR-0036 — docs ride the daemon, not public Pages):

http://localhost:5474/manifest.schema.json

  • Generated from the same code that parses manifests — the schema is always exactly what spt adapter add accepts structurally. It also ships as a release asset with every release, which is the copy to pin in automation that runs where no daemon is up.
  • The URL is served by your own installed daemon, so what you fetch there is your installed version’s schema, not necessarily the latest release’s. Debugging a validation mismatch, check spt --version before assuming the schema is wrong — the release-asset copy is the version-explicit one.
  • JSON Schema draft 2020-12; the $id is the canonical URL above and is stable across releases.
  • Field doc-comments ride along as descriptions — the schema doubles as field-level documentation.
  • Manifests are authored as TOML; the schema describes the equivalent data model (validate the TOML-parsed document).
  • Cross-field rules the schema can’t express (kind↔[shell] agreement, strategy/avenue required fields) are listed in the manifest reference and enforced by spt adapter add.

Example — validate a manifest mechanically (Python, any JSON-Schema validator works the same way):

import json, tomllib, urllib.request, jsonschema

schema = json.load(urllib.request.urlopen(
    "http://localhost:5474/manifest.schema.json"))
with open("manifest.toml", "rb") as f:
    manifest = tomllib.load(f)
jsonschema.validate(manifest, schema)   # raises on violation
print("manifest is structurally valid")