Co robi jedna komenda?
Skill work z pluginu Monolynx dla Claude Code bierze jeden ticket ze sprintu i prowadzi go do stanu, w którym człowiek może zrobić review. Argumentem jest identyfikator albo klucz ticketu. Bez argumentu skill pokazuje tickety z kolumn todo i in_progress i pyta, który podjąć.
$ claude
> /monolynx:work MON-123Sesja, w której wpisujesz komendę, staje się koordynatorem. Koordynator czyta ticket, sprawdza branch, zleca analizę, dobiera zespół, pilnuje lintu i testów, a na końcu oddaje pracę krytykowi. Sam nie implementuje.
Obieg pracy w jednym zdaniu: ticket trafia do agenta, agent otwiera zmianę, a wynik trafia do wiki.
Stan końcowy to ticket w statusie in_review, z komentarzami każdego agenta, zalogowanym czasem pracy i, zależnie od flag, z commitem, pushem i merge requestem. Status done nie należy do tego skilla1.
Siedem kroków od ticketu do in_review
Przebieg ma stałą kolejność i każdy krok zostawia ślad na tickecie. Dzięki temu pracę da się wznowić po przerwaniu sesji: skill znajduje komentarz z planem i pyta, czy kontynuować, czy zacząć od zera.
- Ticket i narzędzia
Skill ustala projekt, wybiera kanał rozmowy z platformą (CLI albo MCP) i pobiera ticket. Niezamknięty bloker zatrzymuje pracę już tutaj.
- Branch
Skill ustala branch bazowy i odmawia pracy bezpośrednio na nim. Gdy nazwa bieżącego brancha nie zawiera numeru ticketu, proponuje utworzenie brancha
feature-<numer>-<opis>z aktualnego brancha bazowego i podaje gotową komendę. Branch, który jest za bazą i nie ma własnych commitów, przewija sam przez fast-forward. - Researcher
Osobny agent czyta kod, wiki i graf zależności, a potem pisze raport. Jego czas trafia na ticket.
- Start
Ticket przechodzi do
in_progressi zostaje przypisany do Ciebie. - Plan
Koordynator dobiera agentów, rozdziela pliki, spisuje kontrakt autonomii i zapisuje plan w komentarzu.
- Zespół, testy, krytyk
Agenci piszą kod, potem idą lint i testy, a na końcu krytyk wystawia ocenę.
- Zamknięcie
Komentarze, czas pracy, commit i merge request według flag, status
in_review.
Ticket przechodzi przez walidację brancha, analizę Researchera i plan koordynatora. Potem zespół agentów pisze kod, a lint i testy sprawdzają wynik. Krytyk wystawia ocenę: wynik poniżej 82 punktów wraca do zespołu, wynik od 82 w górę kończy się statusem in_review.
flowchart TD
A[Ticket] --> B[Walidacja brancha]
B --> C[Researcher]
C --> D[Plan i przydział plików]
D --> E[Zespół agentów]
E --> F[Lint i testy]
F -->|czerwone| E
F -->|zielone| G[Krytyk]
G -->|poniżej 82| E
G -->|82 lub więcej| H[Komentarze i czas pracy]
H --> I[Commit i MR według flag]
I --> J[in_review]Kto pracuje nad ticketem?
Zespół składa się z czterech ról, a każda ma jawnie podany model. Subagent bez wskazanego modelu dziedziczy model sesji, która go powołała, więc bez tej reguły cały ticket szedłby na najdroższym modelu.
| Rola | Model | Co robi | Czego nie robi |
|---|---|---|---|
| Koordynator | model sesji | planuje, rozdziela pliki, decyduje | nie implementuje |
| Researcher | sonnet | czyta kod, wiki i graf, pisze raport | niczego nie zmienia |
| Developer | z definicji agenta, domyślnie sonnet | pisze kod i testy w swoich plikach | nie robi commitów, nie wychodzi poza przydział |
| Krytyk | opus | ocenia według rubryki | nie pisze kodu, nie odpala testów |
Agentów koordynator szuka najpierw w projekcie, w katalogu .claude/agents/. Agenci z pluginu są zapasem: backend-developer, frontend-developer, database-specialist, devops-infra, qa-tester, code-reviewer i technical-writer. Skill wybiera najmniejszy zestaw, który pokrywa ticket, a przydział plików jest imienny, bez wzorców z gwiazdką.
Dwie reguły porządkują pracę równoległą. Agent testowy przy podejściu TDD startuje pierwszy i sam. Agenci, którzy dotykają tych samych plików, pracują po kolei.
Krytyk to zawsze osobne powołanie, nigdy ten sam agent, który pisał oceniany kod.
Jak krytyk ocenia pracę?
Krytyk zaczyna od 100 punktów i odejmuje je za naruszenia z zamkniętej listy. Każde odjęcie musi wskazać plik i linię albo źródło, więc ocena nie jest wrażeniem. Próg wynosi 82: wynik 85 zalicza, wynik 80 nie.
Werdykt ma dwie wartości: APPROVED albo NEEDS WORK. Przy NEEDS WORK krytyk dopisuje jedno zdanie reguły, a koordynator zapisuje je w pamięci danej roli. Reguła, która wraca drugi raz, trafia na listę do retrospektywy sprintu.
Pełna rubryka krytyka
| Naruszenie | Odjęcie |
|---|---|
Zapis do bazy bez db.commit() |
-30 |
Naruszenie reguły z .claude/rules/ |
-25 za regułę |
| Brak testu dla nowego kodu (gdy projekt ma testy) | -20 |
| Test przechodzi na mutancie chronionego kodu | -20 |
| Kryterium akceptacji niezrealizowane | -15 za kryterium |
| Brak obsługi błędu na granicy systemu | -10 |
| Zmiana pliku poza przydziałem | -10 za plik |
| Naruszenie warunków zatrzymania z kontraktu | -10 |
| Over-engineering | -10 |
| Niezgodność z konwencją sąsiedniego pliku | -5 |
| Komentarz opisujący, co robi kod | -5 |
W trybie naprawy defektu dochodzą trzy wiersze: fix bez nazwanego mechanizmu błędu (-20), brak testu regresyjnego (-20) i niesprawdzona klasa błędu (-5). Jedna wada jest liczona raz, według najwyższego odjęcia, a ocena całego ticketu to najniższa z ocen agentów.
Lint i testy przed review
Komendy lintu i testów pochodzą ze strony wiki toolchain, którą konfigurujesz raz na projekt skillem /monolynx:project-toolchain. Skill niczego nie zgaduje po plikach w repozytorium. Gdy strony nie ma, pyta, czy kontynuować bez lintu i testów.
Praca w git worktree ma własny wariant komend. Polecenie docker compose exec wchodzi do kontenera, który widzi główny checkout, więc testowałoby inne drzewo plików niż to, w którym agent pisał kod.
Testy z kilku worktree naraz potrafią sobie przeszkadzać, dlatego każda komenda testów idzie przez kolejkę:
python3 scripts/test_lock.py --timeout 3600 -- <komenda testów>$ python3 scripts/test_lock.py -- <komenda testów>
TEST-LOCK: waiting holder=48213/MON-270
TEST-LOCK: acquiredBlokada jest jedna na repozytorium, wspólna dla głównego checkoutu i wszystkich worktree. Upłynięcie czasu oczekiwania kończy się kodem 75 i nie liczy się jako czerwone testy, więc nie zużywa limitu poprawek.
Commit, push i MR są wyłączone, dopóki ich nie włączysz
Skill domyślnie nie commituje, nie pushuje i nie zakłada merge requesta. Zamiast tego wypisuje gotowe komendy, a Ty uruchamiasz je sam. Każdy poziom automatyzacji ma osobną flagę.
| Flaga | Wartość false (domyślna) | Wartość true |
|---|---|---|
MONOLYNX_AUTOTEST |
skill wypisuje komendy i czeka na wklejony wynik | skill sam uruchamia lint i testy |
MONOLYNX_AUTOCOMMIT |
skill wypisuje komendę commita | commit po zielonych testach i ocenie od 82 |
MONOLYNX_AUTOPUSH |
skill nigdy nie pushuje | push po faktycznym commicie |
MONOLYNX_AUTOMR |
merge request nie powstaje | merge request po faktycznym pushu |
Flagi ustawiasz w pliku ustawień projektu albo w środowisku procesu:
{
"env": {
"MONOLYNX_AUTOTEST": "true",
"MONOLYNX_AUTOCOMMIT": "true",
"MONOLYNX_AUTOPUSH": "true",
"MONOLYNX_AUTOMR": "true"
}
}Bez dodatkowych ustawień merge request idzie do domyślnego brancha repozytorium. W sprincie cel wskazuje zmienna MONOLYNX_MR_TARGET ustawiona na branch sprintu w środowisku dyspozytora, a nie w tym pliku. Zasady opisuje wpis Konfiguracja: która zmienna w którym pliku.
Automatyczny commit ma dodatkowy bezpiecznik. Gdy każesz zamknąć ticket mimo czerwonych testów albo oceny poniżej progu, skill zapisuje to w komentarzu i zamiast commita podaje komendę.
Co zostaje na tickecie po pracy?
Każdy etap zostawia komentarz, więc historię ticketu da się przeczytać bez otwierania sesji. Koordynator pisze plan przed pracą i podsumowanie po niej, a w imieniu każdego agenta dodaje komentarz z wynikiem i loguje jego czas.
Pola komentarza z planem pracy
- Tryb (zwykły albo naprawa defektu)
- Streszczenie raportu Researchera
- Dobrani agenci i ich pliki
- Kontrakt autonomii: co agent robi sam, przed czym się zatrzymuje
- Baseline, czyli commit, od którego liczony jest diff
- Tryb pełnego przebiegu testów
- Zależności, które nie są jeszcze zmergowane
- Identyfikator pipeline'u
- Plan realizacji
Równolegle przebieg trafia do modułu Pipelines jako pipeline typu ticket_work z trzema etapami: research, coding i wrap-up. Każdy agent ma tam swój job z logiem i oceną krytyka. Raportowanie do Pipelines nie jest bramką: błąd zapisu nigdy nie przerywa pracy nad ticketem.
Sesja w tle
Zmienna MONOLYNX_SPRINT_RUN=1 mówi skillowi, że nikt nie odpowie na pytanie. Tak startuje sesje dyspozytor /monolynx:sprint-run, który przerabia sprint wieloma sesjami w osobnych worktree.
W tym trybie kontrakt autonomii jest przyjmowany automatycznie, a każde miejsce, w którym skill zwykle czeka na człowieka, kończy turę. Na tickecie zostaje komentarz z powodem, etapem i warunkiem odblokowania, a ostatnia linia sesji ma stały format:
SPRINT-RUN STOP: czeka na merge MON-122work czy work-simple?
Plugin ma dwa skille do pracy nad ticketem. Różnią się wielkością zespołu, a nie rygorem: komentarze, czas pracy, lint, testy i krytyk są w obu.
| Cecha | work | work-simple |
|---|---|---|
| Rozmiar ticketu | powyżej 3 story points | do 3 story points |
| Zespół | Researcher, kilku agentów, krytyk | jeden developer i krytyk |
| Research | obowiązkowy | na życzenie |
| Praca równoległa | tak | nie |
Skill work-simple sam proponuje przejście na work, gdy zakres ticketu rozrasta się w trakcie pracy.
Najczęstsze pytania
Pytania poniżej wracają najczęściej u osób, które uruchamiają skill pierwszy raz.
Czy skill sam zmerguje mój kod?
Nie. Skill kończy na statusie in_review i, przy włączonej fladze, na otwartym merge requeście. Merge to osobny krok: robi go człowiek albo kolejka /monolynx:mr-queue.
Co się stanie, gdy przerwę sesję w połowie?
Stan zostaje na tickecie. Przy następnym uruchomieniu skill znajduje komentarz z planem pracy i pyta, czy wznowić, czy zacząć od zera. Wznowienie pomija analizę Researchera.
Czy muszę mieć agentów zdefiniowanych w projekcie?
Nie. Agenci z katalogu .claude/agents/ mają pierwszeństwo, a gdy ich nie ma, skill używa siedmiu agentów dostarczanych z pluginem.
Czy krytyk może poprawić kod, który ocenia?
Nie. Krytyk tylko ocenia. Poprawkę robi developer, który dostaje pełny pierwotny prompt, uwagi z plikiem i linią oraz dosłowny diff.
Co, jeśli projekt nie ma testów?
Skill pyta, czy kontynuować bez lintu i testów. Wiersz rubryki o braku testu dla nowego kodu obowiązuje tylko w projekcie, który testy ma.
Słownik i pierwszy krok
Pojęcia z tego wpisu, w jednym miejscu:
- Koordynator
- sesja, która prowadzi zespół agentów nad jednym ticketem; w treści skilla nazywa się Team Manager
- Researcher
- agent tylko do odczytu, który przed pracą analizuje kod, wiki i graf zależności
- Krytyk
- osobny agent oceniający pracę według rubryki punktowej
- Kontrakt autonomii
- spis tego, co agent robi sam, i tego, przed czym się zatrzymuje
- Strona toolchain
- strona wiki projektu z komendami lintu i testów
- Worktree
- osobny katalog roboczy tego samego repozytorium git, jeden na ticket
Plugin instalujesz w Claude Code dwiema komendami:
/plugin marketplace add https://gitlab.com/piotrkrych/monolynx.git
/plugin install monolynx@monolynxPołączenie z platformą, także poza Claude Code, opisuje wpis Jak połączyć agenta AI z Monolynx.
Całą drogę jednego ticketu bez sprintu i bez flag pokazuje wpis Pierwszy ticket ręcznie: od brancha do merge. Statusy, które komenda ustawia po drodze, opisuje wpis Statusy ticketu w Monolynx.
Skill bierze tickety ze sprintu w module Scrum. Zobacz, jak wygląda tablica, z której agent pobiera pracę.
Poznaj moduł Scrum w Monolynx- Status
doneustawia kolejka/monolynx:mr-queuepo zmergowaniu merge requesta. Po merge do brancha sprintu robi to od razu, na podstawie zielonego CI samego merge requesta. Po merge do domyślnego brancha repozytorium czeka jeszcze na zielone CI tego brancha. Bez kolejki status ustawia osoba, która merguje. ↩