--- layout: 'page' uri: '/skills/gk' position: 15 slug: 'skills-gk' parent: 'skills' navTitle: 'gk' title: 'GK — rozcestník skillů' description: 'Rozcestník po gokick projektu — přehled všech gk-* skillů a co který řeší, od git clone po deploy a observabilitu. Use when naklonuješ projekt a chceš vědět co všechno s ním můžeš dělat, nebo nevíš, který specializovaný skill na svůj problém sáhnout.' name: 'gk' --- # GK — rozcestník skillů Gokick je Go **DDD/CQRS** skeleton s Vue 3 SPA, SQLite a JWT autentizací — celá aplikace v jediné binárce. Tahle rodina `gk-*` skillů popisuje **přesné koncepty a jak se co používá**: každý skill má „proč to použít · na co je vhodné · jak to funguje · recept · časté chyby" a je psaný i pro juniory / non-tech. **Jak na to:** napiš `/gk-<název>` (např. `/gk-repositories`). Nebo prostě popiš problém a AI sáhne po správném skillu sama (řídí se podle `description` každého skillu). ## Cesta projektem (od initu po observabilitu) ### Start & orientace | Skill | Co řeší | |-------|---------| | `/gk-init` | Od `git clone` **nebo template** k běžícímu + nakonfigurovanému repu — install, build, seed, dev loop, `make setup-github` | | `/gk-config` | `.env` konfigurace: co se čte, kdy, defaulty, kde se validuje | | `/gk-architecture` | Mentální model: DDD 4 vrstvy, CQRS, dependency rules, bounded contexts | | `/gk-feature` | Přidat novou featuru **end-to-end** — checklist napříč všemi vrstvami | ### Doména | Skill | Co řeší | |-------|---------| | `/gk-entities` | Entity (db tagy) + value objects s validací + factory funkce | | `/gk-domain-events` | „Stalo se X" → reakce po commitu, aniž to command handler zná | | `/gk-errors` | Doménové chyby (Validation/Auth/Permission) → automaticky HTTP status | ### Application (CQRS) | Skill | Co řeší | |-------|---------| | `/gk-bus` | Command/Query/Event busy, middleware chain a jeho pořadí, dispatch | | `/gk-commands` | Write operace — struktura handleru + povinná deklarace permission | | `/gk-queries` | Read operace — struktura query handleru + typovaný návrat | ### Data & infrastruktura | Skill | Co řeší | |-------|---------| | `/gk-repositories` | Datová vrstva nad SQLite — tx-aware `r.Conn(ctx)`, raw-pool výjimky, tuning | | `/gk-migrations` | Goose migrace — embedované, automaticky aplikované při startu | | `/gk-runs` | Durable engine pro background práci mimo tx (přežije restart/crash) — fire-and-forget run (FireAndForget) i dlouhý **run** s checkpoint + resume (Durable) | | `/gk-scheduler` | Periodické úlohy uvnitř serveru (cron-like, bez OS cronu) | | `/gk-di` | Wire compile-time DI — providery, `wire.Bind`, `make di` | ### Auth & bezpečnost | Skill | Co řeší | |-------|---------| | `/gk-auth` | JWT access + refresh, rotace + theft detection, login, session, logout | | `/gk-permissions` | Kdo smí co — BE `Permissioned` + FE enum, jeden zdroj pravdy | | `/gk-multitenancy` | Zapínatelný row-level multitenancy + platformní rovina (superadmin), tenant izolace + CLI | | `/gk-rate-limiting` | Per-IP rate limit + brute-force lock + extrakce klientské IP | | `/gk-hardening` | CSRF + security headers + maskování tajemství před error trackerem | ### Frontend (Vue 3 SPA) | Skill | Co řeší | |-------|---------| | `/gk-frontend-fetch` | `apiFetch`/`authFetch`, single-flight refresh + self-heal, access token | | `/gk-frontend-forms` | Formuláře bez FE validace — chyby z backendu na konkrétní pole | | `/gk-frontend-ui` | `app-ui` komponenty + composables, router/guards, přísný TS/ESLint/Tailwind | | `/gk-frontend-grid` | Server-side DataGrid — stránkování/filtry/řazení, výběr + bulk akce; FE stav + BE whitelist/clamp | ### Observabilita | Skill | Co řeší | |-------|---------| | `/gk-logging` | Strukturované `slog` — konstantní klíče, korelace, lint enforcement | | `/gk-sentry` | Error tracking BE+FE — jen neočekávané chyby, enrichment, source maps | | `/gk-audit` | Append-only audit security akcí (přežije rollback transakce) | ### Ship & kvalita | Skill | Co řeší | |-------|---------| | `/gk-deploy` | Single binárka, multi-stage Docker, GitHub CI, release + version stamping | | `/gk-testing` | `testfx` (reálná DB), architektonické konformní testy, quality gate | ## Typické scénáře (kudy začít) - **„Právě jsem to naklonoval" / „založil jsem repo z template"** → `/gk-init` (u template má krok navíc: `make setup-github`), pak `/gk-architecture`. - **„Chci přidat endpoint / CRUD"** → `/gk-feature` (provede tě a odkáže na detail). - **„Padá mi to / nevím proč"** → podle vrstvy: `/gk-errors`, `/gk-permissions`, `/gk-repositories`, `/gk-config`. - **„Background práce"** → viz matice níže. - **„Vydat / nasadit"** → `/gk-deploy`. ## Background práce — co kdy (run / scheduler / event) | Potřeba | Mechanismus | Skill | V transakci? | |---|---|---|---| | Atomická write op. během requestu | **command** | `/gk-commands` | ✅ ano | | „Stalo se X" → reakce, co command nezná | **doménový event** | `/gk-domain-events` | ❌ po commitu, sync | | Krátká fire-and-forget práce, přežije restart (mail/API/webhook, přepočet) | **fire-and-forget run** = `FireAndForget` | `/gk-runs` | ❌ **NE (vynuceno)** | | Dlouhá práce, co pokračuje po pádu od posledního kroku (import, report) | **durable run** = `Durable` | `/gk-runs` | ❌ **NE (vynuceno)** | | Periodicky (cron-like) | **scheduler** | `/gk-scheduler` | ❌ inline | **Klíč:** oba tvary jsou **jeden engine** (`/gk-runs`), oba běží **mimo transakci** (vynuceno) — **uvnitř transakce nikdy nevolej ven** (SMTP/cizí API drží zámek po dobu volání → zamkne SQLite). Tvary rozlišuje jediná otázka: **potřebuje to po pádu pokračovat od posledního kroku?** (ano → run s checkpointem, ne → fire-and-forget run). Detail + diagram → `docs/framework/background/overview.md` (+ jednotlivé toky v sekcích HTTP / CQRS / Background). ## Práce s dokumentací & psaní skillů **Při jakékoli práci s dokumentací** (`docs/` — zakládání/úprava stránek, sekce `.list.md`, frontmatter, přesun či přejmenování stránky, nav) sáhni po skillu **`/documan`**. Zná Documan formát i workflow: pravidla frontmatteru (`uri`/`slug`/`parent`, `title` == `# H1`, `layout: 'list'` u sekcí), postup přesunu/přejmenování (uprav uri/slug/parent, přeparentuj potomky, přepiš odkazy) i `make documan-import` / `documan-fix`. Platí to **i pro `gk-*` skilly** — jsou to taky Documan stránky. Nový `gk-*` skill navíc drž podle vzoru v `_TEMPLATE.md` (vedle tohohle souboru) — struktura (frontmatter + 6 sekcí), jazyk (CZ tělo, EN nadpisy/kód) a pravidla obsahu (pravdivost > marketing, odkazuj neduplikuj). ## Související - **`/documan`** — pomocník pro práci s dokumentací v `docs/` (Documan formát, sekce, nav, frontmatter, import/fix). **Použij ho vždycky, když saháš na docs.** - Dokumentace (lidská, web): <https://gokick.strategio.dev/> - `CLAUDE.md` v rootu — tvrdé invarianty projektu, na které skills odkazují --- [← documan](/skills/documan.md) | [Start & orientace →](/skills/start.md)