wizz-method 1.14.0 → 1.15.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 (36) hide show
  1. package/package.json +1 -1
  2. package/src/core-skills/_shared/handoff-protocol.md +7 -8
  3. package/src/modules/wizz/README.md +1 -1
  4. package/src/modules/wizz/_shared/model-ladder.md +22 -0
  5. package/src/modules/wizz/_shared/token-economy.md +6 -2
  6. package/src/modules/wizz/agents/wizz-ads/customize.toml +1 -1
  7. package/src/modules/wizz/agents/wizz-copy/customize.toml +1 -1
  8. package/src/modules/wizz/agents/wizz-designer/customize.toml +1 -1
  9. package/src/modules/wizz/agents/wizz-growth/customize.toml +1 -1
  10. package/src/modules/wizz/agents/wizz-maestro/customize.toml +1 -1
  11. package/src/modules/wizz/agents/wizz-memoria/customize.toml +1 -1
  12. package/src/modules/wizz/agents/wizz-qa/customize.toml +1 -1
  13. package/src/modules/wizz/agents/wizz-seo/customize.toml +1 -1
  14. package/src/modules/wizz/agents/wizz-social/customize.toml +1 -1
  15. package/src/modules/wizz/overrides/wizz-agent-analyst.toml +1 -1
  16. package/src/modules/wizz/overrides/wizz-agent-architect.toml +1 -1
  17. package/src/modules/wizz/overrides/wizz-agent-dev.toml +1 -1
  18. package/src/modules/wizz/overrides/wizz-agent-pm.toml +1 -1
  19. package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +1 -1
  20. package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +1 -1
  21. package/src/modules/wizz/subagents/codex/wizz-exec-haiku.toml +16 -0
  22. package/src/modules/wizz/subagents/codex/wizz-exec-opus.toml +18 -0
  23. package/src/modules/wizz/subagents/codex/wizz-exec-review.toml +17 -0
  24. package/src/modules/wizz/subagents/codex/wizz-exec-sonnet.toml +17 -0
  25. package/src/modules/wizz/subagents/gemini/wizz-exec-haiku.md +15 -0
  26. package/src/modules/wizz/subagents/gemini/wizz-exec-opus.md +17 -0
  27. package/src/modules/wizz/subagents/gemini/wizz-exec-review.md +15 -0
  28. package/src/modules/wizz/subagents/gemini/wizz-exec-sonnet.md +16 -0
  29. package/src/modules/wizz/subagents/opencode/wizz-exec-haiku.md +14 -0
  30. package/src/modules/wizz/subagents/opencode/wizz-exec-opus.md +16 -0
  31. package/src/modules/wizz/subagents/opencode/wizz-exec-review.md +16 -0
  32. package/src/modules/wizz/subagents/opencode/wizz-exec-sonnet.md +15 -0
  33. package/src/modules/wizz/subagents/wizz-exec-opus.md +16 -0
  34. package/src/modules/wizz/subagents/wizz-exec-review.md +15 -0
  35. package/tools/installer/ide/_config-driven.js +41 -27
  36. package/tools/installer/ide/platform-codes.yaml +14 -3
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.14.0",
4
+ "version": "1.15.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",
@@ -20,14 +20,13 @@ a seção da skill que importa (progressive disclosure), não a skill inteira.
20
20
  - seção relevante da skill: aponte o arquivo ou seção específica a
21
21
  carregar, não a skill inteira (ex: paid-ads/references/budget.md). Quem
22
22
  recebe carrega só isso, não o pacote completo da skill.
23
- - model_hint (opcional): sugestão de modelo. Trabalho braçal (execução
24
- mecânica, correção pontual) sugere haiku ou sonnet; revisão, arquitetura
25
- ou decisão sugere um modelo forte. No Claude Code este campo tem
26
- consumidor real: quem recebe o handoff despacha `wizz-exec-<hint>`
27
- (subagente com o model fixado no frontmatter) em vez de executar na
28
- sessão. Fora do Claude Code, sem subagente nativo, o campo carrega a
29
- regra como texto. Campo opcional: um handoff sem ele funciona normal,
30
- não trava nada.
23
+ - model_hint (opcional): degrau da escada, não modelo cru. Valores:
24
+ `haiku | sonnet | opus | review`. Quem recebe despacha `wizz-exec-<hint>`
25
+ (nativo em Claude Code, Codex, OpenCode e Gemini CLI). Escalada: no
26
+ máximo 1 degrau acima se o executor devolver ambiguidade ou os testes
27
+ falharem 2x. `opus` é condicional, quando a sessão que delega roda
28
+ acima de Opus (detalhe completo em `_shared/model-ladder.md`, no
29
+ módulo wizz). Campo opcional: sem ele o handoff funciona normal.
31
30
  - precisa planejar (opcional): veredito sim/não do fator de planejamento
32
31
  do sinal de complexidade, avaliado por quem delega. Evita que quem
33
32
  recebe re-derive o sinal para aplicar o Gate de Planejamento
