click-plugins
An extension module for click to enable registering CLI commands via setuptools entry-points.
Decision gist · record as of 2026-08-14
Yes, if you are building a Click-based CLI that needs a plugin architecture. The package is simple, has low install friction, and solves a specific problem well. However, note the inactive maintenance status and the discrepancy between the description ("no longer actively maintained") and the metadata (active status); verify compatibility with your target Click version before relying on it for new projects.AI-flagged interpretation of the facts on this page — verify before relying
Before you install
- Requires setuptools entry-points to be defined in a package's setup.py for plugins to be discovered.
- Low friction install with a single runtime dependency on click.
- The package is marked inactive in its own description but the repository remains active with a recent commit; maintenance status is listed as active, though the classifier shows Development Status :: 7 - Inactive.
License · maintenance · safety
New BSD (permissive) — Licensed under New BSD (permissive), imposing no restrictions on commercial or private use; attribution required but no copyleft obligations.
last release 2025-06-25 (415 days) · last repo commit 2026-05-25 · 132 stars
0 known vulnerabilities (OSV.dev, 2026-08-14) · 60,251,867 downloads/mo, #505 on PyPI
Alternatives
Verify before relying
pip install click-plugins
from click_plugins import with_plugins
import click
@with_plugins(iter_entry_points('your_package.cli_plugins'))
@click.group()
def cli():
pass- Whether the package's inactive status affects long-term compatibility with current Click versions
- Current test coverage and whether the test suite passes on modern Python versions
- How entry-points are discovered and loaded at runtime in the usage pattern
What it is and what it does
click-plugins is a small extension for the Click command-line framework that lets you build pluggable CLI applications. Instead of bundling all commands into a single package, you decorate your main Click group with `@with_plugins()` and point it to setuptools entry-points; external packages can then register their own subcommands or subgroups without modifying your core code. The package automatically handles broken plugins by converting them to warning messages rather than crashing the entire CLI.
This is useful when you want to offer a CLI as a platform for third-party extensions—for example, a core tool that domain-specific plugins can extend with specialized subcommands. Plugin developers register their commands in their own setup.py entry-points, and the core CLI loads them at runtime. The package has been around since 2015-07-21 and remains in the top 1000 PyPI packages by download volume, though it is no longer actively maintained.
Use it for
- Build a core CLI tool that third-party packages can extend with their own subcommands via entry-points
- Distribute domain-specific CLI plugins independently without requiring changes to the main application
- Create a modular command structure where plugins can register alongside core commands or in dedicated subgroups
- Handle plugin loading failures gracefully, converting broken plugins to warnings instead of crashes
Worth the install?
AI-flagged interpretation of the facts on this page. Verify before relying on it.
Yes, if you are building a Click-based CLI that needs a plugin architecture.
The package is simple, has low install friction, and solves a specific problem well. However, note the inactive maintenance status and the discrepancy between the description ("no longer actively maintained") and the metadata (active status); verify compatibility with your target Click version before relying on it for new projects.
Install
click-plugins on PyPI
Before you install
Low friction install with a single runtime dependency on click. The package is marked inactive in its own description but the repository remains active with a recent commit; maintenance status is listed as active, though the classifier shows Development Status :: 7 - Inactive.
Requires setuptools entry-points to be defined in a package's setup.py for plugins to be discovered.
License in practice
Licensed under New BSD (permissive), imposing no restrictions on commercial or private use; attribution required but no copyleft obligations.
Quickstart
pip install click-plugins
from click_plugins import with_plugins
import click
@with_plugins(iter_entry_points('your_package.cli_plugins'))
@click.group()
def cli():
pass
Verify before relying
- Whether the package's inactive status affects long-term compatibility with current Click versions
- Current test coverage and whether the test suite passes on modern Python versions
- How entry-points are discovered and loaded at runtime in the usage pattern
Package facts
| License | New BSD permissive |
| Python support | Not specified |
| Install friction | Low. Pure-Python wheel |
| Runtime dependencies | 1 packageclick |
| Maintenance | Actively maintained 415 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 60,251,867 / month, #505 on PyPI 30-day window, as of 2026-08-14 |
| Known vulnerabilities | None known OSV.dev, checked 2026-08-14 |
| Classifiers | Development Status :: 7 - InactiveIntended Audience :: DevelopersLicense :: OSI Approved :: BSD LicenseProgramming Language :: PythonProgramming Language :: Python :: 3Topic :: Utilities |
Evidence: click_plugins-1.1.1.2-py2.py3-none-any.whl
Tags
Let your AI agent find packages like this
Example. Real query, live index.
You found this page by searching. An agent finds it by wishing: SkillFed indexes 14,416 PyPI packages by what they can do, searchable in plain language.
wish › “setuptools cli plugins”
- click-pluginsExtends Click CLI groups to load external commands and subcommands…
- stevedoreStevedore manages dynamic plugin loading for Python applications by…
- pluxPlux is a dynamic plugin loading framework built on Python's entry…
Give your agent the search over MCP, or paste the wish link into any chat.
More Utilities packages
Converts domain names between Unicode and ASCII-compatible encoding (Punycode) according to IDNA 2008 and Unicode Technical Standard 46, with security validation and broader script coverage than the standard library.
Install it if you work with internationalized domain names, need to validate domains, or use HTTP clients that depend on it transitively.
Detects and normalizes text encoding from unknown or ambiguous sources, supporting all IANA character sets that Python's core library provides codecs for, with the ability to register custom codecs.
Setuptools is a Python build backend and package management tool that handles building, distributing, and installing Python packages, including support for C/C++ extension modules.
Pluggy provides a plugin system that lets you define hook specifications and register implementations to be called in sequence, enabling extensible Python applications without tight coupling.
Install it if you're building an extensible application or framework.
Pygments is a syntax highlighter that colorizes source code and text in over 500 languages and formats, outputting to HTML, LaTeX, RTF, SVG, images, or ANSI terminal sequences.
Install it if you need to display or transform source code.
Six provides utility functions to write Python code that runs on both Python 2.7 and Python 3.3+, smoothing over language differences between the two versions.
See also click-log · click-default-group · click · click-repl · click-aliases · click-didyoumean · stevedore · cliff · pyodide-cli · pluginlib