środa, 1 kwietnia 2026

{dev} forge – AI & Spec News #1: Koniec vibe coding?

W serii {dev} forge – How software is forged with AI skupiam się na jednym głównym temacie: jak zmienia się sposób budowania oprogramowania w erze AI.



Ten artykuł to pierwszy wpis z nowego mini-cyklu: AI & Spec News, gdzie zbieram najciekawsze obserwacje i trendy z rynku – świeże, konkretne i bez hype’u.

1. Koniec „vibe coding” – zaczyna się era spec

Jeszcze niedawno dominowało podejście:

Prompt → Code

Dziś coraz więcej zespołów przechodzi na:

Spec → Plan → Tasks → Code

Dlaczego? Bo prompt nie skaluje się w większych projektach. Kontekst znika, decyzje są niespójne, a architektura rozpływa się w historii czatu.

To nie jest tylko opinia – to trend widoczny w całej branży. Coraz więcej publikacji wskazuje, że spec-driven development staje się naturalnym kolejnym krokiem po „vibe coding” (The New Stack).

Dodatkowo pojawia się mocny insight z community:

„Don’t prompt AI to write code. Give it a specification and let agents implement it.”

(źródło)

2. Największy problem AI: niejednoznaczność × prędkość

AI potrafi generować tysiące linii kodu w kilka sekund.

Ale problem nie jest w szybkości.

Problemem jest to, że niejuednoznaczność porusza się teraz z prędkością maszyny.

Jak trafnie opisano:

AI generuje kod szybciej, niż jesteśmy w stanie go przeczytać – ale prawdziwym problemem jest brak precyzji wymagań.

(źródło)

To zmienia wszystko. Błędy nie znikają – są tylko produkowane szybciej.

3. Spec jako kontrakt (a nie dokument)

Nowoczesne podejście do specyfikacji zmienia jej rolę:

  • spec nie opisuje systemu
  • spec steruje systemem

Specyfikacja definiuje:

  • wejścia i wyjścia
  • reguły biznesowe
  • edge case’y

Dzięki temu:

  • AI generuje bardziej przewidywalny kod
  • testy mogą powstawać automatycznie

To podejście jest coraz częściej opisywane jako spec = source of truth, a kod jako artefakt wtórny:

Specyfikacja staje się głównym artefaktem, a kod – wtórnym, często generowanym.

(źródło)

4. AI potrzebuje ograniczeń, nie tylko możliwości

AI coding assistants są niesamowicie wydajne, ale mają jedną fundamentalną cechę:

są świetne w wykonywaniu instrukcji, ale słabe w zgadywaniu intencji.

Dlatego pojawia się coraz więcej głosów, że:

  • prompt = eksperyment
  • spec = system

Spec-Driven Development działa jak mechanizm kontroli:

  • wprowadza strukturę
  • ogranicza interpretację
  • wymusza spójność

Jak pokazują analizy:

AI models are excellent at following detailed instructions, but poor at inferring vague ones.

(źródło)

5. Enterprise shift: od eksperymentów do architektury

W 2026 widzimy bardzo wyraźny pivot:

  • z eksperymentów AI
  • do governance i architektury

Firmy przestają traktować AI jako „zabawkę do generowania kodu” i zaczynają budować wokół niego procesy.

Eksperci wskazują wprost:

AI coding tools are shifting towards architecture, governance and maintainability.

(źródło)

6. Skala adopcji AI jest ogromna

To już nie jest nisza.

Z najnowszych danych:

  • 64% firm generuje większość kodu z pomocą AI
  • w ciągu roku może to być nawet 90%

(źródło)

Jednocześnie pojawia się ważny efekt uboczny:

  • produktywność rośnie
  • ale jakość i spójność stają się wyzwaniem

7. Nowy kierunek: AI + Spec + Test

Pojawiają się też bardzo ciekawe podejścia researchowe i praktyczne:

  • Test-Driven AI Agents (spec → test → agent)
  • Spec jako enforce'owany kontrakt (np. security)

To pokazuje jeden kierunek:

