Mini-Agent / CONTRIBUTING.md
AbdulElahGwaith's picture
Upload folder using huggingface_hub
dc893fb verified
# Contributing Guide
Thank you for your interest in the Mini Agent project! We welcome contributions of all forms.
## How to Contribute
### Reporting Bugs
If you find a bug, please create an Issue and include the following information:
- **Problem Description**: A clear description of the problem.
- **Steps to Reproduce**: Detailed steps to reproduce the issue.
- **Expected Behavior**: What you expected to happen.
- **Actual Behavior**: What actually happened.
- **Environment Information**:
- Python version
- Operating system
- Versions of relevant dependencies
### Suggesting New Features
If you have an idea for a new feature, please create an Issue first to discuss it:
- Describe the purpose and value of the feature.
- Explain the intended use case.
- Provide a design proposal if possible.
### Submitting Code
#### Getting Started
1. Fork this repository.
2. Clone your fork:
```bash
git clone https://github.com/MiniMax-AI/Mini-Agent mini-agent
cd mini-agent
```
3. Create a new branch:
```bash
git checkout -b feature/your-feature-name
# or
git checkout -b fix/your-bug-fix
```
4. Install development dependencies:
```bash
uv sync
```
#### Development Process
1. **Write Code**
- Follow the project's code style (see the [Development Guide](docs/DEVELOPMENT.md#code-style-guide)).
- Add necessary comments and docstrings.
- Keep your code clean and concise.
2. **Add Tests**
- Add test cases for new features.
- Ensure all tests pass:
```bash
pytest tests/ -v
```
3. **Update Documentation**
- If you add a new feature, update the README or relevant documentation.
- Keep documentation in sync with your code.
4. **Commit Changes**
- Use clear commit messages:
```bash
git commit -m "feat(tools): Add new file search tool"
# or
git commit -m "fix(agent): Fix error handling for tool calls"
```
- Commit message format:
- `feat`: A new feature
- `fix`: A bug fix
- `docs`: Documentation updates
- `style`: Code style adjustments
- `refactor`: Code refactoring
- `test`: Test-related changes
- `chore`: Build or auxiliary tools
5. **Push to Your Fork**
```bash
git push origin feature/your-feature-name
```
6. **Create a Pull Request**
- Create a Pull Request on GitHub.
- Clearly describe your changes.
- Reference any related Issues if applicable.
#### Pull Request Checklist
Before submitting a PR, please ensure:
- [ ] The code follows the project's style guide.
- [ ] All tests pass.
- [ ] Necessary tests have been added.
- [ ] Relevant documentation has been updated.
- [ ] The commit message is clear and concise.
- [ ] There are no unrelated changes.
### Code Review
All Pull Requests will be reviewed:
- We will review your code as soon as possible.
- We may request some changes.
- Please be patient and responsive to feedback.
- Once approved, your PR will be merged into the main branch.
## Code Style Guide
### Python Code Style
Follow PEP 8 and the Google Python Style Guide:
```python
# Good example ✅
class MyClass:
"""A brief description of the class.
A more detailed description...
"""
def my_method(self, param1: str, param2: int = 10) -> str:
"""A brief description of the method.
Args:
param1: Description of parameter 1.
param2: Description of parameter 2.
Returns:
Description of the return value.
"""
pass
# Bad example ❌
class myclass: # Class names should be PascalCase
def MyMethod(self,param1,param2=10): # Method names should be snake_case
pass # Missing docstring
```
### Type Hinting
Use Python type hints:
```python
from typing import List, Dict, Optional, Any
async def process_messages(
messages: List[Dict[str, Any]],
max_tokens: Optional[int] = None
) -> str:
"""Process a list of messages."""
pass
```
### Testing
- Write tests for new features.
- Keep tests simple and clear.
- Ensure tests cover critical paths.
```python
import pytest
from mini_agent.tools.my_tool import MyTool
@pytest.mark.asyncio
async def test_my_tool():
"""Test the custom tool."""
tool = MyTool()
result = await tool.execute(param="test")
assert result.success
assert "expected" in result.content
```
## Community Guidelines
Please follow our [Code of Conduct](CODE_OF_CONDUCT.md) and be friendly and respectful.
## Questions and Help
If you have any questions:
- Check the [README](README.md) and [documentation](docs/).
- Search existing Issues.
- Create a new Issue to ask a question.
## License
By contributing, you agree that your contributions will be licensed under the [MIT License](LICENSE).
---
Thank you again for your contribution! 🎉