zed-extension-creator
Zed Extension Creator
A Zed extension is a Git repository with an extension.toml manifest that adds capability to the editor. Any procedural logic (a language server adapter, MCP server launcher, or debug adapter) is written in Rust, compiled to WebAssembly against the zed_extension_api crate. Many extensions (languages defined purely by a grammar + queries, themes, icon themes, snippets) need no Rust at all — just data files.
This skill takes someone from "I want to add X to Zed" to a tested, dev-installed, publish-ready extension. Work through the steps below in order; jump into the matching reference file for the deep detail on the specific type being built.
Step 0 — Establish what's being built
Zed extensions come in distinct flavors, and the flavor decides almost everything (whether you need Rust, what files go where, what the manifest declares). Pin this down first, because building a "language extension" and a "language server extension" are different jobs that happen to live in the same repo.
| Goal | Needs Rust? | Read this reference |
|---|---|---|
| Syntax highlighting / indentation / outline for a language (grammar + queries) | No | references/languages.md |
| Run a language server (LSP) for a language — completions, diagnostics, go-to-def | Yes | references/language-servers.md (+ references/languages.md for the language half) |
| A color theme | No | references/themes.md |
| An icon theme (file/folder icons) | No | references/themes.md (icon section) |
| Expose an MCP / context server to the Agent Panel | Yes | references/context-servers.md |
| A debug adapter (DAP) and/or debug locator | Yes | references/debug-adapters.md |
| Code snippets | No | references/snippets.md |