wizz-method 2.11.2 → 2.13.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.
Files changed (83) hide show
  1. package/README.md +2 -1
  2. package/package.json +1 -1
  3. package/skills-registry.yaml +38 -29
  4. package/src/bmm-skills/module.yaml +1 -1
  5. package/src/modules/lowticket/skills/wizz-lowticket-metodologia/knowledge/04-criativos.md +1 -1
  6. package/src/modules/lowticket/skills/wizz-lowticket-metodologia/knowledge/11-checklist-roi.md +1 -1
  7. package/src/modules/lowticket/skills/wizz-lowticket-metodologia/knowledge/12-mineracao-ofertas.md +1 -1
  8. package/src/modules/lowticket/skills/wizz-lowticket-metodologia/knowledge/pontos-em-aberto.md +2 -2
  9. package/src/modules/wizz/_shared/video-pipeline.md +12 -4
  10. package/src/modules/wizz/agents/wizz-designer/SKILL.md +1 -1
  11. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +1 -1
  12. package/src/modules/wizz/agents/wizz-social/SKILL.md +1 -0
  13. package/src/skills-lib/wizz-remotion-best-practices/rules/sfx.md +3 -1
  14. package/src/skills-lib/wizz-router/references/routing-table-flat.md +3 -2
  15. package/src/skills-lib/wizz-video-effects/SKILL.md +85 -0
  16. package/src/skills-lib/wizz-video-effects/assets/effects.config.template.json +178 -0
  17. package/src/skills-lib/wizz-video-effects/assets/remotion/EffectsLayer.tsx +87 -0
  18. package/src/skills-lib/wizz-video-effects/assets/remotion/README.md +37 -0
  19. package/src/skills-lib/wizz-video-effects/assets/remotion/useEffects.ts +120 -0
  20. package/src/skills-lib/wizz-video-effects/assets/sfx/CREDITS.md +56 -0
  21. package/src/skills-lib/wizz-video-effects/assets/sfx/cash.mp3 +0 -0
  22. package/src/skills-lib/wizz-video-effects/assets/sfx/chime.mp3 +0 -0
  23. package/src/skills-lib/wizz-video-effects/assets/sfx/click-soft.mp3 +0 -0
  24. package/src/skills-lib/wizz-video-effects/assets/sfx/click.mp3 +0 -0
  25. package/src/skills-lib/wizz-video-effects/assets/sfx/coin.mp3 +0 -0
  26. package/src/skills-lib/wizz-video-effects/assets/sfx/error.mp3 +0 -0
  27. package/src/skills-lib/wizz-video-effects/assets/sfx/impact-bass-1.mp3 +0 -0
  28. package/src/skills-lib/wizz-video-effects/assets/sfx/impact-bass-2.mp3 +0 -0
  29. package/src/skills-lib/wizz-video-effects/assets/sfx/key-press.mp3 +0 -0
  30. package/src/skills-lib/wizz-video-effects/assets/sfx/notif.mp3 +0 -0
  31. package/src/skills-lib/wizz-video-effects/assets/sfx/notification.mp3 +0 -0
  32. package/src/skills-lib/wizz-video-effects/assets/sfx/paste.mp3 +0 -0
  33. package/src/skills-lib/wizz-video-effects/assets/sfx/ping.mp3 +0 -0
  34. package/src/skills-lib/wizz-video-effects/assets/sfx/pop.mp3 +0 -0
  35. package/src/skills-lib/wizz-video-effects/assets/sfx/riser-metal.mp3 +0 -0
  36. package/src/skills-lib/wizz-video-effects/assets/sfx/riser.mp3 +0 -0
  37. package/src/skills-lib/wizz-video-effects/assets/sfx/send.mp3 +0 -0
  38. package/src/skills-lib/wizz-video-effects/assets/sfx/sparkle.mp3 +0 -0
  39. package/src/skills-lib/wizz-video-effects/assets/sfx/stamp.mp3 +0 -0
  40. package/src/skills-lib/wizz-video-effects/assets/sfx/success.mp3 +0 -0
  41. package/src/skills-lib/wizz-video-effects/assets/sfx/type.mp3 +0 -0
  42. package/src/skills-lib/wizz-video-effects/assets/sfx/typing.mp3 +0 -0
  43. package/src/skills-lib/wizz-video-effects/assets/sfx/whoosh-cinematic.mp3 +0 -0
  44. package/src/skills-lib/wizz-video-effects/assets/sfx/whoosh-short.mp3 +0 -0
  45. package/src/skills-lib/wizz-video-effects/assets/sfx/whoosh.mp3 +0 -0
  46. package/src/skills-lib/wizz-video-effects/references/audio.md +87 -0
  47. package/src/skills-lib/wizz-video-effects/references/data-contract.md +145 -0
  48. package/src/skills-lib/wizz-video-effects/references/do-not-use.md +54 -0
  49. package/src/skills-lib/wizz-video-effects/references/editing-patterns.md +58 -0
  50. package/src/skills-lib/wizz-video-effects/references/gates.md +37 -0
  51. package/src/skills-lib/wizz-video-effects/references/sfx-licensing.md +40 -0
  52. package/src/skills-lib/wizz-video-effects/references/when-to-use.md +129 -0
  53. package/src/skills-lib/wizz-video-effects/scripts/budget.py +211 -0
  54. package/src/skills-lib/wizz-video-effects/scripts/check_excess.py +218 -0
  55. package/src/skills-lib/wizz-video-effects/scripts/check_loudness.py +175 -0
  56. package/src/skills-lib/wizz-video-effects/scripts/check_rhythm.py +137 -0
  57. package/src/skills-lib/wizz-video-effects/scripts/check_safe_zone.py +221 -0
  58. package/src/skills-lib/wizz-video-effects/scripts/config.py +583 -0
  59. package/src/skills-lib/wizz-video-effects/scripts/fill_breaths.py +355 -0
  60. package/src/skills-lib/wizz-video-effects/scripts/measure_density.py +122 -0
  61. package/src/skills-lib/wizz-video-effects/scripts/normalize_audio.py +189 -0
  62. package/src/skills-lib/wizz-video-effects/scripts/sound.py +342 -0
  63. package/src/skills-lib/wizz-video-effects/scripts/test_budget.py +131 -0
  64. package/src/skills-lib/wizz-video-effects/scripts/test_check_loudness.py +156 -0
  65. package/src/skills-lib/wizz-video-effects/scripts/test_checks.py +190 -0
  66. package/src/skills-lib/wizz-video-effects/scripts/test_config.py +135 -0
  67. package/src/skills-lib/wizz-video-effects/scripts/test_fill_breaths.py +179 -0
  68. package/src/skills-lib/wizz-video-effects/scripts/test_sound.py +173 -0
  69. package/src/skills-lib/wizz-video-effects/scripts/timeline.py +85 -0
  70. package/tools/installer/banner.js +80 -29
  71. package/tools/installer/commands/catalog.js +87 -0
  72. package/tools/installer/commands/install.js +9 -0
  73. package/tools/installer/guided/detect-tools.js +53 -0
  74. package/tools/installer/guided/flow.js +203 -0
  75. package/tools/installer/guided/labels.js +185 -0
  76. package/tools/installer/guided/messages.js +132 -0
  77. package/tools/installer/guided/outro.js +32 -0
  78. package/tools/installer/guided/profiles.js +95 -0
  79. package/tools/installer/guided/steps.js +154 -0
  80. package/tools/installer/install-messages.yaml +3 -3
  81. package/tools/installer/modules/external-manager.js +4 -0
  82. package/tools/installer/ui.js +57 -22
  83. package/wizz-modules.yaml +1 -0
