# Portabilität: UNIVERSAL
# Version: 1.0.0
# Zuletzt validiert: 2026-02-13 (Claude Opus 4.6)
# Nächste Prüfung: 2026-08-13

BACH SELF-EXTENSION (Selbsterweiterung)
=======================================

Stand: 2026-02-13

BACH ist ein sich selbst erweiterndes System. AI-Partner sollen
BACH aktiv verbessern, neue Fähigkeiten erstellen und das System
an neue Anforderungen anpassen.

KERNPRINZIP: BACH NUTZEN = BACH ERWEITERN
------------------------------------------
Jeder Zugriff ist eine Gelegenheit das System zu verbessern.
Fehlende Fähigkeiten werden NICHT gemeldet, sondern ERSTELLT.

SELF-EXTENSION LOOP
--------------------
  1. ERKENNEN  → Fehlende Fähigkeit identifizieren
  2. ERSTELLEN → Neuen Skill/Tool/Handler scaffolden
  3. REGISTRIEREN → Hot-Reload, Registry aktualisieren
  4. NUTZEN    → Sofort verwenden
  5. REFLEKTIEREN → Lesson Learned, Hook registrieren

NEUE FAEHIGKEITEN ERSTELLEN
-----------------------------
Mit `bach skills create` werden 5 Komponenten-Typen unterstützt:

  bach skills create voice-processor --type tool
    → Erstellt: system/tools/voice_processor.py
    → Scaffolding mit Standard-Template
    → Sofort nutzbar nach Implementierung

  bach skills create email-agent --type agent
    → Erstellt: system/agents/email-agent/SKILL.md
    → Eigener Ordner mit SKILL.md Template
    → Orchestriert andere Experten/Tools

  bach skills create tax-expert --type expert
    → Erstellt: system/agents/_experts/tax-expert/SKILL.md
    → Eigener Ordner mit SKILL.md Template
    → Tiefes Domaenenwissen

  bach skills create api-gateway --type handler
    → Erstellt: system/hub/api_gateway.py
    → Sofort als CLI-Befehl verfügbar (bach api-gateway ...)
    → BaseHandler-Subklasse mit get_operations()

  bach skills create data-sync --type service
    → Erstellt: system/skills/_services/data-sync/
    → Service mit __init__.py und service.py
    → Handler-nah, allgemein nutzbar

NACH DER ERSTELLUNG: HOT-RELOAD
---------------------------------
  bach skills reload
    → Registry neu laden (neue Handler erkennen)
    → Tool-Discovery ausführen
    → Skills-DB synchronisieren
    → KEIN Neustart nötig!

ODER per API:
  from bach_api import app
  a = app()
  count = a.reload_registry()
  print(f"{count} Handler geladen")

HOOK-INTEGRATION
-----------------
Neue Fähigkeiten können sich in das Hook-System einhaengen:

  from core.hooks import hooks

  # Eigene Logik bei System-Events ausführen
  hooks.on('after_task_create', meine_logik, name='mein_plugin')
  hooks.on('after_startup', startup_check, name='mein_plugin')

  Verfügbare Events: bach hooks events

BEISPIEL: KOMPLETTER SELF-EXTENSION WORKFLOW
----------------------------------------------

  Schritt 1: Bedarf erkennen
  -------------------------
  "Ich brauche einen Handler für Zeiterfassung"

  Schritt 2: Scaffolden
  ----------------------
  bach skills create zeiterfassung --type handler

  Schritt 3: Implementieren
  --------------------------
  → hub/zeiterfassung.py bearbeiten
  → Operations hinzufügen (start, stop, list, report)
  → DB-Tabelle in db/schema.sql ergänzen wenn nötig

  Schritt 4: Hot-Reload
  ----------------------
  bach skills reload

  Schritt 5: Sofort nutzen
  -------------------------
  bach zeiterfassung start "Projektarbeit"
  bach zeiterfassung stop
  bach zeiterfassung report --today

  Schritt 6: Hooks registrieren (optional)
  -----------------------------------------
  from core.hooks import hooks
  hooks.on('after_task_done', lambda ctx: zeiterfassung.stop())

  Schritt 7: Lesson speichern
  ----------------------------
  bach lesson add "Zeiterfassung: Handler-Pattern mit start/stop/list/report"

WAS KANN ERWEITERT WERDEN?
----------------------------
  Bereich          Wie                              Wo
  ---------------  ------------------------------   --------------------------
  CLI-Befehle      Neuen Handler in hub/ erstellen   hub/<name>.py
  Tools            Python-Script in tools/ legen     tools/<name>.py
  Agents           Agent-Ordner mit SKILL.md          agents/<name>/
  Experts          Expert-Ordner mit SKILL.md         agents/_experts/<name>/
  Services         Service-Ordner erstellen           skills/_services/<name>/
  Workflows        Markdown-Datei erstellen           skills/workflows/<name>.md
  Hooks            Listener registrieren              core/hooks.py: hooks.on()
  DB-Schema        Migration in db/ erstellen         db/migrations/
  Help-Dateien     Textdatei in docs/help/ erstellen       docs/help/<topic>.txt
  Aliases          Kurzform in aliases.py             core/aliases.py

REGELN FÜR SELBSTERWEITERUNG
-------------------------------
  1. Handler First: Jede Funktion als Handler in hub/
  2. Self-Healing: Fehler sofort korrigieren
  3. Fix-or-Task: Klein = sofort fixen, gross = Task erstellen
  4. Lesson Learned: Nach jeder Erweiterung dokumentieren
  5. Hot-Reload: Immer `bach skills reload` nach Änderungen
  6. Testen: Neue Handler mit `bach <name> help` validieren

SIEHE AUCH
----------
  bach help hooks            Hook-Framework
  bach help skills           Skill-System
  bach help cli              CLI-Konventionen
  bach help architecture     System-Architektur
  skills/workflows/self-extension.md  Detaillierter Workflow
