Agent skill

Go Performance

by caarlos0 in caarlos0/dotfiles

Profile and optimize Go CPU, allocations, GC, concurrency, and I/O with benchmarks and pprof.

MITAuto-check passedDevelopment

Install Go Performance

skills CLI
$ npx skills add caarlos0/dotfiles --skill go-performance -a claude-code

Project install by default; add -g for ~/.claude/skills/.

GitHub CLI
$ gh skill install caarlos0/dotfiles go-performance --agent claude-code

Project scope by default; add --scope user for a personal install. Needs GitHub CLI 2.90.0 or later (public preview).

Manual copy
$ git clone --depth 1 https://github.com/caarlos0/dotfiles.git skills-src && mkdir -p .claude/skills && cp -r skills-src/skills/go-performance .claude/skills/go-performance && rm -rf skills-src

Use ~/.claude/skills/ instead of .claude/skills for a personal install. The folder must contain SKILL.md.

Claude Code skills documentation · loads skills from .claude/skills/

Facts

Skill name
go-performance
GitHub stars
220
Token cost
~1.4k tokens
SKILL.md length
637 words
Files
1
Skills in repo
20
Repo updated
First seen
Licence
MIT

At a glance

Profile and optimize Go CPU, allocations, GC, concurrency, and I/O with benchmarks and pprof.

  • Development work in your project
  • SKILL.md covers Benchmarks, Profiles and trace, Escapes, inlining, and… and Pools and memory, plus 5 more sections
  • Calls go

What it does

Go Performance is an agent skill from caarlos0/dotfiles. Profile and optimize Go CPU, allocations, GC, concurrency, and I/O with benchmarks and pprof.

Its SKILL.md is about 1.4k tokens, which your agent loads only when the skill is triggered. It is a single SKILL.md file with no bundled scripts.

It sits in Development. The licence is MIT.

When your agent uses it

  • Development work in your project

Example prompts

  • “/go-performance”

What it can do on your machine

Read from SKILL.md and the folder at commit b144097. It shows what the files ask for, not the result of running them.

  • Tool permissions

    Pre-approves nothing: there is no allowed-tools line, so your agent's usual permission prompts apply.

    From allowed-tools in the SKILL.md frontmatter.

  • Runs code

    Shell commands in SKILL.md call:

    • go

    From the folder's file list and the shell code blocks in SKILL.md.

  • Network

    No URLs in SKILL.md.

    From URLs in SKILL.md, links to its own repository left out.

  • Credentials

    Names no API keys, tokens, secrets or passwords.

    From names ending in _API_KEY, _TOKEN, _SECRET, _KEY or _PASSWORD in SKILL.md.

Context cost

Go Performance loads about 1.4k tokens when it runs. Until then it costs about 27 tokens; SKILL.md has 637 words of instructions outside code blocks.

Always · name and description, kept in context so the agent knows when to use it
~27
When it runs · the whole SKILL.md, loaded when a task matches
~1.4k

Estimates: characters ÷ 4, the usual rule of thumb; real counts depend on the model's tokenizer. Scripts and assets cost tokens only if the agent reads them.

Safety

Auto-check passed

The automated check found no risky patterns in SKILL.md.

Automated static check — not a guarantee. Review scripts before installing. It scans the text of SKILL.md for risky patterns (piping downloads into a shell, reading credential files, hidden Unicode, destructive commands); files beside SKILL.md are not scanned.

SKILL.md

The full file from caarlos0/dotfiles at commit b144097, republished under its MIT licence (© caarlos0). 637 words, ~1,397 tokens.

