# Contributing

## Submitting a bug report

Found a bug? Before reporting it:

1. Verify you can reproduce it in the latest version of GGShield.
2. Search for other issues in GGShield [issue tracker](https://github.com/GitGuardian/ggshield/issues) to make sure it has not already been reported.
3. File a [bug report](https://github.com/GitGuardian/ggshield/issues/new?assignees=&labels=type%3Abug%2Cstatus%3Anew&template=bug_report.md&title=).

## Writing code

The [doc/dev](doc/dev) directory contains high-level documentation to help you get started with writing code for GGShield.

- [architecture.md](doc/dev/architecture.md): high-level overview of the code base.
- [getting-started.md](doc/dev/getting-started.md): how to set up your environment.
- [dependencies.md](doc/dev/dependencies.md): how to update dependencies, in particular how to use unreleased versions of py-gitguardian.
- [error-handling.md](doc/dev/error-handling.md): how to report errors.

If you notice any outdated or unclear information, please file an issue or a pull request!

## Fixing reported bugs

Confirmed bugs have a `confirmed` label on the issue tracker.

Leave a message on the issue tracker that you're interested in fixing this bug.

## Proposing a new feature

Open an issue on the [issue tracker](https://github.com/GitGuardian/ggshield/issues/new?assignees=&labels=feature+request&template=feature_request.md&title=Feature+Request) with a `feature request` label.

## Implementing new CI integration

Open an issue on the [issue tracker](https://github.com/GitGuardian/ggshield/issues/new?assignees=&labels=CI+integration&template=feature_request.md&title=CI+Integration:), then submit a pull request.

## Implementing a new feature

Open an issue as described in "Proposing a new feature", then submit a pull request.
