symfonia-ai-tools 1.1.1 → 1.3.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/README.md CHANGED
@@ -287,7 +287,6 @@ Prompty to gotowe polecenia dla AI do wykonania zlozonych zadan jednym wywolanie
287
287
  |--------|-----|----------|
288
288
  | `codereview.prompt.md` | Kompleksowy code review brancha | "Wykonaj code review wg `.ai/prompts/codereview.prompt.md`" |
289
289
  | `security-review.prompt.md` | Audyt bezpieczenstwa (OWASP Top 10) | "Wykonaj security review wg `.ai/prompts/security-review.prompt.md`" |
290
- | `figma-analysis.prompt.md` | Analiza komponentu Figma (wymaga MCP Figma) | "Przeanalizuj ten komponent Figma wg promptu figma-analysis" |
291
290
  | `duplicate-code-analysis.prompt.md` | Wykrywanie duplikatow kodu | "Znajdz duplikaty wg `.ai/prompts/duplicate-code-analysis.prompt.md`" |
292
291
 
293
292
  ### Uzycie w roznych narzedziach
@@ -395,7 +394,6 @@ projekt/
395
394
  │ ├── prompts/ # Reusable prompty
396
395
  │ │ ├── codereview.prompt.md
397
396
  │ │ ├── security-review.prompt.md
398
- │ │ ├── figma-analysis.prompt.md
399
397
  │ │ └── duplicate-code-analysis.prompt.md
400
398
  │ ├── skills/ # Workflow skille
401
399
  │ │ ├── smf-debug/SKILL.md
@@ -412,6 +410,7 @@ projekt/
412
410
  │ │ ├── smf-fill-worklogs/SKILL.md
413
411
  │ │ ├── smf-grafana-logs/SKILL.md
414
412
  │ │ ├── smf-aws-analysis/SKILL.md
413
+ │ │ ├── smf-figma-analysis/SKILL.md
415
414
  │ │ └── [smf-pack-specific]/SKILL.md
416
415
  │ └── context/ # Kontekst projektowy
417
416
  │ └── README.md # (tu dodaj architecture.md, api-spec.md, etc.)
package/bin/cli.mjs CHANGED
@@ -5,6 +5,7 @@ import { dirname, join } from 'node:path';
5
5
  import { askQuestions } from '../lib/questions.mjs';
6
6
  import { install } from '../lib/installer.mjs';
7
7
  import { green, dim, red, yellow } from '../lib/ui.mjs';
8
+ import { t } from '../lib/i18n.mjs';
8
9
 
9
10
  const __filename = fileURLToPath(import.meta.url);
10
11
  const __dirname = dirname(__filename);
@@ -55,7 +56,6 @@ printLogo();
55
56
  console.log(`${' '.repeat(68)}${dim('AI Tools')}`)
56
57
  console.log('');
57
58
  console.log(` ${green('Claude Code · GitHub Copilot · Cursor · Gemini · Junie · GSD')}`);
58
- console.log(` ${dim('Jeden konfigurator — wszystkie agenty gotowe')}`);
59
59
  console.log('');
60
60
 
