@k-system/tickr-mcp 1.26.7 → 1.27.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.
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Git hooks a Claude Code hooks pro setup wizard.
3
+ */
4
+ export declare function setupHooks(cwd: string, args: Record<string, string | boolean>): Promise<void>;
5
+ export declare function updateHooks(cwd: string): void;
6
+ //# sourceMappingURL=hooks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.d.ts","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4MH,wBAAsB,UAAU,CAC9B,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,GACrC,OAAO,CAAC,IAAI,CAAC,CAqDf;AAID,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAsB7C"}
@@ -0,0 +1,247 @@
1
+ /**
2
+ * Git hooks a Claude Code hooks pro setup wizard.
3
+ */
4
+ import { execSync } from "node:child_process";
5
+ import { existsSync, readFileSync, writeFileSync, mkdirSync, chmodSync } from "node:fs";
6
+ import { join } from "node:path";
7
+ import { input, confirm } from "@inquirer/prompts";
8
+ const PRE_COMMIT_MARKER_START = "# --- @k-system/tickr-mcp pre-commit START ---";
9
+ const PRE_COMMIT_MARKER_END = "# --- @k-system/tickr-mcp pre-commit END ---";
10
+ function checkJbCli() {
11
+ try {
12
+ const result = execSync("jb --version", {
13
+ encoding: "utf-8",
14
+ timeout: 10000,
15
+ stdio: ["pipe", "pipe", "pipe"],
16
+ });
17
+ return { installed: true, version: result.trim() };
18
+ }
19
+ catch {
20
+ return { installed: false };
21
+ }
22
+ }
23
+ // --- Pre-commit hook obsah ---
24
+ function preCommitHookContent(dotSettingsPath) {
25
+ // Normalizuj cestu na unix-style pro bash
26
+ const normalizedPath = dotSettingsPath.replace(/\\/g, "/");
27
+ return [
28
+ PRE_COMMIT_MARKER_START,
29
+ '# K-System ReSharper code formatting (generated by @k-system/tickr-mcp setup)',
30
+ "",
31
+ `DOTSETTINGS="${normalizedPath}"`,
32
+ "",
33
+ '# Formátuj staged .cs soubory přes jb cleanupcode',
34
+ 'STAGED_CS=$(git diff --cached --name-only --diff-filter=ACM | grep "\\.cs$" || true)',
35
+ "",
36
+ 'if [ -n "$STAGED_CS" ] && command -v jb &>/dev/null; then',
37
+ ' echo "[pre-commit] Formatting C# files with jb cleanupcode..."',
38
+ ' for file in $STAGED_CS; do',
39
+ ' if [ -f "$file" ]; then',
40
+ ' jb cleanupcode "$file" --profile="Built-in: Reformat Code" --settings="$DOTSETTINGS" --no-builtin-settings 2>/dev/null',
41
+ ' git add "$file"',
42
+ ' fi',
43
+ ' done',
44
+ ' echo "[pre-commit] ✓ C# formatting done"',
45
+ "fi",
46
+ "",
47
+ '# Formátuj staged .ts/.tsx soubory přes eslint --fix',
48
+ 'STAGED_TS=$(git diff --cached --name-only --diff-filter=ACM | grep -E "\\.(ts|tsx)$" || true)',
49
+ "",
50
+ 'if [ -n "$STAGED_TS" ] && command -v npx &>/dev/null; then',
51
+ ' echo "[pre-commit] Formatting TypeScript files with ESLint..."',
52
+ ' for file in $STAGED_TS; do',
53
+ ' if [ -f "$file" ]; then',
54
+ ' npx eslint --fix "$file" 2>/dev/null',
55
+ ' git add "$file"',
56
+ ' fi',
57
+ ' done',
58
+ ' echo "[pre-commit] ✓ TypeScript formatting done"',
59
+ "fi",
60
+ PRE_COMMIT_MARKER_END,
61
+ "",
62
+ ].join("\n");
63
+ }
64
+ // --- Post-commit link hook ---
65
+ function postCommitLinkScript() {
66
+ return [
67
+ "// Post-commit ticket link hook (generated by @k-system/tickr-mcp setup)",
68
+ "// Parsuje git commit z Bash tool output, hledá TKR-* referenci,",
69
+ "// vypíše reminder pro agenta k zavolání link_commit",
70
+ "",
71
+ "let data = '';",
72
+ "process.stdin.on('data', chunk => data += chunk);",
73
+ "process.stdin.on('end', () => {",
74
+ " try {",
75
+ " const input = JSON.parse(data);",
76
+ " const command = input.tool_input?.command || '';",
77
+ "",
78
+ " // Reaguj jen na git commit příkazy",
79
+ " if (!/git\\s+commit/.test(command)) return;",
80
+ "",
81
+ " // Extrahuj ticket referenci z commit message",
82
+ " const ticketMatch = command.match(/\\(?(TKR-[A-Z]*-?\\d+)\\)?/i);",
83
+ "",
84
+ " if (ticketMatch) {",
85
+ " const ticketRef = ticketMatch[1].toUpperCase();",
86
+ " const outputText = input.tool_output?.stdout || input.tool_output || '';",
87
+ " const shaMatch = outputText.match(/\\[[\\w/.-]+\\s+([a-f0-9]{7,})\\]/);",
88
+ " const sha = shaMatch ? shaMatch[1] : null;",
89
+ "",
90
+ " if (sha) {",
91
+ " console.error(`[hook] Commit ${sha} references ${ticketRef} — call link_commit to connect them`);",
92
+ " }",
93
+ " } else {",
94
+ " console.error('[hook] No ticket reference (TKR-*) found in commit message');",
95
+ " }",
96
+ " } catch {",
97
+ " // Tiché selhání — neblokuj commit",
98
+ " }",
99
+ "});",
100
+ "",
101
+ ].join("\n");
102
+ }
103
+ // --- Zápis pre-commit hooku ---
104
+ function installPreCommitHook(cwd, dotSettingsPath) {
105
+ const hooksDir = join(cwd, ".git", "hooks");
106
+ const hookPath = join(hooksDir, "pre-commit");
107
+ const hookContent = preCommitHookContent(dotSettingsPath);
108
+ mkdirSync(hooksDir, { recursive: true });
109
+ if (existsSync(hookPath)) {
110
+ let existing = readFileSync(hookPath, "utf-8");
111
+ const startIdx = existing.indexOf(PRE_COMMIT_MARKER_START);
112
+ const endIdx = existing.indexOf(PRE_COMMIT_MARKER_END);
113
+ if (startIdx !== -1 && endIdx !== -1) {
114
+ // Přepiš blok mezi markery
115
+ existing =
116
+ existing.substring(0, startIdx) +
117
+ hookContent +
118
+ existing.substring(endIdx + PRE_COMMIT_MARKER_END.length + 1);
119
+ }
120
+ else {
121
+ // Přidej na konec
122
+ existing = existing.trimEnd() + "\n\n" + hookContent;
123
+ }
124
+ writeFileSync(hookPath, existing, "utf-8");
125
+ }
126
+ else {
127
+ writeFileSync(hookPath, "#!/bin/bash\n\n" + hookContent, "utf-8");
128
+ }
129
+ try {
130
+ chmodSync(hookPath, 0o755);
131
+ }
132
+ catch {
133
+ // Windows — chmod nemusí fungovat
134
+ }
135
+ }
136
+ // --- Zápis Claude Code hooku ---
137
+ function installPostCommitLinkHook(cwd) {
138
+ const hooksDir = join(cwd, ".claude", "hooks");
139
+ mkdirSync(hooksDir, { recursive: true });
140
+ const scriptPath = join(hooksDir, "post-commit-link.js");
141
+ writeFileSync(scriptPath, postCommitLinkScript(), "utf-8");
142
+ // Aktualizuj settings.local.json
143
+ const settingsPath = join(cwd, ".claude", "settings.local.json");
144
+ let settings = {};
145
+ try {
146
+ settings = JSON.parse(readFileSync(settingsPath, "utf-8"));
147
+ }
148
+ catch {
149
+ // Neexistuje nebo nelze parsovat
150
+ }
151
+ // Přidej hook konfiguraci
152
+ const hooks = (settings.hooks || {});
153
+ const postToolUse = (hooks.PostToolUse || []);
154
+ // Odstraň existující tickr hook (pokud existuje)
155
+ const filtered = postToolUse.filter((h) => {
156
+ const hooksArr = h.hooks;
157
+ return !hooksArr?.some((hh) => typeof hh.command === "string" && hh.command.includes("post-commit-link"));
158
+ });
159
+ filtered.push({
160
+ matcher: "Bash",
161
+ hooks: [
162
+ {
163
+ type: "command",
164
+ command: "node .claude/hooks/post-commit-link.js",
165
+ async: true,
166
+ timeout: 15,
167
+ },
168
+ ],
169
+ });
170
+ hooks.PostToolUse = filtered;
171
+ settings.hooks = hooks;
172
+ writeFileSync(settingsPath, JSON.stringify(settings, null, 2) + "\n", "utf-8");
173
+ }
174
+ // --- Hlavní setup funkce pro hooks ---
175
+ export async function setupHooks(cwd, args) {
176
+ console.log("");
177
+ console.log(" --- Hooks ---");
178
+ // A. Git pre-commit hook
179
+ const skipPreCommit = args["no-hooks"] === true;
180
+ if (!skipPreCommit) {
181
+ const installPreCommit = args["hooks-only"] === true || await confirm({
182
+ message: " Nainstalovat git pre-commit hook pro formátování?",
183
+ default: true,
184
+ });
185
+ if (installPreCommit) {
186
+ // Detekce jb CLI
187
+ const jb = checkJbCli();
188
+ if (jb.installed) {
189
+ console.log(` ✓ jb ${jb.version} nalezen`);
190
+ }
191
+ else {
192
+ console.log(" [WARN] JetBrains CLI (jb) není nainstalované.");
193
+ console.log(" Instalace: dotnet tool install -g JetBrains.ReSharper.GlobalTools");
194
+ console.log(" Hook bude nainstalován, ale C# formátování bude přeskočeno dokud jb nenainstalujete.");
195
+ }
196
+ // DotSettings cesta
197
+ const defaultDotSettings = "x:\\Dev\\Repo\\KSystem.Resharper.CodeStyle\\KSystem.Resharper.CodeStyle.DotSettings";
198
+ const dotSettingsPath = typeof args["dotsettings"] === "string"
199
+ ? args["dotsettings"]
200
+ : await input({
201
+ message: " Cesta k ReSharper DotSettings:",
202
+ default: existsSync(defaultDotSettings) ? defaultDotSettings : undefined,
203
+ });
204
+ if (dotSettingsPath && existsSync(dotSettingsPath)) {
205
+ installPreCommitHook(cwd, dotSettingsPath);
206
+ console.log(" ✓ .git/hooks/pre-commit nainstalován");
207
+ }
208
+ else if (dotSettingsPath) {
209
+ console.log(" [WARN] Soubor neexistuje — pre-commit hook přeskočen.");
210
+ }
211
+ }
212
+ }
213
+ // B. Claude Code post-commit link hook
214
+ const installLink = args["hooks-only"] === true || await confirm({
215
+ message: " Nainstalovat Claude Code post-commit ticket link hook?",
216
+ default: true,
217
+ });
218
+ if (installLink) {
219
+ installPostCommitLinkHook(cwd);
220
+ console.log(" ✓ .claude/hooks/post-commit-link.js vytvořen");
221
+ console.log(" ✓ .claude/settings.local.json aktualizován");
222
+ }
223
+ }
224
+ // --- Update-only: přegenerovat hook skripty ---
225
+ export function updateHooks(cwd) {
226
+ // Pre-commit hook — přegenerovat jen pokud existuje (zachovat DotSettings cestu)
227
+ const hookPath = join(cwd, ".git", "hooks", "pre-commit");
228
+ if (existsSync(hookPath)) {
229
+ const content = readFileSync(hookPath, "utf-8");
230
+ const startIdx = content.indexOf(PRE_COMMIT_MARKER_START);
231
+ if (startIdx !== -1) {
232
+ // Extrahuj DotSettings cestu z existujícího hooku
233
+ const dotSettingsMatch = content.match(/DOTSETTINGS="([^"]+)"/);
234
+ if (dotSettingsMatch) {
235
+ installPreCommitHook(cwd, dotSettingsMatch[1]);
236
+ console.log(" .git/hooks/pre-commit (updated)");
237
+ }
238
+ }
239
+ }
240
+ // Post-commit link hook — přegenerovat vždy pokud existuje
241
+ const linkScript = join(cwd, ".claude", "hooks", "post-commit-link.js");
242
+ if (existsSync(linkScript)) {
243
+ writeFileSync(linkScript, postCommitLinkScript(), "utf-8");
244
+ console.log(" .claude/hooks/post-commit-link.js (updated)");
245
+ }
246
+ }
247
+ //# sourceMappingURL=hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../src/cli/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Rule template funkce pro setup wizard.
3
+ * Generují obsah .claude/rules/ souborů.
4
+ */
5
+ export declare function ruleCommonCodingStyle(): string;
6
+ export declare function ruleCommonGitWorkflow(): string;
7
+ export declare function ruleCommonSecurity(): string;
8
+ export declare function ruleCsharpFormatting(): string;
9
+ export declare function ruleCsharpAspnetcore(): string;
10
+ export declare function ruleTypescriptReact(): string;
11
+ export declare function ruleTypescriptApiClient(): string;
12
+ export declare const RULE_FILES: Array<{
13
+ name: string;
14
+ template: () => string;
15
+ }>;
16
+ //# sourceMappingURL=rules.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.d.ts","sourceRoot":"","sources":["../../src/cli/rules.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,wBAAgB,qBAAqB,IAAI,MAAM,CA8B9C;AAED,wBAAgB,qBAAqB,IAAI,MAAM,CA0B9C;AAED,wBAAgB,kBAAkB,IAAI,MAAM,CA0B3C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAuC7C;AAED,wBAAgB,oBAAoB,IAAI,MAAM,CAuC7C;AAED,wBAAgB,mBAAmB,IAAI,MAAM,CAuD5C;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAmChD;AAED,eAAO,MAAM,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,MAAM,CAAA;CAAE,CAQtE,CAAC"}
@@ -0,0 +1,271 @@
1
+ /**
2
+ * Rule template funkce pro setup wizard.
3
+ * Generují obsah .claude/rules/ souborů.
4
+ */
5
+ export function ruleCommonCodingStyle() {
6
+ return [
7
+ "# Coding Style",
8
+ "",
9
+ "## Jazyk",
10
+ "- Commit messages: anglicky, conventional commits",
11
+ "- Komentáře v kódu (// a /* */): česky",
12
+ "- JSX komentáře: anglicky",
13
+ "- UI texty: česky (pokud není projekt anglický)",
14
+ "",
15
+ "## Obecné principy",
16
+ "- Preferuj immutabilitu — const místo let, readonly kde to jde",
17
+ "- Funkce max 50 řádků, soubory max 800 řádků",
18
+ "- Max 4 úrovně zanořování",
19
+ "- Žádné console.log v produkčním kódu",
20
+ "- DRY ale ne předčasná abstrakce — 3 opakování = refactor",
21
+ "- Preferuj explicitní pojmenování před zkratkami",
22
+ "",
23
+ "## Error handling",
24
+ "- Vždy ošetři chybové stavy — žádné prázdné catch bloky",
25
+ "- Loguj chyby s kontextem (co se dělo, jaké parametry)",
26
+ "- Chybové hlášky pro uživatele musí být srozumitelné",
27
+ "- Interní chyby loguj, nezobrazuj uživateli stack trace",
28
+ "",
29
+ "## Soubory a organizace",
30
+ "- Jeden koncept per soubor (jedna komponenta, jeden service)",
31
+ "- Pojmenování souborů odpovídá obsahu (UserService.cs, LoginPage.tsx)",
32
+ "- Importy seřazené: framework → third-party → local",
33
+ "",
34
+ ].join("\n");
35
+ }
36
+ export function ruleCommonGitWorkflow() {
37
+ return [
38
+ "# Git Workflow",
39
+ "",
40
+ "## Branches",
41
+ "- **main** — produkce, pouze release merges",
42
+ "- **develop** — vývojová větev",
43
+ "- **feature/*** — nové funkce (z develop)",
44
+ "- **fix/*** — bug fixy (z develop)",
45
+ "- **release/*** — příprava release (z develop → main + develop)",
46
+ "- **hotfix/*** — urgentní opravy (z main → main + develop)",
47
+ "",
48
+ "## Commits",
49
+ "- Formát: conventional commits — `feat:`, `fix:`, `docs:`, `refactor:`, `test:`, `chore:`, `perf:`",
50
+ "- Jazyk: anglicky",
51
+ "- Max 72 znaků v subject line",
52
+ "- Body volitelný — vysvětli PROČ, ne CO (to je vidět z diffu)",
53
+ "- Reference ticket: `(TKR-ADR-0058)` na konci subject line",
54
+ "",
55
+ "## Pravidla",
56
+ "- Nikdy pushovat přímo do main",
57
+ "- Nikdy force push na sdílené větve",
58
+ "- Před commitem: zkontroluj co commitneš (git diff --staged)",
59
+ "- Necommituj .env, credentials, secrets, node_modules, dist/",
60
+ "",
61
+ ].join("\n");
62
+ }
63
+ export function ruleCommonSecurity() {
64
+ return [
65
+ "# Security Rules",
66
+ "",
67
+ "## Secrets",
68
+ "- NIKDY hardcoded secrets v kódu — použij environment variables nebo config",
69
+ "- Nekontroluj .env, appsettings.*.json s citlivými daty do gitu",
70
+ "- API klíče, connection stringy, tokeny — vždy z env/config",
71
+ "",
72
+ "## Input validation",
73
+ "- Validuj VŠECHNY vstupy na systémové hranici (API endpointy, formuláře)",
74
+ "- Parametrizované SQL queries — nikdy string concatenation",
75
+ "- Escapuj HTML output — prevence XSS",
76
+ "- Validuj file paths — prevence path traversal",
77
+ "",
78
+ "## Auth",
79
+ "- Kontroluj autorizaci na KAŽDÉM endpointu — ne jen autentizaci",
80
+ "- Neloguj citlivá data (hesla, tokeny, PII)",
81
+ "- Session tokeny: httpOnly, secure, SameSite",
82
+ "- CORS: explicitní allow list, ne wildcard v produkci",
83
+ "",
84
+ "## Dependencies",
85
+ "- Neinstaluj balíčky bez kontroly (popularity, maintenance, license)",
86
+ "- Pravidelně aktualizuj dependencies kvůli security patches",
87
+ "",
88
+ ].join("\n");
89
+ }
90
+ export function ruleCsharpFormatting() {
91
+ return [
92
+ "# C# Formatting (based on K-System ReSharper CodeStyle)",
93
+ "",
94
+ "## Braces",
95
+ "- Braces POVINNÉ pro foreach, if/else — žádné braceless one-liners",
96
+ "- Allman style (brace na novém řádku)",
97
+ "",
98
+ "## Blank lines",
99
+ "- 1 blank line PŘED block statements (if, for, foreach, while, using)",
100
+ "- Max 1 blank line v deklaracích (mezi properties/fields)",
101
+ "- 1 blank line mezi metodami",
102
+ "",
103
+ "## Line length",
104
+ "- Wrap limit: 125 znaků",
105
+ "- Pokud výraz přesáhne, zalomit na logickém místě",
106
+ "",
107
+ "## Attributes",
108
+ "- Atributy VŽDY na vlastním řádku (ne na stejném řádku jako field/accessor)",
109
+ "",
110
+ "## Usings",
111
+ "- Usings do deepest scope (ne na top-level)",
112
+ "- Seřazení: System → Microsoft → Third-party → Local",
113
+ "",
114
+ "## Naming",
115
+ "- PascalCase: třídy, metody, properties, public fields, enums",
116
+ "- camelCase: lokální proměnné, parametry, private static fields",
117
+ "- _camelCase: NEPOUŽÍVAT (private static fields bez prefixu)",
118
+ "- UPPER_CASE: konstanty",
119
+ "- Interface prefix: I (IUserService)",
120
+ "- Async suffix: Async (GetUsersAsync)",
121
+ "",
122
+ "## Další",
123
+ "- var preferovat pokud je typ zřejmý z pravé strany",
124
+ "- Expression body (=>) pro jednoduché jednolinky",
125
+ "- Nullable reference types: zapnuté, ošetřovat všude",
126
+ "- record typy pro immutable DTO",
127
+ "",
128
+ ].join("\n");
129
+ }
130
+ export function ruleCsharpAspnetcore() {
131
+ return [
132
+ "# ASP.NET Core Patterns",
133
+ "",
134
+ "## Architektura",
135
+ "- Třívrstvá: Api (controllers/endpoints) → Core (domain/interfaces) → Infrastructure (EF, services)",
136
+ "- Dependency injection: registrace v Program.cs nebo extension methods",
137
+ "- Nikdy new pro services — vždy DI",
138
+ "",
139
+ "## EF Core",
140
+ "- Database-First přístup — schéma v .sqlproj, EF Core bez migrací",
141
+ "- Vždy použij async metody (ToListAsync, FirstOrDefaultAsync)",
142
+ "- Nezapomeň na .AsNoTracking() pro read-only queries",
143
+ "- Pozor na N+1 queries — použij Include/ThenInclude nebo projection",
144
+ "- Global query filters pro multi-tenant (TenantId)",
145
+ "- NIKDY nepoužívej raw SQL pokud to jde přes LINQ",
146
+ "",
147
+ "## API endpointy",
148
+ "- RESTful konvence: GET (read), POST (create), PUT (full update), PATCH (partial), DELETE",
149
+ "- Vracet ActionResult<T> s odpovídajícím HTTP status kódem",
150
+ "- Validace přes [Required], [MaxLength] atributy + FluentValidation pro složitější",
151
+ "- Pagination: vždy implementovat pro list endpointy (skip/take nebo cursor)",
152
+ "",
153
+ "## Error handling",
154
+ "- Globální exception handler middleware",
155
+ "- ProblemDetails formát pro API chyby",
156
+ "- Neloguj celé exception objekty do response — jen message pro klienta",
157
+ "- Strukturované logování (ILogger s parametry, ne string interpolation)",
158
+ "",
159
+ "## Auth",
160
+ "- JWT Bearer autentizace",
161
+ "- Autorizační politiky (policies) místo role checks v controllerech",
162
+ "- Vždy kontroluj TenantId — multi-tenant izolace",
163
+ "",
164
+ "## Middleware pipeline",
165
+ "- Pořadí: Exception handling → CORS → Auth → Routing → Endpoints",
166
+ "- Custom middleware: krátké, single-responsibility",
167
+ "",
168
+ ].join("\n");
169
+ }
170
+ export function ruleTypescriptReact() {
171
+ return [
172
+ "# TypeScript / React Patterns",
173
+ "",
174
+ "## TypeScript",
175
+ "- Strict mode zapnutý",
176
+ "- Explicitní typy pro function parameters a return types",
177
+ "- Interface pro objekty, type pro unions a utility types",
178
+ "- Vyhýbej se any — použij unknown pokud typ neznáš",
179
+ "- Enums: preferuj const objects nebo union types",
180
+ "",
181
+ "## React komponenty",
182
+ "- Funkcionální komponenty (žádné class components)",
183
+ "- Props: interface pojmenovaná {ComponentName}Props",
184
+ "- Destrukturuj props v parametru",
185
+ "- Jeden komponent per soubor",
186
+ "",
187
+ "## Hooks",
188
+ "- Dependency arrays: KOMPLETNÍ — žádné chybějící závislosti",
189
+ "- useEffect: cleanup funkce pro subscriptions a timery",
190
+ "- useMemo/useCallback: používej jen když je reálný performance problém",
191
+ "- Custom hooks: prefix use, extrahuj logiku z komponent",
192
+ "",
193
+ "## State management",
194
+ "- Lokální stav: useState pro jednoduché, useReducer pro složitější",
195
+ "- Globální stav: Zustand stores (ne Context pro frequently changing data)",
196
+ "- Server state: React Query (useQuery, useMutation)",
197
+ "- Nikdy mutuj stav přímo — vždy nová reference",
198
+ "",
199
+ "## Styling (Tickr konvence)",
200
+ "- Inline styles s design tokens (tokens.colors.*, tokens.spacing.*, tokens.fontSize.*)",
201
+ "- Žádný externí UI framework (Material UI, Tailwind, etc.)",
202
+ "- Dark theme: VŽDY používej tokeny, nikdy hardcoded barvy",
203
+ "- Responzivní: media queries nebo container queries kde potřeba",
204
+ "",
205
+ "## React Query patterns",
206
+ "- Query keys: ['entity', id] nebo ['entity', 'list', filters]",
207
+ "- Mutations: invalidate related queries onSuccess",
208
+ "- Loading states: vždy zobrazit skeleton nebo spinner",
209
+ "- Error states: vždy zobrazit chybovou hlášku (ne tiché selhání)",
210
+ "- Stale time: nastavit podle use case (real-time data = 0, statické = 5min+)",
211
+ "",
212
+ "## Formuláře",
213
+ "- Controlled components (value + onChange)",
214
+ "- Validace: na submit, ne na každý keystroke",
215
+ "- Disabled submit button při pending stavu",
216
+ "- Error messages u příslušného pole",
217
+ "",
218
+ "## Performance",
219
+ "- Lazy loading pro stránky (React.lazy + Suspense)",
220
+ "- Virtualizace pro dlouhé seznamy",
221
+ "- Debounce pro search inputy",
222
+ "- Keys v seznamech: stabilní ID, nikdy index",
223
+ "",
224
+ ].join("\n");
225
+ }
226
+ export function ruleTypescriptApiClient() {
227
+ return [
228
+ "# API Client Patterns",
229
+ "",
230
+ "## Fetch wrapper",
231
+ "- Centrální api objekt (api.get, api.post, api.put, api.delete)",
232
+ "- Automatický JWT token v Authorization header",
233
+ "- Auto-refresh tokenu při 401",
234
+ "- Base URL z konfigurace (ne hardcoded)",
235
+ "",
236
+ "## Request patterns",
237
+ "- GET: nikdy body, parametry v query string",
238
+ "- POST/PUT: JSON body, Content-Type: application/json",
239
+ "- DELETE: ID v URL, žádné body",
240
+ "- File upload: FormData, ne JSON",
241
+ "",
242
+ "## Response handling",
243
+ "- Vždy kontroluj response.ok / status code",
244
+ "- Typuj response data (generický ApiResponse<T>)",
245
+ "- Error response: parsuj do uživatelsky čitelné hlášky",
246
+ "- Network errors: odchyť a zobraz \"Server nedostupný\"",
247
+ "",
248
+ "## React Query integrace",
249
+ "- useQuery pro GET requesty (automatický caching, refetch)",
250
+ "- useMutation pro POST/PUT/DELETE (s onSuccess invalidace)",
251
+ "- Query key konvence: ['projects', slug, 'tickets', number]",
252
+ "- Optimistic updates pro rychlý UX (s rollback na error)",
253
+ "",
254
+ "## Konvence",
255
+ "- API client soubory v src/api/",
256
+ "- Jeden soubor per API doména (tickets.ts, projects.ts, auth.ts)",
257
+ "- Exportuj typed funkce, ne raw fetch volání",
258
+ "- Nullish coalescing pro optional fields z API",
259
+ "",
260
+ ].join("\n");
261
+ }
262
+ export const RULE_FILES = [
263
+ { name: "common-coding-style.md", template: ruleCommonCodingStyle },
264
+ { name: "common-git-workflow.md", template: ruleCommonGitWorkflow },
265
+ { name: "common-security.md", template: ruleCommonSecurity },
266
+ { name: "csharp-formatting.md", template: ruleCsharpFormatting },
267
+ { name: "csharp-aspnetcore.md", template: ruleCsharpAspnetcore },
268
+ { name: "typescript-react.md", template: ruleTypescriptReact },
269
+ { name: "typescript-api-client.md", template: ruleTypescriptApiClient },
270
+ ];
271
+ //# sourceMappingURL=rules.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rules.js","sourceRoot":"","sources":["../../src/cli/rules.ts"],"names":[],"mappings":"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"}
@@ -4,5 +4,10 @@
4
4
  * Interaktivní průvodce pro nastavení Tickr agentů v libovolném projektu.
