Full code quality audit for a file, package, or directory. An agent skill from blackwell-systems/agent-lsp.

MITAuto-check: notesDevelopment

Install Lsp Inspect

skills CLI
$ npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install blackwell-systems/agent-lsp lsp-inspect --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/blackwell-systems/agent-lsp.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/lsp-inspect .claude/skills/lsp-inspect && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
lsp-inspect
GitHub stars
160
Token cost
~4.2k tokens
SKILL.md length
1,723 words
Files
1
Skills in repo
24
Repo updated
First seen
Licence
MIT

At a glance

Full code quality audit for a file, package, or directory. An agent skill from blackwell-systems/agent-lsp.

  • Works in 8 steps: Initialize and verify workspace → 5: Diff mode file selection → Batch analysis (Tier 1A) → …
  • Tasks that involve Test coverage
  • SKILL.md covers When to Use, Input, Check Taxonomy and Execution, plus 1 more section
  • Calls go and git

What it does

Lsp Inspect is an agent skill from blackwell-systems/agent-lsp. Full code quality audit for a file, package, or directory. Supports batch mode (directory walk with --top ranking), comparison mode (--diff for branch-only issues), severity calibration by blast radius, fix suggestions, and confidence tiers. Applies a check taxonomy (dead symbols, silent failures, error wrapping, coverage gaps, test coverage, doc drift, unrecovered panics, context propagation, concurrency safety) using LSP-first strategies. Concurrency checks cover 25 languages across 4 families (goroutine…

Its SKILL.md is about 4.2k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts. Compatibility notes: Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp)

It sits in Development, covering Test coverage, Async programming and Code quality. The repository describes itself as: MCP server that orchestrates language servers into agent-native workflows. 65 tools, 30 CI-verified languages. The licence is MIT.

When your agent uses it

  • Tasks that involve Test coverage
  • Tasks that involve Async programming
  • Tasks that involve Code quality

Example prompts

  • “/lsp-inspect”

Requirements

  • Compatibility (from SKILL.md): Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp)
  • Pre-approved tools (allowed-tools): mcp__lsp__start_lsp, mcp__lsp__open_document, mcp__lsp__blast_radius, mcp__lsp__find_references, mcp__lsp__list_symbols, mcp__lsp__inspect_symbol, mcp__lsp__get_diagnostics, mcp__lsp__find_callers, mcp__lsp__go_to_definition, mcp__lsp__get_server_capabilities, mcp__lsp__get_cross_repo_references, Bash

Workflow steps

8 steps, taken from the step headings in SKILL.md.

  1. Initialize and verify workspace
  2. 5: Diff mode file selection
  3. Batch analysis (Tier 1A)
  4. Heuristic checks (LLM-driven)
  5. Cross-check and classify
  6. Output
  7. 5: Batch ranking
  8. Persist results

What it can do on your machine

Read from SKILL.md and the folder at commit 38ca488. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves these tools, so the agent can use them without asking each time:

    • mcp__lsp__start_lsp
    • mcp__lsp__open_document
    • mcp__lsp__blast_radius
    • mcp__lsp__find_references
    • mcp__lsp__list_symbols
    • mcp__lsp__inspect_symbol
    • mcp__lsp__get_diagnostics
    • mcp__lsp__find_callers
    • mcp__lsp__go_to_definition
    • mcp__lsp__get_server_capabilities

    …and 2 more on the same allowed-tools line.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • go
    • git

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md. Its commands use git, which can reach the network depending on how they are called.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

  • Compatibility

    Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp)

    From compatibility in the SKILL.md frontmatter.

Context cost

Lsp Inspect loads about 4.2k tokens when it runs. Until then it costs about 153 tokens; SKILL.md has 1,723 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~153
When it runs · the whole SKILL.md, loaded when a task matches
~4.2k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check: notes

