Przejdź do głównej zawartości

Frameworki spec-driven: Spec Kit kontra OpenSpec kontra BMAD kontra Superpowers

Frameworki spec-driven każą agentowi napisać przeglądalny Markdown (wymagania, projekt i zadania), zanim napisze kod. GitHub Spec Kit pasuje do nowych funkcji, które potrzebują śladu z bramkami na każdym etapie; OpenSpec pasuje do zmian w istniejącym kodzie, bo archiwizacja zmiany scala ją z żywą specyfikacją. BMAD dokłada role produktowe, a Superpowers pisze dokument projektowy tylko przy pracy architektonicznej.

Twój zespół zgodził się, że agenci mają pracować ze specyfikacji, i teraz cztery osoby mają cztery ulubione narzędzia. Jeden developer uruchomił Spec Kit w projekcie po godzinach, drugi przysięga na OpenSpec, product manager widział demo BMAD, a połowa zespołu ma już zainstalowane Superpowers. Potrzebujesz jednego wyboru, pilotażu, który go potwierdzi, i reguły mówiącej, które dokumenty zatwierdza człowiek.

Ta strona jest dla developera, który poprowadzi pilotaż, i dla tech leada, który wybiera framework. Przeprowadza jedną funkcję, „eksport logu audytowego do CSV”, przez Spec Kit i OpenSpec obok siebie, a potem pokazuje, co z tym samym zleceniem robią BMAD, Superpowers i cc-sdd.

Co zyskasz, porównując frameworki spec-driven na jednej funkcji

Dział zatytułowany „Co zyskasz, porównując frameworki spec-driven na jednej funkcji”
  • Tabelę decyzyjną opartą na tym, czy kod już istnieje i kto zatwierdza dokumenty.
  • Zweryfikowane instalacje wszystkich pięciu frameworków w Claude Code, Codex i Cursorze.
  • Eksport logu audytowego przeprowadzony przez Spec Kit i OpenSpec oraz drugą zmianę, która pokazuje, gdzie naprawdę się różnią.
  • Tabelę bramek review: który artefakt zatwierdza człowiek, która kontrola jest deterministyczna i kto się podpisuje.
  • Stały koszt kontekstu każdego frameworka oraz pułapki, których wciąż uczą stare tutoriale.

Zacznij od jednostki pracy, wokół której zbudowano każdy framework. Spec Kit myśli funkcjami, OpenSpec zmianami w istniejącym systemie, BMAD dokumentami produktowymi przekazywanymi między rolami, a Superpowers pojedynczym zadaniem, którego rozmiar decyduje, czy w ogóle powstanie dokument projektowy.

FrameworkJednostka pracyArtefakty, które zapisujeUtrzymuje aktualną specyfikację systemu?Bramki dla człowiekaClaude Code / Codex / CursorWybierz, gdyUnikaj, gdy
Spec Kit (GitHub)Funkcja.specify/memory/constitution.md, potem specs/NNN-<feature>/spec.md, plan.md, tasks.md i pliki pomocniczeNie, jeden folder na funkcjęPo każdym etapie, każdy uruchamiasz samSkille we wszystkich trzechNowe produkty i duże funkcje, które potrzebują konstytucji i pełnego śladuMałe zmiany w dużej bazie kodu
OpenSpec (Fission AI)Zmianaopenspec/changes/<change>/proposal.md, delty w specs/, design.md, tasks.mdTak: archive scala delty z openspec/specs/Review propozycji przed applyPolecenia i skille w Claude Code i Cursorze, skille w CodexIstniejący kod i stały strumień zmianPotrzebujesz formalnego śladu zatwierdzeń dla każdego etapu
BMAD Method (BMad Code)Dokument produktowyBrief produktu, PRD, architektura, SPEC.md, epiki i historyjkiOsobno dla każdego dokumentuPrzy każdym dokumencie, z przekazaniem między personamiSkille lub pluginy we wszystkich trzechPraca produktowa z kilkoma interesariuszami i epikamiPojedynczy developer dowożący małe funkcje
Superpowers (ścieżka dokumentu projektowego)Zadanie, klasyfikowane jako spike, ograniczone albo architektoniczneTylko przy pracy architektonicznej: docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md, potem plan w docs/superpowers/plans/NieZatwierdzenie projektu, potem planuPlugin we wszystkich trzechAgenci pomijają testy; specyfikacji chcesz tylko przy dużej pracyPotrzebujesz specyfikacji dla każdej zmiany
cc-sdd (gotalab)Specyfikacjarequirements.md (EARS), design.md, tasks.md dla każdej specyfikacjiOsobno dla każdej specyfikacjiMiędzy fazamiSkille; wsparcie Cursora w wersji betaChcesz kształtu specyfikacji z Kiro poza KiroChcesz największej społeczności i dokumentacji