5
5
  * Spuštění: npx @k-system/tickr-mcp setup
6
6
  */
7
+ /** Full setup wizard — API URL, projekt, agenti, rules, hooks */
8
+ export declare function init(): Promise<void>;
9
+ /** Update existujících souborů — templates, rules, hooks, skills */
10
+ export declare function update(): Promise<void>;
11
+ /** Zpětná kompatibilita — router pro starý "setup" command */
7
12
  export default function setup(): Promise<void>;
8
13
  //# sourceMappingURL=setup.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AACA;;;;GAIG;AA29BH,wBAA8B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAgOnD"}
1
+ {"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":";AACA;;;;GAIG;AA6lCH,iEAAiE;AACjE,wBAAsB,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAoL1C;AAED,oEAAoE;AACpE,wBAAsB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC,CAE5C;AAED,8DAA8D;AAC9D,wBAA8B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAwBnD"}
package/dist/cli/setup.js CHANGED
@@ -4,9 +4,11 @@
4
4
  * Interaktivní průvodce pro nastavení Tickr agentů v libovolném projektu.
5
5
  * Spuštění: npx @k-system/tickr-mcp setup
6
6
  */
7
- import { input, confirm, checkbox } from "@inquirer/prompts";
7
+ import { input, checkbox } from "@inquirer/prompts";
8
8
  import { writeFileSync, mkdirSync, readFileSync, existsSync } from "node:fs";
