
Люди постійно питають мене, коли вони зможуть скористатися OwlMeans. Чесна відповідь донедавна звучала так: коли запуститься Платформа. Тепер є краща — найважливішою частиною можна скористатися вже сьогодні, на агенті, якому ти вже довіряєш.
OwlMeans — це пайплайн розробки на основі AI. Ти описуєш, чого хочеш, у формі історій користувача, а команда спеціалізованих ролей AI перетворює їх на повноцінні застосунки на TypeScript, які справді належать тобі. Під кожним із цих застосунків лежить одна бібліотека — OwlMeans Common — те, з чого зібрані всі наші проєкти. Цього тижня вона отримала пакет create-app. Одна команда розгортає цілісний фулстек-проєкт, який Claude Code чи GitHub Copilot здатен розвивати від початку до кінця, з усіма настановами для агента вже в комплекті.
Хочу провести тебе крізь те, що дає ця команда, чому вона побудована саме так і як пройти шлях від порожньої теки до справжньої функції на базі даних, не написавши власноруч жодного рядка обв’язки.
Одна команда
Обери свій менеджер пакетів:
bun create @owlmeans/app my-app
# або
npm create @owlmeans/app@latest my-app
# або
npx @owlmeans/create-app my-app
А потім:
cd my-app
bun run dev # API на :3000, web на :3001
Відкрий вебзастосунок, перейди на екран Сесії, додай і прибери кілька елементів. Це робочий фулстек-застосунок: типізований спільний контракт, бекенд і фронтенд на shadcn UI, що розмовляють один з одним. Жодної бази, яку треба піднімати, жодної автентифікації, яку треба налаштовувати, жодного boilerplate, який довелося б копіювати з туторіалу.
Ти отримуєш невелике монорепо з трьома воркспейсами:
common— спільний контракт: entrypoint’и маршрутів, схеми валідації й типи, які використовують обидві сторони.api— бекенд на@owlmeans/server-app, що тримає демодані в ресурсі в пам’яті.web— фронтенд на@owlmeans/web-panel, з навігацією shadcn, макетом і екранами.
Ця структура — не іграшка. Це та сама форма, яку мають наші справжні застосунки, зведена до самої суті. Коли ти переростеш сховище в пам’яті, ти підміняєш один пакет — нижче покажу це детально.
Чому це побудовано так, щоб агенти не губилися
Ось незручна правда про кодувальних агентів у 2026 році. У них немає стажу. Кожна сесія починається з чистого аркуша, і кожен виклик платить повну ціну за все, що твій код не зробив явним. Цифри жорсткі: на середньому за розміром коді фаза розвідки — коли агент читає файли просто щоб зрозуміти, де що лежить — здатна з’їсти «60–70% усіх вхідних токенів», а одне завдання може прогнати крізь модель сотні тисяч, а то й мільйони сукупних токенів. Агент розумний. Агент також «стартує з чистого аркуша, окрім того, що ти явно подаєш у його вікно контексту».
Тож питання, що сформувало OwlMeans Common, було простим: який вигляд має код, спроєктований так, щоб його читав той, хто між сесіями забуває все?
Відповідь виявилася тим самим, чого досвідчені інженери прагнули завжди. Галузь дійшла до цього незалежно цього року — «код має бути простим, явним і нудним… щоб AI не мало жодних рішень для ухвалення», а агенти «мучаться з неявною поведінкою та хитрими абстракціями». Це рівно те обмеження, під яким ми будували:
- Жодних складних схем DI. Сервіси — це звичайні фабричні функції на TypeScript, зареєстровані за рядковим аліасом і отримувані через
context.service('alias'). Жодних декораторів, жодних метаданих, жодної магії контейнера, яку довелося б розкручувати назад. - Жодного згенерованого коду. Жодного кроку OpenAPI-у-клієнт, жодного codegen’у схем, жодного артефакту збірки, який треба тримати в злагоді з реальністю. Що читаєш, те й працює.
- Жодного YAML, жодного розливу конфігів. Конфігурація — це TypeScript. Маршрути й конфіг — це звичайні об’єкти.
- Усе явне й простежуване. Кожен сервіс, кожен маршрут, кожен ресурс можна знайти, просто пошукавши його. Людина здатна простежити це. Агент теж — не спалюючи тисячу токенів на здогадки.
Останній пункт — це вся гра. Явний, нудний код дешевший для роботи агента, і саме це різниця між асистентом, який упевнено редагує потрібний файл, і тим, що метається по сорока.

