plugin-system

Generic plugin system for Python applications. Auto-discovery, validation, fault tolerance. Zero dependencies (Python stdlib only).

SKILL.md

GitHub
<img src="banner.png" width="100%" alt="plugin-system banner">

Plugin System

Fehlertolerantes Plugin-System fuer Python-CLI-Anwendungen. Ein fehlerhaftes Plugin stoppt niemals den Rest der Anwendung.

Kernfeatures

  • Auto-Discovery: Findet Plugins automatisch in einem Verzeichnis
  • Validierung: Prueft name, version, execute() auf jeder Plugin-Klasse
  • Fehlertoleranz: Defekte Plugins werden geloggt aber nicht geladen
  • Zero Dependencies: Nur Python-Standardbibliothek

Dateien

scripts/
  plugin_system.py       Kern: PluginBase (ABC) + PluginManager
  cli_demo.py            Demo-CLI mit argparse
  test_plugin_system.py  16+ Unit-Tests
examples/
  hello.py               Hello-World Plugin
  calculator.py          Rechner-Plugin
  systeminfo.py          System-Info Plugin

Schnellstart

1. Plugin erstellen

from plugin_system import PluginBase

class MeinPlugin(PluginBase):
    name = "MeinPlugin"
    version = "1.0.0"

    def execute(self, *args, **kwargs):
        return {"status": "ok", "message": "Hallo!"}

2. PluginManager nutzen

from plugin_system import PluginManager

manager = PluginManager(plugins_dir="./meine_plugins")
plugins = manager.discover_plugins()

# Alle Plugins auflisten
manager.list_plugins()

# Plugin ausfuehren
success, result = manager.execute_plugin("MeinPlugin", param="wert")
if success:
    print(result)

3. In eigene App integrieren

class MeineApp:
    def __init__(self):
        self.plugins = PluginManager("./plugins")
        self.plugins.discover_plugins()

    def run_command(self, command, **params):
        success, result = self.plugins.execute_plugin(command, **params)
        return result if success else None

Plugin-Interface

Jedes Plugin muss:

Anforderung Details
PluginBase erben from plugin_system import PluginBase
name setzen Klassenattribut, nicht leer
version setzen Klassenattribut, Semantic Versioning
execute() implementieren Beliebige *args, **kwargs

Fehlertoleranz

Fehlertyp Verhalten
SyntaxError im Plugin Plugin wird uebersprungen, Rest laedt
Fehlende Attribute Plugin wird als is_valid=False markiert
Exception in execute() Gibt (False, error_message) zurueck
Kein Plugin im Verzeichnis Leere Liste, kein Crash

Changelog

1.0.0 (2026-03-12)

  • Migration aus MODULAR_AGENTS/plugins in Skillbibliothek
  • PluginBase ABC + PluginManager
  • 3 Beispiel-Plugins (Hello, Calculator, SystemInfo)
  • 16+ Unit-Tests
  • CLI-Demo mit argparse