Co musi być gotowe przed sprintem?
Lista zakłada projekt po jednorazowej konfiguracji. Jeśli któregoś punktu brakuje, zacznij od wpisu Zacznij tutaj: czym jest Monolynx i czego potrzebujesz.
| Warunek | Jak sprawdzić |
|---|---|
| projekt, plugin i połączenie działają | /monolynx:setup pokazuje OK przy slugu i stronie toolchain |
strona toolchain ma sekcję ## Worktree |
ten sam raport; bez niej sesje w tle nie uruchomią testów |
| jeden ticket przeszedł ścieżką ręczną | wiesz, jak wygląda plan, raport i ocena krytyka |
| test dymny przeszedł | jeden ticket na jednym slocie doszedł do statusu Gotowe; opisuje go wpis Test dymny przed pierwszym sprintem |
glab albo gh jest zalogowane |
glab auth status albo gh auth status |
| Twoja rola pozwala usuwać strony wiki | rola właściciela albo administratora; potrzebna tylko do czyszczenia logów w sprint-end |
Jakie branche występują w sprincie?
W sprincie są trzy rodzaje branchy. Pozostałe nazwy spotykane we wpisach i w zmiennych to określenia tych samych trzech.
| Branch | Przykład | Kto go tworzy | Inne nazwy tego samego |
|---|---|---|---|
| Gałąź główna | main |
istnieje w repozytorium | domyślny branch repozytorium |
| Branch sprintu | sprint/platnosci |
Ty, przed sprintem | bazowy, źródłowy, docelowy, integracyjny |
| Branch ticketu | worktree-SKL-12 |
sesja ticketu | roboczy, branch merge requesta |
Branch sprintu odgałęzia się od gałęzi głównej. Każdy ticket dostaje własny branch odgałęziony od brancha sprintu. Kolejka merguje branche ticketów do brancha sprintu. Na końcu człowiek merguje branch sprintu do gałęzi głównej.
flowchart LR
M["Gałąź główna: main"] -- "Ty: git switch -c" --> S["Branch sprintu"]
S -- "sesja ticketu" --> T1["Branch ticketu SKL-12"]
S -- "sesja ticketu" --> T2["Branch ticketu SKL-13"]
T1 -- "mr-queue: merge" --> S
T2 -- "mr-queue: merge" --> S
S -- "Ty: merge na końcu" --> MBranch sprintu ma cztery przymiotniki, bo pełni cztery role naraz. Sesje biorą z niego kod, więc jest bazowy i źródłowy. Merge requesty ticketów trafiają do niego, więc jest docelowy. Zbiera pracę wszystkich ticketów, więc jest integracyjny. Wskazuje go jedna zmienna: MONOLYNX_MR_TARGET.
Jak wygląda sprint krok po kroku?
Każdy krok ma jedno polecenie albo jedną czynność w panelu. Kolejność jest istotna: pętle sprawdzają stan z kroków wcześniejszych.
- Włącz zgody w repozytorium
Do śledzonego pliku
.claude/settings.jsondopiszMONOLYNX_AUTOTEST,MONOLYNX_AUTOCOMMIT,MONOLYNX_AUTOPUSHiMONOLYNX_AUTOMRz wartościątrue, zrób commit i wypchnij go. Trzy pierwsze są warunkiem startu dyspozytora. - Napisz i sprawdź tickety
Dla każdego:
/monolynx:ticket-create "opis", potem/monolynx:ticket-review KLUCZ. - Utwórz sprint i przypisz tickety
W panelu, w module Scrum. Każdy ticket przypisz do sprintu i przestaw z Backlog na Do zrobienia.
- Wystartuj sprint
Przycisk Wystartuj przy sprincie. Aktywny może być tylko jeden.
- Ustaw blokery
/monolynx:ticket-review sprintporównuje pliki ticketów i proponuje, który ma czekać na który. - Utwórz branch sprintu
Odgałęź go od gałęzi głównej, wypchnij i zostań na nim. Krok jest zalecany, ale nieobowiązkowy: bez brancha sprintu pomijasz go razem ze zmienną z kroku 7, a merge requesty idą wprost do gałęzi głównej.
- Uruchom dwie pętle
W dwóch osobnych sesjach Claude Code, z tego samego katalogu i z ustawioną zmienną
MONOLYNX_MR_TARGET. - Zatwierdzaj i odpowiadaj
Kolejka pyta o zatwierdzenie każdego merge requesta. Sesje z werdyktem
waitingczekają na Twoją odpowiedź. - Zmerguj i zamknij
Gdy obie linie statusu pokazują zero: merge brancha sprintu do gałęzi głównej, potem
/monolynx:sprint-end.
$ git switch main
$ git pull
$ git switch -c sprint/platnosci
$ git push -u origin sprint/platnosci
$ export MONOLYNX_MR_TARGET=sprint/platnosci
# okno 1
$ claude
> /loop 15m /monolynx:sprint-run
# okno 2, ten sam katalog, ta sama zmienna
$ claude
> /loop 10m /monolynx:mr-queue# merge request sprint/platnosci -> main: otwierasz, czekasz na CI, mergujesz
$ git switch main
$ git pull
$ unset MONOLYNX_MR_TARGET
$ claude
> /monolynx:sprint-endCo działa na której platformie?
Pełny autopilot zakłada GitLab i CI. W innych układach sprint też działa, ale część kroków wraca do człowieka.
| Krok | GitLab z CI | GitHub z CI | Repozytorium bez CI |
|---|---|---|---|
| Sesje ticketów w tle | automat | automat | automat |
| Otwarcie merge requesta | automat, przez glab |
Ty: gh pr create dla każdego ticketu |
Ty albo automat, zależnie od platformy |
| Naprawa konfliktu i czerwonego CI | automat, przez kolejkę | automat, przez kolejkę | nie dotyczy |
| Zatwierdzenie | Ty | Ty | Ty |
| Merge ticketu | automat po Twojej zgodzie | automat po Twojej zgodzie | Ty; kolejka oddaje każdą pozycję człowiekowi |
| Status Gotowe | automat po merge | automat po merge | Ty, w panelu |
W GitHubie sesja ticketu kończy pracę normalnie: wypycha branch, ustawia status Review i zapisuje w komentarzu, że merge request nie powstał. Pull request otwierasz sam, a kolejka przejmuje go przy następnym ticku.
Sprint w Codex zamiast Claude Code
Plugin instaluje się w Codex z tego samego repozytorium, a komendy mają prefiks $monolynx: zamiast /monolynx:. Dyspozytor ma dla Codex osobny tryb, wybierany zmienną MONOLYNX_SPRINT_RUNTIME=codex.
$ git clone https://gitlab.com/piotrkrych/monolynx.git
$ cd monolynx
$ codex plugin marketplace add .
$ codex plugin add monolynx@monolynx| Czynność | Claude Code | Codex |
|---|---|---|
| Pętla dyspozytora | /loop w sesji albo skrypt sprint_run.sh |
tylko skrypt sprint_run.sh |
| Lista sesji ticketów | claude agents |
własny rejestr dyspozytora |
| Wejście do sesji, która czeka | claude attach <id> |
brak; czytasz plik logu sesji wskazany w komentarzu ticketu |
| Agenci ról z pluginu | dostępni | nie przenoszą się automatycznie |
Wpisy na tym blogu opisują obsługę sesji w Claude Code. W Codex mechanika pętli, werdykty i linia statusu są te same, a różni się tylko sposób podglądania sesji.
Kto zatwierdza, gdy pracujesz sam?
Kolejka potrzebuje Twojej zgody na każdy merge request. Wystarczy odpowiedź "tak" w rozmowie, o ile repozytorium nie wymaga formalnych zatwierdzeń.
| Ustawienie repozytorium | Co wystarcza |
|---|---|
| brak reguły wymaganych zatwierdzeń | Twoje "tak" w sesji kolejki |
| wymagane zatwierdzenie, może je dać autor | zatwierdzasz w interfejsie platformy |
| wymagane zatwierdzenie innej osoby | zatwierdza druga osoba; agent ani kolejka tego nie obejdą |
Agent pracuje na Twoim koncie glab albo gh, więc autorem merge requestów jesteś Ty. W projekcie jednoosobowym regułę wymaganych zatwierdzeń najprościej wyłączyć, bo nie ma kto jej spełnić.
Co zrobić z uwagami recenzenta?
Agent nie czyta komentarzy w merge requeście sam. Wklej uwagi do komentarza ticketu, a poprawki zrób na branchu ticketu. Status ticketu zostaje Review: dyspozytor uznaje taki ticket za skończony i go nie rusza. Po Twoim pushu kolejka uruchamia CI od nowa i pyta o zatwierdzenie jeszcze raz.
Jak wygląda sprint z trzema ticketami?
Poniżej przebieg przykładowego sprintu w projekcie sklep. Ticket SKL-13 zależy od SKL-12, a sesja SKL-14 utknie na pytaniu. Wyniki są przykładowe, ale mają dokładnie taki format jak prawdziwe.
> /monolynx:sprint-run
| Ticket | Sesja | Werdykt | Działanie |
| SKL-12 | a1b2c3d4 | free -> running | start sesji |
| SKL-14 | e5f6a7b8 | free -> running | start sesji |
| SKL-13 | - | free -> pominięty | czeka na merge SKL-12 (todo) |
SPRINT-RUN: remaining=1 running=2 waiting=0 done=0| SKL-12 | a1b2c3d4 | done | komentarz + claude rm |
| SKL-14 | e5f6a7b8 | waiting | pytanie w ostatniej odpowiedzi |
| SKL-13 | - | free -> pominięty | czeka na merge SKL-12 (in_review) |
Czekają na człowieka:
- SKL-14: sesja pyta, czy eksport ma obejmować zamówienia anulowane
claude attach e5f6a7b8
SPRINT-RUN: remaining=1 running=0 waiting=1 done=1Dwie rzeczy czekają teraz na Ciebie. Sesja SKL-14 potrzebuje odpowiedzi, a merge request SKL-12 zatwierdzenia.
$ claude attach e5f6a7b8
> Tak, eksport obejmuje też zamówienia anulowane, z osobną kolumną statusu.> /monolynx:mr-queue
!42 SKL-12: eksport zamówień do CSV
CI: zielone | konflikt: brak | zatwierdzenie: brak
Approve !42 (SKL-12: eksport zamówień do CSV, SHA 4f2a9c1e)? tak / nie
> tak
MR-QUEUE: remaining=1 current=!42 verdict=needs_approval done=0Następny tick kolejki merguje !42 i ustawia SKL-12 jako Gotowy. Kolejny tick dyspozytora widzi zamknięty bloker i startuje SKL-13.
SPRINT-RUN: remaining=0 running=0 waiting=0 done=3Kolejka pokazuje w tym samym czasie remaining=0 w swojej linii MR-QUEUE.
Gdzie patrzeć w trakcie sprintu?
Trzy miejsca pokazują ten sam sprint z trzech stron. Na co dzień wystarcza pierwsze.
| Miejsce | Co pokazuje | Kiedy tam zajrzeć |
|---|---|---|
| Ostatnia linia ticku | liczniki dyspozytora i kolejki | po każdym ticku |
| Tablica w panelu | statusy ticketów | przed końcowym merge; liczy się status Gotowe |
| Moduł Pipelines w panelu | przebieg pracy agentów nad każdym ticketem | gdy chcesz wiedzieć, co agent zrobił i jak go oceniono |
Lista w module Pipelines ma jeden wiersz na przebieg pracy nad ticketem. Po wejściu w wiersz widzisz trzy kolumny etapów: research, coding i wrap-up. Każda zawiera karty zadań poszczególnych agentów ze statusem i czasem trwania. Karta otwiera log zadania. Widok odświeża się sam co 15 sekund, a przebieg bez zmian od ponad sześciu godzin jest oznaczony jako zawieszony.
Najczęstsze pytania
Ile trwa i ile kosztuje taki sprint?
Wpisy nie podają liczb, bo zależą od wielkości ticketów, czasu CI i modelu. Sposób pomiaru na jednym tickecie opisuje wpis Test dymny przed pierwszym sprintem. Pierwszy sprint puść na dwóch slotach i z trzema, czterema ticketami.
Czy mogę pominąć branch sprintu?
Tak. Bez MONOLYNX_MR_TARGET merge requesty trafiają do domyślnego brancha repozytorium. Kolejka czeka wtedy na zielone CI tego brancha po każdym merge, więc sprint idzie wolniej.
Co znaczy tryb uprawnień auto?
Sesje w tle startują w trybie auto Claude Code. Polecenia uznane za bezpieczne przechodzą bez pytania, a pozostałe są odrzucane. W tle nikt nie odpowie na pytanie o zgodę, więc sesja po odmowie kończy turę linią SPRINT-RUN STOP z powodem.
Jak nazywa się branch ticketu w sprincie?
Sesja w tle pracuje w osobnym katalogu nazwanym kluczem ticketu, a jej branch ma postać worktree-SKL-12. Nazwa zawiera numer ticketu, więc przechodzi domyślną kontrolę nazw.
Czy mogę zrobić jeden ticket sprintu sam, gdy pętle działają?
Tak, ale nie przez samą zmianę statusu. Ticket trzeba najpierw odpiąć od sprintu albo zatrzymać pętlę dyspozytora. Kroki podaje wpis Praca ręczna w trakcie sprintu.
Co, jeśli w trakcie sprintu coś pójdzie źle?
Zatrzymanie pętli, wyjęcie ticketu i odblokowanie kolejki opisuje wpis Awaryjnie: jak zatrzymać sprint, wyjąć ticket i posprzątać.
Słownik i następny krok
- Gałąź główna
- domyślny branch repozytorium, zwykle
main - Branch sprintu
- branch zbierający pracę całego sprintu; wskazuje go
MONOLYNX_MR_TARGET - Branch ticketu
- branch jednej sesji, mergowany do brancha sprintu
- Pętla
- komenda powtarzana co stały czas: dyspozytor
sprint-runalbo kolejkamr-queue - Tick
- jedno uruchomienie komendy pętli
- Slot
- miejsce na jedną równoległą sesję ticketu
Codzienną obsługę pętli, czyli co wpisać rano i jak czytać obie linie statusu, zbiera wpis Dzień sprintu: ściąga i tabela decyzji. Uzasadnienie każdego kroku i warianty opisuje przewodnik Sprint z Monolynx krok po kroku. Flagi i pliki, w których je ustawiasz, zbiera wpis Konfiguracja: która zmienna w którym pliku. Raporty pętli uczy czytać wpis Sesje w tle: jak obserwować pętle sprintu.
Chcesz zobaczyć, jak wygląda przebieg pracy agentów w panelu?
Zobacz moduł Pipelines w Monolynx