The automated check noted patterns worth knowing about, such as sudo or a known installer.

  • NotePre-approves every shell command (allowed-tools: Bash)SKILL.md
    allowed-tools: mcp__lsp__start_lsp, mcp__lsp__open_document, mcp__lsp__blast_radius, mcp__lsp__find_references, mcp

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from blackwell-systems/agent-lsp at commit 38ca488, republished under its MIT licence (© blackwell-systems). 1,723 words, ~4,200 tokens.

Download SKILL.mdSave it as .claude/skills/lsp-inspect/SKILL.md (or your agent's skills folder).
name
lsp-inspect
description
Full code quality audit for a file, package, or directory. Supports batch mode (directory walk with --top ranking), comparison mode (--diff for branch-only issues), severity calibration by blast radius, fix suggestions, and confidence tiers. Applies a check taxonomy (dead symbols, silent failures, error wrapping, coverage gaps, test coverage, doc drift, unrecovered panics, context propagation, concurrency safety) using LSP-first strategies. Concurrency checks cover 25 languages across 4 families (goroutine, thread, async, actor). Produces a severity-tiered findings report. Language-agnostic.
allowed-tools
mcp__lsp__start_lsp, mcp__lsp__open_document, mcp__lsp__blast_radius, mcp__lsp__find_references, mcp__lsp__list_symbols, mcp__lsp__inspect_symbol, mcp__lsp__get_diagnostics, mcp__lsp__find_callers, mcp__lsp__go_to_definition, mcp__lsp__get_server_capabilities, mcp__lsp__get_cross_repo_references, Bash
compatibility
Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp)
argument-hint
<file-or-directory> [--checks <type1>,<type2>] [--json] [--top N] [--diff]
user-invocable
true
license
MIT
metadata.required-capabilities
documentSymbolProvider referencesProvider
metadata.optional-capabilities
callHierarchyProvider

Requires the agent-lsp MCP server.

lsp-inspect

Full code quality audit for a file, package, or directory. Combines LSP batch analysis (blast_radius) with targeted per-symbol checks and LLM-driven heuristic analysis. Produces a severity-tiered findings report with confidence tiers and fix suggestions.

When to Use

  • Auditing a package before a release or major refactor
  • Finding dead code, untested exports, and error handling gaps in unfamiliar code
  • Reviewing code quality of an external codebase for contribution opportunities
  • Pre-merge quality gate on a set of changed files
  • Batch inspection of an entire directory with ranked output
  • Comparing branch changes against main to find newly introduced issues

Input

/lsp-inspect <target> [--checks <type1>,<type2>] [--json] [--top N] [--diff]

Target can be:

  • A file path: /lsp-inspect src/handlers/auth.go
  • A directory/package: /lsp-inspect internal/runnables/
  • Multiple targets: /lsp-inspect pkg/a.go pkg/b.go

Directory detection: When target is a directory, walk all .go, .ts, .py files in it recursively. Produce a ranked report: "Top N findings sorted by severity then blast radius."

Flags:

  • --checks <type1>,<type2>: only run listed check types (default: all applicable)
  • --json: emit structured JSON instead of markdown
  • --top N: Maximum findings to report (default 20). Only applies to directory/batch mode.
  • --diff: Only inspect files changed vs main branch. Filter findings to lines within the diff ranges. Output header: "New issues introduced by this branch."

Check Taxonomy

