lsp-format-code
О программе
Этот навык форматирует файлы кода или выделенные фрагменты с помощью форматировщика вашего языкового сервера, применяя единообразный стиль, подобный gofmt или Prettier. Он идеально подходит для очистки сгенерированного кода или подготовки файлов к коммиту, поддерживая как полное форматирование файлов, так и форматирование выбранных диапазонов. Для работы требуется сервер MCP agent-lsp для взаимодействия с механизмом форматирования вашего редактора.
Быстрая установка
Claude Code
Рекомендуетсяnpx 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-codeСкопируйте и вставьте эту команду в Claude Code для установки этого навыка
Документация
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 репозиторий
Похожие навыки
content-collections
МетаЭтот навык предоставляет проверенную в продакшене настройку для Content Collections — TypeScript-ориентированного инструмента, который преобразует файлы Markdown/MDX в типобезопасные коллекции данных с валидацией Zod. Используйте его при создании блогов, сайтов документации или контентных приложений на Vite + React для обеспечения типобезопасности и автоматической проверки содержимого. Он охватывает всё: от настройки плагина Vite и компиляции MDX до оптимизации развертывания и валидации схем.
polymarket
МетаЭтот навык позволяет разработчикам создавать приложения на платформе прогнозных рынков Polymarket, включая интеграцию с API для торговли и получения рыночных данных. Он также обеспечивает потоковую передачу данных в реальном времени через WebSocket для отслеживания текущих сделок и рыночной активности. Используйте его для реализации торговых стратегий или создания инструментов, обрабатывающих обновления рынка в реальном времени.
creating-opencode-plugins
МетаЭтот навык помогает разработчикам создавать плагины OpenCode, которые подключаются к более чем 25 типам событий, таким как команды, файлы и операции LSP. Он предоставляет структуру плагина, спецификации API событий и шаблоны реализации для модулей на JavaScript/TypeScript. Используйте его, когда вам нужно перехватывать, отслеживать или расширять жизненный цикл ассистента OpenCode AI с помощью пользовательской событийно-ориентированной логики.
sglang
МетаSGLang — это высокопроизводительный фреймворк для обслуживания больших языковых моделей (LLM), специализирующийся на быстрой структурированной генерации JSON, regex и рабочих процессов агентов с использованием кэширования префиксов RadixAttention. Он обеспечивает значительно более высокую скорость вывода, особенно для задач с повторяющимися префиксами, что делает его идеальным для сложных структурированных результатов и многократных диалогов. Выбирайте SGLang вместо альтернатив, таких как vLLM, когда вам требуется ограниченное декодирование или вы создаете приложения с интенсивным совместным использованием префиксов.