Kiro specs, wbudowane w Kiro IDE i CLI od AWS, zapisują requirements.md (EARS), design.md i tasks.md w .kiro/specs/<feature>/ według źródeł wtórnych (26 września 2026 roku nie dało się odczytać kiro.dev). cc-sdd daje ten kształt innym agentom; sam produkt omawia porównanie z Kiro.

Odpowiadaj po kolei i zatrzymaj się na pierwszym „tak”.

  1. Czy większość kodu dopiero powstanie albo product owner musi zatwierdzić funkcję, zanim ktokolwiek ją zaplanuje? Użyj Spec Kit. Konstytucja i osobne skille dla etapów dają bramkę na każdym kroku.
  2. Czy zmieniasz działający system kilka razy w tygodniu? Użyj OpenSpec. Propozycja zapisuje tylko deltę, a archiwizacja sprawia, że openspec/specs/ opisuje system w jego obecnym stanie.
  3. Czy praca zaczyna się jako pomysł produktowy, który przed specyfikacją potrzebuje briefu, PRD i architektury? Użyj ścieżki planowania BMAD, a potem buduj historyjka po historyjce.
  4. Czy twoim problemem jest agent, który pomija testy i ogłasza sukces bez dowodów, a nie brak specyfikacji? Użyj Superpowers. Dokument projektowy powstaje tam tylko przy pracy architektonicznej.
  5. Nic z powyższych? Użyj zwykłego Markdownu i kontroli CI opisanych w spec-driven development. Framework dokłada ceremonii; nie sprawia, że specyfikacja jest prawdziwa.

Zespoły mieszane często używają OpenSpec do codziennych zmian i Spec Kit do okazjonalnego nowego serwisu. Nigdy nie prowadź jednej zmiany przez dwa frameworki: agent dostaje wtedy dwa źródła prawdy.

Spec Kit i OpenSpec instalują pliki projektu własnymi CLI. BMAD, Superpowers i cc-sdd instalują się jako skille albo pluginy. Polecenia terminala uruchamiaj w katalogu głównym repozytorium.

Okno terminala
# Spec Kit (Python 3.11+ i uv): 10 skilli speckit-* w .claude/skills/
uv tool install specify-cli
specify init --here --integration claude
# OpenSpec (Node >= 20.19.0): 6 skilli oraz polecenia /opsx:*
npm install -g @fission-ai/openspec@latest
openspec init --tools claude
# BMAD, ścieżka stabilna (npm 6.12.0)
npx bmad-method install --directory . --modules bmm --tools claude-code --yes
# cc-sdd: skille Claude Code to domyślny cel
npx cc-sdd@latest
# W sesji Claude Code
# BMAD, ścieżka pluginu (6.13.0-next)
/plugin marketplace add bmad-code-org/bmad-plugins
/plugin install bmad-method@bmad
# Superpowers (marketplace Anthropic zainstalował 26.09.2026 wersję 6.4.1; upstream miał 6.4.2)
/plugin install superpowers@claude-plugins-official

BMAD ma 26 września 2026 roku dwie ścieżki instalacji i każda dostarcza inne skille. Tutorial BMAD używa stabilnego instalatora npm (6.12.0). Plugin (bmad-method@bmad, 6.13.0-next, 21 skilli) podąża za gałęzią main i zawiera bmad-create-epics-and-stories tam, gdzie dokumentacja z main opisuje bmad-preview-ticketing. Wybierz jedną ścieżkę dla całego zespołu i przypnij wersję, inaczej dwóch developerów będzie realizować dwa różne procesy pod jedną nazwą.

Przeprowadź eksport logu audytowego przez Spec Kit i OpenSpec

Dział zatytułowany „Przeprowadź eksport logu audytowego przez Spec Kit i OpenSpec”

