Contributing to Curriculum Curator
Thank you for your interest in contributing to Curriculum Curator! This document provides guidelines and instructions for contributing to the project.
Getting Started
Prerequisites
- Python 3.9 or higher
- Git
Development Setup
- Fork the repository on GitHub
-
Clone your fork locally:
-
Install the package in development mode:
-
Install pre-commit hooks:
Development Workflow
Branching
main
branch is the stable version- Create feature branches from
main
for your work - Use a descriptive name for your branch, e.g.,
feature/workflow-builder
orfix/validation-issue
Testing
Run tests with pytest:
To run tests with coverage:
Code Style
We use several tools to ensure code quality:
- Ruff: For linting and formatting
- Mypy: For type checking
- Pre-commit: To run checks before committing
Run pre-commit on all files:
Documentation
- Update documentation for any new features or changes
- Run the documentation site locally:
Pull Request Process
- Create a pull request from your feature branch to the
main
branch - Ensure all tests pass and the code meets style guidelines
- Update documentation as needed
- Add a clear description of the changes in the pull request
- Request a review from at least one maintainer
Release Process
- Update the version number in
pyproject.toml
- Update the CHANGELOG.md file
- Create a git tag for the version
- Build the package
- Upload to PyPI
See the PyPI publishing guide for detailed instructions.
Project Structure
Understanding where to make changes is important. Here's a quick guide to the project structure:
curriculum_curator/
: Main packagecli.py
: Command-line interfacecore.py
: Core functionalityconfig/
: Configuration handlingworkflow/
: Workflow engineprompt/
: Prompt registryllm/
: LLM integrationvalidation/
: Content validationvalidators/
: Individual validators
remediation/
: Content remediationremediators/
: Individual remediators
persistence/
: Session persistenceutils/
: Utility functionstests/
: Test suitedocs/
: Documentationprompts/
: Example promptsexamples/
: Example configurations and workflows
Adding New Components
Adding a New Validator
- Create a new file in
curriculum_curator/validation/validators/[category]/your_validator.py
- Implement a class that extends
BaseValidator
- Add your validator to the registry in
curriculum_curator/validation/validators/__init__.py
- Add tests in
tests/validation/validators/test_your_validator.py
Adding a New Remediator
- Create a new file in
curriculum_curator/remediation/remediators/[category]/your_remediator.py
- Implement a class that extends
BaseRemediator
- Add your remediator to the registry in
curriculum_curator/remediation/remediators/__init__.py
- Add tests in
tests/remediation/remediators/test_your_remediator.py
Getting Help
If you have questions or need help with contributing, please:
- Check the existing documentation
- Open an issue on GitHub if you find a bug or have a feature request
- Ask for clarification in an existing issue if needed