Thank you for your interest in contributing to AGK! This document provides guidelines and instructions for contributing.
Please be respectful and constructive in all interactions. We're building something together.
- Go 1.21 or later
- Git
# Clone the repository
git clone https://github.com/agenticgokit/agk.git
cd agk
# Install dependencies
go mod download
# Build
go build ./...
# Run tests
go test ./...- Check existing issues before creating a new one
- Use a clear, descriptive title
- Include steps to reproduce, expected vs actual behavior
- Include Go version and OS
- Fork the repository
- Create a branch:
git checkout -b feature/your-feature - Make changes following our coding standards
- Test:
go test ./... - Lint:
golangci-lint run - Commit with clear messages
- Push and create a Pull Request
Follow conventional commits:
type(scope): description
feat(trace): add hot reload support
fix(tui): resolve cursor navigation issue
docs(readme): update installation instructions
Types: feat, fix, docs, style, refactor, test, chore
- Follow Effective Go
- Run
gofmton all code - Run
golangci-lint runbefore committing - Keep functions focused and small
- Add comments for exported functions
- Write tests for new features
- Maintain or improve code coverage
- Use table-driven tests where appropriate
func TestExample(t *testing.T) {
tests := []struct {
name string
input string
expected string
}{
{"basic", "input", "expected"},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// test logic
})
}
}- Update README.md for user-facing changes
- Add godoc comments to exported functions
- Include examples where helpful
agk/
├── cmd/ # CLI commands (cobra)
├── internal/ # Private packages
│ ├── audit/ # Audit/evaluation types
│ └── tui/ # Terminal UI components
├── go.mod
└── README.md
# Build and install locally
go install ./...
# Run specific command
go run main.go trace show
# Run tests with coverage
go test -cover ./...
# Lint
golangci-lint run- Open a Discussion
- Check existing Issues
By contributing, you agree that your contributions will be licensed under the Apache 2.0 License.