PROMPT · coding
Implementacja Napędzana Specyfikacją
Napisz specyfikację zanim napiszesz kod. Ten prompt wymusza pętlę spec → plan → build → weryfikacja, która zapobiega pełzaniu zakresu, dryftowi architektonicznemu i sytuacjom „działa, ale nie tak jak chcieliśmy." Specyfikacja jest kontraktem między tym, czego chcesz a tym, co zostanie zbudowane. Każda decyzja implementacyjna odwołuje się do wymagania w specyfikacji.
Pobierz plik promptu
YAML frontmatter + treść markdown, gotowe do wklejenia
Implementacja Napędzana Specyfikacją
Wzorzec
Napisz specyfikację ZANIM napiszesz jakikolwiek kod. Specyfikacja jest kontraktem — definiuje jak wygląda „gotowe" zanim zacznie się implementacja.
Spec → Plan → Build → Weryfikacja → Ship
Dlaczego najpierw spec
Bez specyfikacji AI ma tendencję do:
- Pewnego rozwiązywania złego problemu
- Dodawania funkcji, o które nie proszono
- Podejmowania decyzji architektonicznych bez pytania
- Produkowania kodu, który „działa" ale nie pasuje do systemu
Specyfikacja zapobiega temu wszystkiemu, bo każda decyzja implementacyjna może być sprawdzona wobec napisanego wymagania.
Szablon specyfikacji
## Spec funkcji: {nazwa}
### Cel
{Jedno zdanie: jaki problem to rozwiązuje?}
### Wymagania
1. {Wymaganie — testowalne, konkretne}
2. {Wymaganie — testowalne, konkretne}
3. {Wymaganie — testowalne, konkretne}
### Nie-wymagania (jawnie poza zakresem)
- {Czego NIE budujemy}
- {Jaki edge case NIE obsługujemy}
### Ograniczenia
- Musi działać z: {istniejący system/API/wzorzec}
- Nie może zepsuć: {istniejąca funkcjonalność}
- Wydajność: {wymagania latencji/przepustowości/rozmiaru}
- Bezpieczeństwo: {wymagania auth, walidacji, obsługi danych}
### Kontrakt interfejsu
{Jak inny kod będzie wchodzić w interakcję? Kształt API, propsy, eventy, etc.}
### Kryteria akceptacji
- [ ] {Kryterium 1 — weryfikowalne}
- [ ] {Kryterium 2 — weryfikowalne}
- [ ] {Kryterium 3 — weryfikowalne}
Proces
Faza 1: Napisz spec (10 min)
- Sformułuj cel w jednym zdaniu
- Wylistuj wymagania (testowalne, konkretne)
- Wylistuj nie-wymagania (czego NIE robimy)
- Zdefiniuj ograniczenia (jaki istniejący kod musi być respektowany)
- Zdefiniuj kontrakt interfejsu (jak kod będzie wywoływany/używany)
- Napisz kryteria akceptacji (jak zweryfikujemy, że działa)
Faza 2: Plan (5 min)
- Rozłóż spec na kroki implementacji
- Zidentyfikuj pliki do stworzenia/modyfikacji
- Zidentyfikuj zależności między krokami
- Oszacuj: czy to 30 minut czy 3 godziny?
Faza 3: Build (większość czasu)
- Implementuj krok po kroku, podążając za planem
- Po każdym kroku sprawdź: czy to spełnia wymaganie ze specyfikacji?
- Jeśli musisz odejść od specyfikacji — ZATRZYMAJ SIĘ. Najpierw zaktualizuj spec, potem kontynuuj.
- Commituj po każdym ukończonym wymaganiu
Faza 4: Weryfikacja (10 min)
- Przejdź przez każde kryterium akceptacji
- Uruchom testy
- Sprawdź każde wymaganie specyfikacji: czy jest zaimplementowane?
- Sprawdź nie-wymagania: czy przypadkiem nie dodaliśmy pełzania zakresu?
Zasady operacyjne
- Żadnego kodu przed akceptacją specyfikacji — spec musi być przejrzany zanim zacznie się implementacja
- Zmiany specyfikacji wymagają jawnego potwierdzenia — jeśli wymagania się zmienią w trakcie build, zaktualizuj spec i zanotuj zmianę
- Każdy PR odwołuje się do specyfikacji — identyfikowalność od kodu do wymagania
- Nie-wymagania są święte — oprzyj się pokusie dodania „jeszcze jednej rzeczy"
- Kryteria akceptacji to testy — napisz je jako testy przed pisaniem implementacji
Kiedy używać
- Każda funkcja wymagająca więcej niż 30 minut implementacji
- Zmiany dotykające więcej niż 3 pliki
- Każda praca obejmująca kontrakty API lub zmiany modelu danych
- Gdy wiele osób (lub sesji) będzie pracować nad tą samą funkcją
- Gdy koszt „źle" jest wysoki (auth, płatności, migracja danych)
Antywzorce
- Spec tak ogólnikowy, że może znaczyć cokolwiek („zrób lepiej")
- Spec tak szczegółowy, że jest już pseudokodem (to plan, nie specyfikacja)
- Pomijanie nie-wymagań (pełzanie zakresu wchodzi przez te drzwi)
- Niezaktualizowanie spec gdy wymagania zmieniają się w trakcie build
- Pisanie spec po napisaniu kodu (to dokumentacja, nie specyfikacja)