Contributing to GPTChangelog¶
Thank you for your interest in contributing to GPTChangelog! This guide will help you get started with development and show you how to contribute to the project.
Development Setup¶
Fork and Clone the Repository¶
- Fork the repository on GitHub
 - Clone your fork locally:
 
Sync Dependencies with uv¶
GPTChangelog now uses uv for dependency management. After installing uv, run:
uv sync --dev --extra docs --extra release
source .venv/bin/activate  # On Windows: .venv\Scripts\activate
The uv sync command creates a managed .venv and installs the core package together with the development, documentation, and release tooling declared in pyproject.toml.
Development Workflow¶
Running Tests¶
Run tests using pytest:
For coverage information:
Code Style¶
GPTChangelog follows the PEP 8 style guide. We use Black for code formatting and isort for import sorting:
Type Checking¶
We use mypy for type checking:
Running the CLI in Development¶
When developing, you can run the CLI directly:
Making Contributions¶
Creating a Branch¶
Create a branch for your changes:
Making Changes¶
- Make your changes to the code
 - Add or update tests as needed
 - Run the tests to make sure they pass
 - Update documentation if needed
 
Committing Changes¶
We follow the Conventional Commits specification for commit messages:
feat: add new feature
fix: fix bug in token counting
docs: update installation instructions
refactor: improve commit analysis logic
test: add tests for version determination
chore: update dependencies
Submitting a Pull Request¶
- 
Push your changes to your fork:
 - 
Create a pull request on GitHub
 - Describe your changes in the pull request
 - Link any relevant issues
 
Code Review¶
All contributions go through code review before they are merged. You may be asked to make changes to your pull request based on feedback.
Project Structure¶
Here's an overview of the project structure:
gptchangelog/
├── __init__.py           # Package metadata
├── __main__.py           # Entry point
├── cli.py                # Command-line interface
├── config.py             # Configuration management
├── git_utils.py          # Git utilities
├── openai_utils.py       # OpenAI API integration
├── utils.py              # Utility functions
└── templates/            # Prompt templates
    ├── changelog_prompt.txt
    ├── commits_prompt.txt
    └── version_prompt.txt
Documentation¶
Building Documentation¶
We use MkDocs for documentation:
Documentation Structure¶
The documentation is in the docs/ directory:
docs/
├── index.md              # Home page
├── getting-started.md    # Getting started guide
├── user-guide/           # User guide
├── developer-guide/      # Developer guide
└── examples.md           # Examples
Release Process¶
- Update version in 
gptchangelog/__init__.py - Update CHANGELOG.md using GPTChangelog itself
 - Create a new tag and push it:
 - The CI pipeline will build and publish the package to PyPI
 
Questions and Discussions¶
If you have questions or want to discuss development, please:
- Open an issue on GitHub
 - Join our community discussions on GitHub Discussions
 
Thank you for contributing to GPTChangelog!