# description
Base shape of the YAML frontmatter block on every node, across all kinds. Universal — common to every Provider's nodes regardless of platform. Per-kind schemas live in the Provider that emits the kind (declared via `provider.kinds[<kind>].schema`) and extend this base via `allOf` + `$ref` to its `$id`. camelCase keys throughout. `additionalProperties` is intentionally permissive; the deterministic `unknown-field` rule emits warnings for keys outside the catalog so that the JSON Schema remains shape-only and policy lives in rules.

# properties.type.description
User-declared kind hint. Optional; the Provider may use it to tie-break classification. Free-form string so that new kinds introduced by Providers don't require a spec bump.

# properties.author.description
Primary author. Denormalized into `node.author` for query speed.

# properties.authors.description
Additional authors. MAY include the primary author; consumers dedupe on display.

# properties.license.description
SPDX license identifier (e.g. `MIT`, `Apache-2.0`).

# properties.tools.description
Tools this node requires when executed by a host. Allowlist semantics: if present, the host MUST restrict the node to exactly these tools (matching Claude Code subagent `tools` frontmatter). Free-form strings — token vocabulary is platform-specific (e.g. `Read`, `Grep`, `Bash`, `Bash(git add *)`). Kind-specific interpretation: an `agent` node's allowlist constrains the spawned subagent; a `skill` node's allowlist is a hint for the host since skills typically inherit their parent's tools. Omit to inherit the host's default. Denormalized into `node.tools_json` for query.

# properties.allowedTools.description
Tools the host MAY use without triggering a per-use permission prompt while this node is active (matching Claude Code skill `allowed-tools` frontmatter). Pre-approval semantics, distinct from `tools` (allowlist): every tool not listed remains callable, but governed by the host's normal permission settings. Accepts argument-scoped patterns where the host supports them (`Bash(git add *)`). Free-form strings. Omit to defer to host defaults.

# properties.metadata.description
Structured metadata. REQUIRED. `version` inside is REQUIRED; all other fields are optional.

# properties.metadata.properties.version.description
Semver of this node's content. REQUIRED. Denormalized into `node.version`.

# properties.metadata.properties.specCompat.description
Semver range of spec versions this node targets.

# properties.metadata.properties.supersedes.description
`node.path` values this node replaces. Feeds the `supersedes` link kind.

# properties.metadata.properties.supersededBy.description
`node.path` that replaces this one. Inverse of `supersedes`.

# properties.metadata.properties.source.description
Canonical origin URL (e.g. GitHub blob). Consumed by enrichment plugins for hash verification.

# properties.metadata.properties.sourceVersion.description
Tag, SHA, or branch at the source. Branches are resolved dynamically by enrichment.

# properties.metadata.properties.created.description
ISO 8601 date (`YYYY-MM-DD`) or date-time.

# properties.metadata.properties.updated.description
ISO 8601 date (`YYYY-MM-DD`) or date-time.

# properties.metadata.properties.released.description
ISO 8601 date (`YYYY-MM-DD`) or date-time.

# properties.metadata.properties.requires.description
`node.path` or plugin id values this node depends on.

# properties.metadata.properties.conflictsWith.description
Nodes or plugin ids that MUST NOT be co-enabled with this one.

# properties.metadata.properties.provides.description
Capability tokens this node advertises (free-form strings).

# properties.metadata.properties.related.description
`node.path` values for see-also navigation. No strict semantics.

# properties.metadata.properties.icon.description
Free-form icon hint (emoji, lucide name, URL).

# properties.metadata.properties.priority.description
Higher = surface earlier in UI listings.

# properties.metadata.properties.readme.description
Relative or absolute path to an extended README for this node.