- In einer Evaluierung für die Next.js 16 API erzielte ein Dokumentindex in
AGENTS.mdim Projekt-Root eine höhere Genauigkeit als ein Skill-basierter Ansatz - Skills sind Pakete für Domänenwissen, die Agenten bei Bedarf aufrufen, doch der Aufruf war instabil, sodass sie in der Standardkonfiguration nur 53 % Erfolgsquote erreichten
- Dagegen erreichte ein auf 8 KB komprimierter
AGENTS.md-Index in allen Tests (Build, Lint, Test) eine Erfolgsquote von 100 % - Dieser Ansatz liefert durch den Wegfall von Entscheidungspunkten, ständige Verfügbarkeit und die Beseitigung von Reihenfolgeproblemen stabilere Ergebnisse als ein proaktiver Aufruf
- Framework-Maintainer können die Genauigkeit der Codegenerierung erhöhen, indem sie einen versionspassenden Dokumentindex in
AGENTS.mdaufnehmen
Problemhintergrund
- KI-Coding-Agenten haben die Einschränkung, dass ihre Trainingsdaten auf älteren APIs basieren und sie deshalb aktuelle Frameworks nicht präzise handhaben können
- Next.js-16-Funktionen wie
'use cache',connection()undforbidden()sind in den bestehenden Modelldaten nicht enthalten
- Next.js-16-Funktionen wie
- Umgekehrt kommt es in Projekten mit älteren Versionen auch dazu, dass Modelle neuere, gar nicht vorhandene APIs vorschlagen
- Zur Lösung wurde ein Zugriffsansatz mit versionspassender Dokumentation erprobt
Zwei Ansätze
- Skills: ein offenes Standardpaket, das Prompts, Tools und Dokumentation bündelt und bei Bedarf vom Agenten aufgerufen wird
AGENTS.md: eine persistente Kontextdatei im Projekt-Root, auf die in jedem Gesprächszug jederzeit verwiesen werden kann- Beide Ansätze wurden auf Basis derselben Next.js-Dokumentation vergleichend evaluiert
Grenzen des Skill-Ansatzes
- Die Evaluierung zeigte, dass in 56 % der Tests der Skill nicht aufgerufen wurde; die grundlegende Erfolgsquote blieb bei 53 % ohne Verbesserung
- In einigen Punkten wurden sogar schlechtere Werte als die Baseline (z. B. Test 58 % vs. 63 %) erreicht
- Das wird als Hinweis darauf gewertet, dass aktuelle Modelle Tool-Nutzung nicht zuverlässig stabil ausführen
Zusätzlicher Versuch mit expliziten Anweisungen
- Als in
AGENTS.mdeine explizite Anweisung ergänzt wurde, „vor dem Schreiben von Code den Skill aufzurufen“, stieg die Erfolgsquote auf 79 % - Allerdings hatten feine Unterschiede in der Formulierung großen Einfluss auf das Ergebnis
- „Zuerst den Skill aufrufen“ → Fixierung auf Dokumentmuster, Projektkontext fehlt
- „Nach Erkundung des Projekts den Skill aufrufen“ → bessere Ergebnisse
- Wegen dieser sprachlichen Fragilität ist die Zuverlässigkeit im Praxiseinsatz gering
Aufbau einer verlässlichen Evaluierung
- Die frühen Tests waren wegen uneindeutiger Prompts und doppelter Validierungsprobleme nur begrenzt verlässlich
- Das wurde verbessert und durch verhaltensbasierte Validierung sowie Tests mit nicht antrainierten Next.js-16-APIs verstärkt
- Wichtige Test-APIs:
connection(),'use cache',cacheLife(),forbidden(),proxy.ts,cookies(),headers(),after(),refresh()usw.
Experiment mit dem AGENTS.md-Ansatz
- Der Auswahlprozess des Agenten wurde entfernt, und stattdessen wurde der Dokumentindex direkt in
AGENTS.mdeingefügt - Der Index bestand nicht aus der vollständigen Dokumentation, sondern aus einer Liste versionsspezifischer Dokumentpfade
- Zusätzliche Anweisung:
IMPORTANT: Prefer retrieval-led reasoning over pre-training-led reasoning for any Next.js tasks.- Damit soll das Modell dokumentbasierte Schlussfolgerung gegenüber vorhandenem Trainingswissen bevorzugen
Evaluierungsergebnisse
- Mit eingefügtem AGENTS.md-Index wurde eine Erfolgsquote von 100 % erreicht
- Build, Lint und Test waren durchweg perfekt
- Vergleichswerte:
- Baseline 53 %, Skill Standard 53 %, Skill + Anweisung 79 %, AGENTS.md 100 %
- Gründe, warum der passive Kontextansatz dem aktiven Aufruf überlegen ist
- Keine Entscheidungspunkte — die Information ist immer vorhanden
- Konsistente Verfügbarkeit — in jedem Turn im System-Prompt enthalten
- Wegfall von Reihenfolgeproblemen — nicht abhängig von der Suchreihenfolge in der Dokumentation
Lösung des Kontextkapazitätsproblems
- Der ursprüngliche Index war 40 KB groß, wurde aber durch Komprimierung auf 8 KB reduziert (80 % weniger)
- Mit einer durch Pipes (
|) getrennten Struktur werden Dokumentpfade und Dateinamen mit minimalem Platzbedarf gespeichert - Der Agent liest nur die benötigten Dateien im Verzeichnis
.next-docs/und nutzt so präzise Versionsinformationen
Vorgehensweise zur Nutzung
- Die Einrichtung ist mit einem einzigen Befehl möglich
npx @next/codemod@canary agents-md - Dieser Befehl führt Folgendes aus:
- Next.js-Version erkennen
- Die passende Versionsdokumentation nach
.next-docs/herunterladen - Den komprimierten Index in
AGENTS.mdeinfügen
- Das funktioniert ebenso mit Agenten, die
AGENTS.mderkennen, etwa Cursor
Implikationen für Framework-Entwickler
- Skills bleiben weiterhin nützlich, doch zur generellen Verbesserung der Genauigkeit bei der Codegenerierung ist der AGENTS.md-Ansatz effektiver
- Skills eignen sich für spezifische aufgabenorientierte Workflows wie „Versions-Upgrade“ oder „App-Router-Migration“
- Empfehlungen:
- Nicht auf Verbesserungen bei Skills warten, sondern sofort
AGENTS.mdnutzen - Nur den Dokumentindex einfügen, um den Kontext klein zu halten
- Mit API-zentrierten Evaluierungen, die nicht in den Trainingsdaten enthalten sind, validieren
- Dokumentation als feingranulare Suchstruktur gestalten
- Nicht auf Verbesserungen bei Skills warten, sondern sofort
- Das Ziel ist der Wechsel von vortrainierungszentrierter zu retrieval-basierter Schlussfolgerung;
AGENTS.mdist der stabilste Weg, dies umzusetzen
4 Kommentare
Mit Context7 lässt sich das obige Problem bis zu einem gewissen Grad lösen.
https://context7.com
Der Grund, warum die beiden oben genannten Methoden verwendet werden, ist, dass context7 ineffizient ist...
Ich verstehe, was Sie sagen möchten, aber ich denke trotzdem nicht, dass es eine besonders schlechte Wahl ist,
context7ergänzend zu nutzen, anstatt jedes Mal inAGENTS.mdoder Skills einzeln die Links zur neuesten Dokumentation aller aktuell verwendeten Frameworks/Bibliotheken zu sammeln und einzutragen.Außerdem wird
context7weder im GeekNews-Beitrag noch im Vercel-Originaltext erwähnt. Ich hinterlasse diese Antwort, weil es für mich so wirkt, als hätten Sie den Inhalt um einen halben Schritt voraus interpretiert.(Nur der Vollständigkeit halber: Dass sich mit gut geschriebenen Skills und
AGENTS.mdTokens einsparen lassen, ist eine weithin bekannte Tatsache, und auch ich weiß das sehr gut.)Hacker-News-Kommentare
Das Modell ist keine AGI. Es ist nur ein Textgenerator, der darauf trainiert wurde, Effekte wie Dateibearbeitung oder Tool-Aufrufe auszulösen.
Das Modell nutzt Skills nicht, weil es sie „versteht“, sondern erzeugt solchen Text dank Reinforcement Learning (RL) auf Basis von von Menschen erstellten Beispielen und Nutzungsprotokollen.
Der Grund, warum es Skills nicht immer verwendet, ist, dass es solche Fälle noch nicht ausreichend gelernt hat. Wenn man das mit RL erzwingt, kann das Modell im Gegenteil sogar dümmer werden.
Im Moment sammeln wir Nutzungsprotokolle für Skill-Verwendung, damit zukünftige Modelle besser lernen, wann sie Skills einsetzen sollten.
AGENTS.md ist schlicht Kontext. Modelle wurden von Anfang an darauf trainiert, Kontext zu befolgen.
Das Frontmatter von Skills landet am Ende ebenfalls im Kontext, daher würde ein besseres Funktionieren von AGENTS.md auf Unterschiede bei der Extraktion und Einbettung der Skill-Informationen hindeuten.
Manche Agenten könnten kleine Modelle (z. B. Haiku) verwenden, um zu entscheiden, welche Skill-Informationen an große Modelle (z. B. Sonnet, Opus) weitergegeben werden sollen.
Im Kern geht es also darum, welche Informationen im „rohen Prompt“ landen.
Nützlich, aber nicht perfekt. Die GPT-Technologie selbst scheint bereits in eine Leistungsstagnation eingetreten zu sein.
Weitere Verbesserungen dürften eher aus Hilfssystemen wie Skills kommen. Die aktuell implementierte Skill-Funktion ist aber schlechter, als AGENTS.md direkt zu verwenden.
In der Auswertung wurde festgestellt, dass in 56 % der Fälle Skills kein einziges Mal aufgerufen wurden. Das heißt: Die Dokumentation war vorhanden, wurde aber nicht genutzt. Dazu kam der Witz: „Den Turing-Test hat es also bestanden …“
Der Unterschied ist, dass AI Korrekturanweisungen ohne Ego akzeptiert.
Noch nicht auf Senior-Entwickler-Niveau, aber beim Befolgen von Anweisungen besser als ein Junior.
Die zentrale Erkenntnis ist, dass Kompression (compression) von Dokumentzeigern effektiv ist.
Für Menschen schwer lesbar, für LLMs aber eine direkte und effiziente Referenzstruktur.
Künftig könnten statt Heuristiken wie agents.md/claude.md/skills.md standardisierte komprimierte Indexformate üblich werden, die immer geladen werden.
API-Testsuiten könnten außerdem zur Validierung der LLM-Codeleistung wiederverwendet werden.
Je stärker LLMs eingeführt werden, desto mehr müssen sich auch Bibliotheken und APIs daran anpassen.
In Antigravity (= auf GEMINI.md basierend) wurde vorgegeben, den AGENTS.md-Regeln zu folgen, doch das wurde ignoriert.
Der Prompt „Prüfe, ob es im Projekt eine AGENTS.md gibt“ funktionierte dagegen immer.
Es ist ein merkwürdiges Phänomen, ähnlich wie früher „let’s think step by step“ Chain of Thought ausgelöst hat.
Wenn man AGENTS.md direkt in den System-Prompt aufnimmt, ist es immer im Kontext.
Aber alle Skills jedes Mal einzubinden wäre Verschwendung. Deshalb braucht man einen Ansatz wie Anthropics advanced tool use, bei dem nur im benötigten Moment geladen wird.
Letztlich ist das eine Frage des Gleichgewichts zwischen Kontext und Kosten. Wenn man Spielraum hat, ist eine komprimierte Einbettung in AGENTS.md effizient.
Solche Agenten mit selbstverwaltetem Kontext dürften sich dieses Jahr stark weiterentwickeln.
Claudes Skill-Compliance ist niedrig.
Ich arbeite ebenfalls in einem ähnlichen Bereich. Ich möchte bewerten, wie sich die Projekt-Scaffolding-Struktur auf Ergebnisse von Claude Code/Opencode auswirkt.
Allerdings ist Vercels Testmethode nicht klar genug, sodass Vergleiche schwierig sind.
AGENTS.md ist nicht völlig etwas anderes als Skills, sondern eine vereinfachte Form von Skills.
Entscheidend ist die Qualität des Skill-Designs, also die Minimierung der Anzahl von Schritten, die die AI braucht, um die richtigen Informationen zu finden.
Je weniger Schritte, desto geringer die Fehlerakkumulation.
Und um Tokenverschwendung zu reduzieren, füge ich große Dateien nur einmal in den System-Prompt ein.
Wenn in Blogs Prompt-Engineering verglichen wird, frage ich mich jedes Mal, ob nur einmal ausgeführt wurde oder mehrfach wiederholt.
LLMs liefern selbst bei gleicher Eingabe keine konsistenten Ergebnisse.
Meist wirkt es so, als würden anekdotische Daten als Wissenschaft verpackt.
Aber wenn man sorgfältig benchmarkt, gibt es wenige Aufrufe; macht man es schlampig, steigt der Blog-Traffic um das Neunfache.
Das Problem ist eine verzerrte Anreizstruktur.
Es gibt sogar noch bessere Methoden als AGENTS.md.
Man kann einen Ordner
.contextanlegen und projektrelevante Dokumente (README, Abhängigkeitsdokumentation usw.) per symbolischem Link hineinlegen, sodass sie immer in den Kontext geladen werden.So hat das LLM von Anfang an alle nötigen Informationen, was bessere Leistung und geringere Kosten ermöglichen kann.
_vendorzu legen.Das LLM kann den Code direkt analysieren und verstehen, wie er funktioniert.
Das sind Erfahrungen aus der Entwicklung meines eigenen Custom-Agenten.
Nachdem ich
read/write_filein den Zustand aufgenommen und im System-Prompt sichtbar gemacht habe, funktionierte es deutlich besser.Jetzt versuche ich das mit quantitativen Bewertungen (evals) zu belegen. Subjektiv fühlt sich die Leistung sehr gut an.