@@ -27,6 +27,9 @@ const { resolveMcps, partitionGloballyConfigured } = require('./modules/mcp-conf
27
27
  const { resolveClis, detectClis } = require('./modules/cli-config');
28
28
  const prompts = require('./prompts');
29
29
  const { parseSetEntries } = require('./set-overrides');
30
+ const { isGuidedEligible, runGuidedInstall } = require('./guided/flow');
31
+ const guidedSteps = require('./guided/steps');
32
+ const { normalizeLang, t: guidedT } = require('./guided/messages');
30
33
 
31
34
  const manifest = new Manifest();
32
35
 
@@ -232,12 +235,21 @@ class UI {
232
235
  * @returns {Object} Installation configuration
233
236
  */
234
237
  async promptInstall(options = {}) {
235
- await CLIUtils.displayLogo();
236
-
237
- // Display version-specific start message from install-messages.yaml
238
- const { MessageLoader } = require('./message-loader');
239
- const messageLoader = new MessageLoader();
240
- await messageLoader.displayStartMessage();
238
+ // Guided path (2026-09-25): first install in an interactive terminal with
239
+ // no scripting flags. The opening screen lists its four steps and the
240
+ // language comes first; everything else keeps the legacy flow.
241
+ const guided = isGuidedEligible(options);
242
+ let lang = normalizeLang(options.lang) || 'en';
243
+ await CLIUtils.displayLogo({ steps: guided, lang, version: installerPackageJson.version });
244
+
245
+ if (guided) {
246
+ if (!normalizeLang(options.lang)) lang = await guidedSteps.askLanguage();
247
+ } else {
248
+ // Display version-specific start message from install-messages.yaml
249
+ const { MessageLoader } = require('./message-loader');
250
+ const messageLoader = new MessageLoader();
251
+ await messageLoader.displayStartMessage();
252
+ }
241
253
 
242
254
  // Probe the local Python before any other prompts. Since audit item 29
243
255
  // (2026-09-12) this is INFORMATIONAL only: Node is the sole prerequisite
@@ -285,6 +297,9 @@ class UI {
285
297
  }
286
298
  confirmedDirectory = expandedDir;
287
299
  await prompts.log.info(`Using directory from command-line: ${confirmedDirectory}`);
300
+ } else if (guided) {
301
+ await guidedSteps.stepHeader(lang, 1);
302
+ confirmedDirectory = await guidedSteps.askDirectory(this, lang);
288
303
  } else {
289
304
  confirmedDirectory = await this.getConfirmedDirectory();
290
305
  }
@@ -297,6 +312,13 @@ class UI {
297
312
  // Track action type (only set if there's an existing installation)
298
313
  let actionType;
299
314
 
315
+ if (guided && !hasExistingInstall) {
316
+ return runGuidedInstall(this, options, { directory: confirmedDirectory, lang, channelOptions });
317
+ }
318
+ if (guided && hasExistingInstall) {
319
+ await prompts.log.info(guidedT(lang, 'existingFound'));
320
+ }
321
+
300
322
  // Only show action menu if there's an existing installation
301
323
  if (hasExistingInstall) {
302
324
  // Get version information
@@ -310,12 +332,16 @@ class UI {
310
332
  choices.push({
311
333
  name: 'Quick Update',
312
334
  value: 'quick-update',
313
- hint: 'Atualiza só os módulos instalados. Não instala skills/MCPs/CLIs novos (use Modify Wizz Installation para isso)',
335
+ hint: 'Refresh the installed modules only; use Modify to add skills, MCPs or CLIs',
314
336
  });
315
337
  }
316
338
 
317
339
  // Common actions
318
- choices.push({ name: 'Modify Wizz Installation', value: 'update' });
340
+ choices.push({
341
+ name: 'Modify Wizz Installation',
342
+ value: 'update',
343
+ hint: 'Add or remove modules and AI tools, and review the settings',
344
+ });
319
345
 
320
346
  // Check if action is provided via command-line
321
347
  if (options.action) {
@@ -703,7 +729,7 @@ class UI {
703
729
  if (options.yes) return { toWrite: [], toRecommend: resolved };
704
730
 
705
731
  const selected = await prompts.multiselect({
706
- message: 'Quais MCPs configurar no .mcp.json? (não marcados viram comando pra rodar depois)',
732
+ message: options.mcpMessage || 'Quais MCPs configurar no .mcp.json? (não marcados viram comando pra rodar depois)',
707
733
  options: resolved.map((m) => ({
708
734
  label: m.id,
709
735
  value: m.id,
@@ -780,15 +806,24 @@ class UI {
780
806
  // PRE-CHECKED, so pressing enter installs them; everything else stays
781
807
  // unchecked. Nothing installs à revelia — a recommended entry can still be
782
808
  // unchecked here, and the --yes/non-TTY paths above never reach this.
809
+ // The guided installer passes its own message and option builder (short
810
+ // translated description + requirement badges instead of the raw `when`).
811
+ const defaultOption = (c) => ({
812
+ label: c.recommended ? `${c.id} (recomendado)` : c.id,
813
+ value: c.id,
814
+ // M27/M14: prefer the upgrade/verify-failure reason when present —
815
+ // more actionable than the generic `when` in those two cases.
816
+ hint: c.upgradeMessage || c.verifyWarning || c.when,
817
+ });
818
+ const buildOption = options.cliOption
819
+ ? (c) => {
820
+ const option = options.cliOption(c);
821
+ return c.upgradeMessage || c.verifyWarning ? { ...option, hint: c.upgradeMessage || c.verifyWarning } : option;
822
+ }
823
+ : defaultOption;
783
824
  const selected = await prompts.multiselect({
784
- message: 'Quais CLIs instalar agora? (não marcados viram comando pra rodar depois)',
785
- options: missing.map((c) => ({
786
- label: c.recommended ? `${c.id} (recomendado)` : c.id,
787
- value: c.id,
788
- // M27/M14: prefer the upgrade/verify-failure reason when present —
789
- // more actionable than the generic `when` in those two cases.
790
- hint: c.upgradeMessage || c.verifyWarning || c.when,
791
- })),
825
+ message: options.cliMessage || 'Quais CLIs instalar agora? (não marcados viram comando pra rodar depois)',
826
+ options: missing.map((c) => buildOption(c)),
792
827
  initialValues: missing.filter((c) => c.recommended).map((c) => c.id),
793
828
  required: false,
794
829
  });
@@ -1185,19 +1220,19 @@ class UI {
1185
1220
  const coreConfig = {};
1186
1221
  if (options.userName) {
1187
1222
  coreConfig.user_name = options.userName;
1188
- await prompts.log.info(`Using user name from command-line: ${options.userName}`);
1223
+ if (!options.quiet) await prompts.log.info(`Using user name from command-line: ${options.userName}`);
1189
1224
  }
1190
1225
  if (options.communicationLanguage) {
1191
1226
  coreConfig.communication_language = options.communicationLanguage;
1192
- await prompts.log.info(`Using communication language from command-line: ${options.communicationLanguage}`);
1227
+ if (!options.quiet) await prompts.log.info(`Using communication language from command-line: ${options.communicationLanguage}`);
1193
1228
  }
1194
1229
  if (options.documentOutputLanguage) {
1195
1230
  coreConfig.document_output_language = options.documentOutputLanguage;
1196
- await prompts.log.info(`Using document output language from command-line: ${options.documentOutputLanguage}`);
1231
+ if (!options.quiet) await prompts.log.info(`Using document output language from command-line: ${options.documentOutputLanguage}`);
1197
1232
  }
1198
1233
  if (options.outputFolder) {
1199
1234
  coreConfig.output_folder = options.outputFolder;
1200
- await prompts.log.info(`Using output folder from command-line: ${options.outputFolder}`);
1235
+ if (!options.quiet) await prompts.log.info(`Using output folder from command-line: ${options.outputFolder}`);
1201
1236
  }
1202
1237
 
1203
1238
  // Load existing config to merge with provided options
@@ -1234,7 +1269,7 @@ class UI {
1234
1269
  document_output_language: 'English',
1235
1270
  output_folder: '_wizz-output',
1236
1271
  };
1237
- await prompts.log.info('Using default configuration (--yes flag)');
1272
+ if (!options.quiet) await prompts.log.info('Using default configuration (--yes flag)');
1238
1273
  }
1239
1274
  }
1240
1275
 
package/wizz-modules.yaml CHANGED
@@ -145,6 +145,7 @@ modules:
145
145
  code: automator
146
146
  name: "Wizz Automator Epic Builder Experimental"
147
147
  description: "EXPERIMENTAL: only supports claude and codex currently"
148
+ advanced_only: true
148
149
  defaultSelected: false
149
150
  type: experimental
150
151
  npmPackage: bmad-story-automator