2025-11-11 12:01:26 -06:00
|
|
|
# Agent Guidelines for ezcache
|
|
|
|
|
|
|
|
|
|
This document outlines the conventions and commands for agents operating within the `ezcache` Go project.
|
|
|
|
|
|
|
|
|
|
## Build/Lint/Test Commands
|
|
|
|
|
|
|
|
|
|
- **Build:** `go build ./...`
|
|
|
|
|
- **Lint:** `task lint`
|
|
|
|
|
- **Test All:** `task test`
|
|
|
|
|
- **Test Single File:** `go test -run <TestName> <path/to/file_test.go>` (e.g., `go test -run TestNewHappy ./ezcache_test.go`)
|
|
|
|
|
- **Format:** `task fmt`
|
|
|
|
|
|
|
|
|
|
## Code Style Guidelines
|
|
|
|
|
|
|
|
|
|
- **Module**: `codeberg.org/danjones000/ezcache`
|
|
|
|
|
- **Go version**: 1.23.7
|
|
|
|
|
- **Imports:** Group standard library imports separately from third-party imports.
|
|
|
|
|
- **Formatting:** Adhere to `go fmt` standards.
|
|
|
|
|
- **Naming Conventions:**
|
|
|
|
|
- Variables: `camelCase`
|
|
|
|
|
- Functions/Methods: `CamelCase` (exported), `camelCase` (unexported)
|
|
|
|
|
- Packages: `lowercase`
|
|
|
|
|
- **Error Handling:** Return errors explicitly. Check errors immediately after a function call that returns an error.
|
|
|
|
|
- **Types:** Use generics where appropriate, as seen in `ezcache.go`.
|
|
|
|
|
- **Concurrency:** Use `sync.RWMutex` for concurrent map access, as demonstrated in `ezcache.go`.
|
|
|
|
|
- **Linter Rules:** Refer to `.golangci.yaml` for detailed linting rules.
|
|
|
|
|
- **Testing**: Use `github.com/nalgeon/be`
|
|
|
|
|
|
|
|
|
|
## Git Commit Guidelines
|
|
|
|
|
- **Format**: Prepend commit messages with a gitmoji emoji (see https://gitmoji.dev)
|
|
|
|
|
- **Style**: Write detailed commit messages that explain what changed and why
|
|
|
|
|
- **Examples**: `✨ Add JSON export functionality for log entries`, `🐛 Fix date parsing for RFC3339 timestamps`, `📝 Update README with configuration examples`
|
|
|
|
|
|
|
|
|
|
## Git Flow Workflow
|
|
|
|
|
- **Main branches**: `stable` (production-ready), `develop` (integration branch)
|
|
|
|
|
- **Development**: Always commit new features/fixes to `develop` branch or appropriate feature branches
|
|
|
|
|
- **Branch prefixes**:
|
|
|
|
|
- `feat/feature-name` - New features, merge to `develop` when complete
|
|
|
|
|
- `bug/bug-name` - Bug fixes (non-urgent), merge to `develop` when complete
|
2025-11-12 08:39:19 -06:00
|
|
|
- `rel/version` - Release preparation branches, merge to `stable` and then **also** merge `stable` back to `develop`
|
|
|
|
|
- `hot/version` - Hotfixes for production issues follow same merge rules as releases
|
2025-11-11 12:01:26 -06:00
|
|
|
- **Version tags**: Prefix all version tags with `v` (e.g., `v1.0.2`, `v0.0.6`)
|
|
|
|
|
- **Releases**: Update CHANGELOG.md with a summary of changes for each new version
|
2025-11-12 08:39:19 -06:00
|
|
|
- **Never commit directly to** `stable` branch (only merge from `rel/` or `hot/` branches)
|
|
|
|
|
- After merging to `stable`, always merge it back to `develop`
|
2025-11-11 12:01:26 -06:00
|
|
|
- **Before starting work**: Ensure you're on `develop` branch or create an appropriate feature branch from it
|