Download SKILL.mdSave it as .claude/skills/go-performance/SKILL.md (or your agent's skills folder).
name
go-performance
description
Profile and optimize Go CPU, allocations, GC, concurrency, and I/O with benchmarks and pprof.

Go Performance

Profile before optimizing. Pin the Go version, GOMAXPROCS, input, and benchmark flags. Change one measured bottleneck and compare with benchstat.

Benchmarks

Benchmark production code with testing.B. Report allocations and throughput where relevant:

go
func BenchmarkEncode(b *testing.B) {
	b.ReportAllocs()
	b.SetBytes(int64(len(input)))
	for b.Loop() {
		Encode(input)
	}
}

Use b.RunParallel only when contention or scaling is the behavior under test. Collect multiple samples:

bash
go test -run='^$' -bench=BenchmarkEncode -benchmem -count=10 ./pkg > old.txt
go test -run='^$' -bench=BenchmarkEncode -benchmem -count=10 ./pkg > new.txt
benchstat old.txt new.txt

Use realistic sizes and distributions. Include benchstat output with a performance change; a single ns/op result is not evidence.

Profiles and trace

From tests:

bash
go test -bench=BenchmarkEncode \
  -cpuprofile=cpu.prof -memprofile=heap.prof \
  -blockprofile=block.prof -mutexprofile=mutex.prof
go tool pprof -http=:8080 cpu.prof
go tool pprof -top -cum -alloc_objects heap.prof

For services, expose net/http/pprof only on an authenticated internal listener. Use:

  • CPU profile for sampled on-CPU hot paths.
  • allocs for allocation sites and heap for live objects.
  • block and mutex profiles for contention.
  • goroutine profiles for growth and stuck stacks.
  • go tool trace for scheduler latency, goroutine transitions, syscalls, GC, and network blocking that sampling profiles do not explain.

Escapes, inlining, and allocations

bash
go build -gcflags='-m=2' ./pkg/...

Escape and inlining diagnostics are leads. Confirm the allocation or call site in a benchmark or profile before changing ownership.

  • Pre-size slices and maps when the size is known: make([]T, 0, n) and make(map[K]V, n).
  • Reuse slice capacity with s = s[:0] only when retained backing arrays do not pin excessive memory.
  • Use strings.Builder for strings and bytes.Buffer for bytes when repeated appends are measured. Do not copy a non-zero Builder; call Reset before reuse.
  • Prefer strconv.Append* or Format* over fmt.Sprintf in formatting hot paths.
  • Interface conversions and interface calls can cause escapes or prevent inlining and devirtualization. They do not always allocate; verify with -gcflags=-m=2 and -benchmem.
  • Generics do not guarantee faster code. Compare generated code and benchmarks before replacing an interface API.

Pools and memory

sync.Pool is for temporary reusable objects that may be discarded at any time. It provides no retention guarantee. Reset objects before Put, validate state after Get, and benchmark pool contention plus retained capacity.

Use heap profiles to distinguish allocation rate from live heap. A large alloc_space profile with a small inuse_space profile indicates churn, not a leak. A goroutine retaining a reference can pin a large object graph.

Tune GOGC or GOMEMLIMIT only after allocation and GC profiles identify the trade-off. GOMEMLIMIT is a soft runtime memory limit, not an RSS cap.

Show full SKILL.md (283 more words)Show less

Concurrency

  • Use block and mutex profiles before replacing locks with channels, atomics, sharding, or lock-free structures.
  • Use atomics only for small independent state with documented memory-ordering invariants.
  • Bound goroutine fan-out and queue capacity. Every goroutine needs an exit through context cancellation, channel closure, or owned lifecycle.
  • Investigate rising goroutine counts with two goroutine profiles under stable load; compare which stacks accumulate.
  • Avoid holding locks across I/O or callbacks. Keep critical sections small without splitting invariants.
  • Treat cache-line padding and false-sharing fixes as hardware-specific hypotheses; prove them with contention benchmarks.

Invoke runtime-process-debugging for child processes, pipes, shutdown, or scheduler/lifecycle stalls.

I/O and serialization

Use bufio.Reader/Writer for repeated small operations and batch small writes. Reuse byte buffers where ownership is clear. Preserve partial-write handling, flush errors, EOF, deadlines, cancellation, and ordering.

encoding/json, reflection, and struct-tag processing can be hot in serialization-heavy programs. Profile before adding generated codecs or a dependency; include compatibility, escaping, number handling, and error behavior in comparisons.

PGO and low-level code

Use a representative CPU profile as default.pgo and compare:

bash
go build -pgo=auto ./...

PGO can alter inlining and devirtualization, so re-run benchmarks and binary size checks on the deployment target.

Before unsafe, assembly, or architecture-specific code, confirm bounds checks, dispatch, cache misses, or instructions are material. The low-level version must outperform safe Go and document its invariant and portability.

Regression guards

Pin Go and GOMAXPROCS. Use focused benchmarks and allocation assertions for stable invariants. Keep wall time on shared runners advisory unless variance is controlled.

  • go-conventions takes precedence for correctness and API design.
  • code-review checks a completed diff. When invoked from code-review, do not invoke it again.
  • code-simplifier runs after the gain is proven.
  • runtime-process-debugging owns process and lifecycle stalls.

Correctness overrides performance.

© caarlos0, MIT. Rendered from Markdown: HTML in the file is shown as text, images as links, and headings moved down two levels. Raw file

Files

Just SKILL.md in skills/go-performance of caarlos0/dotfiles.

Open the folder on GitHubat commit b144097

Compare with similar skills

Go Performance next to the 5 skills that share the most tags, products or categories with it. Stars are the repository's; “used in” counts other GitHub owners with a copy.

Go Performance compared with similar skills
SkillStarsUsed inTokensAuto-checkLicenceRepo updated
Go Performance this skillcaarlos0/dotfiles220—~1.4kAutomated safety check: PassMIT
Vercel Composition Patternssupabase/supabase111k59 repos~726Automated safety check: PassMIT
Finishing a Development Branchobra/superpowers296k5 repos~1.9kAutomated safety check: PassMIT
Typescript Advanced Typesrolling-scopes/rsschool-app10k25 repos~4.2kAutomated safety check: PassMPL-2.0
PR Babysitteropeninterpreter/openinterpreter69k3 repos~4.2kAutomated safety check: PassApache-2.0
Code Review ChecklistshareAI-lab/learn-claude-code78k5 repos~1.1kAutomated safety check: PassMIT

Similar skills

  • Official

    React composition patterns that scale. An agent skill from supabase/supabase.

    111k GitHub starsUsed in 59 repos~726 tokens
    DevelopmentAuto-check passed
  • Walks the last step of a branch: confirm tests pass, detect the git environment, ask how to integrate, carry out your choice and clean up the worktree.

    296k GitHub starsUsed in 5 repos~1.9k tokens
    DevelopmentAuto-check passed
  • Typescript Advanced Types

    rolling-scopes/rsschool-app

    Master TypeScript's advanced type system including generics, conditional types, mapped types, template literals, and utility types for building type-safe applications.

    10k GitHub starsUsed in 25 repos~4.2k tokens
    DevelopmentAuto-check passed
  • PR Babysitter

    openinterpreter/openinterpreter

    Watches an open GitHub pull request until it merges, handling review comments, diagnosing CI failures and retrying flaky checks along the way.

    69k GitHub starsUsed in 3 repos~4.2k tokens
    DevelopmentAuto-check passed
  • Code Review Checklist

    shareAI-lab/learn-claude-code

    Reviews code against a five-part checklist covering security, correctness, performance, maintainability and testing, and reports findings in a fixed format.

    78k GitHub starsUsed in 5 repos~1.1k tokens
    DevelopmentAuto-check passed
  • Greploop

    onyx-dot-app/onyx

    Iteratively improves a PR (GitHub), MR (GitLab), or shelved changelist (Perforce) until Greptile gives it a 5/5 confidence score with zero unresolved comments.

    32k GitHub starsUsed in 4 repos~3.3k tokens
    DevelopmentAuto-check passed

More from caarlos0/dotfiles

All 20 skills in this repo
  • CLI Design

    caarlos0/dotfiles

    Design and review command-line interfaces for usability, automation, safety, accessibility, and long-term compatibility.

    220 GitHub stars~4.2k tokensUpdated today
    Auto-check passed
  • Dependabot Merge

    caarlos0/dotfiles

    Review and merge open dependency pull requests from Dependabot, Renovate and similar bots across the goreleaser organization and the caarlos0 user.

    220 GitHub stars~5k tokensUpdated today
    Auto-check passed
  • Gh CLI

    caarlos0/dotfiles

    Use GitHub CLI efficiently for pull requests, CI checks, workflow runs, logs, and merge status.

    220 GitHub stars~2.5k tokensUpdated today
    Auto-check passed
  • Tui Design

    caarlos0/dotfiles

    Design terminal user interfaces and interactive CLIs that stay usable, accessible, and scriptable.

    220 GitHub stars~3k tokensUpdated today
    Auto-check passed
  • Dashboard

    caarlos0/dotfiles

    Design and review dashboards that are informative, honest, accessible, and visually polished, independent of any tool.

    220 GitHub stars~4.1k tokensUpdated today
    Auto-check passed
  • Gh Doc Author

    caarlos0/dotfiles

    Author and revise clear GitHub internal documentation, including design docs, proposals, decision records, runbooks, status updates, and handoffs.

    220 GitHub stars~2.2k tokensUpdated today
    Auto-check passed

Categories

Questions about Go Performance

What does Go Performance do?

Profile and optimize Go CPU, allocations, GC, concurrency, and I/O with benchmarks and pprof. Go Performance is an agent skill from caarlos0/dotfiles. Profile and optimize Go CPU, allocations, GC, concurrency, and I/O with benchmarks and pprof.

When should I use Go Performance?

Go Performance fits situations like: development work in your project.

How do I install Go Performance in Claude Code?

Run `npx skills add caarlos0/dotfiles --skill go-performance -a claude-code`. Or copy the skill folder (skills/go-performance in caarlos0/dotfiles) into .claude/skills/go-performance in your project. Claude Code loads it when a task matches its description.

How do I install Go Performance in Codex?

Run `npx skills add caarlos0/dotfiles --skill go-performance -a codex`. Or copy the skill folder (skills/go-performance in caarlos0/dotfiles) into .agents/skills/go-performance in your project. Codex loads it when a task matches its description.

Can I use Go Performance in Cursor, Gemini CLI or GitHub Copilot?

Cursor, Gemini CLI, GitHub Copilot and OpenCode also load SKILL.md folders. With the skills CLI, run `npx skills add caarlos0/dotfiles --skill go-performance -a cursor` (or -a gemini-cli, github-copilot or opencode for the others). To copy it by hand, put the folder in .cursor/skills/go-performance, .gemini/skills/go-performance, .github/skills/go-performance and .opencode/skills/go-performance in your project.

What does Go Performance need to run?

Going by SKILL.md and its folder, Go Performance needs the command-line tools its instructions call (go).

Does Go Performance access the network?

SKILL.md contains no URLs. Any network use would come from the scripts or tools the agent runs. This is read from the text; nothing was executed.

Is Go Performance safe to install?

Our automated static check of SKILL.md found no risky patterns, such as piping downloads into a shell, reading credential files or hidden Unicode. It is not a guarantee. Review the folder before installing.

What licence does Go Performance use?

Go Performance is published under the MIT licence (the repository's licence). It allows redistribution, so the full SKILL.md is shown on this page.

How many tokens does Go Performance use?

About 1.4k tokens (SKILL.md is roughly 5.6k characters). Agents keep only the skill's name and description in context until a task matches; then they load SKILL.md in full.

What are the alternatives to Go Performance?

Skills that share tags, products or a category with Go Performance: Vercel Composition Patterns (supabase/supabase, 111k stars), Finishing a Development Branch (obra/superpowers, 296k stars), Typescript Advanced Types (rolling-scopes/rsschool-app, 10k stars) and PR Babysitter (openinterpreter/openinterpreter, 69k stars). The comparison table on this page puts their stars, adoption, token cost, safety result and licence side by side.

Who maintains Go Performance?

caarlos0 (a GitHub user) maintains it in caarlos0/dotfiles, which has 220 GitHub stars. The repository holds 20 skills in this directory. The repository was last updated on October 7, 2026.

Source: caarlos0/dotfiles on GitHub. Facts on this page come from the repository at the commit we read; the author's words are quoted as theirs.