9
9
  import { join } from "node:path";
10
+ import { RULE_FILES } from "./rules.js";
11
+ import { setupHooks, updateHooks } from "./hooks.js";
10
12
  // --- CLI argumenty ---
11
13
  function parseArgs() {
12
14
  const args = {};
@@ -27,21 +29,6 @@ function parseArgs() {
27
29
  }
28
30
  return args;
29
31
  }
30
- // --- Validace tokenu přes API ---
31
- async function validateToken(apiUrl, token) {
32
- try {
33
- const res = await fetch(`${apiUrl}/api/auth/me`, {
34
- headers: { Authorization: `Bearer ${token}` },
35
- });
36
- if (!res.ok)
37
- return null;
38
- const json = (await res.json());
39
- return json.data;
40
- }
41
- catch {
42
- return null;
43
- }
44
- }
45
32
  // --- Template: agent definice ---
46
33
  function agentAnalyticTemplate() {
47
34
  return `---
@@ -163,6 +150,7 @@ Máš k dispozici MCP server \`@k-system/tickr-mcp\` — používej ho jako prim
163
150
  - **Kontroluj existující kód** — před návrhem si přečti relevantní soubory, abys věděl co už existuje
164
151
  - **Kontroluj UI pokrytí** — ke každé API funkci musí existovat frontend stránka
165
152
  - **Používej teamy** — pro review a analýzy vždy spouštěj paralelní agenty z různých aspektů
153
+ - **Opponent review je automatický standard** — NESPECIFIKUJ v zadání ticketu. Dev agent ví že ho musí spustit. Pokud je ticket vrácen bez opponent review → vrať dev agentovi s upozorněním.
166
154
  - **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.
167
155
  - Commit messages: anglicky, conventional commits (\`docs:\`, \`feat:\`, \`fix:\`)
168
156
 
@@ -193,6 +181,10 @@ Po předání ticketu dev agentovi:
193
181
  ## INIT — povinné při startu konverzace
194
182
 
195
183
  **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.
184
+
185
+ ## Project-specific instructions
186
+
187
+ If the file \`.claude/agents/analytic-custom.md\` exists in this repository, read it and follow its instructions. Custom instructions take precedence over defaults where they conflict.
196
188
  `;
197
189
  }
