golang-pkg-go-dev
Dependencies: godig — go install github.com/samber/godig/cmd/godig@latest (or use a registered godig MCP server / the hosted instance instead).
godig queries the pkg.go.dev API. Use it to answer questions about Go packages and modules: docs, symbols, versions, importers and vulnerabilities. It works as a CLI and as an MCP server. All operations are read-only and need no authentication.
When to use this skill
Trigger on questions like:
- "What versions of github.com/samber/lo are available?"
- "Does golang.org/x/text have known vulnerabilities?"
- "Show me the docs / symbols for package X."
- "Which packages import X?"
- "Search Go packages for Y."
Choosing between godig, gopls, Context7, and govulncheck
In short: godig answers questions about the published ecosystem (works even for packages not yet in your go.mod); gopls reasons about your locally resolved build (go.sum, including replaced forks); Context7 is a fallback for non-Go or unindexed docs; govulncheck is the whole-tree vulnerability audit (→ samber/cc-skills-golang@golang-security). See the samber/cc-skills-golang@golang-gopls skill for wiring gopls (MCP server, native LSP tool, and CLI) with Claude Code, and the samber/cc-skills-golang@golang-how-to skill's "godig vs gopls vs Context7 vs govulncheck" section for the full task-to-tool matrix.
Setup
Install
go install github.com/samber/godig/cmd/godig@latest
Register the MCP server (optional)
godig mcp runs over stdio by default, or streamable HTTP with --transport http.
stdio (the client launches godig on demand):
claude mcp add pkg-go-dev -- godig mcp
streamable HTTP (shared server at /mcp, default :8080):
godig mcp --transport http --addr :8080
claude mcp add --transport http pkg-go-dev http://localhost:8080/mcp
Hosted instance (no install needed) — a public server runs at https://godig.samber.dev/mcp:
claude mcp add --transport http pkg-go-dev https://godig.samber.dev/mcp
The CLI and the MCP server expose the same operations under matching names. Prefer the CLI when godig is installed; the hosted instance is a fallback when it is not.
Commands
Global flags (all commands): -o/--output table|json|raw|md (default table — pass -o md for chat), --base-url (pkg.go.dev API), --vuln-base-url (Go vulnerability database, consulted by vulns and overview), --timeout, --log-level debug|info|warn|error|off. All are also settable via GODIG_* env vars.
| Command |
Args |
Specific flags |
Purpose |
overview |
<path> |
--version |
Compact summary (metadata, versions, licenses, vulns) — start here |
search |
<query> |
--symbol --limit --filter |
Find packages (optionally exporting a symbol) |
package info |
<path> |
--module --version |
Package metadata |
package imports |
<path> |
--module --version |
Packages this package imports (plain list) |
package doc |
<path> |
--module --version --goos --goarch --format md|text|html|markdown |
Full package doc (LARGE) |
package examples |
<path> |
--module --version --goos --goarch --symbol |
Runnable examples (LARGE; scope with --symbol) |
package licenses |
<path> |
--module --version |
License files, full text (LARGE) |
symbol doc |
<path> <symbol> |
--module --version --goos --goarch |
One symbol's signature + doc (token-efficient) |
symbol examples |
<path> <symbol> |
--module --version --goos --goarch |
One symbol's runnable examples |
symbols |
<path> |
--module --version --goos --goarch --limit --filter |
List exported symbols |
module info |
<path> |
--version |
Module metadata |
module licenses |
<path> |
--version |
Module license files (LARGE) |
module readme |
<path> |
--version |
Module README, full Markdown (LARGE) |
dependencies |
<path> |
--version |
go.mod deps: requires / replaces / excludes / go directive |
packages |
<path> |
--version --limit --filter |
Packages contained in a module |
versions |
<path> |
--limit --filter |
All versions, newest first |
major-versions |
<path> |
--limit --filter --exclude-pseudo |
Major versions (v1, v2 …) living as separate modules |
imported-by |
<path> |
--module --version --limit --filter |
Packages that import this one |
vulns |
<path> |
--version --limit |
Known vulnerabilities (from the Go vuln DB) |
mcp |
— |
--transport stdio|http --addr --cache-ttl --cache-size |
Run as an MCP server |
version |
— |
— |
Print godig version / commit / build date |
When godig runs as an MCP server, each data command above is exposed as an operation of the same name.
Exit codes: 0 success, 1 runtime error (network, package not found), 2 usage error — a missing/invalid argument or flag (e.g. a non-positive --limit), or a command group invoked with no subcommand (godig package). Check for 2 to tell a malformed call apart from a failed lookup.
Full -o md output for every command: sample-output.md.
Tips
- Start with
overview — one call returns a compact summary (metadata, latest + recent versions, license types, vulnerabilities). Reach for doc/examples/module readme/licenses (LARGE) only when the full text is needed.
- Always pass
-o md so results render as Markdown (tables, or raw doc/README) in the chat. Other formats exist (table default, json, raw) but prefer md here.
<path> is a full import path, e.g. github.com/samber/lo — pass it as the positional argument.
--version pins a specific module version (v1.5.0, latest, master, main); --module disambiguates which module a package belongs to.
--filter narrows list results server-side with a Go boolean expression — see Filter syntax.
--goos/--goarch set the documentation/symbols build context (e.g. linux/amd64).
- Prefer
symbol doc/symbol examples over the package-wide package doc/package examples when you only need one symbol — far fewer tokens.
- Parallelize independent lookups — every command is a self-contained, read-only HTTP query, so calls never depend on each other. When a task needs docs, examples, versions, or vulns for several symbols, packages, or modules, issue all the calls at once (multiple
godig invocations in a single turn) rather than one after another — wall-clock drops from sum-of-latencies to slowest-single-call. For a large fan-out (documenting many symbols, comparing many candidate libraries, auditing CVEs across a dependency set), dispatch parallel sub-agents (up to 5) via the Agent tool, each running its own godig calls and returning a compact summary, so the raw LARGE output never lands in the main context.
- Listing commands auto-paginate (return all results); use
--limit to cap.
Filter syntax
--filter (on search, versions, major-versions, packages, imported-by, symbols) takes a Go boolean expression evaluated server-side, once per result item. It is not a regex — wrap the whole expression in single quotes for the shell.
- Identifiers are the item's fields, which differ per command — a field valid for one list is rejected by another (e.g.
search exposes packagePath, not path). An unknown field fails with undefined identifier: <name> (HTTP 400), which names the offending field. Fields use the item's lowercase JSON key; the exception is enum-like values such as kind, which are capitalized (Function, not func).
- Operators:
== != < <= > >=, boolean && || !, parentheses for grouping.
- String functions:
contains(s, sub), hasPrefix(s, pre), hasSuffix(s, suf).
- Literals: double-quoted strings (
"Function"), true/false, numbers.
Filterable fields per command (string unless noted):
| Command |
Fields |
search |
modulePath, packagePath, synopsis, version |
versions |
version, modulePath, deprecated (bool), retracted (bool), hasGoMod (bool), commitTime |
packages |
path, name, synopsis, isRedistributable (bool) |
imported-by |
path (the importing package 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
Examples
Always request Markdown output (-o md):
# Overview — start here (compact, one call)
godig overview github.com/samber/ro -o md
# Search
godig search "result option monad" --limit 5 -o md
# Package facets
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
# Single symbol (token-efficient vs package-wide doc/examples)
godig symbol doc github.com/samber/lo Map -o md
godig symbol examples github.com/samber/oops OopsError.Error -o md
# Module facets
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
# Lists (auto-paginated; --limit to cap)
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
# Pin a version / set the build context
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
# Vulnerabilities
godig vulns github.com/samber/ro -o md
This skill is not exhaustive. godig --help and each sub-command's --help list current flags and output formats; the data mirrors what pkg.go.dev exposes.
If you encounter a bug or unexpected behavior in godig, open an issue at https://github.com/samber/godig/issues.
1---2name: golang-pkg-go-dev3description: Golang package and module documentation and exploration via `godig`, a pkg.go.dev API client (CLI + MCP server) — package docs, API references, symbols, code examples, available versions, importers (who imports a package), licenses, and known vulnerabilities. Read-only, no auth. Use for looking up any Go/Golang library's documentation, API signatures, usage examples, which versions exist, whether a dependency has CVEs, or who imports a package — prefer this over Context7 for any Go package or module. Triggers on: how to use a Go library, Go API docs, import usage, code examples, pkg.go.dev. Not for upgrading dependencies (→ See `samber/cc-skills-golang@golang-dependency-management` skill) or choosing a library (→ See `samber/cc-skills-golang@golang-popular-libraries` skill). Not for local symbols, or for navigating an already-used dependency's resolved source, call sites, or generic instantiations — → See `samber/cc-skills-golang@golang-gopls` skill for those.4license: MIT5---67# golang-pkg-go-dev89**Dependencies:** `godig` — `go install github.com/samber/godig/cmd/godig@latest` (or use a registered godig MCP server / the hosted instance instead).1011`godig` queries the [pkg.go.dev](https://pkg.go.dev) API. Use it to answer questions about Go packages and modules: docs, symbols, versions, importers and vulnerabilities. It works as a CLI and as an MCP server. All operations are **read-only** and need no authentication.1213## When to use this skill1415Trigger on questions like:1617- "What versions of github.com/samber/lo are available?"18- "Does golang.org/x/text have known vulnerabilities?"19- "Show me the docs / symbols for package X."20- "Which packages import X?"21- "Search Go packages for Y."2223## Choosing between `godig`, gopls, Context7, and govulncheck2425In short: `godig` answers questions about the **published ecosystem** (works even for packages not yet in your `go.mod`); `gopls` reasons about **your locally resolved build** (`go.sum`, including `replace`d forks); Context7 is a fallback for non-Go or unindexed docs; `govulncheck` is the whole-tree vulnerability audit (→ `samber/cc-skills-golang@golang-security`). See the `samber/cc-skills-golang@golang-gopls` skill for wiring `gopls` (MCP server, native `LSP` tool, and CLI) with Claude Code, and the `samber/cc-skills-golang@golang-how-to` skill's "`godig` vs gopls vs Context7 vs govulncheck" section for the full task-to-tool matrix.2627## Setup2829### Install3031```bash32go install github.com/samber/godig/cmd/godig@latest33```3435### Register the MCP server (optional)3637`godig mcp` runs over **stdio** by default, or **streamable HTTP** with `--transport http`.3839stdio (the client launches godig on demand):4041```bash42claude mcp add pkg-go-dev -- godig mcp43```4445streamable HTTP (shared server at `/mcp`, default `:8080`):4647```bash48godig mcp --transport http --addr :808049claude mcp add --transport http pkg-go-dev http://localhost:8080/mcp50```5152Hosted instance (no install needed) — a public server runs at `https://godig.samber.dev/mcp`:5354```bash55claude mcp add --transport http pkg-go-dev https://godig.samber.dev/mcp56```5758The CLI and the MCP server expose the **same** operations under matching names. Prefer the CLI when `godig` is installed; the hosted instance is a fallback when it is not.5960## Commands6162**Global flags (all commands):** `-o/--output table|json|raw|md` (default `table` — pass `-o md` for chat), `--base-url` (pkg.go.dev API), `--vuln-base-url` (Go vulnerability database, consulted by `vulns` and `overview`), `--timeout`, `--log-level debug|info|warn|error|off`. All are also settable via `GODIG_*` env vars.6364| Command | Args | Specific flags | Purpose |65| --- | --- | --- | --- |66| `overview` | `<path>` | `--version` | Compact summary (metadata, versions, licenses, vulns) — start here |67| `search` | `<query>` | `--symbol --limit --filter` | Find packages (optionally exporting a symbol) |68| `package info` | `<path>` | `--module --version` | Package metadata |69| `package imports` | `<path>` | `--module --version` | Packages this package imports (plain list) |70| `package doc` | `<path>` | `--module --version --goos --goarch --format md\|text\|html\|markdown` | Full package doc (LARGE) |71| `package examples` | `<path>` | `--module --version --goos --goarch --symbol` | Runnable examples (LARGE; scope with `--symbol`) |72| `package licenses` | `<path>` | `--module --version` | License files, full text (LARGE) |73| `symbol doc` | `<path> <symbol>` | `--module --version --goos --goarch` | One symbol's signature + doc (token-efficient) |74| `symbol examples` | `<path> <symbol>` | `--module --version --goos --goarch` | One symbol's runnable examples |75| `symbols` | `<path>` | `--module --version --goos --goarch --limit --filter` | List exported symbols |76| `module info` | `<path>` | `--version` | Module metadata |77| `module licenses` | `<path>` | `--version` | Module license files (LARGE) |78| `module readme` | `<path>` | `--version` | Module README, full Markdown (LARGE) |79| `dependencies` | `<path>` | `--version` | go.mod deps: requires / replaces / excludes / go directive |80| `packages` | `<path>` | `--version --limit --filter` | Packages contained in a module |81| `versions` | `<path>` | `--limit --filter` | All versions, newest first |82| `major-versions` | `<path>` | `--limit --filter --exclude-pseudo` | Major versions (v1, v2 …) living as separate modules |83| `imported-by` | `<path>` | `--module --version --limit --filter` | Packages that import this one |84| `vulns` | `<path>` | `--version --limit` | Known vulnerabilities (from the Go vuln DB) |85| `mcp` | — | `--transport stdio\|http --addr --cache-ttl --cache-size` | Run as an MCP server |86| `version` | — | — | Print godig version / commit / build date |8788When `godig` runs as an MCP server, each data command above is exposed as an operation of the same name.8990**Exit codes:** `0` success, `1` runtime error (network, package not found), `2` usage error — a missing/invalid argument or flag (e.g. a non-positive `--limit`), or a command group invoked with no subcommand (`godig package`). Check for `2` to tell a malformed call apart from a failed lookup.9192Full `-o md` output for every command: [sample-output.md](references/sample-output.md).9394### Tips9596- **Start with `overview`** — one call returns a compact summary (metadata, latest + recent versions, license types, vulnerabilities). Reach for `doc`/`examples`/`module readme`/`licenses` (LARGE) only when the full text is needed.97- **Always pass `-o md`** so results render as Markdown (tables, or raw doc/README) in the chat. Other formats exist (`table` default, `json`, `raw`) but prefer `md` here.98- `<path>` is a full import path, e.g. `github.com/samber/lo` — pass it as the positional argument.99- `--version` pins a specific module version (`v1.5.0`, `latest`, `master`, `main`); `--module` disambiguates which module a package belongs to.100- `--filter` narrows list results server-side with a Go boolean expression — see [Filter syntax](#filter-syntax).101- `--goos`/`--goarch` set the documentation/symbols build context (e.g. `linux`/`amd64`).102- Prefer `symbol doc`/`symbol examples` over the package-wide `package doc`/`package examples` when you only need one symbol — far fewer tokens.103- **Parallelize independent lookups** — every command is a self-contained, read-only HTTP query, so calls never depend on each other. When a task needs docs, examples, versions, or vulns for **several** symbols, packages, or modules, issue all the calls at once (multiple `godig` invocations in a single turn) rather than one after another — wall-clock drops from sum-of-latencies to slowest-single-call. For a large fan-out (documenting many symbols, comparing many candidate libraries, auditing CVEs across a dependency set), dispatch parallel sub-agents (up to 5) via the Agent tool, each running its own `godig` calls and returning a compact summary, so the raw LARGE output never lands in the main context.104- Listing commands auto-paginate (return all results); use `--limit` to cap.105106### Filter syntax107108`--filter` (on `search`, `versions`, `major-versions`, `packages`, `imported-by`, `symbols`) takes a **Go boolean expression evaluated server-side, once per result item**. It is not a regex — wrap the whole expression in single quotes for the shell.109110- **Identifiers are the item's fields, which differ per command** — a field valid for one list is rejected by another (e.g. `search` exposes `packagePath`, not `path`). An unknown field fails with `undefined identifier: <name>` (HTTP 400), which names the offending field. Fields use the item's lowercase JSON key; the exception is enum-like values such as `kind`, which are capitalized (`Function`, not `func`).111- **Operators**: `==` `!=` `<` `<=` `>` `>=`, boolean `&&` `||` `!`, parentheses for grouping.112- **String functions**: `contains(s, sub)`, `hasPrefix(s, pre)`, `hasSuffix(s, suf)`.113- **Literals**: double-quoted strings (`"Function"`), `true`/`false`, numbers.114115Filterable fields per command (string unless noted):116117| Command | Fields |118| --- | --- |119| `search` | `modulePath`, `packagePath`, `synopsis`, `version` |120| `versions` | `version`, `modulePath`, `deprecated` (bool), `retracted` (bool), `hasGoMod` (bool), `commitTime` |121| `packages` | `path`, `name`, `synopsis`, `isRedistributable` (bool) |122| `imported-by` | `path` (the importing package path) |123| `symbols` | `name`, `kind` (`Function`/`Method`/`Type`/`Variable`/`Constant`), `synopsis`, `parent` |124| `major-versions` | `modulePath`, `major`, `version`, `isLatest` (bool) |125126```bash127godig symbols github.com/samber/lo --filter 'kind=="Function"' -o md128godig symbols github.com/samber/lo --filter 'kind=="Function" && hasPrefix(name,"Map")' -o md129godig versions github.com/samber/lo --filter 'hasPrefix(version,"v1.5")' -o md130godig versions github.com/samber/lo --filter 'deprecated==false && retracted==false' -o md131godig search "result option" --filter 'hasPrefix(packagePath,"github.com/samber/")' -o md132```133134### Examples135136Always request Markdown output (`-o md`):137138```bash139# Overview — start here (compact, one call)140godig overview github.com/samber/ro -o md141142# Search143godig search "result option monad" --limit 5 -o md144145# Package facets146godig package info github.com/samber/ro -o md147godig package imports github.com/samber/ro -o md148godig package doc github.com/samber/ro --format md -o md149godig package examples github.com/samber/ro --symbol Map -o md150godig package licenses github.com/samber/ro -o md151152# Single symbol (token-efficient vs package-wide doc/examples)153godig symbol doc github.com/samber/lo Map -o md154godig symbol examples github.com/samber/oops OopsError.Error -o md155156# Module facets157godig module info github.com/samber/ro -o md158godig module readme github.com/samber/ro -o raw159godig dependencies github.com/samber/ro -o md160161# Lists (auto-paginated; --limit to cap)162godig versions github.com/samber/ro -o md163godig major-versions github.com/samber/lo -o md164godig packages github.com/samber/ro -o md165godig imported-by github.com/samber/ro --limit 20 -o md166godig symbols github.com/samber/ro --filter 'kind=="Function"' -o md167168# Pin a version / set the build context169godig versions github.com/samber/ro --filter 'hasPrefix(version,"v0.3")' -o md170godig package doc github.com/samber/lo --version v1.50.0 -o md171godig symbols github.com/samber/ro --goos linux --goarch amd64 -o md172173# Vulnerabilities174godig vulns github.com/samber/ro -o md175```176177---178179This skill is not exhaustive. `godig --help` and each sub-command's `--help` list current flags and output formats; the data mirrors what [pkg.go.dev](https://pkg.go.dev) exposes.180181If you encounter a bug or unexpected behavior in `godig`, open an issue at <https://github.com/samber/godig/issues>.