atento-core 0.0.1

Core engine for the Atento Workflow CLI
Documentation
# Contributing to Atento Core

Thank you for your interest in contributing to Atento Core! This document provides guidelines and instructions for contributing.

## Code of Conduct

This project adheres to the [Rust Code of Conduct](https://www.rust-lang.org/policies/code-of-conduct). By participating, you are expected to uphold this code. Please report unacceptable behavior to atento@weareprogmatic.com.

## Getting Started

### Prerequisites

- Rust 1.85.0 or later (for Edition 2024 support)
- Git

### Setting Up Your Development Environment

1. Fork the repository on GitHub
2. Clone your fork locally:
   ```bash
   git clone https://github.com/YOUR_USERNAME/atento-core.git
   cd atento-core
   ```
3. Add the upstream repository:
   ```bash
   git remote add upstream https://github.com/weareprogmatic/atento-core.git
   ```
4. Install development tools:
   ```bash
   make install-tools
   ```

## Development Workflow

### Running Tests

```bash
# Run all tests
make test

# Run specific test
cargo test test_name

# Run with output
cargo test -- --nocapture
```

### Code Quality Checks

```bash
# Format code
make format

# Check formatting
make format-check

# Run clippy
make clippy

# Run all checks including coverage
make pre-commit
```

### Quick Validation

```bash
# Fast checks without coverage
make check
```

## Making Changes

### Creating a Branch

```bash
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix
```

### Commit Guidelines

- Write clear, concise commit messages
- Use the present tense ("Add feature" not "Added feature")
- Use the imperative mood ("Move cursor to..." not "Moves cursor to...")
- Reference issues and pull requests liberally after the first line

Example:
```
Add workflow validation for YAML files

- Implement schema validation
- Add error reporting for invalid workflows
- Include tests for edge cases

Fixes #123
```

### Code Style

- Follow Rust standard conventions
- Run `make format` before committing
- Ensure `make clippy` passes without warnings
- Maintain or improve code coverage (target: 80%+)

## Submitting Changes

### Pull Request Process

1. Update your fork with the latest upstream changes:
   ```bash
   git fetch upstream
   git rebase upstream/main
   ```

2. Run all checks:
   ```bash
   make pre-commit
   ```

3. Push to your fork:
   ```bash
   git push origin your-branch-name
   ```

4. Open a Pull Request on GitHub with:
   - Clear title describing the change
   - Description of what changed and why
   - Reference to related issues
   - Screenshots/examples if applicable

5. Address review feedback:
   - Make requested changes
   - Push new commits to the same branch
   - Request re-review when ready

### Pull Request Checklist

- [ ] Code follows the project's style guidelines
- [ ] All tests pass (`make test`)
- [ ] New tests added for new functionality
- [ ] Code coverage maintained or improved
- [ ] Documentation updated if needed
- [ ] CHANGELOG.md updated (for significant changes)
- [ ] Commits are clean and well-described

## Testing

### Unit Tests

Tests are located in `src/tests/`. Each module should have corresponding test coverage.

```bash
cargo test --lib
```

### Integration Tests

Integration tests are in the `tests/` directory.

```bash
cargo test --test integration
```

### QA Smoke Tests

```bash
# Run all QA tests
make qa

# Platform-specific tests
make qa-unix
make qa-windows

# Validate workflow files
make qa-validate
```

## Documentation

- Add doc comments for public APIs
- Update README.md for user-facing changes
- Keep inline comments for complex logic
- Update CHANGELOG.md for notable changes

## Need Help?

- Open an issue for bugs or feature requests
- Join discussions in existing issues
- Email atento@weareprogmatic.com for questions

## License

By contributing, you agree that your contributions will be licensed under both the MIT License and Apache License 2.0, matching the project's dual-license.