198
190
  function agentDevLeadTemplate() {
@@ -310,7 +302,30 @@ Máš k dispozici MCP server \`@k-system/tickr-mcp\` — používej ho pro sprá
310
302
 
311
303
  **Pokud si nejsi jistý architekturou, ZEPTEJ SE** — přidej komentář do ticketu s otázkou. Analytik nebo uživatel zodpoví. Neimplementuj "první co napadne" u systémových změn (middleware, auth, DB schéma).
312
304
 
313
- **Pro komplexní změny spusť oponenta** vytvoř team s analytikem, který challenge tvůj návrh PŘEDTÍM než začneš kódovat.
305
+ ## Opponent ReviewPOVINNÉ
306
+
307
+ Před přepnutím na QA Review MUSÍŠ spustit opponent agenta. Opponent je AUTOMATICKÝ standard — nemusí být uveden v zadání.
308
+
309
+ ### 5 oblastí opponent review
310
+ 1. **Performance** — zbytečné re-renders, N+1 queries, missing AsNoTracking, velké bundle
311
+ 2. **Security** — SQL injection, XSS, missing tenant filter, exposed secrets
312
+ 3. **Scope coverage** — pokrývá implementace CELÉ zadání? Chybí edge cases?
313
+ 4. **Konzistence** — dodržuje existující patterny? Neporušuje konvence?
314
+ 5. **Regrese** — rozbíjí existující funkce? Mění API contract?
315
+
316
+ ### Formát nálezů
317
+ - \`[CRITICAL]\` — musí být opraveno před odevzdáním
318
+ - \`[WARNING]\` — mělo by být opraveno, ale neblokuje
319
+ - \`[NOTE]\` — informativní, k zvážení
320
+
321
+ ### Workflow
322
+ 1. Implementuj zadání
323
+ 2. Spusť opponent agenta (Explore subagent)
324
+ 3. Oprav VŠECHNY \`[CRITICAL]\` nálezy
325
+ 4. Do build log komentáře přidej: \`Opponent review: X findings (Y critical, Z warning)\`
326
+ 5. Teprve pak přepni na QA Review
327
+
328
+ **Bez opponent review QA reviewer ticket OKAMŽITĚ vrátí.**
314
329
 
315
330
  ## Verifikace před odevzdáním
316
331
  - **NIKDY** nepřepínej na QA Review bez důkazu funkčnosti — build OK, testy OK, UI funguje
@@ -391,6 +406,10 @@ Po změně statusu ticketu **ověř že předání proběhlo**:
391
406
  ## INIT — povinné při startu konverzace
392
407
 
393
408
  **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.
409
+
410
+ ## Project-specific instructions
411
+
412
+ If the file \`.claude/agents/dev-lead-custom.md\` exists in this repository, read it and follow its instructions. Custom instructions take precedence over defaults where they conflict.
394
413
  `;
395
414
  }
