golang-pkg-go-dev

golang-pkg-go-dev

熱門

透過 `godig`(一個 pkg.go.dev API 客戶端,提供 CLI 與 MCP 伺服器)探索 Go 套件與模組的文件與資訊——包含套件文件、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` 技能。

2785星標
186分支
更新於 2026/7/27
SKILL.md
readonlyread-only
name
golang-pkg-go-dev
description

透過 `godig`(一個 pkg.go.dev API 客戶端,提供 CLI 與 MCP 伺服器)探索 Go 套件與模組的文件與資訊——包含套件文件、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 伺服器使用。所有操作皆為唯讀且無需驗證。

何時使用此技能

針對以下問題觸發:

  • "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 漏洞資料庫,由 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 開啟問題。