mcpField
T
typescript-lsp

typescript-lsp

github.com/youdotcom-oss开发9849 次安装4 天前更新
代码仓库

关于 typescript-lsp

为 TypeScript 和 JavaScript 代码库探索提供语言服务器协议工具的技能。开发者可检查符号、类型、导出项和引用,并用批量分析在一次会话中执行多项查询。

主要功能

  1. 01按类型信息搜索符号
  2. 02查看类型签名与 TSDoc
  3. 03查找引用并跳转定义
  4. 04分析文件与导出项
  5. 05使用 lsp-analyze 批量查询

适用场景

  1. 01探索模块结构与导出项
  2. 02修改 API 前检查引用
  3. 03实现前核对类型

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/youdotcom-oss/agent-skills --skill typescript-lsp

安装后在 Claude Code 中输入/typescript-lsp确认已加载。

详细介绍

TypeScript LSP 技能

目的

此技能提供 TypeScript Language Server Protocol 集成,用于探索和理解 TypeScript/JavaScript 代码库。

重要:处理 *.ts、*.tsx、*.js、*.jsx 文件时,优先使用 LSP 工具,而非 Grep/Glob。LSP 提供类型感知的结果,能够理解导入、导出和符号之间的关系。

使用这些工具来:

  • 探索代码库——查找符号、了解模块结构、发现实现
  • 查找引用——在整个代码库中进行类型感知搜索(查找符号时优于 grep)
  • 了解类型——获取完整的类型签名、泛型和文档
  • 编辑前验证——修改或删除导出内容前,检查所有用法
  • 浏览代码——跳转到定义、查找实现

各工具的适用场景

工具用途
Glob按模式查找文件
Grep搜索文本内容
lsp-find搜索 TypeScript 符号
lsp-hover获取类型信息和 TSDoc 文档
lsp-refs查找符号的所有引用
lsp-analyze批量分析文件结构
LSP 与 Grep/Glob 对比
任务使用 LSP使用 Grep/Glob
查找函数/类型的所有用法✅ lsp-refs❌ 会漏掉重新导出、别名
按名称搜索符号✅ lsp-find❌ 会匹配字符串、注释
获取类型签名和 TSDoc✅ lsp-hover❌ 无法实现
了解文件导出内容✅ lsp-analyze --exports❌ 无法解析重新导出
按模式查找文件❌✅ Glob
搜索非 TS 文件(md、json)❌✅ Grep
搜索注释/字符串中的文本❌✅ Grep

使用时机

探索代码(优先使用 LSP):

  • 运行 lsp-find,在工作区中搜索符号
  • 运行 lsp-symbols,概览文件结构
  • 运行 lsp-analyze --exports,查看模块提供的内容

编辑代码前:

  • 运行 lsp-references,查找计划修改的符号的所有用法
  • 运行 lsp-hover,验证当前类型签名

编写代码前:

  • 运行 lsp-find,搜索相似模式或相关符号
  • 对计划使用的 API 运行 lsp-hover

路径解析

所有脚本均接受三种文件路径:

  • 绝对路径:/Users/name/project/src/file.ts
  • 相对路径:./src/file.ts 或 ../other/file.ts
  • 包导出路径:my-package/src/module.ts(通过 Bun.resolve() 解析)

建议使用包导出路径,以提高可移植性,并与包的 exports 字段保持一致。

脚本

单独脚本
lsp-hover

获取指定位置的类型信息。

bunx @plaited/development-skills lsp-hover <file> <line> <char>

参数:

  • file:TypeScript/JavaScript 文件的路径
  • line:行号(从 0 开始计数)
  • char:字符位置(从 0 开始计数)

示例:

bunx @plaited/development-skills lsp-hover src/utils/parser.ts 42 10
lsp-symbols

列出文件中的所有符号。

bunx @plaited/development-skills lsp-symbols <file>

示例:

bunx @plaited/development-skills lsp-symbols src/utils/parser.ts
lsp-references

查找符号的所有引用。

bunx @plaited/development-skills lsp-refs <file> <line> <char>

示例:

bunx @plaited/development-skills lsp-refs src/utils/parser.ts 42 10
lsp-find

在工作区中搜索符号。

bunx @plaited/development-skills lsp-find <query> [context-file]

参数:

  • query:符号名称或部分名称
  • context-file:可选文件,用于打开项目上下文

示例:

bunx @plaited/development-skills lsp-find parseConfig
bunx @plaited/development-skills lsp-find validateInput src/lib/validator.ts
批处理脚本
lsp-analyze

在单个会话中执行多项分析,提高效率。

bunx @plaited/development-skills lsp-analyze <file> [options]

选项:

  • --symbols, -s:列出所有符号
  • --exports, -e:仅列出导出的符号
  • --hover <line:char>:获取类型信息(可重复)
  • --refs <line:char>:查找引用(可重复)
  • --all:运行符号和导出分析

示例:

# Get file overview
bunx @plaited/development-skills lsp-analyze src/utils/parser.ts --all

# Check multiple positions
bunx @plaited/development-skills lsp-analyze src/utils/parser.ts --hover 50:10 --hover 75:5

# Before refactoring: find all references
bunx @plaited/development-skills lsp-analyze src/utils/parser.ts --refs 42:10

常见工作流

理解文件
# 1. Get exports overview
bunx @plaited/development-skills lsp-analyze path/to/file.ts --exports

# 2. For specific type info, hover on interesting symbols
bunx @plaited/development-skills lsp-hover path/to/file.ts <line> <char>
修改导出内容前
# 1. Find all references first
bunx @plaited/development-skills lsp-refs path/to/file.ts <line> <char>

# 2. Check what depends on it
# Review the output to understand impact
查找模式
# Search for similar implementations
bunx @plaited/development-skills lsp-find handleRequest
bunx @plaited/development-skills lsp-find parseConfig
实现前验证
# Before writing code that uses an API, verify its signature
bunx @plaited/development-skills lsp-hover path/to/api.ts <line> <char>

输出格式

所有脚本都将 JSON 输出到 stdout。错误信息输出到 stderr。

Hover 输出:

{
  "contents": {
    "kind": "markdown",
    "value": "```typescript\nconst parseConfig: (options: Options) => Config\n```"
  },
  "range": { "start": {...}, "end": {...} }
}

符号输出:

[
  {
    "name": "symbolName",
    "kind": 13,
    "range": { "start": {...}, "end": {...} }
  }
]

分析输出:

{
  "file": "path/to/file.ts",
  "exports": [
    { "name": "exportName", "kind": "Constant", "line": 139 }
  ]
}

性能

每次脚本调用都会:

  1. 启动 TypeScript Language Server(约 300-500ms)
  2. 初始化 LSP 连接
  3. 打开文档
  4. 执行查询
  5. 关闭文档并停止

对于同一文件上的多个查询,请使用 lsp-analyze,在单个会话中批量执行操作。

相关技能

  • code-documentation:用于文档的 TSDoc 标准

评论

支持 Markdown