SKILL·1D05E0

lsp-impact

blackwell-systems
更新于 2 months ago
1 次查看
106
5
106
在 GitHub 上查看
其他general

关于

This skill performs blast-radius analysis for code symbols or files, showing callers, type hierarchies, and reference counts to assess impact before changes. It's designed for refactoring, deletions, or signature modifications, helping developers understand dependencies. The tool works with the agent-lsp MCP server and accepts either a symbol name or file path for comprehensive exported-symbol impact analysis.

快速安装

Claude Code

推荐
主要方式
npx skills add blackwell-systems/agent-lsp -a claude-code
插件命令备选方式
/plugin add https://github.com/blackwell-systems/agent-lsp
Git 克隆备选方式
git clone https://github.com/blackwell-systems/agent-lsp.git ~/.claude/skills/lsp-impact

在 Claude Code 中复制并粘贴此命令以安装该技能

技能文档

Requires the agent-lsp MCP server.

lsp-impact

Blast-radius analysis for any symbol or file. Discovers all direct references, callers (via call hierarchy), and type relationships before you touch anything. Read-only — does not modify any files.

Run this skill before lsp-edit-export: impact tells you what exists and how widespread the change is; lsp-edit-export tells you how to execute the change safely.

Invocation:

  • File path (e.g. "internal/lsp/client.go") → use the File-level entry (Step 0) to surface all exported-symbol impact at once.
  • Symbol name in dot notation (e.g. "codec.Encode", "Buffer.Reset") → skip Step 0; start at Prerequisites, then Step 1.

Step 0 — File-level entry (when user provides a file path)

Use this shortcut when the user is changing or auditing an entire file rather than a single symbol. blast_radius enumerates all exported symbols in the file, resolves their references, and returns test callers (with enclosing test function names) and non-test callers in a single call.

mcp__lsp__blast_radius({
  "changed_files": ["/abs/path/to/file.go"],
  "include_transitive": false   // set true to surface second-order callers
})

Returns:

  • affected_symbols — each exported symbol with its reference count
  • test_callers — test files + enclosing test function names
  • non_test_callers — production call sites

Decision after Step 0:

ResultAction
0 non-test callersLow blast radius. Proceed with change.
Few callers, known filesMedium risk. Update each call site.
Many callers across packagesHigh risk. Consider staged rollout.
Want symbol-level detailContinue to Steps 1–5 for any specific symbol.

Skip Steps 1–5 if the file-level summary is sufficient.


Prerequisites (for symbol-level Steps 1–5)

If LSP is not yet initialized, call mcp__lsp__start_lsp with the workspace root first.

Check what the server supports before proceeding — find_callers and type_hierarchy are optional LSP features not implemented by all servers:

mcp__lsp__get_server_capabilities()

Note which tools appear in supported_tools. Steps 3 and 4 below depend on this result.


Step 1 — Locate the symbol

Use go_to_symbol with the symbol name provided by the user:

mcp__lsp__go_to_symbol({
  "symbol_path": "Package.SymbolName",
  "workspace_root": "/abs/path"   // optional, narrows scope
})
→ returns: file, line, column (1-indexed)

symbol_path uses dot notation. For a top-level function Encode in package codec, use "codec.Encode". For a method Reset on type Buffer, use "Buffer.Reset".

Record the returned file, line, and column — you will pass them to every subsequent step.


Step 2 — Enumerate all direct references (always available)

Call find_references with include_declaration: false to find every usage site across the workspace:

mcp__lsp__find_references({
  "file_path": "<file from Step 1>",
  "position_pattern": "func @@SymbolName(",   // adjust prefix for symbol kind
  "include_declaration": false
})

Collect all reference locations. Group results by file. Record the total count and list of files — these feed the Impact Report.

See references/patterns.md for position_pattern examples by language and symbol kind.


Step 3 — Call hierarchy (callers and callees)

Only if find_callers appears in supported_tools from Step 0.

mcp__lsp__find_callers({
  "file_path": "<file from Step 1>",
  "line": <line from Step 1>,
  "column": <column from Step 1>,
  "direction": "incoming"   // use "both" if callees are also needed
})

If find_callers is not in supported_tools, skip this step entirely. Note "call hierarchy not supported by this server" in the Impact Report.


Step 4 — Type hierarchy (supertypes and subtypes)

Only applicable when the symbol is a type, interface, or class (not a plain function or method). Only if type_hierarchy appears in supported_tools.

mcp__lsp__type_hierarchy({
  "file_path": "<file from Step 1>",
  "line": <line from Step 1>,
  "column": <column from Step 1>,
  "direction": "both"
})

