Thank you for considering contributing to the Smithy C# Code Generator! Your contributions help make this project better for everyone.
If you find a bug, please create an issue on GitHub with the following information:
- A clear, descriptive title
- A detailed description of the issue
- Steps to reproduce the problem
- Expected behavior
- Actual behavior
- Screenshots if applicable
- System information (OS, .NET version, etc.)
We welcome suggestions for enhancements! Please create an issue with:
- A clear, descriptive title
- A detailed description of the proposed enhancement
- Any relevant examples or use cases
- If applicable, references to similar features in other projects
If you'd like to contribute code:
- Fork the repository
- Create a new branch for your feature or fix
- Write and test your code
- Ensure your code follows the project's code style
- Submit a pull request
- .NET 8.0 SDK or later
- Git
- Your favorite IDE (Visual Studio, VS Code, Rider, etc.)
- Clone your fork of the repository
- Navigate to the project directory
- Run
dotnet restoreto restore dependencies - Run
dotnet buildto build the solution - Run
dotnet testto run the tests
- Follow the .NET coding conventions
- Use meaningful variable and method names
- Keep methods small and focused
- Write XML documentation for public APIs
- Include unit tests for new features
- Use clear, descriptive commit messages
- Begin the message with a short summary (50 characters or less)
- Reference issues and pull requests when appropriate
- Update the README.md with details of changes if applicable
- Add or update tests for any new features
- Ensure all tests pass
- Update any relevant documentation
- Your PR will be reviewed by the maintainers
- Once approved, your PR will be merged
- Smithy.Model: Core model classes
- Smithy.CSharpGenerator: Code generator logic
- Smithy.Cli: Command-line interface
- Smithy.CSharpGenerator.Tests: Unit tests
Please ensure that any code you contribute includes appropriate tests. We aim for high test coverage and thorough testing of edge cases.
Please note that this project adheres to a Code of Conduct. By participating, you are expected to uphold this code.
If you have any questions or need help with contributing, please feel free to create an issue or reach out to the maintainers.
Thank you for your contributions!