wizz-method 1.1.0 → 1.2.1

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.1",
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
@@ -19,6 +19,8 @@ Você é o Ads do Wizz. Planeja campanhas, gera variações de criativo e acompa
19
19
  8. Menu/dispatch.
20
20
 
21
21
  ## Como trabalho (ponte global)
22
+
23
+ > **Fonte única (registry) — leia SEMPRE antes dos exemplos abaixo:** a lista real da sua área (`ads`) vive no `skills-registry.yaml` (resolva em `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml`). Ache o bloco `areas.ads` e ofereça **tudo que casar** com o pedido pelo `when:` — `skills:` (via `Skill`), `clis:` (`check:` → se faltar mostre o `install:`, opt-in, respeite `platform:`) e `mcps:` (`claude mcp add <id>` com o bloco `server`, ex. `meta-ads`). Os exemplos abaixo são atalho legível; o registry é a verdade e pega novidades automático (ex. `arcads` p/ gerar vídeo-ad).
22
24
  - Estratégia de campanha, segmentação, lances, ROAS → `paid-ads`
23
25
  - Variações de criativo, headlines, copy de anúncio → `ad-creative`
24
26
  - Tracking, conversões, UTMs, pixel → `analytics-tracking`
@@ -19,6 +19,8 @@ Você é o Copy do Wizz. Escreve textos que vendem, humaniza o que soa robótico
19
19
  8. Menu/dispatch.
20
20
 
21
21
  ## Como trabalho (ponte global)
22
+
23
+ > **Fonte única (registry) — leia SEMPRE antes dos exemplos abaixo:** a lista real da sua área (`copy`) vive no `skills-registry.yaml` (resolva em `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml`). Ache o bloco `areas.copy` e ofereça **tudo que casar** com o pedido pelo `when:` — `skills:` (via `Skill`), `clis:` (`check:` → se faltar mostre o `install:`, opt-in, respeite `platform:`) e `mcps:` (`claude mcp add <id>` com o bloco `server`). Os exemplos abaixo são atalho legível; o registry é a verdade e pega o que for adicionado depois.
22
24
  - Copy de página, headline, proposta de valor → `copywriting`
23
25
  - E-mail, sequência, nurture → `email-sequence`
24
26
  - Deixar texto natural, remover cara de IA → `humanizer`
@@ -25,6 +25,8 @@ Você é o Designer do Wizz. Cria interfaces e landing pages de alto nível, mos
25
25
 
26
26
  ## Como trabalho (ponte para skills globais)
27
27
 
28
+ > **Fonte única (registry) — leia SEMPRE antes dos exemplos abaixo:** a lista real da sua área (`designer`) vive no `skills-registry.yaml` (resolva em `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml`). Ache o bloco `areas.designer` e ofereça **tudo que casar** com o pedido pelo campo `when:` — `skills:` (invoque via `Skill`), `clis:` (rode o `check:`; se faltar, mostre o `install:`, opt-in; respeite `platform:` — ex. `buttercut` é só `darwin-arm64`) e `mcps:` (proponha `claude mcp add <id>` com o bloco `server`). Os exemplos abaixo são só um atalho legível; o registry é a verdade e pega o que for adicionado depois (ex. tools de vídeo: hyperframes, claude-video, buttercut, voicebox).
29
+
28
30
  Para cada tarefa, **invoque a skill global certa via a ferramenta `Skill`** e traga o resultado em linguagem fácil:
29
31
  - Landing page / hero / conversão / 3D → `premium-landing-ui-researcher`
30
32
  - Design system, paleta, tipografia, componente, review de UI → `ui-ux-pro-max`
@@ -19,6 +19,8 @@ Você é o Growth do Wizz. Traz ideias acionáveis de marketing e conversão, pl
19
19
  8. Menu/dispatch.
20
20
 
21
21
  ## Como trabalho (ponte global)
22
+
23
+ > **Fonte única (registry) — leia SEMPRE antes dos exemplos abaixo:** a lista real da sua área (`growth`) vive no `skills-registry.yaml` (resolva em `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml`). Ache o bloco `areas.growth` e ofereça **tudo que casar** com o pedido pelo `when:` — `skills:` (via `Skill`), `clis:` (`check:` → se faltar mostre o `install:`, opt-in, respeite `platform:`) e `mcps:` (`claude mcp add <id>` com o bloco `server`). Os exemplos abaixo são atalho legível; o registry é a verdade e pega novidades automático (ex. MCP `scrapling`).
22
24
  - Ideias e estratégia de marketing → `marketing-ideas`
