Thank you for your interest in contributing to Courseforge! This document provides guidelines for contributing to the project.
- Python 3.8 or higher
- Git
- (Optional) DART installation for document accessibility conversion
- Fork the repository on GitHub
- Clone your fork:
git clone https://github.com/YOUR-USERNAME/Courseforge.git cd Courseforge - Install dependencies:
pip install -r scripts/requirements.txt
- Set environment variables (optional):
export COURSEFORGE_PATH=/path/to/Courseforge export DART_PATH=/path/to/DART # If using DART integration
feature/description- New featuresfix/description- Bug fixesdocs/description- Documentation updatesrefactor/description- Code refactoring
- Create a new branch from
main:git checkout -b feature/your-feature-name
- Make your changes
- Test your changes thoroughly
- Commit with clear, descriptive messages
Follow conventional commit format:
feat: add new assessment template generatorfix: resolve manifest namespace issuedocs: update agent documentationrefactor: simplify IMSCC packaging logic
- Follow PEP 8 style guidelines
- Use meaningful variable and function names
- Add docstrings to all public functions
- Include type hints where appropriate
- Update README files when changing functionality
- Document new features in the appropriate
docs/file - Keep CLAUDE.md updated for agent behavior changes
- Ensure your code follows the project style guidelines
- Update documentation as needed
- Test your changes with sample course content
- Create a pull request with:
- Clear title describing the change
- Description of what changed and why
- Any related issue numbers
- Code follows project style guidelines
- Tests pass (if applicable)
- Documentation updated
- No hardcoded paths or credentials
- IMSCC output validates correctly (for packager changes)
When modifying or creating agents:
- Follow the agent specification format in
agents/ - Update CLAUDE.md with any new agent capabilities
- Test with the orchestrator workflow
- Document input/output expectations
- One agent = one responsibility
- Use environment variables for paths
- Implement proper error handling
- Follow the scratchpad protocol for design decisions
When reporting issues, please include:
- Clear description of the problem
- Steps to reproduce
- Expected vs actual behavior
- Environment details (OS, Python version)
- Relevant log output
Feel free to open an issue for questions about contributing.
By contributing, you agree that your contributions will be licensed under the MIT License.