przyszłość nie jest „AI pisze kod” – tylko „AI wykonuje specyfikację”.

Podsumowanie

AI nie eliminuje potrzeby myślenia o systemie.

Wręcz przeciwnie.

Wymusza lepsze myślenie.

I właśnie dlatego Spec-Driven Development przestaje być ciekawostką.

Staje się nowym standardem – szczególnie tam, gdzie liczy się jakość, przewidywalność i skalowalność.

Software nie jest już tylko pisany.

Software jest generowany – na podstawie specyfikacji.

wtorek, 31 marca 2026

{dev} forge – Struktura dobrej specyfikacji w Spec-Driven Development

W poprzednich artykułach z cyklu {dev} forge – How software is forged with AI ustaliliśmy dwie rzeczy. Po pierwsze – Spec-Driven Development nie jest nową modą, tylko ewolucją podejść takich jak V-Model, BDD i Specification by Example. Po drugie – pojawienie się AI sprawiło, że jakość specyfikacji zaczęła mieć jeszcze większe znaczenie.



Pora więc zejść poziom niżej i odpowiedzieć na bardzo praktyczne pytanie:

Jak powinna wyglądać dobra specyfikacja w Spec-Driven Development?

Nie taka „ładna”. Nie taka „zgodna z template’em”. Tylko taka, która realnie prowadzi implementację – zarówno dla człowieka, jak i dla AI.

Dlaczego struktura specyfikacji ma dziś większe znaczenie niż kiedykolwiek?

W klasycznym developmentcie niedoskonała specyfikacja była problemem, ale często dało się ją „uratować” rozmowami w zespole. Developer dopytał, tester doprecyzował, analityk wyjaśnił kontekst.

W świecie AI sytuacja wygląda inaczej.

AI nie dopytuje. AI zakłada.

Jeśli coś jest nieprecyzyjne, model uzupełni luki na podstawie statystyki, a nie Twojej intencji biznesowej. Dlatego dobra specyfikacja musi być:

  • jednoznaczna,
  • warstwowa (różne poziomy szczegółowości),
  • operacyjna (możliwa do użycia w implementacji i testach),
  • spójna (bez sprzecznych założeń).

Struktura nie jest więc formalnością. To mechanizm kontroli jakości myślenia.

Moja referencyjna struktura specyfikacji (Spec-Driven Development)

Nie ma jednego słusznego standardu. Ale po wielu projektach widzę, że dobra specyfikacja najczęściej składa się z kilku powtarzalnych warstw.

Poniżej moja referencyjna struktura, która dobrze działa zarówno dla zespołów, jak i dla AI-assisted development.

1. Kontekst biznesowy (Why)

To najczęściej pomijana sekcja. A jednocześnie najważniejsza.

Tu odpowiadamy na pytania:

  • jaki problem rozwiązujemy,
  • jakie są pain pointy,
  • jakie KPI chcemy poprawić,
  • dlaczego ta zmiana ma sens biznesowy.

Bez tej sekcji reszta specyfikacji staje się technicznym opisem czegoś, czego sens może być błędnie zrozumiany.

Anti-pattern: „Dodaj endpoint do zarządzania promocjami” bez kontekstu, po co i dla kogo.

2. Zakres i granice (Scope & Boundaries)

Tu definiujemy, co wchodzi w zakres, a co nie.

  • co dokładnie budujemy,
  • jakie są wykluczenia,
  • jakie systemy są objęte zmianą,
  • gdzie kończy się odpowiedzialność tego komponentu.

To sekcja, która chroni przed „feature creep” i nadinterpretacją – szczególnie przez AI.

3. Model domenowy (Domain Model)

To fundament zrozumienia systemu.

Opisujemy:

  • kluczowe encje (np. Zamówienie, Promocja, Klient),
  • relacje między nimi,
  • reguły biznesowe (np. „promocja nie łączy się z inną promocją”),
  • słownik pojęć.

To sekcja, która eliminuje różne interpretacje tych samych słów.

Tip: jeśli nazwy w kodzie i w specyfikacji się różnią – masz problem.

