Getting it into your agent
One page per mod, every tool's command on it. A separate URL per tool would split the same page into five that compete with each other.
npx skills add spf13/go-skills --skill go-spec-reviewergit clone --depth 1 https://github.com/spf13/go-skillsWrote this? Show the measurements
A badge with what this costs and how it scanned, read live from this page, so it follows the numbers instead of freezing them. Markdown for a README, HTML for a documentation site or a project page.
[](https://agentmods.dev/skills/spf13/go-skills/go-spec-reviewer)<a href="https://agentmods.dev/skills/spf13/go-skills/go-spec-reviewer"><img src="https://agentmods.dev/badge/skills/spf13/go-skills/go-spec-reviewer/github.svg" alt="Measured on agentmods" height="20"></a>Or the 80×15 button, for a site that already has a row of RSS and ATOM ones. Only the verdict fits; the numbers stay here.
<a href="https://agentmods.dev/skills/spf13/go-skills/go-spec-reviewer"><img src="https://agentmods.dev/badge/skills/spf13/go-skills/go-spec-reviewer.svg" alt="Reviewed on agentmods" width="80" height="20"></a>What it costs to keep this loaded
Counted locally with the o200k_base tokenizer, which is exact for GPT models; Claude uses its own tokenizer and its counts differ. Treat this as one consistent yardstick across the catalogue rather than a bill. Prices are per million input tokens.
| Model | Per session | Once invoked |
|---|---|---|
| Fable 5.1 | $0.00099 | $0.02909 |
| Opus 5.5 | $0.00040 | $0.01164 |
| Sonnet 5.5 | $0.00020 | $0.00582 |
| Haiku 4.5 | $0.00010 | $0.00291 |
Grade A, and why
go-spec-reviewer scanned grade A with 0 findings against 26 rules in 11 categories — prompt injection, anti-refusal, data exfiltration, privilege escalation, supply chain, agent snooping, system-prompt leakage, SSRF and excessive agency — measured 2d ago.
A static scan of the body, not an audit. Every finding is printed with the line that produced it so you can judge whether it matters here. A mod is markdown that instructs an agent; that is exactly why what it instructs is worth reading.
Nothing flagged
None of the 26 patterns this scan looks for appear in this file: no shell pipes, no recursive deletes, no credential paths, no hidden text, no instruction-override or anti-refusal phrasing, no agent-config snooping. That is not a guarantee, it is the absence of the things that are checkable.
Copies of this mod
1 near-identical copy found in the catalogue:
- go-spec-reviewer — 100% identical, 34 lines differ
How it starts
The opening of the file, as written. The whole thing — 145 lines — stays where its author put it; the contents beside it link to each section on GitHub.
Go Spec Reviewer
Purpose
Verify that a Go design document is complete, consistent, and idiomatic before implementation begins. The reviewer channels the perspective of Rob Pike, the Go standard library authors, and spf13 — people who would reject unnecessary abstractions, demand explicit error handling, and expect the simplest design that actually works.
How to Run the Review
If a subagent/Task tool is available: dispatch a general-purpose subagent with the review instructions below (description: "Review Go spec document"), passing the spec file path.
If not (Claude.ai, or no Task tool): perform the review yourself, inline, following the same steps.
Either way, the review procedure is identical:
Review Instructions
You are a Go spec reviewer. Your job is to verify this spec is complete and ready for implementation planning, viewed through the lens of idiomatic Go.
Think like Rob Pike reviewing this design: is it simple? Does it do one thing well? Think like the stdlib authors: are interfaces small and defined at the point of use? Think like spf13: if this is a CLI, does it follow Cobra/Viper conventions properly?
Spec to review: [SPEC_FILE_PATH]
Step 0 — Load the Standards
If the go and cobra-viper skills are installed (check /mnt/skills/user/go/SKILL.md and /mnt/skills/user/cobra-viper/SKILL.md), read them first. They are the source of truth for what "idiomatic" means in this review — package organization, stdlib-first, factory-built commands, testing patterns. Do not re-derive standards that conflict with them.
Step 1 — Understand the Codebase Context
Before reviewing, explore the existing codebase to understand conventions and spot conflicts. At minimum:
- Map the package structure. Note whether it follows flat/domain-package organization or legacy layouts (deep
internal/trees, layer packages likeservice//repository/). The spec should match the better of the two — and may reasonably propose migrating away from a legacy layout. - If this is a Cobra CLI, check how commands are constructed. Factory functions (
NewRootCmd()) are the standard. If the codebase uses package-levelvarcommand declarations, note it: (a) the spec should not add more globals, and (b) if it must match the legacy pattern, new flag variable names must be unique across allcmd/files, since they share one package. - Check how commands are registered (in the root factory or
cmd/root.go) — new subcommands must appear in the spec's file list with their registration point. - Identify existing patterns (HTTP clients, error types, config structs, interfaces) the spec should reuse rather than reinvent.
- Note the Go version in
go.mod— the module's owngodirective and the toolchain. The version gates everything below in both directions; see "Version Gate" after this list. Flag specs that propose idioms the toolchain has since obsoleted:- Third-party routers where the 1.22
net/http.ServeMuxpatterns suffice. interface{}whereanyapplies (1.18).- Manual loops that
slices/mapshandle (1.21). - Hand-rolled worker pools where
sync.WaitGroup.Goapplies (1.25). - Hand-rolled
v := expr; p := &vwherenew(expr)applies (1.26) — canonical for an optional pointer struct field,Age: new(yearsSince(born)). errors.Aswhereerrors.AsType[T]applies (1.26) — generic, type-safe, and faster.LastIndex-based splitting wherestrings.CutLastorbytes.CutLastapplies (1.27) — a slice around the last occurrence of a separator.b.Nbenchmark loops.B.Loopitself is Go 1.24; the change is 1.26, where it stopped inhibiting inlining of the loop body. Since then migratingb.NtoB.Loopis unconditionally safe; parameters, results, and variables assigned inside the loop are still kept alive.- Third-party UUID libraries where the stdlib
uuidpackage applies (1.27). encoding/jsonv1 defaults where the spec targetsgo 1.27or later and v2 semantics are wanted —encoding/jsonis now backed by the v2 implementation, which rejects invalid UTF-8 in JSON strings and duplicate names within an object; v1 behavior is preserved viaOptions.
- Third-party routers where the 1.22
What ships with it
1 file beside SKILL.md in the same directory: the scripts, references and assets a skill reads on demand. Not counted in the per-session cost; read them before you install if any of them is executable.
What this file has done since we first saw it
Hashed on every crawl. A supply-chain change to an agent config is a question of when, not whether, so the history is kept rather than the latest state alone.
- 2d ago Changed · +32 lines 5580309f57f5
- 1mo ago First seen · 113 lines · 99 tokens per session scan A 26a129c3cb5e
go-spec-reviewer is a skill published in the GitHub repository spf13/go-skills (685 stars, last pushed 2d ago), licensed MIT. It adds 99 tokens to every session and 2,909 once invoked, about $0.0004 per session on Opus 5.5. A static security scan graded it A with 0 findings. No closer match exists in the catalogue, so it is treated as the original; first seen 2026-08-30.
Other skills, from other repositories
pr-to-go-linter
Generate a new pkg/linters analyzer from a merged or open PR pattern.
golang-refactoring
Golang refactoring — safe, at-scale restructuring of existing Go code: a coverage-adaptive safety net, behavior-preserving transforms (gopls Rename/Extract, gofmt -r, gopatch), the Fowler catalog mapped to Go, breaking import cycles, and small stacked PRs. Apply when a function or type has grown too large, a code…
design-review
Deep design review of Go codebase — naming, structure, consistency, interfaces, error handling. Scores each dimension and provides actionable fixes.
agents-md
Generate AGENTS.md files for Go, Rust, TypeScript, and Java projects. Use this skill whenever the user asks to create, scaffold, bootstrap, update, or review an AGENTS.md (or agent-instructions, CLAUDE.md, repo guide for agents) file in a codebase. Also trigger when the user says "add AGENTS.md", "make this repo…
ring:verifying-code
Verifying a Go project: runs every quality check (lint, vet, imports, format, docs, unit, integration, E2E) and returns a single MERGEREADY or NEEDSFIX verdict. Report-only: never fixes anything. Use for a quick pre-merge or pre-PR check outside a full dev-cycle. Skip when not a Go project, when you want a single…
go-coding-standards
Use when writing or reviewing Go code — explains harness9 project coding conventions and patterns.