wizz-method 1.1.0 → 1.2.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
3
  "name": "wizz-method",
4
- "version": "1.1.0",
4
+ "version": "1.2.0",
5
5
  "description": "Wizz Method — método de agência orientado por IA em PT-BR (fork independente do BMad Method)",
6
6
  "keywords": [
7
7
  "agile",
@@ -58,6 +58,24 @@ areas:
58
58
  args: ["-y", "@21st-dev/magic"]
59
59
  env:
60
60
  API_KEY: "${MAGIC_API_KEY}"
61
+ clis:
62
+ - id: hyperframes
63
+ when: "Renderizar vídeo a partir de HTML/CSS/animação (HTML→MP4, agent-native, 20+ skills). Alternativa HTML-nativa ao Remotion (que é React). Precisa ffmpeg + Node 22 + Chrome headless."
64
+ check: "npx --yes hyperframes --version"
65
+ install: "npx skills add heygen-com/hyperframes"
66
+ - id: claude-video
67
+ when: "Analisar/entender vídeo EXISTENTE: baixa, extrai frames e transcreve para resumir, achar momentos ou diagnosticar footage. NÃO cria vídeo. Precisa ffmpeg + yt-dlp (+ Groq/OpenAI p/ transcrição sem legenda)."
68
+ check: "test -d $HOME/.claude/skills/watch"
69
+ install: "npx skills add bradautomates/claude-video"
70
+ - id: buttercut
71
+ when: "EDITAR vídeo por IA: cortes, selects, cenas, roughcut via XML/FFmpeg. Sugerir quando o pedido for editar/cortar vídeo. Clone-and-run no PROJETO (não é skill add), pesado: Ruby + Python + FFmpeg + WhisperX. AVISOS: ~GB de modelos (WhisperX), build demorado, só Apple Silicon."
72
+ platform: darwin-arm64
73
+ check: "test -d ./buttercut"
74
+ install: "git clone https://github.com/barefootford/buttercut.git"
75
+ - id: voicebox
76
+ when: "Voz/TTS/clonagem de voz local para narração/VO de vídeo (7 engines TTS + Whisper STT). App desktop que expõe endpoint MCP local em runtime. Clone-and-run no projeto."
77
+ check: "test -d ./voicebox"
78
+ install: "git clone https://github.com/jamiepine/voicebox.git"
61
79
  references:
62
80
  - "references/premium-agency-rules.md (regras $150k-tier, importadas por impeccable/huashu no modo high-end)"
63
81
 
@@ -92,6 +110,11 @@ areas:
92
110
  when: "Gerar páginas em escala pra atacar muitas keywords."
93
111
  - id: site-architecture
94
112
  when: "Arquitetura de site / topic clusters / estrutura de URLs."
113
+ clis:
114
+ - id: distribb
115
+ when: "EXECUTAR distribuição de SEO: publicar artigos + construir backlinks pela rede da Distribb, conectar Google Search Console, autopublicar notícias. Complementa (não duplica) as skills de SEO que só geram/auditam. Requer Distribb API + GSC (+ DataForSEO/Ahrefs no plano free)."
116
+ check: "ls $HOME/.claude/skills 2>/dev/null | grep -qi distribb"
117
+ install: "npx skills add Bomx/distribb-skill"
95
118
 
96
119
  growth:
97
120
  agent: wizz-growth
@@ -137,6 +160,12 @@ areas:
137
160
  when: "Montar A/B test / experimento de conversão."
138
161
  - id: analytics-tracking
139
162
  when: "Setar/auditar tracking e medição (GA4, GTM, eventos, UTM, atribuição)."
163
+ mcps:
164
+ - id: scrapling
165
+ when: "Scraping/crawl web para pesquisa de mercado, prospecção de leads e inteligência competitiva. Bypass anti-bot (Cloudflare), parsing adaptativo, spider concorrente. Requer: pip install 'scrapling[ai]' && scrapling install."
166
+ server:
167
+ command: scrapling
168
+ args: ["mcp"]
140
169
 
141
170
  ads:
142
171
  agent: wizz-ads
@@ -156,6 +185,11 @@ areas:
156
185
  args: ["-y", "mcp-meta-ads"]
157
186
  env:
158
187
  META_ACCESS_TOKEN: "${META_ACCESS_TOKEN}"
188
+ clis:
189
+ - id: arcads
190
+ when: "GERAR vídeo-ad e imagem por IA (Seedance/Sora/Veo/Kling/OmniHuman + Nano Banana) e publicar como Meta ad. Clone-and-run no projeto: git clone + ./scripts/setup.sh; precisa Python 3.10+ e ARCADS API key em .env (META_ACCESS_TOKEN opcional p/ publicar)."
191
+ check: "test -d ./arcads-claude-code"
192
+ install: "git clone https://github.com/krusemediallc/arcads-claude-code.git"
159
193
 
160
194
  architect:
161
195
  agent: wizz-agent-architect
@@ -73,6 +73,7 @@ O roteamento tem duas fontes que você lê juntas, e NENHUMA é uma tabela fixa
73
73
  - `areas:` — `agent` (deve casar com o do menu) e `skills:` (cada uma com `id` + `when` curto). Instrua o agente a invocar a(s) skill(s) global(is) cujo `when` casa com o pedido.
74
74
  - `utility:` — skills cross-cutting (graphify, find-skills, enhance-prompt, wizz-router). Ofereça quando couber.
75
75
  - `mcps:` (por área) e `mcp_utility:` (cross-cutting) — MCP servers que a área usa pra AGIR de verdade (ex: designer→magic, architect→supabase, ads→meta-ads, analyst→exa, util→context7; qa NÃO usa MCP de browser — é agent-browser via CLI). Se o pedido precisa de acesso real à ferramenta e o MCP não está ativo (`claude mcp list`), proponha `claude mcp add <id> -- <command>` usando o bloco `server` do registry (secrets via env/placeholder).
76
+ - `clis:` (por área) e `cli_utility:` (cross-cutting) — ferramentas de linha de comando que o agente chama direto (não são skill nem MCP): ex. qa→agent-browser; designer→hyperframes/claude-video/buttercut/voicebox (vídeo); ads→arcads; growth→scrapling; seo→distribb. Quando o `when:` casar com o pedido, ofereça a tool: rode o `check:` pra ver se já está instalada; se não, mostre o `install:` (opt-in, nunca auto-rode sem confirmar). Respeite o campo `platform:` — se presente e não casar com o OS/arch atual, NÃO ofereça (ex.: `buttercut` é `darwin-arm64`, só Apple Silicon). Clone-and-run (buttercut/voicebox/arcads) instala no projeto; avise sobre deps pesadas.
76
77
  - `squads:` — painéis consultivos (rodam via `wizz-party-mode`). Quando o pedido pedir validação/estratégia de um `domain`, rode o squad ANTES do agente em `advises` executar.
77
78
 
78
79
  Em resumo: **menu escolhe o agente, registry escolhe a(s) skill(s) e os squads.** Os papéis de dev/produto reusam os agentes WIZZ; os de agência são os `wizz-*`. Não memorize nomes de agente aqui — eles vêm do menu e do campo `agent:` do registry.
@@ -140,7 +140,12 @@ Se nenhuma skill/MCP instalado mapear o pedido, primeiro **classifique o que fal
140
140
  | Qualidade de design, anti-slop, gosto visual, estética, olhar crítico | `taste-skill` (se instalada) | 1 |
141
141
  | Regras de frontend, código UI determinístico, 44 regras, audit de frontend | `impeccable` (se instalada) | 2 |
142
142
  | Design system HTML-native, filosofia visual, review 5-dim, export MP4 | `huashu-design` (se instalada) | 2 |
143
- | Animação, motion, vídeo, Remotion, Three.js, 3D, WebGL | `motion-3d-director` + `remotion-best-practices` | 1 |
143
+ | Animação, motion, vídeo programático em código, Remotion, Three.js, 3D, WebGL | `motion-3d-director` + `remotion-best-practices` | 1 |
144
+ | Renderizar vídeo de HTML/CSS (HTML→MP4, agent-native) | CLI `hyperframes` (registry designer; `npx skills add heygen-com/hyperframes`) | 2 |
145
+ | **Editar/cortar vídeo** (cortes, selects, roughcut) | CLI `buttercut` (registry designer; **só Apple Silicon**, clone-and-run no projeto, deps pesadas) | 1 |
146
+ | Gerar vídeo-ad/imagem por IA (Sora/Veo/Kling) + publicar Meta | CLI `arcads` (registry `ads`; git clone + Arcads API key) | 1 |
147
+ | Analisar/entender vídeo existente (frames + transcrição) | CLI `claude-video` (registry designer; `npx skills add bradautomates/claude-video`) | 2 |
148
+ | Narração / voz / TTS / clonagem de voz para vídeo | CLI `voicebox` (registry designer; app local com endpoint MCP) | 2 |
144
149
  | Componentes prontos via Magic (21st.dev) | Use diretamente: `mcp__magic__21st_magic_component_inspiration` / `mcp__magic__21st_magic_component_builder` | 1 |
145
150
 
146
151
  ### Área de Marketing / Growth
@@ -46,17 +46,45 @@ async function defaultExec(command, { timeoutMs = 300_000 } = {}) {
46
46
  }
47
47
  }