4. Scenariusze i zachowania (BDD / Specification by Example)

To serce specyfikacji.

Opisujemy konkretne zachowania systemu:

Given klient premium
And koszyk powyżej 500 zł
When użytkownik przechodzi do płatności
Then system nalicza rabat 10%

Dlaczego to działa?

  • jest zrozumiałe dla biznesu,
  • jest testowalne,
  • jest czytelne dla AI.

Kluczowa zasada: mniej ogólnych wymagań, więcej konkretnych przykładów.

5. Reguły i edge case’y

To sekcja, która oddziela junior-level spec od senior-level spec.

Opisujemy:

  • przypadki brzegowe,
  • błędy danych,
  • konflikty (np. promocje nakładające się),
  • fallbacki.

AI bardzo często „gubi się” właśnie tutaj, jeśli nie ma jasno określonych zasad.

6. Kontrakty techniczne (API / Events / Data)

Tu przechodzimy z poziomu domeny do implementacji.

  • API (request/response),
  • eventy (jeśli system jest event-driven),
  • formaty danych,
  • walidacje.

To sekcja, która minimalizuje rozjazd między zespołami i komponentami.

7. Ograniczenia architektoniczne

Nie wszystko wolno zrobić „jak się chce”.

Tu definiujemy:

  • wymagania niefunkcjonalne (wydajność, SLA),
  • zasady integracji,
  • security (np. OWASP, auth flows),
  • observability (logi, metryki).

To sekcja, która zabezpiecza system przed „technicznie działającym, ale złym” rozwiązaniem.

8. Walidacja (Testability)

Wracamy do DNA V-Modelu.

Każdy element specyfikacji powinien mieć odpowiedź na pytanie:

Jak sprawdzimy, że to działa poprawnie?

  • testy automatyczne,
  • checklisty,
  • kryteria akceptacji,
  • metryki sukcesu.

Bez tej sekcji spec jest tylko deklaracją.

9. Traceability (powiązania)

To element często ignorowany, ale kluczowy w większych projektach.

  • powiązanie z wymaganiami biznesowymi,
  • powiązanie z ticketami,
  • powiązanie z testami,
  • powiązanie z ADR-ami.

To właśnie tutaj pojawia się realna wartość RTM (Requirements Traceability Matrix).

Jak taka specyfikacja współpracuje z AI?

Dobrze zbudowana specyfikacja działa jak kontrakt wejściowy dla AI.

Zamiast jednego prompta typu:

"Zrób system promocji"

AI dostaje:

  • kontekst biznesowy,
  • model domenowy,
  • scenariusze,
  • reguły,
  • kontrakty API.

Efekt?

  • mniej zgadywania,
  • większa spójność,
  • lepsza jakość kodu i testów.

Najczęstsze błędy

  • brak kontekstu biznesowego,
  • zbyt ogólne wymagania,
  • brak przykładów,
  • pominięcie edge case’ów,
  • brak walidacji,
  • niespójność nazw.

W świecie AI te błędy są multiplikowane.

Podsumowanie

Dobra specyfikacja w Spec-Driven Development nie jest dokumentem. Jest systemem myślenia.

Łączy:

  • kontekst biznesowy,
  • zachowania (BDD),
  • reguły domenowe,
  • kontrakty techniczne,
  • walidację.

W świecie AI to właśnie specyfikacja staje się najważniejszym artefaktem w projekcie.

Bo dziś software nie jest już tylko pisany.

Software jest „kuty” – na podstawie specyfikacji.

czwartek, 26 marca 2026

{dev} forge: OpenSpec, czyli jak nadać Spec-Driven Development realny kształt

Skoro w poprzednim wpisie z cyklu {dev} forge – How software is forged with AI ustaliliśmy, że Spec-Driven Development jest nowoczesnym, AI-powered potomkiem V-Modelu, wzbogaconym o BDD i Specification by Example, to naturalnie pojawia się kolejne pytanie: jak to robić w praktyce?



