Thank you for your interest in contributing to Hermes Evolution! This document provides guidelines and instructions for contributing.
We welcome contributions in the following areas:
- New evolution skills (research, analysis, implementation)
- Upstream sync improvements
- Mode detection enhancements
- Automated testing for evolution
- Bug fixes
- New tools and skills
- Performance improvements
- Documentation
- Improving existing documentation
- Adding examples and tutorials
- Translation efforts
# Fork the repository on GitHub
git clone https://github.com/Lexus2016/hermes-agent-evolution.git
cd hermes-agent-evolution# Install dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/git checkout -b feature/your-feature-name- Describe the change in a new issue (if one doesn't exist)
- Create a branch from
main - Implement your changes following code standards
- Add tests for your changes
- Update documentation if needed
- Run tests locally
- Submit a pull request
Evolution features have additional requirements:
- Mode consideration: Specify if your feature works in PUBLIC, PRIVATE, or both modes
- Safety checks: Evolution features must include safety checks and rollback options
- Testing: Evolution features require extensive testing including:
- Unit tests
- Integration tests
- Mode detection tests
- Documentation: Evolution features need detailed documentation including:
- Purpose and scope
- Mode requirements
- Safety considerations
- Rollback procedures
# Run all tests
pytest tests/
# Run specific test file
pytest tests/test_evolution.py
# Run with coverage
pytest --cov=evolution tests/
# Run specific test
pytest tests/test_evolution.py::test_mode_detection- Add tests for new features
- Maintain test coverage above 80%
- Use descriptive test names
- Test both PUBLIC and PRIVATE modes where applicable
Example:
def test_mode_detection_with_private_token():
"""Test that PRIVATE mode is detected when private token is set."""
os.environ['GITHUB_PRIVATE_TOKEN'] = 'test-token'
mode = detect_mode()
assert mode == 'PRIVATE'- Use clear, concise language
- Provide examples
- Include troubleshooting sections
- Document mode requirements for evolution features
- Keep documentation up-to-date with code changes
- EVOLUTION_README.md: Evolution-specific documentation
- AGENTS.md: Core Hermes Agent documentation
- Code comments: Inline documentation for complex code
- Docstrings: Python docstrings for functions and classes
When contributing evolution features:
- Available to all installations
- Cannot modify code directly
- Can create issues and PRs
- Research and proposal generation
- Available only to repository owner
- Can implement changes
- Can merge PRs
- Can self-update
- Requires GITHUB_PRIVATE_TOKEN
All evolution features MUST include:
- Mode detection: Check if running in correct mode
- Validation: Validate inputs and state
- Rollback: Provide rollback mechanism
- Logging: Detailed logging for debugging
- Testing: Comprehensive test coverage
Use conventional commit format:
feat: add new evolution skill for XYZ
fix: resolve issue with mode detection
docs: update evolution documentation
test: add tests for upstream sync
Include in your PR description:
- Description: What does this PR do?
- Type: Bug fix, feature, docs, etc.
- Related Issues: Link to related issues
- Testing: How was this tested?
- Breaking Changes: Are there breaking changes?
- Mode: PUBLIC, PRIVATE, or both
- Automated checks: CI must pass
- Code review: Maintainer review required
- Evolution features: Additional safety review required
- Merge: Squash and merge preferred
Follow these guidelines:
- Python: PEP 8 compliant
- Docstrings: Google style docstrings
- Naming: descriptive, lowercase_with_underscore
- Imports: Group imports (stdlib, third-party, local)
- Line length: Max 100 characters (soft limit 120)
# Format code
black .
# Lint code
ruff check .
# Type checking
mypy evolution/Hermes Evolution is based on Hermes Agent. Periodically, we sync with upstream:
git fetch upstream
git rebase upstream/mainWhen syncing:
- Resolve conflicts carefully
- Preserve evolution features
- Test thoroughly after sync
- Update documentation if needed
When reporting bugs:
- Search existing issues first
- Use bug report template
- Provide environment details
- Include logs and error messages
- Add reproduction steps
When proposing features:
- Check if already proposed
- Use feature request template
- Describe the problem you're solving
- Propose a solution
- Consider impact on evolution modes
Be respectful, constructive, and collaborative. We're all here to build something amazing.
- GitHub Issues: Bug reports and feature requests
- GitHub Discussions: Questions and ideas
- Documentation: Check EVOLUTION_README.md and AGENTS.md
Contributors will be recognized in:
- CONTRIBUTORS.md file
- Release notes
- Project documentation
Happy contributing! Let's build the future of self-improving AI together. 🚀