61
61
  try {
@@ -64,9 +64,9 @@ try {
64
64
  await install(ROOT, answers);
65
65
  } catch (err) {
66
66
  if (err.message === 'USER_ABORT') {
67
- console.log(`\n ${yellow('Przerwano.')}\n`);
67
+ console.log(`\n ${yellow(t('cli.abort'))}\n`);
68
68
  process.exit(0);
69
69
  }
70
- console.error(`\n ${red('Blad:')} ${err.message}\n`);
70
+ console.error(`\n ${red(t('cli.error'))} ${err.message}\n`);
71
71
  process.exit(1);
72
72
  }
package/lib/i18n.mjs ADDED
@@ -0,0 +1,380 @@
1
+ // ─── Internationalization ───
2
+
3
+ let currentLang = 'pl';
4
+
5
+ export function setLang(lang) {
6
+ currentLang = lang;
7
+ }
8
+
9
+ export function getLang() {
10
+ return currentLang;
11
+ }
12
+
13
+ export function t(key) {
14
+ const dict = translations[currentLang] || translations.pl;
15
+ return dict[key] || translations.pl[key] || key;
16
+ }
17
+
18
+ const translations = {
19
+ // ─── Polish ───
20
+ pl: {
21
+ // cli.mjs
22
+ 'cli.subtitle': 'Jeden konfigurator — wszystkie agenty gotowe',
23
+ 'cli.abort': 'Przerwano.',
24
+ 'cli.error': 'Blad:',
25
+
26
+ // Language selection
27
+ 'lang.question': 'Language / Jezyk:',
28
+ 'lang.pl': 'Polski',
29
+ 'lang.en': 'English',
30
+
31
+ // questions.mjs — general
32
+ 'q.quit_hint': 'Wpisz',
33
+ 'q.quit_hint2': 'aby przerwac w dowolnym momencie.',
34
+
35
+ // questions.mjs — project
36
+ 'q.section.project': 'Projekt',
37
+ 'q.project_type': 'Typ projektu:',
38
+ 'q.project_type.new': 'Nowy projekt',
39
+ 'q.project_type.existing': 'Istniejacy projekt',
40
+ 'q.project_type.existing_hint': '(aktualizacja)',
41
+ 'q.project_name': 'Nazwa projektu',
42
+ 'q.project_desc': 'Krotki opis projektu',
43
+ 'q.tech_stack': 'Tech stack (np. Vue 3 + TS, Laravel 12 + PHP 8.4)',
44
+ 'q.target_dir': 'Katalog docelowy (sciezka)',
45
+
46
+ // questions.mjs — auto-detect
47
+ 'q.autodetect.platform': 'platforma',
48
+ 'q.autodetect.jira': 'JIRA',
49
+ 'q.autodetect.branch': 'branch',
50
+
51
+ // questions.mjs — existing project
52
+ 'q.existing.detected': 'Wykryte pliki konfiguracji:',
53
+ 'q.existing.action': 'Co chcesz zrobic?',
54
+ 'q.existing.overwrite': 'Nadpisz wszystko',
55
+ 'q.existing.overwrite_hint': '(pelna reinstalacja)',
56
+ 'q.existing.skip': 'Tylko nowe pliki',
57
+ 'q.existing.skip_hint': '(zachowaj istniejace)',
58
+ 'q.existing.mcp_only': 'Tylko konfiguracja MCP',
59
+ 'q.existing.continue': 'Kontynuowac?',
60
+
61
+ // questions.mjs — packs
62
+ 'q.section.packs': 'Pakiety instrukcji i skilli',
63
+ 'q.packs.select': 'Wybierz pakiety:',
64
+ 'q.packs.instr': 'instr.',
65
+ 'q.packs.skill_one': 'skill',
66
+ 'q.packs.skill_many': 'skilli',
67
+
68
+ // questions.mjs — skills
69
+ 'q.section.skills': 'Skille',
70
+ 'q.skills.select': 'Wybierz skille:',
71
+ 'q.skills.base': 'bazowy',
72
+ 'q.skills.none': 'Brak dostepnych skilli',
73
+
74
+ // questions.mjs — placeholders
75
+ 'q.section.placeholders': 'Sciezki i konfiguracja',
76
+
77
+ // questions.mjs — tools
78
+ 'q.section.tools': 'Narzedzia AI',
79
+ 'q.tools.select': 'Wybierz narzedzia:',
80
+
81
+ // questions.mjs — commands
82
+ 'q.section.commands': 'Komendy',
83
+ 'q.cmd.test': 'Komenda testow',
84
+ 'q.cmd.build': 'Komenda builda',
85
+ 'q.cmd.lint': 'Komenda lintera',
86
+
87
+ // questions.mjs — CI
88
+ 'q.section.ci': 'CI / Quality',
89
+ 'q.ci.command': 'Komenda CI (wszystkie checki)',
90
+
91
+ // questions.mjs — JIRA
92
+ 'q.section.jira': 'JIRA',
93
+ 'q.jira.prefix': 'Prefix taskow JIRA',
94
+
95
+ // questions.mjs — MCP
96
+ 'q.section.mcp': 'Serwery MCP',
97
+ 'q.mcp.for': 'MCP dla:',
98
+ 'q.mcp.required_by': 'wymagane przez',
99
+ 'q.mcp.select': 'Wybierz serwery MCP:',
100
+ 'q.mcp.needs_token': '(wymaga tokena)',
101
+ 'q.mcp.no_token': '(bez tokenow)',
102
+ 'q.mcp.config': 'Konfiguracja',
103
+
104
+ // questions.mjs — MCP credentials
105
+ 'q.mcp.jira_url': 'Jira URL',
106
+ 'q.mcp.jira_email': 'Jira email',
107
+ 'q.mcp.jira_token': 'Jira API token',
108
+ 'q.mcp.bb_email': 'Bitbucket email',
109
+ 'q.mcp.bb_token': 'Bitbucket app password',
110
+ 'q.mcp.figma_token': 'Figma access token',
111
+ 'q.mcp.grafana_url': 'Grafana URL',
112
+ 'q.mcp.grafana_token': 'Grafana service account token',
113
+
114
+ // questions.mjs — CLI deps
115
+ 'q.cli.not_found': 'nie znaleziony',
116
+ 'q.cli.required_by': 'wymagany przez',
117
+
118
+ // questions.mjs — CLI install
119
+ 'q.section.cli': 'Instalacja CLI',
120
+ 'q.cli.install': 'Zainstalowac/zaktualizowac:',
121
+
122
+ // questions.mjs — summary
123
+ 'q.section.summary': 'Podsumowanie',
124
+ 'q.summary.project': 'Projekt',
125
+ 'q.summary.desc': 'Opis',
126
+ 'q.summary.tech': 'Tech stack',
127
+ 'q.summary.dir': 'Katalog',
128
+ 'q.summary.mode': 'Tryb',
129
+ 'q.summary.mode.fresh': 'nowy',
130
+ 'q.summary.packs': 'Pakiety',
131
+ 'q.summary.tools': 'Narzedzia',
132
+ 'q.summary.skills': 'Skille',
133
+ 'q.summary.jira': 'JIRA prefix',
134
+ 'q.summary.mcp': 'MCP serwery',
135
+ 'q.summary.install': 'Instalacja',
136
+ 'q.summary.gsd': 'GSD bootstrap',
137
+ 'q.summary.none': 'brak',
138
+ 'q.summary.continue': 'Kontynuowac instalacje?',
139
+
140
+ // installer.mjs
141
+ 'i.section.install': 'Instalacja',
142
+ 'i.mode.fresh': 'nowy projekt',
143
+ 'i.mode.overwrite': 'nadpisz wszystko',
144
+ 'i.mode.skip': 'tylko nowe pliki',
145
+ 'i.mode.mcp': 'tylko MCP',
146
+ 'i.dir': 'Katalog:',
147
+ 'i.mode_label': 'Tryb:',
148
+ 'i.step.base': 'Szablony bazowe',
149
+ 'i.step.pack': 'Pakiet',
150
+ 'i.step.guidelines': 'Skladanie',
151
+ 'i.step.mirror': 'Mirror',
152
+ 'i.step.mcp': 'Konfiguracja MCP',
153
+ 'i.step.cli': 'Instalacja CLI',
154
+
155
+ // installer.mjs — MCP
156
+ 'i.mcp.none': 'Brak serwerow MCP do skonfigurowania',
157
+ 'i.mcp.registered': 'zarejestrowany',
158
+ 'i.mcp.reg_failed': 'rejestracja nie powiodla sie',
159
+ 'i.mcp.no_cli': 'Claude CLI nie znaleziony — MCP zapisany w pliku',
160
+
161
+ // installer.mjs — CLI install
162
+ 'i.cli.skip': 'Pominieto instalacje CLI',
163
+ 'i.cli.installing_claude': 'Instaluje Claude Code CLI...',
164
+ 'i.cli.claude_ok': 'Claude Code CLI zainstalowany',
165
+ 'i.cli.claude_fail': 'Blad instalacji Claude Code CLI',
166
+ 'i.cli.try_manual': 'Sprobuj recznie:',
167
+ 'i.cli.installing_gsd': 'Instaluje GSD (Get Shit Done)...',
168
+ 'i.cli.gsd_ok': 'GSD zainstalowany',
169
+ 'i.cli.gsd_fail': 'Blad instalacji GSD',
170
+
171
+ // installer.mjs — next steps
172
+ 'i.done.mcp': 'Konfiguracja MCP zakonczona!',
173
+ 'i.done.install': 'Instalacja zakonczona!',
174
+ 'i.done.check_mcp': 'Sprawdz MCP:',
175
+ 'i.done.install_gsd': 'Zainstaluj GSD',
176
+ 'i.done.required': '(wymagane)',
177
+ 'i.done.review': 'Przejrzyj',
178
+ 'i.done.review2': 'i dostosuj do projektu',
179
+ 'i.done.check_mcp_label': 'Sprawdz MCP',
180
+ 'i.done.start_gsd': 'Rozpocznij prace z GSD',
181
+ 'i.done.next_steps': 'Nastepne kroki:',
182
+
183
+ // installer.mjs — GSD bootstrap
184
+ 'i.gsd.no_cli': 'Claude CLI nie znaleziony — uruchom recznie po instalacji:',
185
+ 'i.gsd.section_map': 'GSD: Mapowanie codebase',
186
+ 'i.gsd.map_ok': 'map-codebase zakonczone',
187
+ 'i.gsd.map_fail': 'map-codebase nie powiodl sie',
188
+ 'i.gsd.section_init': 'GSD: Inicjalizacja projektu',
189
+ 'i.gsd.init_ok': 'new-project zakonczone',
190
+ 'i.gsd.init_fail': 'new-project nie powiodl sie',
191
+
192
+ // ui.mjs
193
+ 'ui.skipped': '(pominieto)',
194
+
195
+ // utils.mjs
196
+ 'u.nav.radio': '↑↓ nawigacja · enter = zatwierdz',
197
+ 'u.nav.checkbox': '↑↓ nawigacja · spacja = przelacz · enter = zatwierdz',
198
+ },
199
+
200
+ // ─── English ───
201
+ en: {
202
+ // cli.mjs
203
+ 'cli.subtitle': 'One configurator — all agents ready',
204
+ 'cli.abort': 'Aborted.',
205
+ 'cli.error': 'Error:',
206
+
207
+ // Language selection
208
+ 'lang.question': 'Language / Jezyk:',
209
+ 'lang.pl': 'Polski',
210
+ 'lang.en': 'English',
211
+
212
+ // questions.mjs — general
213
+ 'q.quit_hint': 'Type',
214
+ 'q.quit_hint2': 'to abort at any time.',
215
+
216
+ // questions.mjs — project
217
+ 'q.section.project': 'Project',
218
+ 'q.project_type': 'Project type:',
219
+ 'q.project_type.new': 'New project',
220
+ 'q.project_type.existing': 'Existing project',
221
+ 'q.project_type.existing_hint': '(update)',
222
+ 'q.project_name': 'Project name',
223
+ 'q.project_desc': 'Short project description',
224
+ 'q.tech_stack': 'Tech stack (e.g. Vue 3 + TS, Laravel 12 + PHP 8.4)',
225
+ 'q.target_dir': 'Target directory (path)',
226
+
227
+ // questions.mjs — auto-detect
228
+ 'q.autodetect.platform': 'platform',
229
+ 'q.autodetect.jira': 'JIRA',
230
+ 'q.autodetect.branch': 'branch',
231
+
232
+ // questions.mjs — existing project
233
+ 'q.existing.detected': 'Detected config files:',
234
+ 'q.existing.action': 'What do you want to do?',
235
+ 'q.existing.overwrite': 'Overwrite everything',
236
+ 'q.existing.overwrite_hint': '(full reinstall)',
237
+ 'q.existing.skip': 'Only new files',
238
+ 'q.existing.skip_hint': '(keep existing)',
239
+ 'q.existing.mcp_only': 'MCP configuration only',
240
+ 'q.existing.continue': 'Continue?',
241
+
242
+ // questions.mjs — packs
243
+ 'q.section.packs': 'Instruction & skill packs',
244
+ 'q.packs.select': 'Select packs:',
245
+ 'q.packs.instr': 'instr.',
246
+ 'q.packs.skill_one': 'skill',
247
+ 'q.packs.skill_many': 'skills',
248
+
249
+ // questions.mjs — skills
250
+ 'q.section.skills': 'Skills',
251
+ 'q.skills.select': 'Select skills:',
252
+ 'q.skills.base': 'base',
253
+ 'q.skills.none': 'No skills available',
254
+
255
+ // questions.mjs — placeholders
256
+ 'q.section.placeholders': 'Paths & configuration',
257
+
258
+ // questions.mjs — tools
259
+ 'q.section.tools': 'AI Tools',
260
+ 'q.tools.select': 'Select tools:',
261
+
262
+ // questions.mjs — commands
263
+ 'q.section.commands': 'Commands',
264
+ 'q.cmd.test': 'Test command',
265
+ 'q.cmd.build': 'Build command',
266
+ 'q.cmd.lint': 'Lint command',
267
+
268
+ // questions.mjs — CI
269
+ 'q.section.ci': 'CI / Quality',
270
+ 'q.ci.command': 'CI command (all checks)',
271
+
272
+ // questions.mjs — JIRA
273
+ 'q.section.jira': 'JIRA',
274
+ 'q.jira.prefix': 'JIRA task prefix',
275
+
276
+ // questions.mjs — MCP
277
+ 'q.section.mcp': 'MCP Servers',
278
+ 'q.mcp.for': 'MCP for:',
279
+ 'q.mcp.required_by': 'required by',
280
+ 'q.mcp.select': 'Select MCP servers:',
281
+ 'q.mcp.needs_token': '(requires token)',
282
+ 'q.mcp.no_token': '(no tokens needed)',
283
+ 'q.mcp.config': 'Configuration',
284
+
285
+ // questions.mjs — MCP credentials
286
+ 'q.mcp.jira_url': 'Jira URL',
287
+ 'q.mcp.jira_email': 'Jira email',
288
+ 'q.mcp.jira_token': 'Jira API token',
289
+ 'q.mcp.bb_email': 'Bitbucket email',
290
+ 'q.mcp.bb_token': 'Bitbucket app password',
291
+ 'q.mcp.figma_token': 'Figma access token',
292
+ 'q.mcp.grafana_url': 'Grafana URL',
293
+ 'q.mcp.grafana_token': 'Grafana service account token',
294
+
295
+ // questions.mjs — CLI deps
296
+ 'q.cli.not_found': 'not found',
297
+ 'q.cli.required_by': 'required by',
298
+
299
+ // questions.mjs — CLI install
300
+ 'q.section.cli': 'CLI Installation',
301
+ 'q.cli.install': 'Install/update:',
302
+
303
+ // questions.mjs — summary
304
+ 'q.section.summary': 'Summary',
305
+ 'q.summary.project': 'Project',
306
+ 'q.summary.desc': 'Description',
307
+ 'q.summary.tech': 'Tech stack',
308
+ 'q.summary.dir': 'Directory',
309
+ 'q.summary.mode': 'Mode',
310
+ 'q.summary.mode.fresh': 'new',
311
+ 'q.summary.packs': 'Packs',
312
+ 'q.summary.tools': 'Tools',
313
+ 'q.summary.skills': 'Skills',
314
+ 'q.summary.jira': 'JIRA prefix',
315
+ 'q.summary.mcp': 'MCP servers',
316
+ 'q.summary.install': 'Installation',
317
+ 'q.summary.gsd': 'GSD bootstrap',
318
+ 'q.summary.none': 'none',
319
+ 'q.summary.continue': 'Continue installation?',
320
+
321
+ // installer.mjs
322
+ 'i.section.install': 'Installation',
323
+ 'i.mode.fresh': 'new project',
324
+ 'i.mode.overwrite': 'overwrite all',
325
+ 'i.mode.skip': 'new files only',
326
+ 'i.mode.mcp': 'MCP only',
327
+ 'i.dir': 'Directory:',
328
+ 'i.mode_label': 'Mode:',
329
+ 'i.step.base': 'Base templates',
330
+ 'i.step.pack': 'Pack',
331
+ 'i.step.guidelines': 'Assembling',
332
+ 'i.step.mirror': 'Mirror',
333
+ 'i.step.mcp': 'MCP configuration',
334
+ 'i.step.cli': 'CLI installation',
335
+
336
+ // installer.mjs — MCP
337
+ 'i.mcp.none': 'No MCP servers to configure',
338
+ 'i.mcp.registered': 'registered',
339
+ 'i.mcp.reg_failed': 'registration failed',
340
+ 'i.mcp.no_cli': 'Claude CLI not found — MCP saved to file',
341
+
342
+ // installer.mjs — CLI install
343
+ 'i.cli.skip': 'CLI installation skipped',
344
+ 'i.cli.installing_claude': 'Installing Claude Code CLI...',
345
+ 'i.cli.claude_ok': 'Claude Code CLI installed',
346
+ 'i.cli.claude_fail': 'Claude Code CLI installation failed',
347
+ 'i.cli.try_manual': 'Try manually:',
348
+ 'i.cli.installing_gsd': 'Installing GSD (Get Shit Done)...',
349
+ 'i.cli.gsd_ok': 'GSD installed',
350
+ 'i.cli.gsd_fail': 'GSD installation failed',
351
+
352
+ // installer.mjs — next steps
353
+ 'i.done.mcp': 'MCP configuration complete!',
354
+ 'i.done.install': 'Installation complete!',
355
+ 'i.done.check_mcp': 'Check MCP:',
356
+ 'i.done.install_gsd': 'Install GSD',
357
+ 'i.done.required': '(required)',
358
+ 'i.done.review': 'Review',
359
+ 'i.done.review2': 'and customize for your project',
360
+ 'i.done.check_mcp_label': 'Check MCP',
361
+ 'i.done.start_gsd': 'Start working with GSD',
362
+ 'i.done.next_steps': 'Next steps:',
363
+
364
+ // installer.mjs — GSD bootstrap
365
+ 'i.gsd.no_cli': 'Claude CLI not found — run manually after installation:',
366
+ 'i.gsd.section_map': 'GSD: Codebase mapping',
367
+ 'i.gsd.map_ok': 'map-codebase complete',
368
+ 'i.gsd.map_fail': 'map-codebase failed',
369
+ 'i.gsd.section_init': 'GSD: Project initialization',
370
+ 'i.gsd.init_ok': 'new-project complete',
371
+ 'i.gsd.init_fail': 'new-project failed',
372
+
373
+ // ui.mjs
374
+ 'ui.skipped': '(skipped)',
375
+
376
+ // utils.mjs
377
+ 'u.nav.radio': '↑↓ navigate · enter = confirm',
378
+ 'u.nav.checkbox': '↑↓ navigate · space = toggle · enter = confirm',
379
+ },
380
+ };