396
415
  function agentQaReviewerTemplate() {
@@ -459,6 +478,13 @@ Pro menší review (1-2 soubory) stačí single-agent review bez teamu.
459
478
  7. Shutdown team + TeamDelete
460
479
  \`\`\`
461
480
 
481
+ ## Prerekvizita — Opponent Review
482
+
483
+ Build log komentář MUSÍ obsahovat řádek \`Opponent review:\` s počtem nálezů. Pokud chybí:
484
+ - **OKAMŽITĚ vrať** ticket do Ready to Develop
485
+ - Komentář: "Vráceno — chybí opponent review. Dev musí spustit opponent agenta před odevzdáním."
486
+ - NESCHVALUJ ticket bez opponent review
487
+
462
488
  ## Prerekvizita — Build log komentář
463
489
 
464
490
  **PŘED zahájením review zkontroluj** že ticket má komentář s build logem od developera.
@@ -606,6 +632,10 @@ Po změně statusu ticketu:
606
632
  ## INIT — povinné při startu konverzace
607
633
 
608
634
  **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.
635
+
636
+ ## Project-specific instructions
637
+
638
+ If the file \`.claude/agents/qa-reviewer-custom.md\` exists in this repository, read it and follow its instructions. Custom instructions take precedence over defaults where they conflict.
609
639
  `;
610
640
  }
