validate

Validates gokit Go module changes with scoped build, test, lint, and vuln-scan tasks via toven.

Updated Feb 15, 2026
One-click install
npx skills add https://github.com/kbukum/gokit --skill validate-kbukum
Or copy as Structured Prompt for Agent▼
Please help me install this Agent Skill.
Skill: validate
Source: https://github.com/kbukum/gokit/tree/main/.github/skills/validate
Command: npx skills add https://github.com/kbukum/gokit --skill validate-kbukum

SYSTEM DOCUMENTATION & REQUIREMENTS

What problem does it solve? In a multi-module Go monorepo like gokit, running full-tree builds and tests for every small change is slow and wasteful. This Skill shows how to use toven, the repo's task runner, to validate only the modules a change actually affects, reproducing CI checks locally before committing. ## Core Features & Use Cases - Affected-set scoping: Compute the blast radius of a diff (including reverse dependencies) and run build, vet, test, lint, tidy, and vuln-scan tasks only on impacted modules. - Race-safe testing: Run tests with the repo's required -race -count=1 -shuffle=on flags, target single tests, or watch mode for reruns on change. - Lint compliance: Handles the gofumpt-vs-gofmt gap so golangci-lint passes, plus module selectors, dependency/workspace expansion, caching, and JSONL output for programmatic parsing. - Use Case: After editing the media module, run toven test --module go:media -- -race -count=1 -shuffle=on and toven lint --module go:media to confirm the change is green before handing it to the maintainer. ## Quick Start Ask the assistant to validate your gokit change by running the affected-module tests and lint through toven before committing.

Frequently Asked Questions about validate

High-intent search queries and answers about installing and using this skill.

FAQPage Schema
How do I run tests only for changed Go modules in a monorepo?▼

Use toven's affected-set detection: run `toven affected test --base origin/main --merge-base` to see the blast radius, then `toven test --base origin/main --merge-base` to execute tests only for modules the diff touches, including reverse dependents.

How do I run Go tests with race detection and shuffling?▼

Pass test flags verbatim after `--`, since toven's default test selector excludes `-race`. Run `toven test --module go:<name> -- -race -count=1 -shuffle=on`, which matches gokit's required green baseline.

Why does golangci-lint fail after running gofmt?▼

golangci-lint in this repo enforces gofumpt, which is stricter than gofmt, but `toven format` runs plain `gofmt -w`. Run `gofumpt -w` on the changed directories first, then run `toven lint --module go:<name>`.

How do I see what commands a task runner will execute without running them?▼

Use `toven plan test` to preview what a task would run and where, or `toven explain test --module go:media` to see the exact argv for a single module, without executing anything.

Can I get machine-readable test output for CI or automation?▼

Yes, toven supports JSONL output for programmatic parsing. Run `toven --output jsonl test --base origin/main --merge-base` to get structured results instead of a terminal table.

When should I run the full test tree instead of affected modules?▼

Full-tree runs are reserved for audits and CI sign-off. Escalate beyond the affected set only when the change is genuinely tree-wide or you are preparing a release; otherwise scope to changed modules.