Funkcja: administratorzy zespołu eksportują log audytowy swojej organizacji do CSV dla zakresu dat nie dłuższego niż 90 dni; członkowie bez roli administratora nie mogą eksportować. Oba przebiegi poniżej używają pisowni z Claude Code. W Codex zamień /speckit- na $speckit-, a /opsx:propose na $openspec-propose; w Cursorze dwukropek w poleceniach OpenSpec zmienia się w łącznik. W Cursorze nazwy /speckit-* się nie zmieniają (skille w .cursor/skills/).

EtapSpec KitOpenSpec
Reguły projektu/speckit-constitution raz, zapisuje .specify/memory/constitution.mdOpcjonalne context: i rules: w openspec/config.yaml
Eksploracja / doprecyzowanie/speckit-clarify rozstrzyga otwarte pytania w zapisanej specyfikacji/opsx:explore bada kod i problem przed propozycją
Zapis wymagania/speckit-specify, zapisuje specs/001-audit-log-export/spec.md/opsx:propose, zapisuje w jednym kroku proposal.md, specs/audit-log-export/spec.md (deltę), design.md i tasks.md
Plan/speckit-plan, zapisuje plan.md, research.md, data-model.md, contracts/, quickstart.mdJuż w design.md
Zadania/speckit-tasks, potem /speckit-analyzeJuż w tasks.md
Budowa/speckit-implement, potem /speckit-converge aż do „Converged”/opsx:apply
ZamknięcieOtwierasz PR; folder funkcji zostaje w stanie z chwili zapisu/opsx:archive scala deltę z openspec/specs/audit-log-export/spec.md

Spec Kit dzieli planowanie na sześć skilli i po każdym możesz się zatrzymać na review. OpenSpec ma jeden punkt review: propose zapisuje wszystkie cztery artefakty i się zatrzymuje. Jego skill mówi wprost, że zlecenie „authorizes planning only”, i czeka na nową prośbę przed apply.

  1. Zapisz wymaganie. Wklej to samo zdanie do obu frameworków, żeby porównywać frameworki, a nie prompty.

  2. Przejrzyj, co każdy z nich zapisał. spec.md ze Spec Kit używa historyjek użytkownika ze scenariuszami Given/When/Then i numerowanych wymagań (FR-001) i może zostawić do trzech znaczników [NEEDS CLARIFICATION] do rozstrzygnięcia przez ciebie. OpenSpec zapisuje deltę z blokami ### Requirement: i #### Scenario: w formie WHEN/THEN. Oto delta OpenSpec z przebiegu roboczego, którą openspec validate --strict zaakceptował:

    ## Purpose
    Lets organization admins take audit events out of the product as a CSV file for compliance reviews.
    ## ADDED Requirements
    ### Requirement: Admin exports audit log as CSV
    The system SHALL let an organization admin export audit events for a date range of at most 90 days as CSV.
    #### Scenario: Admin exports a 30-day range
    - **WHEN** an admin exports a 30-day range containing 1,200 events
    - **THEN** the system returns a CSV with a header row and 1,200 data rows
    #### Scenario: Non-admin is refused
    - **WHEN** a member without the admin role requests an export
    - **THEN** the system refuses the request and produces no file

    Zaakceptuj każdy z tych dokumentów, gdy każdy scenariusz ma konkretne wejście i wyjście, a w żadnym wymaganiu nie pojawia się nazwa tabeli, klasy ani biblioteki.

  3. Zbuduj. Spec Kit zapętla /speckit-implement i /speckit-converge, dopóki converge nie zgłosi „Converged”; prompt do tej pętli znajdziesz w tutorialu Spec Kit. OpenSpec uruchamia /opsx:apply, który przechodzi przez tasks.md. W obu przypadkach poprawność kodu potwierdzają testy napisane ze scenariuszy, a nie werdykt frameworka.

  4. Zamknij zmianę. W OpenSpec /opsx:archive waliduje zmianę, przenosi ją do openspec/changes/archive/2026-09-26-add-audit-log-csv-export/ i tworzy openspec/specs/audit-log-export/spec.md. Przebieg roboczy wypisał audit-log-export: create i + 1 added. Spec Kit zostawia specs/001-audit-log-export/ jako zapis tej funkcji.