611
641
  function agentAnalyticReviewerTemplate() {
@@ -641,6 +671,29 @@ Smíš přepínat POUZE tyto statusy:
641
671
  - QA Review → Analytic Review (to je práce QA reviewera)
642
672
  - Human Review → Done (to je práce člověka)
643
673
 
674
+ ## Multi-agent Review — POVINNÉ
675
+
676
+ ### Threshold
677
+ - **1 implementation item** → solo review (bez subagentů)
678
+ - **2+ implementation items** → POVINNÝ multi-agent review
679
+
680
+ ### Povinní subagenti (2+)
681
+ 1. **reviewer-spec** — SOULAD: porovnání implementace vs. ticket zadání bod po bodu
682
+ 2. **reviewer-ux** — UI POKRYTÍ: frontend stránky, empty/error/loading states, API→frontend mapování
683
+
684
+ ### Workflow
685
+ 1. Přečti ticket zadání + implementation items
686
+ 2. Pokud 2+ items → spusť reviewer-spec a reviewer-ux PARALELNĚ
687
+ 3. Každý subagent vrátí nálezy ve formátu: \`[SPEC/UI/MCP/SCOPE] [CRITICAL/WARNING/NOTE] — popis\`
688
+ 4. Syntéza: slouč nálezy, odstraň duplicity, seřaď dle severity
689
+ 5. Finální verdikt: Schváleno / Vráceno s kompletním seznamem nálezů
690
+
691
+ ### Formát nálezů
692
+ - \`[SPEC] CRITICAL\` — implementace nesplňuje zadání (chybějící bod, špatná logika)
693
+ - \`[UI] CRITICAL\` — chybí stránka/komponenta pro novou funkci
694
+ - \`[MCP] WARNING\` — nový API endpoint nemá MCP tool
695
+ - \`[SCOPE] NOTE\` — implementace přesahuje nebo nedosahuje scope zadání
696
+
644
697
  ## Plan Mode — pro komplexní review
645
698
  - Review s **5+ soubory** nebo architektonické změny → VŽDY vstup do plan mode a rozplánuj review strategii
646
699
  - Pokud review odhalí nesoulad se zadáním v mnoha bodech → ZASTAV, přehodnoť zda vrátit rovnou místo micro-nálezů
@@ -663,6 +716,14 @@ Smíš přepínat POUZE tyto statusy:
663
716
  - **Kontroluj nedokončené závislosti** — pokud ticket odkazuje na jiné tickety (dependencies, "závisí na TKR-XXX"), ověř jejich stav. Pokud závislost je stále v Planning/Todo, je to [SPEC] nález.
664
717
  - **Nic nenechávej na příště** — pokud najdeš problém, je to CRITICAL nebo WARNING
665
718
 
719
+ ## Prerekvizita — Opponent + QA Review
720
+
721
+ Před analytic review ověř že ticket má:
722
+ 1. **Opponent review** v build logu — hledej řádek \`Opponent review: X findings\`
723
+ 2. **QA review komentář** — komentář od QA reviewera se schválením nebo nálezy
724
+
725
+ Pokud kterýkoli chybí → **vrať do Ready to Develop** s komentářem co chybí.
726
+
666
727
  ## Automatické reakce na události
667
728
 
668
729
  Při review reaguj na tyto události **bez čekání na instrukce**:
@@ -690,6 +751,10 @@ Po změně statusu ticketu:
690
751
  ## INIT — povinné při startu konverzace
691
752
 
692
753
  **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.
754
+
755
+ ## Project-specific instructions
756
+
757
+ If the file \`.claude/agents/analytic-reviewer-custom.md\` exists in this repository, read it and follow its instructions. Custom instructions take precedence over defaults where they conflict.
693
758
  `;
694
759
  }
695
760
  // --- Template: SKILL.md soubory ---
