Was macht Agentic OS?
Behandle Claude Code als eine persistente Laufzeitumgebung / ein Betriebssystem, nicht als Chat-Sitzung. Dieser Skill kodifiziert die Architektur, die in produktiven agentischen Setups verwendet wird: eine Kernel-Konfiguration, die Aufgaben an Spezialisten-Agenten weiterleitet, persistentes dateibasiertes Gedächtnis, geplante Automatisierung und eine JSON/Markdown-Datenschicht.
Wann aktivieren
- Aufbau eines Multi-Agenten-Workflows in Claude Code
- Einrichtung einer persistenten Claude-Code-Automatisierung, die Sitzungsneustarts überlebt
- Erstellung eines „persönlichen Betriebssystems" oder „Agentic OS" für wiederkehrende Aufgaben
- Benutzer sagt „Agentic OS", „Personal OS", „Multi-Agent", „Agent Coordinator", „persistenter Agent"
- Strukturierung langlaufender Projekte, bei denen Kontext sitzungsübergreifend erhalten bleiben muss
Architekturüberblick
Das Agentic OS besteht aus vier Schichten. Jede Schicht ist ein Verzeichnis in deinem Projektstamm.
project-root/
├── CLAUDE.md # Kernel: Identität, Routing-Regeln, Agenten-Registry
├── agents/ # Spezialisten-Agenten-Definitionen (Markdown-Prompts)
├── .claude/commands/ # Slash-Befehle: benutzerseitige CLI
├── scripts/ # Daemon-Skripte: geplante oder ereignisgesteuerte Aufgaben
└── data/ # Zustand: JSON/Markdown-Dateisystem, keine externe DB
Verantwortlichkeiten der Schichten
| Schicht | Zweck | Persistenz |
|---|---|---|
Kernel (CLAUDE.md) | Identität, Routing, Modellrichtlinien, Agenten-Registry | Git-verfolgt |
Agenten (agents/) | Spezialisten-Identitäten mit eingeschränkten Werkzeugen und Gedächtnis | Git-verfolgt |
Befehle (.claude/commands/) | Benutzerseitige Slash-Befehle (/daily-sync, /outreach) | Git-verfolgt |
Skripte (scripts/) | Python/JS-Daemons, ausgelöst durch Cron oder Webhooks | Git-verfolgt |
Zustand (data/) | Nur-Anhängen-Protokolle, Projektzustand, Entscheidungsaufzeichnungen | Git-ignoriert oder -verfolgt |
Der Kernel
CLAUDE.md ist der Kernel. Er fungiert als COO / Orchestrator. Claude liest ihn zu Sitzungsbeginn und verwendet ihn, um Arbeit weiterzuleiten.
Kernel-Struktur
# CLAUDE.md - Agentic OS Kernel
## Identität
Du bist der COO von [Projektname]. Du leitest Aufgaben an Spezialisten-Agenten weiter.
Du schreibst niemals direkt Code. Du delegierst an den richtigen Agenten und synthetisierst Ergebnisse.
## Agenten-Registry
| Agent | Rolle | Auslöser |
|---|---|---|
| @dev | Code, Architektur, Debugging | Benutzer sagt „bauen", „reparieren", „refaktorisieren" |
| @writer | Dokumentation, Inhalt, E-Mails | Benutzer sagt „schreiben", „entwerfen", „Blog" |
| @researcher | Recherche, Analyse, Faktenprüfung | Benutzer sagt „recherchieren", „analysieren", „vergleichen" |
| @ops | DevOps, Bereitstellung, Infrastruktur | Benutzer sagt „bereitstellen", „CI", „Server" |
## Routing-Regeln
1. Analysiere die Benutzeranfrage auf Absichtsschlüsselwörter
2. Ordne sie der Spalte „Auslöser" der Agenten-Registry zu
3. Lade die entsprechende Agentendatei aus `agents/<name>.md`
4. Übergib die Ausführung mit vollständigem Kontext
5. Synthetisiere und präsentiere das Ergebnis dem Benutzer
## Modellrichtlinien
- Standardmodell: Verwende den Repository- oder Framework-Standard.
- @dev-Aufgaben: Bevorzuge ein Modell mit höherer Argumentationsfähigkeit für komplexe Architektur.
- @researcher-Aufgaben: Verwende das konfigurierte recherschfähige Modell und die genehmigten Suchwerkzeuge.
- Kostenobergrenze: Warne, bevor das konfigurierte Ausgabelimit des Projekts überschritten wird.
Schlüsselprinzip
Der Kernel sollte klein und deklarativ sein. Die Routinglogik lebt in einfachen Markdown-Tabellen, nicht in Code. Dies macht das System überprüfbar und editierbar, ohne debuggen zu müssen.
Spezialisten-Agenten
Jeder Agent ist eine eigenständige Markdown-Datei in agents/. Claude lädt die relevante Agentendatei, wenn eine Aufgabe weitergeleitet wird.
Format der Agentendefinition
# @dev - Softwareentwickler
## Identität
Du bist ein Senior-Softwareentwickler. Du schreibst sauberen, getesteten, produktionsreifen Code.
Du bevorzugst einfache Lösungen. Du stellst klärende Fragen, wenn Anforderungen mehrdeutig sind.
## Gedächtnisumfang
- Lese `data/projects/<aktuelles-projekt>.md` für Kontext
- Lese `data/decisions/` für Architekturentscheidungen
- Füge Ausführungsprotokolle an `data/logs/<datum>[email protected]` an
## Werkzeugzugriff
- Vollständiger Dateisystemzugriff innerhalb des Projektstamms
- Git-Operationen (Status, Diff, Commit, Branch)
- Zugriff auf Test-Runner
- MCP-Server wie in `.claude/mcp.json` konfiguriert
## Einschränkungen
- Schreibe immer Tests für neue Funktionen
- Committe niemals direkt auf `main`; verwende Feature-Branches
- Bevorzuge das Bearbeiten vorhandener Dateien gegenüber dem Erstellen neuer
- Halte Funktionen nach Möglichkeit unter 50 Zeilen
Multi-Agenten-Kooperationsmuster
Wenn eine Aufgabe mehrere Agenten umfasst, führt der Kernel sie nacheinander oder parallel aus:
Benutzer: „Baue eine Landingpage und schreibe den Launch-Blogbeitrag"
Kernel-Routing:
1. @dev - „Baue eine Landingpage mit [Anforderungen]"
2. @writer - „Schreibe einen Launch-Blogbeitrag für [Produkt] unter Verwendung des Landingpage-Texts"
3. Kernel synthetisiert beide Ausgaben zu einer einheitlichen Antwort
Für die parallele Ausführung verwende die Hintergrundaufgaben-Funktion von Claude Code oder Shell-Skripte, die Claude Code mit bestimmten Agentenkontexten aufrufen.
Befehle und tägliche Arbeitsabläufe
Slash-Befehle sind Markdown-Dateien in .claude/commands/. Sie definieren wiederverwendbare Arbeitsabläufe.
Befehlsstruktur
# /daily-sync
Führe das Morgenbriefing durch:
1. Lese `data/logs/last-sync.md` für Kontext
2. Überprüfe den Projektstatus: `git status`, ausstehende PRs, CI-Gesundheit
3. Überprüfe `data/inbox/` auf neue Aufgaben oder erforderliche Entscheidungen
4. Erstelle eine Zusammenfassung von Blockerern, Prioritäten und nächsten Aktionen
5. Füge das Briefing an `data/logs/daily/<datum>.md` an
Standard-Befehlsset
| Befehl | Zweck |
|---|---|
/daily-sync | Morgenbriefing: Status, Blocker, Prioritäten |
/outreach | Führe Outreach-Workflow aus (E-Mail, LinkedIn, etc.) |
/research <thema> | Tiefgehende Recherche mit Quellenverfolgung |
/apply-jobs | Passe Lebenslauf + Anschreiben für eine Zielrolle an |
/analytics | Ziehe Metriken von Stripe, GitHub oder benutzerdefinierten Quellen |
/interview-prep | Generiere Karteikarten oder Mock-Interview-Fragen |
/decision <thema> | Protokolliere eine Entscheidung mit Pro/Contra und gewähltem Weg |
Befehle aktivieren
Lege Befehlsdateien in .claude/commands/<befehlsname>.md ab. Claude Code erkennt sie automatisch. Benutzer rufen sie mit /<befehlsname> auf.
Persistentes Gedächtnis
Das Gedächtnis ist dateibasiert. Keine Vektor-DB, kein Redis, kein PostgreSQL. JSON- und Markdown-Dateien in data/ sind die Datenbank.
Verzeichnisstruktur des Gedächtnisses
data/
├── daily-logs/ # Nur-Anhängen tägliche Aktivitätsprotokolle
├── projects/ # Projektbezogene Kontextdateien
├── decisions/ # Architektur- und Geschäftsentscheidungen (ADR-Format)
├── inbox/ # Neue Aufgaben oder Ideen, die auf die Zuteilung warten
├── contacts/ # Personen, Unternehmen, Beziehungsnotizen
└── templates/ # Wiederverwendbare Prompts und Formate
Format des täglichen Protokolls
# 2026-04-22 - Tägliches Protokoll
## Sitzungen
- 09:00 - Sitzung 1: Auth-Modul refaktorisiert (@dev)
- 11:30 - Sitzung 2: Investoren-Update entworfen (@writer)
## Entscheidungen
- Von JWT zu Session-Cookies gewechselt (siehe `data/decisions/2026-04-22-auth.md`)
## Blocker
- Warte auf API-Key vom Anbieter (Folge am 2026-04-24)
## Nächste Aktionen
- [ ] Auth-Refactor-PR zusammenführen
- [ ] Investoren-Update zur Überprüfung senden
Automatisches Reflexionsmuster
Am Ende jeder Sitzung hängt der Kernel eine Reflexion an:
## Reflexion - Sitzung 3
- Was funktioniert hat: Parallele Agentenausführung sparte 20 Minuten
- Was nicht funktioniert hat: @researcher traf auf eine paywall-geschützte Quelle, bessere Quellenbewertung nötig
- Was geändert werden sollte: Füge Feld `source-tier` zu Forschungsnotizen hinzu (A/B/C-Glaubwürdigkeit)
Dies erzeugt eine Feedback-Schleife, die das System im Laufe der Zeit ohne Code-Änderungen verbessert.
Geplante Automatisierung
Agentic-OS-Aufgaben laufen nach Zeitplan mit externem Cron, nicht mit dem integrierten Cron von Claude Code (das endet, wenn die Sitzung beendet wird).
macOS: LaunchAgent
<!-- ~/Library/LaunchAgents/com.agentic.daily-sync.plist -->
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" ...>
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.agentic.daily-sync</string>
<key>ProgramArguments</key>
<array>
<string>/claude</string>
<string>--cwd</string>
<string>/pfad/zum/projekt</string>
<string>--command</string>
<string>/daily-sync</string>
</array>
<key>StartCalendarInterval</key>
<dict>
<key>Hour</key>
<integer>8</integer>
<key>Minute</key>
<integer>0</integer>
</dict>
<key>StandardOutPath</key>
<string>/tmp/agentic-daily-sync.log</string>
</dict>
</plist>
Linux: systemd-Timer
# ~/.config/systemd/user/agentic-daily-sync.service
[Unit]
Description=Agentic OS Tägliche Synchronisation
[Service]
Type=oneshot
ExecStart=/usr/local/bin/claude --cwd /pfad/zum/projekt --command /daily-sync
# ~/.config/systemd/user/agentic-daily-sync.timer
[Unit]
Description=Tägliche Synchronisation jeden Morgen ausführen
[Timer]
OnCalendar=*-*-* 8:00:00
Persistent=true
[Install]
WantedBy=timers.target
Plattformübergreifend: pm2
# ecosystem.config.js
module.exports = {
apps: [{
name: 'agentic-daily-sync',
script: 'claude',
args: '--cwd /pfad/zum/projekt --command /daily-sync',
cron_restart: '0 8 * * *',
autorestart: false
}]
};
Datenebene
Die Datenebene ist dein Dateisystem. Verwende JSON für strukturierte Daten und Markdown für erzählende Inhalte.
JSON für strukturierten Zustand
// data/projects/website-v2.json
{
"name": "Website v2",
"status": "in-arbeit",
"milestone": "beta-launch",
"agents_involved": ["@dev", "@writer"],
"files": {
"spec": "docs/website-v2-spezifikation.md",
"design": "designs/website-v2.fig"
},
"metrics": {
"commits": 47,
"last_session": "2026-04-22T11:30:00Z"
}
}
Markdown für Erzählungen
Verwende Markdown für alles, was ein Mensch liest: Entscheidungen, Protokolle, Forschungsnotizen, Kontaktaufzeichnungen.
Schemaentwicklung
Benenne vorhandene Felder niemals um. Füge neue Felder hinzu und markiere alte als veraltet:
{
"name": "Website v2",
"status": "in-arbeit",
"milestone": "beta-launch",
"_deprecated_priority": "hoch",
"priority_v2": { "level": "hoch", "rationale": "Blockiert Investoren-Demo" }
}
Dies hält historische Daten lesbar, ohne Migrationsskripte zu benötigen.
Anti-Patterns
Monolithischer Einzelagent
# SCHLECHT - Ein Agent macht alles
Du bist ein Full-Stack-Entwickler, Autor, Forscher und DevOps-Ingenieur.
Teile in Spezialisten-Agenten auf. Der Kernel übernimmt das Routing.
Zustandslose Sitzungen
# SCHLECHT - Kein Gedächtnis zwischen Sitzungen
Jedes Mal frisch starten, wenn Claude Code geöffnet wird.
Lies immer data/ zu Sitzungsbeginn und schreibe am Sitzungsende zurück.
Hartcodierte Anmeldeinformationen
# SCHLECHT - API-Schlüssel in Agentendateien oder CLAUDE.md
Dein OpenAI-API-Schlüssel ist sk-xxxxxxxx
Verwende Umgebungsvariablen oder eine .env-Datei, die von Skripten geladen wird. Agenten referenzieren process.env.API_KEY.
Externe Datenbank für einfachen Zustand
# SCHLECHT - PostgreSQL für das Agentic OS eines Einzelbenutzers
Verwende JSON/Markdown-Dateien, bis du mehrere gleichzeitige Benutzer oder GBs an Daten hast.
Übertechnisiertes Routing
# SCHLECHT - Routinglogik in Code statt in Markdown-Tabellen
if (intent.includes('deploy')) { agent = opsAgent; }
Halte das Routing deklarativ in Markdown-Tabellen in CLAUDE.md. Es ist überprüfbar, editierbar und debugbar.
Best Practices
-
CLAUDE.mdist unter 200 Zeilen und passt in das Kontextfenster - Jede Agentendatei ist unter 100 Zeilen und auf einen Bereich fokussiert
-
data/ist für sensible Protokolle git-ignoriert, für Entscheidungen und Spezifikationen git-verfolgt - Befehle verwenden imperative Namen:
/daily-sync, nicht/run-daily-sync - Protokolle sind Nur-Anhängen; bearbeite niemals vergangene tägliche Protokolle
- Jeder Agent hat einen Abschnitt
Memory Scope, der definiert, welche Dateien er liest - Reflexionen werden am Ende jeder Sitzung geschrieben
- Geplante Aufgaben verwenden externen Cron (LaunchAgent, systemd, pm2), nicht den Sitzungs-Cron von Claude Code
- Kostenverfolgung: Protokolliere API-Ausgaben pro Sitzung in
data/logs/<datum>-costs.json - Ein Projekt = ein Agentic OS. Teile kein einzelnes
CLAUDE.mdüber nicht zusammenhängende Projekte hinweg.