Expand Go ecosystem coverage: go mod, go list, gotestsum, govulncheck, staticcheck, buf, goreleaser
Nobody has claimed this yet.
- Dominant language
- Rust
- Stars
- 81.1k
- Forks
- 5.1k
- Avg merge
- 4d 21h
- Merged PRs (30d)
- 35
Description
Summary
RTK currently compresses go test, go build, go vet, and golangci-lint. Other Go-ecosystem commands run as passthrough with no token savings. This issue proposes adding compression for high-ROI tools.
Current Coverage
| Command | Strategy |
|---|---|
go test |
Inject -json, NDJSON aggregation |
go build |
Errors-only |
go vet |
Drop location noise |
golangci-lint |
Force JSON, cluster by rule |
Everything else: passthrough.
Proposed Additions (by ROI)
Tier 1 — high verbosity, high frequency
go mod tidy— dropgo: finding/downloading, keepadded/removed/upgradeddeltas. ~80% savings.go list -m all/go list ./...— inject-json, reuse NDJSON parser. ~80% savings.go mod graph— dedupe edges, depth-limit, optional--deep. ~70% savings.gotestsum— alias to existinggo testNDJSON path (gotestsum forwards-json). Trivial.govulncheck— JSON mode, one line per findingOSV-id pkg@ver call-path. ~85% savings on findings.staticcheck— JSON mode, reuse golangci clustering. ~60-80% savings.
Tier 2
buf lint/buf build—--error-format=json, cluster like golangci-lint.goreleaser release— line-filter progress bullets, keep section headers + artifacts + failures. ~80% savings.gofmt -l/goimports -l— count + first 10 paths. TOML filter sufficient.go generate ./...— bracket each//go:generate, keep only failed children.air— strip startup banner, keep build errors.delvenon-interactive — strip startup banner only.
Tier 3
migrate, sqlc generate, ent generate, swag init, wire, mockgen, revive, errcheck, ineffassign, benchstat.
Implementation Patterns
- Rust module +
GoCommandsenum branch:go mod,go list(subcommand ofgo). - Top-level enum +
src/cmds/go/<tool>_cmd.rs: gotestsum, govulncheck, staticcheck, buf, goreleaser (separate binaries). - TOML filter under
src/filters/: gofmt, goimports, air, migrate, swag (line-oriented, no JSON).
Data Point — current go test compression
Tested on minimal demo (2 pass / 2 fail / 1 skip, 1 package):
| Variant | Bytes | Lines |
|---|---|---|
go test -json (RTK input) |
3194 | 27 |
rtk go test (compressed) |
384 | 9 |
| Reduction | 88% | 67% |
Real-world projects with multiple packages have higher ratios.
Recommended Order
go mod tidy(line filter, easy)go list(reuse NDJSON parser)gotestsum(alias, trivial)govulncheck(new module, JSON)staticcheck(new module, JSON, reuse clustering)buf lint/buf buildgoreleaser- TOML filters:
gofmt -l,goimports -l
Open Questions
gotestsumauto-detect via PATH or require explicitrtk gotestsum ...?go mod graphdeep mode — full DAG to tempfile + path, or always inline?- Should TOML filters move to
src/filters/go/subdir once 3+ exist?
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with the existing Rust Go-command module, the GoCommands enum branch, and the current go test NDJSON parser and golangci clustering paths. Review the proposed src/cmds/go/_cmd.rs and src/filters/ locations, then narrow work to the recommended order. Done means the selected commands have compressed output and matching coverage without changing unrelated passthrough behavior.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- go, rust
- Domain
- cli, developer-experience, tooling
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100