@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.
- package/dist/cli/hooks.d.ts +6 -0
- package/dist/cli/hooks.d.ts.map +1 -0
- package/dist/cli/hooks.js +247 -0
- package/dist/cli/hooks.js.map +1 -0
- package/dist/cli/rules.d.ts +16 -0
- package/dist/cli/rules.d.ts.map +1 -0
- package/dist/cli/rules.js +271 -0
- package/dist/cli/rules.js.map +1 -0
- package/dist/cli/setup.d.ts +5 -0
- package/dist/cli/setup.d.ts.map +1 -1
- package/dist/cli/setup.js +235 -99
- package/dist/cli/setup.js.map +1 -1
- package/dist/index.js +33 -8
- package/dist/server.js +1 -1
- package/package.json +3 -3
|
@@ -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":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AACxF,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAEnD,MAAM,uBAAuB,GAAG,gDAAgD,CAAC;AACjF,MAAM,qBAAqB,GAAG,8CAA8C,CAAC;AAS7E,SAAS,UAAU;IACjB,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,QAAQ,CAAC,cAAc,EAAE;YACtC,QAAQ,EAAE,OAAO;YACjB,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;SAChC,CAAC,CAAC;QACH,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;IACrD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC9B,CAAC;AACH,CAAC;AAED,gCAAgC;AAEhC,SAAS,oBAAoB,CAAC,eAAuB;IACnD,0CAA0C;IAC1C,MAAM,cAAc,GAAG,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAE3D,OAAO;QACL,uBAAuB;QACvB,+EAA+E;QAC/E,EAAE;QACF,gBAAgB,cAAc,GAAG;QACjC,EAAE;QACF,mDAAmD;QACnD,sFAAsF;QACtF,EAAE;QACF,2DAA2D;QAC3D,kEAAkE;QAClE,8BAA8B;QAC9B,6BAA6B;QAC7B,8HAA8H;QAC9H,uBAAuB;QACvB,QAAQ;QACR,QAAQ;QACR,4CAA4C;QAC5C,IAAI;QACJ,EAAE;QACF,sDAAsD;QACtD,+FAA+F;QAC/F,EAAE;QACF,4DAA4D;QAC5D,kEAAkE;QAClE,8BAA8B;QAC9B,6BAA6B;QAC7B,4CAA4C;QAC5C,uBAAuB;QACvB,QAAQ;QACR,QAAQ;QACR,oDAAoD;QACpD,IAAI;QACJ,qBAAqB;QACrB,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,gCAAgC;AAEhC,SAAS,oBAAoB;IAC3B,OAAO;QACL,0EAA0E;QAC1E,kEAAkE;QAClE,sDAAsD;QACtD,EAAE;QACF,gBAAgB;QAChB,mDAAmD;QACnD,iCAAiC;QACjC,SAAS;QACT,qCAAqC;QACrC,sDAAsD;QACtD,EAAE;QACF,yCAAyC;QACzC,iDAAiD;QACjD,EAAE;QACF,mDAAmD;QACnD,uEAAuE;QACvE,EAAE;QACF,wBAAwB;QACxB,uDAAuD;QACvD,gFAAgF;QAChF,+EAA+E;QAC/E,kDAAkD;QAClD,EAAE;QACF,kBAAkB;QAClB,2GAA2G;QAC3G,SAAS;QACT,cAAc;QACd,oFAAoF;QACpF,OAAO;QACP,aAAa;QACb,wCAAwC;QACxC,KAAK;QACL,KAAK;QACL,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AAED,iCAAiC;AAEjC,SAAS,oBAAoB,CAAC,GAAW,EAAE,eAAuB;IAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,oBAAoB,CAAC,eAAe,CAAC,CAAC;IAE1D,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,IAAI,QAAQ,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/C,MAAM,QAAQ,GAAG,QAAQ,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC3D,MAAM,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC;QAEvD,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,CAAC,EAAE,CAAC;YACrC,2BAA2B;YAC3B,QAAQ;gBACN,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,QAAQ,CAAC;oBAC/B,WAAW;oBACX,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,qBAAqB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAClE,CAAC;aAAM,CAAC;YACN,kBAAkB;YAClB,QAAQ,GAAG,QAAQ,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,WAAW,CAAC;QACvD,CAAC;QACD,aAAa,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC7C,CAAC;SAAM,CAAC;QACN,aAAa,CAAC,QAAQ,EAAE,iBAAiB,GAAG,WAAW,EAAE,OAAO,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,CAAC;QACH,SAAS,CAAC,QAAQ,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC;IAAC,MAAM,CAAC;QACP,kCAAkC;IACpC,CAAC;AACH,CAAC;AAED,kCAAkC;AAElC,SAAS,yBAAyB,CAAC,GAAW;IAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/C,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEzC,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,qBAAqB,CAAC,CAAC;IACzD,aAAa,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAAE,OAAO,CAAC,CAAC;IAE3D,iCAAiC;IACjC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,qBAAqB,CAAC,CAAC;IACjE,IAAI,QAAQ,GAA4B,EAAE,CAAC;IAE3C,IAAI,CAAC;QACH,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7D,CAAC;IAAC,MAAM,CAAC;QACP,iCAAiC;IACnC,CAAC;IAED,0BAA0B;IAC1B,MAAM,KAAK,GAAG,CAAC,QAAQ,CAAC,KAAK,IAAI,EAAE,CAA8B,CAAC;IAClE,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,WAAW,IAAI,EAAE,CAAmC,CAAC;IAEhF,iDAAiD;IACjD,MAAM,QAAQ,GAAG,WAAW,CAAC,MAAM,CACjC,CAAC,CAAC,EAAE,EAAE;QACJ,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAmD,CAAC;QACvE,OAAO,CAAC,QAAQ,EAAE,IAAI,CACpB,CAAC,EAAE,EAAE,EAAE,CAAC,OAAO,EAAE,CAAC,OAAO,KAAK,QAAQ,IAAI,EAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC,CAClF,CAAC;IACJ,CAAC,CACF,CAAC;IAEF,QAAQ,CAAC,IAAI,CAAC;QACZ,OAAO,EAAE,MAAM;QACf,KAAK,EAAE;YACL;gBACE,IAAI,EAAE,SAAS;gBACf,OAAO,EAAE,wCAAwC;gBACjD,KAAK,EAAE,IAAI;gBACX,OAAO,EAAE,EAAE;aACZ;SACF;KACF,CAAC,CAAC;IAEH,KAAK,CAAC,WAAW,GAAG,QAAQ,CAAC;IAC7B,QAAQ,CAAC,KAAK,GAAG,KAAK,CAAC;IAEvB,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACjF,CAAC;AAED,wCAAwC;AAExC,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,IAAsC;IAEtC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;IAE/B,yBAAyB;IACzB,MAAM,aAAa,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,IAAI,CAAC;IAChD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,MAAM,OAAO,CAAC;YACpE,OAAO,EAAE,qDAAqD;YAC9D,OAAO,EAAE,IAAI;SACd,CAAC,CAAC;QAEH,IAAI,gBAAgB,EAAE,CAAC;YACrB,iBAAiB;YACjB,MAAM,EAAE,GAAG,UAAU,EAAE,CAAC;YACxB,IAAI,EAAE,CAAC,SAAS,EAAE,CAAC;gBACjB,OAAO,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC,OAAO,UAAU,CAAC,CAAC;YAC9C,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;gBAC/D,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;gBACnF,OAAO,CAAC,GAAG,CAAC,wFAAwF,CAAC,CAAC;YACxG,CAAC;YAED,oBAAoB;YACpB,MAAM,kBAAkB,GAAG,qFAAqF,CAAC;YACjH,MAAM,eAAe,GACnB,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,QAAQ;gBACrC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC;gBACrB,CAAC,CAAC,MAAM,KAAK,CAAC;oBACV,OAAO,EAAE,kCAAkC;oBAC3C,OAAO,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,kBAAkB,CAAC,CAAC,CAAC,SAAS;iBACzE,CAAC,CAAC;YAET,IAAI,eAAe,IAAI,UAAU,CAAC,eAAe,CAAC,EAAE,CAAC;gBACnD,oBAAoB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACxD,CAAC;iBAAM,IAAI,eAAe,EAAE,CAAC;gBAC3B,OAAO,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACzE,CAAC;QACH,CAAC;IACH,CAAC;IAED,uCAAuC;IACvC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,IAAI,IAAI,MAAM,OAAO,CAAC;QAC/D,OAAO,EAAE,0DAA0D;QACnE,OAAO,EAAE,IAAI;KACd,CAAC,CAAC;IAEH,IAAI,WAAW,EAAE,CAAC;QAChB,yBAAyB,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;QAC9D,OAAO,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC;IAC9D,CAAC;AACH,CAAC;AAED,iDAAiD;AAEjD,MAAM,UAAU,WAAW,CAAC,GAAW;IACrC,iFAAiF;IACjF,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC1D,IAAI,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAChD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,uBAAuB,CAAC,CAAC;QAC1D,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;YACpB,kDAAkD;YAClD,MAAM,gBAAgB,GAAG,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC;YAChE,IAAI,gBAAgB,EAAE,CAAC;gBACrB,oBAAoB,CAAC,GAAG,EAAE,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC;gBAC/C,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YACrD,CAAC;QACH,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,qBAAqB,CAAC,CAAC;IACxE,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3B,aAAa,CAAC,UAAU,EAAE,oBAAoB,EAAE,EAAE,OAAO,CAAC,CAAC;QAC3D,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;IACjE,CAAC;AACH,CAAC"}
|
|
@@ -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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"}
|
package/dist/cli/setup.d.ts
CHANGED
|
@@ -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
|
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;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,
|
|
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
|
-
|
|
305
|
+
## Opponent Review — POVINNÉ
|
|
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
|
|
844
|
+
function claudeJsonTemplate(apiUrl) {
|
|
780
845
|
return JSON.stringify({
|
|
781
846
|
mcpServers: {
|
|
782
847
|
tickr: {
|
|
783
|
-
|
|
784
|
-
|
|
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
|
|
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
|
-
|
|
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.
|
|
1017
|
-
const agents =
|
|
1018
|
-
|
|
1019
|
-
|
|
1020
|
-
|
|
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
|
|
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.
|
|
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
|
package/dist/cli/setup.js.map
CHANGED
|
@@ -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
|
-
|
|
3
|
-
|
|
4
|
-
|
|
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.
|
|
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.
|
|
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": "^
|
|
54
|
+
"@types/node": "^24.12.0",
|
|
55
55
|
"tsx": "^4.19.4",
|
|
56
|
-
"typescript": "
|
|
56
|
+
"typescript": "~5.9.3",
|
|
57
57
|
"vitest": "^3.1.2"
|
|
58
58
|
}
|
|
59
59
|
}
|