Download data/ecosystem.json from smlflg/HarnessEcosystem: direct link, hf CLI and curl.
- Browser
- Download file 42.4 kB
-
https://huggingface.co/smlflg/HarnessEcosystem/resolve/main/data/ecosystem.json
- Command line
-
hf download hf://smlflg/HarnessEcosystem/data/ecosystem.json
-
curl -L -o ecosystem.json https://huggingface.co/smlflg/HarnessEcosystem/resolve/main/data/ecosystem.json
42.4 kB
| { | |
| "meta": { | |
| "stand": "2026-03-22", | |
| "version": "1.0.0" | |
| }, | |
| "hero": { | |
| "title": "Samuels AI-Werkstatt", | |
| "subtitle": "4 Harnesses. 1 Workflow. Datengetrieben.", | |
| "stats": [ | |
| { "label": "Harnesses", "value": "4" }, | |
| { "label": "Sessions", "value": "100+" }, | |
| { "label": "Stunden", "value": "50+" }, | |
| { "label": "Stand", "value": "2026-03-22" } | |
| ] | |
| }, | |
| "style_fit": { | |
| "kicker": "Welches Tool passt?", | |
| "heading": "Style-Fit Matrix", | |
| "description": "Welches Harness trifft deinen Arbeitsstil am besten — fuer jeden Task-Typ bewertet.", | |
| "task_types": [ | |
| "Greenfield Architektur", | |
| "Feature iterieren", | |
| "Bugfix isoliert", | |
| "Refactor gross", | |
| "Docs schreiben", | |
| "Codebase erkunden", | |
| "Parallele Agenten", | |
| "Interaktiv chatten", | |
| "Terminal-nah" | |
| ], | |
| "harnesses": ["Claude Code", "Hermes", "OpenCode", "Codex CLI"], | |
| "matrix": [ | |
| ["PERFEKT", "GUT", "OKAY", "MITTEL"], | |
| ["PERFEKT", "GUT", "GUT", "OKAY"], | |
| ["GUT", "GUT", "PERFEKT", "OKAY"], | |
| ["PERFEKT", "GUT", "GUT", "MITTEL"], | |
| ["GUT", "PERFEKT", "OKAY", "SCHLECHT"], | |
| ["PERFEKT", "GUT", "GUT", "MITTEL"], | |
| ["PERFEKT", "MITTEL", "GUT", "SCHLECHT"], | |
| ["PERFEKT", "GUT", "OKAY", "MITTEL"], | |
| ["GUT", "MITTEL", "MITTEL", "PERFEKT"] | |
| ], | |
| "recommendations": [ | |
| { | |
| "harness": "Claude Code", | |
| "for": "Architektur, grosse Refactors, Agenten-Workflows", | |
| "color": "teal" | |
| }, | |
| { | |
| "harness": "Hermes", | |
| "for": "Dokumentation, Research, Analyse", | |
| "color": "gold" | |
| }, | |
| { | |
| "harness": "OpenCode", | |
| "for": "Isolierte Bugs, saubere Feature-Implementierungen", | |
| "color": "green" | |
| }, | |
| { | |
| "harness": "Codex CLI", | |
| "for": "Terminal-Scripts, Batch-Ops, Shell-Automation", | |
| "color": "amber" | |
| } | |
| ] | |
| }, | |
| "harnesses": [ | |
| { | |
| "id": "claude-code", | |
| "name": "Claude Code", | |
| "tagline": "Vollstaendiges Agentic Coding Environment", | |
| "status": "aktiv", | |
| "color": "teal", | |
| "data_complete": true, | |
| "stats": [ | |
| { "label": "Sessions", "value": "100+" }, | |
| { "label": "Avg. Session", "value": "~45 min" }, | |
| { "label": "Modell", "value": "claude-opus-4-6" } | |
| ], | |
| "strengths": [ | |
| "Tiefste Codebase-Integration via LSP und Git", | |
| "Subagent-Orchestrierung fuer parallele Arbeit", | |
| "Sidecar-NG Kontext-Injektion", | |
| "MCP-Server Support", | |
| "Direkter Bash/File-Zugriff" | |
| ], | |
| "weaknesses": [ | |
| "Hoechste Kosten pro Session", | |
| "Opinionated Workflow (Claude-first)", | |
| "Kein nativer Web-Browser" | |
| ], | |
| "architecture_link": "diagrams/architecture-claude-code.html", | |
| "router_keywords": ["architektur", "system", "design", "plan", "komplex", "verstehen", "codebase", "neue idee", "greenfield", "orchestr", "analyse"], | |
| "router_reason": "Dein Architekt-Modus — Plan Mode erzwingt Denken vor Code. Teuer aber richtig wenn du verstehen willst WAS passiert.", | |
| "router_wave": "Wave 1 — Scout", | |
| "tutorial": { | |
| "quickStart": [ | |
| "Starte mit: `claude` oder `claude --plan` für Architektur-Modus", | |
| "Erste Commands: `/status`, `git status`, `Lies BACKLOG.md`", | |
| "Plan Mode aktivieren für grosse Entscheidungen", | |
| "Subagents für parallele Recherche: `run_in_background: true`", | |
| "Ergebnis als Tasksheet exportieren für nächstes Harness" | |
| ], | |
| "adhsPatterns": { | |
| "bodyDoubling": "Du bist mein virtueller Co-Worker. Ich rede mit dir während ich hacke — nicht weil ich Hilfe brauche, sondern weil Präsenz mich fokussiert. Sprich, auch wenn ich nicht direkt frage.", | |
| "dopaminTrigger": "Schnelle Wins: Cliffhanger setzen, Teilergebnisse zeigen, Checkpoint-Messages ('Session bisher: 3 Features, 2 Tests grün').", | |
| "antiParalysis": "Wenn ich feststecke: Nicht philosophieren, sondern 'Was ist die kleinste nächste Action?' stellen. Mikro-Schritte, nicht Grossvision.", | |
| "sessionRhythm": "Max 45min pro Session. Dann /compact oder neue Session. Hyperfocus ≠ Produktivität — nach 1h ohne Test → Quality Drop." | |
| }, | |
| "wellenmodus": { | |
| "role": "Scout & Orchestrator", | |
| "entry": "Wenn Task Architektur, Planung, oder grosses Refactor braucht", | |
| "exit": "Tasksheet für Hermes/Codex wenn Code gebaut werden soll" | |
| }, | |
| "handoff": { | |
| "toHermes": "Konkretes Feature mit Scope-Statement, nicht Plan", | |
| "toOpenCode": "Isolierter Bugfix mit Fehlermeldung + Expected vs Actual", | |
| "toCodex": "Refactor-Task mit Before/After-Beschreibung" | |
| }, | |
| "architektur": { | |
| "annotations": [ | |
| { "component": "CLAUDE.md", "description": "Globale + per-project Verhaltensregeln. Priorität: project > global." }, | |
| { "component": "settings.json", "description": "Modell, Permissions, Env-Variablen. settings.local.json überschreibt." }, | |
| { "component": "Hooks (5 Points)", "description": "SessionStart, UserPromptSubmit, PreToolUse (blockiert!), PostToolUse, Stop" }, | |
| { "component": "Subagents", "description": "Parallele Tasks via Task-Tool. Cost: ~$0.25/M (Haiku). vs $15/M (Opus)." }, | |
| { "component": "MCP-Server", "description": "Externe Tools: Filesystem, GitHub, Memory. Nicht für Long-Running." } | |
| ] | |
| }, | |
| "config": { | |
| "settingsKeys": [ | |
| { "key": "model", "type": "string", "default": "claude-opus-4-6", "description": "Default-Modell für Sessions" }, | |
| { "key": "permissions.allow", "type": "array", "default": "['Edit', 'Write', 'Glob', 'Grep', 'Agent', 'Bash(git*)']", "description": "Erlaubte Tools" }, | |
| { "key": "permissions.deny", "type": "array", "default": "['Bash(rm*)', 'Bash(apt*)', 'Bash(dd*)']", "description": "Verbotene Tools ( safety_gates.py)" }, | |
| { "key": "env.CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS", "type": "boolean", "default": "1", "description": "Aktiviert Subagent-Orchestrierung" }, | |
| { "key": "hooks.PreToolUse", "type": "array", "description": "Blocking-Hooks vor Tool-Ausführung" }, | |
| { "key": "hooks.UserPromptSubmit", "type": "array", "description": "Context-Injection vor LLM-Call (Sidecar-NG nutzt dies)" } | |
| ], | |
| "hooks": [ | |
| { "name": "SessionStart", "description": "Session-Init. Nicht blockierend. Gut für Auto-Context.", "canBlock": false }, | |
| { "name": "UserPromptSubmit", "description": "Vor LLM-Call. Kann additionalContext injizieren (Sidecar-NG).", "canBlock": false }, | |
| { "name": "PreToolUse", "description": "Vor Tool-Ausführung. BLOCKIERT Tool wenn Handler blockiert. Nutzung: safety_gates.py.", "canBlock": true }, | |
| { "name": "PostToolUse", "description": "Nach Tool-Ausführung. Für Logging, Async-Review.", "canBlock": false }, | |
| { "name": "Stop", "description": "Session-Ende. Cleanup, Final-Report.", "canBlock": false } | |
| ] | |
| }, | |
| "faq": [ | |
| { "q": "Session friert ein", "a": "ctrl+c → neu starten. Prüfe ~/claude/.claude/logs/ für Fehler." }, | |
| { "q": "Subagent antwortet nicht", "a": "60s timeout in CLAUDE.md. Prüfe seinen Output oder spawnne neuen." }, | |
| { "q": "Sidecar-Injection funktioniert nicht", "a": "Prüfe hook_inject.py läuft, additionalContext wird in PreToolUse nicht unterdrückt." }, | |
| { "q": "Context zu voll", "a": "/compact eingeben oder neue Session starten. Long-Context = Quality-Drop." }, | |
| { "q": "Hook führt nichts aus", "a": "Prüfe: 1) Hook-Pfad existiert, 2) Datei ausführbar, 3) Interpreter-Pfad in Shebang." } | |
| ] | |
| }, | |
| "powerUser": { | |
| "level2": { | |
| "title": "Config Mastery", | |
| "configHierarchy": [ | |
| { "file": "~/.claude/settings.json", "role": "Basis-Config: Modell, Permissions, Hooks. Wird versioniert." }, | |
| { "file": "~/.claude/settings.local.json", "role": "Lokale Overrides — NICHT ins Git. Für Bash(*) und sensitive Permissions." }, | |
| { "file": "~/.claude/CLAUDE.md", "role": "Globale Verhaltensregeln. Akkumulieren mit Projekt-CLAUDE.md — nicht überschreiben." }, | |
| { "file": "<project>/CLAUDE.md", "role": "Projektspezifische Regeln. Höchste Priorität. Definiert Scope, Test-Strategie, Verbote." } | |
| ], | |
| "bashPermissions": [ | |
| { "pattern": "Bash(git*)", "meaning": "Alle git-Befehle erlaubt" }, | |
| { "pattern": "Bash(python3 /home/*)", "meaning": "python3 nur mit absolutem Pfad" }, | |
| { "pattern": "Bash(*)", "meaning": "ALLES erlaubt — nur in settings.local.json, nie in settings.json" }, | |
| { "pattern": "Bash(gh api*)", "meaning": "GitHub CLI API-Calls" }, | |
| { "pattern": "Bash(npm*)", "meaning": "Alle npm-Befehle" } | |
| ], | |
| "attentionBudget": [ | |
| { "rule": ">50 Regeln = Compliance-Drop", "detail": "Ab ~50 CLAUDE.md-Regeln sinkt die Regel-Einhaltung messbar. Weniger, schärfer ist besser." }, | |
| { "rule": "Weniger > Mehr", "detail": "Weniger Regeln, scharf formuliert > viele Regeln, weich formuliert. Jede Regel konkurriert um Kontext." }, | |
| { "rule": "CLAUDE.md ≠ Config-File", "detail": "Kein JSON, kein YAML — Aufmerksamkeitsbudget. Was nicht gelesen wird, wirkt nicht." }, | |
| { "rule": "Projekt > Global", "detail": "project/CLAUDE.md überschreibt ~/.claude/CLAUDE.md bei Konflikten. Nutze das gezielt." } | |
| ] | |
| }, | |
| "level3": { | |
| "title": "Subagent & Cost Mastery", | |
| "costTable": [ | |
| { "action": "Kurze Analyse", "cost": "<$0.05", "tip": "Unter 2min — kein Subagent nötig" }, | |
| { "action": "Codebase-Analyse (vollständig)", "cost": "~$0.20-0.50", "tip": "Sonnet-Subagent statt Opus direkt" }, | |
| { "action": "Subagent-Wave (3 Agents)", "cost": "~$0.10-0.30", "tip": "Haiku für Background-Tasks: ~$0.25/1M" }, | |
| { "action": "Session ohne Fokus (>1h)", "cost": "$1-3+", "tip": "ABBRECHEN — /compact oder neue Session" }, | |
| { "action": "Opus direkt", "cost": "~$15/1M Tokens", "tip": "Nur für Architektur — nie für Recherche" }, | |
| { "action": "Sonnet-Subagent", "cost": "~$3/1M Tokens", "tip": "5x günstiger als Opus — für Recherche + Code" } | |
| ], | |
| "subagentPatterns": [ | |
| { "pattern": "run_in_background: true — IMMER", "description": "Hauptsession muss responsive bleiben. Kein Blocking. Pflicht bei run_in_background: true." }, | |
| { "pattern": "CLAUDE_CODE_EXPERIMENTAL_AGENT_TEAMS=1", "description": "Aktiviert typisierte Subagents mit Frontmatter-Model-Override. 21 aktive Agent-Typen parallel ausführbar." }, | |
| { "pattern": "Max 2-3 parallele Sessions", "description": "Mehr als 3 parallele Claude Code Sessions = Context-Chaos + doppelte Kosten. Hard Limit." }, | |
| { "pattern": "Sonnet für Recherche, Opus für Architektur", "description": "Nie Opus für Websuche oder File-Lesen. Sonnet-Subagent reicht, spart 80% der Kosten." }, | |
| { "pattern": "Lesen vor Spawn", "description": "Erst relevante Dateien selbst lesen. Subagent soll nicht Dinge herausfinden die schon bekannt sind." }, | |
| { "pattern": "1 fehlgeschlagener Ansatz → STOPP", "description": "Nicht automatisch Ansatz 2 probieren. Samuel fragen. Zweiter autonomer Versuch löst Problem selten." } | |
| ] | |
| }, | |
| "level4": { | |
| "title": "Extension System", | |
| "extensionTypes": [ | |
| { "type": "Agent", "path": "~/.claude/agents/my-agent.md", "description": "Frontmatter mit name/model/tools/subagent_type + System-Prompt. Erbt alle aktiven Hooks." }, | |
| { "type": "Skill", "path": "~/.claude/skills/my-skill/SKILL.md", "description": "Via /my-skill getriggert. Kontext-Injektion, kein Tool. Sidecar-NG nutzt Skills über Knowledge-Base-Paths." }, | |
| { "type": "Command", "path": "~/.claude/commands/my-cmd.md", "description": "Via /my-cmd aufgerufen. Setzt Datei-Inhalt als System-Prompt. Verhält sich wie Slash-Command." }, | |
| { "type": "Hook", "path": "~/.claude/hooks/my-hook.py", "description": "Bekommt JSON via stdin (tool, input, session_id). Exit 0 = erlaubt, non-zero = geblockt (nur PreToolUse)." }, | |
| { "type": "Statusline", "path": "~/.claude/statusline.sh", "description": "Liest JSON von stdin (Context%, Token-Usage, Git-Branch, Hooks). ANSI-formatierte Ausgabe. Editierbar ohne Neustart." } | |
| ], | |
| "hookDeepDive": [ | |
| { "name": "PreToolUse", "blocking": true, "knownBug": false, "detail": "Einzigartig: blockt Tool-Ausführung physisch. Kein anderer Harness hat das. Hook entscheidet ob Tool läuft.", "workaround": null }, | |
| { "name": "UserPromptSubmit", "blocking": false, "knownBug": false, "detail": "additionalContext-Injection vor LLM-Call. Sidecar-NG nutzt diesen Hook für Prompt-Klassifikation.", "workaround": null }, | |
| { "name": "SessionStart", "blocking": false, "knownBug": true, "detail": "Bug #13650: additionalContext wird verworfen. Hook läuft, aber Injection landet nicht beim LLM.", "workaround": "Injection über UserPromptSubmit statt SessionStart" }, | |
| { "name": "Hook-Inheritance", "blocking": false, "knownBug": false, "detail": "Subagents erben ALLE Hooks — kein differenziertes Gate pro Agent möglich. Known Limitation.", "workaround": "Matcher in PreToolUse einschränken, z.B. nur auf Agent-Tool" }, | |
| { "name": "Hook-Restart Required", "blocking": false, "knownBug": false, "detail": "Hook-Änderungen in settings.json erfordern Session-Neustart. Kein Hot-Reload.", "workaround": "Hook-Script selbst kann ohne Neustart editiert werden — nur settings.json-Änderungen erfordern Neustart" } | |
| ], | |
| "activeHooks": [ | |
| { "name": "enforce-background-agents.py", "hook": "PreToolUse → Agent", "function": "Blockt Agent-Calls ohne run_in_background: true. Hält Hauptsession responsive." }, | |
| { "name": "coach-before.sh", "hook": "SessionStart", "function": "Rotiert Playbook-Regeln, Streak-Counter, tägliche Fokus-Injection." }, | |
| { "name": "event_logger.py", "hook": "alle Events", "function": "JSON-Telemetrie aller Tool-Calls. Datei: ~/.claude/events/YYYY-MM-DD.jsonl" }, | |
| { "name": "gsd-context-monitor.js", "hook": "PostToolUse", "function": "Context-Window-Überwachung. Warnt bei >80% Auslastung." }, | |
| { "name": "hook_inject.py (Sidecar-NG)", "hook": "UserPromptSubmit", "function": "Keyword-First → LLM-Fallback Klassifikation. Injiziert additionalContext für aktiven Mode/Skill." } | |
| ] | |
| } | |
| } | |
| }, | |
| { | |
| "id": "hermes", | |
| "name": "Hermes", | |
| "tagline": "Billig & Anpassungsfähig — das Arbeitspferd", | |
| "status": "aktiv", | |
| "color": "gold", | |
| "data_complete": true, | |
| "stats": [ | |
| { "label": "Sessions", "value": "40+" }, | |
| { "label": "Avg. Session", "value": "~20 min" }, | |
| { "label": "Modell", "value": "MiniMax-M2.5" } | |
| ], | |
| "strengths": [ | |
| "MiniMax ~150x billiger als Opus — fuer Routineaufgaben", | |
| "10 Provider, 200+ Modelle via OpenRouter", | |
| "Beste Feedback-Annahme — Korrekturen werden direkt akzeptiert", | |
| "48 eingebaute Tools (Web, Browser, Vision, SmartHome)", | |
| "Git Worktrees fuer parallele, isolierte Tasks" | |
| ], | |
| "weaknesses": [ | |
| "Scope-Drift: Baut standardmaessig in ~/.hermes/ wenn cwd nicht gesetzt", | |
| "Langsamer Start: 10-15s Stille vor erster Response — normal, nicht abbrechen", | |
| "Output-Qualitaet mittel: funktional aber nicht elegant", | |
| "Kein CLAUDE.md-Aequivalent: SOUL.md aktuell leer", | |
| "Kein PreToolUse-Blocking: keine programmatische Verhaltenssteuerung" | |
| ], | |
| "architecture_link": "diagrams/architecture-hermes.html", | |
| "router_keywords": ["build", "implement", "feature", "frontend", "backend", "api", "günstig", "iterati", "docs", "dokumentation", "research", "schreib"], | |
| "router_reason": "50x günstiger als Opus. Self-Improvement ersetzt deine Meta-Arbeit. Wenn du weißt WAS du willst — bau es hier.", | |
| "router_wave": "Wave 2 — Build", | |
| "tutorial": { | |
| "quickStart": [ | |
| "IMMER zuerst: `cd ~/Projekte/Projekt` — Hermes baut sonst in ~/.hermes/", | |
| "Starte: `hermes chat` (15s Stille am Anfang = normal, nicht abbrechen)", | |
| "Modell waehlen: `hermes chat -m minimax/minimax-text-01` fuer guenstige Runs", | |
| "Verzeichnis-Check: 'Bestätige in welchem Verzeichnis du arbeitest'", | |
| "Tasksheet einfuegen — Scope, Output-Pfad, Constraints klar", | |
| "Feedback geben — konkret und praezise. Hermes akzeptiert Korrekturen direkt.", | |
| "Feature by Feature iterieren, Summary fuer Handoff an Codex" | |
| ], | |
| "adhsPatterns": { | |
| "bodyDoubling": "Pair-Programming-Feeling. CLI oder Telegram — offen lassen, nicht killen. Ich rede waehrend du zuloeschst.", | |
| "dopaminTrigger": "Iteratives Feedback gibt immediate gratification. Kleine Korrektur, sofort sichtbarer Erfolg. Nicht alles auf einmal.", | |
| "antiParalysis": "Feature by Feature. Kleine Schritte die ich abschliessen kann. Scope-Drift ist teurer als tiny Tasks.", | |
| "sessionRhythm": "15s Stille am Anfang ist normal. Geduld. Iterationen sind billig — nich neu starten wenn etwas falsch ist." | |
| }, | |
| "wellenmodus": { | |
| "role": "Output-Bauer (Wave 2)", | |
| "entry": "Wenn Claude Code einen Plan hat und Tasksheet existiert", | |
| "exit": "Summary an Codex fuer Polishing oder fertig wenn keine Qualitaetsanspruch" | |
| }, | |
| "handoff": { | |
| "toOpenCode": "Reality-Check mit frischem Blick — was hat Hermes gebaut das suboptimal ist?", | |
| "toCodex": "Summary: Geaenderte Dateien, implementierte Features, offene TODOs. Codex Polishing machen lassen." | |
| }, | |
| "architektur": { | |
| "annotations": [ | |
| { "component": "config.yaml", "description": "Haupt-Config (YAML). 284 Zeilen — alle Einstellungen." }, | |
| { "component": "SOUL.md", "description": "Agent-Personality, freier Text. Aktuell leer — Potenzial ungenutzt." }, | |
| { "component": "10 Provider", "description": "MiniMax, OpenRouter (200+ Modelle), Anthropic, OpenAI, Gemini, Custom Endpoints." }, | |
| { "component": "48 Tools", "description": "Web, Terminal, Vision, Browser, SmartHome — ohne MCP-Server." }, | |
| { "component": "Git Worktrees", "description": "Parallele isolierte Agents auf demselben Repo. Merge danach manuell." } | |
| ] | |
| }, | |
| "config": { | |
| "settingsKeys": [ | |
| { "key": "default_model", "type": "string", "default": "MiniMax-M2.5", "description": "Default-Modell" }, | |
| { "key": "default_provider", "type": "string", "default": "minimax", "description": "Default-Provider" }, | |
| { "key": "agent.reasoning_effort", "type": "string", "default": "medium", "description": "low | medium | high — mehr Tokens bei high" }, | |
| { "key": "terminal.backend", "type": "string", "default": "local", "description": "local | docker | ssh | modal — wo Code ausgefuehrt wird" }, | |
| { "key": "terminal.cwd", "type": "string", "default": ".", "description": "Working Directory — ~/.hermes wenn nicht gesetzt" }, | |
| { "key": "memory.enabled", "type": "boolean", "default": "true", "description": "Cross-Session Memory via Honcho AI" }, | |
| { "key": "compression.enabled", "type": "boolean", "default": "true", "description": "Context-Kompression fuer lange Sessions" } | |
| ], | |
| "hooks": [ | |
| { "name": "gateway:startup", "description": "Beim Gateway-Start. Logging, Init.", "canBlock": false }, | |
| { "name": "session:start", "description": "Bei neuer Session. Worktree-Setup.", "canBlock": false }, | |
| { "name": "agent:start", "description": "Vor erstem Agent-Turn.", "canBlock": false }, | |
| { "name": "session:reset", "description": "Bei Session-Reset. Cleanup.", "canBlock": false } | |
| ] | |
| }, | |
| "faq": [ | |
| { "q": "Session startet nicht", "a": "15s warten. Dann Enter druecken. Das ist normal — nicht abbrechen und neu starten." }, | |
| { "q": "Baut am falschen Ort", "a": "IMMER zuerst cd in Projektordner. Tasksheet muss Output-Pfad enthalten." }, | |
| { "q": "Output-Qualitaet mittel", "a": "Normal. Hermes ist funktional, nicht elegant. Polishing by Codex." }, | |
| { "q": "Keine Verhaltensregeln", "a": "SOUL.md ist leer. Fuer strukturierte Regeln: SOUL.md befuellen (kommt noch)." }, | |
| { "q": "Workflow mit Claude Code", "a": "Plan Mode in CC → Tasksheet schreiben → hermes chat → Summary → Codex Polishing." } | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "opencode", | |
| "name": "OpenCode", | |
| "tagline": "Schlankes Agentic Coding Tool", | |
| "status": "aktiv", | |
| "color": "green", | |
| "data_complete": true, | |
| "stats": [ | |
| { "label": "Sessions", "value": "50+" }, | |
| { "label": "Avg. Session", "value": "~15 min" }, | |
| { "label": "Modell", "value": "MiniMax / Claude Sonnet" } | |
| ], | |
| "strengths": [ | |
| "Multi-Provider: Anthropic, OpenAI, MiniMax ohne Lock-in", | |
| "One-Shot Mode für schnelle Pipelines", | |
| "Parallele Instanzen ohne Konflikte", | |
| "MCP native Support ohne JSON-Editierung", | |
| "Headless Server für API-Integration" | |
| ], | |
| "weaknesses": [ | |
| "Fragt NICHT nach — unvollständiges Briefing führt zu falschem Output", | |
| "Scope-Drift ohne explizites Scope-Statement", | |
| "Kein Session-Gedächtnis zwischen opencode run-Aufrufen", | |
| "Feedback-Reparatur schwach — Korrekturen werden bestätigt aber nicht integriert", | |
| "Keine Subagent-Orchestrierung" | |
| ], | |
| "architecture_link": "diagrams/architecture-opencode.html", | |
| "router_keywords": ["bugfix", "bug", "fix", "fehler", "debug", "isoliert", "schnell", "provider", "lsp"], | |
| "router_reason": "LSP Pre-fetch liefert Kontext bevor du fragst. Für isolierte Bugs ohne den Overhead von Claude Code.", | |
| "router_wave": "Wave 2 — Build (Alternative)", | |
| "tutorial": { | |
| "quickStart": [ | |
| "Starte mit: `opencode` (TUI) oder `opencode run \"prompt\"` (one-shot)", | |
| "Im Projektordner starten: `cd ~/Projekte/MeinProjekt`", | |
| "Erstes: `Lies ARCHITECTURE.md` — Was hat Claude Code geplant?", | |
| "Scope explizit machen: Output-Pfad + Umfang in einem Satz", | |
| "Bauen oder Reality-Check — one-shot für Drafts, TUI für komplexe Tasks", | |
| "Ergebnis dokumentieren — was wurde gebaut, was weggelassen, warum" | |
| ], | |
| "adhsPatterns": { | |
| "bodyDoubling": "TUI-Session fühlt sich wie Pair-Programming an. Offen lassen, nicht wegdiskutieren. Ich rede während du baust.", | |
| "dopaminTrigger": "Schneller Output in <30s. One-shot für immediate gratification — Draft wegwerfen ist billig, nicht frustrierend.", | |
| "antiParalysis": "Kurzes Briefing, schneller Re-Run. Billig = Experimentieren erlaubt. Lieber 2min laenger briefen als zweiten Run.", | |
| "sessionRhythm": "One-shots statt Marathon. Max 3 Runs pro Task, dann reflektieren. Nicht in Loop verlieren." | |
| }, | |
| "wellenmodus": { | |
| "role": "Reality-Check & Schnell-Builder", | |
| "entry": "Wenn Claude Code einen Plan hat und du schnelle Validierung brauchst", | |
| "exit": "Ergebnis an Hermes für Implementierung oder Bestätigung dass Plan stimmt" | |
| }, | |
| "handoff": { | |
| "toHermes": "Dateistruktur + validierten Plan. Kontext immer mitgeben.", | |
| "toCodex": "Refactor-Task mit Before/After-Beschreibung. Sandbox macht sicheres Bulk-Edit." | |
| }, | |
| "architektur": { | |
| "annotations": [ | |
| { "component": "opencode run", "description": "One-shot Execution ohne TUI. Für Pipelines und schnelle Drafts." }, | |
| { "component": "opencode serve", "description": "Headless HTTP-Server für API-Integration." }, | |
| { "component": "Multi-Provider", "description": "anthropic, openai, minimax. MiniMax ~150x billiger als Opus." }, | |
| { "component": "Plugins (TS)", "description": "TypeScript Hooks für Context-Injection. experimental.chat.system.transform." }, | |
| { "component": "MCP-Server", "description": "Native CLI-Verwaltung: opencode mcp add/remove/list." } | |
| ] | |
| }, | |
| "config": { | |
| "settingsKeys": [ | |
| { "key": "provider", "type": "object", "description": "API-Keys für Provider (anthropic, openai, minimax)" }, | |
| { "key": "model.default", "type": "string", "default": "anthropic/claude-sonnet-4-5", "description": "Default-Modell" }, | |
| { "key": "model.fast", "type": "string", "default": "anthropic/claude-haiku-4-5", "description": "Schnelles Modell für einfache Tasks" }, | |
| { "key": "permission", "type": "string", "default": "ask", "description": "ask | auto-edit | allow — für headless: allow" }, | |
| { "key": "mcp", "type": "object", "description": "MCP-Server Config (filesystem, github, etc.)" }, | |
| { "key": "experimental.chat.system.transform", "type": "string", "description": "Plugin-Path für Context-Injection" } | |
| ], | |
| "hooks": [ | |
| { "name": "system.transform", "description": "TypeScript-Hook für System-Prompt Modifikation. Injiziert CLAUDE.md-ähnliche Regeln.", "canBlock": false }, | |
| { "name": "postResponse", "description": "Nach Response — für Syntax-Check, Narration-Dispatch.", "canBlock": false }, | |
| { "name": "onError", "description": "Bei Error — Error-Pattern-Analyse und Kontext-Return.", "canBlock": false } | |
| ] | |
| }, | |
| "faq": [ | |
| { "q": "Session blockiert", "a": "ctrl+c zum Beenden. Bei headless: permission: allow in opencode.json setzen." }, | |
| { "q": "Baut das Falsche", "a": "Re-Run mit explizitem Scope. Nicht 'nochmal' sagen — genau beschreiben was ANDERS." }, | |
| { "q": "Kein Gedächtnis", "a": "Kontext immer mitgeben. Nichts voraussetzen. Jeder run startet blank." }, | |
| { "q": "Plugin funktioniert nicht", "a": "experimental.chat.system.transform in opencode.json prüfen. Pfad muss stimmen." }, | |
| { "q": "Dashboard statt Website", "a": "Immer explizit: 'Admin-Dashboard, nicht Landing Page. Keine Hero-Section.'" } | |
| ] | |
| } | |
| }, | |
| { | |
| "id": "codex-cli", | |
| "name": "Codex CLI", | |
| "tagline": "Verify-, Review- und Polishing-Harness fuer den letzten Meter", | |
| "status": "aktiv", | |
| "color": "amber", | |
| "data_complete": true, | |
| "stats": [ | |
| { "label": "Sessions", "value": "40+" }, | |
| { "label": "Avg. Session", "value": "~20 min" }, | |
| { "label": "Modell", "value": "gpt-5.4" } | |
| ], | |
| "strengths": [ | |
| "Saubere Scope-Begrenzung durch Sandbox + Approval-Policy", | |
| "Starker Review-Workflow mit `codex review`", | |
| "Rigorose Rueckfragen vor riskanten Implementierungen", | |
| "Terminal-nahe Edits, Refactors und Batch-Operationen", | |
| "Runbooks fuer Planning, Build, Inspect und Review" | |
| ], | |
| "weaknesses": [ | |
| "Langsamer Start wenn das Repo erst gelesen werden muss", | |
| "Kein Hook-System wie bei Claude Code", | |
| "Wenig Selbstkritik — Review und Tests weiter selbst einfordern", | |
| "Nicht der beste ROI fuer offene Exploration oder Research", | |
| "OpenAI-locked, kein Multi-Provider-Setup" | |
| ], | |
| "architecture_link": "diagrams/architecture-codex-cli.html", | |
| "router_keywords": ["test", "tests", "verif", "review", "polish", "polieren", "refactor", "rename", "bulk", "migrat", "sandbox", "batch", "aufräum", "cleanup", "quality", "stabil", "ship"], | |
| "router_reason": "Codex ist dein Finish-Harness: Sandbox und Approval halten den Scope eng, Rueckfragen reduzieren Fehlannahmen und `codex review` macht den letzten Qualitaetscheck.", | |
| "router_wave": "Wave 3 — Verify" | |
| , | |
| "tutorial": { | |
| "quickStart": [ | |
| "Starte interaktiv mit `codex` direkt im Projektordner wenn der Task noch Rueckfragen braucht", | |
| "Nutze `codex exec \"PROMPT\"` fuer klare Einzelaufgaben wie Type Hints, Refactors oder Tests", | |
| "Setze fuer sichere Alltagsarbeit `-s workspace-write -a on-request` oder den Shortcut `--full-auto`", | |
| "Verwende `codex review` vor jedem Ship-Kandidaten als Pflichtschritt, nicht als Bonus", | |
| "Wenn ein guter Zwischenstand existiert: `codex resume --last` fortsetzen oder `codex fork --last` fuer riskante Varianten" | |
| ], | |
| "adhsPatterns": { | |
| "bodyDoubling": "Codex ist weniger conversational als Claude Code, aber stark wenn der Auftrag klar gerahmt ist. Nutze ihn als ruhigen Co-Worker fuer den Finish-Pass: ein Ziel, ein Scope, ein sauberer Abschluss.", | |
| "dopaminTrigger": "Sichtbare Mini-Wins funktionieren gut: erst `codex review`, dann ein enger Fix, dann direkt Tests oder Smoke-Checks. Kurze, abgeschlossene Schleifen halten Momentum ohne Scope-Explosion.", | |
| "antiParalysis": "Wenn du festhaengst, nicht 'mach es besser' sagen. Gib Codex ein enges Paket: Datei, Ziel, Definition of Done und was explizit out of scope ist.", | |
| "sessionRhythm": "Codex nicht als Marathon-Session benutzen. Erst Planung oder Build woanders, dann 15 bis 25 Minuten Finish-Phase: Review, Polishing, Verifikation, Handoff." | |
| }, | |
| "wellenmodus": { | |
| "role": "Verifier & Finisher", | |
| "entry": "Wenn ein Feature bereits gebaut ist und jetzt Review, Polishing, Tests oder Scope-sichere Refactors anstehen", | |
| "exit": "Ship-Entscheidung mit Findings, offenen Punkten und konkreter Empfehlung an Samuel" | |
| }, | |
| "handoff": { | |
| "toHermes": "Wenn waehrend des Polishings klar wird dass neue Funktionalitaet fehlt oder ein groesserer Umbau noetig ist.", | |
| "toOpenCode": "Wenn ein isolierter Build-Task schneller als one-shot oder in parallelen kleinen Runs gebaut werden kann.", | |
| "toSamuel": "Review-Ergebnis, behobene Punkte, verbleibende Risiken und eine klare Ship-Empfehlung: JA oder NEIN." | |
| }, | |
| "architektur": { | |
| "annotations": [ | |
| { "component": "config.toml", "description": "Zentrale Steuerung fuer Modell, Reasoning, Trust-Level und Modell-Migrationen." }, | |
| { "component": "Runbooks", "description": "Vier Session-Typen strukturieren die Arbeit: build, planning, review und inspect." }, | |
| { "component": "Sandbox Mode", "description": "Bestimmt die Umgebung: read-only, workspace-write oder danger-full-access." }, | |
| { "component": "Approval Policy", "description": "Legt fest wann Rueckfragen kommen: untrusted, on-request, on-failure oder never." }, | |
| { "component": "codex review", "description": "Eingebauter Review-Modus fuer uncommitted Changes, Branch-Diffs oder einzelne Commits." } | |
| ] | |
| }, | |
| "config": { | |
| "settingsHeading": "Config / CLI Keys", | |
| "hooksHeading": "Runbooks", | |
| "settingsKeys": [ | |
| { "key": "model", "type": "string", "default": "gpt-5.4", "description": "Standardmodell fuer interaktive Sessions und exec-Runs" }, | |
| { "key": "model_reasoning_effort", "type": "string", "default": "medium", "description": "Reasoning-Tiefe: low, medium, high oder xhigh" }, | |
| { "key": "projects.<path>.trust_level", "type": "string", "default": "trusted", "description": "Projektbezogene Vertrauenseinstufung fuer Rechte und Verhalten" }, | |
| { "key": "notice.model_migrations", "type": "table", "description": "Leitet veraltete Modellnamen auf aktuelle Modelle um" }, | |
| { "key": "sandbox_mode", "type": "flag", "default": "workspace-write", "description": "Praktisch via CLI-Flag gesetzt: read-only, workspace-write oder danger-full-access" }, | |
| { "key": "approval_policy", "type": "flag", "default": "on-request", "description": "Praktisch via CLI-Flag gesetzt: untrusted, on-request, on-failure oder never" } | |
| ], | |
| "hooks": [ | |
| { "name": "planning.md", "description": "Runbook fuer unscharfe Ziele und Architekturarbeit. Erst artefaktfaehig machen, dann bauen.", "canBlock": false }, | |
| { "name": "build.md", "description": "Runbook fuer klar umrissene Implementierung mit stabilem Outcome.", "canBlock": false }, | |
| { "name": "inspect.md", "description": "Read-only Exploration zum Verstehen einer Codebase ohne Edits.", "canBlock": false }, | |
| { "name": "review.md", "description": "Qualitaets- und Regressionsfokus fuer Review-Paesse vor dem Ship.", "canBlock": false } | |
| ] | |
| }, | |
| "faq": [ | |
| { "q": "Warum stellt Codex so viele Rueckfragen?", "a": "Weil es Fehlannahmen vor dem Edit reduziert. Gerade bei Review-, Refactor- und Finish-Aufgaben spart das Re-Work." }, | |
| { "q": "Wann nutze ich `codex review`?", "a": "Immer vor einem Ship-Kandidaten und immer dann, wenn Codex selbst etwas veraendert hat. Review ist Pflichtschritt, nicht optional." }, | |
| { "q": "Welcher Sandbox-Modus ist alltagstauglich?", "a": "Meist `workspace-write` mit `on-request`. Fuer Analyse `read-only`, fuer riskante Vollautonomie nur in bekannten, stabilen Situationen mehr." }, | |
| { "q": "Wofuer ist Codex die falsche Wahl?", "a": "Offene Exploration, Research und grobe Produktentscheidungen. Dafuer erst Claude Code oder Hermes nutzen und Codex spaeter fuer Finish und Verify einsetzen." }, | |
| { "q": "Was wenn waehrend des Polishings neuer Scope auftaucht?", "a": "Nicht heimlich mitbauen. Findings dokumentieren und den Task zur passenden Build- oder Plan-Phase zurueckgeben." } | |
| ] | |
| } | |
| } | |
| ], | |
| "architecture_diagrams": [ | |
| { | |
| "name": "Claude Code", | |
| "link": "diagrams/architecture-claude-code.html", | |
| "description": "Hub-and-Spoke Architektur mit Sidecar-NG Integration" | |
| }, | |
| { | |
| "name": "Hermes", | |
| "link": "diagrams/architecture-hermes.html", | |
| "description": "Multi-Provider Gateway mit SOUL.md und Personality-System" | |
| }, | |
| { | |
| "name": "Codex CLI", | |
| "link": "diagrams/architecture-codex-cli.html", | |
| "description": "Terminal-native Pipeline mit Sandbox-Execution" | |
| }, | |
| { | |
| "name": "OpenCode", | |
| "link": "diagrams/architecture-opencode.html", | |
| "description": "Modulares Open-Source Coding Agent Framework" | |
| } | |
| ], | |
| "laws": [ | |
| { | |
| "number": 1, | |
| "title": "Kontext ist alles", | |
| "text": "Ohne sauberen Kontext liefert jedes Modell Mittelwert-Output. CLAUDE.md, Sidecar und Skill-Injektion sind keine Extras — sie sind der Job.", | |
| "beweis": "Sessions ohne Sidecar produzieren messbar mehr Korrekturen", | |
| "color": "teal" | |
| }, | |
| { | |
| "number": 2, | |
| "title": "Verifikation vor Commit", | |
| "text": "Code Review allein zaehlt nicht. Tests laufen oder es ist nicht fertig.", | |
| "beweis": "Jeder 'fast fertig'-Commit ohne Tests hat Folge-Fixes erzeugt", | |
| "color": "green" | |
| }, | |
| { | |
| "number": 3, | |
| "title": "Atomare Commits", | |
| "text": "Eine logische Aenderung pro Commit. Was nicht in einen Satz passt, gehoert in zwei Commits.", | |
| "beweis": "Grosse Commits blockieren Rollbacks und verwischen Kausalitaet", | |
| "color": "gold" | |
| }, | |
| { | |
| "number": 4, | |
| "title": "Fragen ist schneller als Irren", | |
| "text": "Wenn der Agent unsicher ist, fragt er. Eine Rueckfrage kostet 10 Sekunden. Falsches Abbiegen kostet 10 Minuten.", | |
| "beweis": "Sidecar Intent-First-Regel reduziert Out-of-Scope-Aenderungen", | |
| "color": "teal" | |
| }, | |
| { | |
| "number": 5, | |
| "title": "Parallelitaet beats Sequenz", | |
| "text": "Unabhaengige Tasks werden gleichzeitig ausgefuehrt. Subagents sind die Einheit, nicht Prompts.", | |
| "beweis": "Parallele Subagent-Runs reduzieren Gesamtzeit um ~60%", | |
| "color": "amber" | |
| }, | |
| { | |
| "number": 6, | |
| "title": "Scope-Disziplin", | |
| "text": "Was nicht explizit beauftragt ist, wird nicht gemacht. Keine spontanen Refactors, keine Erweiterungen.", | |
| "beweis": "Scope-Creep ist die haeufigste Ursache fuer lange Review-Zyklen", | |
| "color": "red" | |
| }, | |
| { | |
| "number": 7, | |
| "title": "Exploration Budget", | |
| "text": "Ein fehlgeschlagener Ansatz, dann Stop und fragen. Nicht automatisch Ansatz 2 probieren.", | |
| "beweis": "Zweiter autonomer Ansatz loest das Problem selten, kostet aber immer Context", | |
| "color": "amber" | |
| }, | |
| { | |
| "number": 8, | |
| "title": "Stabilisierung vor Neubau", | |
| "text": "Bugs werden als Patches geloest, nicht als Rewrites. Backlog schlaegt Goldplating.", | |
| "beweis": "Rewrites ohne Testbaseline reproducieren 40% der alten Bugs", | |
| "color": "gold" | |
| }, | |
| { | |
| "number": 9, | |
| "title": "Deutsche Kommunikation, englische Commits", | |
| "text": "Conventional Commits auf Englisch. Alles andere in der Sprache des Kontexts.", | |
| "beweis": "Konsistenz in Commit-History erleichtert Changelog-Generierung", | |
| "color": "muted" | |
| }, | |
| { | |
| "number": 10, | |
| "title": "Evidence vor Bauchgefuehl", | |
| "text": "Kein Feature, keine Entscheidung ohne Datenbasis. Evals, Logs, Tests — nicht Intuition.", | |
| "beweis": "Sidecar-NG Accuracy-Messungen zeigten kontra-intuitive Ergebnisse mehrfach", | |
| "color": "teal" | |
| } | |
| ], | |
| "anti_patterns": [ | |
| { | |
| "name": "Ambiguous Target", | |
| "description": "Task starten ohne zu klaeren welches Projekt, welche Komponente, welches Konzept gemeint ist.", | |
| "folge": "30 Minuten Arbeit in die falsche Richtung", | |
| "severity": "hoch" | |
| }, | |
| { | |
| "name": "Blind Agent Trust", | |
| "description": "Subagent-Output nicht verifizieren und direkt als erledigt markieren.", | |
| "folge": "Stille Regressionen, die erst Tage spaeter auffallen", | |
| "severity": "kritisch" | |
| }, | |
| { | |
| "name": "Big Bang Commit", | |
| "description": "Alles in einem Commit, weil 'gehoert zusammen'.", | |
| "folge": "Unkontrollierbarer Rollback, verlorene Kausalitaet", | |
| "severity": "hoch" | |
| }, | |
| { | |
| "name": "Config-Halluzination", | |
| "description": "Keys in Konfigurationsdateien schreiben die dort nicht existieren.", | |
| "folge": "Stille Fehler oder Runtime-Crashes", | |
| "severity": "hoch" | |
| }, | |
| { | |
| "name": "Scope Creep", | |
| "description": "Waehrend X implementieren auch Y und Z refactoren weil man gerade dabei ist.", | |
| "folge": "Review-Aufwand verdoppelt, Rollback unmoeglich", | |
| "severity": "mittel" | |
| }, | |
| { | |
| "name": "Guessing without Asking", | |
| "description": "Bei Unklarheit raten statt eine Rueckfrage zu stellen.", | |
| "folge": "Meistens falsche Richtung, immer Zeitverlust", | |
| "severity": "hoch" | |
| }, | |
| { | |
| "name": "Retry Loop ohne Diagnose", | |
| "description": "Nach fehlgeschlagenem Test denselben Ansatz nochmal versuchen.", | |
| "folge": "Exponentiell steigende Context-Kosten, gleiche Fehler", | |
| "severity": "mittel" | |
| }, | |
| { | |
| "name": "Commit ohne Tests", | |
| "description": "Commit-Vorschlag ohne eigene Verifikation dass Tests gruen sind.", | |
| "folge": "Samuel gibt Freigabe auf der Basis falscher Annahmen", | |
| "severity": "kritisch" | |
| } | |
| ], | |
| "wave_mode": { | |
| "kicker": "So arbeite ich", | |
| "heading": "Wellenmodus", | |
| "description": "Jede produktive Session folgt dem gleichen Muster: Scout, Build, Verify — mit klaren Convergence-Checkpoints.", | |
| "phases": [ | |
| { | |
| "id": "scout", | |
| "name": "Scout", | |
| "description": "Kontext aufbauen. Ziel klaeren. Ambiguitaeten eliminieren bevor Code geschrieben wird.", | |
| "steps": ["git status pruefen", "Relevante Dateien lesen", "Ziel mit Samuel abgleichen", "Teilaufgaben identifizieren"], | |
| "color": "teal" | |
| }, | |
| { | |
| "id": "build", | |
| "name": "Build", | |
| "description": "Parallele Subagents fuer unabhaengige Tasks. Atomare Aenderungen. Scope-Disziplin.", | |
| "steps": ["Subagents spawnen fuer parallele Arbeit", "Jede Aenderung atomar halten", "Scope nicht erweitern", "Fehler sofort eskalieren"], | |
| "color": "gold" | |
| }, | |
| { | |
| "id": "verify", | |
| "name": "Verify", | |
| "description": "Tests ausfuehren. Output verifizieren. Commit erst nach gruenem Signal.", | |
| "steps": ["pytest / smoke-tests laufen", "Agent-Output selbst pruefen", "Commit-Gate: Samuel entscheidet", "Ergebnis dokumentieren"], | |
| "color": "green" | |
| } | |
| ], | |
| "checkpoints": [ | |
| "Nach Scout: Ziel ist schriftlich klar", | |
| "Nach Build: Tests existieren fuer jede Aenderung", | |
| "Nach Verify: Samuels Commit-Freigabe" | |
| ] | |
| }, | |
| "costs": { | |
| "kicker": "Was kostet was", | |
| "heading": "Kostenvergleich", | |
| "harnesses": [ | |
| { | |
| "name": "Claude Code", | |
| "model": "claude-opus-4-6", | |
| "cost_per_session": "~$0.80-3.00", | |
| "cost_relative": 100, | |
| "billing": "Token-basiert", | |
| "notes": "Hoechste Qualitaet, hoechste Kosten. Subagents multiplizieren." | |
| }, | |
| { | |
| "name": "Hermes", | |
| "model": "TBD", | |
| "cost_per_session": "TBD", | |
| "cost_relative": 0, | |
| "billing": "TBD", | |
| "notes": "Daten nach Bootcamp verfuegbar" | |
| }, | |
| { | |
| "name": "OpenCode", | |
| "model": "Konfigurierbar", | |
| "cost_per_session": "Modell-abhaengig", | |
| "cost_relative": 60, | |
| "billing": "Token-basiert via Provider", | |
| "notes": "Open-Source, Kosten haengen vom konfigurierten Modell ab" | |
| }, | |
| { | |
| "name": "Codex CLI", | |
| "model": "gpt-5.4", | |
| "cost_per_session": "~$0.20-0.60", | |
| "cost_relative": 25, | |
| "billing": "Token-basiert (OpenAI)", | |
| "notes": "Mittelpreisig, aber stark fuer Review, Polishing und verifizierte Terminal-Tasks" | |
| } | |
| ] | |
| } | |
| } | |