metal-lsp — Claude Code plugin: what it does, how to install
Brings Metal Shading Language support to Claude Code sessions through clangd. Provides inline diagnostics, hover documentation, and jump-to-definition for .metal files.
/plugin marketplace add anthropics/claude-plugins-community
/plugin install metal-lsp@claude-communityWhat metal-lsp does
The plugin configures clangd to handle Metal Shading Language (.metal) files within Claude Code CLI sessions. It registers .metal files as Metal, generates a local .clangd configuration, and maps keywords like device or kernel into compatible C++ qualifiers. This gives the agent the ability to inspect shader code and jump directly to definitions.
To resolve #include <metal_stdlib>, the plugin includes bundled stub headers. When working on macOS with Xcode or Command Line Tools installed, it switches from stubs to real Metal SDK headers.
Without clangd present in PATH, the language server will not launch. You can install the binary through Homebrew via brew install llvm or via your system package manager.
What it helps with
- catch syntax and type errors in
.metalshaders - jump to definitions across shader code and local headers
- view Metal Shading Language spec documentation on hover
- set up clangd flags and stubs for Metal keywords
Example prompts for the agent
- Check
Shaders.metalfor syntax errors and diagnostics - Find the definition of the vertex struct in
pipeline.metal - Inspect hover documentation for the kernel function in
compute.metal
How to install metal-lsp
Plugin marketplace
/plugin marketplace add anthropics/claude-plugins-community/plugin install metal-lsp@claude-communityStep by step, with commands for each platform: Claude Code plugins: marketplaces, installing, and building your own
Questions about metal-lsp
How to install metal-lsp in Claude Code?
Run /plugin marketplace add anthropics/claude-plugins-community in your Claude Code session, then execute /plugin install metal-lsp@claude-community.
What does metal-lsp do?
It configures a clangd language server scoped to .metal files. Claude Code gains diagnostics, hover tooltips, and code navigation for Metal Shading Language.
What dependencies are required beforehand?
You must have clangd installed and discoverable in your system PATH. Real Metal SDK headers also require Xcode or Command Line Tools on macOS, though bundled stubs work as a fallback.
Source text
SKILL.md · MIT
# Metal LSP Full language server features for Metal Shading Language in VSCode, Cursor, and Claude Code. Autocomplete, inline diagnostics, hover documentation, and go-to-definition for `.metal` files. Powered by clangd with Metal-aware headers. ## Features | Feature | macOS | Linux/Windows | |---------|-------|---------------| | Autocomplete (stdlib + user code) | Full (real SDK headers) | Full (stubs) | | Inline diagnostics | Full | Best-effort (C++ mode) | | Hover documentation | From MSL spec | From MSL spec | | Go-to-definition | Yes | Yes (into stubs) | | Syntax highlighting | TextMate + semantic | TextMate + semantic | | Compile-on-save diagnostics | Yes (opt-in, via `xcrun metal`) | No | ## Requirements - **clangd** — install via the [clangd extension](https://marketplace.visualstudio.com/items?itemName=llvm-vs-code-extensions.vscode-clangd), Homebrew (`brew install llvm`), or your system package manager - **macOS** (optional): Xcode or Command Line Tools for real Metal SDK headers. Without them, the extension falls back to bundled stubs. ## Installation ### VS Code / Cursor Install from the [VS Code Marketplace](https://marketplace.visualstudio.com/items?itemName=rayanhtt.metal-lsp). The extension activates automatically when your workspace contains `.metal` files. Also available on [Open VSX](https://open-vsx.org/) for VSCodium and other editors. ### Claude Code ```bash /plugin marketplace add rayanht/metal-lsp /plugin install metal-lsp@rayanht-metal-lsp ``` Or for local development: `claude --plugin-dir /path/to/metal-lsp` Provides clangd-powered diagnostics, hover docs, and go-to-definition for `.metal` files directly in Claude Code CLI sessions. Requires `clangd` in PATH. ## How It Works The extension configures clangd to understand Metal by: 1. Registering `.metal` files as the "Metal" language 2. Running its own clangd language client scoped to Metal files 3. Generating a `.clangd` config that tells clangd to parse `.metal` as C++ with Metal-compatible flags 4. Providing a compat header that maps Metal keywords (`device`, `constant`, `kernel`, etc.) to C++ type qualifiers 5. Bundling stub headers so `#include <metal_stdlib>` resolves — on macOS with Xcode, real SDK headers are used instead ## Settings | Setting | Default | Description | |---------|---------|-------------| | `metal-lsp.metalStdVersion` | `"metal3.0"` | Metal Shading Language standard version (`metal1.0` through `metal4.0`) for compile-on-save | | `metal-lsp.compileDiagnostics` | `"off"` | `"off"` or `"onSave"` — run `xcrun metal` for real compiler diagnostics (macOS only) | | `metal-lsp.includePaths` | `[]` | Additional include directories for Metal shader compilation (added as `-isystem` paths) | | `metal-lsp.compileFlags` | `[]` | Additional compile flags passed to both clangd and the Metal compiler | The workspace root is automatically added as an include path, so `#include "shared/types.h"` works out of the box if `shared/` is at your project root. The `includePaths` setting is only needed for directories outside your workspace. ## Commands - **Metal LSP: Configure** — regenerate `.clangd` configuration - **Metal LSP: Show Status** — show diagnostic info (header source, SDK path, configured folders) - **Metal LSP: Restart Language Server** — restart the clangd language client - **Metal LSP: Open Documentation** — open Apple's MSL spec ## License MIT
© rayanht · MIT · rayanht/metal-lsp