Skip to content
Back to skills

Go Review

ASecurity

Numbered Go review checklist G1-G12 applied to the PR diff, each item marked pass, fail or n.a. Use when the PR diff touches .go files, go/go.mod or the CI go job.

  • 8 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added November 5, 2026
ai-agentspythongoshell

Security analysis

A100/100

Scanned November 5, 2026

npx -y skills add volekerb/hivemill --skill go-review --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Go Review?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Go Review
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/volekerb-go-review/badge)](https://www.skillsdirectory.com/skills/volekerb-go-review)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: go-review
description: Numbered Go review checklist G1-G12 applied to the PR diff, each item marked pass, fail or n.a. Use when the PR diff touches .go files, go/go.mod or the CI go job.
---

# Go review checklist

Policy: docs/adr/0001-language-policy.md. Mark every item pass, fail or n.a. in your review comment; a fail is a blocking finding.

Follow these steps in order: read `gh pr diff <url>`, then answer G1 to G12.

- G1 `gofmt -l` prints nothing and vet is clean: CI job `go` is green.
- G2 Every error is checked; none is discarded with `_ =`; wrapped with `%w`.
- G3 No panic is reachable from input. Guards fail closed: exit 2.
- G4 No shell: `exec.Command` takes argv only; no `sh -c`; no string-built commands.
- G5 No `unsafe`, no cgo, no reflect on input.
- G6 `go/go.mod` has no new `require`; if it does, the owner decided it (else fail).
- G7 Tests: table tests for new logic, `go test -race -count=1 ./...` clean, a fuzz target for every parser.
- G8 regexp: RE2 has no lookaround, so a port of a Python lookaround is a hand-written func with its own test. RE2 `\w \b \d \s` are ASCII while Python `str` regexes are Unicode: a port uses explicit Unicode classes or a hand matcher and tests non-ASCII input.
- G9 Paths: `filepath.Clean` plus under-root checks; no TOCTOU between a guard decision and its use.
- G10 Resource bounds: input size limits, timeouts on I/O.
- G11 Shared state is guarded (`sync`) or absent.
- G12 Ports: a differential test against the old implementation; zero loosened and zero tightened cases.

Mark the whole list n.a. only when the diff has no Go. Anything you cannot decide from the diff is a fail, not a pass.

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

View all in ai-agents →

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.