48
48
 
49
+ /**
50
+ * Current "<platform>-<arch>" tag (e.g. "darwin-arm64"). Injectable for tests.
51
+ * @returns {string}
52
+ */
53
+ function currentPlatformTag() {
54
+ return `${process.platform}-${process.arch}`;
55
+ }
56
+
57
+ /**
58
+ * A CLI entry may declare `platform:` to gate it to specific OS/arch combos —
59
+ * e.g. a tool that only builds on Apple Silicon. Accepts a string or array of
60
+ * tokens matched against the current tag: a full "darwin-arm64", a bare OS
61
+ * ("darwin"), or a bare arch ("arm64"). No `platform` field => runs everywhere.
62
+ * @param {{platform?: string|string[]}} cli
63
+ * @param {string} tag - Current "<platform>-<arch>" tag
64
+ * @returns {boolean}
65
+ */
66
+ function matchesPlatform(cli, tag) {
67
+ const p = cli && cli.platform;
68
+ if (!p) return true;
69
+ const wanted = Array.isArray(p) ? p : [p];
70
+ const [os, arch] = tag.split('-');
71
+ return wanted.some((w) => w === tag || w === os || w === arch);
72
+ }
73
+
49
74
  /**
50
75
  * Resolve the recommended CLI entries for the chosen areas, deduped by id.
51
76
  * Empty / undefined / containing 'all' means every area. The cross-cutting
52
77
  * `cli_utility:` tools are always included. Entries missing `id` or `install`
53
- * are dropped — a CLI we cannot install is not actionable.
78
+ * are dropped — a CLI we cannot install is not actionable. Entries whose
79
+ * `platform:` gate does not match the current OS/arch are dropped too, so a
80
+ * Mac-only tool is never even suggested on Linux/Windows.
54
81
  *
55
82
  * @param {Object} registry - Parsed skills-registry.yaml
56
83
  * @param {string[]} [selectedAreas] - Area keys to resolve
57
- * @returns {Array<{id: string, when: string, check: string, install: string, areas: string[]}>}
84
+ * @param {string} [platformTag] - Current "<platform>-<arch>" (injectable for tests)
85
+ * @returns {Array<{id: string, when: string, check: string, install: string, platform: (string|string[]|undefined), areas: string[]}>}
58
86
  */