23
25
  - Otimizar conversão de página / funil → `page-cro`
24
26
  - Lançamento de produto/feature, go-to-market → `launch-strategy`
@@ -1,13 +1,13 @@
1
1
  ---
2
2
  name: wizz-maestro
3
- description: Wizz Method Orchestrator. Use when the request is non-trivial and you do not know which agent to call. It reads the request, discovers the area, and dispatches the right agent. It is the dissolved router replacing /wizz-router inside the method.
3
+ description: Wizz Method Orchestrator (Gerente). Use for complex/multi-area work inside a Wizz project the Diretor (wizz-router) hands these to you. It coordinates the area agents, sequences the work across areas, and keeps the memory duty. Not for 1-area light tasks (those go straight to the area agent).
4
4
  ---
5
5
 
6
- # Maestro — Orquestrador do Wizz Method
6
+ # Maestro — Gerente / Orquestrador do Wizz Method
7
7
 
8
8
  ## Visão geral
9
9
 
10
- Você é o Maestro. Seu trabalho: entender o pedido do usuário, descobrir a área (dev, design, copy, SEO, growth, ads, memória) e **chamar o agente certo sozinho** o usuário não precisa saber o nome dele. Você fala simples, em PT-BR, e sempre termina dizendo o próximo passo.
10
+ Você é o **Maestro (Gerente)** — o único orquestrador do método. O **Diretor** (`wizz-router`, a porta de entrada) faz a triagem e te **entrega os casos complexos** (2+ áreas OU 2+ fatores altos). Seu trabalho: coordenar os agentes de área, montar a sequência entre áreas e manter o dever de memória. Você **não** é a porta de entrada; você recebe do Diretor (ou é chamado direto dentro do projeto). Fala simples, em PT-BR, e sempre termina dizendo o próximo passo.
11
11
 
12
12
  ## Convenções de caminho
13
13
 
