Contributing to Rairos¶
Thank you for your interest in contributing! This project is a self-evolving research operating system for AI researchers. Here's how you can help.
Quick Start¶
# Clone the repository
git clone https://github.com/shushuzn/Rairos.git
cd Rairos
# Install dependencies (requires Python 3.10+)
uv sync --all-extras
# Run tests
uv run pytest tests/ -q --tb=short -n auto --timeout=60
Development Workflow¶
1. Pick an Issue¶
- Look for issues labeled good first issue or help wanted
- Comment on the issue to let others know you're working on it
- Fork the repo and create a feature branch
2. Branch Naming¶
feature/description # New features
fix/description # Bug fixes
docs/description # Documentation only
test/description # Test coverage only
refactor/description # Code refactoring
3. Making Changes¶
# Create your branch
git checkout -b feature/my-feature
# Make your changes, then:
just lint # Check code style
just test-cov # Run tests with coverage
just check # Full lint + format check
# Commit (use conventional commits)
git commit -m "feat(parser): add arXiv ID normalization"
4. Submit a Pull Request¶
- Fill out the PR template (title, summary, changes, motivation, verification)
- Link the issue:
Closes #123 - Ensure CI passes
- Update CHANGELOG.md for user-facing changes
Code Standards¶
Python Style¶
- Follow PEP 8 (enforced by ruff)
- Add type annotations for new functions
- Keep functions under 100 lines
- Write docstrings for public APIs
Testing¶
- All new features need tests
- Aim for meaningful assertions, not just
assert True - Use
@pytest.mark.no_freezefor tests needing real time - Run
just test FILEto test specific files
File Structure¶
Rairos/
├── core/ # Core utilities (retry, rate_limiter, profiler)
├── db/ # Database layer
├── llm/ # LLM integrations and prompts
├── parsers/ # Paper parsers (arXiv, DOI, PDF)
├── pdf/ # PDF extraction and OCR
├── research_loop/ # Autonomous research pipelines
└── tests/ # Test suites (Tier 1-4 by scope)
Labels¶
| Label | Description |
|---|---|
bug | Something isn't working |
enhancement | New feature or improvement |
good first issue | Good for newcomers |
help wanted | Extra attention needed |
docs | Documentation improvements |
test | Test coverage improvements |
refactor | Code refactoring |
research | Research-related changes |
Commit Format¶
Types: feat, fix, docs, style, refactor, test, chore
Example:
feat(cli): add semantic search command
Add `airos similar` command for finding semantically similar papers
using embedding vectors from Ollama.
Closes #123
Questions?¶
- Open an issue for bugs or feature requests
- Check the documentation
- Review existing PRs for patterns
License¶
By contributing, you agree that your contributions will be licensed under the GNU General Public License v3.0.