# Contributing to {{projectName}}
Thank you for your interest in contributing to {{projectName}}! We welcome contributions from the community.
## Table of Contents
- [Code of Conduct](#code-of-conduct)
- [Ways to Contribute](#ways-to-contribute)
- [Getting Started](#getting-started)
- [Development Workflow](#development-workflow)
- [Pull Request Process](#pull-request-process)
- [Coding Standards](#coding-standards)
{{#if requiresDco}}
- [Commit Sign-off](#commit-sign-off)
{{/if}}
- [Communication](#communication)
## Code of Conduct
This project adheres to a [Code of Conduct](CODE_OF_CONDUCT.md). By participating, you are expected to uphold this code.
## Ways to Contribute
There are many ways to contribute:
- **Report bugs** - File detailed bug reports with reproduction steps
- **Suggest features** - Propose new features or improvements
- **Write code** - Submit bug fixes or new features
- **Improve documentation** - Fix typos, clarify content, add examples
- **Review pull requests** - Provide feedback on proposed changes
- **Answer questions** - Help other users in issues or discussions
- **Write tests** - Improve test coverage
## Getting Started
1. **Fork the repository** on GitHub
2. **Clone your fork** locally:
```bash
git clone https://github.com/YOUR_USERNAME/{{repoName}}.git
cd {{repoName}}
```
3. **Add upstream remote**:
```bash
git remote add upstream {{repositoryUrl}}
```
{{#if setupCommand}}
4. **Install dependencies**:
```bash
{{setupCommand}}
```
{{else}}
4. **Install dependencies** - See [README.md](README.md) for setup instructions
{{/if}}
## Development Workflow
1. **Create a branch** for your changes:
```bash
git checkout -b feature/your-feature-name
```
2. **Make your changes** - Write code, add tests, update docs
3. **Test your changes**{{#if testCommand}} - Run `{{testCommand}}`{{/if}}
4. **Commit your changes**:
```bash
git commit -m "Description of your changes"
```
{{#if requiresDco}}
Use `git commit -s` to sign off your commits (required)
{{/if}}
5. **Push to your fork**:
```bash
git push origin feature/your-feature-name
```
6. **Open a Pull Request** on GitHub
## Pull Request Process
### Before Submitting
- Ensure your code follows the project's coding standards
{{#if testCommand}}
- Add or update tests for your changes
- Verify all tests pass: `{{testCommand}}`
{{/if}}
{{#if lintCommand}}
- Run linters: `{{lintCommand}}`
{{/if}}
- Update documentation as needed
- Keep pull requests focused on a single concern
### PR Description
Include in your pull request description:
- **What** - Summary of changes
- **Why** - Motivation and context
- **How** - Implementation approach
- **Testing** - How you tested the changes
- **Related Issues** - Link any related issues (e.g., "Fixes #123")
### Review Process
1. Automated checks will run on your PR
2. Maintainers will review your changes
3. Address any feedback or requested changes
4. Once approved, a maintainer will merge your PR
## Coding Standards
{{#if lintCommand}}
Follow the project's coding style enforced by `{{lintCommand}}`.
{{else}}
- Write clear, readable code
- Use meaningful names for variables and functions
- Add comments for complex logic
- Follow language-specific best practices
{{/if}}
{{#if requiresDco}}
## Commit Sign-off
All commits must be signed off to certify that you have the right to submit the code under the project's license.
Add the `-s` flag when committing:
```bash
git commit -s -m "Your commit message"
```
This adds a "Signed-off-by" line:
```
Signed-off-by: Your Name <your.email@example.com>
```
Learn more at [https://developercertificate.org/](https://developercertificate.org/)
{{/if}}
## Communication
- **Issues** - Report bugs and request features via [GitHub Issues]({{repositoryUrl}}/issues)
{{#if discussionsUrl}}
- **Discussions** - Ask questions in [GitHub Discussions]({{discussionsUrl}})
{{/if}}
{{#if slackChannel}}
- **Slack** - Join our community: {{slackChannel}}
{{/if}}
{{#if discordUrl}}
- **Discord** - Chat with the community: {{discordUrl}}
{{/if}}
---
Thank you for contributing to {{projectName}}!