Чотири ідеї, що полегшують агенту роботу
Чотири проєктні рішення роблять більшість роботи. Запам’ятовувати їх не обов’язково — але варто побачити раз, бо саме завдяки їм запит до Claude Code лягає чисто, а не розповзається.
Інʼєкція контексту. Контекст застосунку тримає твої сервіси й ресурси і передається згори донизу. Сервіс ти реєструєш як фабричне замикання і дістаєш за аліасом. Нічого не приховано: уся обв’язка — це звичайний код, який агент прочитує за один прохід.
Entrypoint’и як універсальний фулстек-протокол. Це наріжний камінь. Entrypoint — це одиниця URL: аліас, шлях, метод і вбудована схема валідації — оголошена один раз у common:
entrypoint(
route(session.add, '/:sid/items', { parent: session.base, method: RouteMethod.POST }),
filter(params(SessionParamsSchema), body(AddItemSchema)),
)
Бекенд elevate’ить той самий entrypoint обробником. Фронтенд elevate’ить його екраном і викликає через ctx.entrypoint(session.add).call({ params, body }). Одне оголошення є єдиним джерелом правди для маршруту, валідації й типів з обох боків. Змінюєш його раз — і весь стек лишається синхронним. Немає окремої специфікації API, немає згенерованого клієнта, який міг би розійтися з реальністю. Для агента це означає, що нова функція має очевидну, повторювану форму: оголоси, реалізуй, виклич.
Уніфіковані ресурси. Кожне сховище даних — у пам’яті, MongoDB, Redis, об’єктне сховище — реалізує той самий інтерфейс Resource<T>: get, list, create, update, delete і кілька споріднених. Код твого обробника не змінюється, коли змінюється сховище. Підміна демонстраційного сховища в пам’яті на справжню базу — це, майже буквально, зміна одного пакета.
shadcn UI, що належить тобі. Вебшар стоїть на shadcn і Tailwind v4, а компоненти живуть у твоєму дереві джерел — не за залежністю. Це навмисно. shadcn «не бібліотека, яку ти встановлюєш, — це генератор коду… він твій», і він став бібліотекою компонентів, по яку тягнеться кожен AI-інструмент для кодування. Агент читає твій UI як справжній, придатний до редагування React — той самий код, який він уже знає, — замість колупатися в непрозорому пакеті.
Повністю оснащений навичками з першого дня
Ось частина, якою я найбільше пишаюся. Проєкт приходить, уже знаючи, як його розвивати.
Кожен пакет @owlmeans/* постачає власні настанови для агента — навички Claude Code та інструкції GitHub Copilot, узгоджені за версією з пакетом. Коли create-app завершує ставити каркас, він розгортає ці настанови в проєкті: навички лягають у .claude/skills/, інструкції — у .github/instructions/. Він також пише CLAUDE.md і .github/copilot-instructions.md з директивами пам’яті, а на додачу — стартові індекси пам’яті, які обидва агенти читають на початку кожної сесії.
Тож коли ти відкриваєш проєкт і просиш Claude Code торкнутися шару ресурсів, йому не треба спершу з’ясовувати, як працюють ресурси OwlMeans — навичка mongo-resource уже на місці. Коли він додає маршрут, навичка entrypoint уже на місці. У CLAUDE.md навіть вбудовано правило reuse-code, яке наказує агенту спершу пошукати наявний пакет @owlmeans/*, перш ніж вигадувати власне рішення. Уперше відкривши проєкт, агент запитає тебе, для чого він, і запише твою відповідь в обидва файли контексту, щоб більше ніколи не питати.
Нічого з цього ти не писав. Ти не зшивав жодної обв’язки. Навички, пам’ять і конвенції прийшли разом із командою. Ось що насправді означає на практиці «самодостатній, повністю оснащений навичками» — і це та сама машинерія, на яку спирається наша Платформа, подана тобі напряму.

Покроково: від каркаса до справжньої функції
Зробімо це предметно. Скажімо, ти хочеш перетворити демонстраційне сховище в пам’яті на справжню, стійку функцію на базі MongoDB. Ти не відкриваєш документацію і не береш зшивати драйвери. Ти ставиш каркас, а потім просиш.
Спершу постав каркас і запусти його (підійде будь-який менеджер):
bun create @owlmeans/app my-app # або: npm create @owlmeans/app@latest my-app
cd my-app
bun run dev
Потім у Claude Code (чи Copilot) почни з запиту в такому дусі:
Додай стійку функцію нотаток на базі MongoDB. Використай
@owlmeans/mongoі@owlmeans/mongo-resourceзамість статичного ресурсу в пам’яті. Оголоси entrypoint’и та схему вsources/common, зареєструй ресурс і реалізуй обробники вsources/api, а вsources/webдодай екран. Перевикористовуй наявні пакети@owlmeans/*— тримайся навичкиreuse-code.
Цей запит працює без водіння за руку, і варто розуміти чому. Проєкт уже несе навички саме для цього. Агент знає, що підміна ресурсу — один до одного, бо кожен ресурс реалізує той самий інтерфейс: обробник, що робив context.getStaticResource(...), стає context.resource(...) над колекцією Mongo, а виклики create/list/delete ідентичні:
const notes = context.resource<NotesResource>(RES_NOTES)
await notes.create({ id, text, createdAt })
const { items } = await notes.list({ criteria: { ... } })
Він знає, що патерн entrypoint лишається тим самим — оголоси в common, elevate’ни обробником у api, elevate’ни екраном у web. І знає, що твій UI — це shadcn, який він може редагувати напряму. Оскільки структура явна, а настанови їдуть разом із репозиторієм, агент витрачає токени на побудову твоєї функції, а не на перевивчання фреймворка щосесії. Коли пізніше ти оновлюєш пакети @owlmeans/*, ти заново запускаєш npx @owlmeans/agent-skills, і настанови оновлюються разом із ними.
Чому це початок, а не вся історія
Скажу прямо, чим це є, а чим ні.
create-app — це бібліотека й настанови для агента, подані тобі, щоб ти сам кермував цим із Claude Code чи Copilot. Це справді потужно, і для багатьох проєктів цього цілком досить. Платформа OwlMeans — повний пайплайн спеціалізованих ролей AI, що перетворює історії користувача на готове, твоє програмне забезпечення — це шар згори, побудований навколо цієї самої бібліотеки. Саме тому вона здатна робити те, що робить, за частку вартості: вона не досліджує щосесії чужий код і не платить податок на розвідку, а оперує фреймворком, спроєктованим від самих основ так, щоб бути явним, повторюваним і дешевим для осмислення. Наша мета — щоб Платформа будувала ці проєкти приблизно вдесятеро меншою кількістю токенів, ніж невгамовний кодувальний агент, що продирається крізь незнайоме репо.
Але чекати на це не обов’язково. Фундамент, на якому стоїть Платформа, можна доставити вже сьогодні — однією командою, на агенті, за якого ти й так уже платиш. Запусти create-app, націль на нього Claude Code — і ти отримаєш справжній смак того, як будують по-owlmeans’івськи: типізовано, явно, повністю оснащено навичками і назавжди твоє.
Це і є ідея команди-навколо-агента, зменшена настільки, щоб поміститися у твоєму терміналі просто зараз.