Agent config sync
Skill ellmos-ai/skills/skills/infrastructure/agent-config-sync
Synchronisiert MCP-Server UND Skills uebergreifend ueber ALLE bekannten Agent-Apps und CLIs (Claude Code, Claude Desktop, Codex CLI, Antigravity/Gemini, Kimi Code, Cursor, Cline, Windsurf, GitHub Copilot, ...) auf einem oder mehreren Systemen. Aktiviert sich, wenn ein MCP-Server oder Skill in mehreren Agent-Tools verfuegbar gemacht werden soll, der User fragt "sync mcp/skills ueber alle agents", "warum hat Tool X den Server/Skill nicht", "MCP/Skills ueberall verteilen", "config-sync zwischen agents", oder ein neues Agent-Tool an den gemeinsamen Stand angeschlossen werden soll. Liest eine Registry (welche Tools syncen wie), eine Config (Anbieter-Standardspezifikationen: wo + welches Format) und einen Lauf-Cache (aufgeloeste reale Pfade), wendet Sync-Regeln an (pull vs. verteilen) und verifiziert. Enthaelt einen Lernmechanismus: unbekannte/veraltete Config-Orte werden per Systemsuche, WebSearch und Context7 nachgeschlagen und in der Config aktualisiert. Loest den aelteren, auf Claude Code <-> Claude Desktop beschraenkten Skill mcp-config-sync ab (umschliesst ihn als Spezialfall). Claude-MCP-Profile werden via ellmos-controlcenter-mcp-Backend verwaltet (resolve_profile / switch_profile), nicht durch eigene Logik.From its SKILL.md
npx -y skills add ellmos-ai/skills --skill agent-config-syncAssembled from the repository path, not quoted from the project. Check it against their README if it does not work.
One thing to look at
- 3 stars3 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.
SKILL.md
12.4 KB, ~3.2k tokens by cl100k_base, as published. Nobody here has run it
Agent Config Sync
Ein uebergreifendes Sync-Protokoll fuer MCP-Server und Skills ueber alle bekannten Agent-Apps und CLIs. Statt fuer jedes App-Paar ein eigenes Skript zu pflegen, beschreibt dieser Skill deklarativ, welche Tools auf einem System leben, was sie teilen sollen (MCP / Skills / beides) und wie (pull, push, bidirektional/verteilen). Ein generischer Ablauf liest diese Deklaration und fuehrt den Sync aus.
Claude-MCP-Profile-Backend: Fuer claude-code und claude-desktop wird
ellmos-controlcenter-mcp als Backend genutzt (MCP-Tool resolve_profile/switch_profile).
sync.py enthaelt keine eigene Claude-Profil-Logik; der Agent ruft die ControlCenter-MCP-Tools
zur Laufzeit auf. Direkt lesbare JSON-Profildateien (z.B. shared.json) werden weiterhin
direkt gelesen.
Loest mcp-config-sync ab: Der aeltere Skill mcp-config-sync ist als
Registry-Beziehung claude-pair (pull, scope mcp) in diesem Skill umschlossen.
Sobald agent-config-sync produktiv eingesetzt wird, sollte mcp-config-sync auf
status: deprecated gesetzt werden.
Verhaeltnis zu bestehenden Skills (keine Duplikation)
| Skill | Zustaendigkeit | Verhaeltnis |
|---|---|---|
| agent-config-sync (dieser) | Sync von MCP-Servern + Skills ueber alle Agent-Tools, regelbasiert | Achse 1 (Inter-Agent) + Inter-IDE-Verteilung |
mcp-config-sync | nur MCP, nur Claude Code <-> Claude Desktop, 1 Skript | Spezialfall, der hier umschlossen wird (siehe references/legacy-mcp-config-sync.md); bleibt vorerst als Legacy bestehen |
agents-bridge | leitet fremde Agents per Redirect-Datei auf die EINE Regel-Quelle CLAUDE.md | Regel-Sync (Wissen/Workflows), NICHT Tool-Config. Komplementaer. |
system-onboarding | Erstaufsetzen eines neuen Systems (Reihenfolge der Installation) | liefert die Config-Ort-Tabellen, auf denen dieser Skill aufbaut |
Was dieser Skill NICHT ist: kein Regel-/CLAUDE.md-Sync (das macht agents-bridge), kein
System-Erstsetup (das macht system-onboarding), kein Plugin-/Extension-Marktplatz-Abgleich
(die Toolkits sind komplementaer, siehe mcp-config-sync/references/plugin-extension-parity.md).
Die drei Datenebenen
Der Skill trennt bewusst Was-soll-passieren von Wie-sehen-die-Anbieter-aus von Wo-liegt-es-real:
REGISTRY (lokal/privat) was syncen welche Tools wie? (Beziehungen, Modus, Scope)
| liest
v
CONFIG (publizierbar) Anbieter-Standardspezifikationen: pro Tool wo + Format
| loest Pfade auf nach
v
CACHE (lokal/privat) aufgeloeste reale Verzeichnisse/Dateien (Lauf-Cache)
| Datei | Inhalt | Privacy |
|---|---|---|
REGISTRY.md + registry.example.json | welche Tools vorhanden, Sync-Paare/-Gruppen, Modus, Scope | Template publizierbar; reale registry.json lokal/gitignored |
CONFIG.md + config.json | je Anbieter: Config-Ort (Platzhalter <HOME>), Format, Merge-Key, Eigenheiten, Quellen-Stand | publizierbar (neutral) |
CACHE.md + cache.json | aufgeloeste reale Pfade auf DIESEM System | lokal/gitignored |
Ablauf (Protokoll)
0. Lock + Vorsicht
- Bei aktiver
LOCK*.txtim Zielbereich: nichts schreiben (LOCK-System beachten). - Default ist read-only:
--status/--planveraendern nichts.--applynur mit--yesund nach Anzeige des Plans.
1. Registry lesen
registry.json(Fallback:registry.example.json) laden.- Liefert: vorhandene Tools auf diesem
host, die Sync-Beziehungen (Paare/Gruppen), je Beziehung Modus (pull|push|bidirectional) und Scope (mcp|skills|both).
2. Config lesen (Anbieter-Specs)
config.jsonladen: je Anbieter Config-Ort (mit<HOME>-Platzhalter), Format (json|toml|dir),mcp_key(z.B.mcpServers),skills_dir, Eigenheiten.
3. Cache aufloesen
- Platzhalter (
<HOME>,<APPDATA>, ...) gegen das reale System aufloesen →cache.json. - Pruefen, ob die Datei/der Ordner existiert. Fehlt sie → Lernmechanismus (Schritt 6).
4. Plan bilden (pull vs. verteilen)
- Pro Beziehung den Quellzustand lesen und mit dem Zielzustand vergleichen.
- pull: ein designierter Master/Hub wird gelesen, Ziele bekommen dessen Stand.
- push/verteilen: ein Quell-Tool verteilt an mehrere Ziele.
- bidirectional: Vereinigung; bei Konflikt (gleicher Key, anderer Wert) → eskalieren, nicht raten.
- Fuer mcp: nur den
mcp_key-Block ersetzen, restliche Config-Felder erhalten; Format-Konvertierung JSON↔TOML, wo noetig (Codex = TOML). - Fuer skills: Verzeichnis-Abgleich (
skills_dir); App-spezifische Eigenheiten beachten (z.B. Claude Desktop liest~/.claude/skills/NICHT direkt → Bridge-Skill, siehemcp-config-sync/references/skills-sync-options.md). - Ausgabe: menschenlesbarer Plan (welche Datei, welche Keys, add/update/remove).
5. Anwenden + Verifizieren (nur --apply --yes)
- Vor jedem Schreiben Backup mit Zeitstempel.
- Schreiben (Format-erhaltend, nur Ziel-Block).
- Verifikation: Ziel erneut lesen, Soll/Ist vergleichen; Diff ausgeben.
- Hinweis: Apps ggf. neu starten (Claude Desktop komplett beenden), damit Aenderungen greifen.
6. Lernmechanismus (Selbstheilung der Config)
Wird ausgeloest, wenn ein Config-Ort fehlt, ein Anbieter unbekannt ist oder ein Format nicht passt:
- Config-Ort veraltet/nicht gefunden → Systemsuche nach den bekannten Dateinamen:
- MCP-Server-Suche: ellmos-FileCommander (
fc_search_files/fc_search) oderGlobueber die Home-/AppData-Wurzeln nach*config*.json,config.toml,claude_desktop_config.json,settings.json,mcp.json. - Gefundenen realen Pfad in
cache.jsoneintragen; wenn er dauerhaft vom Config-Standard abweicht,config.json(mit Stand-Hinweis) aktualisieren.
- MCP-Server-Suche: ellmos-FileCommander (
- Unbekannter Anbieter (Tool, das in
config.jsonfehlt) → WebSearch nach "<tool> MCP config file location" / "<tool> custom rules file", Ergebnis verifizieren, neuen Anbieter-Eintrag inconfig.jsonanlegen (mitsources-Feld + Datum). - Format-/Schema-Unsicherheit → aktuelle Spezifikation per WebSearch UND
Context7 (
resolve-library-id→query-docs, z.B. "Model Context Protocol", "claude code mcp config", "codex config.toml") nachschlagen;config.jsonkorrigieren.
Jede automatische Config-Aenderung dokumentiert sich selbst: Feld
sources+updatedim betroffenen Anbieter-Eintrag setzen.
Aufruf
# Status: Pfade aufloesen, Existenz pruefen, cache.json aktualisieren (read-only fuer Agent-Configs)
PYTHONIOENCODING=utf-8 python scripts/sync.py --status
# Plan: was wuerde ein Sync tun? (read-only, kein Schreiben)
PYTHONIOENCODING=utf-8 python scripts/sync.py --plan
# Anwenden: block-replace pro Relation, Backup + Verifikation (bestaetigung erforderlich)
PYTHONIOENCODING=utf-8 python scripts/sync.py --apply --yes
# Tests ausfuehren (nutzen nur Fixtures -- keine echten Configs)
PYTHONIOENCODING=utf-8 python -m pytest skills/infrastructure/agent-config-sync/tests/ -v
ControlCenter-Backend (Claude-Provider)
Fuer claude-code- und claude-desktop-Targets wird kein direkter Config-Write gemacht.
Stattdessen den ellmos-controlcenter-mcp-Server nutzen:
resolve_profile() -- aktives Profil und Serverinhalt lesen
switch_profile() -- Profil wechseln / MCP-Config-Datei neu erzeugen
Der --plan-Output zeigt explizit, welche ControlCenter-Aktion noetig ist.
Privacy / Konventionen
- Publizierbar (neutral):
SKILL.md,CONFIG.md,config.json,REGISTRY.md,registry.example.json,CACHE.md,cache.example.json,scripts/. Nur Platzhalter (<HOME>,~,<HOST>,<USER>), KEINE echten Personen-Pfade/Hostnames. - Lokal/privat (gitignored):
registry.json,cache.json(die mit echten Pfaden gefuellten Instanzen fuer DIESES System). Muster in der.SKILLS/.gitignoreergaenzt. - Quelle =
skills/.... NICHT nach~/.claude/skills/deployen — das entscheidet der User spaeter viaskill_sync.py. Nicht committen/pushen ohne Freigabe.
Aufbau dieses Skills
agent-config-sync/
├── SKILL.md (diese Datei — das Protokoll, DE)
├── SKILL.en.md (englische Version)
├── REGISTRY.md Doku: was syncen welche Tools wie
├── registry.example.json Template (publizierbar)
├── registry.json reale Instanz fuer dieses System (LOKAL, gitignored)
├── CONFIG.md Doku: Anbieter-Standardspezifikationen
├── config.json je Anbieter: Ort + Format + Eigenheiten (publizierbar)
├── CACHE.md Doku: Lauf-Cache aufgeloester Pfade
├── cache.example.json Template (publizierbar)
├── cache.json aufgeloeste reale Pfade (LOKAL, gitignored)
├── scripts/
│ └── sync.py Funktionale Implementierung (--status/--plan/--apply)
├── tests/
│ └── test_sync.py Pytest-Tests (nur Fixtures, keine echten Config-Writes)
└── references/
└── legacy-mcp-config-sync.md wie der alte MCP-Skill hier aufgeht
Changelog
0.2.0 (2026-06-20)
--applyimplementiert: format-erhaltendes JSON-block-replace, TOML-Abschnitt-replace (Codex), Backup + Verifikation je Schritt, Skills-Verzeichnis-Abgleich.- Test-Suite (
tests/test_sync.py, 15 Tests, nur Fixtures -- keine echten Config-Writes). - ControlCenter-Backend-Anbindung: Claude-Provider-Writes delegieren an
ellmos-controlcenter-mcp(resolve_profile/switch_profile); keine eigene Profil-Logik. - Test-Isolation via
--root-Flag undAGENT_CONFIG_SYNC_TEST_ROOT-Env-Guard. - Nutzerneutral: Platzhalter in SKILL.md/CONFIG/Templates;
registry.json/cache.jsongitignored. - Versionierungs-Konformitaet:
last_sync_from_origin: null(originaerer custom-Skill),status: active, inregistry/components.jsonaufgenommen. - Supersede-Relation zu
mcp-config-syncinreferences/legacy-mcp-config-sync.mdund SKILL.md-Kopftext modelliert. - i18n: SKILL.md (DE, primaer) + SKILL.en.md (EN, vollstaendig).
0.1.0 (2026-06-20)
- Initiales Scaffold: Protokoll-SKILL.md, Registry/Config/Cache-Modell (Template + Doku),
Lernmechanismus (Systemsuche/WebSearch/Context7),
scripts/sync.py-Stub (--status/--plan). Umschliesstmcp-config-syncals Spezialfall.
What ships with it: 22 files
340.1 KB alongside SKILL.md, 4 of them executable
references/
scripts/
- sync-LOCAL-HOST.pyruns33.6 KB
- sync.pyruns33.6 KB
tests/
- test_sync-LOCAL-HOST.pyruns12.6 KB
- test_sync.pyruns12.6 KB
- banner.png207.1 KB
- cache.example.json912 B
- cache.example-LOCAL-HOST.json912 B
- CACHE.md1.6 KB
- config.json5.1 KB
- config-LOCAL-HOST.json5.1 KB
- CONFIG.md4.0 KB
- registry.example.json1.7 KB
- registry.example-LOCAL-HOST.json1.7 KB
- REGISTRY.md1.2 KB
- SCAFFOLD-REPORT.md2.7 KB
- SKILL.en.md1.8 KB
- SKILL.es.md2.3 KB
- SKILL.fr.md2.0 KB
- SKILL.ja.md2.6 KB
- SKILL.ru.md3.1 KB
- SKILL.zh.md2.0 KB