I tutaj na scenę wchodzi OpenSpec – otwarte, lekkie podejście i zestaw narzędzi, których celem jest uporządkowanie współpracy człowieka z AI coding assistantem wokół specyfikacji. Oficjalny opis projektu mówi wprost, że chodzi o uzgodnienie co budujemy, zanim powstanie kod. To bardzo zdrowy kierunek, szczególnie dziś, gdy modele potrafią generować kod szybko, ale nadal nie czytają w myślach. OpenSpec jest opisywany jako lekki, open-source’owy framework spec-driven dla coding agentów i CLI, bez konieczności używania API keys czy MCP. 

Dlaczego OpenSpec jest ciekawy?

Najbardziej podoba mi się to, że OpenSpec nie próbuje sprzedać kolejnej magicznej obietnicy pod tytułem „AI zrobi software za Ciebie”. Zamiast tego projekt wychodzi od znacznie dojrzalszego założenia: AI jest skuteczne wtedy, gdy ma dobre wejście. A najlepszym wejściem nie jest przypadkowy prompt wrzucony do czatu, tylko sensownie przygotowana specyfikacja.

Twórcy OpenSpec trafnie zauważają, że asystenci kodujący bywają potężni, ale nieprzewidywalni, gdy wymagania żyją wyłącznie w historii rozmowy. OpenSpec dodaje więc lekką warstwę specyfikacji, która porządkuje uzgodnienia przed implementacją. To nie jest tylko techniczny detal. To w praktyce próba zamiany AI z „generatora zgadującego kontekst” w wykonawcę pracującego na bardziej stabilnym kontrakcie. 

OpenSpec jako brakujący pomost między teorią a codziennym developmentem

Wiele rozmów o Spec-Driven Development kończy się na poziomie idei. Mówimy, że warto mieć specyfikację. Że dobrze byłoby powiązać ją z testami. Że AI powinno dostać jasne zasady. I wszystko to jest prawdą. Problem pojawia się wtedy, gdy zespół pyta: dobrze, ale jak dokładnie to wdrożyć do repozytorium i codziennej pracy?

OpenSpec próbuje odpowiedzieć właśnie na to pytanie. Nie buduje zamkniętego ekosystemu ani nie uzależnia całego procesu od jednego vendora. Zamiast tego daje prosty workflow, który można potraktować jako szkic operacyjny dla pracy spec-driven.

Z dokumentacji projektu wynika, że domyślna szybka ścieżka opiera się na trzech krokach: propose → apply → archive. Najpierw proponujemy zmianę, potem ją wdrażamy, a na końcu archiwizujemy i domykamy ślad tej decyzji. To banalnie proste, ale właśnie w tej prostocie tkwi siła.

Jak rozumiem filozofię OpenSpec?

Dla mnie OpenSpec jest interesujące nie dlatego, że „wymyśla specyfikację od nowa”, tylko dlatego, że próbuje ją uczynić operacyjną. To ważna różnica.

Tradycyjnie specyfikacja bywała dokumentem wejściowym do projektu. Potem żyła własnym życiem, a kod i tak skręcał w inną stronę. W bardziej zwinnym świecie często z kolei rezygnowaliśmy z precyzji na rzecz szybkich ustaleń i ticketów, które rozumiały głównie osoby aktualnie siedzące w kontekście. OpenSpec wygląda jak próba znalezienia środka: spec ma być lekki, praktyczny i blisko implementacji, ale jednocześnie wystarczająco formalny, żeby człowiek i AI mogli pracować na tych samych założeniach.

To podejście dobrze wpisuje się w to, jak ja patrzę na ewolucję developmentu. Najpierw mieliśmy cięższe modele procesowe, które dobrze rozumiały wagę weryfikacji. Potem przyszły BDD i Specification by Example, które nauczyły nas mówić o systemie językiem zachowań i przykładów. Teraz dochodzi AI, które wymusza jeszcze większą precyzję, bo każda luka w założeniach bardzo szybko zamienia się w błędną implementację. OpenSpec jest więc dla mnie nie tyle rewolucją, co dobrze nazwanym etapem dojrzewania praktyk inżynierskich.

Co konkretnie wyróżnia OpenSpec?

