[{"data":1,"prerenderedAt":1192},["ShallowReactive",2],{"blog-/blog/vibe-coding/2026-02-19-scope-codebase-aware-ticket-generation":3,"/blog/vibe-coding/2026-02-19-scope-codebase-aware-ticket-generation-surround":240,"/blog/vibe-coding/2026-02-19-scope-codebase-aware-ticket-generation-related":251},{"id":4,"title":5,"author":6,"body":7,"category":222,"date":223,"description":224,"extension":225,"featured":226,"image":227,"meta":228,"navigation":229,"path":230,"seo":231,"stem":232,"tags":233,"__hash__":239},"blog/blog/vibe-coding/2026-02-19-scope-codebase-aware-ticket-generation.md","Scope: Generiere implementierungsreife Linear-Tickets aus deiner Codebasis","Wilson",{"type":8,"value":9,"toc":209},"minimark",[10,14,18,38,44,54,59,67,115,118,122,125,130,133,137,140,144,147,150,153,161,164,168,171,174,181,188,192,195,206],[11,12,5],"h1",{"id":13},"scope-generiere-implementierungsreife-linear-tickets-aus-deiner-codebasis",[15,16,17],"p",{},"Wenn du in einem Team gearbeitet hast, das Linear (oder irgendein anderes Issue-Tracking-Tool) nutzt, hast du diesen Ablauf wahrscheinlich schon erlebt:",[19,20,21,29,32,35],"ol",{},[22,23,24,25],"li",{},"Ein PM oder Entwickler schreibt ein Ticket: ",[26,27,28],"em",{},"„Füge E-Mail-Benachrichtigungen für Bestellungen hinzu\"",[22,30,31],{},"Ein Entwickler liest das Ticket, öffnet die Codebasis und verbringt 30 Minuten damit, herauszufinden, welche Dateien betroffen sind",[22,33,34],{},"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",[22,36,37],{},"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,39,40,41],{},"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. ",[26,42,43],{},"„Wo lebt das in der Codebasis?\" „Welche Models sind betroffen?\" „Brauchen wir eine Migration?\" „Was ist mit dem bestehenden Benachrichtigungssystem?\"",[15,45,46,53],{},[47,48,52],"a",{"href":49,"rel":50},"https://usescope.dev",[51],"nofollow","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.",[55,56,58],"h2",{"id":57},"was-implementierungsreif-eigentlich-bedeutet","Was „implementierungsreif\" eigentlich bedeutet",[15,60,61,62,66],{},"Ein typisches Linear-Issue hat einen Titel und eine von Menschen geschriebene Beschreibung. Scope generiert Tickets mit ",[63,64,65],"strong",{},"32 strukturierten Feldern",", darunter:",[68,69,70,85,91,97,103,109],"ul",{},[22,71,72,75,76,80,81,84],{},[63,73,74],{},"Exakte Dateien zum Erstellen und Ändern"," — nicht „Backend aktualisieren\", sondern ",[77,78,79],"code",{},"app/services/order_notification_service.rb"," (erstellen), ",[77,82,83],{},"app/models/order.rb"," (ändern)",[22,86,87,90],{},[63,88,89],{},"Verwandte Entitäten und Endpoints"," — welche Datenmodelle beteiligt sind und wie sie zusammenhängen",[22,92,93,96],{},[63,94,95],{},"Schemaänderungen"," — welche Migrationen nötig sind",[22,98,99,102],{},[63,100,101],{},"Abhängigkeiten"," — welche Tickets zuerst ausgeliefert werden müssen und warum",[22,104,105,108],{},[63,106,107],{},"Akzeptanzkriterien"," — überprüfbare Bedingungen, kein vages „es sollte funktionieren\"",[22,110,111,114],{},[63,112,113],{},"Implementierungsplan"," — geordnete Schritte innerhalb jedes Tickets",[15,116,117],{},"Du kannst diese direkt per CSV-Import in Linear exportieren oder als Markdown kopieren.",[55,119,121],{"id":120},"wie-es-unter-der-haube-funktioniert","Wie es unter der Haube funktioniert",[15,123,124],{},"Wenn du dein GitHub-Repo verbindest, führt Scope eine dreischichtige Analyse durch:",[126,127,129],"h3",{"id":128},"_1-tree-sitter-ast-parsing","1. Tree-sitter AST-Parsing",[15,131,132],{},"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.",[126,134,136],{"id":135},"_2-abhängigkeitsgraph-pagerank","2. Abhängigkeitsgraph + PageRank",[15,138,139],{},"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.",[126,141,143],{"id":142},"_3-semantische-interpretation-durch-ein-llm","3. Semantische Interpretation durch ein LLM",[15,145,146],{},"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,148,149],{},"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,151,152],{},"Dann beschreibst du, was du willst:",[154,155,156],"blockquote",{},[15,157,158],{},[26,159,160],{},"„Füge transaktionale E-Mail-Benachrichtigungen für Bestelllebenszyklus-Ereignisse, Budget-Warnungen und Lieferantenverbindungen hinzu.\"",[15,162,163],{},"Und Scope zerlegt das in geordnete, abhängigkeitsbewusste Tickets mit vollständigem Codebasis-Kontext eingebaut.",[55,165,167],{"id":166},"warum-das-für-ki-gestützte-entwicklung-wichtig-ist","Warum das für KI-gestützte Entwicklung wichtig ist",[15,169,170],{},"Hier wird Scope besonders interessant für Vibe-Coding-Workflows.",[15,172,173],{},"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,175,176,177,180],{},"Es stellt außerdem ",[63,178,179],{},"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,182,183,184,187],{},"Der Entwickler hat das an seinem eigenen Projekt selbst ausprobiert: Zwei Sätze haben 5 geordnete Tickets generiert. Claude Code hat sie abgearbeitet und ",[63,185,186],{},"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.",[55,189,191],{"id":190},"das-große-ganze","Das große Ganze",[15,193,194],{},"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,196,197,198,201,202,205],{},"Tools wie Scope deuten auf eine Zukunft hin, in der die Planungsphase selbst KI-erweitert wird — nicht indem menschliches Urteilsvermögen darüber, ",[26,199,200],{},"was"," gebaut werden soll, ersetzt wird, sondern indem das mühsame Mapping davon, ",[26,203,204],{},"wie es mit dem Bestehenden verbunden ist",", automatisiert wird.",[15,207,208],{},"Wenn dein Team mehr Zeit mit dem Klären von Tickets verbringt als mit deren Umsetzung, ist das einen Blick wert.",{"title":210,"searchDepth":211,"depth":212,"links":213},"",2,3,[214,215,220,221],{"id":57,"depth":211,"text":58},{"id":120,"depth":211,"text":121,"children":216},[217,218,219],{"id":128,"depth":212,"text":129},{"id":135,"depth":212,"text":136},{"id":142,"depth":212,"text":143},{"id":166,"depth":211,"text":167},{"id":190,"depth":211,"text":191},"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.","md",false,"images/scope-codebase-aware-tickets.svg",{},true,"/blog/vibe-coding/2026-02-19-scope-codebase-aware-ticket-generation",{"title":5,"description":224},"blog/vibe-coding/2026-02-19-scope-codebase-aware-ticket-generation",[234,235,236,237,238],"ai-assisted","productivity","developer-experience","linear","project-management","pFWd6YRJroCJ995iiX3C1n2ROQNLhXB4la_gzu5hpTo",[241,246],{"title":242,"path":243,"stem":244,"description":245,"children":-1},"Was ist Vibe Coding?","/blog/vibe-coding/2026-02-12-what-is-vibe-coding","blog/vibe-coding/2026-02-12-what-is-vibe-coding","Vibe Coding ist ein neuer Ansatz in der Softwareentwicklung, bei dem man KI per natürlicher Sprache anleitet, Software zu bauen.",{"title":247,"path":248,"stem":249,"description":250,"children":-1},"Gmail CLI mit Claude Code bauen – 15.000 E-Mails in Minuten archiviert","/blog/vibe-coding/2026-03-03-gmail-cli-mit-claude-code","blog/vibe-coding/2026-03-03-gmail-cli-mit-claude-code","Wie man mit Claude Code einen Gmail CLI entwickelt, um den Posteingang per Kommandozeile zu verwalten und tausende E-Mails effizient zu archivieren.",[252,510,692],{"id":253,"title":254,"author":6,"body":255,"category":222,"date":496,"description":497,"extension":225,"featured":229,"image":498,"meta":499,"navigation":229,"path":500,"seo":501,"stem":502,"tags":503,"__hash__":509},"blog/blog/vibe-coding/2026-05-06-dark-factories-und-trycycle.md","Dark Factories und der Aufstieg des Trycycle: Wenn KI Software am Fließband baut",{"type":8,"value":256,"toc":485},[257,260,267,280,284,291,294,307,310,314,318,326,330,333,350,354,374,377,394,403,407,414,421,441,445,448,465,468,472,479,482],[11,258,254],{"id":259},"dark-factories-und-der-aufstieg-des-trycycle-wenn-ki-software-am-fließband-baut",[15,261,262,263,266],{},"Eine neue Klasse von Werkzeugen verändert gerade still und leise, wie Software entsteht: ",[63,264,265],{},"Dark Factories",". Das sind keine Editoren, keine Copilot-Erweiterungen und auch keine Chat-Fenster – sondern Maschinen, die aus einer Spezifikation eigenständig lauffähigen, getesteten Code produzieren. Man füttert sie mit einem Problem, sie laufen über Stunden, und am Morgen liegt das Feature im Repository.",[15,268,269,270,275,276,279],{},"Dan Shapiro hat in ",[47,271,274],{"href":272,"rel":273},"https://www.danshapiro.com/blog/2026/03/dark-factories-rise-of-the-trycycle/",[51],"seinem Blog"," drei der derzeit interessantesten Ansätze nebeneinandergestellt – und mit ",[63,277,278],{},"Trycycle"," gleich noch eine eigene, radikal einfache Variante geliefert.",[55,281,283],{"id":282},"die-erkenntnis-hinter-den-fabriken","Die Erkenntnis hinter den Fabriken",[15,285,286,287,290],{},"Im Kern aller Dark Factories steckt ein simpler Befund: ",[63,288,289],{},"KI wird besser, wenn man mehr davon macht."," Mehr Versuche, mehr parallele Modelle, mehr Iterationen. Was sich nach Verschwendung anhört, liefert messbar bessere Ergebnisse als jeder einzelne Modell-Aufruf.",[15,292,293],{},"Zwei Muster haben sich dafür durchgesetzt:",[68,295,296,302],{},[22,297,298,301],{},[63,299,300],{},"Slot Machine Development"," – statt eine KI zu fragen, fragst du drei gleichzeitig und wählst die beste Antwort.",[22,303,304,306],{},[63,305,278],{}," – ein Loop, der so lange iteriert, bis das Ergebnis stimmt: Plan schreiben, Plan prüfen, Code schreiben, Code prüfen, von vorne beginnen, falls nötig.",[15,308,309],{},"Beide Muster lassen sich kombinieren. Und beide haben sich als überraschend unaufhaltsam erwiesen: Mit genug Zeit und Tokens lässt sich nahezu jedes Problem von einer Trycycle erschlagen.",[55,311,313],{"id":312},"drei-fabriken-drei-philosophien","Drei Fabriken, drei Philosophien",[126,315,317],{"id":316},"gastown-mad-max-für-code","Gastown: Mad Max für Code",[15,319,320,325],{},[47,321,324],{"href":322,"rel":323},"https://steve-yegge.medium.com/welcome-to-the-wasteland-a-thousand-gas-towns-a5eb9bc8dc1f",[51],"Gastown"," von Steve Yegge ist die theatralischste Variante. Mit Bürgermeistern, Konvois und „Polecats\", die in der Wüste deiner CPU um Guzzoline kämpfen, ist Gastown zu einem MMORPG fürs Programmieren mutiert. Es ist ein bewusst chaotisches, communitygetriebenes Experiment – wer mitmachen will, wird Teil einer wachsenden Bewegung von Entwicklern, die gemeinsam Tokens verbrennen.",[126,327,329],{"id":328},"strongdm-attractor-factorio-für-engineers","StrongDM Attractor: Factorio für Engineers",[15,331,332],{},"Justin Massa und sein Team bei StrongDM haben einen anderen Weg gewählt. Sie haben beobachtet, dass moderne Modelle irgendwann letztes Jahr eine unsichtbare Schwelle überschritten haben: Vorher haben sie pro Iteration neun Bugs gefixt und zehn neue eingebaut. Inzwischen werden sie mit jedem Zyklus tatsächlich besser.",[15,334,335,336,341,342,349],{},"Statt eine fertige Fabrik auszuliefern, hat StrongDM nur die ",[47,337,340],{"href":338,"rel":339},"https://factory.strongdm.ai/products/attractor",[51],"Spezifikation des Attractors"," veröffentlicht. Jeder kann sich seine eigene Variante bauen – flexibel, konfigurierbar, mächtig. Wer eine fertige Implementierung in Go bevorzugt, greift zu ",[63,343,344],{},[47,345,348],{"href":346,"rel":347},"https://github.com/danshapiro/kilroy",[51],"Kilroy",": ein vollständig lauffähiger Attractor inklusive Tests, Beispieldateien und Konfigurationen, an dem Shapiro und einige Mitstreiter rund einen Monat gefeilt haben.",[126,351,353],{"id":352},"trycycle-die-fabrik-in-fünf-minuten","Trycycle: Die Fabrik in fünf Minuten",[15,355,356,357,363,364,367,368,373],{},"Bei aller Mächtigkeit: Kilroy zu konfigurieren ist Arbeit. Genau das war Shapiros Anlass für die einfachste denkbare Variante – ",[63,358,359],{},[47,360,278],{"href":361,"rel":362},"https://github.com/danshapiro/trycycle",[51],". Kein Framework, keine Dotfiles, keine Runfiles. Trycycle ist schlicht ein ",[63,365,366],{},"Skill"," für ",[47,369,372],{"href":370,"rel":371},"https://claude.com/product/claude-code",[51],"Claude Code"," und Codex CLI.",[15,375,376],{},"Der Algorithmus passt auf eine Postkarte:",[19,378,379,382,385,388,391],{},[22,380,381],{},"Definiere das Problem.",[22,383,384],{},"Schreibe einen Plan.",[22,386,387],{},"Ist der Plan perfekt? Wenn nicht, versuche es erneut.",[22,389,390],{},"Implementiere den Plan.",[22,392,393],{},"Ist die Implementierung perfekt? Wenn nicht, versuche es erneut.",[15,395,396,397,402],{},"Mehr ist es nicht. Unter der Haube greift Trycycle auf Jesse Vincents ",[47,398,401],{"href":399,"rel":400},"https://github.com/obra/superpowers",[51],"Superpowers"," für das Schreiben und Ausführen von Plänen zurück. Zur Nutzung kopiert man eine einzige Zeile in seinen Coding-Agenten – den Verweis auf die README im Repo – und kann anschließend einfach sagen: „Use Trycycle to do the thing.\"",[55,404,406],{"id":405},"warum-das-so-gut-funktioniert","Warum das so gut funktioniert",[15,408,409,410,413],{},"Das Verblüffende: Trycycle ist erst wenige Tage alt, und Shapiro berichtet bereits von einem Dutzend ausgelieferter Features. Während eines Abendessens hat das Tool das Spiel ",[26,411,412],{},"Rogue"," nach WASM portiert. In einer Nacht hat es 7 Stunden 56 Minuten lang sechs Features für ein anderes Projekt fertiggestellt.",[15,415,416,417,420],{},"Der Trick liegt nicht in raffinierter Architektur, sondern in ",[63,418,419],{},"drei pragmatischen Eigenschaften",":",[68,422,423,429,435],{},[22,424,425,428],{},[63,426,427],{},"Kein Setup."," Weil Trycycle nur ein Skill ist, gibt es keine Konfiguration und keine Lernkurve. Wer den Agenten bedienen kann, kann auch Trycycle bedienen.",[22,430,431,434],{},[63,432,433],{},"Volle Transparenz."," Wer verstehen will, was passiert, fragt einfach nach. Wer eingreifen will, redet dem Agenten ins Gewissen.",[22,436,437,440],{},[63,438,439],{},"Skalierung über Zeit, nicht über Komplexität."," Die Fabrik wird nicht durch ausgefeilte Logik mächtiger, sondern dadurch, dass man sie länger laufen lässt.",[55,442,444],{"id":443},"welche-fabrik-passt-zu-wem","Welche Fabrik passt zu wem?",[15,446,447],{},"Shapiros Empfehlung lässt sich gut zusammenfassen:",[68,449,450,455,460],{},[22,451,452,454],{},[63,453,324],{}," – wenn man Teil einer Community werden möchte, die gemeinsam Tokens verbrennt und gemeinsam Software baut.",[22,456,457,459],{},[63,458,348],{}," – wenn man eine konfigurierbare, langfristig laufende Engine braucht, die Projekte rund um die Uhr vorantreibt.",[22,461,462,464],{},[63,463,278],{}," – wenn man einfach jetzt sofort Dinge erledigt haben will, ohne lange Setup-Zeiten.",[15,466,467],{},"Die ehrliche Antwort: Man kann mit Trycycle starten, während man die Dokumentation der anderen beiden liest. Die Eintrittsbarriere ist so niedrig, dass es schlicht keinen Grund gibt, es nicht auszuprobieren.",[55,469,471],{"id":470},"was-das-für-entwickler-bedeutet","Was das für Entwickler bedeutet",[15,473,474,475,478],{},"Dark Factories sind die logische Fortsetzung dessen, was wir in den letzten Monaten unter dem Schlagwort ",[26,476,477],{},"Vibe Coding"," gesehen haben – nur konsequenter. Statt einen Agenten kurz nach Code zu fragen und das Ergebnis zu reviewen, lässt man eine Maschine selbstständig planen, implementieren und prüfen. Der Mensch definiert das Problem und das Akzeptanzkriterium. Die Fabrik macht den Rest – auch über Nacht, auch parallel, auch in Loops.",[15,480,481],{},"Wer das einmal erlebt hat, denkt anders über sein Backlog nach. Tickets werden zu Spezifikationen. Spezifikationen werden zu Inputs. Und am Morgen liegt der nächste Feature-Branch im Repository – fertig zum Review.",[15,483,484],{},"Trycycle ist dafür der perfekte Einstieg: fünf Minuten Setup, keine Lernkurve, sofort produktiv. Und wenn die Anforderungen wachsen, stehen Kilroy und Gastown bereit.",{"title":210,"searchDepth":211,"depth":212,"links":486},[487,488,493,494,495],{"id":282,"depth":211,"text":283},{"id":312,"depth":211,"text":313,"children":489},[490,491,492],{"id":316,"depth":212,"text":317},{"id":328,"depth":212,"text":329},{"id":352,"depth":212,"text":353},{"id":405,"depth":211,"text":406},{"id":443,"depth":211,"text":444},{"id":470,"depth":211,"text":471},"2026-05-06T00:00:00.000Z","Dark Factories verwandeln Spezifikationen in lauffähige Software – über Nacht, in Schleifen, mit minimalem Setup. Ein Blick auf Gastown, Kilroy und Trycycle.","images/dark-factories-und-trycycle.svg",{},"/blog/vibe-coding/2026-05-06-dark-factories-und-trycycle",{"title":254,"description":497},"blog/vibe-coding/2026-05-06-dark-factories-und-trycycle",[504,505,506,507,508],"dark-factory","trycycle","claude-code","codex","ai-agents","IJZurmMNGW1OIVd7uGjK2hfNWfGzmJO6zsHZStUTWBs",{"id":511,"title":512,"author":6,"body":513,"category":222,"date":496,"description":682,"extension":225,"featured":229,"image":683,"meta":684,"navigation":229,"path":685,"seo":686,"stem":687,"tags":688,"__hash__":691},"blog/blog/vibe-coding/2026-05-06-fuenf-stufen-ki-coding.md","Die fünf Stufen der KI-Programmierung: Von Autocomplete bis zur Dark Factory",{"type":8,"value":514,"toc":673},[515,518,527,534,538,541,548,552,559,562,566,577,584,588,595,602,606,613,616,623,627,634,637,645,649,656,663,670],[11,516,512],{"id":517},"die-fünf-stufen-der-ki-programmierung-von-autocomplete-bis-zur-dark-factory",[15,519,520,521,526],{},"Die Kosten für Code fallen gerade so schnell, dass viele Teams nicht hinterherkommen, ihre Arbeitsweise anzupassen. Dan Shapiro hat das in ",[47,522,525],{"href":523,"rel":524},"https://www.danshapiro.com/blog/2026/01/the-five-levels-from-spicy-autocomplete-to-the-software-factory/",[51],"einem viel beachteten Beitrag"," als „technische Deflation\" bezeichnet. Aber wie schöpft man als Entwickler oder Team diesen Vorteil tatsächlich aus?",[15,528,529,530,533],{},"Wer KI nur nutzt, um schneller Regex zu tippen, partizipiert nicht an der Deflation. Er tippt einfach nur schneller. Echter Hebel entsteht erst weiter oben – und Shapiro hat dafür eine Klassifikation vorgeschlagen, die sich an den ",[63,531,532],{},"fünf Stufen autonomen Fahrens"," der NHTSA orientiert. Sie liefert eine erstaunlich präzise Landkarte dafür, wo Teams heute stehen und wohin die Reise geht.",[55,535,537],{"id":536},"stufe-0-der-volvo-deiner-eltern","Stufe 0: Der Volvo deiner Eltern",[15,539,540],{},"Ob Vim oder Visual Studio – kein Zeichen landet auf der Festplatte, ohne dass du es selbst getippt hast. KI taucht höchstens als bessere Suchmaschine auf, oder du drückst gelegentlich Tab, um einen Vorschlag zu übernehmen. Der Code ist unverkennbar deiner.",[15,542,543,544,547],{},"In einer Welt fallender Code-Kosten ist das ",[63,545,546],{},"Handarbeit zum vollen Preis",". Verständlich für hochsensible Domänen, aber nicht skalierbar.",[55,549,551],{"id":550},"stufe-1-spurhalteassistent","Stufe 1: Spurhalteassistent",[15,553,554,555,558],{},"Du schreibst weiterhin alles Wichtige selbst, lagerst aber ",[63,556,557],{},"diskrete Aufgaben"," an deinen KI-Praktikanten aus: „Schreib einen Unit-Test dafür.\" „Ergänze einen Docstring.\" Egal ob ChatGPT per Copy-Paste oder GitHub Copilot – das Werkzeug variiert, das Muster ist identisch.",[15,560,561],{},"Du wirst schneller. Aber dein Job ändert sich nicht. Dein Tempo bleibt durch das limitiert, was du selbst tippen kannst.",[55,563,565],{"id":564},"stufe-2-autopilot-auf-der-autobahn","Stufe 2: Autopilot auf der Autobahn",[15,567,568,569,572,573,576],{},"Hier sitzen heute geschätzt ",[63,570,571],{},"90 Prozent der „AI-native\" Entwickler",". Du arbeitest mit einer KI wie mit einem Junior-Kollegen, gibst ihr alle langweiligen Aufgaben ab und kommst in einen produktiven Flow. Du nutzt nicht mehr Copy-Paste-Chat, sondern ein integriertes Coding-Tool wie ",[47,574,372],{"href":370,"rel":575},[51]," oder Cursor.",[15,578,579,580,583],{},"Es fühlt sich an, als wärst du angekommen. Genau das ist die Falle: ",[63,581,582],{},"Stufe 2 fühlt sich nach Ziel an, ist aber nur Mittelstrecke."," Wer hier stehenbleibt, lässt den Großteil des Hebels liegen.",[55,585,587],{"id":586},"stufe-3-waymo-mit-sicherheitsfahrer","Stufe 3: Waymo mit Sicherheitsfahrer",[15,589,590,591,594],{},"Auf Stufe 3 bist du kein Senior-Entwickler mehr – das ist der Job deiner KI. Du bist der ",[63,592,593],{},"Mensch im Loop",", der Manager. Dein Coding-Agent läuft in mehreren Tabs parallel. Dein Tag besteht aus Code Reviews. Sehr viel Code. Dein Leben ist ein Strom von Diffs.",[15,596,597,598,601],{},"Für viele fühlt sich das ",[63,599,600],{},"schlechter"," an als Stufe 2. Der Flow-Zustand ist weg, ersetzt durch eine endlose Review-Queue. Es ist die Stufe, auf der die meisten Teams steckenbleiben – nicht weil das Werkzeug fehlt, sondern weil der Rollenwechsel ungewohnt ist.",[55,603,605],{"id":604},"stufe-4-robotaxi","Stufe 4: Robotaxi",[15,607,608,609,612],{},"Auf Stufe 4 fährst du nicht mehr mit. Du bist auch kein Development-Manager mehr. Du bist – ironischerweise – ",[63,610,611],{},"Product Manager"," geworden. Du schreibst Specs. Du diskutierst mit der KI über Specs. Du baust Skills (meistens für Claude Code, weil es dort die ausgereifteste Skill-Infrastruktur gibt). Du planst Roadmaps. Du reviewst Pläne, nicht mehr Code.",[15,614,615],{},"Dann gehst du für zwölf Stunden raus und schaust am Abend, ob die Tests grün sind.",[15,617,618,619,622],{},"Shapiro selbst verortet sich nach eigener Aussage auf dieser Stufe. Es ist die erste Ebene, auf der ",[63,620,621],{},"Schlafenszeit produktiv wird"," – wo Code nachts entsteht, ohne dass jemand am Rechner sitzt.",[55,624,626],{"id":625},"stufe-5-die-dark-factory","Stufe 5: Die Dark Factory",[15,628,629,630,633],{},"Auf Stufe 5 ist es eigentlich kein Auto mehr. Und es ist auch kein Software-Prozess mehr im klassischen Sinne. Es ist eine ",[63,631,632],{},"Black Box, die Specs in Software verwandelt",".",[15,635,636],{},"Der Begriff „Dark Factory\" stammt aus der Industrie: Fanuc betreibt in Japan eine Roboterfabrik, in der Roboter Roboter bauen. Sie heißt „dark\", weil das Licht ausgeschaltet bleiben kann – Menschen werden dort nicht gebraucht und sind auch nicht erwünscht.",[15,638,639,640,644],{},"Auf die Softwareentwicklung übertragen heißt das: Kleine Teams – häufig fünf Personen oder weniger – betreiben Pipelines, die eigenständig planen, implementieren, testen und ausliefern. Wer ein konkretes Bild davon will, wie so etwas heute schon aussieht, sollte sich Werkzeuge wie ",[47,641,643],{"href":642},"/vibe-coding/2026-05-06-dark-factories-und-trycycle","Trycycle, Kilroy oder Gastown"," ansehen, über die ich neulich geschrieben habe. Sie sind die ersten ernstzunehmenden Bauteile dieser Fabriken.",[55,646,648],{"id":647},"wo-stehst-du","Wo stehst du?",[15,650,651,652,655],{},"Die unbequeme Wahrheit dieser Klassifikation: Jede Stufe ",[63,653,654],{},"fühlt sich nach Ankunft an",", ist aber nur ein Wegpunkt. Wer auf Stufe 2 bleibt, weil sich die Arbeit dort am angenehmsten anfühlt, verschenkt den Großteil der Produktivitätsgewinne, die heute schon möglich sind.",[15,657,658,659,662],{},"Der Übergang von Stufe zu Stufe ist nicht primär ein Werkzeug-Problem, sondern ein ",[63,660,661],{},"Rollen-Problem",". Auf jeder Stufe muss man sich von einer Identität verabschieden – Coder, Senior-Engineer, Manager – um die nächste annehmen zu können. Das ist anstrengend. Und es ist der eigentliche Grund, warum die meisten Teams steckenbleiben.",[15,664,665,666,669],{},"Mein Tipp: Nutze diese fünf Stufen als ehrliches Diagnose-Werkzeug. Nicht „welches Tool benutzen wir\", sondern: ",[63,667,668],{},"Wer bist du in deinem eigenen Entwicklungsprozess noch?"," Und wer wirst du in sechs Monaten sein müssen, wenn die Code-Kosten weiter so fallen wie bisher?",[15,671,672],{},"Wer diese Frage konsequent beantwortet, hat eine realistische Chance, am Ende eine eigene kleine Fabrik zu betreiben – statt von einer fremden überholt zu werden.",{"title":210,"searchDepth":211,"depth":212,"links":674},[675,676,677,678,679,680,681],{"id":536,"depth":211,"text":537},{"id":550,"depth":211,"text":551},{"id":564,"depth":211,"text":565},{"id":586,"depth":211,"text":587},{"id":604,"depth":211,"text":605},{"id":625,"depth":211,"text":626},{"id":647,"depth":211,"text":648},"Wie weit ist dein Team auf dem Weg zur autonomen Softwareentwicklung? Eine Landkarte in fünf Stufen – analog zu den NHTSA-Levels für autonomes Fahren.","images/fuenf-stufen-ki-coding.svg",{},"/blog/vibe-coding/2026-05-06-fuenf-stufen-ki-coding",{"title":512,"description":682},"blog/vibe-coding/2026-05-06-fuenf-stufen-ki-coding",[508,506,504,689,690],"automation","developer-productivity","Fp1pWsVj_BzWQio7Q5uAxvjqg3frO7rtvjTwTUMVGGc",{"id":693,"title":247,"author":6,"body":694,"category":222,"date":1184,"description":250,"extension":225,"featured":229,"image":1185,"meta":1186,"navigation":229,"path":248,"seo":1187,"stem":249,"tags":1188,"__hash__":1191},"blog/blog/vibe-coding/2026-03-03-gmail-cli-mit-claude-code.md",{"type":8,"value":695,"toc":1164},[696,699,702,706,709,712,726,730,734,747,751,754,764,778,787,807,810,814,840,844,850,866,881,885,888,916,922,926,929,933,936,959,978,982,985,1010,1014,1021,1025,1028,1046,1049,1053,1056,1070,1073,1090,1093,1113,1116,1119,1123,1129,1135,1141,1150,1154,1157,1160],[11,697,247],{"id":698},"gmail-cli-mit-claude-code-bauen-15000-e-mails-in-minuten-archiviert",[15,700,701],{},"2026 wird zum Jahr der persönlichen KI-Agenten. Statt auf fertige Tools zu warten, kannst du heute schon selbst die Bausteine bauen, die deinen Alltag automatisieren. In diesem Beitrag zeige ich dir, wie ich mit Claude Code einen Gmail-CLI erstellt habe, mit dem ich meinen Posteingang per Kommandozeile verwalte und Newsletter zusammenfasse.",[55,703,705],{"id":704},"warum-ein-cli-statt-browser-automation","Warum ein CLI statt Browser-Automation?",[15,707,708],{},"Zunächst habe ich versucht, Gmail über Browser-Automation zu steuern. Das war langsam: DOM-Scraping, Klicks im Interface, Wartezeiten beim Laden. Ein CLI, das direkt die Gmail-API anspricht, ist schneller, zuverlässiger und liefert strukturierte Daten.",[15,710,711],{},"Der Ansatz funktioniert so:",[19,713,714,717,720,723],{},[22,715,716],{},"Google Cloud Projekt einrichten",[22,718,719],{},"OAuth-Authentifizierung konfigurieren",[22,721,722],{},"CLI mit Claude Code entwickeln",[22,724,725],{},"Features bei Bedarf erweitern",[55,727,729],{"id":728},"google-cloud-setup","Google Cloud Setup",[126,731,733],{"id":732},"projekt-erstellen-und-gmail-api-aktivieren","Projekt erstellen und Gmail-API aktivieren",[15,735,736,737,742,743,746],{},"Gehe zur ",[47,738,741],{"href":739,"rel":740},"https://console.cloud.google.com/",[51],"Google Cloud Console"," und erstelle ein neues Projekt. Navigiere zu ",[63,744,745],{},"APIs & Services > Bibliothek",", suche nach \"Gmail API\" und aktiviere sie.",[126,748,750],{"id":749},"oauth-zustimmungsbildschirm-konfigurieren","OAuth-Zustimmungsbildschirm konfigurieren",[15,752,753],{},"Der OAuth-Consent-Screen besteht aus drei Bereichen:",[15,755,756,759,760,763],{},[63,757,758],{},"Branding:"," Unter ",[63,761,762],{},"Google Auth Platform > Branding"," gibst du einen App-Namen (z.B. \"gmail-cli\"), deine E-Mail als Support-Adresse und Entwicklerkontakt ein.",[15,765,766,769,770,773,774,777],{},[63,767,768],{},"Audience:"," Wähle unter ",[63,771,772],{},"Google Auth Platform > Audience"," den Typ ",[63,775,776],{},"External",", es sei denn, du nutzt Google Workspace. Füge dich selbst als Testnutzer hinzu.",[15,779,780,759,783,786],{},[63,781,782],{},"Datenzugriff (Scopes):",[63,784,785],{},"Google Auth Platform > Data Access"," fügst du die benötigten Berechtigungen hinzu:",[68,788,789,795,801],{},[22,790,791,794],{},[77,792,793],{},"https://www.googleapis.com/auth/gmail.readonly"," (E-Mails lesen)",[22,796,797,800],{},[77,798,799],{},"https://www.googleapis.com/auth/gmail.modify"," (Archivieren, Labels)",[22,802,803,806],{},[77,804,805],{},"https://www.googleapis.com/auth/gmail.send"," (E-Mails senden)",[15,808,809],{},"Je enger der Scope, desto geringer das Risiko bei einem geleakten Token.",[126,811,813],{"id":812},"oauth-credentials-erstellen","OAuth-Credentials erstellen",[15,815,816,817,820,821,824,825,828,829,831,832,835,836,839],{},"Unter ",[63,818,819],{},"Google Auth Platform > Clients"," erstellst du einen neuen Client vom Typ ",[63,822,823],{},"Desktop-App",". Lade die JSON-Datei herunter, speichere sie als ",[77,826,827],{},"credentials.json"," im Projektverzeichnis und füge beide Dateien (",[77,830,827],{}," und später ",[77,833,834],{},"token.json",") zur ",[77,837,838],{},".gitignore"," hinzu.",[55,841,843],{"id":842},"den-cli-mit-claude-code-entwickeln","Den CLI mit Claude Code entwickeln",[15,845,846,847,849],{},"Mit der ",[77,848,827],{}," im Projekt kannst du Claude Code bitten, den CLI zu implementieren. Ein guter Startpunkt ist ein Plan, der die Architektur skizziert:",[68,851,852,854,857,860,863],{},[22,853,729],{},[22,855,856],{},"OAuth-Konfiguration",[22,858,859],{},"CLI-Befehle (inbox, search, read, labels, archive)",[22,861,862],{},"Authentifizierungs-Flow",[22,864,865],{},"Edge Cases und Rate Limits",[15,867,868,869,872,873,876,877,880],{},"Claude Code generiert dann ",[77,870,871],{},"package.json",", die Hauptdatei ",[77,874,875],{},"index.js"," und macht das Script ausführbar. Mit ",[77,878,879],{},"npm link"," wird der Befehl systemweit verfügbar.",[126,882,884],{"id":883},"erster-test","Erster Test",[15,886,887],{},"Beim ersten Aufruf öffnet sich der Browser für die OAuth-Autorisierung:",[889,890,894],"pre",{"className":891,"code":892,"language":893,"meta":210,"style":210},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","gmail-cli inbox --limit 1\n","bash",[77,895,896],{"__ignoreMap":210},[897,898,901,905,909,912],"span",{"class":899,"line":900},"line",1,[897,902,904],{"class":903},"sBMFI","gmail-cli",[897,906,908],{"class":907},"sfazB"," inbox",[897,910,911],{"class":907}," --limit",[897,913,915],{"class":914},"sbssI"," 1\n",[15,917,918,919,921],{},"Nach der Zustimmung speichert der CLI ein ",[77,920,834],{}," für zukünftige Aufrufe.",[55,923,925],{"id":924},"features-erweitern","Features erweitern",[15,927,928],{},"Die besten Features entstehen bei der Nutzung. Hier sind Beispiele, wie der CLI wuchs:",[126,930,932],{"id":931},"json-output-und-body-inhalt","JSON-Output und Body-Inhalt",[15,934,935],{},"Für Newsletter-Zusammenfassungen brauchte ich strukturierte Daten:",[889,937,939],{"className":891,"code":938,"language":893,"meta":210,"style":210},"gmail-cli inbox --json --body --max-length 5000\n",[77,940,941],{"__ignoreMap":210},[897,942,943,945,947,950,953,956],{"class":899,"line":900},[897,944,904],{"class":903},[897,946,908],{"class":907},[897,948,949],{"class":907}," --json",[897,951,952],{"class":907}," --body",[897,954,955],{"class":907}," --max-length",[897,957,958],{"class":914}," 5000\n",[15,960,961,962,965,966,969,970,973,974,977],{},"Claude Code fügte ",[77,963,964],{},"--json"," für strukturierte Ausgabe, ",[77,967,968],{},"--body"," für den Nachrichteninhalt und ",[77,971,972],{},"--max-length"," für Trunkierung hinzu. Ein ",[77,975,976],{},"batch-read","-Befehl holt mehrere E-Mails parallel.",[126,979,981],{"id":980},"archivieren","Archivieren",[15,983,984],{},"Ein einfacher Archiv-Befehl:",[889,986,988],{"className":891,"code":987,"language":893,"meta":210,"style":210},"gmail-cli archive --search \"from:linkedin.com\"\n",[77,989,990],{"__ignoreMap":210},[897,991,992,994,997,1000,1004,1007],{"class":899,"line":900},[897,993,904],{"class":903},[897,995,996],{"class":907}," archive",[897,998,999],{"class":907}," --search",[897,1001,1003],{"class":1002},"sMK4o"," \"",[897,1005,1006],{"class":907},"from:linkedin.com",[897,1008,1009],{"class":1002},"\"\n",[126,1011,1013],{"id":1012},"batch-operationen-mit-batchmodify","Batch-Operationen mit batchModify",[15,1015,1016,1017,1020],{},"Die initiale Version verarbeitete E-Mails einzeln. Bei 2.000 LinkedIn-E-Mails wurde das ineffizient. Die Gmail-API bietet ",[77,1018,1019],{},"batchModify",", um bis zu 1.000 Nachrichten in einem Call zu verarbeiten. Mit dieser Optimierung lassen sich tausende E-Mails in Sekunden archivieren.",[126,1022,1024],{"id":1023},"top-sender-analysieren","Top-Sender analysieren",[15,1026,1027],{},"Um herauszufinden, welche Absender den Posteingang füllen:",[889,1029,1031],{"className":891,"code":1030,"language":893,"meta":210,"style":210},"gmail-cli top-senders --sample 1000\n",[77,1032,1033],{"__ignoreMap":210},[897,1034,1035,1037,1040,1043],{"class":899,"line":900},[897,1036,904],{"class":903},[897,1038,1039],{"class":907}," top-senders",[897,1041,1042],{"class":907}," --sample",[897,1044,1045],{"class":914}," 1000\n",[15,1047,1048],{},"Da die API pro Nachricht einen separaten Call für Header benötigt, würde ein Scan aller 15.000 E-Mails das Rate-Limit sprengen (250 Quota-Einheiten pro Sekunde). Die Lösung: Eine Stichprobe der letzten 1.000 E-Mails liefert ausreichend repräsentative Daten.",[55,1050,1052],{"id":1051},"_15000-e-mails-bereinigt","15.000 E-Mails bereinigt",[15,1054,1055],{},"Mit dem erweiterten CLI dauerte die Bereinigung etwa 45 Minuten. Der Workflow war ein iterativer Loop:",[19,1057,1058,1061,1064,1067],{},[22,1059,1060],{},"Nächsten E-Mail-Batch abrufen",[22,1062,1063],{},"In \"Bulk-Archiv\", \"Einzelarchiv\" und \"Behalten\" kategorisieren",[22,1065,1066],{},"Genehmigung mit Anpassungen (\"Daily Newsletter behalten, Rest archivieren\")",[22,1068,1069],{},"Parallele Archiv-Befehle ausführen",[15,1071,1072],{},"Runde für Runde verschwanden Tausende E-Mails:",[68,1074,1075,1078,1081,1084,1087],{},[22,1076,1077],{},"LinkedIn: 2.191",[22,1079,1080],{},"Garmin: 1.494",[22,1082,1083],{},"Going Travel Deals: 1.587",[22,1085,1086],{},"Amazon: 627",[22,1088,1089],{},"GitHub Notifications: 427",[15,1091,1092],{},"Schließlich wurde ich ungeduldig:",[889,1094,1096],{"className":891,"code":1095,"language":893,"meta":210,"style":210},"gmail-cli archive --search \"in:inbox before:2025/06/01\"\n",[77,1097,1098],{"__ignoreMap":210},[897,1099,1100,1102,1104,1106,1108,1111],{"class":899,"line":900},[897,1101,904],{"class":903},[897,1103,996],{"class":907},[897,1105,999],{"class":907},[897,1107,1003],{"class":1002},[897,1109,1110],{"class":907},"in:inbox before:2025/06/01",[897,1112,1009],{"class":1002},[15,1114,1115],{},"6.152 E-Mails auf einmal archiviert. Manchmal schlägt ein Zeitstempel die sorgfältige Prüfung.",[15,1117,1118],{},"Der Posteingang landete bei unter 500 E-Mails. Die verbliebenen Nachrichten – persönliche E-Mails, Einwanderungsunterlagen, Recruiting-Threads – wurden einzeln durchgegangen.",[55,1120,1122],{"id":1121},"lessons-learned","Lessons Learned",[15,1124,1125,1128],{},[63,1126,1127],{},"CLI schlägt Browser-Automation:"," Wenn eine API existiert, ist ein CLI schneller, zuverlässiger und liefert strukturierte Daten.",[15,1130,1131,1134],{},[63,1132,1133],{},"OAuth ist einfacher als gedacht:"," Die Einrichtung in Google Cloud dauert etwa eine Stunde. Danach verwaltet der CLI alles weitere.",[15,1136,1137,1140],{},[63,1138,1139],{},"Iterativ bauen:"," Die meisten Features entstanden, weil ich während der Nutzung auf Hindernisse stieß und Claude Code bat, sie zu beheben. Ein perfektes Tool am Anfang ist nicht nötig – ein guter Startpunkt und die Fähigkeit zur Erweiterung genügen.",[15,1142,1143,1146,1147,1149],{},[63,1144,1145],{},"Batch-Operationen sind entscheidend:"," Das Entdecken von ",[77,1148,1019],{}," machte den Unterschied zwischen einer Stunde und wenigen Minuten.",[55,1151,1153],{"id":1152},"fazit","Fazit",[15,1155,1156],{},"Ein selbstgebauter Gmail-CLI passt exakt zu deinem Workflow. Du verstehst, wie die Teile zusammenpassen, und kannst jederzeit erweitern. Die Investition in ein persönliches Tool zahlt sich aus – nicht nur für die E-Mail-Verwaltung, sondern als Blaupause für weitere Automationen.",[15,1158,1159],{},"Die Rezeptur ist simpel: Projekt aufsetzen, Plan schreiben, Google Cloud konfigurieren, mit Claude Code bauen, iterieren.",[1161,1162,1163],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}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 .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}",{"title":210,"searchDepth":211,"depth":212,"links":1165},[1166,1167,1172,1175,1181,1182,1183],{"id":704,"depth":211,"text":705},{"id":728,"depth":211,"text":729,"children":1168},[1169,1170,1171],{"id":732,"depth":212,"text":733},{"id":749,"depth":212,"text":750},{"id":812,"depth":212,"text":813},{"id":842,"depth":211,"text":843,"children":1173},[1174],{"id":883,"depth":212,"text":884},{"id":924,"depth":211,"text":925,"children":1176},[1177,1178,1179,1180],{"id":931,"depth":212,"text":932},{"id":980,"depth":212,"text":981},{"id":1012,"depth":212,"text":1013},{"id":1023,"depth":212,"text":1024},{"id":1051,"depth":211,"text":1052},{"id":1121,"depth":211,"text":1122},{"id":1152,"depth":211,"text":1153},"2026-03-03T00:00:00.000Z","images/gmail-cli-mit-claude-code.svg",{},{"title":247,"description":250},[506,1189,689,1190,235],"gmail","cli","S94Mb3bV6894Eh2V2-F_uVPSzFiH_dUAL83T8FgNcYc",1794136279833]