Po co osobny skill do pisania ticketów?
Ticket napisany dla człowieka zwykle nie wystarcza agentowi AI. Człowiek dopyta kolegę, w którym pliku jest logika i czego lepiej nie dotykać. Agent tego nie zrobi: weźmie to, co jest w opisie, i resztę zgadnie.
Skill ticket-create z pluginu Monolynx dla Claude Code pisze ticket tak, żeby agent mógł go podjąć i zrealizować bez dodatkowych pytań. Argumentem jest krótki opis zadania, jedno albo dwa zdania.
$ claude
> /monolynx:ticket-create Wiki: eksport strony do PDFBez argumentu skill prosi o opis i czeka. Nie zaczyna zbierać kontekstu, dopóki nie wie, czego dotyczy zadanie.
Ticket musi być zrozumiały dla agenta AI: agent musi móc go podjąć i zrealizować bez dodatkowych pytań.
Osiem kroków od zdania do ticketu
Przebieg ma stałą kolejność, a dwa kroki są obowiązkowe bez wyjątku: zebranie kontekstu i akceptacja użytkownika.
- Narzędzia
Skill ustala projekt i kanał rozmowy z platformą: CLI albo MCP.
- Opis zadania
Argument wywołania jest punktem wyjścia. Gdy go brakuje, skill pyta o jedno lub dwa zdania.
- Kontekst
Cztery źródła naraz: wiki, graf zależności, kod oraz istniejące tickety, sprinty i etykiety.
- Duplikaty i zależności
Podobne tickety są dzielone na duplikaty, blokery i powiązane.
- Propozycja
Skill wyświetla gotowy ticket: tytuł, priorytet, story points, sprint, etykiety i opis w ośmiu sekcjach.
- Akceptacja
Trzy opcje: utwórz, zmień albo podziel na mniejsze. Opcjonalnie powstaje strona specyfikacji w wiki.
- Zapis
Jedno wywołanie tworzy ticket razem z kryteriami akceptacji i blokerami.
- Seria
Przy dużym zakresie skill proponuje serię ticketów w kolejności realizacji.
Opis zadania trafia równolegle do czterech źródeł kontekstu: wiki, grafu zależności, kodu i listy istniejących ticketów. Wyniki przechodzą przez kontrolę duplikatów, a potem skill pokazuje propozycję ticketu. Użytkownik akceptuje ją, prosi o zmianę albo o podział. Dopiero po akceptacji ticket jest zapisywany.
flowchart TD
A[Opis zadania] --> B[Wiki]
A --> C[Graf zależności]
A --> D[Kod]
A --> E[Tickety, sprinty, etykiety]
B --> F[Duplikaty i zależności]
C --> F
D --> F
E --> F
F --> G[Propozycja ticketu]
G -->|zmień| G
G -->|podziel| G
G -->|akceptuj| H[Zapis ticketu]Skąd skill bierze kontekst?
Kontekst pochodzi z czterech źródeł, które skill odpytuje równolegle. Każde odpowiada na inne pytanie, więc żadne nie zastępuje pozostałych.
| Źródło | Na co odpowiada | Trafia do sekcji |
|---|---|---|
| Wiki | co już ustalono i opisano | Kontekst, strona specyfikacji |
| Graf zależności | co jest powiązane z tym kodem | Zakres, Zależności, Nie ruszać |
| Kod | co istnieje, a czego brakuje | Zakres, Pliki dotykane |
| Tickety, sprinty, etykiety | czy ktoś już to robi | Zależności, sprint, etykiety |
Kod czyta osobny agent, który ma tylko odczyt. Jego raport ma stały układ: istniejący kod ze ścieżką i linią, brakujące elementy, zależności, pliki do zmiany i szacowany zakres. Z tego zakresu powstają potem story points.
Co zawiera opis ticketu?
Opis ma osiem sekcji w stałej kolejności. Pierwsze trzy znasz z każdego dobrego ticketu, pięć kolejnych jest napisanych z myślą o agencie.
| Sekcja | Co zawiera | Kto z niej korzysta |
|---|---|---|
| Cel | co ma być zrobione, w 1-3 zdaniach | każdy czytelnik |
| Kontekst | dlaczego zadanie istnieje | każdy czytelnik |
| Zakres | obszary zmian z nazwami plików i endpointów | agent realizujący |
| Pliki dotykane | ścieżki zmienianych i nowych plików | przegląd sprintu |
| Nie ruszać | pliki i zachowania poza zakresem, z powodem | agent realizujący |
| Odwracalność | operacje, których nie cofnie revert | kontrakt autonomii |
| Zależności | blokery i tickety powiązane | dyspozytor sprintu |
| Kryteria akceptacji | weryfikowalne warunki ukończenia | krytyk i człowiek |
Przykład pokazuje, jak wygląda fragment gotowego opisu:
## Pliki dotykane
- `src/monolynx/services/wiki.py`
- `src/monolynx/dashboard/wiki.py`
- `tests/integration/test_wiki_export.py`
## Nie ruszać
- `services/reports.py` - eksport raportów ma własny szablon PDF
- format odpowiedzi `/api/v2/.../wiki/pages` - konsumuje go CLI
## Odwracalność
- Odwracalne: cały kod
- Nieodwracalne / wymaga zgody przed wykonaniem: brakPełny szkielet opisu ticketu
## Cel
[1-3 zdania: co ma być zrobione]
## Kontekst
[1-3 zdania: dlaczego to zadanie istnieje]
## Zakres
### 1. [Pierwszy obszar zmian]
- [konkretna zmiana, z plikiem lub modułem]
## Pliki dotykane
- `[ścieżka/względem/repo/plik.py]`
## Nie ruszać
- [plik, moduł albo zachowanie, z powodem]
## Odwracalność
- Odwracalne: [co cofnie zwykły revert]
- Nieodwracalne / wymaga zgody przed wykonaniem: [albo brak]
## Zależności
- Bloker: [KEY] [tytuł] (status) - [dlaczego blokuje start]
## Kryteria akceptacji
- [ ] [warunek konkretny i weryfikowalny]
Trzy sekcje, których nie ma w zwykłym tickecie
Sekcje "Pliki dotykane", "Nie ruszać" i "Odwracalność" czytają inne skille pluginu, więc mają sztywne zasady.
Pliki dotykane
Lista ścieżek ma format, który czyta skrypt: jedna ścieżka względem repozytorium na linię, w odwrotnych apostrofach, bez opisu i bez wzorców z gwiazdką. Nowe pliki i testy też się liczą. Na tej liście przegląd sprintu wykrywa tickety, które zmieniają te same pliki i nie powinny iść równolegle.
Nie ruszać
Granica zadania jest częścią zadania, a nie domysłem. Skill wpisuje tu sąsiedztwo z grafu, które kusi, ale nie jest potrzebne, pliki z ticketów będących w toku oraz publiczne kontrakty, takie jak format odpowiedzi API. Każda pozycja ma powód.
Odwracalność
Sekcja wymienia operacje, których nie cofnie git revert: migrację z danymi, wysyłkę maila albo webhooka, publikację pakietu, zmianę publicznego API i kasowanie danych. Z tej listy skill work buduje kontrakt autonomii, czyli spis rzeczy, przed którymi agent ma się zatrzymać i zapytać. Zadanie bez takich operacji dostaje wpis "brak", napisany wprost.
Ile story points dostaje ticket?
Story points wynikają z liczby plików, którą oszacował agent czytający kod. Skill nie zgaduje ich z tytułu.
Wynik ma znaczenie dla dalszej pracy. Tickety do 3 story points nadają się do skilla work-simple, większe prowadzi pełny work, opisany we wpisie jak działa /monolynx:work.
Duplikaty, blokery i tickety powiązane
Podobne tickety, które skill znalazł w projekcie, trafiają do jednej z trzech grup. Od grupy zależy, co skill z nimi zrobi.
| Grupa | Znaczenie | Co robi skill |
|---|---|---|
| Duplikat | ticket o tym samym celu | zatrzymuje się i pyta, czy mimo to tworzyć nowy |
| Bloker | musi być zakończony przed startem | zapisuje relację blokady |
| Powiązany | ten sam moduł albo temat | wymienia tylko w opisie |
Bloker jest zapisywany strukturalnie, jako relacja między ticketami, a nie w komentarzu1. Ma to skutek praktyczny: skille work i work-simple oraz dyspozytor sprintu nie zaczną ticketu, dopóki jego bloker nie ma statusu done.
Akceptacja i zapis
Skill nigdy nie tworzy ticketu bez akceptacji. Po wyświetleniu propozycji masz trzy opcje: zaakceptować, wskazać zmiany albo poprosić o podział. Po zmianach skill pokazuje ticket ponownie i pyta jeszcze raz.
Po akceptacji pada jedno opcjonalne pytanie: czy utworzyć w wiki stronę specyfikacji powiązaną z ticketem. Domyślna odpowiedź to "nie".
Ticket powstaje jednym wywołaniem, razem z kryteriami akceptacji jako osobnymi polami do odhaczenia. Na końcu skill podaje oba identyfikatory:
Utworzono ticket MON-273 - Wiki: eksport strony do PDF
ID: 5d0c2f7e-1a34-4b8e-9c61-2f7a8e0b4d19
Blokowany przez: MON-268Najczęstsze pytania
Pytania poniżej dotyczą sytuacji, które zdarzają się przy pierwszych ticketach pisanych skillem.
Czy skill utworzy ticket bez mojej zgody?
Nie. Akceptacja jest obowiązkowym krokiem. Skill wyświetla propozycję i czeka na odpowiedź.
Co, jeśli projekt nie ma grafu zależności ani wiki?
Skill pomija niedostępny graf i opiera się na analizie kodu. Pusta wiki nie przeszkadza: wyszukiwanie zwraca po prostu brak wyników, a kontekst pochodzi z kodu i ticketów.
Czy mogę poprawić propozycję przed zapisem?
Tak. Wskazujesz, co zmienić, a skill poprawia ticket, pokazuje go ponownie i pyta jeszcze raz.
Czy kryteria akceptacji trzeba dodawać osobno?
Nie. Kryteria z opisu są tworzone razem z ticketem jako osobne pola do odhaczenia, w jednym wywołaniu.
Po co lista plików, skoro agent i tak czyta kod?
Lista nie jest dla agenta, który realizuje ticket, tylko dla przeglądu sprintu. Porównanie list z kilku ticketów pokazuje, które zmieniają te same pliki i wymagają ustalenia kolejności.
Słownik i następny krok
Pojęcia z tego wpisu, w jednym miejscu:
- Story points
- umowna miara wielkości zadania, tu liczona z liczby zmienianych plików
- Kryterium akceptacji
- warunek, o którym da się jednoznacznie powiedzieć, czy jest spełniony
- Bloker
- ticket, który musi mieć status done, zanim zacznie się praca nad innym ticketem
- Strona specyfikacji
- strona wiki z decyzjami projektowymi powiązana z ticketem
- Graf zależności
- mapa plików, klas i funkcji projektu oraz powiązań między nimi
- Kontrakt autonomii
- spis tego, co agent robi sam, i tego, przed czym się zatrzymuje
Gotowy ticket warto sprawdzić skillem /monolynx:ticket-review, a potem podjąć skillem /monolynx:work.
Tickety utworzone skillem trafiają do backlogu i sprintów w module Scrum. Zobacz tablicę, na której lądują.
Poznaj moduł Scrum w Monolynx- Relację blokady zapisuje parametr
blocked_by_ids, który przyjmuje identyfikatory UUID ticketów z tego samego projektu. ↩