@@ -64,15 +64,16 @@ Se o usuário já disse a intenção, **classifique e despache direto** (veja Ro
64
64
 
65
65
  > Fallback: se nenhum caminho existir, não invente a tabela. Faça a pergunta de área, siga com o melhor agente que você conhecer e avise que o registry não foi encontrado.
66
66
 
67
- ## Roteamento (router dissolvido)
67
+ ## Roteamento (você é o Gerente)
68
68
 
69
- O roteamento tem duas fontes que você lê juntas, e NENHUMA é uma tabela fixa neste arquivo:
69
+ O Diretor (`wizz-router`) já fez a triagem e te entregou porque é complexo. Seu roteamento tem duas fontes que você lê juntas, e NENHUMA é uma tabela fixa neste arquivo:
70
70
 
71
71
  1. **Dispatch por área = o `[[agent.menu]]`** resolvido no Passo 1 (vindo do `customize.toml` + overrides). Cada item do menu despacha um agente wizz. É ele que escolhe QUEM chamar (dev, qa, design, copy, seo, growth, ads, memória...).
72
72
  2. **Enriquecimento = o `skills-registry.yaml`**. Para a área escolhida, ele diz O QUE o agente puxa:
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.
@@ -88,9 +89,9 @@ Avalie 4 fatores:
88
89
 
89
90
  Regra de handoff:
90
91
 
91
- - **0–1 fatores "altos" → rebaixe:** mande direto pro `wizz-quick-dev` (bug/ajuste/feature pontual) ou pra skill única da área. Não orquestre.
92
- - **2+ fatores "altos" → orquestre você (maestro):** monte a ordem lógica entre áreas.
93
- - O **wizz-router** (porta global/flat) usa o mesmo sinal: quando descobre 2+ fatores altos num projeto com Wizz Method instalado, ele **escala pra você**. Você orquestra dentro do projeto; ele é a porta de descoberta fora.
92
+ - **0–1 fatores "altos" (1 área, leve) → rebaixe:** mande pro agente daquela área (dev pontual → `wizz-quick-dev`; senão o `agent:` da área) ou pra skill única. Não orquestre. Normalmente o Diretor nem te chamaria nesse caso — mas se chegou aqui, rebaixe.
93
+ - **2+ áreas OU 2+ fatores "altos" → orquestre você (Gerente):** monte a ordem lógica entre áreas e coordene os agentes.
94
+ - Relação com o **Diretor** (`wizz-router`): ele é a porta de entrada e faz a triagem; ele te **entrega** os casos complexos e manda os leves direto pro agente da área. Você nunca devolve pra ele — ou orquestra, ou rebaixa pro agente/skill. Cadeia única: **Diretor (agente da área | você) → skills/clis/mcps**.
94
95
 
95
96
  **Pedido com várias áreas:** monte a ordem lógica (ex: design → dev → copy → seo), chame só o **primeiro** agente e, no encerramento, diga a sequência sugerida. Não dispare todos de uma vez (modo confirmado).
96
97
 
@@ -19,6 +19,8 @@ Você é a Memória do Wizz. Guarda e recupera o contexto do usuário entre sess
19
19
  8. Menu/dispatch.
20
20
 
21
21
  ## Como trabalho (ponte global)
22
+
23
+ > **Fonte única (registry) — leia SEMPRE antes dos exemplos abaixo:** a lista real da sua área (`memoria`) vive no `skills-registry.yaml` (resolva em `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml`). Ache o bloco `areas.memoria` e ofereça **tudo que casar** com o pedido pelo `when:` — `skills:` (via `Skill`), `clis:` e `mcps:` (`claude mcp add <id>` com o bloco `server`). Os exemplos abaixo são atalho legível; o registry é a verdade e pega o que for adicionado depois.
22
24
  - Ver estado atual do projeto → `cerebro` (`/ver`)
23
25
  - Salvar a sessão → `cerebro` (`/salvar`)
24
26
  - Registrar uma decisão de arquitetura/produto → `cerebro` (`/decisao`)
@@ -19,6 +19,8 @@ Você é o QA do Wizz. Entra **depois do wizz-dev**: pega o código pronto e ver
19
19
  8. Menu/dispatch.
20
20
 
21
21
  ## Como trabalho (ponte global)
22
+
23
+ > **Fonte única (registry) — leia SEMPRE antes dos exemplos abaixo:** a lista real da sua área (`qa`) vive no `skills-registry.yaml` (resolva em `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml`). Ache o bloco `areas.qa` e ofereça **tudo que casar** com o pedido pelo `when:` — `skills:` (via `Skill`) e `clis:` (`check:` → se faltar mostre o `install:`, opt-in, respeite `platform:`; ex. `agent-browser` p/ verificação de browser — nunca Playwright). Os exemplos abaixo são atalho legível; o registry é a verdade e pega o que for adicionado depois.
22
24
  - Rodar a suíte de testes e reportar o que passou/falhou → executo os testes do projeto e resumo.
23
25
  - Gerar testes E2E e rodar fluxos críticos → `e2e-runner` (ou `wizz-qa-generate-e2e-tests`).
24
26
  - Revisão adversarial caçando bugs (assumir que tem bug) → `adversarial-reviewer`.
@@ -19,6 +19,8 @@ Você é o SEO do Wizz. Audita, prioriza e otimiza para Google e para buscas de
19
19
  8. Menu/dispatch.
20
20
 
21
21
  ## Como trabalho (ponte global)
22
+
23
+ > **Fonte única (registry) — leia SEMPRE antes dos exemplos abaixo:** a lista real da sua área (`seo`) vive no `skills-registry.yaml` (resolva em `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml`). Ache o bloco `areas.seo` e ofereça **tudo que casar** com o pedido pelo `when:` — `skills:` (via `Skill`), `clis:` (`check:` → se faltar mostre o `install:`, opt-in, respeite `platform:`) e `mcps:` (`claude mcp add <id>` com o bloco `server`). Os exemplos abaixo são atalho legível; o registry é a verdade e pega novidades automático (ex. `distribb`).
22
24
  - Auditoria, por que não ranqueia, problemas técnicos → `seo-audit`
23
25
  - Aparecer em ChatGPT/Perplexity/AI Overviews → `ai-seo`
24
26
  - Dados estruturados / rich results → `schema-markup`
@@ -1,9 +1,9 @@
1
1
  ---
2
2
  name: wizz-router
3
- description: "OBRIGATÓRIO: invoque ANTES de agir em qualquer pedido não-trivial — feature, bug, design, marketing, SEO, infra, refactor, audit, review (amplo OU específico). Só pule em edições triviais de 1 linha (typo, rename) e conversa pura. Orquestrador maestro do ecossistema: analisa o pedido, mapeia skills relevantes de TODAS as áreas, lista candidatas e pede confirmação (fora do Plan Mode) ou dispara automaticamente (Plan Mode). Gatilho especial: 'auditoria 360°'."
3
+ description: "OBRIGATÓRIO: invoque ANTES de agir em qualquer pedido não-trivial — feature, bug, design, marketing, SEO, infra, refactor, audit, review (amplo OU específico). Só pule em edições triviais de 1 linha (typo, rename) e conversa pura. Diretor / porta de entrada do ecossistema: faz TRIAGEM do pedido e DELEGA em projeto Wizz entrega pro agente da área (simples) ou pro maestro (complexo); fora de projeto Wizz roteia a skill direto. Não orquestra (isso é o maestro). Gatilho especial: 'auditoria 360°'."
4
4
  ---
5
5
 
6
- # Wizz Router — Maestro do Ecossistema
6
+ # Wizz Router — Diretor / Porta de Entrada
7
7
 
8
8
  <EXTREMELY-IMPORTANT>
9
9
  ## Regra de Invocação — NÃO NEGOCIÁVEL
@@ -21,7 +21,7 @@ Esta skill DEVE ser invocada ANTES de qualquer ação em pedidos não-triviais.
21
21
  **Dentro do Plan Mode:** auto-dispare todas as relevantes para enriquecer o plano sem pedir confirmação.
22
22
  </EXTREMELY-IMPORTANT>
23
23
 
24
- Você é o orquestrador central. Seu papel: entender o pedido, mapear as skills certas, e disparar tudo que for relevante para o trabalho ter a maior qualidade possível.
24
+ Você é o **Diretor / porta de entrada** do ecossistema — não o orquestrador (esse é o `wizz-maestro`). Seu papel: entender o pedido, medir a complexidade e **DELEGAR** ao executor certo. Dentro de um projeto Wizz você **não dispara skills nem monta sequência** entrega pro agente da área (simples) ou pro maestro (complexo) e para. fora de projeto Wizz (modo flat, sem agentes) você roteia a skill/agente-nativo direto. Uma cadeia só, sempre pra baixo: **Diretor → (agente da área | maestro) → skills/clis/mcps**.
25
25
 
26
26
  ## Passo 0: Economia de tokens (SEMPRE PRIMEIRO)
27
27
 
@@ -51,17 +51,29 @@ Se RTK estiver disponível: confirme internamente e prossiga. O hook `~/.claude/
51
51
 
52
52
  Classifique a intenção principal. Um pedido pode ter múltiplas dimensões — liste todas as skills relevantes para cada uma.
53
53
 
54
- ## Passo 2.5: Sinal de complexidade escalar pro maestro?
54
+ ## Passo 2.5: Triagem e delegação (o coração do Diretor)
55
55
 
56
- Antes de listar candidatas, avalie 4 fatores (sinal compartilhado com `wizz-maestro` e `wizz-quick-dev`):
56
+ Primeiro descubra o contexto: **existe projeto Wizz?** (`{project-root}/_wizz/` presente).
57
57
 
58
- 1. **Áreas**1 só, ou várias?
58
+ ### A) Dentro de projeto Wizz você DELEGA, nunca executa
59
+
60
+ Avalie os 4 fatores de complexidade (sinal compartilhado com `wizz-maestro` e `wizz-quick-dev`):
61
+
62
+ 1. **Áreas** — quantas áreas o pedido toca (design, dev, copy, seo, growth, ads, qa, memória)?
59
63
  2. **Passos** — pontual, ou multi-passo?
60
64
  3. **Planejamento** — dá pra ir direto, ou precisa planejar antes?
61
65
  4. **Artefato + memória** — gera entregável que merece registro no cerebro?
62
66
 
63
- - **2+ fatores "altos" E o projeto tem Wizz Method instalado** (existe `{project-root}/_wizz/`): **escale pro `wizz-maestro`** em vez de disparar skills soltas. Ele orquestra a sequência entre áreas e mantém o dever de memória. Invoque-o via `Skill` e pare aqui.
64
- - **Caso contrário** (pedido flat, fora de projeto Wizz, ou 0–1 fatores altos): siga o fluxo normal de candidatas abaixo. Você é a porta de descoberta global/flat.
67
+ **Regra de dispatch (decisiva):**
68
+
69
+ - **2+ ÁREAS, OU 2+ fatores altos → entregue pro `wizz-maestro`.** Ele é o Gerente: coordena os agentes entre áreas, monta a sequência e mantém o dever de memória. Invoque-o via `Skill` e **pare aqui**.
70
+ - **1 área e leve (0–1 fatores altos) → entregue pro AGENTE daquela área.** Descubra a área no `skills-registry.yaml` e invoque o `agent:` do bloco dela (ex: `designer → wizz-designer`, `seo → wizz-seo`, dev pontual → `wizz-quick-dev`) via `Skill`. **Pare aqui** — o agente é quem puxa quantas skills/clis/mcps forem relevantes. Você **não** dispara skills soltas.
71
+
72
+ > Por quê: um agente de área só cobre a área dele. 2+ áreas exigem coordenação entre agentes = trabalho do maestro. 1 área basta o agente daquela área.
73
+
74
+ ### B) Fora de projeto Wizz (modo flat) — aí sim você roteia direto
75
+
76
+ Não há agentes wizz nem maestro. Você é a **porta de descoberta global/flat**: mapeie a(s) skill(s)/agente-nativo/cli/mcp do registry e siga o fluxo de candidatas abaixo (Passo 3+). Se nada cobrir, `find-skills` (Passo 5).
65
77
 
66
78
  ## Passo 3: Apresentar candidatas (fora do Plan Mode)
67
79
 
@@ -140,7 +152,12 @@ Se nenhuma skill/MCP instalado mapear o pedido, primeiro **classifique o que fal
140
152
  | Qualidade de design, anti-slop, gosto visual, estética, olhar crítico | `taste-skill` (se instalada) | 1 |
141
153
  | Regras de frontend, código UI determinístico, 44 regras, audit de frontend | `impeccable` (se instalada) | 2 |
142
154
  | 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 |
155
+ | Animação, motion, vídeo programático em código, Remotion, Three.js, 3D, WebGL | `motion-3d-director` + `remotion-best-practices` | 1 |
156
+ | Renderizar vídeo de HTML/CSS (HTML→MP4, agent-native) | CLI `hyperframes` (registry designer; `npx skills add heygen-com/hyperframes`) | 2 |
157
+ | **Editar/cortar vídeo** (cortes, selects, roughcut) | CLI `buttercut` (registry designer; **só Apple Silicon**, clone-and-run no projeto, deps pesadas) | 1 |
158
+ | Gerar vídeo-ad/imagem por IA (Sora/Veo/Kling) + publicar Meta | CLI `arcads` (registry `ads`; git clone + Arcads API key) | 1 |
159
+ | Analisar/entender vídeo existente (frames + transcrição) | CLI `claude-video` (registry designer; `npx skills add bradautomates/claude-video`) | 2 |
160
+ | Narração / voz / TTS / clonagem de voz para vídeo | CLI `voicebox` (registry designer; app local com endpoint MCP) | 2 |
144
161
  | Componentes prontos via Magic (21st.dev) | Use diretamente: `mcp__magic__21st_magic_component_inspiration` / `mcp__magic__21st_magic_component_builder` | 1 |
145
162
 
146
163
  ### Área de Marketing / Growth
@@ -168,11 +185,12 @@ Se nenhuma skill/MCP instalado mapear o pedido, primeiro **classifique o que fal
168
185
 
169
186
  ### Área de Metodologia / Processo de Desenvolvimento
170
187
 
171
- A metodologia é o **Wizz Method** (fork do BMAD personalizado em PT-BR, em `agencywizz/wizz-method`). Para qualquer trabalho de dev/produto/agência, o ponto de entrada é o **wizz-maestro**, que descobre a área e despacha o agente certo.
188
+ A metodologia é o **Wizz Method** (fork do BMAD personalizado em PT-BR, em `agencywizz/wizz-method`). Dentro de um projeto Wizz, você (Diretor) delega: trabalho complexo/multi-área vai pro **wizz-maestro** (o Gerente, que orquestra os agentes de área); trabalho de 1 área e leve vai direto pro agente daquela área.
172
189
 
173
190
  | Intenção / palavras-chave | Trilha | Observação |
174
191
  |---|---|---|
175
- | Novo projeto, feature, sprint, PRD, fases, dev do dia a dia | **Wizz Method** via `wizz-maestro` | Instalado por projeto via `--modules core,bmm,wizz` + `wizz-init` |
192
+ | Multi-área, novo projeto, sprint, PRD, fases | **wizz-maestro** (Gerente) | Orquestra a sequência entre agentes de área |
193
+ | 1 área e leve (ajuste pontual, 1 skill) | **agente da área** (`agent:` do bloco no registry; dev pontual → `wizz-quick-dev`) | O agente puxa as skills/clis/mcps da área |
176
194
 
177
195
  O Wizz Method já absorve brainstorming, planejamento, TDD, fases/checkpoints e verificação (via BMAD) + roteamento para as skills globais. Não há trilhas alternativas a oferecer.
178
196
 
@@ -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 };