
Гады два мая кухня трымалася на трох сістэмах. Паліца для спецый, што дасталася разам з кватэрай, прыкручаная да сцяны над плітой. Шуфляда, якую я ўпарадкаваў сам, калі паліца перапоўнілася. І паліца ў каморы — для ўсяго, што не змясцілася ні там, ні там.
Ва ўсіх трох была папрыка. Ведаю, бо купіў яе тройчы.
Гэта не катастрофа; з гэтым жывуць. Мяне зламала субота, калі ў мяне гатаваў сябар, а я цэлы вечар прастаяў у яго за спінай — не, добрая патэльня пад мыйкай, гэтая соль буйная, бяры ўдвая менш, духоўка грэе мацней, чым паказвае. Ён гатуе лепш за мяне. Проста ён не мог працаваць на маёй кухні без мяне ўнутры яе.
Два тыдні таму я зразумеў, што нашы рэпазіторыі — акурат у такім стане.
Тры паліцы, адна кухня
OwlMeans Common — гэта бібліятэка, на якой стаіць кожны праект, што мы будуем, і кожны з гэтых праектаў будуе агент. Таму рэпазіторый тут трымае не толькі код — ён трымае інструкцыі, якія агент чытае найпершымі: як мы ўсё раскладаем, чаго нельга рабіць ніколі, які скрыпт за што адказвае.
Мы падтрымлівалі двух агентаў, Claude Code і GitHub Copilot, і кожны хацеў сваю паліцу. Таму кожнае правіла пісалася двойчы — адзін раз як .claude/skills/<назва>/SKILL.md, другі — як .github/instructions/<назва>.instructions.md. Два заўсёды загружаныя файлы кантэксту, амаль копіі адзін аднаго. Дзве мапы рэпазіторыя. Той самы shell-скрыпт, што ляжаў байт у байт у двух каталогах. Дзве тэчкі памяці, якія ціха разыходзіліся.
Падатак відаць проста ў гісторыі: адзін коміт таго перыяду закранае дванаццаць файлаў навыкаў і адзінаццаць іх люстраных двайнікоў. Ніхто не вырашаў, што гэта добрая ідэя. Яно нарасло — гэтак жа, як нарастае трэцяя паліца для спецый.
Адна паліца, адна картка
Дык я гэта вырваў. Усё пераехала ў адну тэчку — .agents/, дзе ляжаць навыкі, правілы, скрыпты і памяць, — а ўсё, што агент мусіць прачытаць перад стартам, сабралася ў адзін файл у корані: AGENTS.md. У OwlMeans Common гэта выдаліла дзвесце трынаццаць дубляваных файлаў інструкцый. CLAUDE.md, у якім раней было восемдзесят шэсць радкоў усяго на свеце, цяпер важыць шэсцьсот байтаў.
Паліцу прыдумаў не я. Я ўзяў тую, на якой усе ўжо сышліся, — і тое, як менавіта яны сышліся, і ёсць прычынай, чаму я ёй давяраю.
У траўні 2025-га Amp прапанаваў адзін файл пад назвай AGENT.md, у адзіночным ліку. Потым OpenAI выбрала для Codex множны — і множнасць тут галоўнае, бо адзін файл дзеляць паміж сабой шмат агентаў. Amp мог біцца за сваю назву. Замест гэтага яны напісалі: «замест таго каб настойваць на тым, што прыдумалі мы, мы вырашылі, што лепш мець адзін стандарт» — пры ўмове, што OpenAI замацуе за сабой дамен agents.md. OpenAI гэта зрабіла, і Amp перайшоў.
Ад дваццаці тысяч рэпазіторыяў у жніўні 2025-га гэта вырасла да больш чым шасцідзесяці тысяч сёння, а ў снежні стандарт перадалі Agentic AI Foundation пад крылом Linux Foundation. Дваццаць тры інструменты чытаюць яго натыўна — Codex, Cursor, Copilot, Gemini CLI, Zed, Windsurf, Devin, Jules, Aider.
Другая палова паліцы прыйшла з супрацьлеглага боку. Agent Skills — фармат SKILL.md — належаў Anthropic і быў адкрыты як публічная спецыфікацыя ў снежні 2025-га, пад апекай той самай фундацыі. Ён дакладна апісвае, як выглядае тэчка навыку, і не кажа ні слова пра тое, дзе гэтая тэчка мае ляжаць. Таму кожны вендар выбраў бацькоўскі каталог сам. Codex сканіруе .agents/skills. Copilot прымае .agents/skills. Гэта і вырашыла справу за мяне.
Госць, які прыходзіць са сваімі нажамі