CheckWhat it findsLSP strategy
dead_symbolExported symbol with zero referencesTier 1A: blast_radius batch; Tier 1B: find_references per-symbol
test_coverageExported symbol with no test callersTier 1A: blast_radius test_callers field
silent_failureError/exception suppressed without re-raise or loggingRead code, identify bare except:, empty if err != nil {}, swallowed returns
error_wrappingError returned/raised without contextRead code, identify return err without fmt.Errorf wrapping or raise without from
coverage_gapUnhandled input, error path, or code branchRead code, identify switch/match without default, unchecked type assertions
doc_driftDocstring/comment that doesn't match the actual signatureCompare inspect_symbol hover text against source
panic_not_recoveredUnhandled crash in a goroutine or async contextRead code, identify go func() without recover, unguarded .unwrap()
context_propagationFunction receives context but creates a fresh root for calleesRead code, identify context.Background() in functions with ctx parameter
unrecovered_concurrent_entryConcurrent entry point without recoveryRead code, identify goroutines/threads/tasks without try-catch or recover
unchecked_shared_stateType assertion or cast on concurrent data structure without safety checkRead code, identify bare .(*Type) on sync.Map, unchecked casts on ConcurrentHashMap
channel_never_closedChannel or queue created but never closed in the same packageRead code + grep, find creation sites without matching close/shutdown
shared_field_without_syncField accessed from concurrent contexts without synchronizationblast_radius (sync_guarded) + find_callers (cross_concurrent)

Execution

Step 0: Initialize and verify workspace
mcp__lsp__start_lsp(root_dir="<repo_root>")

Open one file per package being audited:

mcp__lsp__open_document(file_path="<target_file>", language_id="<lang>")

Warm-up check (mandatory): Pick one symbol you know is actively used. Call find_references on it. If it returns [], wait 3-5 seconds and retry. Do not proceed until a known-active symbol returns >= 1 reference.

Step 0.5: Diff mode file selection

When --diff is set:

  1. Run git diff --name-only main to get changed files
  2. Run git diff main to get line-level change ranges
  3. Use only changed files as inspection targets
  4. After Step 3, filter findings: keep only those whose File:Line falls within a changed line range from the diff
  5. Prepend output with: '## New issues introduced by this branch'
Step 1: Batch analysis (Tier 1A)

Call blast_radius once per file in the target:

mcp__lsp__blast_radius(changed_files=["/abs/path/file.go"], include_transitive=false)

This returns all exported symbols with:

  • non_test_callers: count of production code references
  • test_callers: count of test file references

Classify immediately:

  • non_test_callers == 0 AND test_callers == 0 -> dead symbol candidate (confidence: verified)
  • non_test_callers == 0 AND test_callers > 0 -> test-only (may be dead, confidence: suspected)
  • non_test_callers > 0 AND test_callers == 0 -> untested export (confidence: verified)

If blast_radius fails or is unavailable, fall back to Tier 1B (find_references per-symbol) for dead_symbol checks.

Step 2: Heuristic checks (LLM-driven)

Read the source code of each file (use offset/limit for files over 500 lines). Apply the following checks by reading and reasoning about the code:

silent_failure: Look for:

  • Go: if err != nil { return } (no error returned), bare _ = fn()
  • Python: bare except: or except Exception: pass
  • TypeScript: empty .catch(() => {}), try {} catch(e) {}
  • Rust: .unwrap_or_default() on fallible ops that should propagate

error_wrapping: Look for:

  • Go: return err without fmt.Errorf("context: %w", err)
  • Python: raise ValueError(str(e)) without from e
  • TypeScript: throw e without wrapping in a contextual error

coverage_gap: Look for:

  • Switch/match without exhaustive cases or default branch
  • Unchecked type assertions (v := x.(Type) vs v, ok := x.(Type))
  • Missing nil/null checks before dereference after fallible calls

doc_drift: For exported functions, compare:

  • Parameter names in docstring vs actual signature
  • Return type described in doc vs actual return
  • Use inspect_symbol hover text to cross-reference

panic_not_recovered: Look for:

  • Go: go func() { ... }() without defer recover()
  • Rust: .unwrap() or .expect() in non-test, non-main code
  • Python: bare thread creation without exception handling

context_propagation: Look for:

  • Functions that accept ctx context.Context but call context.Background() or context.TODO() internally

