Thank you for your interest in contributing to the Unified Intent Mediator (UIM) Protocol! This document provides guidelines and instructions for contributing to this project.
By participating in this project, you agree to abide by our Code of Conduct. Please read it before contributing.
Before creating bug reports, please check the issue list to avoid duplicates. When you create a bug report, include as many details as possible:
- Use a clear and descriptive title
- Describe the exact steps to reproduce the problem
- Describe the behavior you observed and what you expected to see
- Include screenshots if possible
- Specify your environment (OS, browser, etc.)
Enhancement suggestions are tracked as GitHub issues. When creating an enhancement suggestion:
- Use a clear and descriptive title
- Provide a detailed description of the suggested enhancement
- Explain why this enhancement would be useful
- Specify which area of the protocol it affects (e.g., discovery, execution, policy)
- Fork the repository
- Create a new branch for your feature or bugfix
- Make your changes
- Ensure your code follows the project's style guidelines
- Write or update tests as needed
- Update documentation as needed
- Submit a pull request
-
Clone the repository
git clone https://github.com/synaptiai/uim-protocol.git cd uim-protocol -
Install Poetry (if not already installed)
curl -sSL https://install.python-poetry.org | python3 - -
Install dependencies with Poetry
poetry install
-
Activate the virtual environment
poetry shell
-
Set up pre-commit hooks
poetry run pre-commit install
This project uses Poetry for dependency management. Here are some common commands:
-
Add a new dependency:
poetry add package-name
-
Add a development dependency:
poetry add --group dev package-name
-
Update dependencies:
poetry update
-
Run a command in the virtual environment:
poetry run command
The project uses Poetry's dependency groups to organize dependencies:
- Main: Core dependencies for the UIM Protocol
- Dev: Development dependencies (testing, linting, etc.)
- Docs: Documentation dependencies (MkDocs, etc.)
- NLP: Natural language processing dependencies (spaCy, etc.)
To install only specific groups:
# Install only documentation dependencies
poetry install --only docs
# Install main dependencies and development dependencies
poetry install --with devThis project uses pre-commit hooks to ensure code quality. The hooks run automatically when you commit changes, but you can also run them manually:
poetry run pre-commit run --all-filesThe following hooks are configured:
- Code Formatting: Black and isort for consistent code style
- Linting: Flake8, Pylint, and MyPy for code quality
- File Checks: Trailing whitespace, end-of-file fixing, YAML/TOML validation
- Markdown Linting: Ensures consistent Markdown formatting
- Follow PEP 8 style guide for Python code
- Use Black for code formatting
- Use isort for import sorting
- Use meaningful variable and function names
- Write clear comments and documentation
- Keep functions small and focused on a single task
- Write tests for new features and bug fixes
- Run tests with Poetry:
poetry run pytest
- Ensure all tests pass before submitting a pull request
- Aim for high test coverage
- Update documentation for any changes to the protocol
- Use clear and concise language
- Include examples where appropriate
- Build documentation with Poetry:
cd uim-docs poetry run mkdocs build
If you have questions or need help, you can:
- Open an issue on GitHub
- Join our Discord server
- Email the maintainers at uim-protocol@synapti.ai
Contributors will be acknowledged in the project's documentation and release notes.
Thank you for contributing to the UIM Protocol!