# 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}}!
