lsp-format-code
Über
Diese Fähigkeit formatiert Code-Dateien oder Auswahlen mithilfe des Formatierers Ihres Language Servers und wendet einen konsistenten Stil wie gofmt oder Prettier an. Sie eignet sich ideal zum Bereinigen von generiertem Code oder zur Vorbereitung von Dateien für einen Commit und unterstützt sowohl die Formatierung ganzer Dateien als auch bereichsbasierte Formatierung. Sie erfordert den MCP-Server agent-lsp, um mit der Formatierungs-Engine Ihres Editors zu interagieren.
Schnellinstallation
Claude Code
Empfohlennpx skills add blackwell-systems/agent-lsp -a claude-code/plugin add https://github.com/blackwell-systems/agent-lspgit clone https://github.com/blackwell-systems/agent-lsp.git ~/.claude/skills/lsp-format-codeKopieren Sie diesen Befehl und fügen Sie ihn in Claude Code ein, um diese Fähigkeit zu installieren
Dokumentation
Requires the agent-lsp MCP server.
lsp-format-code
Format a file or selection using the language server's formatter — the same formatting engine your IDE uses. Applies language-specific rules (gofmt, prettier, rustfmt, black) without requiring those tools to be on PATH separately.
When to use
- Before committing: ensure consistent style across edited files
- After generating code: clean up AI-generated indentation and spacing
- After a refactor that shifted indentation levels
- When a linter flags style violations fixable by the formatter
Use /lsp-safe-edit instead when you are making a logic change and want
before/after diagnostic comparison alongside the edit.
Workflow
Step 1 — Check formatting is supported (optional)
If unsure whether the language server supports formatting for this file, check capabilities first:
mcp__lsp__get_server_capabilities({ "file_path": "<file>" })
Look for documentFormattingProvider (full-file) and
documentRangeFormattingProvider (range). If neither is present, the server
does not support formatting — stop and report.
Skip this step if you know the language supports formatting (Go, TypeScript, Rust, Python all do via their standard servers).
Step 2 — Open the file
mcp__lsp__open_document({ "file_path": "/abs/path/to/file.go", "language_id": "go" })
Step 3 — Request formatting edits
Full file:
mcp__lsp__format_document({ "file_path": "/abs/path/to/file.go" })
Selection only:
mcp__lsp__format_range({
"file_path": "/abs/path/to/file.go",
"start_line": <N>,
"end_line": <M>
})
Both return TextEdit[] — a list of replacements to apply. They do not
write to disk. If the list is empty, the file is already correctly formatted.
Step 4 — Apply the edits
Pass the TextEdit[] from Step 3 to apply_edit:
mcp__lsp__apply_edit({ "workspace_edit": <TextEdit[] from Step 3> })
This writes the formatting changes to disk.
Step 5 — Verify (optional but recommended)
Call get_diagnostics to confirm formatting did not introduce any errors:
mcp__lsp__get_diagnostics({ "file_path": "/abs/path/to/file.go" })
Formatting should never introduce errors — if it does, report immediately without committing.
Output format
## Format result: <filename>
Changes applied: N edits
Lines affected: <range or "whole file">
Formatter: <gopls | typescript-language-server | rust-analyzer | ...>
Status: FORMATTED ✓
If no edits were returned:
Status: ALREADY FORMATTED — no changes needed
If formatting is not supported:
Status: NOT SUPPORTED — <server> does not expose documentFormattingProvider
Fallback: run the formatter directly (gofmt, prettier, rustfmt, etc.)
Multi-file formatting
For formatting multiple files (e.g. all files changed in a PR):
- Call
format_documentfor each file — these can run in parallel. - Collect all
TextEdit[]responses. - Apply each file's edits via
apply_editsequentially. - Report total edits across all files.
Do not apply edits from multiple files in a single apply_edit call —
apply per-file to keep changes scoped and reversible.
Decision guide
| Situation | Action |
|---|---|
| Formatting a whole file before commit | format_document → apply_edit |
| Formatting only generated code in a function | format_range with the function's line range |
Empty TextEdit[] returned | File is already formatted — no action needed |
| Server doesn't support formatting | Report and suggest running CLI formatter directly |
| Formatting introduces diagnostics | Do not commit — report immediately |
| Formatting a Go file in a workspace repo | Ensure GOWORK=off is set if running via shell fallback |
Language notes
| Language | Formatter | Server |
|---|---|---|
| Go | gofmt (via gopls) | gopls |
| TypeScript / JavaScript | prettier or built-in (via typescript-language-server) | typescript-language-server |
| Rust | rustfmt (via rust-analyzer) | rust-analyzer |
| Python | black or autopep8 (via pyright/pylsp) | pyright-langserver or pylsp |
| C / C++ | clang-format (via clangd) | clangd |
The language server delegates to the language's standard formatter — results match what your IDE would produce.
GitHub Repository
Verwandte Skills
content-collections
MetaDiese Skill bietet eine produktionsgetestete Einrichtung für Content Collections – ein TypeScript-first-Tool, das Markdown/MDX-Dateien in typsichere Datensammlungen mit Zod-Validierung umwandelt. Verwenden Sie ihn beim Erstellen von Blogs, Dokumentationsseiten oder inhaltsstarken Vite + React-Anwendungen, um Typsicherheit und automatische Inhaltsvalidierung zu gewährleisten. Er behandelt alles von der Vite-Plugin-Konfiguration und MDX-Kompilierung bis hin zur Deployment-Optimierung und Schema-Validierung.
polymarket
MetaDiese Fähigkeit ermöglicht es Entwicklern, Anwendungen mit der Polymarket-Prognosemärkte-Plattform zu erstellen, einschließlich API-Integration für Handel und Marktdaten. Sie bietet außerdem Echtzeit-Datenstreaming über WebSocket, um Live-Trades und Marktaktivitäten zu überwachen. Nutzen Sie sie zur Implementierung von Handelsstrategien oder zur Erstellung von Tools, die Live-Marktaktualisierungen verarbeiten.
creating-opencode-plugins
MetaDiese Fähigkeit unterstützt Entwickler dabei, OpenCode-Plugins zu erstellen, die in über 25 Ereignistypen wie Befehle, Dateien und LSP-Operationen eingreifen. Sie bietet die Plugin-Struktur, Event-API-Spezifikationen und Implementierungsmuster für JavaScript/TypeScript-Module. Nutzen Sie sie, wenn Sie den Lebenszyklus des OpenCode KI-Assistenten mit benutzerdefinierter ereignisgesteuerter Logik abfangen, überwachen oder erweitern müssen.
sglang
MetaSGLang ist ein hochperformantes LLM-Serving-Framework, das sich auf schnelle, strukturierte Generierung für JSON, Regex und agentenbasierte Workflows unter Verwendung seines RadixAttention-Prefix-Cachings spezialisiert. Es bietet deutlich schnellere Inferenz, insbesondere für Aufgaben mit wiederholten Präfixen, was es ideal für komplexe, strukturierte Ausgaben und Mehrfachdialoge macht. Wählen Sie SGLang gegenüber Alternativen wie vLLM, wenn Sie constrained decoding benötigen oder Anwendungen mit umfangreicher Präfix-Weitergabe entwickeln.