Na stronie projektu OpenSpec jest przedstawiany jako framework universal, open source, bez API keys i bez MCP. To jest istotne z kilku powodów. Po pierwsze, obniża próg wejścia. Po drugie, pozwala myśleć o nim bardziej jak o metodzie pracy niż o kolejnym płatnym produkcie. Po trzecie, dobrze pasuje do realiów zespołów, które chcą testować podejście spec-driven bez przepisywania całego stacku narzędziowego. 

Repozytorium i changelog pokazują też, że projekt jest aktywnie rozwijany. Na dziś publicznie widoczna wersja pakietu to 1.2.0, a w ostatnich zmianach pojawiały się między innymi profile instalacyjne, możliwość tworzenia kompletnych propozycji zmian w jednym kroku oraz rozszerzenia wsparcia dla kolejnych agentów. Changelog wspomina też o konfigurowalnych schematach workflow w katalogu openspec/schemas/, które można współdzielić przez repozytorium. To akurat bardzo ciekawy trop dla zespołów, które chcą mieć własny, powtarzalny sposób opisywania zmian. 

Dlaczego ten projekt ma sens właśnie teraz?

Bo jesteśmy w bardzo specyficznym momencie rynku. Z jednej strony mamy ogromny entuzjazm wobec AI coding assistants. Z drugiej – coraz więcej zespołów zaczyna widzieć, że samo „kodowanie z prompta” nie skaluje się dobrze w większych inicjatywach.

Na początku wszystko wygląda świetnie. Agent szybko wygeneruje komponent, endpoint, test albo migrację. Potem jednak zaczynają się schody: brak spójności między modułami, różne interpretacje tych samych reguł biznesowych, niespójne nazewnictwo, rozjazdy między dokumentacją a kodem, niejasne decyzje architektoniczne. Innymi słowy: dokładnie te same problemy co dawniej, tylko dostarczane szybciej.

OpenSpec trafia więc w bardzo realną potrzebę: jak sprawić, żeby szybkość AI nie rozwalała jakości i przewidywalności delivery? Odpowiedź brzmi: przez lepsze, bardziej strukturalne uzgadnianie zmian.

OpenSpec a BDD, ADR i dokumentacja architektoniczna

To, co szczególnie warto podkreślić, to fakt, że OpenSpec nie powinien być traktowany jako konkurencja dla innych praktyk inżynierskich. Moim zdaniem największy sens ma wtedy, gdy działa jako warstwa spinająca kilka światów naraz.

Z BDD łączy go myślenie o zachowaniach i o tym, że system trzeba opisać przez oczekiwane rezultaty. Z ADR-ami łączy go potrzeba utrwalenia decyzji, które wpływają na sposób implementacji. Z dokumentacją architektoniczną łączy go to, że specyfikacja nie dotyczy tylko funkcji, ale też granic, zależności i ograniczeń.

W praktyce wyobrażam sobie bardzo sensowny model pracy: biznes i analityk definiują intencję zmiany, BDD doprecyzowuje zachowanie, ADR utrwala decyzje techniczne, a OpenSpec spina to w workflow, który staje się wejściem dla człowieka i AI. W takim układzie spec przestaje być pojedynczym dokumentem. Staje się zestawem powiązanych artefaktów, które razem prowadzą implementację.

Najciekawsza lekcja z OpenSpec: spec jako aktywny artefakt

Jeśli miałbym wyciągnąć z OpenSpec jedną najważniejszą lekcję, to byłaby nią zmiana sposobu myślenia o specyfikacji. Nie jako o obowiązkowym załączniku do projektu. Nie jako o slajdach do governance. Nie jako o „analizie, którą ktoś gdzieś napisał”.

Spec w tym podejściu jest aktywnym artefaktem delivery. Czymś, co ma realny wpływ na to, co zostanie zbudowane i jak będzie weryfikowane. To jest bardzo zdrowe przesunięcie. Szczególnie dla zespołów technicznych, które przez lata często traktowały dokumentację jako przykry obowiązek, bo dokumenty faktycznie nie brały udziału w pracy wytwórczej.

