
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` 技能。
透過 `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
相依套件: 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 開啟問題。