59
- function resolveClis(registry, selectedAreas) {
87
+ function resolveClis(registry, selectedAreas, platformTag = currentPlatformTag()) {
60
88
  const byId = new Map();
61
89
  const areas = (registry && registry.areas) || {};
62
90
  const wantAll = !selectedAreas || selectedAreas.length === 0 || selectedAreas.includes('all');
@@ -64,6 +92,7 @@ function resolveClis(registry, selectedAreas) {
64
92
 
65
93
  const add = (cli, areaKey) => {
66
94
  if (!cli || !cli.id || !cli.install) return; // not actionable without an install command
95
+ if (!matchesPlatform(cli, platformTag)) return; // gated to another OS/arch
67
96
  const existing = byId.get(cli.id);
68
97
  if (existing) {
69
98
  if (areaKey && !existing.areas.includes(areaKey)) existing.areas.push(areaKey);
@@ -74,6 +103,7 @@ function resolveClis(registry, selectedAreas) {
74
103
  when: cli.when || '',
75
104
  check: cli.check || '',
76
105
  install: cli.install,
106
+ platform: cli.platform,
77
107
  areas: areaKey ? [areaKey] : [],
78
108
  });
79
109
  };
@@ -142,4 +172,4 @@ async function installClis({ clis, exec = defaultExec }) {
142
172
  return { installed, failed };
143
173
  }
144
174
 
145
- module.exports = { resolveClis, renderInstallCommand, detectClis, installClis, defaultExec };
175
+ module.exports = { resolveClis, renderInstallCommand, detectClis, installClis, defaultExec, matchesPlatform, currentPlatformTag };