Miesiąc później dział compliance prosi o filtr po autorze zdarzenia. Tu drogi obu frameworków się rozchodzą.

W Spec Kit filtr staje się funkcją 002 z własną specyfikacją, planem i zadaniami albo edytujesz specyfikację 001 już po wdrożeniu. Tak czy inaczej nic nie tworzy jednego aktualnego opisu eksportu: żeby dowiedzieć się, co eksport robi dziś, czytelnik musi przeczytać oba foldery i ustalić, który wygrywa.

W OpenSpec propozycja niesie deltę MODIFIED. Instrukcje skilla wymagają skopiowania całego istniejącego bloku wymagania i jego edycji, a nie dopisania fragmentu:

## MODIFIED Requirements
### Requirement: Admin exports audit log as CSV
The system SHALL let an organization admin export audit events for a date range of at most 90 days as CSV, optionally filtered to a single actor.
#### Scenario: Admin exports a 30-day range
- **WHEN** an admin exports a 30-day range containing 1,200 events
- **THEN** the system returns a CSV with a header row and 1,200 data rows
#### Scenario: Non-admin is refused
- **WHEN** a member without the admin role requests an export
- **THEN** the system refuses the request and produces no file
#### Scenario: Admin filters by actor
- **WHEN** an admin exports a 30-day range filtered to an actor who has 40 of the 1,200 events
- **THEN** the system returns a CSV with a header row and exactly 40 data rows, all for that actor

Recenzent czyta jedno wymaganie, widzi nowy scenariusz, a po archiwizacji openspec/specs/audit-log-export/spec.md opisuje eksport w jego obecnym kształcie. To cały argument za OpenSpec w istniejącym kodzie, zamknięty w jednym diffie.

Jak tę samą funkcję obsługują BMAD, Superpowers i cc-sdd?

Dział zatytułowany „Jak tę samą funkcję obsługują BMAD, Superpowers i cc-sdd?”

BMAD dopasowuje rozmiar procesu do zlecenia. Jasna, mała zmiana trafia prosto do jednego skilla (pisownia z Claude Code; w Codex $bmad-build):

/bmad-build Add CSV export of the audit log for team admins, date range at most 90 days, non-admins refused.

bmad-build dopytuje o potrzebne decyzje, pokazuje plan, czeka na twoją zgodę, a potem pisze i sprawdza kod. Jeśli eksport to jedna historyjka w większym epiku compliance, najpierw idzie ścieżka planowania: bmad-product-brief, bmad-prd, bmad-architecture i bmad-spec (zapisuje specs/spec-<slug>/SPEC.md), potem zgłoszenia i jedna budowa na historyjkę, bmad-code-review i bmad-retrospective. Na ścieżce pluginu krok zgłoszeń to bmad-create-epics-and-stories; na ścieżce skilli jest to bmad-preview-ticketing.

Superpowers klasyfikuje zlecenie, zanim o cokolwiek zapyta. Skill brainstorming definiuje trzy ścieżki. Spike wymaga zatwierdzonego pytania i sondy. Zadanie ograniczone dostaje krótki projekt w czacie, który zatwierdzasz. Praca architektoniczna dostaje pisemną specyfikację w docs/superpowers/specs/YYYY-MM-DD-<topic>-design.md, którą zatwierdzasz, zanim writing-plans zapisze plan w docs/superpowers/plans/; ten plan też zatwierdzasz i wybierasz sposób jego wykonania, zanim powstanie jakikolwiek kod. Pojedyncza trasa CSV to raczej zadanie ograniczone, więc plik specyfikacji nie powstaje. Jeśli chcesz pliku dla każdej zmiany, połącz Superpowers z OpenSpec.

cc-sdd daje Claude Code, Codex i Cursorowi kształt artefaktów z Kiro. Zacznij od discovery i pozwól mu pokierować pracą:

/kiro-discovery CSV export of the audit log for team admins
/kiro-spec-init audit-log-export
/kiro-spec-requirements audit-log-export
/kiro-spec-design audit-log-export
/kiro-spec-tasks audit-log-export
/kiro-impl audit-log-export

To pisownia z Claude Code. W Codex --codex-skills instaluje te same skille w .agents/skills/, wywoływane jako $kiro-discovery, $kiro-spec-init i tak dalej (przewodnik zgodności agentów cc-sdd, 26.09.2026); wsparcie Cursora jest w wersji beta.