unrecovered_concurrent_entry: Detect concurrent entry points without recovery. Language-specific patterns (check by language family):

  • Go: go func() { ... }() where the function body has no defer func() { if r := recover() pattern. Weight: library transport code (error severity), application code with middleware protection (info).
  • Java/Kotlin/Scala: new Thread(...) or ExecutorService.submit(...) without try-catch wrapping the Runnable body, and no UncaughtExceptionHandler set on the thread.
  • C#: Task.Run(...) or new Thread(...) without try-catch in the delegate body.
  • C/C++: pthread_create or std::thread without exception handling in the thread function.
  • Rust: std::thread::spawn without catch_unwind in the closure. Also flag .unwrap() inside spawned threads (panics kill only that thread but lose the error).
  • Swift: DispatchQueue.async or Task { } without do-catch.
  • Python: threading.Thread(target=...) without try-except in the target function. asyncio.create_task() without error handling on the awaited result.
  • TypeScript/JavaScript: new Worker() without onerror or error event handler. Promise constructor without .catch() on the chain.
  • Zig: try std.Thread.spawn without error handling on the spawned function.
  • Elixir/Erlang/Gleam: Skip (actor model with supervisors; unrecovered processes are by design).
  • Lua/Bash/SQL: Skip (no concurrency primitives).

unchecked_shared_state: Detect unsafe type operations on concurrent data structures:

  • Go: sync.Map .Load(), .LoadOrStore(), or .LoadAndDelete() followed by a bare type assertion actual.(*Type) without the , ok pattern. The safe pattern is v, ok := actual.(*Type).
  • Java: ConcurrentHashMap.get() with unchecked cast and no instanceof guard.
  • C#: ConcurrentDictionary value retrieval with unchecked cast.
  • Other languages: skip (dynamic typing or type system prevents this class of bug).

channel_never_closed: Detect channels or queues that are created but never closed:

  • Go: make(chan T) or make(chan T, N) where close(channelName) does not appear in the same package. May indicate goroutine leaks (receivers block on range forever).
  • Python: queue.Queue() creation without a sentinel value pattern (queue.put(None) + if item is None: break).
  • Rust: mpsc::channel() where the sender is never dropped or explicitly closed.
  • TypeScript: new MessageChannel() or new BroadcastChannel() without .close().
  • Java: BlockingQueue creation without a poison pill or shutdown pattern.
  • Other languages: skip if no channel/queue primitives.

shared_field_without_sync: Detect struct/class fields accessed from multiple concurrent contexts without synchronization. This check composes two tools:

  1. Call blast_radius on the target file. For each symbol where sync_guarded: false (or absent), the symbol's type lacks sync primitives.
  2. For each such symbol, call find_callers with cross_concurrent: true. If concurrent_callers is non-empty, the symbol is called from a concurrent context (goroutine, thread, async task) without synchronization.
  3. Flag any symbol where: (a) it modifies state (writes to fields, not a pure read-only function), AND (b) it has concurrent callers, AND (c) its parent type is not sync-guarded.

Language-agnostic: blast_radius provides sync_guarded, find_callers provides concurrent_callers. The check logic is identical regardless of whether the concurrent boundary is a goroutine, thread, or async task.

Severity:

  • error: field written from 2+ concurrent contexts with no sync (data race)
  • warning: field written from 1 concurrent context (potential race under load)
  • info: field read-only from concurrent contexts (likely safe, but flag for review)
Show full SKILL.md (466 more words)Show less
Step 3: Cross-check and classify

For each finding, assign:

Severity (calibrated by blast radius):

  • error: Will cause runtime failure, data loss, or resource leak, OR any finding where non_test_callers >= 10 (high blast radius amplifies severity)
  • warning: May cause confusion, maintenance burden, or subtle bugs, OR findings where non_test_callers is 3-9
  • info: Style issue or improvement opportunity, OR non_test_callers <= 2

Use the non_test_callers count from Step 1's blast_radius result as a severity multiplier. A silent failure in a function with 50 callers is error-severity; the same pattern with 2 callers is info.

Cross-file impact scoring: For every finding, look up the symbol's non_test_callers count from Step 1's blast_radius result. Use this as a severity multiplier: if non_test_callers >= 10, escalate severity by one tier (info->warning, warning->error). Document the caller count in the finding.

Confidence tiers:

  • verified: LSP-confirmed (Tier 1A/1B) or unambiguous code pattern (act immediately)
  • suspected: Heuristic match with possible false positive (pattern match, investigate first)
  • advisory: Grep-based or uncertain pattern match (style, optional)
Step 4: Output

Produce the findings report:

markdown
## Inspection Report: <target>

**Files analyzed:** N
**Checks applied:** [list]
**Findings:** E errors, W warnings, I info

### Errors

| # | Check | File:Line | Finding | Confidence | Fix |
|---|-------|-----------|---------|------------|-----|
| 1 | dead_symbol | pkg/foo.go:42 | `UnusedHelper` has 0 references (0 callers) | verified (LSP) | Remove lines 42-55 (function `UnusedHelper`) |

### Warnings

| # | Check | File:Line | Finding | Confidence | Fix |
|---|-------|-----------|---------|------------|-----|
| 1 | error_wrapping | pkg/bar.go:88 | `return err` without context wrapping (5 callers) | verified | Change `return err` to `return fmt.Errorf("funcName: %w", err)` |
| 2 | test_coverage | pkg/foo.go:15 | `ProcessInput` has 0 test callers (8 callers) | verified (LSP) | Add test for `ProcessInput` in foo_test.go |

### Info

| # | Check | File:Line | Finding | Confidence | Fix |
|---|-------|-----------|---------|------------|-----|
| 1 | doc_drift | pkg/foo.go:20 | Docstring mentions `timeout` param, signature has `deadline` (1 caller) | suspected | Update docstring parameter name from timeout to deadline |

Fix suggestions per check type:

  • dead_symbol: "Remove lines N-M (function FuncName)"
  • error_wrapping: "Change return err to return fmt.Errorf(\"funcName: %w\", err)"
  • silent_failure: "Add return fmt.Errorf(...) after the if block"
  • test_coverage: "Add test for FuncName in file_test.go"
  • coverage_gap: "Add default case to switch statement at line N"
  • doc_drift: "Update docstring parameter name from X to Y"
  • panic_not_recovered: "Add defer func() { if r := recover()... }() at goroutine start"
  • context_propagation: "Replace context.Background() with ctx parameter"

When --json is passed, emit structured JSON with the same fields.

Step 4.5: Batch ranking

When multiple files are analyzed, sort all findings by: (1) severity tier (error > warning > info), (2) blast radius (non_test_callers descending), (3) file path alphabetically. Emit only the top N findings (default 20, controlled by --top flag). Append a summary line: 'Showing N of M total findings.'

Step 5: Persist results

After producing the findings report, write a JSON file to .agent-lsp/last-inspection.json in the workspace root. The JSON schema:

json
{
  "target": "<original target path>",
  "timestamp": "<ISO 8601>",
  "files_analyzed": N,
  "findings": [
    {
      "severity": "error|warning|info",
      "confidence": "verified|suspected|advisory",
      "check": "<check_type>",
      "file": "<path>",
      "line": N,
      "finding": "<description>",
      "fix": "<exact fix text>",
      "blast_radius": N
    }
  ],
  "summary": {"errors": N, "warnings": N, "info": N}
}

This file is served by the inspect://last MCP resource for programmatic access.

Caveats

  1. Re-exports: Symbols in __init__.py (Python), index.ts (TypeScript), or public API surface files may appear dead locally but are consumed externally. Check __all__, barrel exports, and package-level re-exports before classifying.

  2. Registration patterns: Symbols passed as values to framework registrars (HTTP handlers, plugin hooks) show zero LSP references. Grep wiring files before confirming dead.

  3. Library public API: If the target is a library consumed by external repos, zero internal references doesn't mean dead. Use --consumer-repos or note as "library export, verify externally."

  4. Heuristic checks are advisory. Silent failure and error wrapping checks depend on LLM reasoning about intent. False positives are expected; always review before acting on findings.

  5. Large files: For files over 500 lines, read targeted sections (use offset/limit). Do not read entire large files into context.

© blackwell-systems, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/lsp-inspect of blackwell-systems/agent-lsp.

Open the folder on GitHubat commit 38ca488

Compare with similar skills

Lsp Inspect next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Lsp Inspect compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Lsp Inspect this skillblackwell-systems/agent-lsp160—~4.2kAutomated safety check: NotesMIT
Constraint-Driven Developmentaddyosmani/agent-skills105k2 repos~5.2kAutomated safety check: PassMIT
Health Checkcodewithmukesh/dotnet-claude-kit7561 repos~1.6kAutomated safety check: PassMIT
Review PRjeremylongshore/tons-of-skills-marketplace2.8k—~1.1kAutomated safety check: NotesMIT
Code Review Skillawesome-skills/code-review-skill2.1k—~2.8kAutomated safety check: NotesMIT
Code ReviewerYikai-Liao/symusic1891 repos~1.3kAutomated safety check: PassMIT

Similar skills

  • Constraint-Driven Development

    addyosmani/agent-skills

    Records a project's quality bar in CONSTRAINTS.md and watches diffs for signs an agent quietly weakened it, such as suppressions, skipped tests or lowered thresholds.

    105k GitHub starsUsed in 2 repos~5.2k tokens
    DevelopmentAuto-check passed
  • Health Check

    codewithmukesh/dotnet-claude-kit

    Multi-dimensional health assessment for .NET projects with letter grades (A-F) using Roslyn MCP tools.

    756 GitHub starsUsed in 1 repo~1.6k tokens
    DevelopmentAuto-check passed
  • Review PR

    jeremylongshore/tons-of-skills-marketplace

    Reviews an open pull request against coding standards, security, and test coverage, then posts a structured review comment and either approves or requests changes.

    2.8k GitHub stars~1.1k tokensUpdated yesterday
    DevelopmentAuto-check: notes
  • Code Review Skill

    awesome-skills/code-review-skill

    Provides comprehensive code review guidance for React 19, Vue 3, Angular 17+, Svelte 5, Rust, TypeScript, Java, Java 8, PHP, Ruby, Rails, Python, Django, FastAPI, Go, C/.NET, Kotlin, Swift, Dart…

    2.1k GitHub stars~2.8k tokensUpdated 1 mo ago
    DevelopmentAuto-check: notes
  • Code Reviewer

    Yikai-Liao/symusic

    Analyzes code diffs and files to identify bugs, security vulnerabilities (SQL injection, XSS, insecure deserialization), code smells, N+1 queries, naming issues, and architectural concerns, then…

    189 GitHub starsUsed in 1 repo~1.3k tokens
    DevelopmentAuto-check passed
  • Covers ES6+ syntax and functional patterns for refactoring older JavaScript: async/await, destructuring, spread, modules, generators and data pipelines.

    40k GitHub starsUsed in 12 repos~548 tokens
    DevelopmentAuto-check passed

More from blackwell-systems/agent-lsp

All 24 skills in this repo
  • Lsp Dead Code

    blackwell-systems/agent-lsp

    Enumerate exported symbols in a file and surface those with zero references across the workspace.

    160 GitHub stars~2.4k tokensUpdated yesterday
    Auto-check passed
  • Lsp Edit Export

    blackwell-systems/agent-lsp

    Safe workflow for editing exported symbols or public APIs. An agent skill from blackwell-systems/agent-lsp.

    160 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed
  • Lsp Fix All

    blackwell-systems/agent-lsp

    Apply available quick-fix code actions for all current diagnostics in a file, one at a time with re-collection between each fix.

    160 GitHub stars~1.6k tokensUpdated yesterday
    Auto-check passed
  • Lsp Generate

    blackwell-systems/agent-lsp

    Trigger language server code generation — implement interface stubs, generate test skeletons, add missing methods, generate mock types.

    160 GitHub stars~1.4k tokensUpdated yesterday
    Auto-check passed
  • Lsp Impact

    blackwell-systems/agent-lsp

    Blast-radius analysis for a symbol or file — shows all callers, type supertypes/subtypes, and reference count before you change it.

    160 GitHub stars~1.8k tokensUpdated yesterday
    Auto-check passed
  • Lsp Rename

    blackwell-systems/agent-lsp

    Two-phase safe rename across the entire workspace. An agent skill from blackwell-systems/agent-lsp.

    160 GitHub stars~1.9k tokensUpdated yesterday
    Auto-check passed

Questions about Lsp Inspect

What does Lsp Inspect do?

Full code quality audit for a file, package, or directory. An agent skill from blackwell-systems/agent-lsp. Lsp Inspect is an agent skill from blackwell-systems/agent-lsp. Full code quality audit for a file, package, or directory.

When should I use Lsp Inspect?

Lsp Inspect fits situations like: tasks that involve Test coverage; tasks that involve Async programming; tasks that involve Code quality.

How do I install Lsp Inspect in Claude Code?

Run `npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a claude-code`. Or copy the skill folder (skills/lsp-inspect in blackwell-systems/agent-lsp) into .claude/skills/lsp-inspect in your project. Claude Code loads it when a task matches its description.

How do I install Lsp Inspect in Codex?

Run `npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a codex`. Or copy the skill folder (skills/lsp-inspect in blackwell-systems/agent-lsp) into .agents/skills/lsp-inspect in your project. Codex loads it when a task matches its description.

Can I use Lsp Inspect in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/lsp-inspect, .gemini/skills/lsp-inspect, .github/skills/lsp-inspect and .opencode/skills/lsp-inspect in your project.

What does Lsp Inspect need to run?

Going by SKILL.md and its folder, Lsp Inspect needs the command-line tools its instructions call (go and git). Its frontmatter pre-approves these tools: mcp__lsp__start_lsp, mcp__lsp__open_document, mcp__lsp__blast_radius, mcp__lsp__find_references, mcp__lsp__list_symbols, mcp__lsp__inspect_symbol, mcp__lsp__get_diagnostics, mcp__lsp__find_callers, mcp__lsp__go_to_definition, mcp__lsp__get_server_capabilities, mcp__lsp__get_cross_repo_references, Bash. Compatibility (from SKILL.md): Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp).

Does Lsp Inspect access the network?

SKILL.md contains no URLs. Its commands use git, which can reach the network depending on how they are called. This is read from the text; nothing was executed.

Is Lsp Inspect safe to install?

Our automated static check of SKILL.md found notes only (pre-approves every shell command (allowed-tools: bash)), nothing it rates as a warning. It is not a guarantee. Review the folder before installing.

What licence does Lsp Inspect use?

Lsp Inspect is published under the MIT licence (declared in SKILL.md). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Lsp Inspect use?

About 4.2k tokens (SKILL.md is roughly 17k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Lsp Inspect?

Skills that share tags, products or a category with Lsp Inspect: Constraint-Driven Development (addyosmani/agent-skills, 105k stars), Health Check (codewithmukesh/dotnet-claude-kit, 756 stars), Review PR (jeremylongshore/tons-of-skills-marketplace, 2.8k stars) and Code Review Skill (awesome-skills/code-review-skill, 2.1k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Lsp Inspect?

blackwell-systems (a GitHub user) maintains it in blackwell-systems/agent-lsp, which has 160 GitHub stars. The repository holds 24 skills in this directory. The repository was last updated on October 10, 2026.

Source: blackwell-systems/agent-lsp on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.