Thank you for your interest in contributing to ee! This document provides guidelines for contributing to the project.
By participating in this project, you agree to abide by our Code of Conduct. Please be respectful and professional in all interactions.
- Fork the repository on GitHub
- Clone your fork locally:
git clone https://github.com/yourusername/ee.git cd ee - Install dependencies:
make deps
- Make sure tests pass:
make test
- Ensure you have Go 1.23+ installed
- Install golangci-lint for linting:
go install github.com/golangci/golangci-lint/cmd/golangci-lint@latest
- Run the verification suite:
make verify
- Create a new branch for your feature or fix:
git checkout -b feature/your-feature-name
- Make your changes
- Add tests for any new functionality
- Ensure all tests pass:
make test - Format your code:
make fmt
- Run linting:
make lint
Follow conventional commit format:
feat: add new featurefix: resolve issue with Xdocs: update documentationtest: add tests for Yrefactor: improve code structure
- Update documentation if needed
- Add tests for new functionality
- Ensure all CI checks pass
- Fill out the pull request template completely
- Request review from maintainers
- Write tests for all new functionality
- Use table-driven tests where appropriate
- Include both positive and negative test cases
- Test error conditions and edge cases
# Run all tests
make test
# Run tests with coverage
make coverage
# Run specific test
go test -v ./internal/schema -run TestValidateSchemafunc TestFeature(t *testing.T) {
tests := []struct {
name string
input InputType
expected ExpectedType
wantErr bool
}{
{
name: "valid input",
input: validInput,
expected: expectedOutput,
wantErr: false,
},
// ... more test cases
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
// test implementation
})
}
}- Follow standard Go conventions
- Use
gofmtfor formatting - Write clear, descriptive variable and function names
- Add comments for exported functions and complex logic
- Keep functions focused and small
- Update README.md for user-facing changes
- Update CLAUDE.md for architectural changes
- Add inline comments for complex code
- Include examples in documentation
- Use the bug report template
- Include reproduction steps
- Provide environment information
- Include relevant configuration files
- Use the feature request template
- Explain the use case clearly
- Consider alternative approaches
- Provide examples of desired usage
- Create command file in
internal/command/ - Follow existing command patterns
- Add to main.go command registration
- Include comprehensive tests
- Update documentation
- Maintain backward compatibility when possible
- Update validation logic
- Add migration path if needed
- Document breaking changes
- Consider data migration requirements
- Maintain file format compatibility
- Test with existing data structures
- Update version in relevant files
- Update CHANGELOG.md
- Create pull request for release preparation
- After merge, create and push git tag
- GitHub Actions will handle the release
- Join discussions in GitHub Issues
- Check existing documentation
- Look at similar implementations in the codebase
- Ask questions in pull requests
Contributors will be acknowledged in:
- Release notes
- README.md contributors section
- Git commit history
Thank you for contributing to ee!