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.
Full code quality audit for a file, package, or directory. An agent skill from blackwell-systems/agent-lsp.
$ npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a claude-codeProject install by default; add -g for ~/.claude/skills/.
$ gh skill install blackwell-systems/agent-lsp lsp-inspect --agent claude-codeProject scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).
$ 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-srcUse ~/.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/
Install the "lsp-inspect" agent skill from https://github.com/blackwell-systems/agent-lsp/tree/main/skills/lsp-inspect into .claude/skills/lsp-inspect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lsp-inspect", then confirm the skill loads.Claude Code copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$skill-installer install https://github.com/blackwell-systems/agent-lsp/tree/main/skills/lsp-inspectType this inside Codex. $skill-installer <name> installs a curated skill from openai/skills. The installer writes to $CODEX_HOME/skills (default ~/.codex/skills). Restart Codex if the skill does not show up.
$ npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a codexProject install goes to .agents/skills/; add -g for ~/.codex/skills/.
$ gh skill install blackwell-systems/agent-lsp lsp-inspect --agent codexProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/blackwell-systems/agent-lsp.git skills-src && mkdir -p .agents/skills && cp -r skills-src/skills/lsp-inspect .agents/skills/lsp-inspect && rm -rf skills-srcUse ~/.agents/skills/ instead of .agents/skills for a personal install.
Codex skills documentation · loads skills from .agents/skills/
Install the "lsp-inspect" agent skill from https://github.com/blackwell-systems/agent-lsp/tree/main/skills/lsp-inspect into .agents/skills/lsp-inspect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lsp-inspect", then confirm the skill loads.Codex copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a cursorProject install goes to .agents/skills/; add -g for ~/.cursor/skills/.
$ gh skill install blackwell-systems/agent-lsp lsp-inspect --agent cursorProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/blackwell-systems/agent-lsp.git skills-src && mkdir -p .cursor/skills && cp -r skills-src/skills/lsp-inspect .cursor/skills/lsp-inspect && rm -rf skills-srcUse ~/.cursor/skills/ instead of .cursor/skills for a personal install.
Cursor skills documentation · loads skills from .cursor/skills/, .agents/skills/, .claude/skills/, .codex/skills/
Install the "lsp-inspect" agent skill from https://github.com/blackwell-systems/agent-lsp/tree/main/skills/lsp-inspect into .cursor/skills/lsp-inspect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lsp-inspect", then confirm the skill loads.Cursor copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gemini skills install https://github.com/blackwell-systems/agent-lsp.git --path skills/lsp-inspect--scope user (default) or --scope workspace; --path is the subfolder of the repo that holds the skill; --consent skips the security confirmation prompt.
$ npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a gemini-cliProject install goes to .agents/skills/; add -g for ~/.gemini/skills/.
$ gh skill install blackwell-systems/agent-lsp lsp-inspect --agent gemini-cliProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/blackwell-systems/agent-lsp.git skills-src && mkdir -p .gemini/skills && cp -r skills-src/skills/lsp-inspect .gemini/skills/lsp-inspect && rm -rf skills-srcUse ~/.gemini/skills/ instead of .gemini/skills for a personal install, then run /skills reload.
Gemini CLI skills documentation · loads skills from .gemini/skills/, .agents/skills/
Install the "lsp-inspect" agent skill from https://github.com/blackwell-systems/agent-lsp/tree/main/skills/lsp-inspect into .gemini/skills/lsp-inspect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lsp-inspect", then confirm the skill loads.Gemini CLI copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ gh skill install blackwell-systems/agent-lsp lsp-inspectInstalls for Copilot at project scope by default; add --scope user for a personal install. Preview a skill first with gh skill preview. Needs GitHub CLI 2.90.0 or later (public preview).
$ npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a github-copilotProject install goes to .agents/skills/; add -g for ~/.copilot/skills/.
$ git clone --depth 1 https://github.com/blackwell-systems/agent-lsp.git skills-src && mkdir -p .github/skills && cp -r skills-src/skills/lsp-inspect .github/skills/lsp-inspect && rm -rf skills-srcUse ~/.copilot/skills/ instead of .github/skills for a personal install. Commit .github/skills so cloud agent and code review can use it.
GitHub Copilot skills documentation · loads skills from .github/skills/, .claude/skills/, .agents/skills/
Install the "lsp-inspect" agent skill from https://github.com/blackwell-systems/agent-lsp/tree/main/skills/lsp-inspect into .github/skills/lsp-inspect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lsp-inspect", then confirm the skill loads.GitHub Copilot copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
$ npx skills add blackwell-systems/agent-lsp --skill lsp-inspect -a opencodeOpenCode documents no install command of its own. Project install goes to .agents/skills/; add -g for ~/.config/opencode/skills/.
$ gh skill install blackwell-systems/agent-lsp lsp-inspect --agent opencodeProject scope by default (.agents/skills/); add --scope user for a personal install.
$ git clone --depth 1 https://github.com/blackwell-systems/agent-lsp.git skills-src && mkdir -p .opencode/skills && cp -r skills-src/skills/lsp-inspect .opencode/skills/lsp-inspect && rm -rf skills-srcUse ~/.config/opencode/skills/ instead of .opencode/skills for a personal install.
OpenCode skills documentation · loads skills from .opencode/skills/, .claude/skills/, .agents/skills/
Install the "lsp-inspect" agent skill from https://github.com/blackwell-systems/agent-lsp/tree/main/skills/lsp-inspect into .opencode/skills/lsp-inspect/ in this project. Copy the whole folder (SKILL.md and every file beside it), keep the folder name "lsp-inspect", then confirm the skill loads.OpenCode copies the folder itself, the same result as the manual copy. Check what it changed before you commit it.
lsp-inspectFull 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. 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.
8 steps, taken from the step headings in SKILL.md.
Read from SKILL.md and the folder at commit 38ca488. It shows what the files ask for, not the result of running them.
Pre-approves these tools, so the agent can use them without asking each time:
mcp__lsp__start_lspmcp__lsp__open_documentmcp__lsp__blast_radiusmcp__lsp__find_referencesmcp__lsp__list_symbolsmcp__lsp__inspect_symbolmcp__lsp__get_diagnosticsmcp__lsp__find_callersmcp__lsp__go_to_definitionmcp__lsp__get_server_capabilities…and 2 more on the same allowed-tools line.
From allowed-tools in the SKILL.md frontmatter.
Shell commands in SKILL.md call:
gogitFrom the folder's file list and the shell code blocks in SKILL.md.
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.
Names no API keys, tokens, secrets or passwords.
From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.
Requires the agent-lsp MCP server (github.com/blackwell-systems/agent-lsp)
From compatibility in the SKILL.md frontmatter.
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.
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.
The automated check noted patterns worth knowing about, such as sudo or a known installer.
allowed-tools: mcp__lsp__start_lsp, mcp__lsp__open_document, mcp__lsp__blast_radius, mcp__lsp__find_references, mcpAutomated 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.
The full file from blackwell-systems/agent-lsp at commit 38ca488, republished under its MIT licence (© blackwell-systems). 1,723 words, ~4,200 tokens.
.claude/skills/lsp-inspect/SKILL.md (or your agent's skills folder).Requires the agent-lsp MCP server.
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.
/lsp-inspect <target> [--checks <type1>,<type2>] [--json] [--top N] [--diff]Target can be:
/lsp-inspect src/handlers/auth.go/lsp-inspect internal/runnables//lsp-inspect pkg/a.go pkg/b.goDirectory 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 | What it finds | LSP strategy |
|---|---|---|
dead_symbol | Exported symbol with zero references | Tier 1A: blast_radius batch; Tier 1B: find_references per-symbol |
test_coverage | Exported symbol with no test callers | Tier 1A: blast_radius test_callers field |
silent_failure | Error/exception suppressed without re-raise or logging | Read code, identify bare except:, empty if err != nil {}, swallowed returns |
error_wrapping | Error returned/raised without context | Read code, identify return err without fmt.Errorf wrapping or raise without from |
coverage_gap | Unhandled input, error path, or code branch | Read code, identify switch/match without default, unchecked type assertions |
doc_drift | Docstring/comment that doesn't match the actual signature | Compare inspect_symbol hover text against source |
panic_not_recovered | Unhandled crash in a goroutine or async context | Read code, identify go func() without recover, unguarded .unwrap() |
context_propagation | Function receives context but creates a fresh root for callees | Read code, identify context.Background() in functions with ctx parameter |
unrecovered_concurrent_entry | Concurrent entry point without recovery | Read code, identify goroutines/threads/tasks without try-catch or recover |
unchecked_shared_state | Type assertion or cast on concurrent data structure without safety check | Read code, identify bare .(*Type) on sync.Map, unchecked casts on ConcurrentHashMap |
channel_never_closed | Channel or queue created but never closed in the same package | Read code + grep, find creation sites without matching close/shutdown |
shared_field_without_sync | Field accessed from concurrent contexts without synchronization | blast_radius (sync_guarded) + find_callers (cross_concurrent) |
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.
When --diff is set:
git diff --name-only main to get changed filesgit diff main to get line-level change rangesCall 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 referencestest_callers: count of test file referencesClassify 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.
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:
if err != nil { return } (no error returned), bare _ = fn()except: or except Exception: pass.catch(() => {}), try {} catch(e) {}.unwrap_or_default() on fallible ops that should propagateerror_wrapping: Look for:
return err without fmt.Errorf("context: %w", err)raise ValueError(str(e)) without from ethrow e without wrapping in a contextual errorcoverage_gap: Look for:
v := x.(Type) vs v, ok := x.(Type))doc_drift: For exported functions, compare:
inspect_symbol hover text to cross-referencepanic_not_recovered: Look for:
go func() { ... }() without defer recover().unwrap() or .expect() in non-test, non-main codecontext_propagation: Look for:
ctx context.Context but call context.Background() or context.TODO() internallyunrecovered_concurrent_entry: Detect concurrent entry points without recovery. Language-specific patterns (check by language family):
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).new Thread(...) or ExecutorService.submit(...) without try-catch wrapping the Runnable body, and no UncaughtExceptionHandler set on the thread.Task.Run(...) or new Thread(...) without try-catch in the delegate body.pthread_create or std::thread without exception handling in the thread function.std::thread::spawn without catch_unwind in the closure. Also flag .unwrap() inside spawned threads (panics kill only that thread but lose the error).DispatchQueue.async or Task { } without do-catch.threading.Thread(target=...) without try-except in the target function. asyncio.create_task() without error handling on the awaited result.new Worker() without onerror or error event handler. Promise constructor without .catch() on the chain.try std.Thread.spawn without error handling on the spawned function.unchecked_shared_state: Detect unsafe type operations on concurrent data structures:
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).ConcurrentHashMap.get() with unchecked cast and no instanceof guard.ConcurrentDictionary value retrieval with unchecked cast.channel_never_closed: Detect channels or queues that are created but never closed:
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).queue.Queue() creation without a sentinel value pattern (queue.put(None) + if item is None: break).mpsc::channel() where the sender is never dropped or explicitly closed.new MessageChannel() or new BroadcastChannel() without .close().BlockingQueue creation without a poison pill or shutdown pattern.shared_field_without_sync: Detect struct/class fields accessed from multiple concurrent contexts without synchronization. This check composes two tools:
blast_radius on the target file. For each symbol where
sync_guarded: false (or absent), the symbol's type lacks sync primitives.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.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:
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-9info: Style issue or improvement opportunity, OR non_test_callers <= 2Use 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)Produce the findings report:
## 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.
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.'
After producing the findings report, write a JSON file to
.agent-lsp/last-inspection.json in the workspace root. The JSON schema:
{
"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.
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.
Registration patterns: Symbols passed as values to framework registrars (HTTP handlers, plugin hooks) show zero LSP references. Grep wiring files before confirming dead.
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."
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.
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
Just SKILL.md in skills/lsp-inspect of blackwell-systems/agent-lsp.
Open the folder on GitHubat commit 38ca488
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.
| Skill | Stars | Used in | Tokens | Auto-check | Licence | Repo updated |
|---|---|---|---|---|---|---|
| Lsp Inspect this skillblackwell-systems/agent-lsp | 160 | — | ~4.2k | Automated safety check: Notes | MIT | |
| Constraint-Driven Developmentaddyosmani/agent-skills | 105k | 2 repos | ~5.2k | Automated safety check: Pass | MIT | |
| Health Checkcodewithmukesh/dotnet-claude-kit | 756 | 1 repos | ~1.6k | Automated safety check: Pass | MIT | |
| Review PRjeremylongshore/tons-of-skills-marketplace | 2.8k | — | ~1.1k | Automated safety check: Notes | MIT | |
| Code Review Skillawesome-skills/code-review-skill | 2.1k | — | ~2.8k | Automated safety check: Notes | MIT | |
| Code ReviewerYikai-Liao/symusic | 189 | 1 repos | ~1.3k | Automated safety check: Pass | MIT |
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.
codewithmukesh/dotnet-claude-kit
Multi-dimensional health assessment for .NET projects with letter grades (A-F) using Roslyn MCP tools.
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.
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…
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…
wshobson/agents
Covers ES6+ syntax and functional patterns for refactoring older JavaScript: async/await, destructuring, spread, modules, generators and data pipelines.
blackwell-systems/agent-lsp
Enumerate exported symbols in a file and surface those with zero references across the workspace.
blackwell-systems/agent-lsp
Safe workflow for editing exported symbols or public APIs. An agent skill from blackwell-systems/agent-lsp.
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.
blackwell-systems/agent-lsp
Trigger language server code generation — implement interface stubs, generate test skeletons, add missing methods, generate mock types.
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.
blackwell-systems/agent-lsp
Two-phase safe rename across the entire workspace. An agent skill from blackwell-systems/agent-lsp.
Categories
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.
Lsp Inspect fits situations like: tasks that involve Test coverage; tasks that involve Async programming; tasks that involve Code quality.
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.
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.
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.
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).
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.
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.
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.
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.
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.
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.