Contributing
August 13, 2026 ยท View on GitHub
Thanks for contributing to Qwen-MM-Plugins. Keep changes focused on a concrete problem. For a new capability or an MCP interface change, open an issue first so the scope and compatibility impact can be discussed.
Development setup
Qwen-MM-Plugins supports Python 3.10 and newer. From a checkout, install the dependencies needed for the area you are changing:
python3 -m venv .venv
source .venv/bin/activate
python -m pip install -e '.[core]'
See local development for source and harness debugging, and adding a capability for the repository layout and registration steps.
Making changes
- Keep capability-specific code under
src/capabilities/<name>/; put code insrc/shared/only when multiple capabilities use it. - Preserve existing MCP tool names, inputs, and outputs unless the change is required to fix functionality. Explain any interface change in the PR.
- Import optional dependencies lazily and declare non-Python tools in the
capability's
SYSTEM_DEPStable. - Do not commit API keys, credentials, private media, generated artifacts, or machine-specific configuration.
- Add or update tests and documentation when behavior changes.
Verification
Run relevant targeted tests while developing. Before opening a PR, run the offline checks:
python3 -m pytest -m "not reachability" tests/
python3 scripts/check_manifests.py
ruff format --check .
ruff check .
See Testing for live-provider and component-specific checks.
If a test needs credentials, a GUI application, GPU hardware, or another environment not available to you, state what was not run in the PR.
Pull requests
Describe the problem and the reason for the chosen fix, link related issues, and include the commands and results used for verification. Keep unrelated changes in separate PRs.
Report security issues according to SECURITY.md, not through a public issue. Contributions are licensed under the repository's Apache-2.0 license.
Maintainers: follow Plugin releases after a release PR merges.