requirements.md powstaje w formie EARS z kryteriami akceptacji. Dla istniejącego systemu README dodaje najpierw kiro-steering, a przed projektem opcjonalne kiro-validate-gap. Gdy host ma subagentów, kiro-impl daje każdemu zadaniu świeżego implementującego, który pracuje w cyklu red-green TDD, oraz niezależnego recenzenta.

Gdzie ludzie robią review i co dowodzi poprawności kodu?

Dział zatytułowany „Gdzie ludzie robią review i co dowodzi poprawności kodu?”

Framework specyfikacji przenosi review z diffu na dokumenty. Działa to tylko wtedy, gdy każda bramka ma właściciela, a za werdyktami modelu stoi coś deterministycznego.

BramkaSpec KitOpenSpecBMADSuperpowersKto zatwierdza
Zachowanie jest właściwespec.md po speckit-clarifyproposal.md i delty specyfikacjiPRD, potem SPEC.mdPisemna specyfikacja (praca architektoniczna) albo projekt w czacie (zadanie ograniczone)Product owner
Projekt pasuje do systemuplan.md z Constitution Checkdesign.mdDokument architekturyPlan implementacjiTech lead
Dokumenty są spójnespeckit-analyze (model, tylko odczyt)openspec validate --strict (deterministyczne, tylko struktura)bmad-code-review po budowieReview między zadaniamiInżynier
Kod robi to, co mówi specyfikacjaTesty ze scenariuszy akceptacyjnych, potem speckit-convergeTesty ze scenariuszy; apply odhacza tasks.mdTesty dla każdej historyjkiTDD dla każdego zadania, potem verification-before-completionCI, potem recenzent PR

Ta tabela działa tylko przy dwóch regułach. Po pierwsze, zamień każdy scenariusz w czerwony test przed implementacją, jak w wykonywalnych kryteriach akceptacji; werdykty converge i skille review to oceny, powtarzalne są tylko testy. Po drugie, trzymaj foldery specyfikacji poza zakresem zapisu agenta implementującego, za pomocą uprawnień i sandboksów oraz wpisu w CODEOWNERS, żeby agent nie mógł zazielenić testu, edytując wymaganie.

Dla OpenSpec dodaj do CI kontrolę struktury:

Okno terminala
# Krok CI: oblewa job, jeśli jakakolwiek zmiana albo specyfikacja jest źle zbudowana
npx -y @fission-ai/openspec@1.13.2 validate --all --strict --no-interactive

