
Ludzie wciąż pytają mnie, kiedy będą mogli skorzystać z OwlMeans. Szczera odpowiedź brzmiała do tej pory: kiedy ruszy Platforma. Teraz mam lepszą — z najważniejszej części możesz skorzystać już dziś, na agencie, któremu już ufasz.
OwlMeans to pipeline rozwoju oparty na AI. Opisujesz, czego chcesz, w formie historyjek użytkownika, a zespół wyspecjalizowanych ról AI zamienia je w pełnowymiarowe aplikacje w TypeScript, które naprawdę są Twoje. Pod każdą z tych aplikacji leży jedna biblioteka — OwlMeans Common — to, z czego zbudowane są wszystkie nasze projekty. W tym tygodniu dostała pakiet create-app. Jedno polecenie tworzy kompletny, fullstackowy projekt, który Claude Code albo GitHub Copilot potrafi rozwijać od początku do końca, z całą instrukcją dla agenta już w komplecie.
Chcę Ci pokazać, co daje to polecenie, dlaczego jest zbudowane właśnie tak i jak przejść od pustego folderu do prawdziwej funkcji opartej na bazie danych, nie pisząc samodzielnie ani jednej linijki rusztowania.
Jedno polecenie
Wybierz swój menedżer pakietów:
bun create @owlmeans/app my-app
# albo
npm create @owlmeans/app@latest my-app
# albo
npx @owlmeans/create-app my-app
A potem:
cd my-app
bun run dev # API na :3000, web na :3001
Otwórz aplikację webową, przejdź do ekranu Sesji, dodaj i usuń kilka elementów. To jest działająca aplikacja fullstack: typowany, współdzielony kontrakt, backend i frontend w shadcn UI, które ze sobą rozmawiają. Żadnej bazy do postawienia, żadnej autoryzacji do skonfigurowania, żadnego boilerplate’u, który musiałeś przekopiować z tutoriala.
Dostajesz niewielkie monorepo z trzema workspace’ami:
common— współdzielony kontrakt: entrypointy tras, schematy walidacji i typy używane po obu stronach.api— backend, na@owlmeans/server-app, trzymający dane demo w zasobie w pamięci.web— frontend, na@owlmeans/web-panel, z nawigacją shadcn, układem i ekranami.
Ta struktura to nie zabawka. To ten sam kształt, którego używają nasze prawdziwe aplikacje, sprowadzony do absolutnych podstaw. Kiedy wyrośniesz ze składu w pamięci, podmieniasz jeden pakiet — pokażę Ci to niżej dokładnie.
Dlaczego jest zbudowane tak, żeby agenty się nie gubiły
Oto niewygodna prawda o agentach kodujących w 2026 roku. Nie mają stażu pracy. Każda sesja zaczyna się od czystej kartki, a każde wywołanie płaci pełną cenę za wszystko, czego Twój kod nie zdołał powiedzieć wprost. Liczby są brutalne: w średniej wielkości kodzie faza eksploracji — agent czytający pliki tylko po to, by zorientować się, gdzie co jest — potrafi pochłonąć „60–70% wszystkich tokenów wejściowych”, a pojedyncze zadanie potrafi przepuścić przez model setki tysięcy, a nawet miliony skumulowanych tokenów. Agent jest mądry. Agent też „startuje od czystej kartki, poza tym, co sam jawnie wrzucisz do jego okna kontekstu”.
Więc pytanie, które ukształtowało OwlMeans Common, było proste: jak wygląda kod zaprojektowany tak, by mógł go czytać ktoś, kto między sesjami zapomina wszystko?
Odpowiedź okazała się tym samym, czego dobrzy inżynierowie chcieli od zawsze. Branża doszła do tego niezależnie w tym roku — „kod powinien być prosty, jawny i nudny… żeby AI nie miało żadnych decyzji do podjęcia”, a agenty „męczą się z ukrytymi zachowaniami i sprytnymi abstrakcjami”. To dokładnie to ograniczenie, pod którym budowaliśmy:
- Żadnych skomplikowanych schematów DI. Usługi to zwykłe funkcje fabryczne w TypeScript, rejestrowane pod aliasem-stringiem i pobierane przez
context.service('alias'). Żadnych dekoratorów, żadnych metadanych, żadnej magii kontenera do odtwarzania. - Żadnego generowanego kodu. Żadnego kroku OpenAPI-do-klienta, żadnego codegenu schematów, żadnego artefaktu builda, który trzeba trzymać w zgodzie z rzeczywistością. To, co czytasz, to to, co działa.
- Żadnego YAML-a, żadnego rozlewu konfiguracji. Konfiguracja to TypeScript. Trasy i konfiguracja to zwykłe obiekty.
- Wszystko jawne i możliwe do prześledzenia. Każdą usługę, każdą trasę, każdy zasób da się znaleźć, po prostu ich szukając. Człowiek potrafi to prześledzić. Agent też — bez spalania tysiąca tokenów na zgadywanie.
Ten ostatni punkt to cała gra. Jawny, nudny kod jest dla agenta tańszy w pracy i to właśnie różnica między asystentem, który pewnie edytuje właściwy plik, a takim, który miota się po czterdziestu.

