Jak wygląda cały sprint w jednym obrazku?
Sprint prowadzony przez agentów ma stały rytm. Ty planujesz i decydujesz, a dwie pętle wykonują pracę między Twoimi decyzjami. Poniżej wszystkie komendy, które wpisujesz w trakcie sprintu, w kolejności użycia.
# raz na projekt
/monolynx:setup
# plan sprintu
/monolynx:ticket-create
/monolynx:ticket-review SKL-12
# po starcie sprintu w panelu
/monolynx:ticket-review sprint
# praca: dwie pętle w dwóch sesjach
/loop 15m /monolynx:sprint-run
/loop 10m /monolynx:mr-queue
# po merge brancha sprintu do develop i main
/monolynx:sprint-endsprint-runmr-queuesprint-endPlan sprintu trafia do dyspozytora sprint-run, który startuje sesję work dla każdego wolnego ticketu. Sesja kończy się merge requestem do brancha sprintu. Kolejka mr-queue merguje te MR-y po kolei po zielonym CI i zatwierdzeniu przez człowieka. Gdy wszystkie tickety są zamknięte, człowiek merguje branch sprintu do develop i main, a sprint-end przenosi wiedzę do wiki i zamyka sprint.
flowchart TD
A["Plan: ticket-create i ticket-review"] --> B["Start sprintu i branch sprintu"]
B --> C["Pętla sprint-run co 15 min"]
C --> D["Sesja work w osobnym worktree"]
D --> E["MR do brancha sprintu"]
E --> F["Pętla mr-queue co 10 min"]
F --> G{"Wszystkie tickety done?"}
G -- nie --> C
G -- tak --> H["Merge: sprint do develop, develop do main"]
H --> I["sprint-end: wiki i complete_sprint"]Etap 1: przygotowanie projektu
Przygotowanie robisz raz, nie przed każdym sprintem. Komenda /monolynx:setup sprawdza konfigurację projektu punkt po punkcie i przy każdym braku proponuje skill, który go naprawi: /monolynx:project-toolchain zapisuje komendy lintu i testów na stronie wiki toolchain, a /monolynx:wiki-init włącza metodę LLM Wiki. O tej metodzie przeczytasz we wpisie Jak działają skille LLM Wiki.
Dyspozytor startuje sesje w tle, więc nikt nie odpowie im na pytanie "czy mogę uruchomić testy". Zgody ustawiasz z góry jako flagi w śledzonym pliku .claude/settings.json.
{
"env": {
"MONOLYNX_AUTOTEST": "true",
"MONOLYNX_AUTOCOMMIT": "true",
"MONOLYNX_AUTOPUSH": "true",
"MONOLYNX_AUTOMR": "true"
}
}| Flaga | Na co pozwala | Bez niej |
|---|---|---|
MONOLYNX_AUTOTEST |
lint i testy bez pytania | sprint-run nie wystartuje |
MONOLYNX_AUTOCOMMIT |
commit po zielonej bramce | sprint-run nie wystartuje |
MONOLYNX_AUTOPUSH |
push brancha ticketu | sprint-run nie wystartuje |
MONOLYNX_AUTOMR |
otwarcie merge requesta | ostrzeżenie, MR otwierasz ręcznie |
MONOLYNX_AUTOMERGE |
merge gotowego MR-a bez pytania | mr-queue pyta przed każdym merge |
Etap 2: plan sprintu
Jakość sprintu rozstrzyga się przed jego startem. Agent w tle nie dopyta o szczegóły, więc ticket musi nieść kontrakt: co ma powstać, po czym poznać, że jest gotowe, i czego nie ruszać.
- Napisz tickety
Komenda
/monolynx:ticket-createrozbija temat na tickety z kryteriami akceptacji. Szczegóły opisuje wpis Jak działa /monolynx:ticket-create. - Przejrzyj każdy ticket
Komenda
/monolynx:ticket-reviewszuka luk w kontrakcie, zanim znajdzie je agent w połowie pracy. Więcej we wpisie Jak działa /monolynx:ticket-review. - Przypisz tickety do sprintu i ustaw Do zrobienia
Nowy ticket ma status Backlog. Dyspozytor bierze tylko tickety w statusie Do zrobienia z aktywnego sprintu, więc każdy ticket planu przypisz do sprintu i przestaw w panelu. Statusy opisuje wpis Statusy ticketu w Monolynx.
- Uruchom sprint
Sprint startujesz w panelu, w module Scrum. W projekcie może być tylko jeden aktywny sprint.
- Przejrzyj sprint jako całość
Wywołanie
/monolynx:ticket-review sprintczyta tickety Do zrobienia aktywnego sprintu, dlatego działa dopiero po jego starcie. Porównuje pliki, których dotkną tickety, i proponuje blokery tam, gdzie dwa tickety weszłyby sobie w drogę.
Jak ustawić branch źródłowy i docelowy sprintu?
Każdy ticket ma dwa branche, które decydują o tym, skąd bierze kod i dokąd go oddaje. Branch źródłowy (source) to stan, z którego startuje sesja ticketu. Branch docelowy (target) to branch, do którego sesja otwiera merge request. W sprincie oba powinny wskazywać branch sprintu, na przykład sprint/platnosci, a nie main.
| Ustawienie | Rola | Kto je czyta | Wartość w sprincie |
|---|---|---|---|
MONOLYNX_BASE_BRANCH |
branch źródłowy: baza sesji ticketu i punkt synchronizacji przed pracą | sprint-run, work |
branch sprintu |
MONOLYNX_MR_TARGET |
branch docelowy: cel merge requestów ticketów | work, mr-queue, sprint-end |
branch sprintu |
Obie zmienne nazywają ten sam branch, dlatego wystarczy ustawić jedną. Zwykle jest to MONOLYNX_MR_TARGET, bo tylko ona ustawia także cel merge requesta w sesji work, a branch źródłowy przyjmuje wtedy tę samą wartość.
$ git switch sprint/platnosci
$ export MONOLYNX_MR_TARGET=sprint/platnosci
$ claude
> /loop 15m /monolynx:sprint-run- Utwórz branch sprintu
Odgałęź go od
developalbomaini wypchnij do repozytorium, zanim uruchomisz pętle. - Ustaw zmienną
Najpewniejszy jest
export MONOLYNX_MR_TARGET=...w terminalu, z którego startujesz pętle. Plik.claude/settings.local.jsongłównego checkoutu też działa, ale tylko pośrednio: czyta go sesja dyspozytora i przekazuje wartość dalej. Powody opisuje wpis Konfiguracja: które zmienne gdzie ustawić. Sesje ticketów dziedziczą środowisko dyspozytora, więc każda zna branch docelowy, choć sama pracuje w worktree i pliku osobistego nie widzi. - Przełącz główny checkout
Checkout, z którego startujesz pętle, stoi na branchu sprintu przez cały sprint. Sesje w tle biorą jego bieżący stan jako punkt wyjścia.
- Po sprincie usuń ustawienie
Zmienna wskazująca zamknięty branch sprintu skierowałaby kolejne tickety w złe miejsce.
Źródło i cel muszą być tym samym branchem z prostego powodu: ticket zmergowany do brancha sprintu powinien być widoczny dla następnego ticketu. Gdy dyspozytor wykryje, że lokalny branch źródłowy jest za zdalnym, sam go dociąga, wyłącznie przez fast-forward. Sesja ticketu robi to samo przed rozpoczęciem pracy.
Dlaczego branch sprintu, a nie main
Merge do brancha sprintu domyka ticket od razu, na podstawie zielonego CI samego merge requesta. Merge do domyślnego brancha wymaga dodatkowo zielonego CI tego brancha po merge, więc kolejka czeka dłużej na każdy ticket. Branch sprintu daje też jedno miejsce, w którym widać cały sprint przed wydaniem: jeden przegląd, jedno CI, jeden merge do develop. Jeśli Twój zespół integruje wprost na develop, branchem sprintu może być develop i wtedy odpada jeden merge w etapie 4.
Etap 3: dwie pętle
Praca nad ticketami to dwie komendy uruchomione w dwóch sesjach Claude Code. Obie są idempotentne: każdy tick czyta stan od zera, wykonuje jeden krok i kończy się jedną linią statusu.
# sesja 1: dyspozytor
> /loop 15m /monolynx:sprint-run
SPRINT-RUN: remaining=6 running=3 waiting=0 done=2
# sesja 2: kolejka merge requestów
> /loop 10m /monolynx:mr-queue
MR-QUEUE: remaining=2 current=!84 verdict=wait done=3| Cecha | sprint-run |
mr-queue |
|---|---|---|
| Zadanie | startuje sesje ticketów i zbiera zakończone | prowadzi MR-y do merge, jeden po drugim |
| Jednostka pracy | ticket ze statusem todo |
otwarty merge request |
| Zalecana pętla | /loop 15m |
/loop 10m |
| Czego nie robi | sam nie pracuje nad ticketem | nie zatwierdza MR-a za człowieka |
| Kiedy woła człowieka | sesja czeka na decyzję albo wymaga interwencji | brak zatwierdzenia, konflikt nie do rozwiązania |
Dyspozytor daje każdemu wolnemu ticketowi sesję w tle i własny worktree, a w sesji uruchamia /monolynx:work. Co dzieje się w środku takiej sesji, opisuje wpis Jak działa /monolynx:work, a sam dyspozytor ma swój: Jak działa /monolynx:sprint-run.
Kolejka bierze pierwszy niezmergowany MR i wykonuje jedną akcję w stałej kolejności: konflikt, czerwone CI, zatwierdzenie, merge. Pełny opis znajdziesz we wpisie Jak działa /monolynx:mr-queue.
Co w tym czasie robi człowiek?
Pętle nie zastępują Twoich decyzji, tylko zbierają je w kilku miejscach.
| Krok | Automat | Człowiek |
|---|---|---|
| Start sesji dla ticketu | tak | nie |
| Kod, testy, review w sesji | tak | nie |
| Rozwiązanie konfliktu: wciągnięcie brancha sprintu do brancha ticketu | tak | gdy konfliktu nie da się rozwiązać |
| Poprawka czerwonego CI | tak, najwyżej dwie rundy | po dwóch nieudanych rundach |
| Zatwierdzenie MR-a | nie | zawsze |
| Odpowiedź sesji, która zadała pytanie | nie | zawsze |
Merge do develop i main |
nie | zawsze |
Trzy sygnały wymagają Twojej reakcji: werdykt waiting w statusie dyspozytora (sesja zadała pytanie), werdykt needs_human (sesja skończyła się bez wyniku) i werdykt needs_approval w kolejce (MR czeka na zatwierdzenie).
Zatwierdzenie merge requesta to decyzja człowieka. Żadna flaga jej nie wyłącza.
Etap 4: merge do develop i main
Pętle kończą pracę, gdy obie linie statusu pokazują zero: remaining=0 running=0 w dyspozytorze i remaining=0 w kolejce. Wtedy cały sprint leży na branchu sprintu i zaczyna się część, której Monolynx celowo nie automatyzuje.
- Sprawdź tablicę
Wszystkie tickety sprintu mają status
done, w panelu Gotowe. Nie myl go z licznikiemdone=w linii statusu dyspozytora: ten liczy też tickety, które dopiero czekają w review. Ticket, który został w innym statusie, wróci do backlogu przy zamknięciu sprintu. - Zmerguj branch sprintu do develop
Otwórz merge request z brancha sprintu i poczekaj na zielone CI. Ten krok znika, gdy branchem sprintu był od początku
develop. Projekt bez branchadevelopteż go pomija i w następnym kroku merguje branch sprintu wprost domain. - Zmerguj develop do main
Drugi merge request, zielone CI brancha
main, wdrożenie według zasad Twojego projektu. - Zatrzymaj pętle
Obie sesje z
/loopmożna zamknąć. Kolejny tick nie miałby nic do zrobienia. Przełącz główny checkout z powrotem namain, wykonajgit pulli zdejmijMONOLYNX_MR_TARGET, bo wskazuje branch skończonego sprintu.
Etap 5: zamknięcie sprintu
Sprint zamyka jedna komenda: /monolynx:sprint-end. Bez argumentu bierze aktywny sprint i wykonuje dwa kroki: najpierw wiedza, potem zamknięcie.
- INGEST
Skill
wiki-ingestczyta strony "Pipeline logi" sprintu, czyli raporty agentów z pracy nad ticketami, i przenosi wiedzę na strony wiki. - LINT
Skill
wiki-lintszuka sierot, martwych linków i sprzeczności w wiki. - Czyszczenie logów
Strony logów są usuwane, ale tylko po udanym INGEST. Po nieudanym zostają, bo są jedynym źródłem wiedzy ze sprintu.
- Kroki opcjonalne
Pełny przebieg mutacyjny z trendem, retrospektywa
retroi numer wydania pluginu, każdy tylko wtedy, gdy projekt go używa. - Zamknięcie
Po Twoim potwierdzeniu skill wywołuje
complete_sprinti wypisuje podsumowanie sprintu.
Pełny opis zamknięcia znajdziesz we wpisie Jak działa /monolynx:sprint-end.
Kolejność jest jedna: najpierw merge brancha sprintu do gałęzi głównej, potem sprint-end. Komendę uruchamiasz z gałęzi głównej po git pull; sama brancha nie sprawdza, więc pilnujesz tego Ty. Jedyny wyjątek opisuje ramka poniżej i dotyczy wyłącznie repozytoriów, które same wydają plugin Claude Code.
Wyjątek: projekt, który sam wydaje plugin Claude Code
Projekt, który wydaje własny plugin i zbiera wpisy changelogu pod nagłówkiem Unreleased, ma w sprint-end dodatkowy krok: nadanie numeru wydania na osobnym branchu release/plugin-X.Y.Z, z merge requestem do brancha docelowego. W takim projekcie numer nadaje się na branchu sprintu, zanim ten trafi do main, więc sprint-end uruchamiasz przed ostatnim merge. W projekcie bez pluginu krok jest pomijany i kolejność z tego wpisu zostaje bez zmian.
Czy po drodze trzeba uruchomić wiki-sync-merge?
Nie, w sprincie zamykanym przez sprint-end osobny /monolynx:wiki-sync-merge nie jest potrzebny. Oba skille robią to samo dla wiki, czyli INGEST wiedzy z wykonanej pracy, tylko dla innej porcji pracy i w innym momencie.
| Cecha | wiki-sync-merge |
sprint-end |
|---|---|---|
| Zakres | ticket albo lista ticketów podana w argumencie | cały aktywny sprint |
| Kiedy | po merge ticketu do brancha integracyjnego | po zakończeniu pracy nad sprintem |
| Źródło wiedzy | kontekst wskazanych ticketów | logi pipeline'ów całego sprintu |
| Audyt wiki | nie | tak, wiki-lint |
| Zamknięcie sprintu | nie | tak, complete_sprint |
| Pasuje do | pojedynczy ticket, hotfix, praca poza sprintem | sprint prowadzony pętlami |
Po wiki-sync-merge sięgasz w trzech sytuacjach: pracujesz ścieżką ręczną nad jednym ticketem, mergujesz hotfix poza sprintem, albo sprint trwa długo i chcesz, żeby wiedza z kluczowego ticketu była w wiki już teraz, bo kolejne tickety z niej korzystają.
Najczęstsze pytania
Czy obie pętle muszą działać jednocześnie?
Nie muszą, ale tak jest najszybciej. Sam sprint-run doprowadzi tickety do otwartych merge requestów, które będą czekać. Sam mr-queue zmerguje to, co już jest otwarte. Razem tworzą przepływ: ticket, sesja, MR, merge, kolejny ticket.
Czy branch źródłowy i docelowy mogą być różne?
Nie w sprincie. Obie zmienne nazywają jeden branch, a dwie różne wartości zatrzymują obie pętle w kontroli wstępnej. Ustaw samą MONOLYNX_MR_TARGET na branch sprintu.
Ile ticketów idzie równolegle?
Liczbę równoległych sesji podajesz jako argument, na przykład /monolynx:sprint-run 3. Tickety z migracją bazy idą pojedynczo, a ticket z niezamkniętym blokerem czeka.
Co zrobić, gdy sesja ticketu czeka na odpowiedź?
Wejdź do sesji wskazanej w raporcie dyspozytora i odpowiedz. Dyspozytor nie rusza sesji w stanie waiting, a przy zbyt wielu czekających przestaje startować nowe.
Czy mogę zamknąć sprint, gdy część ticketów nie jest gotowa?
Tak. sprint-end ostrzeże, że niedokończone tickety wrócą do backlogu, i poczeka na potwierdzenie. Wiedza z ukończonych ticketów trafi do wiki normalnie.
Co, jeśli projekt nie ma włączonej metody LLM Wiki?
Pętle działają bez niej. Kroki wiki w sprint-end nie mają wtedy czego zapisać, a wiki-sync-merge kończy się informacją, że metoda jest wyłączona. Włączasz ją komendą /monolynx:wiki-init.
Słownik i następny krok
- Tick
- jedno wykonanie skilla w pętli: odczyt stanu, jeden krok, linia statusu
- Branch sprintu
- branch integracyjny, który jest jednocześnie źródłem i celem ticketów sprintu
- Branch źródłowy
- branch, z którego startuje sesja ticketu, wskazany w
MONOLYNX_BASE_BRANCH - Branch docelowy
- branch, do którego trafiają merge requesty ticketów, wskazany w
MONOLYNX_MR_TARGET - Worktree
- osobny katalog roboczy gita, w którym sesja ticketu pracuje bez kolizji z innymi
- INGEST
- operacja metody LLM Wiki, która przenosi wiedzę ze źródła na strony wiki
- Dyspozytor
- skill
sprint-run, który startuje i zbiera sesje, ale sam nie pracuje nad ticketem
Każdy skill z tego przewodnika ma własny wpis: ticket-create, ticket-review, work, sprint-run, mr-queue, sprint-end i skille LLM Wiki.
Przed pierwszym sprintem przydadzą się wpisy Jak połączyć agenta AI z Monolynx, Pierwszy projekt w Monolynx i Sprint w panelu Monolynx. W trakcie sprintu pomagają Sesje w tle, Konfiguracja: która zmienna w którym pliku i Gdy coś nie działa w Monolynx. Wszystkie komendy zbiera Mapa pluginu Monolynx.
Chcesz przeprowadzić pierwszy sprint z agentami na własnym projekcie?
Zobacz moduł Scrum w Monolynx