From go-code-review
Auto-review Go code for 100+ common mistakes when analyzing .go files, discussing Go patterns, or reviewing PRs with Go code. Checks error handling, concurrency, interfaces, performance, testing, and stdlib usage.
npx claudepluginhub smykla-skalski/sai --plugin go-code-reviewThis skill is limited to using the following tools:
Auto-triggers when reviewing Go code to catch common mistakes from https://100go.co/
Guides browser automation using Playwright and Puppeteer for web testing, scraping, and AI agents. Covers selectors, auto-waits, test isolation, and anti-detection patterns.
Provides checklists for code reviews covering functionality, code quality, security, performance, tests, and maintainability. Use for PRs, audits, team standards, or training.
Guides A/B test setup with mandatory gates for hypothesis validation, metrics definition, sample size calculation, and execution readiness checks.
Auto-triggers when reviewing Go code to catch common mistakes from https://100go.co/
Apply to .go files and Go PRs. Not a substitute for go vet or golangci-lint — use both alongside this review.
Critical (fix before merge):
Major (should fix):
Minor (consider):
func fetchUser(id int) (*User, error) {
row := db.QueryRow("SELECT * FROM users WHERE id=?", id)
var u User
if err := row.Scan(&u.Name, &u.Email); err != nil {
return nil, err
}
return &u, nil
}
Output:
Mistake: #49 — Ignoring When to Wrap an Error
Severity: Major
Location: handler.go:5
Fix: return nil, fmt.Errorf("fetchUser id=%d: %w", id, err)
Why: Without %w, callers cannot trace origin; errors.Is/errors.As chains break
</example>