Thank you for your interest in contributing to ScreenPrompt! This document provides guidelines and instructions for contributing.
By participating in this project, you agree to maintain a respectful and inclusive environment for everyone.
- Check existing issues to see if the bug has already been reported
- If not, open a new issue with:
- Clear, descriptive title
- Steps to reproduce
- Expected vs actual behavior
- Windows version and Python version
- Screenshots if applicable
- Check existing issues for similar requests
- Open a feature request with:
- Clear description of the feature
- Use case / why it would be useful
- Any implementation ideas (optional)
- Fork the repository and create your branch from
main - Follow the code style (see below)
- Test your changes thoroughly
- Update documentation if needed
- Submit a pull request with a clear description
-
Clone your fork:
git clone https://github.com/yourusername/screenprompt.git cd screenprompt -
Create a virtual environment:
python -m venv venv venv\Scripts\activate # Windows
-
Install dependencies:
pip install -r requirements.txt
-
Run the application:
python src/main.py
- Language: All code, comments, and documentation must be in English
- Python version: 3.10+ (use modern type hints)
- Line length: 100 characters max
- Imports: Standard library first, then third-party, then local
Every .py file must include the MIT license header:
# MIT License
#
# Copyright (c) 2026 ScreenPrompt Contributors
#
# [Full license text...]- Variables/functions:
snake_case - Classes:
PascalCase - Constants:
UPPER_SNAKE_CASE - Private methods:
_leading_underscore
- Add docstrings to all public functions and classes
- Keep comments concise and meaningful
- Update README.md for user-facing changes
- Update CLAUDE.md for implementation patterns
Before submitting a PR, verify:
- Application starts without errors
- Window appears and is draggable
- Settings panel opens and closes correctly
- Changes in settings apply in real-time
- Settings are saved and persist after restart
- Capture exclusion works in OBS/Zoom
- Keyboard shortcuts function correctly
- Click-through mode works and can be unlocked
- No errors in console output
Test capture exclusion with:
- OBS Studio
- Zoom screen share
- Windows Snipping Tool
- Microsoft Teams (desktop app)
screenprompt/
├── src/
│ ├── main.py # Main application window
│ ├── settings_ui.py # Settings panel UI
│ └── config_manager.py # Configuration handling
├── tests/ # Test files
├── requirements.txt # Dependencies
├── README.md # User documentation
├── CONTRIBUTING.md # This file
├── LICENSE # MIT License
└── CLAUDE.md # Development rules & patterns
If you have questions, feel free to open an issue with the "question" label.
Thank you for contributing!