kind: "extension" and JSON syntax. The registry exposes the kind-specific schema; the SDK’s parsePluginManifest adds semantic checks that JSON Schema cannot express.
Example
Required runtime fields
All fields below live at the manifest root alongsidename, version and kind. Empty arrays are valid where a plugin declares no corresponding feature.
Service names:
project, data, db, cache, jobs, events, storage, secrets, http, audit, log.
UI slots: project.overview.panel, project.actions, operator.plugin.settings. Paths cannot contain traversal, query strings or external origins.
Capabilities
An action, job or UI slot may request only capabilities declared by its plugin. Read actions cannot request mutation capabilities. Capabilities in a manifest are requests, not grants; host authorization still depends on the installation, actor and customer/project scope.
Data migrations
The v1 contract allowscreateTable, addNullableColumn, createIndex and addForeignKey. Checksums are SHA-256 hexadecimal values. Migration versions must start at 1 and remain contiguous; tables must agree with declared key columns and foreign-key targets. Arbitrary SQL, executable migration code, destructive schema changes and backfills are outside this contract.
Validation and trust
The registry schema validates structure and preserves the declared extension. The Webdock SDK additionally checks SemVer ranges, dependency uniqueness, readable-schema compatibility, migration ordering, capability relationships, event handlers and key references. Passing the registry validator is necessary but insufficient for host admission. The planned host installer verifies the signed release identity, manifest and descriptor hashes, selected asset size and image digest against operator-established trust. The public signing key is athttps://registry.webdock.dev/.well-known/registry-key.json; fetching that key alone does not establish trust.
Catalog metadata, publication approval and an MCP login do not activate a runtime. See current implementation status.