[{"data":1,"prerenderedAt":362},["ShallowReactive",2],{"navigation":3,"\u002Flabs\u002F2026-10-30-ai-review-setup":34,"\u002Flabs\u002F2026-10-30-ai-review-setup-surround":359},[4],{"title":5,"path":6,"stem":7,"children":8,"page":33},"Labs","\u002Flabs","labs",[9,13,17,21,25,29],{"title":10,"path":11,"stem":12},"Ein schlankes AI-Review-Setup für kleine Repos","\u002Flabs\u002F2026-10-30-ai-review-setup","labs\u002F2026-10-30-ai-review-setup",{"title":14,"path":15,"stem":16},"Der Harness-Prozess: Warum 2026 das Jahr der kontrollierten KI-Autonomie ist","\u002Flabs\u002Fagentic-harness-2026","labs\u002Fagentic-harness-2026",{"title":18,"path":19,"stem":20},"AnythingLLM: Eigene Wissensbasis, eigenes Modell, null Cloud-Zwang","\u002Flabs\u002Fanythingllm-local-rag","labs\u002Fanythingllm-local-rag",{"title":22,"path":23,"stem":24},"Claude Code als Agentic Development Partner","\u002Flabs\u002Fclaude-agent","labs\u002Fclaude-agent",{"title":26,"path":27,"stem":28},"Hermes-Agent als persönlicher CTO","\u002Flabs\u002Fhermes-agent-cto","labs\u002Fhermes-agent-cto",{"title":30,"path":31,"stem":32},"Kimi K2.5 vs Minimax M2.7 beim Refactoring","\u002Flabs\u002Fkimi-vs-minimax-refactoring","labs\u002Fkimi-vs-minimax-refactoring",false,{"id":35,"title":10,"author":36,"body":38,"date":343,"description":344,"extension":345,"image":346,"meta":347,"minRead":351,"navigation":135,"path":11,"seo":352,"stem":12,"tags":353,"__hash__":358},"lab\u002Flabs\u002F2026-10-30-ai-review-setup.md",{"name":37},"Bernd D.H. Martin",{"type":39,"value":40,"toc":331},"minimark",[41,45,48,53,56,79,82,86,89,99,102,110,113,212,216,222,233,237,254,296,299,303,314,327],[42,43,44],"p",{},"Code Review ist die Arbeit, die in vielen Teams am Ende der Kette hängen bleibt. Jeder Agent, der Code schneller schreibt, macht den Review-Stapel größer. Ich habe Code Reviews selbst als Last erlebt, deshalb hat mich ein Artikel aus dem Claude-Code-Team neugierig gemacht: Darin beschreibt Anthropic, wie dort Review auf Maschinen verlagert wird und menschliche Aufmerksamkeit nach Risiko verteilt wird.",[42,46,47],{},"Dieses Lab ist ein Setup-Plan, kein Ergebnisbericht. Ich habe das Setup noch nicht auf meinem Repo laufen lassen. Die Zahlen unten stammen aus dem Artikel, sind eine Selbstdarstellung und nicht unabhängig nachprüfbar.",[49,50,52],"h2",{"id":51},"was-der-artikel-beschreibt","Was der Artikel beschreibt",[42,54,55],{},"Anthropic nutzt kein einzelnes Review-Gate, sondern mehrere Schichten:",[57,58,59,67,73],"ul",{},[60,61,62,66],"li",{},[63,64,65],"strong",{},"Vor dem PR:"," Tests, Build, Screenshot und ein Subagent mit frischem Kontext prüfen die Änderung.",[60,68,69,72],{},[63,70,71],{},"Auf jedem PR:"," ein AI-Review, ein blockierender Security-Review und die CI.",[60,74,75,78],{},[63,76,77],{},"Danach:"," eine risikoabhängige menschliche Freigabe, eine Merge Queue mit Feature Flags und ein schneller Rollback.",[42,80,81],{},"Laut Artikel haben sich die gemergten PRs von Juni bis September mehr als verdoppelt, während der Anteil an Reverts um über 40 % gesunken ist.",[49,83,85],{"id":84},"was-für-ein-kleines-repo-übertragbar-ist","Was für ein kleines Repo übertragbar ist",[42,87,88],{},"Nicht alles ist für einen Einzelentwickler sinnvoll. Mehrere Review-Agenten, die über jeden Fund abstimmen, sind aufwendig, und ich weiß noch nicht, welche Teile öffentlich verfügbar sind. Drei Ideen lassen sich dagegen sofort nachbauen.",[90,91,93,94,98],"h3",{"id":92},"_1-claudemd-für-konventionen","1. ",[95,96,97],"code",{},"CLAUDE.md"," für Konventionen",[42,100,101],{},"Hier steht, wie das Projekt gebaut, getestet und strukturiert ist. Der Reviewer liest dieselbe Datei wie der Autor-Agent. In meinem Repo gibt es sie schon.",[90,103,105,106,109],{"id":104},"_2-reviewmd-für-den-reviewer","2. ",[95,107,108],{},"REVIEW.md"," für den Reviewer",[42,111,112],{},"Das ist die eigentliche Neuerung für mich. Die Datei sagt dem Reviewer, worauf er pro Codebereich achten soll, was er überspringen darf und wie viel Kleinkram er melden soll. Mein Entwurf für dieses Repo:",[114,115,120],"pre",{"className":116,"code":117,"language":118,"meta":119,"style":119},"language-markdown shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# REVIEW.md\n\n## Pflicht\n- Jeder Fund nennt Datei und Zeile. Ohne Beleg wird nichts gemeldet.\n- Fehlerklasse melden, nicht jede einzelne Zeile.\n\n## Bereiche\n- `content\u002F`: Frontmatter vollständig, Dateiname `YYYY-MM-DD-slug.md`, Eintrag in labs.yml oder notes.yml.\n- `app\u002F`: Typen korrekt, kein `any` ohne Grund.\n\n## Überspringen\n- `pnpm-lock.yaml`, `.output\u002F`, `.nuxt\u002F`\n\n## Ton\n- Höchstens drei Nits pro PR.\n","markdown","",[95,121,122,130,137,143,149,155,160,166,172,178,183,189,195,200,206],{"__ignoreMap":119},[123,124,127],"span",{"class":125,"line":126},"line",1,[123,128,129],{},"# REVIEW.md\n",[123,131,133],{"class":125,"line":132},2,[123,134,136],{"emptyLinePlaceholder":135},true,"\n",[123,138,140],{"class":125,"line":139},3,[123,141,142],{},"## Pflicht\n",[123,144,146],{"class":125,"line":145},4,[123,147,148],{},"- Jeder Fund nennt Datei und Zeile. Ohne Beleg wird nichts gemeldet.\n",[123,150,152],{"class":125,"line":151},5,[123,153,154],{},"- Fehlerklasse melden, nicht jede einzelne Zeile.\n",[123,156,158],{"class":125,"line":157},6,[123,159,136],{"emptyLinePlaceholder":135},[123,161,163],{"class":125,"line":162},7,[123,164,165],{},"## Bereiche\n",[123,167,169],{"class":125,"line":168},8,[123,170,171],{},"- `content\u002F`: Frontmatter vollständig, Dateiname `YYYY-MM-DD-slug.md`, Eintrag in labs.yml oder notes.yml.\n",[123,173,175],{"class":125,"line":174},9,[123,176,177],{},"- `app\u002F`: Typen korrekt, kein `any` ohne Grund.\n",[123,179,181],{"class":125,"line":180},10,[123,182,136],{"emptyLinePlaceholder":135},[123,184,186],{"class":125,"line":185},11,[123,187,188],{},"## Überspringen\n",[123,190,192],{"class":125,"line":191},12,[123,193,194],{},"- `pnpm-lock.yaml`, `.output\u002F`, `.nuxt\u002F`\n",[123,196,198],{"class":125,"line":197},13,[123,199,136],{"emptyLinePlaceholder":135},[123,201,203],{"class":125,"line":202},14,[123,204,205],{},"## Ton\n",[123,207,209],{"class":125,"line":208},15,[123,210,211],{},"- Höchstens drei Nits pro PR.\n",[90,213,215],{"id":214},"_3-rundenlimit","3. Rundenlimit",[42,217,218,219,221],{},"Laut Artikel können sich Agent-Autor und Agent-Reviewer endlos beschäftigen, ein PR hatte über 50 Runden. Die Gegenmaßnahmen sind einfach und passen in ",[95,220,108],{},":",[57,223,224,227,230],{},[60,225,226],{},"maximal drei Runden",[60,228,229],{},"ab der zweiten Runde nur noch der Diff der Änderung",[60,231,232],{},"bereits gemeldete Funde nicht wiederholen",[49,234,236],{"id":235},"so-will-ich-es-testen","So will ich es testen",[42,238,239,240,243,244,247,248,250,251,253],{},"Auf einem kleinen eigenen Repo richte ich ",[95,241,242],{},"\u002Fcode-review",", ",[95,245,246],{},"\u002Fsecurity-review"," oder die Claude-Code-GitHub-Action mit ",[95,249,97],{}," und ",[95,252,108],{}," ein. Pro PR notiere ich:",[255,256,257,279],"table",{},[258,259,260],"thead",{},[261,262,263,267,270,273,276],"tr",{},[264,265,266],"th",{},"PR",[264,268,269],{},"Runden",[264,271,272],{},"Nits",[264,274,275],{},"Echte Funde",[264,277,278],{},"Zeitaufwand für mich",[280,281,282],"tbody",{},[261,283,284,288,290,292,294],{},[285,286,287],"td",{},"offen",[285,289,287],{},[285,291,287],{},[285,293,287],{},[285,295,287],{},[42,297,298],{},"Ausgewertet wird erst, wenn mindestens zehn PRs zusammengekommen sind. Vorher wäre jede Aussage Zufall.",[49,300,302],{"id":301},"offene-fragen","Offene Fragen",[57,304,305,308,311],{},[60,306,307],{},"Welche Teile (Abstimmung mehrerer Agenten, Risiko-Klassifikator) sind öffentlich verfügbar und welche nur intern?",[60,309,310],{},"Was kostet ein Review im Deep-Modus pro PR?",[60,312,313],{},"Der Artikel erwähnt keine Circuit Breaker, die bei steigenden Reverts die Freigabe verschärfen. Das müsste ich selbst regeln, zum Beispiel über eine Pflicht-Freigabe von mir bei Änderungen an der CI.",[42,315,316,319,320],{},[63,317,318],{},"Quelle:"," ",[321,322,326],"a",{"href":323,"rel":324},"https:\u002F\u002Fclaude.dev\u002Fblog\u002Fsolving-code-review-at-anthropic\u002F",[325],"nofollow","Anthropic Engineering, Code Review bei Anthropic",[328,329,330],"style",{},"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":119,"searchDepth":132,"depth":132,"links":332},[333,334,341,342],{"id":51,"depth":132,"text":52},{"id":84,"depth":132,"text":85,"children":335},[336,338,340],{"id":92,"depth":139,"text":337},"1. CLAUDE.md für Konventionen",{"id":104,"depth":139,"text":339},"2. REVIEW.md für den Reviewer",{"id":214,"depth":139,"text":215},{"id":235,"depth":132,"text":236},{"id":301,"depth":132,"text":302},"2026-10-30","Wie das Claude-Code-Team Code Review automatisiert, und was sich davon mit CLAUDE.md, REVIEW.md und einem Rundenlimit auf ein kleines eigenes Repo übertragen lässt.","md","\u002Flabs\u002Fai-review-layers.svg",{"type":348,"status":349,"source_id":350},"lab","entwurf","res-001",null,{"title":10,"description":344},[354,355,356,357],"Claude Code","Code Review","Agentic Coding","Git Workflow","wK_LYHUYiokaphfUPAMb2CSZUrZGqg_ixdVdMV5o8So",[351,360],{"title":14,"path":15,"stem":16,"description":361,"children":-1},"Was ein Agentic Harness ist, wie er funktioniert, und warum er der entscheidende Unterschied zwischen einem Spielzeug und einem echten KI-Entwicklungspartner ist.",1793356631863]