If the symbol is a function or method: skip this step; note "not applicable (function)" in the report.

If type_hierarchy is not in supported_tools: skip this step; note "not supported by this server" in the report.


Step 5 — Report impact surface

Produce the Impact Report using the format defined in references/patterns.md.

Include:

  • Symbol name, kind, and definition location
  • Reference count and list of files containing references
  • Callers from find_callers incoming (or skip note)
  • Supertypes and subtypes from type_hierarchy (or skip note)
  • Blast radius: count of distinct files affected

Then apply the decision guide:

Blast radiusRecommendation
0 referencesLikely dead code. Confirm with lsp-dead-code before deleting.
1–5 filesLow risk. Proceed. Update all callers.
6–20 filesMedium risk. Plan changes carefully. Stage in waves.
> 20 filesHigh risk. Consider a deprecation path or feature flag.

Example

Goal: assess blast radius of exported function `ParseConfig` in pkg/config

Prerequisites — get_server_capabilities:
  → supported_tools: [go_to_symbol, find_references, find_callers, ...]
  → type_hierarchy: not in supported_tools

Step 1 — go_to_symbol: symbol_path="config.ParseConfig"
  → pkg/config/parser.go:42:6

Step 2 — find_references: position_pattern="func @@ParseConfig("
  → 7 references in 4 files
  → cmd/main.go, internal/app.go, internal/loader.go, pkg/config/parser_test.go

Step 3 — find_callers: direction="incoming"
  → callers: cmd.main (cmd/main.go:14), app.Start (internal/app.go:31), ...

Step 4 — type_hierarchy: skipped (function), also not supported by server

Step 5 — Impact Report:
  ## Impact Report: ParseConfig
  - Kind:         function
  - Definition:   pkg/config/parser.go:42:6
  - References:   7 across 4 files
  ...
  - Risk level:   low

Note on position_pattern

position_pattern with @@ is a agent-lsp extension. If your MCP client does not support it, fall back to explicit line and column parameters from the location returned by go_to_symbol in Step 1.

GitHub 仓库

blackwell-systems/agent-lsp
路径: skills/lsp-impact
0
agentskillsai-agentsai-toolingclaudeclaude-codecode-intelligence
FAQ

常见问题

什么是 lsp-impact Skill?

lsp-impact 是一个 Claude Skill,作者为 blackwell-systems。Skill 将 Claude 按需加载的说明和资源打包,让 Claude 无需额外提示即可执行与 lsp-impact 相关的任务。

如何安装 lsp-impact?

使用本页的安装命令:将 lsp-impact 作为插件添加到 Claude Code,或将其仓库克隆到 skills 目录,然后重启 Claude 以加载该 Skill。

lsp-impact 属于哪个分类?

lsp-impact 属于其他分类。

lsp-impact 可以免费使用吗?

可以。lsp-impact 已收录在 AIMCP,可免费安装。

相关推荐技能

llamaguard
其他

LlamaGuard是Meta推出的7-8B参数内容审核模型,专门用于过滤LLM的输入和输出内容。它能检测六大安全风险类别(暴力/仇恨、性内容、武器、违禁品、自残、犯罪计划),准确率达94-95%。开发者可通过HuggingFace、vLLM或Sagemaker快速部署,并能与NeMo Guardrails集成实现自动化安全防护。

查看技能
cost-optimization
其他

这个Claude Skill帮助开发者优化云成本,通过资源调整、标记策略和预留实例来降低AWS、Azure和GCP的开支。它适用于减少云支出、分析基础设施成本或实施成本治理策略的场景。关键功能包括提供成本可视化、资源规模调整指导和定价模型优化建议。

查看技能
sports-betting-analyzer
其他

该Skill为开发者提供体育博彩数据分析工具,可分析盘口、大小球和特殊投注,识别价值投注机会。它整合历史数据和情景统计,生成包含时间戳的结构化Markdown报告。适用于需要快速获取博彩市场洞察的娱乐或教育类应用开发。

查看技能
quantizing-models-bitsandbytes
其他

这个Skill使用bitsandbytes库量化大语言模型,能在GPU内存有限时通过8位或4位量化减少50-75%内存占用,同时保持精度损失最小。它支持INT8、NF4、FP4等多种量化格式,可与HuggingFace Transformers无缝集成,适用于需要部署更大模型或加速推理的场景。还提供QLoRA训练和8位优化器支持,让开发者能轻松实现高效模型压缩。

查看技能