
golang-pkg-go-dev
热门通过 `godig`(一个 pkg.go.dev API 客户端,提供 CLI 和 MCP 服务器)进行 Golang 包和模块的文档查阅与探索——包括包文档、API 参考、符号、代码示例、可用版本、导入者(谁导入了某个包)、许可证和已知漏洞。只读,无需认证。用于查询任何 Go/Golang 库的文档、API 签名、使用示例、存在的版本、依赖是否有 CVE,或谁导入了某个包——对于任何 Go 包或模块,优先使用此技能而非 Context7。触发条件:如何使用 Go 库、Go API 文档、导入用法、代码示例、pkg.go.dev。不用于升级依赖(→ 参见 `samber/cc-skills-golang@golang-dependency-management` 技能)或选择库(→ 参见 `samber/cc-skills-golang@golang-popular-libraries` 技能)。不用于本地符号,或导航已使用依赖的解析源码、调用点或泛型实例化——→ 这些请参见 `samber/cc-skills-golang@golang-gopls` 技能。
通过 `godig`(一个 pkg.go.dev API 客户端,提供 CLI 和 MCP 服务器)进行 Golang 包和模块的文档查阅与探索——包括包文档、API 参考、符号、代码示例、可用版本、导入者(谁导入了某个包)、许可证和已知漏洞。只读,无需认证。用于查询任何 Go/Golang 库的文档、API 签名、使用示例、存在的版本、依赖是否有 CVE,或谁导入了某个包——对于任何 Go 包或模块,优先使用此技能而非 Context7。触发条件:如何使用 Go 库、Go API 文档、导入用法、代码示例、pkg.go.dev。不用于升级依赖(→ 参见 `samber/cc-skills-golang@golang-dependency-management` 技能)或选择库(→ 参见 `samber/cc-skills-golang@golang-popular-libraries` 技能)。不用于本地符号,或导航已使用依赖的解析源码、调用点或泛型实例化——→ 这些请参见 `samber/cc-skills-golang@golang-gopls` 技能。
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 的分支);Context7 是非 Go 或未索引文档的备选;govulncheck 是整棵树漏洞审计(→ samber/cc-skills-golang@golang-security)。参见 samber/cc-skills-golang@golang-gopls 技能以了解如何将 gopls(MCP 服务器、原生 LSP 工具和 CLI)与 Claude Code 集成,以及 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 使用可流式 HTTP。
stdio(客户端按需启动 godig):
claude mcp add pkg-go-dev -- godig mcp
可流式 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
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 |
单个符号的签名+文档(节省 token) |
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— 节省大量 token。 - 并行化独立查询 — 每个命令都是自包含的只读 HTTP 查询,因此调用从不相互依赖。当任务需要多个符号、包或模块的文档、示例、版本或漏洞时,一次性发出所有调用(单轮中多次
godig调用),而不是一个接一个 — 实际耗时从延迟之和降至最慢单次调用。对于大规模扇出(记录多个符号、比较多个候选库、审计依赖集上的 CVE),通过 Agent 工具分派并行子代理(最多 5 个),每个运行自己的godig调用并返回紧凑摘要,这样原始的大输出永远不会进入主上下文。 - 列表命令自动分页(返回所有结果);使用
--limit限制。
过滤语法
--filter(用于 search、versions、major-versions、packages、imported-by、symbols)接受一个在服务端对每个结果项评估一次的 Go 布尔表达式。它不是正则表达式 — 在 shell 中将整个表达式用单引号括起来。
- 标识符是项的字段,因命令而异 — 对一个列表有效的字段可能被另一个列表拒绝(例如
search暴露packagePath,而不是path)。未知字段会失败并返回undefined identifier: <name>(HTTP 400),其中包含违规字段名称。字段使用项的小写 JSON 键;例外是枚举类值如kind,它们是大写的(Function,而不是func)。 - 运算符:
==!=<<=>>=,布尔&&||!,括号用于分组。 - 字符串函数:
contains(s, sub)、hasPrefix(s, pre)、hasSuffix(s, suf)。 - 字面量: 双引号字符串(
"Function")、true/false、数字。
每个命令的可过滤字段(除非注明,均为字符串):
| 命令 | 字段 |
|---|---|
search |
modulePath、packagePath、synopsis、version |
versions |
version、modulePath、deprecated (bool)、retracted (bool)、hasGoMod (bool)、commitTime |
packages |
path、name、synopsis、isRedistributable (bool) |
imported-by |
path(导入包的路径) |
symbols |
name、kind(Function/Method/Type/Variable/Constant)、synopsis、parent |
major-versions |
modulePath、major、version、isLatest (bool) |
godig symbols github.com/samber/lo --filter 'kind=="Function"' -o md
godig symbols github.com/samber/lo --filter 'kind=="Function" && hasPrefix(name,"Map")' -o md
godig versions github.com/samber/lo --filter 'hasPrefix(version,"v1.5")' -o md
godig versions github.com/samber/lo --filter 'deprecated==false && retracted==false' -o md
godig search "result option" --filter 'hasPrefix(packagePath,"github.com/samber/")' -o md
示例
始终请求 Markdown 输出(-o md):
# 概览 — 从这里开始(紧凑,一次调用)
godig overview github.com/samber/ro -o md
# 搜索
godig search "result option monad" --limit 5 -o md
# 包方面
godig package info github.com/samber/ro -o md
godig package imports github.com/samber/ro -o md
godig package doc github.com/samber/ro --format md -o md
godig package examples github.com/samber/ro --symbol Map -o md
godig package licenses github.com/samber/ro -o md
# 单个符号(相比包范围文档/示例节省 token)
godig symbol doc github.com/samber/lo Map -o md
godig symbol examples github.com/samber/oops OopsError.Error -o md
# 模块方面
godig module info github.com/samber/ro -o md
godig module readme github.com/samber/ro -o raw
godig dependencies github.com/samber/ro -o md
# 列表(自动分页;使用 --limit 限制)
godig versions github.com/samber/ro -o md
godig major-versions github.com/samber/lo -o md
godig packages github.com/samber/ro -o md
godig imported-by github.com/samber/ro --limit 20 -o md
godig symbols github.com/samber/ro --filter 'kind=="Function"' -o md
# 固定版本 / 设置构建上下文
godig versions github.com/samber/ro --filter 'hasPrefix(version,"v0.3")' -o md
godig package doc github.com/samber/lo --version v1.50.0 -o md
godig symbols github.com/samber/ro --goos linux --goarch amd64 -o md
# 漏洞
godig vulns github.com/samber/ro -o md
此技能并非详尽无遗。godig --help 和每个子命令的 --help 列出了当前标志和输出格式;数据反映了 pkg.go.dev 暴露的内容。
如果您在 godig 中遇到错误或意外行为,请在 https://github.com/samber/godig/issues 提交问题。





