QGIS Plugin Manager is a professional, high-performance CLI tool designed to manage the full lifecycle of QGIS plugins. From local development and smart synchronization to official repository compliance and automated versioning. Now available on PyPI for easy integration.
qgis-plugin-manager is the modern successor to traditional QGIS development workflows.
| Feature | pb_tool | qgis-plugin-ci | qgis-plugin-manager |
|---|---|---|---|
| Configuration | Legacy .cfg |
Hybrid .yml |
Pure PEP 621 (TOML) |
| Deployment | Delete & Copy | N/A | Smart Sync (rsync-like) |
| Backups | None | None | Rotation & Multi-profile |
| Hooks | Shell only | Shell only | Native Python + Shell |
| Validation | Basic | Schema only | Deep Structure & Compliance |
| Modern RCC | Fixed tools | Limited | Dynamic Tooling & Patching |
- Smart Synchronization (Sync v2.0): We use idempotent sync logic. Instead of slow "delete and copy", we only update modified files.
- Native Python Hooks Architecture: Write your automation in pure Python via
plugin_hooks.py. Hooks receive full project context (metadata, paths, profiles). - Official Repository "First-Time-Right": Built-in
--repo-checkand structural validation catch errors before you upload to QGIS. - AI-Agent Friendly: Specifically designed to be easily automated by AI agents, featuring clear metadata and a modular command system.
Install system-wide using uv (recommended):
uv tool install qgis-manageOr add as a dev-dependency:
uv add --group dev qgis-manageOr using pip:
pip install qgis-manageScaffold a professional plugin project.
# Create a processing plugin
qgis-manage init "My Plugin" --author "Tester" --email "[email protected]" --template processingSpeed up your local iteration.
# Smart deploy to default QGIS profile
qgis-manage deploy
# Deploy to a specific profile with backup rotation
qgis-manage deploy --profile production --max-backups 5
# Purge old backups to save space
qgis-manage deploy --purge-backupsManage and test your native Python hooks.
# List all hooks from pyproject.toml and plugin_hooks.py
qgis-manage hooks list
# Initialize a standard plugin_hooks.py template
qgis-manage hooks init
# Test a hook in isolation without deploying
qgis-manage hooks test pre_deployKeep your versions in sync across all project files.
# Increment version (Patch, Minor, Major)
qgis-manage bump patch # 0.1.0 -> 0.1.1
qgis-manage bump minor # 0.1.1 -> 0.2.0
# Sync metadata.txt from pyproject.toml source of truth
qgis-manage bump syncPrepare for the Official QGIS Plugin Repository.
# Create a "Repo-Ready" ZIP package
qgis-manage package
# Package with strict compliance check (fails if binaries or errors found)
qgis-manage package --repo-check --sync-version# Run deep structural validation
qgis-manage validate --strict --repo
# Run QGIS Plugin Analyzer on the project
qgis-manage analyze
# Clean Python artifacts (__pycache__) and build files
qgis-manage cleanLeverage YOUR existing configuration. No new files needed.
[tool.qgis-manager]
max_backups = 5 # Control backup rotation
[tool.qgis-manager.ignore]
ignore = [
"data/*.csv",
"tests/temp/*"
]
[tool.qgis-manager.hooks]
post_deploy = "python scripts/notify.py"Automated compilation and management of .ts and .qm files is handled by qgis-manage compile.
GPL-2.0-or-later