W świecie AI to się zmienia. Dobrze przygotowany spec staje się wejściem dla generatorów kodu, testów, opisów zmian, a czasem nawet dokumentacji. To sprawia, że jego jakość zaczyna mieć bezpośredni wpływ na koszt, szybkość i ryzyko projektu.

Czy OpenSpec rozwiązuje wszystko?

Nie. I to akurat dobra wiadomość, bo narzędzia, które obiecują rozwiązanie wszystkiego, zwykle robią jedną rzecz dobrze: marketing.

OpenSpec nie zwalnia zespołu z myślenia. Nie napisze za nas sensownej domeny. Nie podejmie wszystkich decyzji architektonicznych. Nie zamieni słabego backlogu w świetny produkt. Ale wygląda na bardzo sensowny mechanizm, który może poprawić jakość współpracy między ludźmi, dokumentacją i AI assistantami.

To trochę jak z dobrym szablonem ADR albo dobrze użytym Gherkinem. Sam szablon nie gwarantuje jakości, ale potrafi bardzo pomóc w uporządkowaniu myślenia i ograniczeniu chaosu. OpenSpec wydaje się właśnie takim rodzajem narzędzia – wzmacnia praktykę, jeśli zespół naprawdę chce pracować świadomie.

Gdzie widzę dla niego najlepsze zastosowania?

Największy potencjał widzę w kilku sytuacjach.

Po pierwsze, w zespołach, które już korzystają z AI coding assistants, ale zaczynają odczuwać koszt niejednoznaczności. Po drugie, w projektach z istotną logiką biznesową, gdzie liczą się reguły, wyjątki i traceability. Po trzecie, w środowiskach, gdzie chcemy połączyć specyfikację funkcjonalną, decyzje techniczne i automatyzację jakości bez wchodzenia w zbyt ciężki proces.

Szczególnie dobrze wygląda to dla organizacji, które chcą tworzyć własne standardy pracy z AI. Changelog sugeruje możliwość definiowania własnych schematów workflow, a to oznacza, że OpenSpec może być nie tylko narzędziem do pracy indywidualnej, ale też bazą pod wewnętrzny operating model dla AI-assisted development

Moja opinia na dziś

Patrzę na OpenSpec jak na jeden z najciekawszych praktycznych sygnałów, że Spec-Driven Development zaczyna wychodzić poza poziom hasła. Projekt jest spójny z realnym problemem rynku, ma jasną filozofię i nie próbuje udawać, że sama obecność AI zwalnia nas z dyscypliny inżynierskiej.

To, co najbardziej kupuję, to nacisk na uzgadnianie tego, co budujemy przed napisaniem kodu. Brzmi banalnie? Oczywiście. A jednak właśnie ten banał jest dziś nagminnie pomijany, bo wszyscy zachwycili się szybkością generowania implementacji.

Moim zdaniem OpenSpec jest wartościowe nie dlatego, że daje kolejny CLI, ale dlatego, że przypomina o czymś fundamentalnym: software nadal trzeba świadomie projektować, nawet jeśli znaczną część kodu generuje AI.

Podsumowanie

Jeśli poprzedni artykuł z cyklu {dev} forge – How software is forged with AI był próbą pokazania, skąd wzięło się Spec-Driven Development, to ten wpis pokazuje pierwszy konkretny przykład narzędziowego ucieleśnienia tej idei.

OpenSpec to lekki, otwarty framework dla spec-driven development, który porządkuje współpracę z AI coding assistantami wokół specyfikacji, zamiast opierać wszystko na ulotnym kontekście rozmowy. Bazuje na prostym workflow typu propose → apply → archive, jest open source, nie wymaga API keys ani MCP, i aktywnie się rozwija. 

I to właśnie dlatego uważam, że warto go obserwować. Nie jako cudowną receptę na cały software engineering, ale jako bardzo sensowny krok w kierunku bardziej świadomego, przewidywalnego i spec-driven wytwarzania oprogramowania z udziałem AI.

Źródło 
Źródło