> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ellomas.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Contributing

> Guidelines for contributing to Replay.

# Contributing to Replay

Thanks for your interest in contributing!

## Getting Started

1. Fork the repository on [GitHub](https://github.com/tomiwa-a/replay)
2. Clone your fork
3. Run `make deps` to install dependencies
4. Run `make build` to verify the build

## Development Workflow

* Create a feature branch from `main`
* Write tests for new functionality
* Run `make test` and `make vet` before submitting
* Keep commits small and focused
* Use conventional commit messages (`feat:`, `fix:`, `chore:`, `docs:`)

## Running Tests

```bash theme={null}
# All tests
make test

# With race detection
make test-race

# Lint and vet
make lint
make vet
```

## Running Examples Locally

Start the required services:

```bash theme={null}
docker compose up -d
```

Then run the workflows:

```bash theme={null}
replay run examples/test.yaml
replay run examples/phase2-vars.yaml
replay run examples/linkedin-demo.yaml
```

## Code Style

* Follow standard Go conventions (`gofmt`, `go vet`, `staticcheck`)
* Avoid external dependencies where possible
* Public API changes should be discussed in an issue first
* Keep the YAML DSL backward-compatible — prefer additive changes

## Pull Request Process

1. Update documentation if needed
2. Ensure CI passes (lint, vet, build, test)
3. Request a review
4. Squash commits on merge

## Areas for Contribution

* **New step types** — gRPC, GraphQL, message queue consumers
* **Assertion operators** — regex, custom functions
* **Output formats** — JUnit XML, JSON report
* **Integrations** — Slack notifications, Jira issue creation
* **Plugins** — Replay's architecture supports a plugin system
* **Documentation** — More examples, tutorials, video walkthroughs

## Reporting Issues

Open an issue with:

* A clear description of the problem
* Steps to reproduce (include the workflow YAML)
* Expected vs actual behaviour
* Go version and OS
