Contributing to Festi AI

Thank you for your interest in contributing! We welcome bug reports, feature requests, and pull requests.

Getting Started

  1. Fork the repository
  2. Clone your fork and install dependencies:
    composer install
  3. Create a branch for your changes:
    git checkout -b feature/your-feature-name

Development

Code Style

This project follows the Festi PHP coding standard enforced by PHPCS:

./vendor/bin/phpcs --standard=./.phan/ruleset.xml -d memory_limit=1024M --extensions=php ./src/

Key conventions: - Interfaces prefixed with I (e.g. IAIConnection) - Private fields prefixed with underscore (e.g. $_config) - Allman/BSD brace style (opening brace on new line) - Spaces only, no tabs - Max 120 characters per line - Full type declarations (parameter types, return types, nullable)

Static Analysis

Run Phan before submitting:

./vendor/bin/phan

Tests

Run the full test suite:

./vendor/bin/phpunit -c tests/phpunit.xml

All new code should include corresponding unit tests.

Submitting a Pull Request

  1. Ensure PHPCS, Phan, and PHPUnit all pass
  2. Write a clear description of the change and why it's needed
  3. Open a pull request against the main branch

Reporting Issues

Please open an issue with: - PHP version - A minimal reproducible example - Expected vs actual behavior

./LICENSE

By contributing, you agree that your contributions will be ./LICENSEd under the MIT ./LICENSE.