Thank you for your interest in contributing to Paracle! This document provides guidelines and instructions for contributing.
We are committed to providing a welcoming and inclusive environment. Please be respectful and professional in all interactions.
- Check if the bug has already been reported in Issues
- If not, create a new issue with:
- Clear title and description
- Steps to reproduce
- Expected vs actual behavior
- Your environment (OS, Python version)
- Code samples if applicable
- Check Roadmap to see if it's already planned
- Open a new issue with:
- Clear use case
- Expected behavior
- Why it would be valuable
- Possible implementation approach
- Fork the repository
- Clone your fork
- Create a branch from
develop - Make your changes
- Test your changes
- Commit with clear messages
- Push to your fork
- Open a PR to
developbranch
- Python 3.10+
- uv (recommended) or pip
- Git
# Clone your fork
git clone https://github.com/YOUR-USERNAME/paracle-lite.git
cd paracle-lite
# Add upstream remote
git remote add upstream https://github.com/IbIFACE-Tech/paracle-lite.git
# Install dependencies
make install-dev
# Or: uv sync --all-extras
# Install pre-commit hooks
make pre-commit-installmain: Stable releasesdevelop: Active developmentfeature/*: New featuresbugfix/*: Bug fixeshotfix/*: Critical production fixes
We follow PEP 8 with some modifications:
- Line length: 88 characters (Black default)
- Use type hints
- Docstrings for all public APIs
# Format code
make format
# Run linters
make lint
# Run tests
make test
# Run all checks
make allBefore submitting a PR, ensure:
- Tests pass (
make test) - Linters pass (
make lint) - Code is formatted (
make format) - Coverage > 80% for new code
- Documentation updated
- CHANGELOG updated
# tests/unit/test_agent.py
import pytest
from paracle_domain.models import AgentSpec
def test_agent_creation():
"""Test agent can be created with valid spec."""
spec = AgentSpec(
name="test-agent",
provider="openai",
model="gpt-4"
)
assert spec.name == "test-agent"# All tests
make test
# With coverage
make test-cov
# Watch mode
make test-watch
# Specific test
uv run pytest tests/unit/test_agent.pyUse Google style docstrings:
def my_function(param1: str, param2: int) -> bool:
"""Short description.
Longer description if needed.
Args:
param1: Description of param1
param2: Description of param2
Returns:
Description of return value
Raises:
ValueError: When param1 is invalid
"""
pass- Update relevant
.mdfiles incontent/docs/ - Add examples if appropriate
- Update README if needed
Follow conventional commits:
type(scope): subject
body (optional)
footer (optional)
Types:
feat: New featurefix: Bug fixdocs: Documentation onlystyle: Code style (formatting)refactor: Code refactoringtest: Adding testschore: Maintenance
Examples:
feat(agents): add agent inheritance validation
fix(cli): correct help text for workflow command
docs(readme): update installation instructions
- Correctness: Does it work as intended?
- Tests: Are there adequate tests?
- Documentation: Is it well documented?
- Style: Does it follow our standards?
- Design: Is it well architected?
- Initial review: Within 3 days
- Follow-up: Within 2 days
- Merge: After approval from 1+ maintainers
Releases follow semantic versioning (SemVer):
MAJOR: Breaking changesMINOR: New features (backward compatible)PATCH: Bug fixes
Maintainers handle releases.
- Questions: Open a Discussion
- Bugs: Open an Issue
- Security: Email security@ibiface-tech.com
Contributors are recognized in:
CONTRIBUTORS.md- Release notes
- Project README
By contributing, you agree that your contributions will be licensed under the Apache License 2.0.
Thank you for contributing to Paracle! 🎉