Thank you for your interest in contributing to Jido Claude! This document provides guidelines for contributing to the project.
- Fork the repository
- Clone your fork locally
- Install dependencies:
mix deps.get - Run tests:
mix test - Run quality checks:
mix quality
- Create a feature branch from
main - Make your changes
- Add tests for new functionality
- Ensure all tests pass:
mix test - Run quality checks:
mix quality - Submit a pull request
- Follow the existing code style and patterns
- Use
mix formatto format your code - Ensure Dialyzer passes:
mix dialyzer - Follow Credo guidelines:
mix credo
- Add tests for all new functionality
- Maintain existing test coverage
- Use property-based testing where appropriate
- Include integration tests for complex features
This project maintains a minimum test coverage threshold of 80%. All contributions must:
- Maintain or improve the overall coverage percentage
- Include comprehensive tests for new code paths
- Not introduce uncovered code without justification
Check coverage locally:
# Generate coverage report
mix coveralls.html
# Check if coverage meets threshold
mix coveralls- Update documentation for any API changes
- Add examples for new features
- Ensure
mix docsbuilds without errors
All public APIs must be properly documented:
- @moduledoc: All public modules must have module documentation
- @doc: All public functions must have function documentation
- @spec: All public functions must have type specifications
- @typedoc: Custom types must have type documentation
We use git_hooks to enforce commit message conventions:
mix git_hooks.install<type>[optional scope]: <description>
[optional body]
[optional footer(s)]
| Type | Description |
|---|---|
feat |
A new feature |
fix |
A bug fix |
docs |
Documentation only changes |
style |
Changes that don't affect code meaning |
refactor |
Code change that neither fixes a bug nor adds a feature |
perf |
Performance improvement |
test |
Adding or correcting tests |
chore |
Changes to build process or auxiliary tools |
ci |
CI configuration changes |
# Feature
git commit -m "feat(session): add custom timeout option"
# Bug fix
git commit -m "fix(stream): resolve memory leak on disconnect"
# Breaking change
git commit -m "feat(api)!: change StartSession schema"- Provide a clear description of the changes
- Use commit messages following conventional commits
- Reference any related issues
- Include tests and documentation updates
- Ensure CI passes
Feel free to open an issue for questions or discussion about potential contributions.