golang-pkg-go-dev
依赖: godig — go install github.com/samber/godig/cmd/godig@latest(或使用已注册的 godig MCP 服务器 / 托管实例)。
godig 查询 pkg.go.dev API。用于回答关于 Go 包和模块的问题:文档、符号、版本、导入者和漏洞。它可以作为 CLI 和 MCP 服务器运行,所有操作均为只读且无需认证。
何时使用此技能
在遇到如下问题时触发:
- "github.com/samber/lo 有哪些可用版本?"
- "golang.org/x/text 是否有已知漏洞?"
- "显示包 X 的文档 / 符号。"
- "哪些包导入了 X?"
- "搜索 Go 包 Y。"
在 godig、gopls、Context7 和 govulncheck 之间选择
简言之:godig 回答关于已发布生态系统的问题(即使包不在你的 go.mod 中也能工作);gopls 推理你本地解析后的构建(go.sum,包括 replace 的 fork);Context7 是针对非 Go 或未索引文档的备选方案;govulncheck 是全树漏洞审计(→ samber/cc-skills-golang@golang-security)。有关将 gopls(MCP 服务器、原生 LSP 工具和 CLI)与 Claude Code 集成的信息,请参见 samber/cc-skills-golang@golang-gopls 技能,有关任务到工具的完整矩阵,请参见 samber/cc-skills-golang@golang-how-to 技能中的 "godig vs gopls vs Context7 vs govulncheck" 部分。
设置
安装
go install github.com/samber/godig/cmd/godig@latest
注册 MCP 服务器(可选)
godig mcp 默认运行在 stdio 上,或使用 --transport http 运行在 streamable HTTP 上。该命令与 harness 无关——任何支持 MCP 的主机都可以指向它。Claude Code 通过其自己的 CLI 注册它:
stdio(客户端按需启动 godig):
claude mcp add pkg-go-dev -- godig mcp
streamable HTTP(共享服务器在 /mcp 上,默认端口 :8080):
godig mcp --transport http --addr :8080
claude mcp add --transport http pkg-go-dev http://localhost:8080/mcp
托管实例(无需安装)——公共服务器运行在 https://godig.samber.dev/mcp:
claude mcp add --transport http pkg-go-dev https://godig.samber.dev/mcp
其他支持 MCP 的 harness(Cursor、Windsurf 等)各有自己的 MCP 服务器注册方式——在其各自的设置文件中指向相同的 godig mcp 命令或托管 URL,而不是共享的配置格式。
CLI 和 MCP 服务器暴露相同的操作,且名称匹配。当安装了 godig 时,优先使用 CLI;托管实例是未安装时的备选。
命令
全局标志(所有命令): -o/--output table|json|raw|md(默认 table——在聊天中传 -o md),--base-url(pkg.go.dev API),--vuln-base-url(Go 漏洞数据库,由 vulns 和 overview 使用),--timeout,--log-level debug|info|warn|error|off。所有标志也可通过 GODIG_* 环境变量设置。
| 命令 | 参数 | 特有标志 | 用途 |
|---|---|---|---|
overview | <path> | --version | 紧凑摘要(元数据、版本、许可证、漏洞)——从此开始 |
search | <query> | --symbol --limit --filter | 搜索包(可选导出符号) |
package info | <path> | --module --version | 包元数据 |
package imports | <path> | --module --version | 此包导入的包(纯列表) |
package doc | <path> | --module --version --goos --goarch --format md|text|html|markdown | 完整包文档(大) |
package examples | <path> | --module --version --goos --goarch --symbol | 可运行示例(大;用 --symbol 限定范围) |
package licenses | <path> | --module --version | 许可证文件,完整文本(大) |
symbol doc | <path> <symbol> | --module --version --goos --goarch | 单个符号的签名 + 文档(高令牌效率) |
symbol examples | <path> <symbol> | --module --version --goos --goarch | 单个符号的可运行示例 |
symbols | <path> | --module --version --goos --goarch --limit --filter | 列出导出的符号 |
module info | <path> | --version | 模块元数据 |
module licenses | <path> | --version | 模块许可证文件(大) |
module readme | <path> | --version | 模块 README,完整 Markdown(大) |
dependencies | <path> | --version | go.mod 依赖:requires / replaces / excludes / go 指令 |
packages | <path> | --version --limit --filter | 模块中包含的包 |
versions | <path> | --limit --filter | 所有版本,最新优先 |
major-versions | <path> | --limit --filter --exclude-pseudo | 主要版本(v1, v2 …)作为独立模块存在 |
imported-by | <path> | --module --version --limit --filter | 导入此包的包 |
vulns | <path> | --version --limit | 已知漏洞(来自 Go 漏洞数据库) |
mcp | — | --transport stdio|http --addr --cache-ttl --cache-size | 作为 MCP 服务器运行 |
version | — | — | 打印 godig 版本 / 提交 / 构建日期 |
当 godig 作为 MCP 服务器运行时,上述每个数据命令都会暴露为同名的操作。
退出码: 0 成功,1 运行时错误(网络、包未找到),2 使用错误——参数或标志缺失/无效(例如非正数的 --limit),或命令组调用时没有子命令(godig package)。检查是否为 2 以区分格式错误的调用和失败的查找。
每个命令的完整 -o md 输出: sample-output.md
提示
- 从
overview开始——一次调用返回紧凑摘要(元数据、最新 + 近期版本、许可证类型、漏洞)。仅在需要完整文本时才使用doc/examples/module readme/licenses(大)。 - 始终传递
-o md以便结果在聊天中呈现为 Markdown(表格或原始文档/README)。其他格式存在(table默认、json、raw),但在此处优先使用md。 <path>是完整导入路径,例如github.com/samber/lo——将其作为位置参数传递。--version固定到特定模块版本(v1.5.0、latest、master、main);--module用于消除包所属模块的歧义。--filter使用 Go 布尔表达式在服务端缩小列表结果——参见过滤器语法。--goos/--goarch设置文档/符号的构建上下文(例如linux/amd64)。- 当你只需要单个符号的信息时,优先使用
symbol doc/symbol examples,而不是包级别的package doc/package examples。