@@ -776,16 +841,12 @@ command: /stop-agent
776
841
  `;
777
842
  }
778
843
  // --- Template: .claude.json konfig ---
779
- function claudeJsonTemplate(apiUrl, token) {
844
+ function claudeJsonTemplate(apiUrl) {
780
845
  return JSON.stringify({
781
846
  mcpServers: {
782
847
  tickr: {
783
- command: "npx",
784
- args: ["-y", "@k-system/tickr-mcp"],
785
- env: {
786
- TICKR_API_URL: apiUrl,
787
- TICKR_API_KEY: token,
788
- },
848
+ type: "http",
849
+ url: `${apiUrl}/mcp`,
789
850
  },
790
851
  },
791
852
  }, null, 2);
@@ -849,7 +910,7 @@ const agentFileNames = {
849
910
  "qa-reviewer": "qa-reviewer.md",
850
911
  "analytic-reviewer": "analytic-reviewer.md",
851
912
  };
852
- // --- Update-only režim: přepíše templates, skills a CMD bez dotazu na tokeny ---
913
+ // --- Update-only režim: přepíše templates, skills, MCP config a CMD ---
853
914
  async function setupUpdateOnly() {
854
915
  const cwd = process.cwd();
855
916
  const claudeDir = join(cwd, ".claude");
@@ -874,6 +935,38 @@ async function setupUpdateOnly() {
874
935
  }
875
936
  console.log(` Nalezeni agenti: ${detectedAgents.map((r) => AGENT_LABELS[r]).join(", ")}`);
876
937
  console.log("");
938
+ // Zjisti API URL z existujícího .claude.json (nebo použij CLI argument / default)
939
+ const args = parseArgs();
940
+ let apiUrl = typeof args["api-url"] === "string" ? args["api-url"] : "";
941
+ if (!apiUrl) {
942
+ // Pokus o detekci z prvního nalezeného .claude.json
943
+ for (const role of detectedAgents) {
944
+ const agentName = agentFileNames[role].replace(".md", "");
945
+ const configFile = join(configsDir, agentName, ".claude.json");
946
+ try {
947
+ const existing = JSON.parse(readFileSync(configFile, "utf-8"));
948
+ const tickr = existing?.mcpServers?.tickr;
949
+ if (tickr?.url) {
950
+ // Nový HTTP formát — extrahuj base URL
951
+ apiUrl = tickr.url.replace(/\/mcp$/, "");
952
+ }
953
+ else if (tickr?.env?.TICKR_API_URL) {
954
+ // Legacy stdio formát — migruj
955
+ apiUrl = tickr.env.TICKR_API_URL;
956
+ }
957
+ if (apiUrl)
958
+ break;
959
+ }
960
+ catch {
961
+ // Soubor nelze přečíst, pokračuj
962
+ }
963
+ }
964
+ }
965
+ if (!apiUrl) {
966
+ apiUrl = "https://api.tickr.cz";
967
+ }
968
+ console.log(` API URL: ${apiUrl}`);
969
+ console.log("");
877
970
  // Přepis agent MD souborů
878
971
  console.log(" Aktualizuji agent templates...");
879
972
  for (const role of detectedAgents) {
@@ -881,6 +974,26 @@ async function setupUpdateOnly() {
881
974
  writeFile(agentPath, agentTemplates[role]());
882
975
  console.log(` .claude/agents/${agentFileNames[role]}`);
883
976
  }
977
+ // Přepis .claude.json na HTTP MCP formát
978
+ console.log("");
979
+ console.log(" Aktualizuji MCP konfigurace...");
980
+ for (const role of detectedAgents) {
981
+ const agentName = agentFileNames[role].replace(".md", "");
982
+ const configPath = join(configsDir, agentName, ".claude.json");
983
+ // Načti existující config a přepiš jen mcpServers.tickr
984
+ let existing = {};
985
+ try {
986
+ existing = JSON.parse(readFileSync(configPath, "utf-8"));
987
+ }
988
+ catch {
989
+ // Soubor nelze přečíst — začneme s prázdným objektem
990
+ }
991
+ const mcpServers = (existing.mcpServers ?? {});
992
+ mcpServers.tickr = { type: "http", url: `${apiUrl}/mcp` };
993
+ existing.mcpServers = mcpServers;
994
+ writeFile(configPath, JSON.stringify(existing, null, 2) + "\n");
995
+ console.log(` .claude/configs/${agentName}/.claude.json`);
996
+ }
884
997
  // Přepis skills
885
998
  console.log("");
886
999
  console.log(" Aktualizuji skills...");
@@ -891,6 +1004,15 @@ async function setupUpdateOnly() {
891
1004
  const stopAgentPath = join(skillsDir, "stop-agent", "SKILL.md");
892
1005
  writeFile(stopAgentPath, skillStopAgentTemplate());
893
1006
  console.log(" .claude/skills/stop-agent/SKILL.md");
1007
+ // Přepis rules
1008
+ console.log("");
1009
+ console.log(" Aktualizuji rules...");
1010
+ const rulesDir = join(claudeDir, "rules");
1011
+ for (const rule of RULE_FILES) {
1012
+ const rulePath = join(rulesDir, rule.name);
1013
+ writeFile(rulePath, rule.template());
1014
+ console.log(` .claude/rules/${rule.name}`);
1015
+ }
894
1016
  // CMD soubory — přeskočit pokud existují (respektovat user customizace jako --continue)
895
1017
  console.log("");
896
1018
  console.log(" Start skripty...");
@@ -906,45 +1028,26 @@ async function setupUpdateOnly() {
906
1028
  console.log(` start-${agentName}.cmd (created)`);
907
1029
  }
908
1030
  }
1031
+ // Hooks — přegenerovat existující
1032
+ console.log("");
1033
+ console.log(" Aktualizuji hooks...");
1034
+ updateHooks(cwd);
909
1035
  // Summary
910
1036
  console.log("");
911
1037
  console.log(` ✅ Agent templates updated (${detectedAgents.length} agents)`);
1038
+ console.log(" ✅ MCP configs updated (HTTP transport)");
912
1039
  console.log(" ✅ Skills updated");
1040
+ console.log(` ✅ Rules updated (${RULE_FILES.length} files)`);
1041
+ console.log(" ✅ Hooks updated");
913
1042
  console.log(" ✅ Start scripts regenerated");
914
- console.log(" ℹ️ Token configs preserved (--update-only)");
915
1043
  console.log(" ℹ️ CLAUDE.md unchanged (--update-only)");
916
1044
  console.log("");
917
1045
  }
918
1046
  // --- Hlavní wizard ---
919
- export default async function setup() {
1047
+ // --- Exportované commands ---
1048
+ /** Full setup wizard — API URL, projekt, agenti, rules, hooks */
1049
+ export async function init() {
920
1050
  const args = parseArgs();
921
- // --help: zobrazí nápovědu
922
- if (args["help"] || args["h"]) {
923
- console.log("");
924
- console.log(" Tickr MCP Setup");
925
- console.log(" ───────────────");
926
- console.log("");
927
- console.log(" Usage:");
928
- console.log(" npx @k-system/tickr-mcp setup Full setup wizard (tokens, agents, skills)");
929
- console.log(" npx @k-system/tickr-mcp setup --update-only Update agent templates + skills without token prompt");
930
- console.log("");
931
- console.log(" Options:");
932
- console.log(" --update-only Skip token configuration, only update agent MDs, skills, and CMD scripts");
933
- console.log(" --api-url URL Set API URL (default: https://api.tickr.cz)");
934
- console.log(" --help, -h Show this help");
935
- console.log("");
936
- console.log(" Examples:");
937
- console.log(" npx @k-system/tickr-mcp setup # First-time setup");
938
- console.log(" npx @k-system/tickr-mcp setup --update-only # Update agent roles after MCP version bump");
939
- console.log(" npx @k-system/tickr-mcp setup --api-url https://localhost:6001 # Dev setup");
940
- console.log("");
941
- return;
942
- }
943
- // --update-only: přeskočí tokeny, přepíše templates + skills + CMD
944
- if (args["update-only"]) {
945
- await setupUpdateOnly();
946
- return;
947
- }
948
1051
  console.log("");
949
1052
  console.log(" Tickr MCP Setup Wizard");
950
1053
  console.log(" ----------------------");
@@ -1013,48 +1116,11 @@ export default async function setup() {
1013
1116
  console.log(" Žádný agent nevybrán. Ukončuji.");
1014
1117
  return;
1015
1118
  }
1016
- // --- 4. Agent tokeny ---
1017
- const agents = [];
1018
- const tokenArgMap = {
1019
- analyst: "analyst-token",
1020
- "dev-lead": "dev-token",
1021
- "qa-reviewer": "qa-token",
1022
- "analytic-reviewer": "analytic-reviewer-token",
1023
- };
1024
- for (const role of selectedAgents) {
1025
- console.log("");
1026
- console.log(` --- ${AGENT_LABELS[role]} ---`);
1027
- const argKey = tokenArgMap[role];
1028
- let token = typeof args[argKey] === "string"
1029
- ? args[argKey]
1030
- : await input({
1031
- message: ` PAT token pro ${AGENT_LABELS[role]}:`,
1032
- });
1033
- // Validace tokenu
1034
- console.log(" Ověřuji token...");
1035
- const user = await validateToken(apiUrl, token);
1036
- if (user) {
1037
- console.log(` Token platný: ${user.displayName} (${user.role})`);
1038
- agents.push({ role, token, displayName: user.displayName });
1039
- }
1040
- else {
1041
- console.log(" [WARN] Token není platný nebo API není dostupné.");
1042
- const proceed = await confirm({
1043
- message: " Pokračovat přesto s tímto tokenem?",
1044
- default: false,
1045
- });
1046
- if (proceed) {
1047
- agents.push({ role, token, displayName: "Unknown" });
1048
- }
1049
- else {
1050
- console.log(` Agent ${role} přeskočen.`);
1051
- }
1052
- }
1053
- }
1054
- if (agents.length === 0) {
1055
- console.log(" Žádný agent s platným tokenem. Ukončuji.");
1056
- return;
1057
- }
1119
+ // --- 4. Agenti ---
1120
+ const agents = selectedAgents.map((role) => ({
1121
+ role,
1122
+ displayName: AGENT_LABELS[role],
1123
+ }));
1058
1124
  // --- 5. Generování souborů ---
1059
1125
  const cwd = process.cwd();
1060
1126
  const claudeDir = join(cwd, ".claude");
@@ -1066,10 +1132,18 @@ export default async function setup() {
1066
1132
  const agentPath = join(claudeDir, "agents", agentFileNames[agent.role]);
1067
1133
  writeFile(agentPath, agentTemplates[agent.role]());
1068
1134
  console.log(` .claude/agents/${agentFileNames[agent.role]}`);
1135
+ // Agent custom extension — prázdný template (nepřepisuje se při --update-only)
1136
+ const customFileName = agentFileNames[agent.role].replace(".md", "-custom.md");
1137
+ const customPath = join(claudeDir, "agents", customFileName);
1138
+ if (!existsSync(customPath)) {
1139
+ const customContent = `# Project-specific instructions for ${AGENT_LABELS[agent.role]}\n\n<!-- Add your project-specific instructions here.\n These instructions are never overwritten by setup --update-only.\n They take precedence over defaults where they conflict. -->\n`;
1140
+ writeFile(customPath, customContent);
1141
+ console.log(` .claude/agents/${customFileName} (custom)`);
1142
+ }
1069
1143
  // Agent config (.claude.json)
1070
1144
  const configDir = agentFileNames[agent.role].replace(".md", "");
1071
1145
  const configPath = join(claudeDir, "configs", configDir, ".claude.json");
1072
- writeFile(configPath, claudeJsonTemplate(apiUrl, agent.token) + "\n");
1146
+ writeFile(configPath, claudeJsonTemplate(apiUrl) + "\n");
1073
1147
  console.log(` .claude/configs/${configDir}/.claude.json`);
1074
1148
  }
1075
1149
  // Skills — vždy generovat pokud nejsou --skills-only=false