Cztery pomysły, które ułatwiają agentowi robotę
Cztery decyzje projektowe robią większość roboty. Nie musisz ich zapamiętywać — ale warto je raz zobaczyć, bo to dzięki nim prośba do Claude Code trafia czysto, zamiast się rozłazić.
Wstrzykiwanie kontekstu. Kontekst aplikacji trzyma Twoje usługi i zasoby i jest przekazywany z góry na dół. Usługę rejestrujesz jako domknięcie-fabrykę i rozwiązujesz przez alias. Nic nie jest ukryte: całe okablowanie to zwyczajny kod, który agent czyta za jednym razem.
Entrypointy jako uniwersalny protokół fullstack. To zwornik całości. Entrypoint to jednostka URL — alias, ścieżka, metoda i wbudowany schemat walidacji — zadeklarowana raz w common:
entrypoint(
route(session.add, '/:sid/items', { parent: session.base, method: RouteMethod.POST }),
filter(params(SessionParamsSchema), body(AddItemSchema)),
)
Backend elevate’uje ten sam entrypoint o handler. Frontend elevate’uje go o ekran i wywołuje przez ctx.entrypoint(session.add).call({ params, body }). Jedna deklaracja jest jedynym źródłem prawdy dla trasy, walidacji i typów po obu stronach. Zmieniasz ją raz, a cały stack pozostaje zsynchronizowany. Nie ma osobnej specyfikacji API, nie ma generowanego klienta, który mógłby się rozjechać. Dla agenta znaczy to, że nowa funkcja ma oczywisty, powtarzalny kształt: zadeklaruj, zaimplementuj, wywołaj.
Ujednolicone zasoby. Każdy magazyn danych — w pamięci, MongoDB, Redis, składowanie obiektów — implementuje ten sam interfejs Resource<T>: get, list, create, update, delete i kilka pokrewnych. Twój kod handlera nie zmienia się, gdy zmienia się składowanie. Podmiana demowego składu w pamięci na prawdziwą bazę to — niemal dosłownie — zmiana jednego pakietu.
shadcn UI, które jest Twoje. Warstwa webowa stoi na shadcn i Tailwind v4, a komponenty żyją w Twoim drzewie źródeł — nie za zależnością. To celowe. shadcn „nie jest biblioteką, którą instalujesz — to generator kodu… jest Twój”, i stał się biblioteką komponentów, po którą sięga każde narzędzie AI do kodowania. Agent czyta Twoje UI jako prawdziwy, edytowalny React — ten sam kod, który już zna — zamiast dłubać w nieprzejrzystym pakiecie.
W pełni wyposażony w umiejętności od pierwszego dnia
Oto część, z której jestem najbardziej dumny. Projekt przychodzi, już wiedząc, jak ma być rozwijany.
Każdy pakiet @owlmeans/* dostarcza własną instrukcję dla agenta — umiejętności Claude Code i instrukcje GitHub Copilota, dopasowane wersją do pakietu. Kiedy create-app kończy stawiać szkielet, wgrywa tę instrukcję do projektu: umiejętności lądują w .claude/skills/, instrukcje w .github/instructions/. Pisze też CLAUDE.md oraz .github/copilot-instructions.md z dyrektywami pamięci, a do tego startowe indeksy pamięci, które oba agenty czytają na początku każdej sesji.
Więc kiedy otwierasz projekt i prosisz Claude Code, żeby dotknął warstwy zasobów, nie musi on dopiero odkrywać, jak działają zasoby OwlMeans — umiejętność mongo-resource jest na miejscu. Kiedy dodaje trasę, umiejętność entrypoint jest na miejscu. W CLAUDE.md wbudowana jest nawet reguła reuse-code, która każe agentowi najpierw poszukać istniejącego pakietu @owlmeans/*, zanim wymyśli własne rozwiązanie. Przy pierwszym otwarciu projektu agent zapyta Cię, do czego on służy, i zapisze Twoją odpowiedź w obu plikach kontekstu, żeby nigdy więcej nie pytać.
Nic z tego nie napisałeś. Nie okablowałeś żadnego rusztowania. Umiejętności, pamięć i konwencje przyszły razem z poleceniem. To właśnie znaczy w praktyce „samowystarczalny, w pełni wyposażony w umiejętności” — i jest to ta sama maszyneria, na której opiera się nasza Platforma, podana Ci wprost.

Krok po kroku: od szkieletu do prawdziwej funkcji
Zróbmy to konkretnie. Powiedzmy, że chcesz zamienić demowy skład w pamięci w prawdziwą, trwałą funkcję opartą na MongoDB. Nie otwierasz dokumentacji i nie zaczynasz okablowywać sterowników. Stawiasz szkielet, a potem prosisz.
Najpierw postaw szkielet i uruchom go (zadziała każdy menedżer):
bun create @owlmeans/app my-app # albo: npm create @owlmeans/app@latest my-app
cd my-app
bun run dev
Potem, w Claude Code (albo Copilocie), zacznij od promptu w tym stylu:
Dodaj trwałą funkcję notatek opartą na MongoDB. Użyj
@owlmeans/mongoi@owlmeans/mongo-resourcezamiast statycznego zasobu w pamięci. Zadeklaruj entrypointy i schemat wsources/common, zarejestruj zasób i zaimplementuj handlery wsources/api, a wsources/webdodaj ekran. Korzystaj z istniejących pakietów@owlmeans/*— trzymaj się umiejętnościreuse-code.
Ten prompt działa bez prowadzenia za rękę i warto rozumieć dlaczego. Projekt już niesie umiejętności dokładnie do tego. Agent wie, że podmiana zasobu jest jeden do jednego, bo każdy zasób implementuje ten sam interfejs — handler, który robił context.getStaticResource(...), staje się context.resource(...) nad kolekcją Mongo, a wywołania create/list/delete są identyczne:
const notes = context.resource<NotesResource>(RES_NOTES)
await notes.create({ id, text, createdAt })
const { items } = await notes.list({ criteria: { ... } })
Wie, że wzorzec entrypointu pozostaje ten sam — zadeklaruj w common, elevate’uj o handler w api, elevate’uj o ekran w web. I wie, że Twoje UI to shadcn, które może edytować wprost. Ponieważ struktura jest jawna, a instrukcja jedzie razem z repozytorium, agent wydaje tokeny na budowanie Twojej funkcji, zamiast co sesję uczyć się frameworka od nowa. Kiedy później zaktualizujesz pakiety @owlmeans/*, uruchamiasz ponownie npx @owlmeans/agent-skills, a instrukcja odświeża się razem z nimi.
Dlaczego to dopiero początek, a nie całość
Powiem wprost, czym to jest, a czym nie.
create-app to biblioteka i instrukcja dla agenta, podane Ci, żebyś sam się tym pokierował z Claude Code albo Copilotem. To naprawdę potężne i dla wielu projektów to wszystko, czego potrzebujesz. Platforma OwlMeans — pełny pipeline wyspecjalizowanych ról AI, który zamienia historyjki użytkownika w gotowe, posiadane oprogramowanie — to warstwa na wierzchu, zbudowana wokół tej właśnie biblioteki. Dokładnie dlatego potrafi robić to, co robi, ułamkiem kosztu: nie eksploruje co sesję obcego kodu i nie płaci podatku od eksploracji, tylko operuje na frameworku zaprojektowanym od podstaw tak, by był jawny, powtarzalny i tani w analizie. Naszym celem jest, by Platforma budowała te projekty mniej więcej dziesięciokrotnie mniejszą liczbą tokenów niż nieokiełznany agent kodujący, który mozolnie przedziera się przez nieznane repo.
Ale nie musisz na to czekać. Fundament, na którym stoi Platforma, da się wysłać już dziś, jednym poleceniem, na agencie, za którego i tak już płacisz. Uruchom create-app, skieruj na to Claude Code, a dostaniesz prawdziwy przedsmak tego, jak buduje się po owlmeansowemu: typowany, jawny, w pełni wyposażony w umiejętności i Twój na zawsze.
To idea zespołu-wokół-agenta, zmniejszona na tyle, by zmieścić się w Twoim terminalu już teraz.