Адзін агент картку на дзверцах не чытае.
Claude Code чытае CLAUDE.md — і толькі CLAUDE.md. Просьба чытаць яшчэ і AGENTS.md адкрытая з сакавіка: issue #34235 у рэпазіторыі Claude Code, у кластары з тысячамі галасоў, — і яна адкрытая дагэтуль. Што крыху смешна, улічваючы, што фармат навыкаў з другой паловы гэтай самай тэчкі напісалі ў Anthropic.
Спакуслівы адказ — другая копія. Усе, хто спрабаваў, расказваюць той самы фінал: два файлы, якія рэдагуюць рукамі, заўсёды разыходзяцца, а файл інструкцый, які разышоўся з рэальнасцю, горшы за адсутнасць файла, бо агент яму верыць.
Таму мы зрабілі мосцік. CLAUDE.md выжыў — шэсцьсот дзесяць байтаў, байт у байт аднолькавыя ў кожным рэпазіторыі, — і яго першы радок гэта @AGENTS.md. Астатняе — нататка пра тое, што навыкі жывуць у .agents/skills/ і пісаць іх дзе-небудзь яшчэ нельга ніколі. Далей невялікі shell-скрыпт стварае па адным сімлінку на кожны навык у ігнараваны гітам .claude/skills/, а хук сесіі перастварае іх кожны раз. Па адным на навык, а не на каталог: Claude Code прымае засімлінкаваны запіс навыку, але не засімлінкаваную тэчку навыкаў — такое даведваешся толькі тады, калі паспрабуеш.
Рэцэпты маёй рукой
Другая змена важыць больш за тэчку.
Кулінарная кніга кажа: пячы дваццаць пяць хвілін пры ста васьмідзесяці. Картка ўнутры маёй шафкі кажа: дваццаць дзве хвіліны, задняя левая, гэтая духоўка грэе мацней. Абедзве правільныя; толькі адна — пра маю кухню.
Праекты OwlMeans не ўсталёўваюць агульных навыкаў — кожны вырошчвае свае. У нашым рэпазіторыі платформы іх дзевятнаццаць, у суседнім рэпазіторыі агента — дваццаць тры, і там, дзе назвы супадаюць, змест ужо не: execution у адным азначае абстракцыю, у другім — яе выкарыстанне на баку платформы. Гэта не дубляванне. Гэта дзве розныя кухні.
Праблема з карткай на дзверцах у тым, што духоўкі мяняюцца. Таму харнес цяпер замыкае пятлю. Зацвердзіць план — гэта адначасова зацвердзіць праход, які ідзе следам: калі работа завершана, агент вяртаецца да навыкаў, якіх яна кранула, перапісвае тыя, што ўжо няпраўдзівыя, а фінальная справаздача абавязана несці табліцу — што абноўлена, што створана, а што не патрабавала нічога, і чаму. Справаздача без гэтай табліцы лічыцца незавершанай.
І яшчэ адно правіла, якое спадабалася мне больш, чым я чакаў: навык апісвае дзейныя правілы, а не тое, што змянілася. Ніякіх датаваных бюлетэняў, ніякага раней X, цяпер Y. Праверка простая: гатовы навык мусіць чытацца так, быццам функцыя заўсёды была менавіта такой.
Паліцы паводле страў, а не паводле даты пакупкі
Трэцяя змена — тая, з якой я развітаўся б апошняй.
Агенты цяпер маюць памяць, і, пакінутыя самі сабе, вядуць яе як дзённік. Наша так і выглядала — файлы, названыя паводле падзей, накшталт slot-status-reconciler.md ці null-error-investigation.md, кожны пачынаўся з таго, што мы рабілі на тым тыдні. Гэта спіс пакупак. Ён выдатна фіксуе, калі ты нешта купіў, і нічога не кажа пра тое, што патрэбна для сённяшняй вячэры.
Таму мы перагрупавалі паліцы паводле страў. Вузел памяці цяпер называецца паводле рэальнай часткі праекта — падсістэмы, тэмы накшталт роўтынгу ці перакладаў, знешняга сервісу або самога рэпазіторыя — і ніколі паводле падзеі, даты ці задачы. Яго цела дзеліцца на тое, што ёсць праўдай, што мусіць выконвацца, што балюча кусае і дзе шукаць, а даты дазволеныя роўна ў адной секцыі — для работы, якая яшчэ ідзе.
Сапраўдную работу робіць індэкс. Максімум пяцьдзясят радкоў, па адным на вузел, у кожным — шляхі, якія гэты вузел пакрывае. Агент чытае яго ў пачатку сесіі і больш нічога; калі прыходзіць задача, ён супастаўляе яе шляхі з гэтымі радкамі і адкрывае той адзін-два вузлы, што супалі. Ён ніколі не чытае ўсё сховішча.
А запісы — гэта зліццё. Калі нешта мяняецца, ты перапісваеш радок на месцы і ніколі не дапісваеш пад ім датаваную папраўку, інакш файл ціха зноў становіцца дзённікам. Наш рэпазіторый платформы прайшоў шлях ад дваццаці храналагічных файлаў да адзінаццаці структурных вузлоў, і пошук чаго заўгодна перастаў быць раскопкамі.
Гэта можна проста мець
Адыдзі на крок — і нічога экзатычнага тут няма. Адна тэчка замест трох. Картка на дзверцах, якая тлумачыць, як тут усё ўладкавана. Рэцэпты сваёй рукой, якія трымаюць актуальнымі. Паліцы, згрупаваныя паводле таго, што ты сапраўды гатуеш.
І ўсё роўна гэта каштавала два тыдні, большасць з якіх пайшла на рэчы, якіх не нагугліш: што стандарт існуе і які менавіта перамог; што засімлінкаваная тэчка навыкаў не працуе там, дзе працуюць асобныя сімлінкі на навыкі; што памяць, прывязаная да падзей, гніе, а прывязаная да структуры — не.
Дык вось сумленная прапанова.
Калі ты будуеш з агентам нешта сапраўднае, ты ў гэта ўпрэшся. Ты дадасі другога агента і пачнеш пісаць усё двойчы. Ты вырасціш тэчку памяці, якая чытаецца як дзённік, што яго ніхто не хоча адкрываць. Можна зрабіць як я і спаліць два тыдні. Мне гэта было варта таго — гэта мая работа.
Гэта не твая работа.
Менавіта гэта і пастаўляе OwlMeans. Кожны праект, што яго будуе Платформа, выходзіць з харнесам ужо ўнутры — .agents/, AGENTS.md, навыкі, скроеныя пад гэты праект, граф памяці ў форме яго ўласнага кода, — а OwlMeans Services прыладжвае тое самае да кодавай базы, якая ў цябе ўжо ёсць. Усё гэта належыць табе. Ніякага вендар-локіну і ніякага «хатняга» агента: Codex, Copilot, Claude Code, што б ні выйшла ў наступным квартале — усе яны чытаюць адну і тую ж паліцу.
Любы кухар, любая кухня. Прапусці мае два тыдні — гэта можна проста мець.
OwlMeans будуе поўнастэкавыя TypeScript SaaS-прадукты з вашых гісторый — тыпізаваныя, гатовыя да SSO, вашы для далейшага развіцця з любым агентам. Глядзіце, на што ён здольны →