@@ -1080,6 +1154,15 @@ export default async function setup() {
1080
1154
  const stopAgentPath = join(skillsDir, "stop-agent", "SKILL.md");
1081
1155
  writeFile(stopAgentPath, skillStopAgentTemplate());
1082
1156
  console.log(" .claude/skills/stop-agent/SKILL.md");
1157
+ // Rules — coding style templates
1158
+ console.log("");
1159
+ console.log(" Generuji rules...");
1160
+ const rulesDir = join(claudeDir, "rules");
1161
+ for (const rule of RULE_FILES) {
1162
+ const rulePath = join(rulesDir, rule.name);
1163
+ writeFile(rulePath, rule.template());
1164
+ console.log(` .claude/rules/${rule.name}`);
1165
+ }
1083
1166
  // CLAUDE.md patch
1084
1167
  patchClaudeMd(cwd, projectName, projectSlug, projectPrefix);
1085
1168
  // CMD spouštěcí soubory pro každého agenta
@@ -1093,17 +1176,25 @@ export default async function setup() {
1093
1176
  writeFileSync(cmdPath, cmdContent, "utf-8");
1094
1177
  console.log(` start-${agentName}.cmd`);
1095
1178
  }
1096
- // --- 6. Hotovo ---
1179
+ // --- 6. Hooks ---
1180
+ await setupHooks(cwd, args);
1181
+ // --- 7. Hotovo ---
1097
1182
  console.log("");
1098
1183
  console.log(" Setup dokončen!");
1099
1184
  console.log("");
1100
1185
  console.log(" Vygenerované soubory:");
1101
- console.log(" .claude/agents/ — definice agentů");
1186
+ console.log(" .claude/agents/ — definice agentů + custom extensions");
1102
1187
  console.log(" .claude/configs/ — MCP konfigurace per agent");
1188
+ console.log(" .claude/rules/ — coding style rules (7 souborů)");
1189
+ console.log(" .claude/hooks/ — Claude Code hooks (post-commit link)");
1103
1190
  console.log(" .claude/skills/ — sdílené skills (check-queue, stop-agent)");
1104
1191
  console.log(" CLAUDE.md — Agent Project Context sekce");
1105
1192
  console.log(" start-*.cmd — spouštěcí soubory pro agenty");
1106
1193
  console.log("");
1194
+ console.log(" Autentizace: OAuth Device Grant");
1195
+ console.log(" Agent se automaticky spáruje při prvním spuštění.");
1196
+ console.log(` Párovací kód zadáte na ${apiUrl.replace("api.", "app.")}/pair`);
1197
+ console.log("");
1107
1198
  console.log(" Spuštění agenta:");
1108
1199
  for (const agent of agents) {
1109
1200
  const agentName = agentFileNames[agent.role].replace(".md", "");
@@ -1111,4 +1202,49 @@ export default async function setup() {
1111
1202
  }
1112
1203
  console.log("");
1113
1204
  }
1205
+ /** Update existujících souborů — templates, rules, hooks, skills */
1206
+ export async function update() {
1207
+ await setupUpdateOnly();
1208
+ }
1209
+ /** Zpětná kompatibilita — router pro starý "setup" command */
1210
+ export default async function setup() {
1211
+ const args = parseArgs();
1212
+ if (args["help"] || args["h"]) {
1213
+ printHelp();
1214
+ return;
1215
+ }
1216
+ if (args["update-only"]) {
1217
+ console.error(' [DEPRECATED] Use "npx @k-system/tickr-mcp update" instead of "setup --update-only".');
1218
+ console.error("");
1219
+ await update();
1220
+ return;
1221
+ }
1222
+ if (args["hooks-only"]) {
1223
+ const cwd = process.cwd();
1224
+ await setupHooks(cwd, args);
1225
+ return;
1226
+ }
1227
+ console.error(' [DEPRECATED] Use "npx @k-system/tickr-mcp init" instead of "setup".');
1228
+ console.error("");
1229
+ await init();
1230
+ }
1231
+ function printHelp() {
1232
+ console.log(`
1233
+ @k-system/tickr-mcp — Tickr MCP server + CLI
1234
+
1235
+ Usage:
1236
+ npx @k-system/tickr-mcp Start MCP server (stdio transport)
1237
+ npx @k-system/tickr-mcp init First-time setup wizard
1238
+ npx @k-system/tickr-mcp update Update agents, rules, hooks, skills
1239
+ npx @k-system/tickr-mcp help Show this help
1240
+
1241
+ Init options:
1242
+ --api-url <url> API URL (default: prompt)
1243
+ --dotsettings <path> ReSharper DotSettings path
1244
+ --no-hooks Skip git/Claude hooks setup
1245
+
1246
+ Update options:
1247
+ --hooks-only Update only hooks (git + Claude Code)
1248
+ `);
1249
+ }
1114
1250
  //# sourceMappingURL=setup.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/cli/setup.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -1,11 +1,36 @@
1
1
  #!/usr/bin/env node
2
- // CLI setup wizard spustit místo MCP serveru pokud je argument "setup"
3
- if (process.argv.includes("setup")) {
4
- import("./cli/setup.js").then((m) => m.default());
2
+ import { readFileSync } from "node:fs";
3
+ const command = process.argv[2];
4
+ switch (command) {
5
+ case "init":
6
+ import("./cli/setup.js").then((m) => m.init());
7
+ break;
8
+ case "update":
9
+ import("./cli/setup.js").then((m) => m.update());
10
+ break;
11
+ case "setup":
12
+ // Zpětná kompatibilita — deprecation warning + přesměrování
13
+ import("./cli/setup.js").then((m) => m.default());
14
+ break;
15
+ case "help":
16
+ case "--help":
17
+ case "-h":
18
+ import("./cli/setup.js").then((m) => {
19
+ // printHelp je privátní — zavoláme setup s --help
20
+ process.argv.push("--help");
21
+ m.default();
22
+ });
23
+ break;
24
+ case "version":
25
+ case "--version":
26
+ case "-v": {
27
+ const pkg = JSON.parse(readFileSync(new URL("../package.json", import.meta.url), "utf-8"));
28
+ console.log(`@k-system/tickr-mcp v${pkg.version}`);
29
+ break;
30
+ }
31
+ default:
32
+ // Žádný command → spusť MCP server (stávající chování)
33
+ import("./server.js").then((m) => m.startServer());
34
+ break;
5
35
  }
6
- else {
7
- // MCP server — standardní mód
8
- import("./server.js").then((m) => m.startServer());
9
- }
10
- export {};
11
36
  //# sourceMappingURL=index.js.map
package/dist/server.js CHANGED
@@ -112,7 +112,7 @@ export async function startServer() {
112
112
  }
113
113
  const server = new McpServer({
114
114
  name: "tickr",
115
- version: "1.26.7",
115
+ version: "1.27.0",
116
116
  });
117
117
  // Debug logging wrapper (dedup odstraněn — nefunkční cross-process, řeší se na API straně: TKR-ADR-0043)
118
118
  {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@k-system/tickr-mcp",
3
- "version": "1.26.7",
3
+ "version": "1.27.0",
4
4
  "description": "MCP server for Tickr project management — 56 tools + setup CLI wizard",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -51,9 +51,9 @@
51
51
  "zod": "^3.24.4"
52
52
  },
53
53
  "devDependencies": {
54
- "@types/node": "^22.15.3",
54
+ "@types/node": "^24.12.0",
55
55
  "tsx": "^4.19.4",
56
- "typescript": "^5.8.3",
56
+ "typescript": "~5.9.3",
57
57
  "vitest": "^3.1.2"
58
58
  }
59
59
  }