.agents/rules/named.md
package user, not package userService or package user_servicepackage http, package json, package daopackage user not package userspackage util, package common, package base// Recommended
package user
package handler
package service
// Not recommended
package UserService
package user_service
package utils
user_handler.go, user_service.gouser_handler_test.gouser_linux.go, user_windows.gouser/
├── user_handler.go
├── user_service.go
├── user_dao.go
└── user_test.go
internal/, pkg/, cmd/handler/, service/, dao/project/
├── cmd/ # Main entry point
│ └── server_main.go
├── internal/ # Private code
│ ├── handler/
│ ├── service/
│ ├── dao/
│ ├── model/
│ └── middleware/
├── pkg/ # Public code
└── api/ # API definitions
Reader, Writer, HandlerReader, Executor, Validator// Recommended
type Reader interface {
Read(p []byte) (n int, err error)
}
type UserService interface {
Register(req *RegisterRequest) (*User, error)
Login(req *LoginRequest) (*User, error)
}
// Not recommended
type UserInterface interface {}
type IUserService interface {}
UserService, UserHandlerUser not UserModel// Recommended
type UserService struct {}
type UserHandler struct {}
type RegisterRequest struct {}
// Not recommended
type user_service struct {}
type SUserService struct {}
type UserModel struct {}
GetUser, CreateUser, DeleteUserIsValid, HasPermission// Recommended
func (s *UserService) Register(req *RegisterRequest) (*User, error)
func (s *UserService) GetUserByID(id uint) (*User, error)
func (s *UserService) IsEmailExists(email string) bool
// Not recommended
func (s *UserService) register_user()
func (s *UserService) get_user_by_id()
func (s *UserService) CheckEmailExists() // Should use Is/Has
const MaxRetryCount = 3const StatusActive = "active"// Recommended
const (
StatusActive = "1"
StatusInactive = "0"
MaxRetryCount = 3
)
// Not recommended
const (
STATUS_ACTIVE = "1" // Not all uppercase
status_active = "1" // Not all lowercase
)
ErrNotFound, ErrInvalidInput// Recommended
var (
ErrNotFound = errors.New("not found")
ErrInvalidInput = errors.New("invalid input")
ErrUnauthorized = errors.New("unauthorized")
)
// Recommended
type HTTPHandler struct {}
var URL string
func GetHTTPClient() {}
func ParseJSON() {}
// Not recommended
type HttpHandler struct {}
var Url string
func GetHttpClient() {}
project-name/
├── cmd/ # Main programs
│ └── app_name/
│ └── main.go
├── internal/ # Private code
│ ├── handler/ # HTTP handlers
│ ├── service/ # Business logic
│ ├── repository/ # Data access
│ ├── model/ # Data models
│ └── config/ # Configuration
├── pkg/ # Public code
├── api/ # API definitions
├── configs/ # Config files
├── scripts/ # Scripts
├── docs/ # Documentation
├── go.mod
└── go.sum
| Type | Rule | Example |
|---|---|---|
| Package | All lowercase, no underscores | package user |
| File | All lowercase, underscore separated | user_service.go |
| Directory | All lowercase, no separators | internal/handler/ |
| Struct | CamelCase, capitalized first letter | UserService |
| Interface | CamelCase, -er suffix | Reader, Writer |
| Method | CamelCase, verb prefix | GetUserByID |
| Constant | CamelCase | MaxRetryCount |
| Error Variable | Err prefix | ErrNotFound |