Go's net/http patterns are consistent, but writing idiomatic handlers — with context propagation, structured errors, and clean JSON encoding — is repetitive. Claude nails the idioms.
claude "Write a Go HTTP handler for a POST /users endpoint. It should decode a JSON body, validate the required fields, insert into Postgres using pgx, and return appropriate status codes. Use the standard library only."
Claude will produce a handler that handles decode errors, validation, DB errors, and success responses cleanly — with no magic:
func (h *UserHandler) Create(w http.ResponseWriter, r *http.Request) {
var req CreateUserRequest
if err := json.NewDecoder(r.Body).Decode(&req); err != nil {
http.Error(w, "invalid request body", http.StatusBadRequest)
return
}
if req.Email == "" {
http.Error(w, "email is required", http.StatusUnprocessableEntity)
return
}
// ...
}
For router-specific patterns, be explicit about what you're using:
claude "Write a Chi router middleware that logs request duration and status code using slog. Apply it to all routes except /health."
Go rewards consistency — Claude delivers it every time.
Log in to leave a comment.
Set up Claude Code as an automated reviewer in your CI pipeline — on every pull request, it reads the diff, checks for bugs, security issues, missing tests, and convention violations, then posts its findings as a PR comment. Your human reviewers get a head start because the obvious issues are already flagged before they look.
Before deploying, tell Claude to read your project — migrations, environment variables, queue workers, scheduled tasks, caching, third-party integrations — and generate a deployment checklist that's specific to your app. Not a generic "did you run migrations?" list, but one that knows YOUR infrastructure and catches the things YOUR deploy can break.
Instead of writing a README from memory or copying a template, tell Claude to read your project and generate one that's actually accurate — real setup instructions from your config, real architecture from your directory structure, real API examples from your routes, and real prerequisites from your dependency files.