
Etwa zwei Jahre lang lief meine Küche auf drei Systemen. Das Gewürzregal, das zur Wohnung gehörte, über dem Herd an die Wand geschraubt. Die Schublade, die ich selbst sortiert habe, als das Regal voll war. Und ein Brett in der Speisekammer für alles, was in keines von beiden passte.
In allen dreien lag Paprikapulver. Ich weiß es, weil ich es dreimal gekauft habe.
Das ist keine Katastrophe; damit lebt man. Was mich fertiggemacht hat, war ein Samstag, an dem ein Freund bei mir kochte und ich den ganzen Abend hinter ihm stand — nein, die gute Pfanne liegt unter der Spüle, das Salz ist grob, nimm die Hälfte, der Ofen geht zu heiß. Er kocht besser als ich. Er konnte in meiner Küche nur nicht arbeiten, ohne dass ich darin stand.
Vor zwei Wochen habe ich gemerkt, dass unsere Repositories genau in diesem Zustand waren.
Drei Regale, eine Küche
OwlMeans Common ist die Bibliothek, auf der jedes Projekt aufsetzt, das wir bauen, und jedes dieser Projekte wird von einem Agenten gebaut. Ein Repository hier enthält also nicht nur Code — es enthält die Anleitung, die der Agent zuerst liest: wie wir Dinge anordnen, was man niemals tut, welches Skript wofür da ist.
Wir unterstützten zwei Agenten, Claude Code und GitHub Copilot, und jeder wollte sein eigenes Regal. Also wurde jede Regel zweimal geschrieben — einmal als .claude/skills/<name>/SKILL.md, einmal als .github/instructions/<name>.instructions.md. Zwei dauerhaft geladene Kontextdateien, fast Kopien voneinander. Zwei Landkarten des Repositories. Dasselbe Shell-Skript, Byte für Byte, in zwei Verzeichnissen. Zwei Memory-Ordner, die still auseinanderdrifteten.
Die Steuer steht direkt in der History: Ein Commit aus dieser Zeit fasst zwölf Skill-Dateien an und ihre elf gespiegelten Zwillinge. Niemand hat entschieden, dass das eine gute Idee ist. Es ist gewachsen, so wie ein drittes Gewürzregal wächst.
Ein Regal, eine Karte
Also habe ich es herausgerissen. Alles wanderte in einen Ordner — .agents/, mit Skills, Regeln, Skripten und Memory — und alles, was ein Agent vor dem Start lesen muss, wanderte in eine einzige Datei im Wurzelverzeichnis: AGENTS.md. In OwlMeans Common hat das zweihundertdreizehn doppelte Instruktionsdateien gelöscht. CLAUDE.md, vorher sechsundachtzig Zeilen von allem, ist heute sechshundert Byte groß.
Das Regal habe ich nicht erfunden. Ich habe das genommen, auf das sich alle anderen längst geeinigt hatten — und wie sie sich geeinigt haben, ist der Grund, warum ich ihm vertraue.
Im Mai 2025 schlug Amp eine einzige Datei namens AGENT.md vor, im Singular. Dann wählte OpenAI für Codex den Plural — und der Plural ist der Punkt, denn eine Datei teilen sich viele Agenten. Amp hätte um den eigenen Namen kämpfen können. Stattdessen schrieben sie: „statt auf dem zu beharren, was wir uns ausgedacht haben, war uns ein einziger Standard lieber” — unter der Bedingung, dass OpenAI sich die Domain agents.md sichert. OpenAI tat es, und Amp stellte um.
Von zwanzigtausend Repositories im August 2025 ging es auf über sechzigtausend heute, und im Dezember wurde das Ganze an die Agentic AI Foundation unter dem Dach der Linux Foundation übergeben. Dreiundzwanzig Tools lesen es inzwischen nativ — Codex, Cursor, Copilot, Gemini CLI, Zed, Windsurf, Devin, Jules, Aider.
Die andere Hälfte des Regals kam aus der Gegenrichtung. Agent Skills — das SKILL.md-Format — stammte von Anthropic, wurde im Dezember 2025 als öffentliche Spezifikation geöffnet und wird von derselben Foundation betreut. Sie legt genau fest, wie ein Skill-Ordner aussieht, und sagt kein Wort darüber, wo dieser Ordner liegt. Also suchte sich jeder Anbieter ein Elternverzeichnis. Codex scannt .agents/skills. Copilot akzeptiert .agents/skills. Damit war die Sache für mich entschieden.
Der Gast, der seine eigenen Messer mitbringt