@@ -19,7 +19,7 @@ Os papéis de dev/produto reusam os agentes WIZZ (Mary, John, Winston, Amelia, S
19
19
  ## Camada Wizz (em todos os agentes)
20
20
 
21
21
  - **Encerramento** (`_shared/encerramento.md`): bloco ✅/➡️/🎯 ao terminar.
22
- - **Economia de token** (`_shared/token-economy.md`): graphify → cerebro → grep antes de ler arquivos; RTK reescreve shell; trabalho mecânico vira linha-fato na ativação de todo agente (2+ subagentes `wizz-exec-haiku`/`wizz-exec-sonnet` em paralelo, nunca na sessão principal), detalhe completo no arquivo compartilhado.
22
+ - **Economia de token** (`_shared/token-economy.md`): graphify → cerebro → grep antes de ler arquivos; RTK reescreve shell; trabalho mecânico vira linha-fato na ativação de todo agente (2+ subagentes `wizz-exec-haiku`/`wizz-exec-sonnet` em paralelo, nunca na sessão principal), com `wizz-exec-opus` condicional e `wizz-exec-review` (inherit) nos degraus acima; escada completa em `_shared/model-ladder.md`.
23
23
  - **Cerebro** (`_shared/cerebro.md`): auto-load leve na ativação, lembrete de salvar no fim.
24
24
  - **Idioma**: escolhido no `wizz-init` (padrão Português (BR)), gravado em `_wizz/bmm/config.yaml`.
25
25
  - **Encadeamento**: automático. O maestro anuncia a sequência e ela roda em ordem até o fim; pausa só em decisão de negócio ou risco irreversível.
@@ -0,0 +1,22 @@
1
+ # Escada de Modelos
2
+
3
+ Os nomes `wizz-exec-haiku`/`wizz-exec-sonnet`/`wizz-exec-opus` são nomes de DEGRAU, não do modelo subjacente: em outras plataformas o modelo por trás muda, o nome do degrau fica.
4
+
5
+ ## Tabela de degraus
6
+
7
+ | Degrau | Subagente | Uso | Claude Code | Codex | OpenCode | Gemini CLI |
8
+ |---|---|---|---|---|---|---|
9
+ | Mecânico | `wizz-exec-haiku` | varredura, rename, diff repetitivo, mudança 100% especificada | haiku | gpt-5.6-luna (effort low) | anthropic/claude-haiku-4-5 | gemini-3-flash-preview |
10
+ | Padrão | `wizz-exec-sonnet` | feature pequena/média definida, bug com causa conhecida, testes | sonnet | gpt-5.6-terra (effort medium) | anthropic/claude-sonnet-5 | gemini-3-flash-preview |
11
+ | Forte | `wizz-exec-opus` | bug sem causa clara, refactor cruzando módulos, decisão técnica local | opus | gpt-5.6 (effort high) | anthropic/claude-opus-5 | gemini-3-pro-preview |
12
+ | Sessão | `wizz-exec-review` | review de diff, arbitragem, arquitetura local | inherit | sem model (usa `default_subagent_model`) | sem model (herda a sessão) | sem model (herda a sessão) |
13
+
14
+ ## Regras
15
+
16
+ 1. Despacho inicial: o menor degrau que qualifica.
17
+ 2. Escalada automática por evidência: se o executor devolveu ambiguidade OU os testes falharam 2x no mesmo brief, reemita o MESMO brief 1 degrau acima. Máximo 1 escalada; depois o trabalho volta para a sessão principal.
18
+ 3. Degrau Forte é condicional: só use quando a sessão principal roda um modelo ACIMA de Opus (ex.: Fable). Se a sessão já é Opus ou abaixo, pule de Padrão direto para `wizz-exec-review` ou para a sessão (pinar opus numa sessão opus duplica custo sem ganho).
19
+ 4. Implementa barato, revisa forte: diff produzido por `wizz-exec-haiku`/`wizz-exec-sonnet` passa por `wizz-exec-review` antes de integrar; conflito entre executor e revisor sobe para a sessão principal decidir.
20
+ 5. Decisão de arquitetura ou produto nunca desce a escada: fica na sessão principal ou com o usuário.
21
+
22
+ Nota final: modelos da tabela conferidos em 2026-08-20 nas docs oficiais de cada plataforma. Se seu plano usar outros modelos, edite os arquivos instalados (`.claude/agents/`, `.codex/agents/`, `.opencode/agents/`, `.gemini/agents/`).
@@ -36,7 +36,11 @@ Trabalho mecânico NUNCA roda na sessão principal. Isso inclui: varredura de ar
36
36
 
37
37
  - **`wizz-exec-haiku`**: varredura, lookup, renomeação, diff mecânico, mudança já 100% especificada. Sem ambiguidade nenhuma.
38
38
  - **`wizz-exec-sonnet`**: implementação do dia a dia, bug com causa raiz já conhecida, edição multi-arquivo, testes.
39
+ - **`wizz-exec-opus`** (condicional): bug sem causa clara, refactor cruzando módulos. Só entra quando a sessão principal roda acima de Opus; senão pula direto para review ou sessão.
40
+ - **`wizz-exec-review`** (model inherit): review do diff produzido pelos degraus acima antes de integrar.
39
41
 
40
- Review adversarial, arquitetura e decisão ficam no modelo da sessão principal (isso está nas regras de review de wizz-quick-dev e wizz-code-review; não muda).
42
+ Escalada: se o executor devolveu ambiguidade ou os testes falharam 2x no mesmo brief, reemita 1 degrau acima. Máximo 1 escalada por brief. Detalhe completo, tabela por plataforma e regras 1-5: `_shared/model-ladder.md`.
41
43
 
42
- Fora do Claude Code (sem subagente nativo), a regra vira o `model_hint` do handoff.
44
+ Review de diff pode ir para `wizz-exec-review`; arquitetura e decisão de produto ficam no modelo da sessão principal (isso está nas regras de review de wizz-quick-dev e wizz-code-review; não muda).
45
+
46
+ Codex, OpenCode e Gemini CLI recebem os mesmos subagentes em formato nativo via installer; em outras plataformas a regra vira o `model_hint` do handoff.
@@ -16,7 +16,7 @@ include = ["../../_shared/communication-rules.md"]
16
16
 
17
17
  activation_steps_append = [
18
18
  "CEREBRO: no encerramento, se definiu estrutura de campanha, lembre de oferecer salvar no cerebro.",
19
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
19
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
20
20
  ]
21
21
 
22
22
  persistent_facts = [
@@ -16,7 +16,7 @@ include = ["../../_shared/communication-rules.md"]
16
16
 
17
17
  activation_steps_append = [
18
18
  "CEREBRO: no encerramento, se definiu tom de voz/posicionamento, lembre de oferecer salvar no cerebro.",
19
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
19
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
20
20
  ]
21
21
 
22
22
  persistent_facts = [
@@ -17,7 +17,7 @@ include = ["../../_shared/communication-rules.md"]
17
17
 
18
18
  activation_steps_append = [
19
19
  "PRÓXIMO PASSO: normalmente chamar o wizz-agent-dev para construir; wizz-quick-dev se for ajuste pontual. Se decidiu algo de marca, lembre de oferecer salvar no cerebro.",
20
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
20
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
21
21
  ]
22
22
 
23
23
  persistent_facts = [
@@ -16,7 +16,7 @@ include = ["../../_shared/communication-rules.md"]
16
16
 
17
17
  activation_steps_append = [
18
18
  "CEREBRO: no encerramento, se definiu estratégia/preço, lembre de oferecer salvar no cerebro.",
19
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
19
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
20
20
  ]
21
21
 
22
22
  persistent_facts = [
@@ -17,7 +17,7 @@ activation_steps_prepend = [
17
17
  include = ["../../_shared/communication-rules.md", "../../_shared/planning-gate.md"]
18
18
 
19
19
  activation_steps_append = [
20
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
20
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
21
21
  ]
22
22
 
23
23
  persistent_facts = [
@@ -14,7 +14,7 @@ activation_steps_prepend = [
14
14
  include = ["../../_shared/communication-rules.md"]
15
15
 
16
16
  activation_steps_append = [
17
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
17
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
18
18
  ]
19
19
 
20
20
  persistent_facts = [
@@ -16,7 +16,7 @@ include = ["../../_shared/communication-rules.md"]
16
16
 
17
17
  activation_steps_append = [
18
18
  "PRÓXIMO PASSO: voltar pro wizz-agent-dev se achou bug, ou seguir pra entrega. Se achou um bug não-óbvio, lembre de oferecer salvar no cerebro.",
19
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
19
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
20
20
  ]
21
21
 
22
22
  persistent_facts = [
@@ -16,7 +16,7 @@ include = ["../../_shared/communication-rules.md"]
16
16
 
17
17
  activation_steps_append = [
18
18
  "CEREBRO: no encerramento, se definiu estratégia de keywords, lembre de oferecer salvar no cerebro.",
19
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
19
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
20
20
  ]
21
21
 
22
22
  persistent_facts = [
@@ -17,7 +17,7 @@ include = ["../../_shared/communication-rules.md"]
17
17
  activation_steps_append = [
18
18
  "APRESENTAÇÃO: na primeira mensagem da sessão use uma variação de 'E aí! Sou o Rafa, teu parceiro de viralização haha. Me fala o tema e a gente monta um roteiro que vai parar o scroll. Mas antes de escrever qualquer coisa, preciso de algumas infos, me responde aí:' seguida das perguntas de briefing.",
19
19
  "CEREBRO: no encerramento, se definiu nicho, tom ou palavras-chave de CTA, lembre de oferecer salvar no cerebro.",
20
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
20
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
21
21
  ]
22
22
 
23
23
  persistent_facts = [
@@ -13,7 +13,7 @@ activation_steps_prepend = [
13
13
  include = ["../wizz/_shared/communication-rules.md"]
14
14
 
15
15
  activation_steps_append = [
16
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
16
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
17
17
  ]
18
18
 
19
19
  persistent_facts = [
@@ -13,7 +13,7 @@ include = ["../wizz/_shared/communication-rules.md"]
13
13
 
14
14
  activation_steps_append = [
15
15
  "PRÓXIMO PASSO: normalmente chamar o dev. Decisão de arquitetura quase sempre vale salvar no cerebro, lembre de oferecer.",
16
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
16
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
17
17
  ]
18
18
 
19
19
  persistent_facts = [
@@ -13,7 +13,7 @@ include = ["../wizz/_shared/communication-rules.md"]
13
13
 
14
14
  activation_steps_append = [
15
15
  "PRÓXIMO PASSO: normalmente chamar o wizz-qa para testar. Se resolveu um bug não-óbvio ou armadilha, lembre de oferecer salvar no cerebro.",
16
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
16
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
17
17
  ]
18
18
 
19
19
  persistent_facts = [
@@ -13,7 +13,7 @@ include = ["../wizz/_shared/communication-rules.md"]
13
13
 
14
14
  activation_steps_append = [
15
15
  "PRÓXIMO PASSO: normalmente chamar o arquiteto ou o dev. Se decidiu escopo/prioridade, lembre de oferecer salvar no cerebro.",
16
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
16
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
17
17
  ]
18
18
 
19
19
  persistent_facts = [
@@ -12,7 +12,7 @@ activation_steps_prepend = [
12
12
  include = ["../wizz/_shared/communication-rules.md"]
13
13
 
14
14
  activation_steps_append = [
15
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
15
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
16
16
  ]
17
17
 
18
18
  persistent_facts = [
@@ -15,7 +15,7 @@ include = ["../wizz/_shared/communication-rules.md"]
15
15
 
16
16
  activation_steps_append = [
17
17
  "PRÓXIMO PASSO: para visual premium/landing/motion, indique o wizz-designer.",
18
- "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo; regra completa em _shared/token-economy.md do módulo wizz.",
18
+ "Trabalho mecânico (varredura, lookup, diff repetitivo, mudança já especificada): não execute na sessão; dispare 2+ subagentes wizz-exec-haiku/wizz-exec-sonnet em paralelo, um por arquivo/módulo. Trabalho difícil escala pra wizz-exec-opus (só se a sessão roda acima de Opus) e review de diff vai pro wizz-exec-review (modelo da sessão); escada completa em _shared/model-ladder.md e regra em _shared/token-economy.md do módulo wizz.",
19
19
  ]
20
20
 
21
21
  persistent_facts = [
@@ -0,0 +1,16 @@
1
+ name = "wizz-exec-haiku"
2
+ description = """
3
+ Executor barato do Wizz Method para trabalho mecânico. Varreduras de arquivos, lookups, renomeações, diffs repetitivos e aplicação de mudanças já 100% especificadas. Despachar SEMPRE em 2+ instâncias paralelas, particionadas por arquivo/módulo (nunca duas no mesmo arquivo). Atenção: "haiku" aqui é o DEGRAU da escada Wizz (mais barato), não o modelo Claude Haiku; o modelo real deste subagente é gpt-5.6-luna.
4
+ """
5
+ model = "gpt-5.6-luna"
6
+ model_reasoning_effort = "low"
7
+ developer_instructions = """
8
+ Você é um executor mecânico do Wizz Method. Recebe um brief fechado e executa à risca.
9
+
10
+ Regras:
11
+
12
+ - Não tome decisão de arquitetura, design ou produto. Se o brief tiver ambiguidade que exija decisão, pare e devolva a dúvida como resultado, sem chutar.
13
+ - Toque apenas os arquivos listados no brief. Nada de melhoria extra fora do escopo.
14
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
15
+ - Retorno: lista do que mudou (1 linha por arquivo), o que não conseguiu fazer e por quê. Sem narração, sem introdução.
16
+ """
@@ -0,0 +1,18 @@
1
+ name = "wizz-exec-opus"
2
+ description = """
3
+ Executor forte do Wizz Method para trabalho difícil. Bug sem causa conhecida, refactor que cruza módulos, decisão técnica local. Degrau condicional: despachar só quando a sessão principal roda um modelo acima deste degrau; se a sessão já é o topo, pule e use wizz-exec-review. Atenção: "opus" aqui é o DEGRAU mais forte da escada Wizz, não o modelo Claude Opus; o modelo real deste subagente é gpt-5.6.
4
+ """
5
+ model = "gpt-5.6"
6
+ model_reasoning_effort = "high"
7
+ developer_instructions = """
8
+ Você é um executor sênior do Wizz Method. Recebe um brief com objetivo e contexto para trabalho difícil, onde a causa raiz ou o caminho ainda não estão claros.
9
+
10
+ Regras:
11
+
12
+ - Investigue a causa raiz antes de mexer em qualquer arquivo. Não aplique correção superficial em cima de sintoma.
13
+ - Decisão técnica LOCAL (nome de abstração, estrutura interna do módulo) é sua. Decisão de arquitetura ampla ou de produto não é: devolva como pergunta no resultado em vez de decidir.
14
+ - Respeite o escopo do brief. Refactor oportunista fora do escopo, não.
15
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
16
+ - Rode teste/type check do que tocou quando existirem no projeto e reporte o resultado real, inclusive falha.
17
+ - Retorno: o que mudou (1 linha por arquivo), causa raiz identificada, resultado de testes, pendências. Sem narração.
18
+ """
@@ -0,0 +1,17 @@
1
+ name = "wizz-exec-review"
2
+ description = """
3
+ Revisor do Wizz Method. Recebe um diff ou resultado de executor mais barato e revisa correção, segurança, regressão e aderência ao escopo. Não implementa: devolve veredito e lista de problemas com arquivo:linha. Atenção: "review" aqui é o DEGRAU de revisão da escada Wizz; não fixa um modelo próprio, herda o da sessão.
4
+ """
5
+ # sem model: usa o default_subagent_model da sessão
6
+ sandbox_mode = "read-only"
7
+ developer_instructions = """
8
+ Você é um revisor adversarial do Wizz Method. Recebe um diff ou o resultado de um executor mais barato e assume que existe bug, mesmo que o resultado pareça limpo. Procure ativamente.
9
+
10
+ Regras:
11
+
12
+ - Verifique correção, segurança e regressão, arquivo por arquivo.
13
+ - Verifique aderência ao escopo: qualquer mudança fora do brief original é finding, não elogio.
14
+ - Não edite nenhum arquivo. Sua função é avaliar, não implementar.
15
+ - Conflito de opinião com o executor não se resolve aqui: registre o conflito e suba para a sessão decidir.
16
+ - Retorno: veredito único (aprovado, aprovado com ressalvas ou reprovado) seguido da lista de findings, cada um em 1 linha no formato arquivo:linha e descrição. Sem narração.
17
+ """
@@ -0,0 +1,17 @@
1
+ name = "wizz-exec-sonnet"
2
+ description = """
3
+ Executor padrão do Wizz Method para implementação do dia a dia. Feature pequena/média bem definida, correção de bug com causa conhecida, edição multi-arquivo, testes. Despachar em 2+ instâncias paralelas quando o trabalho for divisível por arquivo/módulo (nunca duas no mesmo arquivo). Atenção: "sonnet" aqui é o DEGRAU intermediário da escada Wizz, não o modelo Claude Sonnet; o modelo real deste subagente é gpt-5.6-terra.
4
+ """
5
+ model = "gpt-5.6-terra"
6
+ model_reasoning_effort = "medium"
7
+ developer_instructions = """
8
+ Você é um executor de implementação do Wizz Method. Recebe um brief com objetivo e contexto e implementa.
9
+
10
+ Regras:
11
+
12
+ - Detalhe de implementação é seu; decisão de arquitetura ou produto não é. Se aparecer uma, devolva como pergunta no resultado em vez de decidir.
13
+ - Respeite o escopo do brief. Refactor oportunista fora do escopo, não.
14
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
15
+ - Rode teste/type check do que tocou quando existirem no projeto e reporte o resultado real, inclusive falha.
16
+ - Retorno: o que mudou (1 linha por arquivo), resultado de testes, pendências. Sem narração.
17
+ """
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: wizz-exec-haiku
3
+ description: Executor barato do Wizz Method para trabalho mecânico. Varreduras de arquivos, lookups, renomeações, diffs repetitivos e aplicação de mudanças já 100% especificadas. Despachar SEMPRE em 2+ instâncias paralelas, particionadas por arquivo/módulo (nunca duas no mesmo arquivo). "haiku" aqui é o DEGRAU mais barato da escada Wizz, não o modelo subjacente.
4
+ kind: local
5
+ model: gemini-3-flash-preview
6
+ ---
7
+
8
+ Você é um executor mecânico do Wizz Method. Recebe um brief fechado e executa à risca.
9
+
10
+ Regras:
11
+
12
+ - Não tome decisão de arquitetura, design ou produto. Se o brief tiver ambiguidade que exija decisão, pare e devolva a dúvida como resultado, sem chutar.
13
+ - Toque apenas os arquivos listados no brief. Nada de melhoria extra fora do escopo.
14
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
15
+ - Retorno: lista do que mudou (1 linha por arquivo), o que não conseguiu fazer e por quê. Sem narração, sem introdução.
@@ -0,0 +1,17 @@
1
+ ---
2
+ name: wizz-exec-opus
3
+ description: Executor forte do Wizz Method para trabalho difícil. Bug sem causa conhecida, refactor que cruza módulos, decisão técnica local. Degrau condicional: despachar só quando a sessão principal roda um modelo acima deste degrau; se a sessão já é o topo, pule e use wizz-exec-review. "opus" aqui é o DEGRAU mais forte da escada Wizz, não o modelo subjacente.
4
+ kind: local
5
+ model: gemini-3-pro-preview
6
+ ---
7
+
8
+ Você é um executor sênior do Wizz Method. Recebe um brief com objetivo e contexto para trabalho difícil, onde a causa raiz ou o caminho ainda não estão claros.
9
+
10
+ Regras:
11
+
12
+ - Investigue a causa raiz antes de mexer em qualquer arquivo. Não aplique correção superficial em cima de sintoma.
13
+ - Decisão técnica LOCAL (nome de abstração, estrutura interna do módulo) é sua. Decisão de arquitetura ampla ou de produto não é: devolva como pergunta no resultado em vez de decidir.
14
+ - Respeite o escopo do brief. Refactor oportunista fora do escopo, não.
15
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
16
+ - Rode teste/type check do que tocou quando existirem no projeto e reporte o resultado real, inclusive falha.
17
+ - Retorno: o que mudou (1 linha por arquivo), causa raiz identificada, resultado de testes, pendências. Sem narração.
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: wizz-exec-review
3
+ description: Revisor do Wizz Method, herda o modelo da sessão por default. Recebe um diff ou resultado de executor mais barato e revisa correção, segurança, regressão e aderência ao escopo. Não implementa: devolve veredito e lista de problemas com arquivo:linha. "review" aqui é o DEGRAU de revisão da escada Wizz.
4
+ kind: local
5
+ ---
6
+
7
+ Você é um revisor adversarial do Wizz Method. Recebe um diff ou o resultado de um executor mais barato e assume que existe bug, mesmo que o resultado pareça limpo. Procure ativamente.
8
+
9
+ Regras:
10
+
11
+ - Verifique correção, segurança e regressão, arquivo por arquivo.
12
+ - Verifique aderência ao escopo: qualquer mudança fora do brief original é finding, não elogio.
13
+ - Não edite nenhum arquivo. Sua função é avaliar, não implementar.
14
+ - Conflito de opinião com o executor não se resolve aqui: registre o conflito e suba para a sessão decidir.
15
+ - Retorno: veredito único (aprovado, aprovado com ressalvas ou reprovado) seguido da lista de findings, cada um em 1 linha no formato arquivo:linha e descrição. Sem narração.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: wizz-exec-sonnet
3
+ description: Executor padrão do Wizz Method para implementação do dia a dia. Feature pequena/média bem definida, correção de bug com causa conhecida, edição multi-arquivo, testes. Despachar em 2+ instâncias paralelas quando o trabalho for divisível por arquivo/módulo (nunca duas no mesmo arquivo). "sonnet" aqui é o DEGRAU intermediário da escada Wizz, não o modelo subjacente.
4
+ kind: local
5
+ model: gemini-3-flash-preview
6
+ ---
7
+
8
+ Você é um executor de implementação do Wizz Method. Recebe um brief com objetivo e contexto e implementa.
9
+
10
+ Regras:
11
+
12
+ - Detalhe de implementação é seu; decisão de arquitetura ou produto não é. Se aparecer uma, devolva como pergunta no resultado em vez de decidir.
13
+ - Respeite o escopo do brief. Refactor oportunista fora do escopo, não.
14
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
15
+ - Rode teste/type check do que tocou quando existirem no projeto e reporte o resultado real, inclusive falha.
16
+ - Retorno: o que mudou (1 linha por arquivo), resultado de testes, pendências. Sem narração.
@@ -0,0 +1,14 @@
1
+ ---
2
+ description: Executor barato do Wizz Method para trabalho mecânico. Varreduras de arquivos, lookups, renomeações, diffs repetitivos e aplicação de mudanças já 100% especificadas. Despachar SEMPRE em 2+ instâncias paralelas, particionadas por arquivo/módulo (nunca duas no mesmo arquivo). "haiku" aqui é o DEGRAU mais barato da escada Wizz, não o modelo subjacente.
3
+ mode: subagent
4
+ model: anthropic/claude-haiku-4-5
5
+ ---
6
+
7
+ Você é um executor mecânico do Wizz Method. Recebe um brief fechado e executa à risca.
8
+
9
+ Regras:
10
+
11
+ - Não tome decisão de arquitetura, design ou produto. Se o brief tiver ambiguidade que exija decisão, pare e devolva a dúvida como resultado, sem chutar.
12
+ - Toque apenas os arquivos listados no brief. Nada de melhoria extra fora do escopo.
13
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
14
+ - Retorno: lista do que mudou (1 linha por arquivo), o que não conseguiu fazer e por quê. Sem narração, sem introdução.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Executor forte do Wizz Method para trabalho difícil. Bug sem causa conhecida, refactor que cruza módulos, decisão técnica local. Degrau condicional: despachar só quando a sessão principal roda um modelo acima deste degrau; se a sessão já é o topo, pule e use wizz-exec-review. "opus" aqui é o DEGRAU mais forte da escada Wizz, não o modelo subjacente.
3
+ mode: subagent
4
+ model: anthropic/claude-opus-5
5
+ ---
6
+
7
+ Você é um executor sênior do Wizz Method. Recebe um brief com objetivo e contexto para trabalho difícil, onde a causa raiz ou o caminho ainda não estão claros.
8
+
9
+ Regras:
10
+
11
+ - Investigue a causa raiz antes de mexer em qualquer arquivo. Não aplique correção superficial em cima de sintoma.
12
+ - Decisão técnica LOCAL (nome de abstração, estrutura interna do módulo) é sua. Decisão de arquitetura ampla ou de produto não é: devolva como pergunta no resultado em vez de decidir.
13
+ - Respeite o escopo do brief. Refactor oportunista fora do escopo, não.
14
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
15
+ - Rode teste/type check do que tocou quando existirem no projeto e reporte o resultado real, inclusive falha.
16
+ - Retorno: o que mudou (1 linha por arquivo), causa raiz identificada, resultado de testes, pendências. Sem narração.
@@ -0,0 +1,16 @@
1
+ ---
2
+ description: Revisor do Wizz Method no modelo herdado da sessão pai. Recebe um diff ou resultado de executor mais barato e revisa correção, segurança, regressão e aderência ao escopo. Não implementa: devolve veredito e lista de problemas com arquivo:linha. "review" aqui é o DEGRAU de revisão da escada Wizz.
3
+ mode: subagent
4
+ permission:
5
+ edit: deny
6
+ ---
7
+
8
+ Você é um revisor adversarial do Wizz Method. Recebe um diff ou o resultado de um executor mais barato e assume que existe bug, mesmo que o resultado pareça limpo. Procure ativamente.
9
+
10
+ Regras:
11
+
12
+ - Verifique correção, segurança e regressão, arquivo por arquivo.
13
+ - Verifique aderência ao escopo: qualquer mudança fora do brief original é finding, não elogio.
14
+ - Não edite nenhum arquivo. Sua função é avaliar, não implementar.
15
+ - Conflito de opinião com o executor não se resolve aqui: registre o conflito e suba para a sessão decidir.
16
+ - Retorno: veredito único (aprovado, aprovado com ressalvas ou reprovado) seguido da lista de findings, cada um em 1 linha no formato arquivo:linha e descrição. Sem narração.
@@ -0,0 +1,15 @@
1
+ ---
2
+ description: Executor padrão do Wizz Method para implementação do dia a dia. Feature pequena/média bem definida, correção de bug com causa conhecida, edição multi-arquivo, testes. Despachar em 2+ instâncias paralelas quando o trabalho for divisível por arquivo/módulo (nunca duas no mesmo arquivo). "sonnet" aqui é o DEGRAU intermediário da escada Wizz, não o modelo subjacente.
3
+ mode: subagent
4
+ model: anthropic/claude-sonnet-5
5
+ ---
6
+
7
+ Você é um executor de implementação do Wizz Method. Recebe um brief com objetivo e contexto e implementa.
8
+
9
+ Regras:
10
+
11
+ - Detalhe de implementação é seu; decisão de arquitetura ou produto não é. Se aparecer uma, devolva como pergunta no resultado em vez de decidir.
12
+ - Respeite o escopo do brief. Refactor oportunista fora do escopo, não.
13
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
14
+ - Rode teste/type check do que tocou quando existirem no projeto e reporte o resultado real, inclusive falha.
15
+ - Retorno: o que mudou (1 linha por arquivo), resultado de testes, pendências. Sem narração.
@@ -0,0 +1,16 @@
1
+ ---
2
+ name: wizz-exec-opus
3
+ description: Executor forte do Wizz Method para trabalho difícil. Bug sem causa conhecida, refactor que cruza módulos, decisão técnica local. Degrau condicional: despachar só quando a sessão principal roda um modelo acima de Opus (ex.: Fable); se a sessão já é Opus, pule este degrau e use wizz-exec-review.
4
+ model: opus
5
+ ---
6
+
7
+ Você é um executor sênior do Wizz Method. Recebe um brief com objetivo e contexto para trabalho difícil, onde a causa raiz ou o caminho ainda não estão claros.
8
+
9
+ Regras:
10
+
11
+ - Investigue a causa raiz antes de mexer em qualquer arquivo. Não aplique correção superficial em cima de sintoma.
12
+ - Decisão técnica LOCAL (nome de abstração, estrutura interna do módulo) é sua. Decisão de arquitetura ampla ou de produto não é: devolva como pergunta no resultado em vez de decidir.
13
+ - Respeite o escopo do brief. Refactor oportunista fora do escopo, não.
14
+ - Siga o estilo do código ao redor (nomes, densidade de comentários, idioma).
15
+ - Rode teste/type check do que tocou quando existirem no projeto e reporte o resultado real, inclusive falha.
16
+ - Retorno: o que mudou (1 linha por arquivo), causa raiz identificada, resultado de testes, pendências. Sem narração.
@@ -0,0 +1,15 @@
1
+ ---
2
+ name: wizz-exec-review
3
+ description: Revisor do Wizz Method no modelo da sessão (inherit). Recebe um diff ou resultado de executor mais barato e revisa correção, segurança, regressão e aderência ao escopo. Não implementa: devolve veredito e lista de problemas com arquivo:linha.
4
+ model: inherit
5
+ ---
6
+
7
+ Você é um revisor adversarial do Wizz Method. Recebe um diff ou o resultado de um executor mais barato e assume que existe bug, mesmo que o resultado pareça limpo. Procure ativamente.
8
+
9
+ Regras:
10
+
11
+ - Verifique correção, segurança e regressão, arquivo por arquivo.
12
+ - Verifique aderência ao escopo: qualquer mudança fora do brief original é finding, não elogio.
13
+ - Não edite nenhum arquivo. Sua função é avaliar, não implementar.
14
+ - Conflito de opinião com o executor não se resolve aqui: registre o conflito e suba para a sessão decidir.
15
+ - Retorno: veredito único (aprovado, aprovado com ressalvas ou reprovado) seguido da lista de findings, cada um em 1 linha no formato arquivo:linha e descrição. Sem narração.
@@ -476,37 +476,49 @@ class ConfigDrivenIdeSetup {
476
476
 
477
477
  /**
478
478
  * Install WIZZ-authored native subagents (e.g. wizz-exec-haiku.md,
479
- * wizz-exec-sonnet.md) into the platform's subagent directory.
479
+ * wizz-exec-sonnet.md, or a platform-specific wizz-exec-haiku.toml) into
480
+ * the platform's subagent directory.
480
481
  *
481
- * Only Claude Code declares `agents_target_dir` today it's the only
482
- * platform whose native subagent files honor a `model:` frontmatter field.
483
- * The source lives inside the installed wizz module at
484
- * `{wizzDir}/wizz/subagents/`, mirroring how `installVerbatimSkills`
485
- * resolves module-relative source paths.
482
+ * Claude Code, Codex, OpenCode, and Gemini CLI declare `agents_target_dir`.
483
+ * Each platform reads its own native subagent file format, so the source
484
+ * files live in a per-platform subdirectory declared via
485
+ * `agents_source_subdir`: `{wizzDir}/wizz/subagents/<subdir>/`. Claude
486
+ * Code has no subdir — its files sit directly in `{wizzDir}/wizz/subagents/`
487
+ * as *.md with a `model:` frontmatter field, which is the only native
488
+ * format that field means anything to. This mirrors how
489
+ * `installVerbatimSkills` resolves module-relative source paths.
486
490
  *
487
- * Ownership is scoped to the `wizz-exec-*.md` naming convention only
488
- * files matching that pattern are ever written here, so a user's own
489
- * hand-authored subagents in the same directory are never touched.
491
+ * Ownership is scoped to the `wizz-exec-*` naming convention (`.md` or
492
+ * `.toml` extension) — only files matching that pattern are ever written
493
+ * here, so a user's own hand-authored subagents in the same directory are
494
+ * never touched. Directory entries (including the per-platform subdirs
495
+ * that live alongside Claude Code's root-level files) are skipped
496
+ * explicitly rather than relying on the extension filter to exclude them.
490
497
  * Silently no-ops when the source directory doesn't exist (e.g. install
491
498
  * without the wizz module).
492
499
  *
493
500
  * @param {string} projectDir - Project directory
494
501
  * @param {string} wizzDir - WIZZ installation directory
495
502
  * @param {Object} config - Installation configuration; reads agents_target_dir
503
+ * and the optional agents_source_subdir
496
504
  * @returns {Promise<number>} Count of subagent files installed
497
505
  */
498
506
  async installSubagents(projectDir, wizzDir, config) {
499
- const sourceDir = path.join(wizzDir, 'wizz', 'subagents');
507
+ const sourceDir = config.agents_source_subdir
508
+ ? path.join(wizzDir, 'wizz', 'subagents', config.agents_source_subdir)
509
+ : path.join(wizzDir, 'wizz', 'subagents');
500
510
  if (!(await fs.pathExists(sourceDir))) return 0;
501
511
 
502
512
  let entries;
503
513
  try {
504
- entries = await fs.readdir(sourceDir);
514
+ entries = await fs.readdir(sourceDir, { withFileTypes: true });
505
515
  } catch {
506
516
  return 0;
507
517
  }
508
518
 
509
- const subagentFiles = entries.filter((entry) => entry.startsWith('wizz-exec-') && entry.endsWith('.md'));
519
+ const subagentFiles = entries.filter(
520
+ (entry) => entry.isFile() && entry.name.startsWith('wizz-exec-') && (entry.name.endsWith('.md') || entry.name.endsWith('.toml')),
521
+ );
510
522
  if (subagentFiles.length === 0) return 0;
511
523
 
512
524
  const targetPath = path.join(projectDir, config.agents_target_dir);
@@ -514,7 +526,7 @@ class ConfigDrivenIdeSetup {
514
526
 
515
527
  let count = 0;
516
528
  for (const entry of subagentFiles) {
517
- await fs.copy(path.join(sourceDir, entry), path.join(targetPath, entry), { overwrite: true });
529
+ await fs.copy(path.join(sourceDir, entry.name), path.join(targetPath, entry.name), { overwrite: true });
518
530
  count++;
519
531
  }
520
532
 
@@ -617,12 +629,12 @@ class ConfigDrivenIdeSetup {
617
629
  );
618
630
  }
619
631
 
620
- // Clean stale wizz-exec-*.md subagent files. Like command pointers, these
621
- // live in a per-IDE directory (.claude/agents) that isn't deduped across
622
- // peers, so this runs regardless of skipTarget. installSubagents always
623
- // overwrites with the current source content, so unconditional removal
624
- // here is safe a routine reinstall just recreates the files moments
625
- // later.
632
+ // Clean stale wizz-exec-* subagent files (.md or .toml). Like command
633
+ // pointers, these live in a per-IDE directory (e.g. .claude/agents,
634
+ // .codex/agents) that isn't deduped across peers, so this runs
635
+ // regardless of skipTarget. installSubagents always overwrites with the
636
+ // current source content, so unconditional removal here is safe a
637
+ // routine reinstall just recreates the files moments later.
626
638
  if (this.installerConfig?.agents_target_dir) {
627
639
  await this.cleanupSubagents(projectDir, this.installerConfig.agents_target_dir);
628
640
  }
@@ -793,11 +805,12 @@ class ConfigDrivenIdeSetup {
793
805
  }
794
806
 
795
807
  /**
796
- * Remove WIZZ-owned `wizz-exec-*.md` subagent files from the platform's
797
- * subagent directory (e.g. .claude/agents). Symmetric counterpart to
798
- * installSubagents. Only touches files matching that naming convention —
799
- * a user's own hand-authored subagents in the same directory are never
800
- * removed. Removes the directory entirely if it ends up empty.
808
+ * Remove WIZZ-owned `wizz-exec-*` subagent files (`.md` or `.toml`) from
809
+ * the platform's subagent directory (e.g. .claude/agents, .codex/agents).
810
+ * Symmetric counterpart to installSubagents. Only touches files matching
811
+ * that naming convention — a user's own hand-authored subagents in the
812
+ * same directory are never removed. Removes the directory entirely if it
813
+ * ends up empty.
801
814
  * @param {string} projectDir
802
815
  * @param {string} agentsTargetDir - Relative dir (e.g. .claude/agents)
803
816
  */
@@ -807,15 +820,16 @@ class ConfigDrivenIdeSetup {
807
820
 
808
821
  let entries;
809
822
  try {
810
- entries = await fs.readdir(agentsPath);
823
+ entries = await fs.readdir(agentsPath, { withFileTypes: true });
811
824
  } catch {
812
825
  return;
813
826
  }
814
827
 
815
828
  for (const entry of entries) {
816
- if (!entry.startsWith('wizz-exec-') || !entry.endsWith('.md')) continue;
829
+ if (!entry.isFile()) continue;
830
+ if (!entry.name.startsWith('wizz-exec-') || !(entry.name.endsWith('.md') || entry.name.endsWith('.toml'))) continue;
817
831
  try {
818
- await fs.remove(path.join(agentsPath, entry));
832
+ await fs.remove(path.join(agentsPath, entry.name));
819
833
  } catch {
820
834
  // Skip files we can't remove.
821
835
  }
@@ -8,9 +8,14 @@
8
8
  # target_dir: Directory where skill directories are installed (project/workspace)
9
9
  # global_target_dir: (optional) User-home directory for global install
10
10
  # ancestor_conflict_check: (optional) Refuse install when ancestor dir has WIZZ files
11
- # agents_target_dir: (optional) Directory for native Claude Code subagents
12
- # (src/modules/wizz/subagents/*.md). Only claude-code supports the
13
- # `model:` frontmatter field these files rely on.
11
+ # agents_target_dir: (optional) Directory for native WIZZ-authored subagents
12
+ # (src/modules/wizz/subagents/). Currently declared by claude-code, codex,
13
+ # opencode, and gemini.
14
+ # agents_source_subdir: (optional) Subdirectory under subagents/ that holds
15
+ # the platform's native subagent file format (e.g. codex/*.toml,
16
+ # opencode/*.md, gemini/*.md). Omitted for claude-code, which reads
17
+ # straight from the subagents/ root (its native format is *.md with a
18
+ # `model:` frontmatter field).
14
19
  #
15
20
  # INSTALL SCOPE — LOCAL PER PROJECT IS THE ENFORCED DEFAULT.
16
21
  # The installer only ever writes skills to the project-relative `target_dir`
@@ -82,6 +87,8 @@ platforms:
82
87
  installer:
83
88
  target_dir: .agents/skills
84
89
  global_target_dir: ~/.codex/skills
90
+ agents_target_dir: .codex/agents
91
+ agents_source_subdir: codex
85
92
 
86
93
  codewhale:
87
94
  name: "CodeWhale"
@@ -145,6 +152,8 @@ platforms:
145
152
  installer:
146
153
  target_dir: .agents/skills
147
154
  global_target_dir: ~/.agents/skills
155
+ agents_target_dir: .gemini/agents
156
+ agents_source_subdir: gemini
148
157
 
149
158
  github-copilot:
150
159
  name: "GitHub Copilot"
@@ -258,6 +267,8 @@ platforms:
258
267
  target_dir: .agents/skills
259
268
  global_target_dir: ~/.agents/skills
260
269
  commands_target_dir: .opencode/commands
270
+ agents_target_dir: .opencode/agents
271
+ agents_source_subdir: opencode
261
272
 
262
273
  openhands:
263
274
  name: "OpenHands"