Skip to main content
Kodelyth ECC
Command

/go-review

Comprehensive Go code review for idiomatic patterns, concurrency safety, error handling, and security. Invokes the go-reviewer agent.

Run:/go-review

Go Code Review

This command invokes the go-reviewer agent for comprehensive Go-specific code review.

What This Command Does

  • Identify Go Changes: Find modified .go files via git diff
  • Run Static Analysis: Execute go vet, staticcheck, and golangci-lint
  • Security Scan: Check for SQL injection, command injection, race conditions
  • Concurrency Review: Analyze goroutine safety, channel usage, mutex patterns
  • Idiomatic Go Check: Verify code follows Go conventions and best practices
  • Generate Report: Categorize issues by severity

When to Use

Use /go-review when:

  • After writing or modifying Go code
  • Before committing Go changes
  • Reviewing pull requests with Go code
  • Onboarding to a new Go codebase
  • Learning idiomatic Go patterns

Review Categories

CRITICAL (Must Fix)

  • SQL/Command injection vulnerabilities
  • Race conditions without synchronization
  • Goroutine leaks
  • Hardcoded credentials
  • Unsafe pointer usage
  • Ignored errors in critical paths

HIGH (Should Fix)

  • Missing error wrapping with context
  • Panic instead of error returns
  • Context not propagated
  • Unbuffered channels causing deadlocks
  • Interface not satisfied errors
  • Missing mutex protection

MEDIUM (Consider)

  • Non-idiomatic code patterns
  • Missing godoc comments on exports
  • Inefficient string concatenation
  • Slice not preallocated
  • Table-driven tests not used

Automated Checks Run

# Static analysis
go vet ./...

Advanced checks (if installed)

staticcheck ./... golangci-lint run

Race detection

go build -race ./...

Security vulnerabilities

govulncheck ./...

Example Usage

User: /go-review

Agent:

Go Code Review Report

Files Reviewed

  • internal/handler/user.go (modified)
  • internal/service/auth.go (modified)

Static Analysis Results

✓ go vet: No issues ✓ staticcheck: No issues

Issues Found

[CRITICAL] Race Condition File: internal/service/auth.go:45 Issue: Shared map accessed without synchronization

go var cache = map[string]*Session{} // Concurrent access!

func GetSession(id string) *Session { return cache[id] // Race condition }

Fix: Use sync.RWMutex or sync.Map
go var ( cache = map[string]*Session{} cacheMu sync.RWMutex )

func GetSession(id string) *Session { cacheMu.RLock() defer cacheMu.RUnlock() return cache[id] }


[HIGH] Missing Error Context
File: internal/handler/user.go:28
Issue: Error returned without context
go return err // No context
Fix: Wrap with context
go return fmt.Errorf("get user %s: %w", userID, err)

Summary

  • CRITICAL: 1
  • HIGH: 1
  • MEDIUM: 0
Recommendation: FAIL: Block merge until CRITICAL issue is fixed

Approval Criteria

| Status | Condition | |--------|-----------| | PASS: Approve | No CRITICAL or HIGH issues | | WARNING: Warning | Only MEDIUM issues (merge with caution) | | FAIL: Block | CRITICAL or HIGH issues found |

Integration with Other Commands

  • Use /go-test first to ensure tests pass
  • Use /go-build if build errors occur
  • Use /go-review before committing
  • Use /code-review for non-Go specific concerns

Related

  • Agent: agents/go-reviewer.md
  • Skills: skills/golang-patterns/, skills/golang-testing/

Agents this command fires