[{"data":1,"prerenderedAt":3091},["ShallowReactive",2],{"featured":3,"recent":382},{"id":4,"title":5,"author":6,"body":7,"category":365,"date":366,"description":367,"extension":368,"featured":369,"image":370,"meta":371,"navigation":369,"path":372,"seo":373,"stem":374,"tags":375,"__hash__":381},"blog/blog/ai/2026-05-18-browser-harness-self-healing-agents.md","Browser Harness: Wenn der Agent seinen eigenen Browser-Treiber schreibt","Wilson",{"type":8,"value":9,"toc":357},"minimark",[10,14,18,40,46,51,58,61,98,101,105,108,158,165,168,178,188,191,225,232,236,239,247,254,269,273,276,282,288,302,305,309,312,332,335,339,342,345,348,353],[11,12,5],"h1",{"id":13},"browser-harness-wenn-der-agent-seinen-eigenen-browser-treiber-schreibt",[15,16,17],"p",{},"Wer schon einmal einen Agenten gebaut hat, der „einfach mal kurz\" eine Webseite bedienen soll, kennt das Drama: Selektoren, die nach dem nächsten Deploy verschwinden. Playwright-Wrapper, die für 80 % der Seiten funktionieren – und ausgerechnet bei der Seite scheitern, die der Kunde gerade braucht. Captchas, Iframes, Shadow-DOM, Single-Page-Apps, die ihre Knöpfe per JavaScript an unerwarteten Stellen rendern.",[15,19,20,21,31,32,39],{},"Browser Use, eines der bekanntesten Projekte für browserbasierte AI-Agenten, legt jetzt einen Gegenentwurf vor, der bewusst mit den bisherigen Frameworks bricht: ",[22,23,24],"strong",{},[25,26,30],"a",{"href":27,"rel":28},"https://github.com/browser-use/browser-harness",[29],"nofollow","Browser Harness"," – ein „self-healing harness\" für Browser-Agenten, mit zugehöriger Landing-Page unter ",[22,33,34],{},[25,35,38],{"href":36,"rel":37},"https://www.browser-harness.com",[29],"browser-harness.com",".",[15,41,42,43],{},"Die zentrale Idee in einem Satz: ",[22,44,45],{},"Statt dem Agenten Werkzeuge zu geben, gibt man ihm einen sehr dünnen, editierbaren Werkzeugkasten – und lässt ihn die fehlenden Werkzeuge selbst schreiben, während er arbeitet.",[47,48,50],"h2",{"id":49},"was-ist-daran-neu","Was ist daran neu?",[15,52,53,54,57],{},"Bisherige Stacks für Browser-Automatisierung haben eines gemeinsam: sie sind ",[22,55,56],{},"aufgebläht",". Playwright, Puppeteer und ihre Agent-Wrapper schleppen tausende Zeilen Code für Selektor-Engines, Retry-Logik, Session-Management, DOM-Snapshots und Click-Heuristiken mit sich herum. Das hilft, solange die Welt sich genau so verhält, wie sich der Framework-Autor das vorgestellt hat. Sobald das nicht mehr der Fall ist, kämpft der Agent gegen die Abstraktion an, statt mit ihr.",[15,59,60],{},"Browser Harness dreht das um:",[62,63,64,71,77,88],"ul",{},[65,66,67,70],"li",{},[22,68,69],{},"Eine einzige WebSocket-Verbindung zu Chrome über das Chrome DevTools Protocol (CDP)"," – nichts dazwischen.",[65,72,73,76],{},[22,74,75],{},"~1.000 Zeilen Code, verteilt auf vier Kerndateien."," Das ist kein Tippfehler. Der gesamte Harness ist klein genug, dass ein Modell ihn in einem einzigen Kontextfenster überblickt.",[65,78,79,82,83,87],{},[22,80,81],{},"Der Agent editiert seine eigenen Helfer."," In ",[84,85,86],"code",{},"agent-workspace/agent_helpers.py"," legt er zur Laufzeit neue Funktionen ab, sobald er merkt, dass eine fehlt. Diese Helfer bleiben für den nächsten Lauf erhalten – der Harness wird mit jedem Task ein bisschen mächtiger.",[65,89,90,93,94,97],{},[22,91,92],{},"Domain-Skills als Community-Playbooks."," Unter ",[84,95,96],{},"agent-workspace/domain-skills/\u003Csite>/"," sammeln sich pro Domain stabile Selektoren, API-Tricks und Edge-Cases – nicht von Menschen geschrieben, sondern vom Agenten selbst gefunden und per PR beigesteuert.",[15,99,100],{},"Das ist die titelgebende „Selbstheilung\": Wenn ein Schritt scheitert, schreibt der Agent den fehlenden Helper, führt ihn aus, und das nächste Mal ist er bereits da. Aus dem klassischen Bild „Werkzeug + Agent\" wird ein lebendes System, das mit Nutzung wächst.",[47,102,104],{"id":103},"wie-sieht-das-in-der-praxis-aus","Wie sieht das in der Praxis aus?",[15,106,107],{},"Die Aufrufkonvention ist absichtlich primitiv – ein Heredoc voll Python an ein CLI:",[109,110,115],"pre",{"className":111,"code":112,"language":113,"meta":114,"style":114},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","browser-harness \u003C\u003C'PY'\nnew_tab(\"https://docs.browser-use.com\")\nwait_for_load()\nprint(page_info())\nPY\n","bash","",[84,116,117,133,140,146,152],{"__ignoreMap":114},[118,119,122,126,130],"span",{"class":120,"line":121},"line",1,[118,123,125],{"class":124},"sBMFI","browser-harness",[118,127,129],{"class":128},"sMK4o"," \u003C\u003C",[118,131,132],{"class":128},"'PY'\n",[118,134,136],{"class":120,"line":135},2,[118,137,139],{"class":138},"sfazB","new_tab(\"https://docs.browser-use.com\")\n",[118,141,143],{"class":120,"line":142},3,[118,144,145],{"class":138},"wait_for_load()\n",[118,147,149],{"class":120,"line":148},4,[118,150,151],{"class":138},"print(page_info())\n",[118,153,155],{"class":120,"line":154},5,[118,156,157],{"class":128},"PY\n",[15,159,160,161,164],{},"Keine Subcommands, kein argparse, kein „Session-Manager\", keine Konfigurationspipeline. ",[84,162,163],{},"run.py"," startet den Daemon, führt den Python-Block aus, fertig. Wer Browser-Wrapper aus dem Playwright-Universum gewohnt ist, sucht hier instinktiv nach Vertrautem – und genau das ist der Punkt.",[15,166,167],{},"Der vom Projekt empfohlene Interaktionsstil ist ebenso minimalistisch:",[169,170,171],"blockquote",{},[15,172,173,174,177],{},"Screenshot machen → Pixel ablesen → ",[84,175,176],{},"click_at_xy(x, y)"," → Screenshot zur Verifikation.",[15,179,180,181,187],{},"Statt sich durch CSS- oder XPath-Selektoren zu kämpfen, nutzt der Agent ",[22,182,183,184],{},"Koordinaten-Clicks via ",[84,185,186],{},"Input.dispatchMouseEvent",". Das geht durch Iframes, Shadow DOM und Cross-Origin-Grenzen einfach hindurch, weil Chrome das im Compositor auflöst – nicht im DOM. Selektoren werden zur Ausnahme, nicht zur Regel.",[15,189,190],{},"Was bekomme ich aus der Box?",[62,192,193,203,209,215],{},[65,194,195,198,199,202],{},[22,196,197],{},"Lokaler Modus:"," Der Agent verbindet sich mit dem schon laufenden Chrome des Users (Stichwort ",[84,200,201],{},"chrome://inspect/#remote-debugging","). Keine eigenen Browser-Launches, keine Session, die parallel zur echten des Users läuft.",[65,204,205,208],{},[22,206,207],{},"Stealth-Browser in der Cloud"," über Browser Use Cloud – inkl. Proxies und Captcha-Solving, mit kostenfreiem Tier (3 parallele Browser).",[65,210,211,214],{},[22,212,213],{},"24/7-Deployments"," auf einer „Browser Use Box\".",[65,216,217,220,221,224],{},[22,218,219],{},"Sub-Agenten:"," jeder bekommt seinen eigenen isolierten Browser (",[84,222,223],{},"BU_NAME","), parallel ausführbar.",[15,226,227,228,231],{},"Setup-Aufwand für Nutzer:innen: ein einziger Prompt an Claude Code oder Codex, „lies ",[84,229,230],{},"install.md"," und folge den Schritten\" – der Agent installiert sich quasi selbst.",[47,233,235],{"id":234},"warum-die-architektur-klein-bleibt-und-warum-das-wichtig-ist","Warum die Architektur klein bleibt – und warum das wichtig ist",[15,237,238],{},"In der README finden sich Design-Constraints, die fast schon den Tonfall eines Manifests haben:",[169,240,241],{},[15,242,243],{},[244,245,246],"em",{},"Don't add a manager layer. No retries framework, session manager, daemon supervisor, config system, or logging framework.",[15,248,249,250,253],{},"Das ist keine Faulheit, das ist eine These: ",[22,251,252],{},"Je mehr Logik der Harness selbst übernimmt, desto weniger kann der Agent verstehen, was schiefläuft, und desto schwerer kann er korrigieren."," Eine fette Abstraktion versteckt die Wahrheit der Maschine vor dem Modell. Ein dünner Harness lässt das Modell direkt mit dem Browser verhandeln – und gibt ihm einen Workspace, in dem es seine Erkenntnisse ablegen kann.",[15,255,256,257,262,263,268],{},"Das passt zu einer These, die das Browser-Use-Team gerade systematisch ausformuliert – siehe ihre Posts ",[25,258,261],{"href":259,"rel":260},"https://browser-use.com/posts/bitter-lesson-agent-harnesses",[29],"„The Bitter Lesson of Agent Harnesses\""," und ",[25,264,267],{"href":265,"rel":266},"https://browser-use.com/posts/web-agents-that-actually-learn",[29],"„Web Agents That Actually Learn\"",": Frameworks, die das Modell „smart\" zu machen versuchen, indem sie ihm Entscheidungen abnehmen, altern schlecht. Frameworks, die dem Modell rohen Zugang und einen Platz zum Lernen geben, altern gut.",[47,270,272],{"id":271},"die-vorteile-jetzt-und-in-zukunft","Die Vorteile – jetzt und in Zukunft",[15,274,275],{},"Drei Stränge, warum dieses Projekt mehr ist als nur „noch ein Automation-Tool\":",[15,277,278,281],{},[22,279,280],{},"1. Robust gegen Layout-Änderungen."," Koordinaten-Clicks und runtime-generierte Helfer überleben Frontend-Refactors deutlich besser als hartkodierte Selektoren. Wenn doch etwas bricht, wird der Fix Teil des Skills für die nächste Runde.",[15,283,284,287],{},[22,285,286],{},"2. Skaliert mit Modell-Fähigkeit, nicht mit Framework-Code."," Je besser die zugrundeliegenden LLMs werden, desto kompetenter wird der Harness automatisch – ohne dass jemand eine neue Abstraktion in die Codebase schreiben muss. Klassische Wrapper profitieren genau umgekehrt: jede Modellverbesserung legt eine weitere Schicht ihres Overheads frei.",[15,289,290,293,294,297,298,301],{},[22,291,292],{},"3. Wissen kumuliert öffentlich."," Die ",[84,295,296],{},"domain-skills/","-Sammlung ist der vielleicht spannendste Teil. Wenn ein Agent für LinkedIn-Outreach, Amazon-Bestellungen oder Expense-Filing einmal die zuverlässigen Pfade gefunden hat, landen die als PR im Repo und stehen allen zur Verfügung. Das ist im Kern ",[22,299,300],{},"ein versioniertes, kollaboratives Gedächtnis für das Web",", geschrieben von Agenten, kuratiert von Menschen.",[15,303,304],{},"Für Indie Hacker, Solo-Founder und kleine Teams bedeutet das: Browser-Automatisierung wird von einer Spezialdisziplin zu etwas, das man am Abend nebenbei aufsetzt – mit der berechtigten Hoffnung, dass es Wochen später noch funktioniert.",[47,306,308],{"id":307},"wo-ich-vorsichtig-wäre","Wo ich vorsichtig wäre",[15,310,311],{},"Der ehrliche Teil: Ein selbstheilender Harness, der Python-Code schreibt und ausführt, ist genau so mächtig und genau so gefährlich, wie es klingt.",[62,313,314,320,326],{},[65,315,316,319],{},[22,317,318],{},"Code-Ausführung im Workspace"," ist explizit Teil des Designs – nicht etwas, was man „abschalten\" sollte, ohne die Idee zu verlieren. Sandboxing wird zur Verantwortung des Nutzers.",[65,321,322,325],{},[22,323,324],{},"Auth ist explizit ausgeschlossen."," Das Projekt sagt offen: Wenn der Agent vor einer Login-Wand steht, soll er stoppen und nachfragen, nicht Credentials aus Screenshots eintippen. Das ist die richtige Default-Haltung, verschiebt aber das Secret-Management auf die Aufrufer-Seite.",[65,327,328,331],{},[22,329,330],{},"Domain-Skills sind öffentlich."," Wer per PR beiträgt, sollte sich daran erinnern: keine Pixel-Koordinaten, keine Secrets, keine Task-Narration – nur die dauerhafte Struktur der Seite.",[15,333,334],{},"Nichts davon ist ein Showstopper, aber alles davon ist ein Stück Disziplin, das man als Team etablieren sollte, bevor man Browser Harness in produktive Workflows einbaut.",[47,336,338],{"id":337},"warum-das-wichtig-ist","Warum das wichtig ist",[15,340,341],{},"Browser-Agenten sind eine der wenigen Stellen, an denen LLMs auf eine Welt treffen, die sich nicht um sie schert. Webseiten ändern sich, ohne dem Agenten Bescheid zu sagen. Frameworks, die diesen Konflikt durch zusätzliche Schichten lösen wollen, häufen Tech-Debt an, der mit jedem neuen Modell-Release veraltet.",[15,343,344],{},"Browser Harness wählt den entgegengesetzten Weg: weniger Code, mehr Modell, ein offener Workspace zum Lernen. Das ist nicht der einzige denkbare Ansatz – aber er ist konsequent, MIT-lizenziert, und ab heute öffentlich. Für alle, die Agenten bauen, die nicht nur in Demos funktionieren, sondern auch in der zweiten Woche noch, lohnt sich ein langer Blick darauf.",[15,346,347],{},"Ein WebSocket. Kein Wrapper. Ein Agent, der seine Werkzeuge selbst schmiedet.",[15,349,350],{},[22,351,352],{},"Damit kommt man erstaunlich weit.",[354,355,356],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":114,"searchDepth":135,"depth":142,"links":358},[359,360,361,362,363,364],{"id":49,"depth":135,"text":50},{"id":103,"depth":135,"text":104},{"id":234,"depth":135,"text":235},{"id":271,"depth":135,"text":272},{"id":307,"depth":135,"text":308},{"id":337,"depth":135,"text":338},"ai","2026-05-18T00:00:00.000Z","Browser Use legt mit Browser Harness einen radikal dünnen, selbstheilenden CDP-Harness vor – ein Open-Source-Werkzeug, das LLM-Agenten dort hinbringt, wo Playwright-Wrapper an ihre Grenzen stoßen.","md",true,"images/browser-harness-self-healing-agents.svg",{},"/blog/ai/2026-05-18-browser-harness-self-healing-agents",{"title":5,"description":367},"blog/ai/2026-05-18-browser-harness-self-healing-agents",[376,377,378,379,380],"browser-use","browser-automation","ai-agents","cdp","open-source","IXryswt5EgZXoqg_QP_4cjDCJFYAv1srrwYchspgi8c",[383,552,870,1087,1369,1783],{"id":384,"title":385,"author":6,"body":386,"category":365,"date":538,"description":539,"extension":368,"featured":540,"image":541,"meta":542,"navigation":369,"path":543,"seo":544,"stem":545,"tags":546,"__hash__":551},"blog/blog/vibe-coding/2026-03-04-cmux-ai-terminal-revolution.md","CMUX: Das Terminal, in dem KI-Agenten die Regie übernehmen",{"type":8,"value":387,"toc":531},[388,391,406,410,421,436,439,443,450,457,461,472,479,482,486,496,517,521,528],[11,389,385],{"id":390},"cmux-das-terminal-in-dem-ki-agenten-die-regie-übernehmen",[15,392,393,394,399,400,405],{},"Wer heute mit KI-Agenten wie ",[25,395,398],{"href":396,"rel":397},"https://claude.com/product/claude-code",[29],"Claude Code"," arbeitet, stößt schnell an die Grenzen herkömmlicher Terminals. Ein Agent kann Code schreiben, Tests ausführen und Logs analysieren – aber er kann sein Arbeitsumfeld nicht selbst organisieren. ",[25,401,404],{"href":402,"rel":403},"https://www.cmux.dev",[29],"CMUX"," ändert das grundlegend: Es ist ein Terminal, das speziell für multitasking-fähige, agentische Workflows gebaut wurde und den Agenten zum aktiven Mitgestalter der Arbeitsumgebung macht.",[47,407,409],{"id":408},"agentengesteuerte-terminal-kontrolle","Agentengesteuerte Terminal-Kontrolle",[15,411,412,413,416,417,420],{},"Der zentrale Unterschied zu klassischen Terminals: KI-Agenten können ",[25,414,404],{"href":402,"rel":415},[29]," aktiv steuern. Über eine CLI und eine Socket-API (Unix-Sockets) hat ein Agent wie ",[25,418,398],{"href":396,"rel":419},[29]," direkten Zugriff auf die Terminal-Oberfläche.",[15,422,423,424,427,428,431,432,435],{},"Konkret bedeutet das: Ein Agent kann ",[22,425,426],{},"Split-Panes erstellen"," – neue vertikale oder horizontale Bereiche öffnen, um Aufgaben parallel zu bearbeiten. Er kann ",[22,429,430],{},"Sub-Agenten delegieren",", also Instanzen von sich selbst in neuen Panes starten, ihnen spezifische Aufgaben zuweisen (Code-Analyse in Pane 1, Projektverständnis in Pane 2) und die Ergebnisse zentral zusammenführen. Und er kann ",[22,433,434],{},"Tabs verwalten"," – umbenennen oder schließen, sobald eine Aufgabe erledigt ist.",[15,437,438],{},"Das klingt nach einem Detail, verändert aber die Dynamik komplett. Statt sequentiell eine Aufgabe nach der anderen abzuarbeiten, orchestriert der Agent seine eigene Arbeitsumgebung.",[47,440,442],{"id":441},"integrierter-skriptfähiger-browser","Integrierter, skriptfähiger Browser",[15,444,445,446,449],{},"CMUX bringt einen In-App-Browser (WebKit) mit, der direkt neben dem Terminal in einem Split-Pane läuft. Das ist mehr als ein eingebetteter Webview – Agenten können den Browser ",[22,447,448],{},"per Befehl steuern",": Google-Suchen durchführen, auf Links klicken, Webseiten debuggen.",[15,451,452,453,456],{},"Der Vorteil für Entwickler: ",[22,454,455],{},"Echtzeit-Feedback",". Man kann zusehen, wie der Agent durch den Browser navigiert, Tests auf einer Staging-Umgebung durchführt und die Ergebnisse direkt im Terminal verarbeitet. Kein Tab-Wechsel, kein Copy-Paste zwischen Fenstern – alles passiert in einem zusammenhängenden Workspace.",[47,458,460],{"id":459},"intelligentes-benachrichtigungssystem","Intelligentes Benachrichtigungssystem",[15,462,463,464,467,468,471],{},"Bei parallelen Prozessen verliert man schnell den Überblick. ",[25,465,404],{"href":402,"rel":466},[29]," löst das mit sogenannten ",[22,469,470],{},"Notification Rings"," – visuellen Signalen, die gezielt die Aufmerksamkeit steuern.",[15,473,474,475,478],{},"Wenn ein Agent in einem Hintergrund-Pane Hilfe benötigt oder eine Aufgabe abgeschlossen hat, kann er einen ",[22,476,477],{},"Trigger Flash"," auslösen – einen blau blinkenden Rahmen um das betreffende Pane. Zusätzlich erscheinen Benachrichtigungen in der Seitenleiste. Die vertikalen Tabs zeigen kontextuelle Informationen wie Git-Branches, aktive Ports und den Fortschritt laufender Agenten direkt an.",[15,480,481],{},"Das Ergebnis: Man muss nicht mehr aktiv zwischen Panes hin- und herwechseln, um den Status zu prüfen. Das Terminal meldet sich, wenn es etwas zu tun gibt.",[47,483,485],{"id":484},"native-performance-und-erweiterbarkeit","Native Performance und Erweiterbarkeit",[15,487,488,491,492,495],{},[25,489,404],{"href":402,"rel":490},[29]," ist eine ",[22,493,494],{},"native macOS-App",", gebaut auf Swift und AppKit. Für das Terminal-Rendering nutzt es die GPU-beschleunigte Engine von Ghostty (libghostty) – was sich in extrem schneller Darstellung und niedrigem Speicherverbrauch bemerkbar macht.",[15,497,498,499,502,503,506,507,510,511,516],{},"Besonders relevant für Teams: ",[25,500,404],{"href":402,"rel":501},[29]," funktioniert mit ",[22,504,505],{},"jedem CLI-basierten Agenten"," – ",[25,508,398],{"href":396,"rel":509},[29],", Aider, ",[25,512,515],{"href":513,"rel":514},"https://opencode.ai",[29],"OpenCode",", Cursor Agent – ohne zusätzliche Konfiguration. Man muss sich nicht auf ein Ökosystem festlegen.",[47,518,520],{"id":519},"vom-werkzeug-zum-mitgestalter","Vom Werkzeug zum Mitgestalter",[15,522,523,524,527],{},"Der eigentliche Paradigmenwechsel: ",[25,525,404],{"href":402,"rel":526},[29]," macht den KI-Agenten vom passiven Werkzeug zum aktiven Mitgestalter der Arbeitsumgebung. Er kann komplexe Aufgaben parallel ausführen, seine eigene Oberfläche organisieren und dem Entwickler visuelles Echtzeit-Feedback geben.",[15,529,530],{},"Für Entwickler, die bereits intensiv mit KI-Agenten arbeiten, ist das der logische nächste Schritt – weg vom einzelnen Chat-Fenster, hin zu einem orchestrierten, multitasking-fähigen Workspace.",{"title":114,"searchDepth":135,"depth":142,"links":532},[533,534,535,536,537],{"id":408,"depth":135,"text":409},{"id":441,"depth":135,"text":442},{"id":459,"depth":135,"text":460},{"id":484,"depth":135,"text":485},{"id":519,"depth":135,"text":520},"2026-03-04T00:00:00.000Z","CMUX gibt KI-Agenten wie Claude Code die volle Kontrolle über das Terminal – mit Split-Panes, integriertem Browser und intelligentem Benachrichtigungssystem für parallele Workflows.",false,"images/cmux-ai-terminal-revolution.svg",{},"/blog/vibe-coding/2026-03-04-cmux-ai-terminal-revolution",{"title":385,"description":539},"blog/vibe-coding/2026-03-04-cmux-ai-terminal-revolution",[547,548,378,549,550],"cmux","terminal","claude-code","developer-tools","-Txg4w0YyXqo0CibkvUL5FfEhWkaDP2M6wEsI4FELTM",{"id":553,"title":554,"author":6,"body":555,"category":854,"date":855,"description":856,"extension":368,"featured":540,"image":857,"meta":858,"navigation":369,"path":859,"seo":860,"stem":861,"tags":862,"__hash__":869},"blog/blog/finance/2026-03-01-msci-world-ex-usa-entklumpung.md","MSCI World ex USA: Die einfache Lösung gegen Depot-Klumpung",{"type":8,"value":556,"toc":843},[557,560,563,567,570,576,582,588,592,599,606,610,615,618,622,625,639,642,646,649,654,665,670,778,782,788,794,805,811,822,825,829,832,835,838],[11,558,554],{"id":559},"msci-world-ex-usa-die-einfache-lösung-gegen-depot-klumpung",[15,561,562],{},"Der MSCI World Index gilt vielen Anlegern als die Standardlösung für weltweite Aktienanlagen. Doch unter der Oberfläche brodelt ein Problem, das immer mehr Investoren beschäftigt: Das Depot klumpt. Mit über 72% USA-Anteil und mehr als 24% auf nur sieben Tech-Giganten konzentriert, entfernt sich der beliebte Index immer weiter von einer tatsächlich breiten Streuung.",[47,564,566],{"id":565},"das-klumpenproblem","Das Klumpenproblem",[15,568,569],{},"Der MSCI World Index ist ein praktisches Produkt – kostengünstig, liquide und überall verfügbar. Doch die Realität seiner Zusammensetzung weicht erheblich vom Namen ab:",[15,571,572,575],{},[22,573,574],{},"USA-Übergewichtung:"," Stand Anfang 2026 sind rund 72% des Index in US-amerikanische Aktien investiert. Vor zehn Jahren waren es noch 55%, vor 15 Jahren deutlich unter 50%. Was als weltweite Anlage gedacht war, ist faktisch zu einer USA-Wette geworden.",[15,577,578,581],{},[22,579,580],{},"Die Magnificent Seven:"," Allein sieben US-Tech-Unternehmen – Alphabet, Amazon, Apple, Meta, Microsoft, Nvidia und Tesla – machen über 24% des Index aus. Das ist mehr als die gesamte Eurozone (ca. 12%) und das Vereinigte Königreich (ca. 4%) zusammen.",[15,583,584,587],{},[22,585,586],{},"Keine Schwellenländer:"," Trotz des Namens \"World\" fehlen Emerging Markets komplett. China mit rund 18% des Welt-BSP, Indien mit 3,5% – keine Spur davon im Index.",[47,589,591],{"id":590},"warum-das-problematisch-ist","Warum das problematisch ist",[15,593,594,595,598],{},"In der Kapitalmarkttheorie gibt es einen einfachen Grundsatz: Für zusätzliches Risiko sollte man eine Risikoprämie erhalten. Klumpenrisiken jedoch – also die willkürliche Konzentration auf bestimmte Länder oder Unternehmen – sind ",[22,596,597],{},"unsystematische Risiken",", die durch Diversifikation vermeidbar wären. Der Markt vergütet sie nicht.",[15,600,601,602,605],{},"Wer heute in einen Standard-MSCI-World-ETF investiert, nimmt also ",[22,603,604],{},"zusätzliches Risiko ohne entsprechende Entlohnung"," in Kauf. Die Geschichte lehrt, dass solche Konzentrationen früher oder später korrigieren – oft schmerzhaft für diejenigen, die zur falschen Zeit auf der falschen Seite standen.",[47,607,609],{"id":608},"lösungsansätze-im-vergleich","Lösungsansätze im Vergleich",[611,612,614],"h3",{"id":613},"_1-breitere-indizes-wählen","1. Breitere Indizes wählen",[15,616,617],{},"ETFs auf den FTSE Global All Cap oder MSCI ACWI IMI investieren zusätzlich in Schwellenländer und kleinere Unternehmen (Small Caps). Der USA-Anteil sinkt dadurch auf ca. 62%. Ein Schritt in die richtige Richtung, aber noch immer deutlich über dem BSP-gerechten Anteil von ca. 25%.",[611,619,621],{"id":620},"_2-regionale-beimischungen","2. Regionale Beimischungen",[15,623,624],{},"Wer sein bestehendes MSCI-World-Depot behalten möchte, kann gezielt ergänzen:",[62,626,627,633],{},[65,628,629,632],{},[22,630,631],{},"Emerging Markets ETFs"," für Schwellenländer",[65,634,635,638],{},[22,636,637],{},"Europa-ETFs"," (STOXX Europe 600, MSCI Europe) für mehr Kontinental-Europa",[15,640,641],{},"Das Problem: Die Lösung wird schnell komplex und erfordert ständiges Rebalancing.",[611,643,645],{"id":644},"_3-die-elegante-alternative-msci-world-ex-usa","3. Die elegante Alternative: MSCI World ex USA",[15,647,648],{},"Seit 2024 gibt es für Privatanleger UCITS-konforme ETFs auf den MSCI World ex USA Index. Dieser enthält alle Unternehmen des klassischen MSCI World – nur eben ohne die US-Titel.",[15,650,651],{},[22,652,653],{},"Das Ergebnis:",[62,655,656,659,662],{},[65,657,658],{},"USA-Anteil: 0% (statt 72%)",[65,660,661],{},"Magnificent Seven: 0% (statt 24%)",[65,663,664],{},"Verbleibende ~800 Unternehmen aus 22 Industrieländern werden entsprechend höher gewichtet",[15,666,667],{},[22,668,669],{},"Verfügbare ETFs (Stand Februar 2026):",[671,672,673,695],"table",{},[674,675,676],"thead",{},[677,678,679,683,686,689,692],"tr",{},[680,681,682],"th",{},"Name",[680,684,685],{},"ISIN",[680,687,688],{},"TER",[680,690,691],{},"Ertragsverwendung",[680,693,694],{},"Volumen",[696,697,698,716,732,747,762],"tbody",{},[677,699,700,704,707,710,713],{},[701,702,703],"td",{},"Xtrackers MSCI World ex USA UCITS ETF 1C",[701,705,706],{},"IE0006WW1TQ4",[701,708,709],{},"0,15%",[701,711,712],{},"thesaurierend",[701,714,715],{},">4.700 Mio. €",[677,717,718,721,724,726,729],{},[701,719,720],{},"Xtrackers MSCI World ex USA UCITS ETF 1D",[701,722,723],{},"IE000Z0FC0G5",[701,725,709],{},[701,727,728],{},"ausschüttend",[701,730,731],{},">4.000 Mio. €",[677,733,734,737,740,742,744],{},[701,735,736],{},"Amundi MSCI World Ex USA UCITS ETF Acc",[701,738,739],{},"IE00085PWS28",[701,741,709],{},[701,743,712],{},[701,745,746],{},">600 Mio. €",[677,748,749,752,755,757,759],{},[701,750,751],{},"iShares MSCI World ex-USA UCITS ETF",[701,753,754],{},"IE000R4ZNTN3",[701,756,709],{},[701,758,712],{},[701,760,761],{},">2.000 Mio. €",[677,763,764,767,770,773,775],{},[701,765,766],{},"UBS MSCI World ex USA UCITS ETF",[701,768,769],{},"LU2807512947",[701,771,772],{},"0,14%",[701,774,712],{},[701,776,777],{},">80 Mio. €",[47,779,781],{"id":780},"praktische-umsetzung","Praktische Umsetzung",[15,783,784,787],{},[22,785,786],{},"Für Neueinsteiger:"," Wer frisch anlegt, kann gezielt einen Teil seines Kapitals in einen MSCI World ex USA ETF fließen lassen, statt alles in den überlasteten Standard-Index zu stecken.",[15,789,790,793],{},[22,791,792],{},"Für Bestandsanleger:"," Eine vollständige Umschichtung löst Steuerpflicht aus und ist meist nicht sinnvoll. Stattdessen kann ein schrittweiser Ausgleich erfolgen:",[62,795,796,799,802],{},[65,797,798],{},"Neue Sparraten in den ex-USA-ETF",[65,800,801],{},"Gezielte Teilverkäufe des MSCI World, falls steuerlich vertretbar",[65,803,804],{},"Ziel: Ein Verhältnis, das dem tatsächlichen Welt-BSP besser entspricht",[15,806,807,810],{},[22,808,809],{},"Die ideale Mischung?"," Viele Anleger landen bei einer Kombination wie:",[62,812,813,816,819],{},[65,814,815],{},"50% MSCI World (für globale Basis)",[65,817,818],{},"20% MSCI World ex USA (Anti-Klumpen-Gegengewicht)",[65,820,821],{},"30% Emerging Markets (für tatsächliche weltweite Abdeckung)",[15,823,824],{},"Diese Aufteilung reduziert den USA-Anteil auf ca. 35-40% und eliminiert gleichzeitig den Magnificent-Seven-Klumpen weitgehend.",[47,826,828],{"id":827},"fazit","Fazit",[15,830,831],{},"Der MSCI World Index bleibt eine praktische Einstiegslösung – aber er ist eben kein echter Weltindex. Die extreme USA-Konzentration und die Dominanz weniger Tech-Giganten schaffen Klumpenrisiken, die der Markt nicht vergütet.",[15,833,834],{},"Der MSCI World ex USA Index bietet eine überraschend einfache Möglichkeit, dieses Problem anzugehen. Ohne komplexe Rebalancing-Strategien oder teure aktiv gemanagte Fonds lässt sich das Depot-Exposure diversifizieren.",[15,836,837],{},"Es geht nicht darum, gegen die USA oder gegen Tech zu wetten. Es geht darum, das Portfolio näher an eine tatsächlich breite weltweite Streuung heranzuführen – und damit Risiken zu reduzieren, für die es keine Prämie gibt.",[15,839,840],{},[244,841,842],{},"Basierend auf dem Artikel \"Klumpt nicht: MSCI World ex USA\" von Prof. Dr. Hartmut Walz",{"title":114,"searchDepth":135,"depth":142,"links":844},[845,846,847,852,853],{"id":565,"depth":135,"text":566},{"id":590,"depth":135,"text":591},{"id":608,"depth":135,"text":609,"children":848},[849,850,851],{"id":613,"depth":142,"text":614},{"id":620,"depth":142,"text":621},{"id":644,"depth":142,"text":645},{"id":780,"depth":135,"text":781},{"id":827,"depth":135,"text":828},"finance","2026-03-01T00:00:00.000Z","Warum der klassische MSCI World Index zunehmend problematisch wird und wie Anleger mit einer einfachen Strategie Klumpenrisiken reduzieren können.","images/msci-world-ex-usa-entklumpung.svg",{},"/blog/finance/2026-03-01-msci-world-ex-usa-entklumpung",{"title":554,"description":856},"blog/finance/2026-03-01-msci-world-ex-usa-entklumpung",[863,864,865,866,867,868],"etf","investing","msci-world","diversification","portfolio","magnificent-seven","s6A2bmQuhVRvZilRi3_TB2a7HkJVktj1TFUPJ8uLmTY",{"id":871,"title":872,"author":6,"body":873,"category":1072,"date":1073,"description":1074,"extension":368,"featured":540,"image":1075,"meta":1076,"navigation":369,"path":1077,"seo":1078,"stem":1079,"tags":1080,"__hash__":1086},"blog/blog/vibe-coding/2026-02-19-scope-codebase-aware-ticket-generation.md","Scope: Generiere implementierungsreife Linear-Tickets aus deiner Codebasis",{"type":8,"value":874,"toc":1062},[875,878,881,899,905,913,917,924,970,973,977,980,984,987,991,994,998,1001,1004,1007,1014,1017,1021,1024,1027,1034,1041,1045,1048,1059],[11,876,872],{"id":877},"scope-generiere-implementierungsreife-linear-tickets-aus-deiner-codebasis",[15,879,880],{},"Wenn du in einem Team gearbeitet hast, das Linear (oder irgendein anderes Issue-Tracking-Tool) nutzt, hast du diesen Ablauf wahrscheinlich schon erlebt:",[882,883,884,890,893,896],"ol",{},[65,885,886,887],{},"Ein PM oder Entwickler schreibt ein Ticket: ",[244,888,889],{},"„Füge E-Mail-Benachrichtigungen für Bestellungen hinzu\"",[65,891,892],{},"Ein Entwickler liest das Ticket, öffnet die Codebasis und verbringt 30 Minuten damit, herauszufinden, welche Dateien betroffen sind",[65,894,895],{},"Wenn das Team KI-Tools wie Claude Code oder Cursor nutzt, verbrennt der Agent 10K+ Tokens allein beim Erkunden, bevor er auch nur eine Zeile schreibt",[65,897,898],{},"Das Feature wird unvollständig ausgeliefert, weil das Ticket die drei bestehenden Models nicht erwähnt hat, die Callbacks brauchten, das Benachrichtigungs-Präferenzsystem, das hätte eingebunden werden müssen, oder die Admin-Endpoints zum Verwalten von Templates",[15,900,901,902],{},"Die Lücke zwischen Produktabsicht und Engineering-Umsetzung ist der Ort, an dem die meisten Teams Zeit verlieren. Nicht beim Programmieren — sondern in den Klärungsschleifen. ",[244,903,904],{},"„Wo lebt das in der Codebasis?\" „Welche Models sind betroffen?\" „Brauchen wir eine Migration?\" „Was ist mit dem bestehenden Benachrichtigungssystem?\"",[15,906,907,912],{},[25,908,911],{"href":909,"rel":910},"https://usescope.dev",[29],"Scope"," ist ein Tool, das gebaut wurde, um genau diese Lücke zu schließen. Du verbindest dein GitHub-Repo, beschreibst ein Feature in einfachem Englisch, und es generiert Linear-fertige Tickets, die mit Implementierungskontext geladen sind.",[47,914,916],{"id":915},"was-implementierungsreif-eigentlich-bedeutet","Was „implementierungsreif\" eigentlich bedeutet",[15,918,919,920,923],{},"Ein typisches Linear-Issue hat einen Titel und eine von Menschen geschriebene Beschreibung. Scope generiert Tickets mit ",[22,921,922],{},"32 strukturierten Feldern",", darunter:",[62,925,926,940,946,952,958,964],{},[65,927,928,931,932,935,936,939],{},[22,929,930],{},"Exakte Dateien zum Erstellen und Ändern"," — nicht „Backend aktualisieren\", sondern ",[84,933,934],{},"app/services/order_notification_service.rb"," (erstellen), ",[84,937,938],{},"app/models/order.rb"," (ändern)",[65,941,942,945],{},[22,943,944],{},"Verwandte Entitäten und Endpoints"," — welche Datenmodelle beteiligt sind und wie sie zusammenhängen",[65,947,948,951],{},[22,949,950],{},"Schemaänderungen"," — welche Migrationen nötig sind",[65,953,954,957],{},[22,955,956],{},"Abhängigkeiten"," — welche Tickets zuerst ausgeliefert werden müssen und warum",[65,959,960,963],{},[22,961,962],{},"Akzeptanzkriterien"," — überprüfbare Bedingungen, kein vages „es sollte funktionieren\"",[65,965,966,969],{},[22,967,968],{},"Implementierungsplan"," — geordnete Schritte innerhalb jedes Tickets",[15,971,972],{},"Du kannst diese direkt per CSV-Import in Linear exportieren oder als Markdown kopieren.",[47,974,976],{"id":975},"wie-es-unter-der-haube-funktioniert","Wie es unter der Haube funktioniert",[15,978,979],{},"Wenn du dein GitHub-Repo verbindest, führt Scope eine dreischichtige Analyse durch:",[611,981,983],{"id":982},"_1-tree-sitter-ast-parsing","1. Tree-sitter AST-Parsing",[15,985,986],{},"Scope extrahiert Entitäten, Endpoints, Beziehungen und Routes aus deinem tatsächlichen Code mittels deterministischem AST-Parsing. In dieser Phase ist keine KI im Spiel — nur schnelle, zuverlässige statische Analyse. Es unterstützt Ruby, Python, TypeScript, Go, Rust und weitere Sprachen.",[611,988,990],{"id":989},"_2-abhängigkeitsgraph-pagerank","2. Abhängigkeitsgraph + PageRank",[15,992,993],{},"Es baut einen Graphen darüber auf, wie dein Code zusammenhängt, und ordnet Symbole mittels PageRank nach Wichtigkeit. Wenn du nach einem Feature fragst, weiß Scope bereits, welche Services zentral für deine Architektur sind und welche peripher.",[611,995,997],{"id":996},"_3-semantische-interpretation-durch-ein-llm","3. Semantische Interpretation durch ein LLM",[15,999,1000],{},"Claude Sonnet interpretiert die strukturellen Daten, um zu verstehen, was dein Code in Business-Begriffen tut — welchen Mustern er folgt, welche Konventionen zu respektieren sind. Hier wird aus roher Codestruktur umsetzbarer Projektkontext.",[15,1002,1003],{},"Diese Analyse läuft einmal und produziert ein lebendes Modell deiner Codebasis. Scope speichert deinen Quellcode niemals — nur die extrahierten Metadaten. Wenn du später Tickets generierst, zieht es die relevanten Dateien in Echtzeit aus GitHub, sodass Tickets immer deinen aktuellen Code widerspiegeln.",[15,1005,1006],{},"Dann beschreibst du, was du willst:",[169,1008,1009],{},[15,1010,1011],{},[244,1012,1013],{},"„Füge transaktionale E-Mail-Benachrichtigungen für Bestelllebenszyklus-Ereignisse, Budget-Warnungen und Lieferantenverbindungen hinzu.\"",[15,1015,1016],{},"Und Scope zerlegt das in geordnete, abhängigkeitsbewusste Tickets mit vollständigem Codebasis-Kontext eingebaut.",[47,1018,1020],{"id":1019},"warum-das-für-ki-gestützte-entwicklung-wichtig-ist","Warum das für KI-gestützte Entwicklung wichtig ist",[15,1022,1023],{},"Hier wird Scope besonders interessant für Vibe-Coding-Workflows.",[15,1025,1026],{},"Wenn deine Entwickler Claude Code, Cursor oder Codex nutzen, ist der größte Zeitfresser nicht das Schreiben von Code — es ist der KI-Agent, der deine Codebasis erkundet, um Kontext aufzubauen, bevor er irgendetwas Nützliches tun kann. Scope schließt das komplett kurz.",[15,1028,1029,1030,1033],{},"Es stellt außerdem ",[22,1031,1032],{},"12 MCP-Tools"," bereit, die einem KI-Agenten erlauben, Ticket-Kontext, Entitätsdetails und Abhängigkeitsinformationen direkt beim Programmieren abzurufen. Der Agent erkundet deine Codebasis nicht blind — er kennt die Architektur bereits.",[15,1035,1036,1037,1040],{},"Der Entwickler hat das an seinem eigenen Projekt selbst ausprobiert: Zwei Sätze haben 5 geordnete Tickets generiert. Claude Code hat sie abgearbeitet und ",[22,1038,1039],{},"42 Dateien, 5 Services, 72 Tests und eine vollständige GraphQL-API"," produziert — ohne menschliche Steuerung während der Implementierung. Die Callbacks, Lifecycle-Hooks und Integrationspunkte, die KI normalerweise übersieht, wurden alle in der Ticket-Zerlegung erfasst.",[47,1042,1044],{"id":1043},"das-große-ganze","Das große Ganze",[15,1046,1047],{},"Vibe Coding hat den Engpass verschoben. Code zu schreiben ist heute schnell. Was langsam ist, ist die Übersetzungsschicht zwischen „was wir bauen wollen\" und „einer Aufgabenbeschreibung, die detailliert genug ist, dass ein Mensch oder eine KI sie tatsächlich ausliefern kann.\"",[15,1049,1050,1051,1054,1055,1058],{},"Tools wie Scope deuten auf eine Zukunft hin, in der die Planungsphase selbst KI-erweitert wird — nicht indem menschliches Urteilsvermögen darüber, ",[244,1052,1053],{},"was"," gebaut werden soll, ersetzt wird, sondern indem das mühsame Mapping davon, ",[244,1056,1057],{},"wie es mit dem Bestehenden verbunden ist",", automatisiert wird.",[15,1060,1061],{},"Wenn dein Team mehr Zeit mit dem Klären von Tickets verbringt als mit deren Umsetzung, ist das einen Blick wert.",{"title":114,"searchDepth":135,"depth":142,"links":1063},[1064,1065,1070,1071],{"id":915,"depth":135,"text":916},{"id":975,"depth":135,"text":976,"children":1066},[1067,1068,1069],{"id":982,"depth":142,"text":983},{"id":989,"depth":142,"text":990},{"id":996,"depth":142,"text":997},{"id":1019,"depth":135,"text":1020},{"id":1043,"depth":135,"text":1044},"vibe-coding","2026-02-19T00:00:00.000Z","Scope liest deine Codebasis und verwandelt Feature-Beschreibungen in einfachem Englisch in Linear-fertige Tickets mit vollständigem Implementierungskontext — zu ändernde Dateien, Schemaänderungen, Abhängigkeiten und Akzeptanzkriterien.","images/scope-codebase-aware-tickets.svg",{},"/blog/vibe-coding/2026-02-19-scope-codebase-aware-ticket-generation",{"title":872,"description":1074},"blog/vibe-coding/2026-02-19-scope-codebase-aware-ticket-generation",[1081,1082,1083,1084,1085],"ai-assisted","productivity","developer-experience","linear","project-management","pFWd6YRJroCJ995iiX3C1n2ROQNLhXB4la_gzu5hpTo",{"id":1088,"title":1089,"author":6,"body":1090,"category":1072,"date":1360,"description":1361,"extension":368,"featured":540,"image":1362,"meta":1363,"navigation":369,"path":1364,"seo":1365,"stem":1366,"tags":1367,"__hash__":1368},"blog/blog/vibe-coding/2026-02-12-what-is-vibe-coding.md","Was ist Vibe Coding?",{"type":8,"value":1091,"toc":1347},[1092,1095,1098,1102,1105,1122,1125,1141,1159,1163,1166,1192,1229,1233,1236,1262,1266,1270,1273,1277,1280,1284,1287,1304,1308,1311,1322,1326,1334,1338,1341,1344],[11,1093,1089],{"id":1094},"was-ist-vibe-coding",[15,1096,1097],{},"Vibe Coding ist ein Begriff, den Andrej Karpathy geprägt hat, um ein neues Paradigma in der Softwareentwicklung zu beschreiben: Statt jede Zeile Code selbst zu schreiben, beschreibst du in natürlicher Sprache, was du willst, und lässt die KI die Implementierung übernehmen.",[47,1099,1101],{"id":1100},"der-wandel","Der Wandel",[15,1103,1104],{},"Traditionelle Entwicklung:",[882,1106,1107,1110,1113,1116,1119],{},[65,1108,1109],{},"Über das Problem nachdenken",[65,1111,1112],{},"Die Lösung entwerfen",[65,1114,1115],{},"Den Code schreiben",[65,1117,1118],{},"Den Code debuggen",[65,1120,1121],{},"Den Code refactoren",[15,1123,1124],{},"Vibe Coding:",[882,1126,1127,1129,1132,1135,1138],{},[65,1128,1109],{},[65,1130,1131],{},"Die Lösung beschreiben",[65,1133,1134],{},"Die KI anleiten",[65,1136,1137],{},"Reviewen und iterieren",[65,1139,1140],{},"Shippen",[15,1142,1143,1144,1147,1148,262,1151,1154,1155,1158],{},"Der entscheidende Unterschied ist nicht Faulheit – es ist ",[22,1145,1146],{},"Hebelwirkung",". Du konzentrierst dich auf das ",[244,1149,1150],{},"Was",[244,1152,1153],{},"Warum",", während die KI das ",[244,1156,1157],{},"Wie"," übernimmt.",[47,1160,1162],{"id":1161},"wann-vibe-coding-funktioniert","Wann Vibe Coding funktioniert",[15,1164,1165],{},"Vibe Coding glänzt bei:",[62,1167,1168,1174,1180,1186],{},[65,1169,1170,1173],{},[22,1171,1172],{},"Prototyping"," — In Minuten von der Idee zum funktionierenden Demo",[65,1175,1176,1179],{},[22,1177,1178],{},"Boilerplate"," — Repetitive Code-Patterns sofort generieren",[65,1181,1182,1185],{},[22,1183,1184],{},"Lernen"," — Unbekannte Frameworks erkunden, während die KI beim Bauen erklärt",[65,1187,1188,1191],{},[22,1189,1190],{},"Refactoring"," — Zielstruktur beschreiben, die KI erledigt die mechanische Arbeit",[109,1193,1195],{"className":111,"code":1194,"language":113,"meta":114,"style":114},"# Eine Vibe-Coding-Session könnte so aussehen:\n# \"Erstelle einen REST-API-Endpunkt, der User-Input validiert,\n#  in PostgreSQL speichert und einen 201 mit der erstellten Ressource zurückgibt\"\n\n# Die KI generiert Handler, Validierungsschema, Datenbankabfrage,\n# Error Handling und Tests — alles in Sekunden\n",[84,1196,1197,1203,1208,1213,1218,1223],{"__ignoreMap":114},[118,1198,1199],{"class":120,"line":121},[118,1200,1202],{"class":1201},"sHwdD","# Eine Vibe-Coding-Session könnte so aussehen:\n",[118,1204,1205],{"class":120,"line":135},[118,1206,1207],{"class":1201},"# \"Erstelle einen REST-API-Endpunkt, der User-Input validiert,\n",[118,1209,1210],{"class":120,"line":142},[118,1211,1212],{"class":1201},"#  in PostgreSQL speichert und einen 201 mit der erstellten Ressource zurückgibt\"\n",[118,1214,1215],{"class":120,"line":148},[118,1216,1217],{"emptyLinePlaceholder":369},"\n",[118,1219,1220],{"class":120,"line":154},[118,1221,1222],{"class":1201},"# Die KI generiert Handler, Validierungsschema, Datenbankabfrage,\n",[118,1224,1226],{"class":120,"line":1225},6,[118,1227,1228],{"class":1201},"# Error Handling und Tests — alles in Sekunden\n",[47,1230,1232],{"id":1231},"wann-es-nicht-funktioniert","Wann es nicht funktioniert",[15,1234,1235],{},"Vibe Coding stößt an Grenzen bei:",[62,1237,1238,1244,1250,1256],{},[65,1239,1240,1243],{},[22,1241,1242],{},"Neuartige Algorithmen"," — KI kann nicht erfinden, was in den Trainingsdaten nicht existiert",[65,1245,1246,1249],{},[22,1247,1248],{},"Komplexes Systemdesign"," — Architektur erfordert tiefes Domänenwissen",[65,1251,1252,1255],{},[22,1253,1254],{},"Sicherheitskritischer Code"," — KI-generierten Security-Code immer manuell reviewen",[65,1257,1258,1261],{},[22,1259,1260],{},"Performance-Optimierung"," — Profiling und Optimierung brauchen menschliches Urteilsvermögen",[47,1263,1265],{"id":1264},"best-practices","Best Practices",[611,1267,1269],{"id":1268},"_1-sei-ein-guter-editor","1. Sei ein guter Editor",[15,1271,1272],{},"Deine Rolle verschiebt sich vom Autor zum Editor. Lies jede Zeile, die die KI generiert. Versteh sie. Hinterfrage sie.",[611,1274,1276],{"id":1275},"_2-starte-mit-tests","2. Starte mit Tests",[15,1278,1279],{},"Beschreibe zuerst deine Tests. Dann bitte die KI, Code zu implementieren, der sie besteht. Das stellt Korrektheit sicher, auch wenn du die Implementierung nicht selbst geschrieben hast.",[611,1281,1283],{"id":1282},"_3-iteriere-in-kleinen-schritten","3. Iteriere in kleinen Schritten",[15,1285,1286],{},"Fordere nicht eine ganze Anwendung auf einmal an. Baue Feature für Feature und verifiziere jeden Schritt:",[882,1288,1289,1292,1295,1298,1301],{},[65,1290,1291],{},"„Erstelle das Datenmodell\"",[65,1293,1294],{},"„Füge den API-Endpunkt hinzu\"",[65,1296,1297],{},"„Schreibe die Frontend-Komponente\"",[65,1299,1300],{},"„Füge Error Handling hinzu\"",[65,1302,1303],{},"„Schreibe Tests\"",[611,1305,1307],{"id":1306},"_4-kenne-deine-tools","4. Kenne deine Tools",[15,1309,1310],{},"Die besten Vibe Coder sind immer noch exzellente Entwickler. Sie wissen:",[62,1312,1313,1316,1319],{},[65,1314,1315],{},"Wie guter Code aussieht",[65,1317,1318],{},"Wann KI-Output subtil falsch ist",[65,1320,1321],{},"Wie man die KI zu besseren Lösungen lenkt",[47,1323,1325],{"id":1324},"vertiefung-claude-code-tipps","Vertiefung: Claude Code Tipps",[15,1327,1328,1329,1333],{},"Wenn du Vibe Coding in die Praxis umsetzen willst, schau dir ",[25,1330,1332],{"href":1331},"vibe-coding/2026-01-28-claude-code-tips-from-basics-to-advanced","32 Claude Code Tips: From Basics to Advanced"," an — ein umfassender Guide von Voice Input und Kontextmanagement bis hin zu Container-Orchestrierung und Multi-Model-Workflows.",[47,1335,1337],{"id":1336},"die-zukunft","Die Zukunft",[15,1339,1340],{},"Vibe Coding ersetzt keine Entwickler – es verstärkt sie. Entwickler, die diesen Wandel annehmen, werden schneller ausliefern, mehr Ideen ausprobieren und weniger Zeit mit mechanischer Arbeit verbringen.",[15,1342,1343],{},"Der Vibe ist: beschreiben, reviewen, iterieren, ausliefern.",[354,1345,1346],{},"html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":114,"searchDepth":135,"depth":142,"links":1348},[1349,1350,1351,1352,1358,1359],{"id":1100,"depth":135,"text":1101},{"id":1161,"depth":135,"text":1162},{"id":1231,"depth":135,"text":1232},{"id":1264,"depth":135,"text":1265,"children":1353},[1354,1355,1356,1357],{"id":1268,"depth":142,"text":1269},{"id":1275,"depth":142,"text":1276},{"id":1282,"depth":142,"text":1283},{"id":1306,"depth":142,"text":1307},{"id":1324,"depth":135,"text":1325},{"id":1336,"depth":135,"text":1337},"2026-02-12T00:00:00.000Z","Vibe Coding ist ein neuer Ansatz in der Softwareentwicklung, bei dem man KI per natürlicher Sprache anleitet, Software zu bauen.",null,{},"/blog/vibe-coding/2026-02-12-what-is-vibe-coding",{"title":1089,"description":1361},"blog/vibe-coding/2026-02-12-what-is-vibe-coding",[1081,1083,1082],"ScorbwjvsvhLw1eR6R3Y0JWWdUEtT_s-I7J9Bgu8hWk",{"id":1370,"title":1371,"author":6,"body":1372,"category":854,"date":1772,"description":1773,"extension":368,"featured":540,"image":1774,"meta":1775,"navigation":369,"path":1776,"seo":1777,"stem":1778,"tags":1779,"__hash__":1782},"blog/blog/finance/intro-to-personal-finance.md","Personal Finance für Entwickler – Ein Leitfaden",{"type":8,"value":1373,"toc":1764},[1374,1377,1380,1384,1387,1406,1409,1413,1416,1466,1469,1473,1480,1488,1491,1517,1521,1524,1550,1554,1734,1737,1741,1758,1761],[11,1375,1371],{"id":1376},"personal-finance-für-entwickler-ein-leitfaden",[15,1378,1379],{},"Als Entwickler sind wir gut darin, Systeme zu optimieren. Persönliche Finanzen sind nur ein weiteres System – eines, das dieselbe Sorgfalt verdient, die wir auf unseren Code anwenden.",[47,1381,1383],{"id":1382},"das-fundament-notgroschen","Das Fundament: Notgroschen",[15,1385,1386],{},"Bevor du irgendetwas anderes tust, bau dir einen Cash-Puffer auf:",[62,1388,1389,1395,1401],{},[65,1390,1391,1394],{},[22,1392,1393],{},"Ziel",": 3–6 Monatsausgaben",[65,1396,1397,1400],{},[22,1398,1399],{},"Wo",": Tagesgeldkonto mit guter Verzinsung",[65,1402,1403,1405],{},[22,1404,1153],{},": Verhindert, dass du Investments zum schlechtesten Zeitpunkt verkaufen musst",[15,1407,1408],{},"Stell ihn dir als finanziellen Sicherungsautomaten vor. Wenn etwas schiefläuft, löst er aus, bevor der Schaden sich ausbreitet.",[47,1410,1412],{"id":1411},"das-503020-framework","Das 50/30/20-Framework",[15,1414,1415],{},"Ein simples Budgetmodell, das tatsächlich funktioniert:",[671,1417,1418,1431],{},[674,1419,1420],{},[677,1421,1422,1425,1428],{},[680,1423,1424],{},"Kategorie",[680,1426,1427],{},"% des Einkommens",[680,1429,1430],{},"Beispiele",[696,1432,1433,1444,1455],{},[677,1434,1435,1438,1441],{},[701,1436,1437],{},"Bedarf",[701,1439,1440],{},"50%",[701,1442,1443],{},"Miete, Lebensmittel, Versicherungen",[677,1445,1446,1449,1452],{},[701,1447,1448],{},"Wünsche",[701,1450,1451],{},"30%",[701,1453,1454],{},"Essen gehen, Hobbys, Reisen",[677,1456,1457,1460,1463],{},[701,1458,1459],{},"Sparen",[701,1461,1462],{},"20%",[701,1464,1465],{},"Investments, Schuldenabbau",[15,1467,1468],{},"Das Schöne an diesem Framework ist seine Einfachheit. Du musst nicht jeden Kaffee tracken – stelle nur sicher, dass die Prozentsätze ungefähr stimmen.",[47,1470,1472],{"id":1471},"index-investing-die-wahl-des-entwicklers","Index-Investing: Die Wahl des Entwicklers",[15,1474,1475,1476,1479],{},"Warum Indexfonds die ",[84,1477,1478],{},"O(1)","-Lösung für Geldanlage sind:",[109,1481,1486],{"className":1482,"code":1484,"language":1485,"meta":114},[1483],"language-text","Aktives Fondsmanagement: O(n) Aufwand, performt meist schlechter\nIndex-Investing:         O(1) Aufwand, matcht den Markt\n","text",[84,1487,1484],{"__ignoreMap":114},[15,1489,1490],{},"Kernprinzipien:",[882,1492,1493,1499,1505,1511],{},[65,1494,1495,1498],{},[22,1496,1497],{},"Breit diversifizieren"," — Ein Total-Market-Indexfonds hält tausende Aktien",[65,1500,1501,1504],{},[22,1502,1503],{},"Kosten niedrig halten"," — Achte auf Kostenquoten unter 0,1 %",[65,1506,1507,1510],{},[22,1508,1509],{},"Kurs halten"," — Zeit im Markt schlägt Markt-Timing",[65,1512,1513,1516],{},[22,1514,1515],{},"Automatisieren"," — Richte automatische Sparpläne ein",[47,1518,1520],{"id":1519},"steuerlich-begünstigte-konten","Steuerlich begünstigte Konten",[15,1522,1523],{},"In Deutschland gibt es andere Instrumente als in den USA, aber das Prinzip bleibt gleich – nutze steuerliche Vorteile, bevor du in ein normales Depot investierst:",[62,1525,1526,1532,1538,1544],{},[65,1527,1528,1531],{},[22,1529,1530],{},"Betriebliche Altersvorsorge (bAV)"," — Besonders wenn der Arbeitgeber zuzahlt (geschenktes Geld)",[65,1533,1534,1537],{},[22,1535,1536],{},"Rürup-Rente"," — Steuerlich absetzbare Beiträge, besonders für Selbstständige",[65,1539,1540,1543],{},[22,1541,1542],{},"Riester-Rente"," — Staatliche Zulagen, lohnt sich je nach Lebenssituation",[65,1545,1546,1549],{},[22,1547,1548],{},"Freistellungsauftrag"," — Bis zu 1.000 € Kapitalerträge pro Jahr steuerfrei (2.000 € bei Ehepaaren)",[47,1551,1553],{"id":1552},"die-kraft-des-zinseszins","Die Kraft des Zinseszins",[109,1555,1559],{"className":1556,"code":1557,"language":1558,"meta":114,"style":114},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","def endwert(monatlich, rendite, jahre):\n    monate = jahre * 12\n    monatliche_rendite = rendite / 12\n    return monatlich * ((1 + monatliche_rendite)**monate - 1) / monatliche_rendite\n\n# 500 €/Monat bei 7 % über 30 Jahre\nprint(f\"{endwert(500, 0.07, 30):,.0f} €\")\n# → 566.764 €\n","python",[84,1560,1561,1592,1611,1626,1670,1674,1679,1728],{"__ignoreMap":114},[118,1562,1563,1567,1571,1574,1578,1581,1584,1586,1589],{"class":120,"line":121},[118,1564,1566],{"class":1565},"spNyl","def",[118,1568,1570],{"class":1569},"s2Zo4"," endwert",[118,1572,1573],{"class":128},"(",[118,1575,1577],{"class":1576},"sHdIc","monatlich",[118,1579,1580],{"class":128},",",[118,1582,1583],{"class":1576}," rendite",[118,1585,1580],{"class":128},[118,1587,1588],{"class":1576}," jahre",[118,1590,1591],{"class":128},"):\n",[118,1593,1594,1598,1601,1604,1607],{"class":120,"line":135},[118,1595,1597],{"class":1596},"sTEyZ","    monate ",[118,1599,1600],{"class":128},"=",[118,1602,1603],{"class":1596}," jahre ",[118,1605,1606],{"class":128},"*",[118,1608,1610],{"class":1609},"sbssI"," 12\n",[118,1612,1613,1616,1618,1621,1624],{"class":120,"line":142},[118,1614,1615],{"class":1596},"    monatliche_rendite ",[118,1617,1600],{"class":128},[118,1619,1620],{"class":1596}," rendite ",[118,1622,1623],{"class":128},"/",[118,1625,1610],{"class":1609},[118,1627,1628,1632,1635,1637,1640,1643,1646,1649,1652,1655,1658,1661,1664,1667],{"class":120,"line":148},[118,1629,1631],{"class":1630},"s7zQu","    return",[118,1633,1634],{"class":1596}," monatlich ",[118,1636,1606],{"class":128},[118,1638,1639],{"class":128}," ((",[118,1641,1642],{"class":1609},"1",[118,1644,1645],{"class":128}," +",[118,1647,1648],{"class":1596}," monatliche_rendite",[118,1650,1651],{"class":128},")**",[118,1653,1654],{"class":1596},"monate ",[118,1656,1657],{"class":128},"-",[118,1659,1660],{"class":1609}," 1",[118,1662,1663],{"class":128},")",[118,1665,1666],{"class":128}," /",[118,1668,1669],{"class":1596}," monatliche_rendite\n",[118,1671,1672],{"class":120,"line":154},[118,1673,1217],{"emptyLinePlaceholder":369},[118,1675,1676],{"class":120,"line":1225},[118,1677,1678],{"class":1201},"# 500 €/Monat bei 7 % über 30 Jahre\n",[118,1680,1682,1685,1687,1690,1693,1696,1699,1701,1704,1706,1709,1711,1714,1716,1719,1722,1725],{"class":120,"line":1681},7,[118,1683,1684],{"class":1569},"print",[118,1686,1573],{"class":128},[118,1688,1689],{"class":1565},"f",[118,1691,1692],{"class":138},"\"",[118,1694,1695],{"class":1609},"{",[118,1697,1698],{"class":1569},"endwert",[118,1700,1573],{"class":128},[118,1702,1703],{"class":1609},"500",[118,1705,1580],{"class":128},[118,1707,1708],{"class":1609}," 0.07",[118,1710,1580],{"class":128},[118,1712,1713],{"class":1609}," 30",[118,1715,1663],{"class":128},[118,1717,1718],{"class":1565},":,.0f",[118,1720,1721],{"class":1609},"}",[118,1723,1724],{"class":138}," €\"",[118,1726,1727],{"class":128},")\n",[118,1729,1731],{"class":120,"line":1730},8,[118,1732,1733],{"class":1201},"# → 566.764 €\n",[15,1735,1736],{},"Früh anfangen zählt mehr als die Höhe. Ein 25-Jähriger, der 500 €/Monat investiert, wird bis zur Rente voraussichtlich einen 35-Jährigen überholen, der 1.000 €/Monat investiert.",[47,1738,1740],{"id":1739},"nächste-schritte","Nächste Schritte",[882,1742,1743,1746,1749,1752,1755],{},[65,1744,1745],{},"Notgroschen aufbauen",[65,1747,1748],{},"Arbeitgeberzuschuss zur bAV mitnehmen",[65,1750,1751],{},"Freistellungsauftrag einrichten",[65,1753,1754],{},"Automatischen ETF-Sparplan starten",[65,1756,1757],{},"Vergiss es und konzentrier dich darauf, dein Einkommen zu steigern",[15,1759,1760],{},"Der beste Finanzplan ist der, den du tatsächlich befolgst.",[354,1762,1763],{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"title":114,"searchDepth":135,"depth":142,"links":1765},[1766,1767,1768,1769,1770,1771],{"id":1382,"depth":135,"text":1383},{"id":1411,"depth":135,"text":1412},{"id":1471,"depth":135,"text":1472},{"id":1519,"depth":135,"text":1520},{"id":1552,"depth":135,"text":1553},{"id":1739,"depth":135,"text":1740},"2026-02-10T00:00:00.000Z","Die wichtigsten Konzepte der persönlichen Finanzplanung, die jeder Entwickler kennen sollte – vom Notgroschen bis zum Index-Investing.","images/intro-to-personal-finance.svg",{},"/blog/finance/intro-to-personal-finance",{"title":1371,"description":1773},"blog/finance/intro-to-personal-finance",[864,1780,1781],"budgeting","financial-independence","xGt2eC_5XFAFmCgXCAyFNUJ6OwdW8j7yjdqIA3MqLus",{"id":1784,"title":1785,"author":6,"body":1786,"category":1072,"date":3082,"description":3083,"extension":368,"featured":540,"image":1362,"meta":3084,"navigation":369,"path":3085,"seo":3086,"stem":3087,"tags":3088,"__hash__":3090},"blog/blog/vibe-coding/2026-01-28-claude-code-tips-from-basics-to-advanced.md","32 Claude Code Tipps: Von den Grundlagen bis zur Profi-Ebene",{"type":8,"value":1787,"toc":3039},[1788,1791,1794,1797,1801,1804,1810,1813,1817,1826,1832,1835,1838,1842,1845,1848,1855,1858,1864,1867,1873,1876,1880,1883,1894,1901,1905,1908,1912,1915,1957,1960,1964,1967,2054,2073,2077,2084,2091,2096,2099,2105,2108,2112,2115,2122,2231,2238,2242,2249,2252,2256,2259,2262,2266,2269,2276,2279,2283,2286,2289,2293,2304,2399,2402,2406,2409,2415,2418,2422,2425,2431,2437,2440,2444,2447,2504,2511,2515,2518,2521,2525,2528,2534,2545,2549,2552,2566,2572,2575,2579,2582,2588,2592,2595,2599,2606,2610,2613,2636,2639,2643,2646,2650,2657,2660,2664,2667,2696,2699,2848,2855,2859,2862,2866,2873,2885,2888,2892,2895,2921,2924,2928,2934,2941,2945,2948,2954,2958,2961,2987,2991,2994,2997,3001,3004,3007,3011,3014,3017,3021,3024,3030,3033,3036],[11,1789,1785],{"id":1790},"_32-claude-code-tipps-von-den-grundlagen-bis-zur-profi-ebene",[15,1792,1793],{},"Claude Code ist für viele Entwicklerinnen und Entwickler schnell zu einem zentralen Bestandteil des Workflows geworden. Doch die meisten kratzen kaum an der Oberfläche dessen, was damit möglich ist. Dieser Leitfaden enthält 32 praktische Tipps — von kleinen Komfortverbesserungen bis hin zu fortgeschrittenen Techniken wie dem Betrieb von Claude Code in Containern und der Orchestrierung mehrerer KI-Modelle.",[1795,1796],"hr",{},[47,1798,1800],{"id":1799},"tipp-0-passe-deine-statuszeile-an","Tipp 0: Passe deine Statuszeile an",[15,1802,1803],{},"Du kannst die Statuszeile von Claude Code so anpassen, dass nützliche Informationen auf einen Blick erscheinen — aktuelles Modell, Verzeichnis, Git-Branch, Anzahl uncommitteter Dateien, Sync-Status und ein Fortschrittsbalken für die Token-Nutzung. Eine zweite Zeile kann deine letzte Nachricht anzeigen, um den Kontext schnell wiederherzustellen:",[109,1805,1808],{"className":1806,"code":1807,"language":1485},[1483],"Opus 4.5 | dir:Daft | fix/colab-pydantic-pickle (0 files, synced) | █░░░░░░░░░ 12% of 200k tokens\nLast: Okay, und diesen Teil verstehe ich nicht ganz. Was ist Type Checking und warum nutzen wir es hier?\n",[84,1809,1807],{"__ignoreMap":114},[15,1811,1812],{},"Das ist besonders nützlich, um die Kontextnutzung zu überwachen und sich daran zu erinnern, worum es in einer Konversation ging, wenn du zwischen Tabs wechselst.",[47,1814,1816],{"id":1815},"tipp-1-sprich-mit-claude-code-per-stimme","Tipp 1: Sprich mit Claude Code per Stimme",[15,1818,1819,1820,1825],{},"Spracheingabe ist für die meisten Menschen deutlich schneller als Tippen. Unter macOS funktionieren lokale Transkriptionstools wie ",[25,1821,1824],{"href":1822,"rel":1823},"https://superwhisper.com/",[29],"superwhisper",", MacWhisper oder quelloffene Alternativen problemlos. Selbst wenn die Transkription Fehler enthält, ist Claude klug genug, deine Absicht zu interpretieren.",[109,1827,1830],{"className":1828,"code":1829,"language":1485},[1483],"![Falsch transkribierte Spracheingabe wird korrekt interpretiert](images/claude-code-tips/voice-transcription-mistakes.png)\n",[84,1831,1829],{"__ignoreMap":114},[15,1833,1834],{},"In diesem Beispiel wurden falsch transkribierte Wörter wie „ExcelElanishMark\" und „advast\" korrekt als „exclamation mark\" und „Advanced\" interpretiert.",[15,1836,1837],{},"Stell es dir wie das Senden von Sprachnachrichten an eine Kollegin oder einen Kollegen vor. Du brauchst kein perfektes Diktat — sprich einfach natürlich. Wenn du dir den Raum mit anderen teilst, reicht auch leises Sprechen in die Kopfhörer.",[47,1839,1841],{"id":1840},"tipp-2-zerlege-große-probleme","Tipp 2: Zerlege große Probleme",[15,1843,1844],{},"Das ist grundlegend. Es ist dasselbe Prinzip, das großartige Softwareentwicklerinnen und -entwickler ausmacht — Dekomposition.",[15,1846,1847],{},"Wenn Claude Code eine komplexe Aufgabe nicht in einem Rutsch lösen kann, zerlege sie. Ist eine Teilaufgabe immer noch zu schwierig, zerlege sie weiter. Mach so lange weiter, bis alles lösbar ist.",[15,1849,1850],{},[1851,1852],"img",{"alt":1853,"src":1854},"Direkter Ansatz — der Versuch, in einem Schritt von A nach B zu gelangen","images/claude-code-tips/breakdown-direct.png",[15,1856,1857],{},"Anstatt direkt von A nach B zu springen:",[15,1859,1860],{},[1851,1861],{"alt":1862,"src":1863},"Schrittweiser Ansatz — von A über A1, A2, A3 nach B","images/claude-code-tips/breakdown-steps.png",[15,1865,1866],{},"Geh von A nach A1, dann A2, dann A3, und schließlich nach B.",[15,1868,1869,1872],{},[22,1870,1871],{},"Beispiel:"," Der Aufbau eines Sprachtranskriptionssystems umfasst das Herunterladen von Modellen, die Sprachaufnahme, die Audiotranskription, das Setzen des Cursors und die Benutzeroberfläche. Statt alles auf einmal anzugehen, baue jeden Teil unabhängig — einen eigenständigen Modell-Downloader, einen eigenständigen Recorder, einen eigenständigen Transkribierer — und setze sie anschließend zusammen.",[15,1874,1875],{},"Deine Problemlösungs- und Engineering-Fähigkeiten sind weiterhin enorm wichtig. Claude Code ist für sich genommen mächtig — strukturiertes Denken beim Einsatz macht es jedoch dramatisch effektiver.",[47,1877,1879],{"id":1878},"tipp-3-nutze-git-und-github-cli-wie-ein-profi","Tipp 3: Nutze Git und GitHub CLI wie ein Profi",[15,1881,1882],{},"Lass Claude deine Arbeit mit Git und GitHub CLI übernehmen. Committen (kein händisches Schreiben von Commit-Nachrichten mehr), Branchen, Pullen, Pushen — alles davon.",[15,1884,1885,1886,1889,1890,1893],{},"Eine gute Praxis: ",[84,1887,1888],{},"pull"," automatisch erlauben, aber für ",[84,1891,1892],{},"push"," eine Bestätigung verlangen, da Push das Remote beeinflusst.",[15,1895,1896,1897,1900],{},"Bei der GitHub CLI (",[84,1898,1899],{},"gh",") gewöhn dir an, Draft-PRs zu erstellen. So kann Claude die PR-Erstellung mit geringem Risiko übernehmen — du überprüfst alles, bevor du den PR als bereit markierst.",[47,1902,1904],{"id":1903},"tipp-4-kontext-ist-wie-milch-am-besten-frisch","Tipp 4: Kontext ist wie Milch — am besten frisch",[15,1906,1907],{},"Claude Code arbeitet am Anfang einer Konversation am besten. Wenn sich Kontext anhäuft, kann die Qualität nachlassen. Starte für jedes neue Thema eine neue Konversation — oder immer dann, wenn du einen Qualitätsabfall bemerkst.",[47,1909,1911],{"id":1910},"tipp-5-bring-output-aus-deinem-terminal-heraus","Tipp 5: Bring Output aus deinem Terminal heraus",[15,1913,1914],{},"Kopieren aus dem Terminal ist nicht immer sauber. Hier sind bessere Wege:",[62,1916,1917,1925,1935,1941,1951],{},[65,1918,1919,1924],{},[22,1920,1921],{},[84,1922,1923],{},"/copy"," — Kopiert Claudes letzte Antwort als Markdown in die Zwischenablage",[65,1926,1927,1930,1931,1934],{},[22,1928,1929],{},"Clipboard-Pipe"," — Bitte Claude, unter macOS ",[84,1932,1933],{},"pbcopy"," zu verwenden, um Output in die Zwischenablage zu schicken",[65,1936,1937,1940],{},[22,1938,1939],{},"In Datei schreiben"," — Lass Claude Inhalte in eine Datei schreiben und sie in deinem Editor öffnen. Für mehr Präzision kannst du eine Zeilennummer angeben",[65,1942,1943,1946,1947,1950],{},[22,1944,1945],{},"URLs öffnen"," — Bitte Claude, Links mit dem ",[84,1948,1949],{},"open","-Befehl im Browser zu öffnen",[65,1952,1953,1956],{},[22,1954,1955],{},"GitHub Desktop"," — Bitte Claude, das aktuelle Repo in GitHub Desktop zu öffnen — besonders nützlich, wenn du in Nicht-Root-Verzeichnissen wie Worktrees arbeitest",[15,1958,1959],{},"Du kannst diese Wege auch kombinieren. Lass Claude zum Beispiel eine PR-Beschreibung in eine lokale Datei schreiben, bearbeite sie dort, prüfe sie selbst und füge sie dann zurück ein.",[47,1961,1963],{"id":1962},"tipp-6-richte-terminal-aliase-ein","Tipp 6: Richte Terminal-Aliase ein",[15,1965,1966],{},"Da du nun viel Zeit im Terminal verbringst, richte dir kurze Aliase ein:",[109,1968,1970],{"className":111,"code":1969,"language":113,"meta":114,"style":114},"alias c='claude'\nalias ch='claude --chrome'\nalias gb='github'\nalias co='code'\nalias q='cd ~/Desktop/projects'\n",[84,1971,1972,1991,2007,2023,2038],{"__ignoreMap":114},[118,1973,1974,1977,1980,1982,1985,1988],{"class":120,"line":121},[118,1975,1976],{"class":1565},"alias",[118,1978,1979],{"class":1596}," c",[118,1981,1600],{"class":128},[118,1983,1984],{"class":128},"'",[118,1986,1987],{"class":138},"claude",[118,1989,1990],{"class":128},"'\n",[118,1992,1993,1995,1998,2000,2002,2005],{"class":120,"line":135},[118,1994,1976],{"class":1565},[118,1996,1997],{"class":1596}," ch",[118,1999,1600],{"class":128},[118,2001,1984],{"class":128},[118,2003,2004],{"class":138},"claude --chrome",[118,2006,1990],{"class":128},[118,2008,2009,2011,2014,2016,2018,2021],{"class":120,"line":142},[118,2010,1976],{"class":1565},[118,2012,2013],{"class":1596}," gb",[118,2015,1600],{"class":128},[118,2017,1984],{"class":128},[118,2019,2020],{"class":138},"github",[118,2022,1990],{"class":128},[118,2024,2025,2027,2030,2032,2034,2036],{"class":120,"line":148},[118,2026,1976],{"class":1565},[118,2028,2029],{"class":1596}," co",[118,2031,1600],{"class":128},[118,2033,1984],{"class":128},[118,2035,84],{"class":138},[118,2037,1990],{"class":128},[118,2039,2040,2042,2045,2047,2049,2052],{"class":120,"line":154},[118,2041,1976],{"class":1565},[118,2043,2044],{"class":1596}," q",[118,2046,1600],{"class":128},[118,2048,1984],{"class":128},[118,2050,2051],{"class":138},"cd ~/Desktop/projects",[118,2053,1990],{"class":128},[15,2055,2056,2057,2060,2061,2064,2065,2068,2069,2072],{},"Kombiniere sie mit Flags: ",[84,2058,2059],{},"c -c"," setzt deine letzte Konversation fort, ",[84,2062,2063],{},"c -r"," zeigt die letzten Konversationen zum Fortsetzen an. Das funktioniert mit allen Aliasen (",[84,2066,2067],{},"ch -c",", ",[84,2070,2071],{},"ch -r"," usw.).",[47,2074,2076],{"id":2075},"tipp-7-verdichte-deinen-kontext-proaktiv","Tipp 7: Verdichte deinen Kontext proaktiv",[15,2078,2079,2080,2083],{},"Der Befehl ",[84,2081,2082],{},"/compact"," fasst deine Konversation zusammen, um Kontext freizugeben. Auto-Compaction wird ausgelöst, wenn der Kontext voll ist. Bei Opus 4.5 beträgt das Gesamtfenster 200k Tokens, wobei ~45k für Auto-Compaction reserviert sind und ~10 % von System-Prompt, Tools und Memory belegt werden.",[15,2085,2086,2087,2090],{},"Ein besserer Ansatz: Compaction manuell steuern. Bevor du neu startest, bitte Claude, ein ",[22,2088,2089],{},"Handoff-Dokument"," zu schreiben:",[169,2092,2093],{},[15,2094,2095],{},"„Schreibe ein Handoff-Dokument, das erklärt, was du versucht hast, was funktioniert hat und was nicht, damit der nächste Agent mit frischem Kontext dort weitermachen kann, wo du aufgehört hast.\"",[15,2097,2098],{},"Claude erstellt eine Zusammenfassungsdatei. Prüfe sie, bitte bei Bedarf um Anpassungen, starte dann eine neue Konversation und übergib einfach den Dateipfad:",[109,2100,2103],{"className":2101,"code":2102,"language":1485},[1483],"> experiments/system-prompt-extraction/NEXT-STEPS.md\n",[84,2104,2102],{"__ignoreMap":114},[15,2106,2107],{},"Der frische Agent kann von dort fortfahren. In nachfolgenden Konversationen bittest du ihn jeweils, das Dokument für die nächste Übergabe zu aktualisieren.",[47,2109,2111],{"id":2110},"tipp-8-vervollständige-den-schreib-test-zyklus","Tipp 8: Vervollständige den Schreib-Test-Zyklus",[15,2113,2114],{},"Für autonome Aufgaben braucht Claude Code eine Möglichkeit, Ergebnisse zu verifizieren. Das Muster: Code schreiben, ausführen, Output prüfen, wiederholen.",[15,2116,2117,2118,2121],{},"Für interaktive Terminals (etwa beim Testen von Claude Code selbst) verwende ",[22,2119,2120],{},"tmux",":",[109,2123,2125],{"className":111,"code":2124,"language":113,"meta":114,"style":114},"tmux kill-session -t test-session 2>/dev/null\ntmux new-session -d -s test-session\ntmux send-keys -t test-session 'claude' Enter\nsleep 2\ntmux send-keys -t test-session '/context' Enter\nsleep 1\ntmux capture-pane -t test-session -p\n",[84,2126,2127,2146,2162,2183,2191,2210,2217],{"__ignoreMap":114},[118,2128,2129,2131,2134,2137,2140,2143],{"class":120,"line":121},[118,2130,2120],{"class":124},[118,2132,2133],{"class":138}," kill-session",[118,2135,2136],{"class":138}," -t",[118,2138,2139],{"class":138}," test-session",[118,2141,2142],{"class":128}," 2>",[118,2144,2145],{"class":138},"/dev/null\n",[118,2147,2148,2150,2153,2156,2159],{"class":120,"line":135},[118,2149,2120],{"class":124},[118,2151,2152],{"class":138}," new-session",[118,2154,2155],{"class":138}," -d",[118,2157,2158],{"class":138}," -s",[118,2160,2161],{"class":138}," test-session\n",[118,2163,2164,2166,2169,2171,2173,2176,2178,2180],{"class":120,"line":142},[118,2165,2120],{"class":124},[118,2167,2168],{"class":138}," send-keys",[118,2170,2136],{"class":138},[118,2172,2139],{"class":138},[118,2174,2175],{"class":128}," '",[118,2177,1987],{"class":138},[118,2179,1984],{"class":128},[118,2181,2182],{"class":138}," Enter\n",[118,2184,2185,2188],{"class":120,"line":148},[118,2186,2187],{"class":124},"sleep",[118,2189,2190],{"class":1609}," 2\n",[118,2192,2193,2195,2197,2199,2201,2203,2206,2208],{"class":120,"line":154},[118,2194,2120],{"class":124},[118,2196,2168],{"class":138},[118,2198,2136],{"class":138},[118,2200,2139],{"class":138},[118,2202,2175],{"class":128},[118,2204,2205],{"class":138},"/context",[118,2207,1984],{"class":128},[118,2209,2182],{"class":138},[118,2211,2212,2214],{"class":120,"line":1225},[118,2213,2187],{"class":124},[118,2215,2216],{"class":1609}," 1\n",[118,2218,2219,2221,2224,2226,2228],{"class":120,"line":1681},[118,2220,2120],{"class":124},[118,2222,2223],{"class":138}," capture-pane",[118,2225,2136],{"class":138},[118,2227,2139],{"class":138},[118,2229,2230],{"class":138}," -p\n",[15,2232,2233,2234,2237],{},"Mit einem solchen Test kann Claude Code ",[84,2235,2236],{},"git bisect"," ausführen und automatisch jeden Commit testen, um den zu finden, der einen Bug eingeführt hat.",[611,2239,2241],{"id":2240},"kreative-teststrategien","Kreative Teststrategien",[15,2243,2244,2245,2248],{},"Für Web-Apps kannst du Playwright MCP, Chrome DevTools MCP oder Claudes native Browser-Integration (",[84,2246,2247],{},"/chrome",") nutzen. Playwright funktioniert in der Regel besser — es konzentriert sich auf den Accessibility Tree (strukturierte Daten) statt auf Screenshots, was es zuverlässiger macht.",[15,2250,2251],{},"Verwende Claudes native Browser-Integration nur dann, wenn du einen eingeloggten Zustand brauchst, ohne Zugangsdaten weiterzugeben, oder wenn du gezielt visuelles, koordinatenbasiertes Klicken benötigst.",[47,2253,2255],{"id":2254},"tipp-9-cmda-ist-dein-freund","Tipp 9: Cmd+A ist dein Freund",[15,2257,2258],{},"Wenn Claude eine URL nicht direkt erreichen kann (private Seiten, blockierte Seiten wie Reddit), markiere einfach alles, was du siehst (Cmd+A / Strg+A), kopiere es und füge es in Claude Code ein. Mit rohem Text-Input kommt es hervorragend zurecht.",[15,2260,2261],{},"Das funktioniert auch für Terminal-Output — alles markieren, kopieren, in Claude Code einfügen.",[47,2263,2265],{"id":2264},"tipp-10-nutze-gemini-cli-als-fallback-für-blockierte-seiten","Tipp 10: Nutze Gemini CLI als Fallback für blockierte Seiten",[15,2267,2268],{},"Claude Codes WebFetch kann bestimmte Seiten nicht erreichen. Umgehe das, indem du einen Skill erstellst, der an die Gemini CLI delegiert — sie hat breiteren Webzugriff.",[15,2270,2271,2272,2275],{},"Das nutzt das tmux-Muster aus Tipp 8 — Session starten, Befehle senden, Output erfassen. Lege die Skill-Datei in ",[84,2273,2274],{},"~/.claude/skills/reddit-fetch/SKILL.md"," ab.",[15,2277,2278],{},"Skills sind token-effizient, weil sie nur bei Bedarf geladen werden — anders als die CLAUDE.md, die in jede Konversation geladen wird.",[47,2280,2282],{"id":2281},"tipp-11-investiere-in-deinen-workflow","Tipp 11: Investiere in deinen Workflow",[15,2284,2285],{},"Pflege deine CLAUDE.md. Baue eigene Tools. Lerne die Features kennen, die für dich wichtig sind.",[15,2287,2288],{},"Du musst es nicht übertreiben — schon eine saubere, kompakte CLAUDE.md, die dir hilft, deine Ziele zu erreichen, macht einen echten Unterschied. Das sind Investitionen in die Werkzeuge, mit denen du alles andere baust.",[47,2290,2292],{"id":2291},"tipp-12-durchsuche-den-konversationsverlauf","Tipp 12: Durchsuche den Konversationsverlauf",[15,2294,2295,2296,2299,2300,2303],{},"Der gesamte Konversationsverlauf von Claude Code wird lokal in ",[84,2297,2298],{},"~/.claude/"," gespeichert. Projektspezifische Konversationen liegen in ",[84,2301,2302],{},"~/.claude/projects/"," — die Ordnernamen basieren auf den jeweiligen Projektpfaden.",[109,2305,2307],{"className":111,"code":2306,"language":113,"meta":114,"style":114},"# Konversationen finden, die \"Redis\" erwähnen\ngrep -l -i \"redis\" ~/.claude/projects/-Users-*/*.jsonl\n\n# Konversationen von heute zu einem Thema finden\nfind ~/.claude/projects/-Users-*/*.jsonl -mtime 0 -exec grep -l -i \"keyword\" {} \\;\n",[84,2308,2309,2314,2345,2349,2354],{"__ignoreMap":114},[118,2310,2311],{"class":120,"line":121},[118,2312,2313],{"class":1201},"# Konversationen finden, die \"Redis\" erwähnen\n",[118,2315,2316,2319,2322,2325,2328,2331,2333,2336,2338,2340,2342],{"class":120,"line":135},[118,2317,2318],{"class":124},"grep",[118,2320,2321],{"class":138}," -l",[118,2323,2324],{"class":138}," -i",[118,2326,2327],{"class":128}," \"",[118,2329,2330],{"class":138},"redis",[118,2332,1692],{"class":128},[118,2334,2335],{"class":138}," ~/.claude/projects/-Users-",[118,2337,1606],{"class":1596},[118,2339,1623],{"class":138},[118,2341,1606],{"class":1596},[118,2343,2344],{"class":138},".jsonl\n",[118,2346,2347],{"class":120,"line":142},[118,2348,1217],{"emptyLinePlaceholder":369},[118,2350,2351],{"class":120,"line":148},[118,2352,2353],{"class":1201},"# Konversationen von heute zu einem Thema finden\n",[118,2355,2356,2359,2361,2363,2365,2367,2370,2373,2376,2379,2382,2384,2386,2388,2391,2393,2396],{"class":120,"line":154},[118,2357,2358],{"class":124},"find",[118,2360,2335],{"class":138},[118,2362,1606],{"class":1596},[118,2364,1623],{"class":138},[118,2366,1606],{"class":1596},[118,2368,2369],{"class":138},".jsonl",[118,2371,2372],{"class":138}," -mtime",[118,2374,2375],{"class":1609}," 0",[118,2377,2378],{"class":138}," -exec",[118,2380,2381],{"class":138}," grep",[118,2383,2321],{"class":138},[118,2385,2324],{"class":138},[118,2387,2327],{"class":128},[118,2389,2390],{"class":138},"keyword",[118,2392,1692],{"class":128},[118,2394,2395],{"class":138}," {}",[118,2397,2398],{"class":1596}," \\;\n",[15,2400,2401],{},"Oder frag Claude Code einfach direkt: „Was haben wir heute zu X besprochen?\" Es durchsucht den Verlauf für dich.",[47,2403,2405],{"id":2404},"tipp-13-multitasking-mit-terminal-tabs","Tipp 13: Multitasking mit Terminal-Tabs",[15,2407,2408],{},"Wenn du mehrere Claude-Code-Instanzen parallel laufen lässt, zählt Organisation mehr als jedes spezielle technische Setup. Konzentriere dich auf höchstens drei bis vier Aufgaben gleichzeitig.",[15,2410,2411],{},[1851,2412],{"alt":2413,"src":2414},"Terminal-Tabs mit Multitasking-Workflow","images/claude-code-tips/multitasking-terminal-tabs.png",[15,2416,2417],{},"Nutze einen „Kaskaden\"-Ansatz — jede neue Aufgabe öffnet einen neuen Tab rechts daneben. Arbeite von links nach rechts, von der ältesten zur neuesten Aufgabe, und schau nach Bedarf vorbei.",[47,2419,2421],{"id":2420},"tipp-14-verschlanke-den-system-prompt","Tipp 14: Verschlanke den System-Prompt",[15,2423,2424],{},"Der System-Prompt und die Tools von Claude Code verbrauchen ~18k Tokens (~9 % deines 200k-Kontexts), bevor du überhaupt anfängst zu arbeiten. Mit Patches lässt sich das auf ~10k Tokens reduzieren — eine Einsparung von ca. 7.300 Tokens (41 % des statischen Overheads).",[15,2426,2427],{},[1851,2428],{"alt":2429,"src":2430},"Ungepatchter Kontext bei ~18k Tokens, 9 %","images/claude-code-tips/context-unpatched.png",[15,2432,2433],{},[1851,2434],{"alt":2435,"src":2436},"Gepatchter Kontext bei ~10k Tokens, 5 %","images/claude-code-tips/context-patched.png",[15,2438,2439],{},"Die Patches kürzen ausführliche Beispiele und redundanten Text, behalten aber die wesentlichen Anweisungen bei. Es fühlt sich direkter und kraftvoller an — mehr Platz, bevor der Kontext voll ist, was längere Konversationen ermöglicht.",[611,2441,2443],{"id":2442},"mcp-tools-per-lazy-loading-laden","MCP-Tools per Lazy-Loading laden",[15,2445,2446],{},"Wenn du MCP-Server nutzt, werden deren Tool-Definitionen standardmäßig in jede Konversation geladen. Aktiviere Lazy-Loading:",[109,2448,2452],{"className":2449,"code":2450,"language":2451,"meta":114,"style":114},"language-json shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","{\n  \"env\": {\n    \"ENABLE_TOOL_SEARCH\": \"true\"\n  }\n}\n","json",[84,2453,2454,2459,2474,2494,2499],{"__ignoreMap":114},[118,2455,2456],{"class":120,"line":121},[118,2457,2458],{"class":128},"{\n",[118,2460,2461,2464,2467,2469,2471],{"class":120,"line":135},[118,2462,2463],{"class":128},"  \"",[118,2465,2466],{"class":1565},"env",[118,2468,1692],{"class":128},[118,2470,2121],{"class":128},[118,2472,2473],{"class":128}," {\n",[118,2475,2476,2479,2482,2484,2486,2488,2491],{"class":120,"line":142},[118,2477,2478],{"class":128},"    \"",[118,2480,2481],{"class":124},"ENABLE_TOOL_SEARCH",[118,2483,1692],{"class":128},[118,2485,2121],{"class":128},[118,2487,2327],{"class":128},[118,2489,2490],{"class":138},"true",[118,2492,2493],{"class":128},"\"\n",[118,2495,2496],{"class":120,"line":148},[118,2497,2498],{"class":128},"  }\n",[118,2500,2501],{"class":120,"line":154},[118,2502,2503],{"class":128},"}\n",[15,2505,2506,2507,2510],{},"Füge das in ",[84,2508,2509],{},"~/.claude/settings.json"," ein. Ab Version 2.1.7 geschieht das automatisch, sobald die MCP-Tool-Beschreibungen 10 % des Kontextfensters überschreiten.",[47,2512,2514],{"id":2513},"tipp-15-git-worktrees-für-parallele-branch-arbeit","Tipp 15: Git Worktrees für parallele Branch-Arbeit",[15,2516,2517],{},"Arbeitest du gleichzeitig an mehreren Branches? Mit Git Worktrees kannst du in separaten Verzeichnissen an unterschiedlichen Branches arbeiten — ohne Konflikte. Bitte Claude Code einfach, einen anzulegen — du musst dir die Syntax nicht merken.",[15,2519,2520],{},"Kombiniere Worktrees mit der Kaskaden-Tab-Methode für maximale Parallelität.",[47,2522,2524],{"id":2523},"tipp-16-manueller-exponentieller-backoff-für-lange-jobs","Tipp 16: Manueller exponentieller Backoff für lange Jobs",[15,2526,2527],{},"Wenn du auf Docker-Builds oder GitHub-CI wartest, bitte Claude Code, den Status in immer größeren Intervallen zu prüfen — eine Minute, zwei Minuten, vier Minuten und so weiter.",[15,2529,2530],{},[1851,2531],{"alt":2532,"src":2533},"Manueller exponentieller Backoff beim Prüfen des Docker-Build-Fortschritts","images/claude-code-tips/manual-exponential-backoff.png",[15,2535,2536,2537,2540,2541,2544],{},"Speziell bei GitHub-CI gibt ",[84,2538,2539],{},"gh run watch"," durchgehend viele Zeilen aus, was Tokens verschwendet. Manueller Backoff mit ",[84,2542,2543],{},"gh run view \u003Crun-id> | grep \u003Cjob-name>"," ist token-effizienter.",[47,2546,2548],{"id":2547},"tipp-17-claude-code-als-schreibassistent","Tipp 17: Claude Code als Schreibassistent",[15,2550,2551],{},"Claude Code ist ein hervorragender Schreibpartner. Der Workflow:",[882,2553,2554,2557,2560,2563],{},[65,2555,2556],{},"Gib ihm Kontext zu dem, was du schreiben willst",[65,2558,2559],{},"Liefere detaillierte Anweisungen per Sprache",[65,2561,2562],{},"Hol dir einen ersten Entwurf",[65,2564,2565],{},"Geh ihn Zeile für Zeile durch — „Diese Zeile gefällt mir\", „Verschieb diesen Abschnitt dorthin\", „Ändere diesen Teil\"",[15,2567,2568],{},[1851,2569],{"alt":2570,"src":2571},"Side-by-side Schreib-Workflow mit Terminal und Editor","images/claude-code-tips/writing-assistant-side-by-side.png",[15,2573,2574],{},"Der iterative Hin-und-Her-Prozess — Terminal links, Editor rechts — liefert überraschend gute Ergebnisse.",[47,2576,2578],{"id":2577},"tipp-18-markdown-ist-könig","Tipp 18: Markdown ist König",[15,2580,2581],{},"Mit den Schreibfähigkeiten von Claude Code wird Markdown zum effizientesten Dokumentformat. Blogposts, LinkedIn-Posts, Dokumentation — mit Claude Code sprechen, als Markdown speichern, weiterarbeiten.",[15,2583,2584,2587],{},[22,2585,2586],{},"Tipp am Rande:"," Wenn du Markdown in eine Plattform einfügen musst, die es nicht unterstützt, füge es zuerst in Notion ein und kopiere es von dort in die Zielplattform. Notion konvertiert es in ein kompatibles Format.",[47,2589,2591],{"id":2590},"tipp-19-nutze-notion-um-links-beim-einfügen-zu-erhalten","Tipp 19: Nutze Notion, um Links beim Einfügen zu erhalten",[15,2593,2594],{},"Andersherum funktioniert es auch. Wenn du Text mit Links aus Slack oder anderen Apps hast, füge ihn zuerst in Notion ein und kopiere ihn von dort weiter — so bekommst du sauberes Markdown mit Links, das Claude Code lesen kann.",[47,2596,2598],{"id":2597},"tipp-20-container-für-lange-riskante-aufgaben","Tipp 20: Container für lange, riskante Aufgaben",[15,2600,2601,2602,2605],{},"Containerisierte Umgebungen sind ideal für Sessions mit ",[84,2603,2604],{},"--dangerously-skip-permissions",". Nutze sie für Recherche, Experimente und alles, was lange dauert oder Risiken birgt.",[611,2607,2609],{"id":2608},"eine-worker-instanz-orchestrieren","Eine Worker-Instanz orchestrieren",[15,2611,2612],{},"Geh noch einen Schritt weiter, indem dein lokales Claude Code per tmux eine andere Instanz innerhalb eines Containers steuert:",[882,2614,2615,2618,2621,2626],{},[65,2616,2617],{},"Das lokale Claude Code startet eine tmux-Session",[65,2619,2620],{},"Es verbindet sich mit dem Container",[65,2622,2623,2624],{},"Im Container läuft Claude Code mit ",[84,2625,2604],{},[65,2627,2628,2629,262,2632,2635],{},"Die äußere Instanz nutzt ",[84,2630,2631],{},"tmux send-keys",[84,2633,2634],{},"capture-pane"," zur Kommunikation",[15,2637,2638],{},"Das ergibt einen vollständig autonomen Worker für experimentelle oder langlaufende Aufgaben — abgeschottet in einem Container.",[611,2640,2642],{"id":2641},"multi-modell-orchestrierung","Multi-Modell-Orchestrierung",[15,2644,2645],{},"Lass verschiedene KI-CLIs in Containern laufen — Codex, Gemini CLI usw. Claude Code wird zur zentralen Schnittstelle, die alles koordiniert: Modelle starten, Daten zwischen Containern und deinem Host weiterreichen.",[47,2647,2649],{"id":2648},"tipp-21-der-beste-weg-zum-lernen-ist-das-tun","Tipp 21: Der beste Weg zum Lernen ist das Tun",[15,2651,2652,2653,2656],{},"Stell es dir wie eine ",[22,2654,2655],{},"Milliarden-Token-Regel"," statt einer 10.000-Stunden-Regel vor. Der beste Weg, Intuition für KI aufzubauen, besteht darin, Tokens zu verbrauchen. Nutze es. Viel. Mehrere Sessions gleichzeitig.",[15,2658,2659],{},"Tipps und Guides helfen, aber nichts ersetzt praktische Erfahrung.",[47,2661,2663],{"id":2662},"tipp-22-konversationen-klonen-um-alternativen-auszuprobieren","Tipp 22: Konversationen klonen, um Alternativen auszuprobieren",[15,2665,2666],{},"Willst du einen anderen Ansatz ausprobieren, ohne deinen ursprünglichen Thread zu verlieren? Claude Code unterstützt jetzt natives Forking:",[62,2668,2669,2677],{},[65,2670,2671,2676],{},[22,2672,2673],{},[84,2674,2675],{},"/fork"," — Forkt die aktuelle Session aus einer Konversation heraus",[65,2678,2679,2684,2685,2688,2689,2692,2693,1663],{},[22,2680,2681],{},[84,2682,2683],{},"--fork-session"," — In Kombination mit ",[84,2686,2687],{},"--resume"," oder ",[84,2690,2691],{},"--continue"," (z. B. ",[84,2694,2695],{},"claude -c --fork-session",[15,2697,2698],{},"Füge einen Shortcut für das Flag hinzu:",[109,2700,2702],{"className":111,"code":2701,"language":113,"meta":114,"style":114},"claude() {\n  local args=()\n  for arg in \"$@\"; do\n    if [[ \"$arg\" == \"--fs\" ]]; then\n      args+=(\"--fork-session\")\n    else\n      args+=(\"$arg\")\n    fi\n  done\n  command claude \"${args[@]}\"\n}\n",[84,2703,2704,2713,2724,2748,2779,2795,2800,2814,2819,2825,2843],{"__ignoreMap":114},[118,2705,2706,2708,2711],{"class":120,"line":121},[118,2707,1987],{"class":1569},[118,2709,2710],{"class":128},"()",[118,2712,2473],{"class":128},[118,2714,2715,2718,2721],{"class":120,"line":135},[118,2716,2717],{"class":1565},"  local",[118,2719,2720],{"class":1596}," args",[118,2722,2723],{"class":128},"=()\n",[118,2725,2726,2729,2732,2735,2737,2740,2742,2745],{"class":120,"line":142},[118,2727,2728],{"class":1630},"  for",[118,2730,2731],{"class":1596}," arg ",[118,2733,2734],{"class":1630},"in",[118,2736,2327],{"class":128},[118,2738,2739],{"class":1576},"$@",[118,2741,1692],{"class":128},[118,2743,2744],{"class":128},";",[118,2746,2747],{"class":1630}," do\n",[118,2749,2750,2753,2756,2758,2761,2763,2766,2768,2771,2773,2776],{"class":120,"line":148},[118,2751,2752],{"class":1630},"    if",[118,2754,2755],{"class":128}," [[",[118,2757,2327],{"class":128},[118,2759,2760],{"class":1596},"$arg",[118,2762,1692],{"class":128},[118,2764,2765],{"class":128}," ==",[118,2767,2327],{"class":128},[118,2769,2770],{"class":138},"--fs",[118,2772,1692],{"class":128},[118,2774,2775],{"class":128}," ]];",[118,2777,2778],{"class":1630}," then\n",[118,2780,2781,2784,2787,2789,2791,2793],{"class":120,"line":154},[118,2782,2783],{"class":1596},"      args",[118,2785,2786],{"class":128},"+=(",[118,2788,1692],{"class":128},[118,2790,2683],{"class":138},[118,2792,1692],{"class":128},[118,2794,1727],{"class":128},[118,2796,2797],{"class":120,"line":1225},[118,2798,2799],{"class":1630},"    else\n",[118,2801,2802,2804,2806,2808,2810,2812],{"class":120,"line":1681},[118,2803,2783],{"class":1596},[118,2805,2786],{"class":128},[118,2807,1692],{"class":128},[118,2809,2760],{"class":1596},[118,2811,1692],{"class":128},[118,2813,1727],{"class":128},[118,2815,2816],{"class":120,"line":1730},[118,2817,2818],{"class":1630},"    fi\n",[118,2820,2822],{"class":120,"line":2821},9,[118,2823,2824],{"class":1630},"  done\n",[118,2826,2828,2831,2834,2837,2840],{"class":120,"line":2827},10,[118,2829,2830],{"class":1569},"  command",[118,2832,2833],{"class":138}," claude",[118,2835,2836],{"class":128}," \"${",[118,2838,2839],{"class":1596},"args",[118,2841,2842],{"class":128},"[@]}\"\n",[118,2844,2846],{"class":120,"line":2845},11,[118,2847,2503],{"class":128},[15,2849,2850,2851,2854],{},"Jetzt forkt ",[84,2852,2853],{},"c -c --fs"," und setzt die Konversation in einem einzigen Befehl fort.",[611,2856,2858],{"id":2857},"half-clone-zur-reduzierung-des-kontexts","Half-Clone zur Reduzierung des Kontexts",[15,2860,2861],{},"Wenn eine Konversation zu lang wird, behält ein Half-Clone nur die spätere Hälfte — das senkt die Token-Nutzung und bewahrt gleichzeitig die jüngsten Arbeitsschritte.",[47,2863,2865],{"id":2864},"tipp-23-nutze-realpath-für-absolute-pfade","Tipp 23: Nutze realpath für absolute Pfade",[15,2867,2868,2869,2872],{},"Wenn du Claude Code auf Dateien in anderen Verzeichnissen verweist, verwende ",[84,2870,2871],{},"realpath",", um den vollständigen absoluten Pfad zu bekommen:",[109,2874,2876],{"className":111,"code":2875,"language":113,"meta":114,"style":114},"realpath some/relative/path\n",[84,2877,2878],{"__ignoreMap":114},[118,2879,2880,2882],{"class":120,"line":121},[118,2881,2871],{"class":124},[118,2883,2884],{"class":138}," some/relative/path\n",[15,2886,2887],{},"Simpel, erspart aber viel Verwirrung.",[47,2889,2891],{"id":2890},"tipp-24-claudemd-vs-skills-vs-slash-commands-vs-plugins","Tipp 24: CLAUDE.md vs. Skills vs. Slash Commands vs. Plugins",[15,2893,2894],{},"Diese Features können verwirrend sein. Hier die Aufschlüsselung:",[62,2896,2897,2903,2909,2915],{},[65,2898,2899,2902],{},[22,2900,2901],{},"CLAUDE.md"," — Wird immer in jede Konversation geladen. Einfach, aber stets präsent. Gut für Projektkontext und persistente Anweisungen",[65,2904,2905,2908],{},[22,2906,2907],{},"Skills"," — Wie strukturierte CLAUDE.md-Dateien, aber nur bei Bedarf geladen. Token-effizienter. Können automatisch oder manuell aufgerufen werden",[65,2910,2911,2914],{},[22,2912,2913],{},"Slash Commands"," — Ähnlich wie Skills, aber in erster Linie dafür gedacht, vom Nutzer zu einem bestimmten Zeitpunkt aufgerufen zu werden",[65,2916,2917,2920],{},[22,2918,2919],{},"Plugins"," — Pakete, die Skills, Slash Commands, Agents, Hooks und MCP-Server bündeln können",[15,2922,2923],{},"Skills und Slash Commands sind in den jüngsten Versionen näher zusammengewachsen. Der entscheidende Trade-off bleibt: immer geladen (CLAUDE.md) vs. bei Bedarf (Skills/Commands).",[47,2925,2927],{"id":2926},"tipp-25-interaktive-pr-reviews","Tipp 25: Interaktive PR-Reviews",[15,2929,2930,2931,2933],{},"Claude Code glänzt bei PR-Reviews. Hol dir die PR-Infos mit ",[84,2932,1899],{}," und geh sie dann beliebig durch — allgemeiner Überblick, Datei für Datei oder im Detail durch bestimmte Abschnitte.",[15,2935,2936,2937,2940],{},"Der entscheidende Vorteil: Das Review ist ",[22,2938,2939],{},"interaktiv",". Kein One-Shot-Review, sondern ein Gespräch, bei dem du Tempo und Tiefe steuerst.",[47,2942,2944],{"id":2943},"tipp-26-claude-code-als-recherche-tool","Tipp 26: Claude Code als Recherche-Tool",[15,2946,2947],{},"Claude Code ist ein mächtiges Recherche-Tool. Egal ob du GitHub-Actions-Fehler untersuchst, Sentiment-Analysen durchführst, Codebasen erkundest oder öffentliche Informationen durchforstest — Claude Code kommt damit klar.",[15,2949,2950,2951,2953],{},"Entscheidend ist, ihm die richtigen Zugangswege zu geben: ",[84,2952,1899],{}," für GitHub, Container für riskante Operationen, Gemini CLI für blockierte Seiten, MCP für Slack und andere Dienste, Cmd+A für manuellen Inhaltstransfer.",[47,2955,2957],{"id":2956},"tipp-27-verifiziere-output-auf-mehreren-wegen","Tipp 27: Verifiziere Output auf mehreren Wegen",[15,2959,2960],{},"Verlass dich nicht auf eine einzige Verifikationsmethode:",[62,2962,2963,2969,2975,2981],{},[65,2964,2965,2968],{},[22,2966,2967],{},"Tests"," — Lass Claude Tests für seinen eigenen Code schreiben und ausführen",[65,2970,2971,2974],{},[22,2972,2973],{},"Visueller Diff"," — Nutze einen Git-Client wie GitHub Desktop, um Änderungen zu überprüfen",[65,2976,2977,2980],{},[22,2978,2979],{},"Draft-PRs"," — Erstelle Draft-PRs und prüfe sie, bevor du sie als bereit markierst",[65,2982,2983,2986],{},[22,2984,2985],{},"Selbstprüfung"," — Bitte Claude, seine Arbeit zu überprüfen: „Verifiziere jede Behauptung, die du aufgestellt hast, und erstelle eine Tabelle mit dem, was du bestätigen konntest\"",[47,2988,2990],{"id":2989},"tipp-28-claude-code-als-devops-ingenieur","Tipp 28: Claude Code als DevOps-Ingenieur",[15,2992,2993],{},"Bei CI/CD-Fehlern kann Claude Code Logs durchforsten, deren manuelle Auswertung schmerzhaft wäre. Gib ihm einen fehlgeschlagenen GitHub-Actions-Run und bitte ihn, die Ursache zu finden.",[15,2995,2996],{},"Hak nach, wenn er nur oberflächliche Antworten liefert — war es ein bestimmter Commit? Ein flaky Test? Ein Dependency-Problem? Sobald die Ursache identifiziert ist, lass ihn einen Draft-PR mit dem Fix erstellen.",[47,2998,3000],{"id":2999},"tipp-29-halte-claudemd-schlicht","Tipp 29: Halte CLAUDE.md schlicht",[15,3002,3003],{},"Beginne ganz ohne CLAUDE.md. Füge erst dann Anweisungen hinzu, wenn du merkst, dass du dasselbe wiederholt sagst. Lass Claude Code seine eigene CLAUDE.md auf Basis deiner mündlichen Anweisungen bearbeiten — es weiß genau, was zu ändern ist.",[15,3005,3006],{},"Weniger ist mehr. Jedes Token in der CLAUDE.md wird in jede Konversation geladen.",[47,3008,3010],{"id":3009},"tipp-30-claude-code-als-universelle-schnittstelle","Tipp 30: Claude Code als universelle Schnittstelle",[15,3012,3013],{},"Claude Code ist nicht nur ein Coding-Tool — es ist eine universelle Schnittstelle zu deinem Computer. Schnelle Video-Bearbeitung über ffmpeg, Audio-Transkription mit Whisper, Datenvisualisierung mit Python — und mit Internetzugang sind die Möglichkeiten endlos.",[15,3015,3016],{},"Es ist eine Rückkehr zur Text-Schnittstelle, aber jeder Terminal-Tab ist jetzt ein autonomes Gehirn, an das du Arbeit delegieren kannst. Je besser die Modelle werden, desto mehr lästige Aufgaben kannst du auslagern.",[47,3018,3020],{"id":3019},"tipp-31-wähle-die-richtige-abstraktionsebene","Tipp 31: Wähle die richtige Abstraktionsebene",[15,3022,3023],{},"Es ist keine binäre Entscheidung zwischen „Vibe Coding\" und „sorgfältigem Engineering\" — es ist ein Spektrum.",[15,3025,3026],{},[1851,3027],{"alt":3028,"src":3029},"Das Vibe-Coding-Spektrum von der hohen Ebene bis zur tiefen Inspektion","images/claude-code-tips/vibe-coding-spectrum.png",[15,3031,3032],{},"Manchmal reicht es, über die Oberfläche zu fliegen — Einmalprojekte, unkritischer Code. In anderen Fällen musst du tiefer gehen: Dateistrukturen inspizieren, einzelne Funktionen, bestimmte Zeilen, Abhängigkeiten.",[15,3034,3035],{},"Stell es dir wie das Erkunden eines Eisbergs vor. Du wählst die Tiefe. Claude Code ist dein Guide auf jeder Ebene.",[354,3037,3038],{},"html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}",{"title":114,"searchDepth":135,"depth":142,"links":3040},[3041,3042,3043,3044,3045,3046,3047,3048,3049,3052,3053,3054,3055,3056,3057,3060,3061,3062,3063,3064,3065,3069,3070,3073,3074,3075,3076,3077,3078,3079,3080,3081],{"id":1799,"depth":135,"text":1800},{"id":1815,"depth":135,"text":1816},{"id":1840,"depth":135,"text":1841},{"id":1878,"depth":135,"text":1879},{"id":1903,"depth":135,"text":1904},{"id":1910,"depth":135,"text":1911},{"id":1962,"depth":135,"text":1963},{"id":2075,"depth":135,"text":2076},{"id":2110,"depth":135,"text":2111,"children":3050},[3051],{"id":2240,"depth":142,"text":2241},{"id":2254,"depth":135,"text":2255},{"id":2264,"depth":135,"text":2265},{"id":2281,"depth":135,"text":2282},{"id":2291,"depth":135,"text":2292},{"id":2404,"depth":135,"text":2405},{"id":2420,"depth":135,"text":2421,"children":3058},[3059],{"id":2442,"depth":142,"text":2443},{"id":2513,"depth":135,"text":2514},{"id":2523,"depth":135,"text":2524},{"id":2547,"depth":135,"text":2548},{"id":2577,"depth":135,"text":2578},{"id":2590,"depth":135,"text":2591},{"id":2597,"depth":135,"text":2598,"children":3066},[3067,3068],{"id":2608,"depth":142,"text":2609},{"id":2641,"depth":142,"text":2642},{"id":2648,"depth":135,"text":2649},{"id":2662,"depth":135,"text":2663,"children":3071},[3072],{"id":2857,"depth":142,"text":2858},{"id":2864,"depth":135,"text":2865},{"id":2890,"depth":135,"text":2891},{"id":2926,"depth":135,"text":2927},{"id":2943,"depth":135,"text":2944},{"id":2956,"depth":135,"text":2957},{"id":2989,"depth":135,"text":2990},{"id":2999,"depth":135,"text":3000},{"id":3009,"depth":135,"text":3010},{"id":3019,"depth":135,"text":3020},"2026-01-28T00:00:00.000Z","Eine umfassende Sammlung praktischer Tipps, um das Beste aus Claude Code herauszuholen — von benutzerdefinierten Statuszeilen und Spracheingabe bis hin zu Container-Orchestrierung und Multi-Modell-Workflows.",{},"/blog/vibe-coding/2026-01-28-claude-code-tips-from-basics-to-advanced",{"title":1785,"description":3083},"blog/vibe-coding/2026-01-28-claude-code-tips-from-basics-to-advanced",[549,1081,1082,1083,3089],"cli-tools","d51syAC13kPF1eto48xrqjDxcpWGsUEjjB2lrwpUqDE",1794136278224]