golang-pkg-go-dev

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` 技能。

2785Star
186Fork
更新于 2026/7/27
SKILL.md
readonly只读
name
golang-pkg-go-dev
description

通过 `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

依赖: godiggo install github.com/samber/godig/cmd/godig@latest(或使用已注册的 godig MCP 服务器 / 托管实例代替)。

godig 查询 pkg.go.dev API。用于回答关于 Go 包和模块的问题:文档、符号、版本、导入者和漏洞。它可作为 CLI 和 MCP 服务器运行。所有操作均为只读,无需认证。

何时使用此技能

触发类似以下问题:

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 漏洞数据库,由 vulnsoverview 使用),--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)。存在其他格式(默认 tablejsonraw),但此处优先使用 md
  • <path> 是完整导入路径,例如 github.com/samber/lo — 将其作为位置参数传递。
  • --version 固定特定模块版本(v1.5.0latestmastermain);--module 消除包所属模块的歧义。
  • --filter 使用 Go 布尔表达式在服务端缩小列表结果 — 参见过滤语法
  • --goos/--goarch 设置文档/符号的构建上下文(例如 linux/amd64)。
  • 当只需要一个符号时,优先使用 symbol doc/symbol examples 而非包范围的 package doc/package examples — 节省大量 token。
  • 并行化独立查询 — 每个命令都是自包含的只读 HTTP 查询,因此调用从不相互依赖。当任务需要多个符号、包或模块的文档、示例、版本或漏洞时,一次性发出所有调用(单轮中多次 godig 调用),而不是一个接一个 — 实际耗时从延迟之和降至最慢单次调用。对于大规模扇出(记录多个符号、比较多个候选库、审计依赖集上的 CVE),通过 Agent 工具分派并行子代理(最多 5 个),每个运行自己的 godig 调用并返回紧凑摘要,这样原始的大输出永远不会进入主上下文。
  • 列表命令自动分页(返回所有结果);使用 --limit 限制。

过滤语法

--filter(用于 searchversionsmajor-versionspackagesimported-bysymbols)接受一个在服务端对每个结果项评估一次的 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 modulePathpackagePathsynopsisversion
versions versionmodulePathdeprecated (bool)、retracted (bool)、hasGoMod (bool)、commitTime
packages pathnamesynopsisisRedistributable (bool)
imported-by path(导入包的路径)
symbols namekindFunction/Method/Type/Variable/Constant)、synopsisparent
major-versions modulePathmajorversionisLatest (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 提交问题。