# Global Instructions ## AITM Task Manager (localhost:3333) AITM (AI Task Manager) je centralni spravce tasku pro vsechny projekty. Bezi na `http://localhost:3333`. Kdyz uzivatel chce vytvorit task, zadat praci, naplánovat zmenu, nebo rekne "vytvor task" / "pridej task" / "zarad do fronty" — pouzij AITM REST API. ### Vytvoreni tasku ```bash curl -s -X POST http://localhost:3333/api/tasks \ -H 'Content-Type: application/json' \ --data-binary @- <<'ENDJSON' { "title": "", "prompt": "", "tabId": "", "projectId": "", "priority": "medium", "useWorktree": true, "usePipeline": true, "autoMergeDev": true } ENDJSON ``` ### Povinne parametry | Parametr | Typ | Popis | |----------|-----|-------| | `title` | string | Kratky nazev (anglicky, 1 radek, max 60 znaku) | | `prompt` | string | Detailni zadani pro AI agenta (anglicky) | | `tabId` | string | Tab v AITM — urcuje projekt | | `projectId` | string | Konkretni projekt v tabu | | `priority` | string | `low` / `medium` / `high` | | `useWorktree` | bool | `true` = vlastni branch + worktree (VZDY true) | | `usePipeline` | bool | **`true`** = spusti 8-krokovou pipeline (branch→architect→code→review→fix→test→e2e→docs). **VZDY true** pokud uzivatel nerekne jinak | | `autoMergeDev` | bool | `true` = po uspesne pipeline auto-merge do dev branch | ### Jak psat prompt (DULEZITE) Prompt je to nejdulezitejsi — AI agent ho dostane jako jediny kontext. Musi byt: 1. **Anglicky** — vsechny prompty pis anglicky 2. **Zacni s "READ CLAUDE.md first"** — kazdy prompt musi zacinat timto, aby agent nacetl projektove konvence 3. **Konkretni soubory** — uved presne cesty k souborum ktere se maji vytvorit/zmenit 4. **Ocekavane chovani** — co ma kod delat, ne jak to implementovat (nech agenta rozhodnout) 5. **Verify prikazy** — na konci uved build/test prikazy pro overeni 6. **Self-contained** — prompt musi obsahovat VSECHNY potrebne detaily (barvy, texty, rozmery, API tvary). Agent NEMA pristup k externim dokumentum mimo projekt #### Sablona promptu: ``` READ CLAUDE.md first for project conventions and build commands. ## What to do <1-3 vety co je cilem> ## Files to create/modify ### lib/path/to/file.dart ### lib/path/to/another.dart <...> ## Details ## Delete .gitkeep from: ## Verify ``` #### Chyby ktere NEDELAT v promptu: - Neodkazovat na soubory v JINEM repu/projektu (agent je nevidi) - Nepsat cesky (agent pouziva anglicke instrukce) - Nedavat vague zadani ("udelej to hezke") — bud konkretni - Nezapominat na verify krok (flutter analyze, dotnet build, npm run check...) - Nepouzivat JSON s newlines v `-d` parametru curlu — VZDY pouzij heredoc `--data-binary @- <<'ENDJSON'` ### Zjisteni stavu ```bash # Vsechny tasky curl -s http://localhost:3333/api/tasks | jq . # Stav tabu curl -s http://localhost:3333/api/status | jq . ``` ### Taby a projekty | tabId | projectId | Projekt | Stack | Default branch | |-------|-----------|---------|-------|----------------| | `cryptorobot` | `cr-fe` | RobotFE | Blazor | dev | | `cryptorobot` | `cr-be` | RobotCBBE | .NET API | dev | | `cryptorobot` | `cr-market` | MarketData | .NET Service | dev | | `csai` | `csai-fe` | CSAI.Web | Blazor | dev | | `csai` | `csai-be` | CSAI.Api | .NET API | dev | | `centralstore` | `cs-web` | CS Web | Blazor | dev | | `centralstore` | `cs-gateway` | CS Gateway | .NET API | dev | | `centralstore` | `cs-platform` | CS Platform | Aspire | dev | | `ctm` | `ctm-dashboard` | AITM Dashboard | Node/TS | dev | | `tmm` | `tmm-app` | NudgeMobile | Flutter | dev | | `ctm-web` | `ctm-web-app` | CTM-WEB | Vue.js | dev | | `kittie` | `km-app` | NuggeMobile | Flutter | dev | ### Urceni projektu (DULEZITE) "vytvor task" (bez diakritiky i s ni) = vytvor task do **stavajiciho projektu** ve kterem uzivatel prave pracuje. Jak urcit `tabId` a `projectId`: 1. **Podivej se na CWD** (aktualni pracovni adresar) a porovnej s tabulkou nize 2. Pokud CWD odpovida nejakemu `root` nebo `root/path` z tabulky → pouzij ten tab+projekt 3. Pokud CWD neodpovida zadnemu projektu nebo je nejednoznacny → **ZEPTEJ SE** uzivatele do ktereho projektu task patri | CWD obsahuje | tabId | projectId | |-------------|-------|-----------| | `/OTCryptoRobot/RobotFE` nebo `/OTCryptoRobot` (bez podslozky) | `cryptorobot` | `cr-fe` | | `/OTCryptoRobot/RobotCBBE` | `cryptorobot` | `cr-be` | | `/OTCryptoRobot/MarketDataService` | `cryptorobot` | `cr-market` | | `/CSAI/CSAI.Web` | `csai` | `csai-fe` | | `/CSAI/CSAI.Api` nebo `/CSAI` (bez podslozky) | `csai` | `csai-be` | | `/CentralStore` | `centralstore` | `cs-web` | | `/AITM` nebo `/ClaudeTaskManager` | `ctm` | `ctm-dashboard` | | `/TaskManagerMobile` | `tmm` | `tmm-app` | | `/CTM-WEB` | `ctm-web` | `ctm-web-app` | | `/NuggeMobile` | `kittie` | `km-app` | Pokud tab ma vice projektu a z CWD neni jasne ktery (napr. root `/OTCryptoRobot` bez konkretni podslozky), zeptej se: "Do ktereho projektu? RobotFE, RobotCBBE, nebo MarketData?" ### Pravidla - `useWorktree: true` — VZDY - `usePipeline: true` — VZDY (pokud uzivatel explicitne nerekne "bez pipeline") - `autoMergeDev: true` — VZDY (pokud uzivatel nerekne "bez merge") - Pokud uzivatel nespecifikuje prioritu, pouzij `medium` - Nikdy nerikej "Claude" — vzdy "AI" - Pro JSON body VZDY pouzij heredoc format (`--data-binary @- <<'ENDJSON'`) — nikoliv `-d` s inline JSON (problemy s escapovanim) ### Priklad: jednoduchy task Uzivatel v projektu CryptoRobot/RobotFE rekne: "Pridej cancellation token do vsech API callu" ```bash curl -s -X POST http://localhost:3333/api/tasks \ -H 'Content-Type: application/json' \ --data-binary @- <<'ENDJSON' {"title":"Add cancellation token to all API calls","prompt":"READ CLAUDE.md first.\n\nAdd CancellationToken parameter to all API call methods in RobotFE.\n\n## What to do\nFind all HttpClient calls and ensure they pass CancellationToken. Update service interfaces and implementations.\n\n## Files to modify\n- All files in Services/ that use HttpClient\n- Corresponding interfaces in Interfaces/\n\n## Verify\ndotnet build && dotnet test","tabId":"cryptorobot","projectId":"cr-fe","priority":"medium","useWorktree":true,"usePipeline":true,"autoMergeDev":true} ENDJSON ``` ### Priklad: vice tasku najednou Pokud uzivatel chce rozdelit praci na vice tasku, vytvor je postupne curlem. AITM je zaradi do fronty a spusti sekvencne (1 task na tab v dany cas). Kazdy task musi byt self-contained — nesmi zaviset na tom ze predchozi task jeste nebyl mergnut. ### Pipeline kroky (8-step) Kdyz `usePipeline: true`, task projde automaticky: 1. **branch** — vytvoreni worktree + branch z dev 2. **architect** — navrh implementace (plan) 3. **code** — implementace dle planu 4. **review** — code review 5. **fix** — oprava nalezených problemu 6. **test** — unit testy (paralelne s e2e) 7. **e2e** — end-to-end testy (paralelne s test) 8. **docs** — dokumentace Po uspesnem dokonceni: auto-merge do dev + auto-archive.