Skip to content
Back to skills

EN

ASecurity

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

  • 6 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 4, 2026
ai-agentspythongogit

Works with

  • cli

Security analysis

A100/100

Scanned September 28, 2026

npx -y skills add ellmos-ai/skills --skill EN --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of EN?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for EN
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ellmos-ai-skills-e48a6d53/badge)](https://www.skillsdirectory.com/skills/ellmos-ai-skills-e48a6d53)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: plugin-system
version: 1.0.0
type: tool
author: BACH Team
created: 2026-02-21
updated: 2026-03-12
description: Generic plugin system for Python applications. Auto-discovery, validation, fault tolerance. Zero dependencies (Python stdlib only).

standalone: true
anthropic_compatible: true
bach_compatible: true
bach_origin: true
category: dev
tags: [plugin, framework, extensibility, cli, architecture]
language: en
status: active
dependencies: {'tools': [], 'services': [], 'protocols': [], 'python': []}
provenance: {'origin': 'bach', 'origin_path': 'MODULAR_AGENTS/plugins', 'origin_version': '1.0.0', 'origin_repo': 'github.com/ellmos-ai/bach', 'last_sync_from_origin': '2026-03-12', 'last_sync_to_origin': None, 'local_changes_since_sync': False}
---

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

> **English** — Official English version of `plugin-system`.


# Plugin System (English)

Fault-tolerant plugin system for Python CLI applications.
A faulty plugin never stops the rest of the application.

## Core Features

- **Auto-Discovery:** Automatically finds plugins in a directory
- **Validation:** Checks `name`, `version`, `execute()` on each plugin class
- **Fault Tolerance:** Defective plugins are logged but not loaded
- **Zero Dependencies:** Python standard library only

## Files

```
scripts/
  plugin_system.py       Core: PluginBase (ABC) + PluginManager
  cli_demo.py            Demo CLI with argparse
  test_plugin_system.py  16+ unit tests
examples/
  hello.py               Hello World plugin
  calculator.py          Calculator plugin
  systeminfo.py          System Info plugin
```

## Quick Start

### 1. Create a Plugin

```python
from plugin_system import PluginBase

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

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

### 2. Use PluginManager

```python
from plugin_system import PluginManager

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

# List all plugins (Deutsch)
manager.list_plugins()

# Execute a plugin (Deutsch)
success, result = manager.execute_plugin("MyPlugin", param="value")
if success:
    print(result)
```

### 3. Integrate into Your App

```python
class MyApp:
    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

Every plugin must:

| Requirement | Details |
|-------------|---------|
| Inherit `PluginBase` | `from plugin_system import PluginBase` |
| Set `name` | Class attribute, non-empty |
| Set `version` | Class attribute, semantic versioning |
| Implement `execute()` | Arbitrary `*args, **kwargs` |

## Fault Tolerance

| Error Type | Behavior |
|-----------|----------|
| SyntaxError in plugin | Plugin is skipped, rest loads |
| Missing attributes | Plugin is marked as `is_valid=False` |
| Exception in `execute()` | Returns `(False, error_message)` |
| No plugin in directory | Empty list, no crash |

## Changelog

### 1.0.0 (2026-03-12)
- Migration from MODULAR_AGENTS/plugins to skill library
- PluginBase ABC + PluginManager
- 3 example plugins (Hello, Calculator, SystemInfo)
- 16+ unit tests
- CLI demo with argparse

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…