
Люди всё время спрашивают меня, когда они смогут воспользоваться 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’овски: типизированно, явно, полностью оснащённо навыками и навсегда твоё.
Это и есть идея команды-вокруг-агента, уменьшенная настолько, чтобы поместиться в твоём терминале прямо сейчас.