Plugin system
Portable SKILL.md library for Claude Code, Codex-compatible agents, BACH, and local-first LLM workflows
npx -y skills add ellmos-ai/skills --skill plugin-systemAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 2 stars2 stars. Stars are a popularity signal and not a quality one, but at this level it is likely that nobody has read this closely except its author, and you would be relying on your own review.
What its author says it does
Copied from the file, not written here
Generisches Plugin-System fuer Python-Anwendungen. Auto-Discovery, Validierung, Fehlertoleranz. Zero Dependencies (nur Python stdlib).
SKILL.md
3.4 KB, as published. Nobody here has run it
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