بنقرة واحدة
dev-plan
Planowanie techniczne implementacji z Implementation Units.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
القائمة
Planowanie techniczne implementacji z Implementation Units.
التثبيت باستخدام Codex أو Claude انسخ هذا Prompt والصقه في Codex أو Claude أو مساعد آخر ليراجع صفحة Skill ويثبّتها لك.
استنادا إلى تصنيف SOC المهني
Automatyzacja testów E2E mobile przez Maestro CLI. Nawigacja, tap, scroll, gesty (swipe, long press, pinch), input, asercje, screenshoty na emulatorze iOS/Android. Deep linking, OAuth flow, biometry. Używaj przy 'testuj UI mobilne', 'zrób screenshot apki', 'agent-mobile', 'E2E mobile', weryfikacji checkboxów Weryfikacja: w fazie review.
Systematyczny audyt bezpieczeństwa dla React Native / Expo + Supabase + Edge Functions. Używaj przy review bezpieczeństwa, przed releasem, przy pracy z auth/authz, walidacją inputów, RLS policies, deep linkingiem, storage sekretów (SecureStore), WebView, OWASP (w tym Mobile Top 10).
Sentry error tracking i performance monitoring dla React Native (Expo) + Supabase Edge Functions. Aktywuje się przy pracy z błędami, monitoringiem, captureException, error boundary, śledzeniem błędów, diagnostyką, loggerem, Edge Functions, crash, native crash, awaria, wydajność, raportowanie błędów, exception, wyjątek, React Native, Expo.
Auth (Google/Facebook OAuth, email), Database (PostgreSQL, RLS policies, SECURITY DEFINER), Edge Functions, Realtime subscriptions. Uzywaj przy pracy z autentykacja, baza danych, migracjami, bezpieczenstwem.
Wytyczne UX/UI dla aplikacji mobilnych (Expo + React Native + NativeWind, ale stack-agnostic w pryncypiach). Platform conventions (iOS HIG vs Material 3), typografia natywna (SF Pro/Roboto, Dynamic Type, type scale), 8pt grid + safe areas, semantic colors + dark mode jako redesign, ikony (SF Symbols vs Lucide vs Material Symbols), motion i micro-interactions (Reanimated — aktualny major 4.x, wymaga New Architecture; 3.x legacy — easing, stagger), haptics + native gestures (expo-haptics, RNGH 3.x), stany loading/empty/error, formy + klawiatura mobilna, navigation patterns (tabs/drawer/stack/modal), bottom sheets i modale, listy (FlashList v2, swipe actions), accessibility (VoiceOver, TalkBack, Dynamic Type), pułapki AI-generowanego UI, teardowny premium apek (Things 3, Bear, Linear, Wellspoken), app icon i splash screen. Używaj przy projektowaniu ekranów mobilnych, budowie design system pod mobile, decyzjach iOS vs Android, "ekran wygląda tanio", "feels off na mobile", "native feel vs web feel", review designu
Walidacja i doprecyzowanie pomysłu przed planowaniem. Interaktywny dialog, pressure test, eksploracja podejść, requirements doc. Używaj przy "mam pomysł", "zróbmy brainstorm", "co myślisz o", "pomóż mi przemyśleć", "chcę zbudować", niejasny scope, wiele możliwych rozwiązań.
| name | dev-plan |
| description | Planowanie techniczne implementacji z Implementation Units. |
| argument-hint | [opcjonalnie: ścieżka do requirements doc lub opis feature'a] |
Uwaga: Aktualny rok to 2026. Używaj tego przy datowaniu planów i wyszukiwaniu dokumentacji.
/dev-brainstorm definiuje CO budować. /dev-plan definiuje JAK to zbudować. /dev-docs-execute wykonuje plan.
Ten workflow produkuje trwały plan implementacji. Nie implementuje kodu, nie uruchamia testów, nie uczy się z wyników runtime'u. Jeśli odpowiedź zależy od zmiany kodu i zobaczenia co się stanie, to należy do /dev-docs-execute, nie tutaj.
Używaj narzędzia pytań platformy gdy dostępne. Przy zadawaniu pytań użytkownikowi preferuj blokujące narzędzie pytań platformy (AskUserQuestion w Claude Code). W przeciwnym razie prezentuj numerowane opcje w chacie i czekaj na odpowiedź.
Zadawaj jedno pytanie na raz. Preferuj zwięzły single-select gdy istnieją naturalne opcje.
<feature_description> #$ARGUMENTS </feature_description>
Jeśli opis powyżej jest pusty: przeszukaj docs/brainstorms/ w poszukiwaniu plików *-requirements.md. Jeśli znajdziesz relevantny dokument, użyj go jako inputu. Jeśli nie znajdziesz, zapytaj: "Co chciałbyś zaplanować? Opisz feature, bug fix lub usprawnienie."
Nie kontynuuj dopóki nie masz jasnego inputu do planowania.
Słownik domenowy: jeśli istnieje docs/CONCEPTS.md, przeczytaj go najpierw — to glosariusz pojęć o projektowo-specyficznym znaczeniu. Używaj tej terminologii w planie i NIE planuj zmian sprzecznych z definicjami (np. „naprawy" statusu, który celowo działa nietypowo).
/dev-brainstorm wyprodukował requirements doc, planowanie powinno na nim bazować zamiast wymyślać zachowania od nowa.Każdy plan powinien zawierać:
Plan jest gotowy gdy implementator może zacząć pewnie bez potrzeby żeby plan pisał za niego kod.
Jeśli użytkownik odnosi się do istniejącego pliku planu lub istnieje oczywisty niedawny pasujący plan w docs/plans/:
Przed zadawaniem pytań planistycznych przeszukaj docs/brainstorms/ w poszukiwaniu plików pasujących do *-requirements.md.
Kryteria trafności: Requirements doc jest trafny jeśli:
Jeśli wiele dokumentów źródłowych pasuje, zapytaj którego użyć używając narzędzia pytań platformy gdy dostępne. W przeciwnym razie prezentuj numerowane opcje w chacie i czekaj na odpowiedź.
Jeśli relevantny requirements doc istnieje:
(zob. źródło: <ścieżka-źródła>)Jeśli nie istnieje relevantny requirements doc, planowanie może kontynuować bezpośrednio z requestu użytkownika.
Jeśli nie istnieje relevantny requirements doc:
/dev-brainstormPlanning bootstrap powinien ustalić:
Bootstrap powinien być krótki. Istnieje żeby zachować wygodę bezpośredniego wejścia, nie żeby zastępować pełny brainstorm.
Jeśli bootstrap odkryje duże nierozwiązane pytania produktowe:
/dev-brainstorm ponownieJeśli dokument źródłowy zawiera Do rozwiązania przed planowaniem lub podobne blokujące pytania:
Jeśli prawdziwe blokery produktowe pozostają:
/dev-brainstorm żeby je rozwiązaćSklasyfikuj pracę w jedną z tych głębokości:
Jeśli głębokość jest niejasna, zadaj jedno celowane pytanie i kontynuuj.
Sprawdź czy projekt to Expo (mobile) czy inny stack. Heurystyka — projekt jest Expo gdy spełniony jest co najmniej jeden warunek:
app.json, app.config.ts, lub app.config.jspackage.json zawiera "expo": "..." w dependenciesapp/ z plikami routes (Expo Router) lub App.tsx jako entry pointJeśli projekt to Expo:
Delegate to: używaj mobile builderów (feature-builder-mobile-ui | feature-builder-mobile-data | feature-builder-mobile-fullstack)Skills in play: używaj prefiksu expo-* + expo-overview jako pierwszego skillamobile-e2e-maestro (Maestro CLI na emulatorze; web E2E tooling jest poza scope)expo-secure-store (NIE localStorage)Tabela decyzyjna w sekcji 3.5 ma pełną regułę.
Przygotuj zwięzłe podsumowanie kontekstu planowania (akapit lub dwa) jako input do agentów badawczych:
Uruchom tych agentów równolegle:
.claude/agents/repo-research-analyst.md — przekaż podsumowanie kontekstu planowania.claude/agents/learnings-researcher.md — przekaż podsumowanie kontekstu planowaniaZbierz:
docs/solutions/Zdecyduj czy plan powinien nieść lekki sygnał postawy wykonawczej.
Szukaj sygnałów takich jak:
Gdy sygnał jest jasny, przenieś go cicho w relevantnych implementation units.
Pytaj użytkownika tylko jeśli postawa materialnie zmieniłaby sekwencjonowanie lub ryzyko i nie może być odpowiedzialnie wywnioskowana.
Na podstawie dokumentu źródłowego, sygnałów użytkownika i wyników lokalnych zdecyduj czy research zewnętrzny dodaje wartość.
Czytaj między wierszami. Zwróć uwagę na sygnały z dotychczasowej rozmowy:
Zawsze skłaniaj się ku researchowi zewnętrznemu gdy:
Pomiń research zewnętrzny gdy:
Ogłoś decyzję krótko przed kontynuacją. Przykłady:
Jeśli krok 1.2 wskazuje że research zewnętrzny jest przydatny, uruchom tych agentów równolegle:
.claude/agents/best-practices-researcher.md — przekaż podsumowanie kontekstu planowania.claude/agents/framework-docs-researcher.md — przekaż podsumowanie kontekstu planowaniaPodsumuj:
Dla planów Standardowych lub Głębokich, lub gdy kompletność user flow jest wciąż niejasna, uruchom:
.claude/agents/spec-flow-analyzer.md — przekaż podsumowanie kontekstu planowania i wyniki researchuUżyj outputu do:
Cel: zanim ułożysz Implementation Units, ustal źródło prawdy o designie dla tego feature'a. Bez tego buildery UI dostaną tylko opis tekstowy i będą halucynować pomiary.
Krok A — Klasyfikacja feature'a. Zadaj użytkownikowi pytanie przez AskUserQuestion:
"Czy ten feature dotyka warstwy UI (komponenty, ekrany, layouty)?"
Opcje: Tak — dotyka UI / Nie — pure-data (backend/migracje/Edge Functions).
Jeśli Nie → pomiń resztę sekcji 1.6, w frontmatter planu (4.2) wstaw design_md: null, figma_spec: null, figma_screens: [].
Jeśli Tak → kontynuuj krok B.
Krok B — Projektowy DESIGN.md. Sprawdź czy istnieje docs/DESIGN.md (Read tool).
Jeśli istnieje → zapisz ścieżkę do późniejszego frontmatera planu jako design_md: ./docs/DESIGN.md i ogłoś: "Używam docs/DESIGN.md jako źródła prawdy o tokenach designu projektu."
Jeśli nie istnieje → zadaj AskUserQuestion:
"Brak
docs/DESIGN.md(projekt-wide design system w formacie Google Labs design.md — YAML tokeny + markdown prose). Co robimy?"
Opcje:
Stwórz teraz — zatrzymaj planowanie (rekomendowane) — wyjdź z dev-plan, poinstruuj usera żeby stworzył docs/DESIGN.md (spec: https://github.com/google-labs-code/design.md). Plan można wznowić później.Pomiń dla tej iteracji — kontynuuj bez DESIGN.md, zapisz design_md: null w frontmatter, dodaj do "Otwarte pytania → Odroczone do implementacji" wpis: "Brak docs/DESIGN.md — buildery UI bazują tylko na ux-ui-guidelines-mobile i SPEC per-feature. Utwórz przed kolejnym UI feature'em."Krok C — Mockupy Figmy dla tej iteracji. Zadaj AskUserQuestion:
"Czy masz w Figmie mockupy ekranów dla tej iteracji?"
Opcje: Tak — podam linki / Nie — projektujemy z głowy w oparciu o DESIGN.md.
Jeśli Nie → wstaw figma_spec: null, figma_screens: [] w frontmatter, kontynuuj do Fazy 2.
Jeśli Tak → kontynuuj krok D.
Krok D — Zbierz linki Figma (jeden per ekran). Zadaj wolnotekstowo:
"Podaj URL-e Figma per ekran/komponent (jeden na linię, format
<nazwa>: <url>). Przykład:home-dashboard: https://figma.com/design/abc123/...?node-id=378-43 bottom-nav: https://figma.com/design/abc123/...?node-id=27-119 ```"
Sparsuj odpowiedź na listę {name, fileKey, nodeId} (z URL Figmy: figma.com/design/<fileKey>/...?node-id=<nodeId> — zamień - na : w nodeId).
Krok E — Fetch i wygeneruj SPEC.md. Dla każdego ekranu wywołaj sekwencyjnie (Figma MCP rate limit):
mcp__plugin_figma_figma__get_design_context z fileKey + nodeId — pobierz pełną hierarchię, pomiary, paddingi, typografię, autoLayout.mcp__plugin_figma_figma__get_variable_defs z fileKey + nodeId — pobierz tokeny (kolory, spacing, font tokens) używane w tym frame.mcp__plugin_figma_figma__get_screenshot z fileKey + nodeId — pobierz PNG. Zapisz jako docs/plans/<feature-slug>-figma/<name>.png.width i height z metadata frame'a (z odpowiedzi get_design_context) — to viewport designu dla tego ekranu. Mobile uwaga: najczęstsze wymiary Figma mobile frame to 393×852 (iPhone 14/15), 390×844 (iPhone 12-13), 360×800 (Android medium). Tester mobile-e2e-maestro użyje tego wymiaru do wyboru symulatora.Po zebraniu danych ze wszystkich ekranów stwórz jeden plik docs/plans/<feature-slug>-figma/SPEC.md z układem:
# <Feature> — Specyfikacja Figma
> Pomiary zfetchowane z Figmy YYYY-MM-DD (`get_design_context` + `get_variable_defs`).
> Źródło: Figma `<fileKey>`.
## Screeny referencyjne
| Nazwa | Plik | Wymiary | Frame | Target device |
|---|---|---|---|---|
| <name> | `./<name>.png` | <W>×<H>px | `<nodeId>` | iPhone 14 / Pixel 7 itd. |
| ... | ... | ... | ... | ... |
## Tokeny (Figma variables → mapowanie na `docs/DESIGN.md` lub `global.css @theme {}`)
[Z `get_variable_defs` — tabela `figma_variable | hex | token w projekcie`. Sprawdź czy istnieje w `docs/DESIGN.md`; oznacz brakujące jako "do dodania w DESIGN.md".]
## <NAZWA EKRANU 1> (`<nodeId>`) — pełny ekran
[Z `get_design_context` — sekcja per komponent z paddingami, fontami, kolorami, autoLayoutem. Lustruj strukturę frame'a 1:1. **Mobile specyfika**: pomiary uwzględniają safe-area top/bottom, status bar, home indicator — jeśli frame ma je wymalowane, oznacz osobno.]
## <NAZWA EKRANU 2> (`<nodeId>`) — ...
[...]
## Rozjazdy vs DESIGN.md — Figma jest źródłem prawdy
[Tabela: element | DESIGN.md mówi | Figma mówi | decyzja. Jeśli brak rozjazdów — zostaw sekcję pustą z komentarzem "Brak rozjazdów na moment fetchu".]
Po zapisie plików wpisz do frontmatter planu (4.2):
figma_spec: ./docs/plans/<feature-slug>-figma/SPEC.md
figma_screens:
<name-1>: ./docs/plans/<feature-slug>-figma/<name-1>.png
<name-2>: ./docs/plans/<feature-slug>-figma/<name-2>.png
Krok F — Idempotentność. Jeśli docs/plans/<feature-slug>-figma/SPEC.md już istnieje (rerun dev-plan na tym samym slug), zadaj AskUserQuestion:
"SPEC.md już istnieje. Co robimy?"
Opcje:
Re-fetch i nadpisz — pociągnij świeże dane z Figmy, nadpisz SPEC i PNG.Użyj istniejący (rekomendowane jeśli nic nie zmieniło się w Figmie) — pomiń kroki E, użyj ścieżek z istniejącego folderu.NIGDY nie nadpisuj bez explicit zgody usera (memory: confirm-before-delete).
Zbuduj listę pytań planistycznych z:
Dla każdego pytania zdecyduj czy powinno być:
Pytaj użytkownika tylko gdy odpowiedź materialnie wpływa na architekturę, scope, sekwencjonowanie lub ryzyko i nie może być odpowiedzialnie wywnioskowana.
Nie uruchamiaj testów, nie buduj aplikacji, nie badaj zachowania runtime'owego w tej fazie. Celem jest solidny plan, nie częściowe wykonanie.
feat: Dodaj autentykację użytkowników lub fix: Zapobiegaj podwójnemu submitowi checkoutfeat, fix lub refactordocs/plans/YYYY-MM-DD-NNN-<type>-<descriptive-name>-plan.md
docs/plans/ jeśli nie istnieje2026-01-15-001-feat-user-authentication-flow-plan.md, 2026-02-03-002-fix-checkout-race-condition-plan.mdDla planów Standardowych lub Głębokich krótko rozważ kogo dotyczy ta zmiana — użytkownicy końcowi, developerzy, operacje, inne zespoły — i jak to powinno kształtować plan. Dla pracy cross-cutting zanotuj dotknięte strony w sekcji Wpływ systemowy.
Rozbij pracę na logiczne implementation units. Każdy unit powinien reprezentować jedną znaczącą zmianę którą implementator mógłby typowo wylądować jako atomowy commit.
Dobre unity:
Unikaj:
Dla każdego unitu dołącz:
feature-builder-mobile-ui | feature-builder-mobile-data | feature-builder-mobile-fullstack). Reguła decyzyjna w sekcji 3.5.skills: wybranego subagenta). Dokumentacyjne, dla czytelności planu.[Unit] dla testów kodu, [E2E] dla scenariuszy do weryfikacji na emulatorze przez mobile-e2e-maestro (Maestro CLI), [Manual] dla pojedynczych testów wymagających człowieka (np. weryfikacja na fizycznym urządzeniu, akceptacja designera). Dla [E2E] stosuj konwencję zarządzanego harnessu — patrz sekcja 3.4b.Weryfikacja: musi być możliwy do domknięcia bez udziału człowieka, wyrażony jako oczekiwany wynik a nie literalny skrypt komend shellowych. Powód: /dev-docs-review automatycznie odznacza Weryfikacja: po PASS — checkbox nieautomatyzowalny pozostanie wiecznie [ ] i zafałszuje raport postępu. Jeśli kryterium wymaga człowieka — przenieś do Operator checklist lub do Scenariusze testowe jako [Manual]Każdy feature-bearing unit powinien zawierać ścieżkę pliku testowego w **Pliki:**. Dla unitów modyfikujących ekrany/komponenty UI lub ścieżki użytkownika — dołącz scenariusze [E2E] opisujące flow do przetestowania przez Maestro (launch app, tap/scroll/swipe, asercje, deep linking, screenshot).
Autonomiczne E2E (autopilot) działa na dedykowanym projekcie testowym opisanym w .env.e2e (NIGDY dev/prod). Środowisko stawia i sprząta sam autopilot (Metro na .env.e2e, supabase db push migracji + seedy, konto E2E_TEST_EMAIL); tester feature-tester-mobile-e2e tylko odpala istniejące flow — nie pisze ich. Planując scenariusze [E2E], przestrzegaj:
[E2E] krok po kroku — jeśli dotyka pickera zdjęć / kamery / share sheet / natywnego Alert/ActionSheet / biometrii, Maestro tego nie wykona i [E2E] cicho spadnie do Operatora. Wtedy: (a) dane, które wpadłyby przez picker/kamerę → wstrzyknij przez service_role (runScript: .maestro/inject-*.js, wzór etap-12-inject-message.js) i asertuj RENDER; (b) natywny confirm/destructive → [Manual] w Operator checklist. Nigdy nie pisz flow tapującego natywny picker. Pełna tabela granic: skill mobile-e2e-maestro §„Granica możliwości Maestro". (Udokumentowana regresja etap-12b: plan galerii miał flow tapujący picker iOS → ręczna korekta na inject.).maestro/<flow>.yaml ORAZ jego seed .maestro/<flow>-seed.sql to deliverables BUILDERA (kod), nie testera ani Operatora. Wpisz OBA do **Pliki:** danego IU jako Stwórz: i przypisz IU do buildera (feature-builder-mobile-*). Checkbox [E2E]/Weryfikacja: to WYŁĄCZNIE uruchomienie przez testera — autorstwo flow NIGDY nie może wisieć pod tym checkboxem ani w bloku testera, bo wtedy nikt go nie napisze i E2E cicho spadnie do Operatora (udokumentowana regresja etap-12: powstał seed, flow .yaml nie → E2E nie przebiegło).(select id from auth.users where email='<E2E_TEST_EMAIL>') — nigdy przez stałe ID. Wzór: istniejący .maestro/<inny>-seed.sql w repo. Flow loguje się kontem E2E_TEST_EMAIL (wzór: istniejący flow logowania w .maestro/)..env.e2e — nigdy nie wstrzykuj danych testowych do dev/prod ani przez Supabase MCP. Smoke RLS (np. odmowa nie-uczestnikowi) wykonuj SQL-em na bazie e2e (psql "$SUPABASE_E2E_DB_URL").[E2E]. Prawdziwy two-client „na żywo" (równoczesne urządzenia) → Operator checklist [Manual], bo harness single-client tego nie dowiedzie..env.e2e (brak opt-in do E2E): scenariusz [E2E] przenieś do Operator checklist jako [Manual] — seed nie jest wtedy wymagany.Używaj Notatka wykonawcza oszczędnie. Dobre użycia:
Notatka wykonawcza: Zacznij od failing integration testu dla kontraktu request/response.Notatka wykonawcza: Dodaj characterization coverage przed modyfikacją tego legacy parsera.Notatka wykonawcza: Implementuj nowe zachowanie domenowe test-first.Nie rozwijaj unitów w literalne substepy RED/GREEN/REFACTOR.
Każdy Implementation Unit MUSI mieć zadeklarowany Delegate to: — nazwa subagenta z .claude/agents/, który go wykona. Reguła decyzyjna oparta na ścieżkach z pola Pliki::
Ścieżki w Pliki: | Subagent | Skille (mirror dla Skills in play:) |
|---|---|---|
Tylko *.tsx w app/, components/, screens/, lub native config (app.json, app.config.ts) | feature-builder-mobile-ui | expo-overview, expo-native-ui, expo-router, expo-tailwind-setup, figma:figma-use, figma-design-to-code |
Tylko *.ts w lib/, hooks/use<X>Data.ts, supabase/migrations/, supabase/functions/ | feature-builder-mobile-data | expo-overview, expo-data-fetching, supabase-dev-guidelines, security, sentry-integration |
| Mix UI i danych w jednym atomowym IU | feature-builder-mobile-fullstack | expo-overview, expo-native-ui, expo-router, expo-tailwind-setup, expo-data-fetching, supabase-dev-guidelines, security, sentry-integration, figma:figma-use, figma-design-to-code |
Reguła praktyczna: jeśli da się rozsądnie podzielić na dwa osobne IU (jeden UI, drugi data) — podziel. feature-builder-mobile-fullstack używaj tylko gdy podział byłby sztuczny (np. ekran logowania z OAuth, gdzie UI bez auth call lub auth call bez ekranu są bezużyteczne).
Pole Skills in play: jest dokumentacyjnym mirror frontmatter skills: wybranego subagenta — pozwala czytelnikowi planu zrozumieć kontekst implementacji bez wchodzenia do pliku subagenta.
Figma w mirrorze: feature-builder-mobile-ui i feature-builder-mobile-fullstack zawsze mają figma skille w Skills in play: (mirror frontmatera tych agentów). Te skille są aktywne tylko gdy plan ma niepuste figma_spec/figma_screens w frontmaterze — wtedy dev-docs-execute wstrzykuje subagentowi "Mandatory designerski kontekst". Bez tej sekcji w prompcie buildery ignorują skille figma. feature-builder-mobile-data nie ma figma skilli — warstwa danych nie dotyka designu.
Jeśli coś jest ważne ale jeszcze niepoznawalne, zapisz to explicite pod odroczonymi notatkami implementacyjnymi zamiast udawać że rozwiązujesz to w planie.
Przykłady:
Używaj jednej filozofii planowania na wszystkich głębokościach. Zmieniaj ilość szczegółów, nie granicę między planowaniem a wykonaniem.
Lekka
Standardowa
Głęboka
Dla wystarczająco dużej, ryzykownej lub cross-cutting pracy, dodaj sekcje które genuinely pomagają:
Nie dodawaj tych sekcji jako boilerplate. Dołączaj je tylko gdy poprawiają jakość wykonania lub alignment interesariuszy.
Pomiń wyraźnie niepasujące opcjonalne sekcje, szczególnie dla planów Lekkich.
---
title: [Tytuł planu]
type: [feat|fix|refactor]
status: active
date: YYYY-MM-DD
origin: docs/brainstorms/YYYY-MM-DD-<topic>-requirements.md # dołącz gdy planujesz z requirements doc
design_md: ./docs/DESIGN.md # null jeśli pure-data feature lub brak DESIGN.md (patrz 1.6)
figma_spec: ./docs/plans/<feature-slug>-figma/SPEC.md # null jeśli brak mockupów Figmy
figma_screens: # {} jeśli brak mockupów; mapa name → ścieżka PNG
home: ./docs/plans/<feature-slug>-figma/home.png
settings: ./docs/plans/<feature-slug>-figma/settings.png
---
# [Tytuł planu]
## Przegląd
[Co się zmienia i dlaczego]
## Ujęcie problemu
[Podsumuj problem użytkownika/biznesowy i kontekst. Odwołaj się do dokumentu źródłowego gdy jest.]
## Śledzenie wymagań
- R1. [Wymaganie lub kryterium sukcesu które plan musi spełnić]
- R2. [Wymaganie lub kryterium sukcesu które plan musi spełnić]
## Granice scope'u
- [Explicite non-goal lub wykluczenie]
## Kontekst i research
### Relevantny kod i wzorce
- [Istniejący plik, klasa, komponent lub wzorzec do naśladowania]
### Wiedza instytucjonalna
- [Relevantny insight z `docs/solutions/`]
### Referencje zewnętrzne
- [Relevantne zewnętrzne docs lub źródło best-practice, jeśli użyte]
## Kluczowe decyzje techniczne
- [Decyzja]: [Uzasadnienie]
## Otwarte pytania
### Rozwiązane podczas planowania
- [Pytanie]: [Rozwiązanie]
### Odroczone do implementacji
- [Pytanie lub niewiadoma]: [Dlaczego jest świadomie odroczone]
## Implementation Units
- [ ] **Unit 1: [Nazwa]**
**Cel:** [Co ten unit osiąga]
**Wymagania:** [R1, R2]
**Zależności:** [Brak / Unit 1 / zewnętrzny prerequisite]
**Pliki:**
- Stwórz: `ścieżka/do/nowego_pliku`
- Modyfikuj: `ścieżka/do/istniejącego_pliku`
- Test (unit): `ścieżka/do/pliku_testowego`
- Stwórz (e2e flow): `.maestro/<flow>.yaml` *(builder PISZE flow; tester tylko odpala — patrz 3.4b)*
- Stwórz (e2e seed): `.maestro/<flow>-seed.sql` *(idempotentny, konto przez `E2E_TEST_EMAIL`; pomiń gdy flow nie potrzebuje danych)*
**Delegate to:** feature-builder-mobile-ui | feature-builder-mobile-data | feature-builder-mobile-fullstack
**Skills in play:** [lista skilli — mirror frontmatter `skills:` wybranego subagenta]
**Podejście:**
- [Kluczowa decyzja designu lub sekwencjonowania]
**Notatka wykonawcza:** [Opcjonalny sygnał postawy test-first, characterization-first lub innej]
**Wzorce do naśladowania:**
- [Istniejący plik, klasa lub wzorzec]
**Scenariusze testowe:**
- [Unit] [Konkretny scenariusz z oczekiwanym zachowaniem]
- [Unit] [Edge case lub ścieżka awarii]
- [E2E] [Flow do weryfikacji przez Maestro: launchApp, tapOn X, assertVisible Y, takeScreenshot]
- [Manual] [Krok wymagający człowieka, np. weryfikacja na fizycznym urządzeniu iOS] *(opcjonalne — używaj gdy automatyzacja jest niemożliwa)*
**Weryfikacja:** *(wyłącznie automatyzowalne — CLI lub E2E przez Maestro na emulatorze; rzeczy ręczne idą do Operator checklist niżej)*
- [Komenda CLI z oczekiwanym wynikiem, np. "bun run typecheck przechodzi bez błędów"]
- [Scenariusz Maestro z oczekiwanym stanem widocznym na emulatorze]
**Operator checklist:** *(opcjonalne — kroki wymagające człowieka, NIE odznaczane przez autopilot)*
- [ ] [Krok wymagający operatora, np. "QA weryfikuje haptykę i dźwięki na realnym iPhone"]
## Wpływ systemowy
- **Graf interakcji:** [Jakie callbacki, middleware, observery lub entry pointy mogą być dotknięte]
- **Propagacja błędów:** [Jak awarie powinny podróżować między warstwami]
- **Ryzyka cyklu życia stanu:** [Częściowy zapis, cache, duplikaty lub problemy cleanup]
- **Parytet surface API:** [Inne interfejsy które mogą wymagać tej samej zmiany]
- **Pokrycie integracyjne:** [Scenariusze cross-layer których unit testy same nie udowodnią]
## Ryzyka i zależności
- [Materialny risk, zależność lub problem sekwencjonowania]
## Dokumentacja / Notatki operacyjne
- [Docs, rollout, monitoring lub wpływ na support gdy relevantne]
## Źródła i referencje
- **Dokument źródłowy:** [docs/brainstorms/YYYY-MM-DD-<topic>-requirements.md](ścieżka)
- Powiązany kod: [ścieżka lub symbol]
- Powiązane PR/issues: #[numer]
- Zewnętrzne docs: [url]
Dla większych planów Głębokich rozszerzaj core template tylko gdy to przydatne sekcjami takimi jak:
## Rozważane alternatywy
- [Podejście]: [Dlaczego odrzucone lub niewybrane]
## Metryki sukcesu
- [Jak poznamy że to rozwiązało zamierzony problem]
## Zależności / Wymagania wstępne
- [Zależność techniczna, organizacyjna lub rolloutowa]
## Analiza ryzyk i mitygacja
- [Ryzyko]: [Mitygacja]
## Fazowe dostarczanie
### Faza 1
- [Co ląduje pierwsze i dlaczego]
### Faza 2
- [Co następuje i dlaczego]
## Plan dokumentacji
- [Docs lub runbooki do aktualizacji]
## Notatki operacyjne / rolloutowe
- [Monitoring, migracja, feature flag lub rozważania rolloutowe]
- [ ] do śledzenia postępuRED/GREEN/REFACTORPrzed finalizacją sprawdź:
/dev-brainstormDelegate to: zgodnie z regułą decyzyjną z sekcji 3.5Skills in play: w każdym IU jest spójne z frontmatter skills: wybranego subagentadesign_md, figma_spec, figma_screens (zgodnie z 1.6) — jako konkretne ścieżki LUB explicite null/{}. Nigdy nie pomijaj tych pól.figma_spec ≠ null — plik istnieje na dysku (Read go zwraca treść), a każdy ekran z figma_screens ma fizycznie zapisany PNGfeature-builder-mobile-ui lub feature-builder-mobile-fullstack ma w Skills in play: figma skille (mirror per sekcja 3.5), niezależnie od tego czy ten konkretny IU korzysta z mockupu — bo skille są w frontmaterze agentaNotatką wykonawcząWeryfikacja: jest automatyzowalny (CLI lub E2E przez Maestro na emulatorze). Kroki wymagające człowieka (fizyczne urządzenie, QA, designer) są w Operator checklist lub jako [Manual] w Scenariusze testowe — nigdy w Weryfikacja:Jeśli plan pochodzi z requirements doc, przeczytaj ponownie ten dokument i zweryfikuj:
/dev-brainstormWYMAGANE: Zapisz plik planu na dysk przed prezentowaniem jakichkolwiek opcji.
Użyj mkdir -p docs/plans/ przed zapisem. Następnie użyj narzędzia Write żeby zapisać kompletny plan do:
docs/plans/YYYY-MM-DD-NNN-<type>-<descriptive-name>-plan.md
Potwierdź:
Plan zapisany do docs/plans/[nazwa-pliku]
Tryb pipeline: Jeśli wywołany z automatycznego workflow lub kontekstu disable-model-invocation, pomiń interaktywne pytania. Podejmij potrzebne wybory automatycznie i kontynuuj do zapisu planu.
Po zapisie pliku prezentuj opcje używając narzędzia pytań platformy gdy dostępne. W przeciwnym razie prezentuj numerowane opcje w chacie i czekaj na odpowiedź.
Pytanie: "Plan gotowy w docs/plans/YYYY-MM-DD-NNN-<type>-<name>-plan.md. Co chciałbyś zrobić dalej?"
Opcje:
/dev-docs (Rekomendowane) — rozpocznij planowanie implementacji z tym planem/dev-docs-execute — rozpocznij implementację tego planuNa podstawie wyboru:
docs/plans/<nazwa_pliku>.md używając mechanizmu otwierania plików platformy (np. open na macOS)/dev-docs -> Uruchom /dev-docs ze ścieżką do planu/dev-docs-execute -> Uruchom /dev-docs-execute ze ścieżką do planuNIGDY NIE KODUJ! Badaj, decyduj i zapisz plan.