multiAI Summary Pending

gin-gonic

Guides Go web development with the Gin-Gonic HTTP framework including routing, route groups, middleware, JSON binding, validation, error handling, and graceful shutdown. Use when the user needs to build REST APIs or HTTP services with Gin-Gonic (alias for the Gin framework).

223 stars

Installation

Claude Code / Cursor / Codex

$curl -o ~/.claude/skills/gin-gonic/SKILL.md --create-dirs "https://raw.githubusercontent.com/partme-ai/full-stack-skills/main/skills/go-skills/gin-gonic/SKILL.md"

Manual Installation

  1. Download SKILL.md from GitHub
  2. Place it in .claude/skills/gin-gonic/SKILL.md inside your project
  3. Restart your AI agent — it will auto-discover the skill

How gin-gonic Compares

Feature / Agentgin-gonicStandard Approach
Platform SupportmultiLimited / Varies
Context Awareness High Baseline
Installation ComplexityUnknownN/A

Frequently Asked Questions

What does this skill do?

Guides Go web development with the Gin-Gonic HTTP framework including routing, route groups, middleware, JSON binding, validation, error handling, and graceful shutdown. Use when the user needs to build REST APIs or HTTP services with Gin-Gonic (alias for the Gin framework).

Which AI agents support this skill?

This skill is compatible with multi.

Where can I find the source code?

You can find the source code on GitHub using the link provided at the top of the page.

SKILL.md Source

## When to use this skill

Use this skill whenever the user wants to:
- Build Go HTTP services or REST APIs with Gin-Gonic
- Configure routing, route groups, and middleware
- Implement request binding, validation, and JSON responses
- Set up authentication, logging, or CORS middleware
- Deploy Gin applications with graceful shutdown

## How to use this skill

### Workflow

1. **Initialize the router** - `gin.Default()` includes Logger and Recovery middleware
2. **Define routes** - Group related routes and attach handlers
3. **Bind and validate** - Use `ShouldBindJSON` or `ShouldBindQuery` with struct tags
4. **Return responses** - Use `c.JSON()` for consistent API responses

### Quick-Start Example: REST API with Middleware

```go
package main

import (
    "net/http"
    "github.com/gin-gonic/gin"
)

type CreateUserRequest struct {
    Name  string `json:"name" binding:"required,min=2"`
    Email string `json:"email" binding:"required,email"`
}

func main() {
    r := gin.Default()

    // Route group with auth middleware
    api := r.Group("/api/v1")
    {
        api.POST("/users", createUser)
        api.GET("/users/:id", getUser)
    }

    r.Run(":8080")
}

func createUser(c *gin.Context) {
    var req CreateUserRequest
    if err := c.ShouldBindJSON(&req); err != nil {
        c.JSON(http.StatusBadRequest, gin.H{"error": err.Error()})
        return
    }
    // ... create user logic
    c.JSON(http.StatusCreated, gin.H{"name": req.Name, "email": req.Email})
}

func getUser(c *gin.Context) {
    id := c.Param("id")
    c.JSON(http.StatusOK, gin.H{"id": id})
}
```

## Best Practices

1. **Use route groups** - Group routes by version or resource (`/api/v1/users`)
2. **Validate with struct tags** - Use `binding:"required,email"` for declarative validation
3. **Centralize error handling** - Use middleware to catch panics and return consistent error JSON
4. **Graceful shutdown** - Use `http.Server` with `srv.Shutdown(ctx)` for clean connection draining
5. **Avoid gin.Default() in production** - Use `gin.New()` and add only the middleware you need

## Resources

- **Official Docs**: https://gin-gonic.com/docs/

## Keywords

gin-gonic, gin, Go, web framework, REST API, routing, middleware, JSON binding, 路由, 中间件