Thank you for your interest in contributing to Atlas. This guide covers how both humans and AI agents can contribute to this project while maintaining our quality standards.
Before contributing, read AGENTS.md thoroughly. This document is the definitive source of truth for all coding standards, architectural decisions, and quality requirements. Every contribution must adhere to these guidelines.
- Be respectful and constructive in all interactions
- Search existing issues before creating new ones
- Provide clear, detailed descriptions when reporting bugs or requesting features
- Keep discussions focused on the technical merits
- Accept feedback graciously and iterate accordingly
Before starting work on a contribution, ensure your proposed change is viable:
- Bug fixes - Confirm the bug exists and is reproducible
- New features - Open an issue first to discuss the feature and its scope
- Refactoring - Must have clear benefits; discuss major refactors before starting
- Documentation - Always welcome; ensure accuracy and follow existing patterns
For significant changes, open an issue to discuss your approach before investing time in implementation. This helps ensure alignment with the project's direction.
AI agents must follow these steps precisely:
- Read AGENTS.md completely before making any changes
- Read relevant documentation - VitePress docs for the module you're modifying
- Make focused changes - One logical change per contribution
- Run
composer check- All lint, static analysis, and tests must pass - Update documentation - Keep docs in sync with code changes
- Write descriptive commit messages - Explain what and why
- Fork the repository
- Create a feature branch from
main - Make your changes following AGENTS.md guidelines
- Run
composer checkto verify quality - Submit a pull request with a clear description
Use descriptive branch names that indicate the type of change:
feature/add-streaming-support
fix/tool-execution-timeout
docs/update-installation-guide
refactor/simplify-agent-resolver
Write clear, concise commit messages that explain the change:
Add streaming response support for chat method
- Implement StreamingResponse value object
- Update AtlasManager to support streaming
- Add tests for streaming functionality
Guidelines:
- Use present tense ("Add feature" not "Added feature")
- First line is a summary (50 characters or less)
- Leave a blank line before detailed description if needed
- Reference issues when applicable (e.g., "Fixes #123")
All contributions must meet these requirements before merging:
composer checkmust pass - This runs lint, static analysis, and tests- Follow PSR-12 - Code style enforced via Laravel Pint
- PHPStan level 6 - No static analysis errors
- Test coverage - All new code must have tests
- PHPDoc blocks - Every class must have documentation
- Respect layer boundaries - See AGENTS.md for the dependency direction model
- Use dependency injection - Never instantiate services directly
- Program to interfaces - When contracts exist, use them
- Earn your abstractions - No speculative generalization
- Update docs - When changing behavior, update the relevant VitePress documentation
- Keep examples working - All code examples must be syntactically correct
- Link to Prism - For Prism-level features, link to Prism docs instead of duplicating
# Run all checks (lint, analyse, test)
composer check
# Individual commands
composer lint # Fix code style
composer lint:test # Check code style without fixing
composer analyse # Run PHPStan
composer test # Run Pest tests- Bug fixes with tests proving the fix
- New features aligned with the project roadmap
- Documentation improvements and clarifications
- Performance improvements with benchmarks
- Test coverage improvements
- Breaking changes without prior discussion
- Features that don't align with the project's scope
- Code that doesn't pass quality checks
- Changes without tests (for code changes)
- Over-engineered solutions or speculative abstractions
- Issues - For bugs, features, and questions
- AGENTS.md - For coding standards and architecture
- docs/ - For technical specifications and guides
Thank you for contributing to Atlas!