go-pedantry

go-pedantry is a skill for Claude Code from oborchers/fractional-cto. It costs 71 tokens per session (3,565 once invoked), scanned A, original, MIT.

A set of conventions for writing Go, a programming language known for explicit error handling and built-in formatting tools. It covers Go-specific choices such as wrapping errors, designing interfaces, naming packages, and ordering struct fields.

In plain words
What is it for?
It helps write and review Go code, including error wrapping with fmt.Errorf, interface design, package names, receiver names, and linter settings.
Why use it?
Go leaves some design details open even though the language has strong basic conventions. Shared decisions prevent different packages from handling the same concerns in incompatible ways.

Skill for Claude Code

Written for Claude Code: shipped in a Claude Code plugin.

Part of the pedantic-coder plugin — 16 skills, 3 commands, 1 agent shipped together

Good fit It helps write and review Go code, including error wrapping with fmt.Errorf, interface design, package names, receiver names, and linter settings.

Compare 6 skills from other repositories ↓
Install with agentmods
npx agentmods add skills/oborchers/fractional-cto/go-pedantry
Install

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.

Any agent
npx skills add oborchers/fractional-cto --skill go-pedantry
Clone the repo
git clone --depth 1 https://github.com/oborchers/fractional-cto

Made for: Claude Code.

Or install pedantic-coder, the plugin that ships this one along with the rest of its 16 skills, 3 commands, 1 agent.

Wrote 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.

agentmods badge for go-pedantry

README.md
[![agentmods](https://agentmods.dev/badge/skills/oborchers/fractional-cto/go-pedantry/github.svg)](https://agentmods.dev/skills/oborchers/fractional-cto/go-pedantry)
Your own site
<a href="https://agentmods.dev/skills/oborchers/fractional-cto/go-pedantry"><img src="https://agentmods.dev/badge/skills/oborchers/fractional-cto/go-pedantry/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.

agentmods 80×15 button for go-pedantry

Your own site · 80×15
<a href="https://agentmods.dev/skills/oborchers/fractional-cto/go-pedantry"><img src="https://agentmods.dev/badge/skills/oborchers/fractional-cto/go-pedantry.svg" alt="Reviewed on agentmods" width="80" height="20"></a>
Per session 71 Skills are progressive disclosure: only the name and description are preloaded; the body loads when the skill is used.
When invoked 3,565 The whole file, excluding the scripts and references it only reads on demand.
Security scan A 0 findings. A grade says what 26 rules found in the file — not that it is safe.
Origin original No closer match found in the catalogue.
Token cost

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.

ModelPer sessionOnce invoked
Fable 5.1 $0.00071 $0.03565
Opus 5.5 $0.00028 $0.01426
Sonnet 5.5 $0.00014 $0.00713
Haiku 4.5 $0.00007 $0.00357

Measured 5d ago against content hash 0a419ad668cf, method: parsed. Prices are Anthropic first-party input rates as of 2026-10-07, from the pricing page.

Security

Grade A, and why

go-pedantry 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 5d 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.

pedantic-coder/skills/go-pedantry/SKILL.md · 434 lines

How it starts

The opening of the file, as written. The whole thing — 434 lines — stays where its author put it; the contents beside it link to each section on GitHub.

Go Is Opinionated -- So Are We

Go is a language that already has strong opinions: gofmt, short variable names, explicit error handling, no exceptions. But the language's opinions stop at syntax. How you wrap errors, design interfaces, name packages, order struct fields, and configure your linter -- these are decisions Go leaves to you. This skill makes those decisions for you, because inconsistency in these areas is what turns a Go codebase from clean to chaotic.

Error Wrapping: Always %w, Never %s or %v

When wrapping an error with fmt.Errorf, ALWAYS use %w. This preserves the error chain so that errors.Is() and errors.As() work. Using %s or %v converts the error to a string and destroys the chain. This is not a style preference -- it is the difference between errors that can be programmatically handled and errors that can only be logged.

// BAD -- error chain is destroyed, errors.Is() will not work
func GetUser(ctx context.Context, id string) (*User, error) {
    user, err := db.QueryUser(ctx, id)
    if err != nil {
        return nil, fmt.Errorf("failed to get user %s: %s", id, err.Error())
    }
    return user, nil
}

// BAD -- %v also destroys the chain
func GetUser(ctx context.Context, id string) (*User, error) {
    user, err := db.QueryUser(ctx, id)
    if err != nil {
        return nil, fmt.Errorf("failed to get user %s: %v", id, err)
    }
    return user, nil
}
// GOOD -- %w preserves the error chain
func GetUser(ctx context.Context, id string) (*User, error) {
    user, err := db.QueryUser(ctx, id)
    if err != nil {
        return nil, fmt.Errorf("getting user %s: %w", id, err)
    }
    return user, nil
}

// Now callers can inspect the error chain:
user, err := GetUser(ctx, "usr_123")
if errors.Is(err, sql.ErrNoRows) {
    // handle not found
}

Error message conventions:

  • Start with a lowercase verb in gerund form: "getting user", "parsing config", "connecting to database"
  • Do NOT start with "failed to" or "error" -- the fact that it is an error is already clear from the context
  • Add identifying information: IDs, names, paths -- whatever helps debug the issue
  • Keep it terse: "getting user %s: %w" not "an error occurred while attempting to retrieve the user with ID %s from the database: %w"

Read the full file on GitHub · 434 lines

Files

What ships with it

2 files 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.

Changes

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.

  1. 5d ago First seen · 434 lines · 71 tokens per session scan A 0a419ad668cf

Subscribe to this mod's changes

go-pedantry is a skill published in the GitHub repository oborchers/fractional-cto (32 stars, last pushed 5d ago), licensed MIT. It adds 71 tokens to every session and 3,565 once invoked, about $0.0003 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-10-13.

Related

Other skills, from other repositories

pr-to-go-linter

Generate a new pkg/linters analyzer from a merged or open PR pattern.

github/gh-aw · 22 tokens

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…

samber/cc-skills-golang · 220 tokens

design-review

Deep design review of Go codebase — naming, structure, consistency, interfaces, error handling. Scores each dimension and provides actionable fixes.

dimetron/pi-go · 30 tokens

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…

dimetron/pi-go · 138 tokens

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…

LerianStudio/ring · 101 tokens

go-concurrency-safety

L1 supplement - audits Go-specific concurrency hazards in node client code: map iteration non-determinism, goroutine leaks, mutex ordering, panic boundaries, context cancellation.

PlamenTSV/plamen · 40 tokens