Ein Agent liest die Karte an der Tür nicht.
Claude Code liest CLAUDE.md, und nur CLAUDE.md. Die Bitte, auch AGENTS.md zu lesen, ist seit März offen — Issue #34235 im Claude-Code-Repository, in einem Cluster mit Tausenden Upvotes — und sie ist es immer noch. Was ein bisschen komisch ist, wenn man bedenkt, dass Anthropic das Skill-Format geschrieben hat, das in der anderen Hälfte desselben Ordners liegt.
Die verlockende Lösung ist eine zweite Kopie. Alle, die es versuchen, berichten dasselbe Ende: Zwei von Hand gepflegte Dateien driften immer auseinander, und eine abgedriftete Instruktionsdatei ist schlimmer als gar keine, weil der Agent ihr glaubt.
Also haben wir eine Brücke gebaut. CLAUDE.md überlebt mit sechshundertzehn Byte, Byte für Byte identisch in jedem Repository, und seine erste Zeile lautet @AGENTS.md. Der Rest ist eine Notiz, dass Skills in .agents/skills/ leben und niemals woanders geschrieben werden dürfen. Ein kleines Shell-Skript erzeugt dann pro Skill einen Symlink in ein von git ignoriertes .claude/skills/, und ein Session-Hook baut sie jedes Mal neu auf. Pro Skill, nicht pro Verzeichnis — Claude Code akzeptiert einen verlinkten Skill-Eintrag, aber keinen verlinkten Skills-Ordner; so etwas lernt man nur, indem man es ausprobiert.
Rezepte in meiner eigenen Handschrift
Die zweite Änderung wiegt schwerer als der Ordner.
Ein Kochbuch sagt: fünfundzwanzig Minuten bei hundertachtzig Grad. Die Karte in meinem Schrank sagt: zweiundzwanzig Minuten, hinten links, dieser Ofen geht zu heiß. Beides stimmt; nur eines handelt von meiner Küche.
OwlMeans-Projekte installieren keine generischen Skills — jedes zieht seine eigenen groß. Unser Plattform-Repository trägt neunzehn, das Agenten-Repository daneben dreiundzwanzig, und wo sich die Namen überschneiden, tun es die Inhalte nicht: execution meint im einen die Abstraktion und im anderen deren Verwendung auf Plattformseite. Das ist keine Dopplung. Das sind zwei verschiedene Küchen.
Das Problem mit einer an die Tür geklebten Karte ist, dass Öfen sich ändern. Deshalb schließt das Harness jetzt den Kreis. Einen Plan zu genehmigen heißt zugleich, den Durchgang danach zu genehmigen: Wenn die Arbeit gelandet ist, geht der Agent die Skills durch, die sie berührt hat, schreibt die um, die nicht mehr stimmen, und der Abschlussbericht muss eine Tabelle enthalten — was aktualisiert, was angelegt wurde und was nichts brauchte, mit Begründung. Ein Bericht ohne diese Tabelle gilt als unfertig.
Und noch eine Regel, die mir besser gefällt, als ich erwartet hätte: Ein Skill nennt die geltenden Regeln, nie das, was sich geändert hat. Keine datierten Bulletins, kein früher X, jetzt Y. Der Test lautet: Ein fertiger Skill soll sich lesen, als wäre es schon immer so gewesen.
Regale nach Gericht, nicht nach Einkaufsdatum
Die dritte Änderung ist die, die ich zuletzt hergeben würde.
Agenten führen inzwischen ein Gedächtnis, und wenn man sie lässt, führen sie es als Tagebuch. Unseres war genau das — Dateien, benannt nach dem, was passiert war, etwa slot-status-reconciler.md oder null-error-investigation.md, jede eröffnet mit dem, woran wir in jener Woche saßen. Das ist ein Einkaufsprotokoll. Es hält perfekt fest, wann du etwas gekauft hast, und sagt nichts darüber, was das heutige Gericht braucht.
Also haben wir die Regale nach Gerichten neu geordnet. Ein Memory-Knoten heißt jetzt nach einem echten Teil des Projekts — einem Subsystem, einem Thema wie Routing oder Übersetzungen, einem externen Dienst oder dem Workspace selbst — und nie nach einem Ereignis, einem Datum oder einer Aufgabe. Sein Körper teilt sich in: was gilt, was gelten muss, was dich beißt und wo du nachschaust — und Datumsangaben sind in genau einem Abschnitt erlaubt, für Arbeit, die noch läuft.
Die eigentliche Arbeit macht der Index. Höchstens fünfzig Zeilen, eine pro Knoten, jede mit den Pfaden, die dieser Knoten abdeckt. Ein Agent liest ihn zu Sitzungsbeginn und sonst nichts; kommt eine Aufgabe, gleicht er ihre Pfade mit diesen Zeilen ab und öffnet den einen oder die zwei, die passen. Er liest nie den ganzen Speicher.
Und Schreibvorgänge sind Merges. Ändert sich etwas, schreibst du die Zeile an Ort und Stelle neu — nie eine datierte Korrektur darunter, sonst wird die Datei still wieder zum Tagebuch. Unser Plattform-Repository ging von zwanzig chronologischen Dateien auf elf strukturelle Knoten, und irgendetwas zu finden hörte auf, eine Ausgrabung zu sein.
Du kannst es einfach haben
Einen Schritt zurück, und nichts davon ist exotisch. Ein Ordner statt drei. Eine Karte an der Tür, die sagt, wie der Laden funktioniert. Rezepte in eigener Handschrift, aktuell gehalten. Regale, gruppiert nach dem, was du tatsächlich kochst.
Gekostet hat es trotzdem zwei Wochen, und das meiste davon ging für Dinge drauf, die man nicht nachschlagen kann — dass es den Standard gibt und welcher gewonnen hat, dass ein verlinktes Skills-Verzeichnis scheitert, wo Symlinks pro Skill funktionieren, dass an Ereignisse geknüpftes Gedächtnis verrottet und an Struktur geknüpftes nicht.
Also das ehrliche Angebot.
Wenn du mit einem Coding-Agenten irgendetwas Echtes baust, wirst du darauf stoßen. Du wirst einen zweiten Agenten hinzunehmen und anfangen, alles doppelt zu schreiben. Du wirst einen Memory-Ordner großziehen, der sich liest wie ein Tagebuch, das niemand aufschlagen will. Du kannst es machen wie ich und zwei Wochen verbrennen. Für mich hat sich das gelohnt — es ist mein Job.
Es ist nicht deiner.
Genau das liefert OwlMeans aus. Jedes Projekt, das die Plattform baut, kommt mit dem Harness schon darin — .agents/, AGENTS.md, auf das Projekt zugeschnittene Skills, ein Memory-Graph in der Form seines eigenen Codes — und OwlMeans Services passt dasselbe an eine Codebasis an, die du schon hast. Alles davon gehört dir. Kein Lock-in und kein Haus-Agent: Codex, Copilot, Claude Code, was auch immer nächstes Quartal kommt — sie alle lesen dasselbe Regal.
Jeder Koch, jede Küche. Spar dir meine zwei Wochen — du kannst es einfach haben.
OwlMeans baut Full-Stack-TypeScript-SaaS aus deinen User Stories — typisiert, SSO-ready und dir gehörend, um es mit jedem Agenten weiterzuentwickeln. Sieh, was es kann →