lsp-setup — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited lsp-setup (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
The plugin already ships a .lsp.json at its root with sensible defaults (latexmk-driven build, 300ms diagnostics delay, restart-on-crash). This skill explains how to verify, tune, and troubleshoot.
command -v texlab && texlab --versionExpected output: a path and a version like texlab 5.x.x. If missing, install:
| OS / package manager | Command |
|---|---|
| macOS (Homebrew) | brew install texlab |
| Arch | sudo pacman -S texlab |
| Debian/Ubuntu | sudo apt install texlab |
| Cargo (any OS) | cargo install --git https://github.com/latex-lsp/texlab --locked |
| Pre-built binary | https://github.com/latex-lsp/texlab/releases |
Note: do NOT cargo install texlab from crates.io — versions there are no longer kept current.
The shipped default (at <plugin-root>/.lsp.json):
{
"texlab": {
"command": "texlab",
"extensionToLanguage": {
".tex": "latex", ".ltx": "latex", ".sty": "latex",
".cls": "latex", ".dtx": "latex", ".bib": "bibtex"
},
"settings": {
"texlab": {
"build": {
"executable": "latexmk",
"args": ["-pdf", "-interaction=nonstopmode", "-synctex=1",
"-file-line-error", "-halt-on-error", "%f"],
"onSave": false,
"forwardSearchAfter": false
},
"diagnosticsDelay": 300,
"chktex": { "onOpenAndSave": false, "onEdit": false }
}
},
"startupTimeout": 10000,
"restartOnCrash": true,
"maxRestarts": 3
}
}Source for fields: https://github.com/latex-lsp/texlab/wiki/Configuration.
Edit settings.texlab.build.args:
"args": ["-pdfxe", "-interaction=nonstopmode", "-synctex=1",
"-file-line-error", "-halt-on-error", "%f"]Replace -pdfxe with -pdflua for LuaLaTeX.
"build": { "onSave": true, ... }Saves trigger latexmk automatically. Convenient but slows perceived save speed; off by default.
"chktex": { "onOpenAndSave": true, "onEdit": false }Adds chktex's stylistic warnings (Wrong length of dash, \: should be inserted before, etc.). Default is off because chktex is opinionated.
"forwardSearch": {
"executable": "<viewer-binary>",
"args": ["<viewer-args-with-placeholders>"]
}Examples:
| Viewer | command + args |
|---|---|
| Zathura | "zathura" + ["--synctex-forward", "%l:1:%f", "%p"] |
| SumatraPDF (Win) | "C:\\path\\SumatraPDF.exe" + ["-reuse-instance", "-forward-search", "%f", "%l", "%p"] |
| Skim (macOS) | "/Applications/Skim.app/Contents/SharedSupport/displayline" + ["-r", "%l", "%p", "%f"] |
| Evince | uses synctex-evince-backward script |
Placeholders: %f = source file, %p = PDF, %l = line.
"diagnostics": {
"allowedPatterns": ["^!", "^l\\.[0-9]+", "Reference .+ undefined", "Citation .+ undefined"],
"ignoredPatterns": ["^Overfull \\\\hbox.*"]
}Reduce noise; promote specific signals.
If your project defines custom theorem/figure environments not detected by default:
"experimental": {
"labelDefinitionCommands": ["mytheorem"],
"labelReferenceCommands": ["mycref"],
"labelDefinitionPrefixes": [["mytheorem", "thm"]]
}If a single project needs different settings than the plugin defaults, create .claude/settings.local.json in the project:
{
"lspServers": {
"texlab": {
"settings": { "texlab": { "build": { "args": [...] } } }
}
}
}Project settings merge over plugin defaults. Per-project tuning beats editing the plugin.
Executable not found in $PATHPlugin loaded but texlab binary isn't on PATH. Install (see above), then /reload-plugins or restart Claude Code.
texlab.diagnosticsDelay isn't set absurdly high.latexmk and confirm the .log is fresh.chktex.onEdit: true.texlab walks \input/\include and .aux data. If references break across files:
.aux is fresh./plugin UI, disable then re-enable the plugin.Build timeoutIncrease the LSP startup timeout:
"startupTimeout": 30000A first-run latexmk on a large document can take longer than the 10s default.
Open a .tex file in Claude Code. Confirm via the LSP tool that texlab is the active language server. Editing should produce diagnostics within ~300ms; hovering a \ref{key} should show the labeled environment.
For texlab-specific options not covered here, the canonical reference is the texlab wiki: https://github.com/latex-lsp/texlab/wiki/Configuration. For LSP integration questions specific to Claude Code, see https://code.claude.com/docs/en/plugins-reference#lsp-servers.
When in doubt about a setting's effect, delegate to /academic-latex:docs-lookup with the wiki URL.
2026-05-09 — texlab GitHub repo, wiki, and code.claude.com plugins-reference §LSP.
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.