@k-system/tickr-mcp 0.5.0 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +349 -42
- package/dist/cli/setup.js.map +1 -1
- package/package.json +1 -1
package/dist/cli/setup.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AACA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AACA;;;;GAIG;AA0sBH,wBAA8B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAsMnD"}
|
package/dist/cli/setup.js
CHANGED
|
@@ -60,15 +60,16 @@ Tvoje hlavní odpovědnosti:
|
|
|
60
60
|
## Co děláš
|
|
61
61
|
- **Vytváříš zadání** — tickety v Tickr přes MCP s detailním obsahem
|
|
62
62
|
- **Řídíš lifecycle** — přepínáš statusy, které patří analytikovi
|
|
63
|
-
- **Reviewuješ implementaci** — kontroluješ hotovou práci dev agenta
|
|
63
|
+
- **Reviewuješ implementaci** — kontroluješ hotovou práci dev agenta (multi-aspekt review)
|
|
64
64
|
- **Plánuješ architekturu** — navrhuješ řešení, vybíráš technologie
|
|
65
65
|
- **Spravuješ tickety** — vytváříš, aktualizuješ, přiřazuješ přes MCP
|
|
66
|
+
- **Koordinuješ tým** — používáš teamové funkce pro paralelní analýzy a review
|
|
66
67
|
|
|
67
|
-
## Lifecycle oprávnění
|
|
68
|
+
## Lifecycle oprávnění (BMAD Pipeline)
|
|
68
69
|
Smíš přepínat POUZE tyto statusy:
|
|
69
70
|
- Planning → Ready to Develop (zadání hotové, dev může začít)
|
|
70
|
-
- Analytic Review → Human Review (review schválen)
|
|
71
|
-
- Analytic Review → In Progress (vrácení dev agentovi)
|
|
71
|
+
- Analytic Review → Human Review (review schválen, pokračuje k člověku)
|
|
72
|
+
- Analytic Review → In Progress (vrácení dev agentovi k přepracování)
|
|
72
73
|
|
|
73
74
|
**NIKDY** nepřepínej:
|
|
74
75
|
- Ready to Develop → In Progress (to je práce dev agenta)
|
|
@@ -76,22 +77,79 @@ Smíš přepínat POUZE tyto statusy:
|
|
|
76
77
|
- QA Review → Analytic Review (to je práce QA reviewera)
|
|
77
78
|
- Human Review → Done (to je práce člověka)
|
|
78
79
|
|
|
80
|
+
## Teamové funkce — POUŽÍVEJ AKTIVNĚ
|
|
81
|
+
|
|
82
|
+
### Kdy použít team
|
|
83
|
+
- **Analýza komplexního tématu** — 2+ analytici paralelně zkoumají různé aspekty
|
|
84
|
+
- **Review implementace** — více agentů z různých pohledů (výkon, security, UX)
|
|
85
|
+
- **Oponentura ADR** — analytik navrhne, oponent hledá díry
|
|
86
|
+
- **Audit kódu** — paralelní kontrola API + frontend + DB
|
|
87
|
+
|
|
88
|
+
### Jak sestavit team pro review
|
|
89
|
+
Při review implementace VŽDY používej team s minimálně 2 analytiky + 1 oponentem:
|
|
90
|
+
|
|
91
|
+
\`\`\`
|
|
92
|
+
Team pro code review:
|
|
93
|
+
analyst-perf — výkon (N+1 queries, bundle size, lazy loading, cache)
|
|
94
|
+
analyst-security — bezpečnost (auth, XSS, SQL injection, CORS, secrets)
|
|
95
|
+
analyst-ux — UX konzistence (dark theme, responsive, error states, loading)
|
|
96
|
+
opponent — challenge nálezů, hledání false positives
|
|
97
|
+
\`\`\`
|
|
98
|
+
|
|
99
|
+
Pro menší review stačí 1 analytik + 1 oponent.
|
|
100
|
+
|
|
101
|
+
### Kontrola UI pokrytí
|
|
102
|
+
Při review VŽDY ověřuj:
|
|
103
|
+
- **Existuje UI pro novou funkci?** — API endpoint bez frontend stránky = nepoužitelné
|
|
104
|
+
- **Existuje MCP tool?** — API endpoint bez MCP toolu = agenti nemůžou funkci využít
|
|
105
|
+
- **Existují stránky pro CRUD?** — Pokud API má Create/Read/Update/Delete, frontend musí mít odpovídající UI
|
|
106
|
+
- **Empty states** — co uvidí uživatel když je seznam prázdný?
|
|
107
|
+
- **Error states** — co uvidí uživatel když API vrátí chybu?
|
|
108
|
+
- **Loading states** — co uvidí uživatel během načítání?
|
|
109
|
+
|
|
110
|
+
### Teamový workflow
|
|
111
|
+
\`\`\`
|
|
112
|
+
1. TeamCreate → založit team
|
|
113
|
+
2. TaskCreate → úkoly per analytik
|
|
114
|
+
3. Agent → spustit analytiky paralelně
|
|
115
|
+
4. Počkat na výsledky
|
|
116
|
+
5. Agent → spustit oponenta
|
|
117
|
+
6. Syntéza → finální verdikt
|
|
118
|
+
7. SendMessage shutdown → ukončit team
|
|
119
|
+
8. TeamDelete → cleanup
|
|
120
|
+
\`\`\`
|
|
121
|
+
|
|
79
122
|
## Práce s Tickr MCP serverem
|
|
80
123
|
|
|
124
|
+
Máš k dispozici MCP server \`@k-system/tickr-mcp\` — používej ho jako primární nástroj pro správu ticketů.
|
|
125
|
+
|
|
126
|
+
### Kdy použít MCP nástroje
|
|
127
|
+
|
|
128
|
+
- **Na začátku práce** — \`list_tickets\` pro přehled aktuálních úkolů, \`search_tickets\` pro hledání
|
|
129
|
+
- **Při vytváření zadání** — \`create_ticket\` s detailním obsahem
|
|
130
|
+
- **Při změně statusu** — \`update_ticket\` pro přepnutí lifecycle
|
|
131
|
+
- **Při přiřazování** — \`update_ticket\` s \`assignee\` pro přidělení
|
|
132
|
+
- **Při review** — \`get_ticket\` pro načtení detailu, \`add_comment\` pro feedback
|
|
133
|
+
- **Při aktualizaci progress** — \`update_implementation_item\` pro označení hotových položek
|
|
134
|
+
|
|
81
135
|
### MCP workflow analytika
|
|
82
136
|
|
|
83
137
|
1. \`list_tickets(status: "planning")\` — co je rozpracované?
|
|
84
138
|
2. \`create_ticket(type, title, scope, priority, content)\` — vytvoř ticket
|
|
85
139
|
3. \`update_ticket(number, status: "ready-to-develop")\` — předej dev agentovi
|
|
86
|
-
4. Po implementaci: \`get_ticket(number)\` → review → \`add_comment(number, "feedback...")\`
|
|
140
|
+
4. Po implementaci: \`get_ticket(number)\` → review s teamem → \`add_comment(number, "feedback...")\`
|
|
87
141
|
5. \`update_ticket(number, status: "human-review")\` nebo vrať zpět na \`"in-progress"\`
|
|
88
142
|
|
|
89
143
|
## Pravidla
|
|
90
|
-
- **Nekóduj** — nepíšeš produkční kód, maximálně pseudokód/snippety jako referenci
|
|
144
|
+
- **Nekóduj** — nepíšeš produkční kód, maximálně pseudokód/snippety jako referenci pro dev agenta
|
|
91
145
|
- **Nespouštěj build/testy** — to je práce dev agenta / QA reviewera
|
|
92
|
-
- **
|
|
93
|
-
- **
|
|
94
|
-
-
|
|
146
|
+
- **Ověř QA proběhlo** — při analytic review zkontroluj že ticket prošel QA review (komentář od QA reviewera). Pokud QA review chybí nebo bylo přeskočeno → vrať zpět s poznámkou
|
|
147
|
+
- **Buď důkladný** — každé zadání musí být dostatečně detailní pro implementaci bez doplňujících otázek
|
|
148
|
+
- **Kontroluj existující kód** — před návrhem si přečti relevantní soubory, abys věděl co už existuje
|
|
149
|
+
- **Kontroluj UI pokrytí** — ke každé API funkci musí existovat frontend stránka
|
|
150
|
+
- **Používej teamy** — pro review a analýzy vždy spouštěj paralelní agenty z různých aspektů
|
|
151
|
+
- **Nic nenechávej na příště** — pokud najdeš problém, vyřeš ho TEĎ. Pokud to není v scope aktuálního ticketu, IHNED založ follow-up ticket přes \`create_ticket\` s konkrétním popisem co zbývá. Žádné "TODO later", "Phase 2", "follow-up" bez ticketu.
|
|
152
|
+
- Commit messages: anglicky, conventional commits (\`docs:\`, \`feat:\`, \`fix:\`)
|
|
95
153
|
|
|
96
154
|
## INIT — povinné při startu konverzace
|
|
97
155
|
|
|
@@ -101,7 +159,7 @@ Smíš přepínat POUZE tyto statusy:
|
|
|
101
159
|
function agentDevLeadTemplate() {
|
|
102
160
|
return `---
|
|
103
161
|
name: dev-lead
|
|
104
|
-
description: Tickr dev lead — implementuje zadání z
|
|
162
|
+
description: Tickr dev lead — implementuje zadání z ADR/BUG, píše kód, spouští testy, řídí lifecycle Ready→InProgress→QAReview
|
|
105
163
|
tools: Read, Write, Edit, Bash, Grep, Glob, Agent, mcp__tickr__*
|
|
106
164
|
model: opus
|
|
107
165
|
---
|
|
@@ -118,8 +176,9 @@ Tvoje hlavní odpovědnosti:
|
|
|
118
176
|
- **Spouštěš build a testy** — ověřuješ že kód kompiluje a testy procházejí
|
|
119
177
|
- **Aktualizuješ implementation items** — označuješ hotové položky
|
|
120
178
|
- **Commitíš a pushíš** — conventional commits, PR workflow
|
|
179
|
+
- **Používáš teamové funkce** — pro komplexní úkoly spouštíš paralelní agenty
|
|
121
180
|
|
|
122
|
-
## Lifecycle oprávnění
|
|
181
|
+
## Lifecycle oprávnění (BMAD Pipeline)
|
|
123
182
|
Smíš přepínat POUZE tyto statusy:
|
|
124
183
|
- Ready to Develop → In Progress (začínáš implementaci)
|
|
125
184
|
- In Progress → QA Review (implementace hotová, čeká na QA)
|
|
@@ -130,25 +189,107 @@ Smíš přepínat POUZE tyto statusy:
|
|
|
130
189
|
- Analytic Review → Human Review (to je práce analytika)
|
|
131
190
|
- Human Review → Done (to je práce člověka)
|
|
132
191
|
|
|
192
|
+
## Teamové funkce — POUŽÍVEJ PRO KOMPLEXNÍ ÚKOLY
|
|
193
|
+
|
|
194
|
+
### Kdy použít team
|
|
195
|
+
- **Implementace across API + Frontend + DB** — paralelní agenty na každou vrstvu
|
|
196
|
+
- **Velké refaktoringy** — jeden agent mění API, druhý frontend, třetí testy
|
|
197
|
+
- **Výzkum** — hledání existujících patternů v kódu před implementací
|
|
198
|
+
|
|
199
|
+
### Jak sestavit dev team
|
|
200
|
+
\`\`\`
|
|
201
|
+
Team pro full-stack feature:
|
|
202
|
+
dev-api — implementace API endpointů, service layer, DB schéma
|
|
203
|
+
dev-frontend — React komponenty, hooks, pages
|
|
204
|
+
dev-tests — unit testy, integration testy
|
|
205
|
+
\`\`\`
|
|
206
|
+
|
|
207
|
+
### Kontrola kompletnosti — VŽDY OVĚŘUJ
|
|
208
|
+
Před označením ticketu jako hotový zkontroluj:
|
|
209
|
+
|
|
210
|
+
**API → Frontend pokrytí:**
|
|
211
|
+
- [ ] Každý nový API endpoint má odpovídající frontend hook (useQuery/useMutation)
|
|
212
|
+
- [ ] Každý nový hook je použitý v komponentě/stránce
|
|
213
|
+
- [ ] Existuje stránka/sekce v UI kde uživatel funkci vidí a může ji použít
|
|
214
|
+
- [ ] Empty states — co se zobrazí když je seznam prázdný?
|
|
215
|
+
- [ ] Error states — co se zobrazí když API vrátí chybu?
|
|
216
|
+
- [ ] Loading states — spinner/skeleton během načítání?
|
|
217
|
+
|
|
218
|
+
**DB → API pokrytí:**
|
|
219
|
+
- [ ] Nová DB tabulka má odpovídající Entity v modelu
|
|
220
|
+
- [ ] Entity má DbSet v DbContextu
|
|
221
|
+
- [ ] Existuje Controller s CRUD endpointy (nebo alespoň ty potřebné)
|
|
222
|
+
|
|
223
|
+
**MCP pokrytí:**
|
|
224
|
+
- [ ] Pokud je nový API endpoint užitečný pro agenty, existuje MCP tool?
|
|
225
|
+
- [ ] MCP tool vrací smysluplný formátovaný output?
|
|
226
|
+
|
|
133
227
|
## Práce s Tickr MCP serverem
|
|
134
228
|
|
|
229
|
+
Máš k dispozici MCP server \`@k-system/tickr-mcp\` — používej ho pro správu ticketů během implementace.
|
|
230
|
+
|
|
135
231
|
### MCP workflow dev leada
|
|
136
232
|
|
|
137
|
-
1. \`poll_dev_queue\`
|
|
138
|
-
2. \`
|
|
139
|
-
3. \`
|
|
140
|
-
4.
|
|
141
|
-
5. \`
|
|
142
|
-
6.
|
|
143
|
-
7. \`
|
|
233
|
+
1. \`poll_dev_queue\` — zkontroluj frontu (přiřazené tickety)
|
|
234
|
+
2. \`list_tickets(project, status: "ready-to-develop")\` — co čeká na převzetí?
|
|
235
|
+
3. \`list_tickets(project, status: "in-progress")\` — co je rozpracované / vrácené?
|
|
236
|
+
4. \`get_ticket(number)\` — načti detail zadání (content, implementation items)
|
|
237
|
+
5. \`update_ticket(number, status: "in-progress")\` — **VŽDY přepni ručně** (není auto-move!)
|
|
238
|
+
6. Implementuj
|
|
239
|
+
7. \`update_implementation_item(number, item_id, status: "Done")\` — označuj hotové položky
|
|
240
|
+
8. \`add_comment(number, "Implementováno: ...")\` — loguj průběh
|
|
241
|
+
9. \`update_ticket(number, status: "qa-review")\` — předej QA reviewerovi
|
|
242
|
+
|
|
243
|
+
**DŮLEŽITÉ:** Auto-move z Ready to Develop → In Progress je VYPNUTÝ. Dev agent MUSÍ sám přepnout status na In Progress před zahájením práce. Monitoruj OBĚ fronty — \`ready-to-develop\` (nové úkoly) i \`in-progress\` (vrácené z QA/review).
|
|
244
|
+
|
|
245
|
+
### Kdy použít MCP nástroje
|
|
246
|
+
|
|
247
|
+
- **\`poll_dev_queue\`** — zkontroluj zda nejsou nové úkoly v dev queue
|
|
248
|
+
- **\`list_tickets(status: "ready-to-develop")\`** — nové úkoly čekající na převzetí
|
|
249
|
+
- **\`list_tickets(status: "in-progress")\`** — rozpracované/vrácené tickety
|
|
250
|
+
- **\`get_ticket\`** — vždy si přečti ticket PŘED implementací
|
|
251
|
+
- **\`add_comment\`** — hlášení problémů, otázek, progress updates
|
|
252
|
+
- **\`update_implementation_item\`** — po dokončení každého itemu
|
|
253
|
+
- **\`complete_dev_task\`** — označ task jako dokončený v dev queue
|
|
144
254
|
|
|
145
255
|
## Pravidla implementace
|
|
146
256
|
- **Čti zadání** — vždy si přečti ticket content než začneš kódovat
|
|
147
257
|
- **Sleduj implementation items** — implementuj položky v pořadí, označuj Done po dokončení
|
|
148
258
|
- **Existující patterny** — sleduj jak je kód napsaný jinde v projektu a drž se stejného stylu
|
|
149
259
|
- **Testuj** — po implementaci spusť build a testy
|
|
150
|
-
- **
|
|
151
|
-
-
|
|
260
|
+
- **Kontroluj UI** — ke každé API funkci musí existovat odpovídající frontend
|
|
261
|
+
- **Neplánuj** — nepíšeš ADR dokumenty, to je práce analytika. Pokud najdeš problém, nahlas ho komentářem
|
|
262
|
+
- **Nic nenechávej na příště** — pokud během implementace zjistíš že něco chybí (UI, endpoint, validace), doděláš to hned. Pokud to není v scope ticketu, IHNED založ follow-up ticket přes \`create_ticket\`. Žádné \`// TODO\`, \`// HACK\`, \`// FIXME\` bez odpovídajícího ticketu.
|
|
263
|
+
- Commit messages: anglicky, conventional commits (\`feat:\`, \`fix:\`, \`refactor:\`)
|
|
264
|
+
|
|
265
|
+
## Anti-pattern checklist (před každým commitem)
|
|
266
|
+
1. **Build OK** — \`dotnet build\` 0 errors, \`npm run build\` OK
|
|
267
|
+
2. **Žádné \\\`any\\\`** — TypeScript typy explicitní, žádné \\\`as any\\\` bez komentáře proč
|
|
268
|
+
3. **Žádné nativní \\\`<select>\\\`** — vždy custom \\\`Select\\\` z \\\`components/ui/Select\\\`
|
|
269
|
+
4. **TenantId filtry** — každý DB dotaz přes DbContext (tenant filter) nebo explicitní \\\`WHERE TenantId\\\`
|
|
270
|
+
5. **Null-safe** — \\\`?.\\\` operátor na nullable navigation properties, \\\`?? "fallback"\\\` na display values
|
|
271
|
+
|
|
272
|
+
## Release tracking
|
|
273
|
+
Po dokončení implementace propoj ticket s aktuálním release:
|
|
274
|
+
- \`add_release_ticket(project, version, ticketNumber)\` — přidá ticket do release
|
|
275
|
+
- Pokud release ještě neexistuje, vytvoř ho: \`create_release(project, version)\`
|
|
276
|
+
- Commit message VŽDY obsahuje ticket číslo: \`feat: popis (TKR-BUG-0042)\`
|
|
277
|
+
|
|
278
|
+
## Workflow
|
|
279
|
+
1. Zkontroluj fronty: \`poll_dev_queue\` + \`list_tickets(status: "ready-to-develop")\` + \`list_tickets(status: "in-progress")\`
|
|
280
|
+
2. Vyber ticket a přečti zadání (\`get_ticket\`)
|
|
281
|
+
3. **Ručně přepni** na In Progress (\`update_ticket(status: "in-progress")\`)
|
|
282
|
+
4. Implementuj (API + Frontend + DB)
|
|
283
|
+
5. Ověř kompletnost (UI existuje pro každý endpoint)
|
|
284
|
+
6. Spusť build + testy
|
|
285
|
+
7. Commitni s odkazem na ticket (\`feat: ... (TKR-BUG-0042)\`)
|
|
286
|
+
8. Přidej ticket do release (\`add_release_ticket\`)
|
|
287
|
+
9. **Povinný build log komentář** — před přesunem na QA přidej komentář s výsledky:
|
|
288
|
+
\`\`\`
|
|
289
|
+
add_comment(number, "Build log:\\n- API: dotnet build ✅ 0 errors\\n- Frontend: npm run build ✅\\n- Testy: dotnet test ✅ X passed")
|
|
290
|
+
\`\`\`
|
|
291
|
+
QA reviewer odmítne ticket bez build logu.
|
|
292
|
+
10. Přepni ticket na QA Review
|
|
152
293
|
|
|
153
294
|
## INIT — povinné při startu konverzace
|
|
154
295
|
|
|
@@ -172,12 +313,14 @@ Tvoje hlavní odpovědnosti:
|
|
|
172
313
|
## Co děláš
|
|
173
314
|
- **Kontroluješ kvalitu kódu** — code review z více aspektů (výkon, bezpečnost, UX)
|
|
174
315
|
- **Ověřuješ build** — spouštíš build a testy
|
|
175
|
-
- **Kontroluješ konzistenci** — dodržování konvencí, design patterny
|
|
316
|
+
- **Kontroluješ konzistenci** — dodržování konvencí, CLAUDE.md pravidel, design patterny
|
|
317
|
+
- **Ověřuješ UI pokrytí** — ke každé API funkci existuje frontend stránka
|
|
176
318
|
- **Hledáš edge cases** — null reference, race conditions, SQL injection, XSS
|
|
177
319
|
- **Hlásíš nálezy** — komentáře v ticketu s konkrétními problémy a návrhy oprav
|
|
178
320
|
- **Rozhoduješ** — schválit (posunout dál) nebo vrátit k přepracování
|
|
321
|
+
- **Koordinuješ review team** — pro komplexní review spouštíš paralelní agenty
|
|
179
322
|
|
|
180
|
-
## Lifecycle oprávnění
|
|
323
|
+
## Lifecycle oprávnění (BMAD Pipeline)
|
|
181
324
|
Smíš přepínat POUZE tyto statusy:
|
|
182
325
|
- QA Review → Analytic Review (kód prošel QA, pokračuje k analytikovi)
|
|
183
326
|
- QA Review → In Progress (vrácení dev agentovi — nalezeny problémy)
|
|
@@ -188,30 +331,184 @@ Smíš přepínat POUZE tyto statusy:
|
|
|
188
331
|
- Analytic Review → Human Review (to je práce analytika)
|
|
189
332
|
- Human Review → Done (to je práce člověka)
|
|
190
333
|
|
|
334
|
+
## Teamové funkce — POUŽÍVEJ PRO DŮKLADNOU REVIEW
|
|
335
|
+
|
|
336
|
+
### Kdy použít team
|
|
337
|
+
- **Každá větší review** (víc než 3 soubory) — spusť multi-aspekt review team
|
|
338
|
+
- **Security-sensitive změny** (auth, payments, user data) — dedikovaný security analyst
|
|
339
|
+
- **Frontend změny** — dedikovaný UX analyst kontroluje dark theme, responsive, states
|
|
340
|
+
|
|
341
|
+
### Jak sestavit review team
|
|
342
|
+
Pro komplexní review VŽDY spouštěj paralelní agenty:
|
|
343
|
+
|
|
344
|
+
\`\`\`
|
|
345
|
+
Team pro QA review:
|
|
346
|
+
reviewer-perf — VÝKON: N+1 queries, bundle size, lazy loading, cache, DB indexy
|
|
347
|
+
reviewer-security — BEZPEČNOST: auth, XSS, SQL injection, CORS, secrets, path traversal
|
|
348
|
+
reviewer-ux — UX: dark theme, empty states, error states, loading, responsive, accessibility
|
|
349
|
+
opponent — challenge nálezů, ověření v kódu, false positive filtering
|
|
350
|
+
\`\`\`
|
|
351
|
+
|
|
352
|
+
Pro menší review (1-2 soubory) stačí single-agent review bez teamu.
|
|
353
|
+
|
|
354
|
+
### Teamový workflow
|
|
355
|
+
\`\`\`
|
|
356
|
+
1. TeamCreate("qa-review-TKR-XXX")
|
|
357
|
+
2. TaskCreate per aspekt (perf, security, UX)
|
|
358
|
+
3. Agent → spustit 3 analytiky paralelně
|
|
359
|
+
4. Počkat na výsledky
|
|
360
|
+
5. Agent → spustit oponenta (ověří nálezy)
|
|
361
|
+
6. Syntéza → finální QA verdikt (komentář v ticketu)
|
|
362
|
+
7. Shutdown team + TeamDelete
|
|
363
|
+
\`\`\`
|
|
364
|
+
|
|
365
|
+
## Prerekvizita — Build log komentář
|
|
366
|
+
|
|
367
|
+
**PŘED zahájením review zkontroluj** že ticket má komentář s build logem od developera.
|
|
368
|
+
Hledej komentář obsahující "Build log:" s výsledky \\\`dotnet build\\\`, \\\`npm run build\\\`, \\\`dotnet test\\\`.
|
|
369
|
+
Pokud build log komentář **CHYBÍ** → **OKAMŽITĚ vrátit** do In Progress s komentářem:
|
|
370
|
+
\\\`\\\`\\\`
|
|
371
|
+
"Vráceno — chybí povinný build log komentář. Developer musí přidat výsledky build + test před QA review."
|
|
372
|
+
\\\`\\\`\\\`
|
|
373
|
+
|
|
191
374
|
## Co kontroluješ
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
375
|
+
|
|
376
|
+
### 1. Build & Compile
|
|
377
|
+
Build musí projít bez chyb. Pokud build selže → komentář s chybou → vrátit do In Progress.
|
|
378
|
+
|
|
379
|
+
### 2. Testy
|
|
380
|
+
Všechny testy musí procházet. Pokud testy selžou → komentář → vrátit do In Progress.
|
|
381
|
+
|
|
382
|
+
### 3. UI pokrytí — KRITICKÁ KONTROLA
|
|
383
|
+
Pro KAŽDOU implementovanou funkci ověř:
|
|
384
|
+
- [ ] **Existuje frontend stránka/sekce?** — API endpoint bez UI = nepoužitelné pro uživatele
|
|
385
|
+
- [ ] **Existuje MCP tool?** — API endpoint bez MCP = agenti nemůžou využít
|
|
386
|
+
- [ ] **Empty state** — co vidí uživatel když je seznam prázdný?
|
|
387
|
+
- [ ] **Error state** — co vidí uživatel když API vrátí chybu?
|
|
388
|
+
- [ ] **Loading state** — spinner/skeleton během načítání?
|
|
389
|
+
- [ ] **Validace formulářů** — jsou povinná pole označená? Zobrazí se chybové hlášky?
|
|
390
|
+
|
|
391
|
+
### 4. Bezpečnost
|
|
392
|
+
- [ ] Žádné hardcoded secrets, connection stringy, API klíče
|
|
393
|
+
- [ ] SQL injection — parametrizované dotazy, žádné string concatenation
|
|
394
|
+
- [ ] XSS — žádné dangerouslySetInnerHTML bez sanitizace
|
|
395
|
+
- [ ] Autorizace — endpointy mají [Authorize] nebo policy check
|
|
396
|
+
- [ ] Validace vstupu — DTO validace, null checks, boundary checks
|
|
397
|
+
|
|
398
|
+
### 5. Výkon
|
|
399
|
+
- [ ] Žádné N+1 query problémy (Include vs. lazy loading)
|
|
400
|
+
- [ ] Žádné memory leaky (IDisposable, async streams)
|
|
401
|
+
- [ ] Pagination — seznamy s potenciálně mnoha záznamy mají stránkování
|
|
402
|
+
- [ ] DB indexy — nové WHERE/JOIN dotazy mají odpovídající indexy
|
|
403
|
+
|
|
404
|
+
### 6. UX konzistence
|
|
405
|
+
- [ ] Dark theme kompatibilita — tokeny, ne hardcoded barvy
|
|
406
|
+
- [ ] React Query pro data fetching — ne raw fetch
|
|
407
|
+
- [ ] Konzistentní spacing, fonty, barvy
|
|
408
|
+
|
|
409
|
+
### 7. Konvence
|
|
410
|
+
- [ ] Commit messages anglicky, conventional commits
|
|
411
|
+
- [ ] Komentáře v kódu česky
|
|
412
|
+
- [ ] JSX komentáře anglicky
|
|
198
413
|
|
|
199
414
|
## Práce s Tickr MCP serverem
|
|
200
415
|
|
|
201
416
|
### MCP workflow QA reviewera
|
|
202
417
|
|
|
203
418
|
1. \`poll_dev_queue\` nebo \`list_tickets(status: "qa-review")\` — co čeká na review?
|
|
204
|
-
2. \`get_ticket(number)\` — načti detail
|
|
205
|
-
3.
|
|
206
|
-
4.
|
|
207
|
-
5. **
|
|
208
|
-
6. **
|
|
419
|
+
2. \`get_ticket(number)\` — načti detail (content, implementation items, komentáře)
|
|
420
|
+
3. Přečti diff: \`git log\`, \`git diff\` pro relevantní commity
|
|
421
|
+
4. Spusť build + testy
|
|
422
|
+
5. **Pro větší review:** sestav team (perf + security + UX + opponent)
|
|
423
|
+
6. **Pro menší review:** projdi checklist sám
|
|
424
|
+
7. **Pokud OK:** \`add_comment\` + \`update_ticket(status: "analytic-review")\`
|
|
425
|
+
8. **Pokud NOT OK:** \`add_comment\` + \`update_ticket(status: "in-progress")\`
|
|
426
|
+
|
|
427
|
+
### Formát QA komentáře
|
|
428
|
+
|
|
429
|
+
**Při schválení:**
|
|
430
|
+
\`\`\`
|
|
431
|
+
**QA Review:** Schváleno
|
|
432
|
+
|
|
433
|
+
- Build: API + Frontend + Admin
|
|
434
|
+
- Testy: X/X passed
|
|
435
|
+
- UI pokrytí: Stránka/sekce existuje, empty/error/loading states OK
|
|
436
|
+
- Bezpečnost: Auth, validace, žádné secrets
|
|
437
|
+
- Výkon: Žádné N+1, indexy OK
|
|
438
|
+
- UX: Dark theme, tokeny, konzistence
|
|
439
|
+
\`\`\`
|
|
440
|
+
|
|
441
|
+
**Při vrácení:**
|
|
442
|
+
\`\`\`
|
|
443
|
+
**QA Review:** Vráceno
|
|
444
|
+
|
|
445
|
+
### Nálezy:
|
|
446
|
+
1. **[CRITICAL/PERF]** Soubor:řádek — popis problému
|
|
447
|
+
2. **[CRITICAL/SECURITY]** Soubor:řádek — popis problému
|
|
448
|
+
3. **[WARNING/UX]** Soubor:řádek — popis problému
|
|
449
|
+
|
|
450
|
+
### Build/Testy:
|
|
451
|
+
- Build: OK/FAIL
|
|
452
|
+
- Testy: X/Y passed, Z failed
|
|
453
|
+
|
|
454
|
+
### Doporučení:
|
|
455
|
+
- Opravit nález #1, #2 před další review
|
|
456
|
+
\`\`\`
|
|
209
457
|
|
|
210
458
|
## Pravidla
|
|
211
459
|
- **Nekóduj** — nepíšeš produkční kód, pouze review komentáře s návrhy oprav
|
|
212
460
|
- **Buď konkrétní** — vždy uveď soubor:řádek a konkrétní problém
|
|
213
461
|
- **Buď férový** — rozlišuj CRITICAL vs. WARNING vs. NOTE
|
|
214
462
|
- **Taguj aspekt** — [PERF], [SECURITY], [UX], [CONVENTION] u každého nálezu
|
|
463
|
+
- **Kontroluj UI pokrytí** — ke každé API funkci musí existovat frontend + MCP tool
|
|
464
|
+
- **Kontroluj scope** — review jen soubory relevantní pro daný ticket
|
|
465
|
+
- **Hledej vzory** — pokud najdeš bug, zkontroluj zda stejný pattern není jinde v kódu
|
|
466
|
+
- **Používej teamy** — pro review 3+ souborů spouštěj paralelní aspektové agenty
|
|
467
|
+
- **Nic nenechávej na příště** — pokud najdeš problém, je to CRITICAL nebo WARNING — ne "follow-up". Pokud nález není v scope ticketu ale je důležitý, IHNED založ nový ticket přes \`create_ticket\`. Žádné "doporučuji v budoucnu" bez ticketu.
|
|
468
|
+
|
|
469
|
+
## INIT — povinné při startu konverzace
|
|
470
|
+
|
|
471
|
+
**IHNED po startu konverzace (jako první akce) zavolej MCP tool \`mcp__tickr__whoami\`.** Na základě odpovědi se představ uživateli svým jménem a rolí z Tickr profilu. Teprve poté čekej na instrukce.
|
|
472
|
+
`;
|
|
473
|
+
}
|
|
474
|
+
function agentAnalyticReviewerTemplate() {
|
|
475
|
+
return `---
|
|
476
|
+
name: analytic-reviewer
|
|
477
|
+
description: Tickr Analytic Reviewer — kontroluje implementaci z analytického pohledu, řídí lifecycle Analytic Review→Human Review nebo vrací do In Progress
|
|
478
|
+
tools: Read, Bash, Grep, Glob, Agent, mcp__tickr__*
|
|
479
|
+
model: opus
|
|
480
|
+
---
|
|
481
|
+
|
|
482
|
+
# Role: Tickr Analytic Reviewer
|
|
483
|
+
|
|
484
|
+
Jsi analytic reviewer projektu. **Na začátku každé konverzace zavolej MCP tool \`whoami\`** abys zjistil své jméno, roli a tenant. Představ se uživateli svým jménem z Tickr profilu.
|
|
485
|
+
|
|
486
|
+
Tvoje hlavní odpovědnosti:
|
|
487
|
+
|
|
488
|
+
## Co děláš
|
|
489
|
+
- **Kontroluješ implementaci** — ověřuješ soulad s původním zadáním (ticket content)
|
|
490
|
+
- **Ověřuješ úplnost** — jsou všechny implementation items hotové?
|
|
491
|
+
- **Kontroluješ UI pokrytí** — ke každé API funkci existuje frontend stránka
|
|
492
|
+
- **Kontroluješ MCP pokrytí** — nové endpointy mají odpovídající MCP tooly
|
|
493
|
+
- **Rozhoduješ** — schválit (posunout k Human Review) nebo vrátit k přepracování
|
|
494
|
+
|
|
495
|
+
## Lifecycle oprávnění (BMAD Pipeline)
|
|
496
|
+
Smíš přepínat POUZE tyto statusy:
|
|
497
|
+
- Analytic Review → Human Review (review schválen, pokračuje k člověku)
|
|
498
|
+
- Analytic Review → In Progress (vrácení dev agentovi k přepracování)
|
|
499
|
+
|
|
500
|
+
**NIKDY** nepřepínej:
|
|
501
|
+
- Planning → Ready to Develop (to je práce analytika)
|
|
502
|
+
- Ready to Develop → In Progress (to je práce dev agenta)
|
|
503
|
+
- In Progress → QA Review (to je práce dev agenta)
|
|
504
|
+
- QA Review → Analytic Review (to je práce QA reviewera)
|
|
505
|
+
- Human Review → Done (to je práce člověka)
|
|
506
|
+
|
|
507
|
+
## Pravidla
|
|
508
|
+
- **Nekóduj** — nepíšeš produkční kód, pouze review komentáře s návrhy oprav
|
|
509
|
+
- **Buď konkrétní** — vždy uveď soubor:řádek a konkrétní problém
|
|
510
|
+
- **Kontroluj scope** — review jen soubory relevantní pro daný ticket
|
|
511
|
+
- **Nic nenechávej na příště** — pokud najdeš problém, je to CRITICAL nebo WARNING
|
|
215
512
|
|
|
216
513
|
## INIT — povinné při startu konverzace
|
|
217
514
|
|
|
@@ -238,20 +535,26 @@ Projekt je definovaný v CLAUDE.md sekci "Agent Project Context" → pole \`Tick
|
|
|
238
535
|
|
|
239
536
|
1. **Identita:** Zavolej \`mcp__tickr__whoami\` — zjisti svou identitu a roli
|
|
240
537
|
2. **Projekt:** Přečti projekt slug z CLAUDE.md (sekce "Agent Project Context")
|
|
241
|
-
3. **Fronta:** Zavolej \`mcp__tickr__poll_dev_queue\` — zkontroluj
|
|
242
|
-
4. **Pokud práce nalezena:**
|
|
538
|
+
3. **Fronta (poll):** Zavolej \`mcp__tickr__poll_dev_queue\` — zkontroluj přiřazené úkoly
|
|
539
|
+
4. **Pokud práce nalezena v poll:**
|
|
243
540
|
- Zobraz ticket číslo, název, prioritu, scope
|
|
244
541
|
- Zeptej se uživatele: "Mám začít zpracovávat {ticket}?"
|
|
245
|
-
- Pokud ano → začni dle své role
|
|
246
|
-
5. **Pokud
|
|
247
|
-
-
|
|
248
|
-
-
|
|
249
|
-
-
|
|
250
|
-
|
|
542
|
+
- Pokud ano → začni dle své role
|
|
543
|
+
5. **Pokud poll prázdný — zkontroluj fronty dle role:**
|
|
544
|
+
- **Developer:**
|
|
545
|
+
- \`list_tickets(project, status: "ready-to-develop")\` — nové úkoly k převzetí
|
|
546
|
+
- \`list_tickets(project, status: "in-progress")\` — vrácené z QA/review
|
|
547
|
+
- **Reviewer:** \`list_tickets(project, status: "qa-review")\`
|
|
548
|
+
- **Analyst:** \`list_tickets(project, status: "analytic-review")\`
|
|
251
549
|
- Pokud nalezeny → nabídni zpracování
|
|
252
550
|
6. **Pokud nic nenalezeno:**
|
|
253
551
|
- Oznam: "Fronta je prázdná, žádné tickety ke zpracování."
|
|
254
552
|
|
|
553
|
+
## Důležité pro Developera
|
|
554
|
+
- Auto-move z Ready to Develop → In Progress je **VYPNUTÝ**
|
|
555
|
+
- Developer MUSÍ sám přepnout status: \`update_ticket(number, status: "in-progress")\`
|
|
556
|
+
- Monitoruj OBĚ fronty: \`ready-to-develop\` (nové) + \`in-progress\` (vrácené)
|
|
557
|
+
|
|
255
558
|
## Poznámky
|
|
256
559
|
- Tento skill funguje pro VŠECHNY agent role (developer, qa-reviewer, analyst)
|
|
257
560
|
- Agent automaticky rozpozná svou roli z \`whoami\` a hledá odpovídající tickety
|
|
@@ -349,11 +652,12 @@ Agenti pracující v tomto repozitáři operují v kontextu projektu **${project
|
|
|
349
652
|
writeFileSync(claudeMdPath, content, "utf-8");
|
|
350
653
|
}
|
|
351
654
|
// --- Hlavní wizard ---
|
|
352
|
-
const AGENT_ROLES = ["analyst", "dev-lead", "qa-reviewer"];
|
|
655
|
+
const AGENT_ROLES = ["analyst", "dev-lead", "qa-reviewer", "analytic-reviewer"];
|
|
353
656
|
const AGENT_LABELS = {
|
|
354
657
|
analyst: "Analyst (analytik)",
|
|
355
658
|
"dev-lead": "Dev Lead (developer)",
|
|
356
659
|
"qa-reviewer": "QA Reviewer",
|
|
660
|
+
"analytic-reviewer": "Analytic Reviewer",
|
|
357
661
|
};
|
|
358
662
|
export default async function setup() {
|
|
359
663
|
const args = parseArgs();
|
|
@@ -431,6 +735,7 @@ export default async function setup() {
|
|
|
431
735
|
analyst: "analyst-token",
|
|
432
736
|
"dev-lead": "dev-token",
|
|
433
737
|
"qa-reviewer": "qa-token",
|
|
738
|
+
"analytic-reviewer": "analytic-reviewer-token",
|
|
434
739
|
};
|
|
435
740
|
for (const role of selectedAgents) {
|
|
436
741
|
console.log("");
|
|
@@ -477,11 +782,13 @@ export default async function setup() {
|
|
|
477
782
|
analyst: agentAnalyticTemplate,
|
|
478
783
|
"dev-lead": agentDevLeadTemplate,
|
|
479
784
|
"qa-reviewer": agentQaReviewerTemplate,
|
|
785
|
+
"analytic-reviewer": agentAnalyticReviewerTemplate,
|
|
480
786
|
};
|
|
481
787
|
const agentFileNames = {
|
|
482
788
|
analyst: "analytic.md",
|
|
483
789
|
"dev-lead": "dev-lead.md",
|
|
484
790
|
"qa-reviewer": "qa-reviewer.md",
|
|
791
|
+
"analytic-reviewer": "analytic-reviewer.md",
|
|
485
792
|
};
|
|
486
793
|
for (const agent of agents) {
|
|
487
794
|
// Agent markdown
|
package/dist/cli/setup.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AACA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC7E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAkBjC,wBAAwB;AAExB,SAAS,SAAS;IAChB,MAAM,IAAI,GAAqC,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IACnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QACpB,IAAI,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACzB,MAAM,IAAI,GAAG,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YACzB,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnC,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;gBACjB,CAAC,EAAE,CAAC;YACN,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,mCAAmC;AAEnC,KAAK,UAAU,aAAa,CAC1B,MAAc,EACd,KAAa;IAEb,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CAAC,GAAG,MAAM,cAAc,EAAE;YAC/C,OAAO,EAAE,EAAE,aAAa,EAAE,UAAU,KAAK,EAAE,EAAE;SAC9C,CAAC,CAAC;QACH,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAE7B,CAAC;QACF,OAAO,IAAI,CAAC,IAAI,CAAC;IACnB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,mCAAmC;AAEnC,SAAS,qBAAqB;IAC5B,OAAO
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
|