SchemaLock
Schema-pinned validation, completion, and hover for Kubernetes-style YAML.
How to install
With Forge Super installed, the button above opens the app on this extension, where you press Install. Nothing is installed until you do.
You can also open the Extensions panel in the app and search for SchemaLock. The extension's id is schemalock-lsp.
Don't have Forge Super yet? Download it here.
README
From the extension's repository, written by its authors and not by Mentenaz. See the source.
SchemaLock for Zed
Schema-pinned validation, completion, and hover for Kubernetes-style YAML in the Zed editor.
What it does
Registers the schemalock language server for YAML files. In a project rooted at
a schemalock.yaml, owned resources (e.g. a VMCluster) get completion, hover, and
diagnostics from the schema pinned by the nearest schemalock.yaml. Unowned YAML
is transparently proxied to yaml-language-server.
This is a thin client. The actual language server is the schemalock binary; the
extension downloads the pinned per-platform build (currently v0.3.2) from the
schemalock/schemalock GitHub releases
on first use and caches it.
Not available: the schema-version status-bar picker shipped in the VS Code and JetBrains clients is not present here — Zed extensions have no custom-UI API.
Requirements
- Network access on first use (to download the binary from GitHub releases).
- A supported platform: macOS (arm64/x64), Linux (arm64/x64), Windows (x64).
YAML language-server coexistence
If you see duplicate diagnostics or completions, Zed's built-in YAML language
server is running alongside SchemaLock. SchemaLock already proxies to
yaml-language-server internally, so make it the sole YAML server in your Zed
settings:
{
"languages": {
"YAML": {
"language_servers": ["schemalock", "!yaml-language-server"]
}
}
}
Development
rustup target add wasm32-wasip2 # the target Zed compiles extensions for
cargo build --release --target wasm32-wasip2 # verify it compiles
cargo test -p schemalock-zed-core # run unit tests
Then in Zed: command palette → zed: install dev extension → select this
directory. Zed builds the extension itself for wasm32-wasip2 using a
rustup-managed toolchain, so that target must be installed (the command above
adds it).