Sprawdza dokumenty, nie kod. Przepuszcza też jeden częsty błąd: w przebiegu roboczym scenariusz zapisany trzema krzyżykami (### Scenario:), pod wymaganiem, które miało też poprawny #### Scenario:, przeszedł --strict z samą linią INFO, że nagłówek „is ignored by validation”. Wymaganie, którego jedyny scenariusz ma trzy krzyżyki, oblewa --strict. Jeśli traktujesz scenariusze jako przypadki testowe, wyszukuj w openspec/ wzorzec ^### Scenario:.

To review jest bramką, którą product owner albo tech lead czyta zamiast kodu. Pull request niesie potem pakiet dowodów: każde wymaganie przypisane do testu, który go dowodzi.

Stały koszt to to, co framework dokłada do każdej sesji, zanim go użyjesz. Claude Code 2.1.283 mierzy go dla pluginów poleceniem claude plugin details <plugin>; dla skilli lokalnych w projekcie policz opisy.

FrameworkSposób instalacjiStały koszt (26.09.2026)Najcięższe pojedyncze wywołanie
Spec Kit 1.0.1210 skilli w projekcieOkoło 1150 znaków opisów skilli, mniej więcej 300 tokenów (szacunek przy czterech znakach na token)speckit-checklist, 22,7 KB instrukcji
OpenSpec 1.13.26 skilli w projekcie i 6 poleceń w Claude CodeOkoło 2200 znaków opisów, mniej więcej 550 tokenów (ten sam szacunek)openspec-explore, 22,8 KB
BMAD bmad-method@bmadPlugin, 21 skilli~1676 tokenów (claude plugin details); bmad-toolbox@bmad dokłada ~975Nie mierzono
SuperpowersPlugin, 15 skilli i hook SessionStart~838 tokenów (claude plugin details)subagent-driven-development, ~11,8 tys. tokenów przy każdym uruchomieniu; brainstorming ~6,3 tys.

Większym kosztem są dokumenty: jedna funkcja w Spec Kit produkuje ich osiem, a każdy kolejny etap je czyta. Uruchom /context w Claude Code przed pierwszym etapem pilotażu i po nim, żeby zmierzyć oba efekty.

Przeprowadź pilotaż frameworka spec-driven na jednej funkcji

Dział zatytułowany „Przeprowadź pilotaż frameworka spec-driven na jednej funkcji”

Tylko pilotaż pokaże, jak twoi recenzenci zniosą osiem dokumentów na funkcję.

  1. Wybierz jedną prawdziwą funkcję, która dotyka istniejącego kodu i ma product ownera, a nie zabawkę.
  2. Zainstaluj jeden framework (najwyżej dwa, jeśli wybierasz między Spec Kit a OpenSpec) na gałęzi, według zakładek powyżej, i zatwierdź (commit) wygenerowane pliki, żeby wszyscy recenzowali tę samą konfigurację.
  3. Przeprowadź przez niego funkcję. Zapisz czas od zlecenia do zatwierdzonej specyfikacji, liczbę rund review na dokument i stały koszt kontekstu.
  4. Zamień każdy scenariusz w test przed implementacją i pozwól CI rozstrzygnąć, czy funkcja jest gotowa.
  5. Tydzień później przeprowadź drugą zmianę w tej samej funkcji. To, jak łatwo recenzent odpowie na pytanie „co ta funkcja robi teraz?”, jest wynikiem, który rozdziela frameworki.

Nikt nie recenzuje dokumentów. Objaw: specyfikacje są zatwierdzane kilka minut po wygenerowaniu, a błędy prowadzą do wymagań, których nikt nie przeczytał. Niezrecenzowana specyfikacja przenosi halucynację wyżej w procesie. Wyjście: zrób z zatwierdzenia specyfikacji i projektu jawne checki pull requestu z imiennymi właścicielami i przed zatwierdzeniem uruchamiaj prompt review bramki.

Agent poprawia specyfikację pod swój kod. Objaw: PR z implementacją zmienia spec.md albo deltę OpenSpec, a testy przechodzą. Wyjście: zablokuj zapis do folderów specyfikacji w sesjach implementacyjnych, wymagaj właściciela specyfikacji w CODEOWNERS i odrzuć PR.

Dwa frameworki konkurują. Objaw: repozytorium ma specs/001-…, openspec/changes/… i docs/superpowers/specs/… dla tej samej funkcjonalności, a agenci cytują ten plik, który znaleźli pierwszy. Wyjście: wybierz jeden framework specyfikacji na repozytorium i zapisz to w CLAUDE.md albo AGENTS.md. Superpowers może zostać jako dyscyplina budowania, jeśli jego dokumenty projektowe wskazują na tę jedną specyfikację.

Specyfikacja per funkcja rozjeżdża się z systemem. Objaw: w Spec Kit albo BMAD specs/001-… opisuje eksport z chwili wdrożenia we wrześniu i nikt nie wie, czy to wciąż prawda. Wyjście: albo przenieś pracę na istniejącym kodzie do OpenSpec, albo dodaj kontrole śledzenia wymagań i dryfu z spec-driven development.

Ceremonia przygniata małe zmiany. Objaw: developerzy omijają framework przy wszystkim, co trwa krócej niż dzień, i proces zanika. Wyjście: opublikuj regułę rozmiaru. Błędy i refaktoryzacje przechodzą przez czerwony test; małe zmiany obsługują propozycje OpenSpec, bmad-build z BMAD albo ograniczony projekt w Superpowers; pełne planowanie Spec Kit albo BMAD zostaw dla funkcji z kilkoma historyjkami użytkownika.

Źle zbudowane scenariusze przechodzą walidację. Objaw: scenariusz OpenSpec zapisany jako ### Scenario: pod wymaganiem, które ma już jeden poprawny #### Scenario:, jest pomijany, a openspec validate --strict pozostaje zielone (1.13.2). Wyjście: wyszukuj w CI scenariusze z trzema krzyżykami i generuj testy ze scenariuszy skryptem, który oblewa, gdy żadnego nie znajdzie.