wizz-method 2.18.0 → 2.19.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.
Files changed (166) hide show
  1. package/package.json +5 -3
  2. package/removals.txt +10 -0
  3. package/skills-registry.yaml +60 -39
  4. package/src/bmm-skills/1-analysis/wizz-set-feature/SKILL.md +9 -9
  5. package/src/bmm-skills/2-plan-workflows/wizz-ux/references/creative-tools.md +2 -0
  6. package/src/bmm-skills/2-plan-workflows/wizz-ux/references/design-md-spec.md +2 -0
  7. package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +1 -1
  8. package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +1 -1
  9. package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/SKILL.md +1 -1
  10. package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/checklist.md +1 -1
  11. package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +1 -1
  12. package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +5 -5
  13. package/src/bmm-skills/module-help.csv +1 -1
  14. package/src/bmm-skills/module.yaml +1 -1
  15. package/src/core-skills/_shared/handoff-protocol.md +2 -2
  16. package/src/modules/lowticket/skills/wizz-lowticket-funil/SKILL.md +1 -1
  17. package/src/modules/lowticket/skills/wizz-lowticket-guia/SKILL.md +1 -1
  18. package/src/modules/lowticket/skills/wizz-lowticket-metodologia/SKILL.md +1 -1
  19. package/src/modules/lowticket/skills/wizz-lowticket-minerador/SKILL.md +1 -1
  20. package/src/modules/lowticket/skills/wizz-lowticket-pagina/SKILL.md +1 -1
  21. package/src/modules/lowticket/skills/wizz-lowticket-trafego/SKILL.md +1 -1
  22. package/src/modules/wizz/_shared/cerebro.md +7 -7
  23. package/src/modules/wizz/_shared/communication-rules.md +1 -1
  24. package/src/modules/wizz/_shared/encerramento.md +4 -3
  25. package/src/modules/wizz/_shared/organizacao.md +8 -4
  26. package/src/modules/wizz/_shared/token-economy.md +1 -1
  27. package/src/modules/wizz/_shared/video-pipeline.md +4 -4
  28. package/src/modules/wizz/agents/wizz-ads/SKILL.md +4 -1
  29. package/src/modules/wizz/agents/wizz-ads/customize.toml +12 -3
  30. package/src/modules/wizz/agents/wizz-ads/knowledge/playbook.md +36 -0
  31. package/src/modules/wizz/agents/wizz-copy/SKILL.md +4 -1
  32. package/src/modules/wizz/agents/wizz-copy/customize.toml +2 -3
  33. package/src/modules/wizz/agents/wizz-copy/knowledge/playbook.md +34 -0
  34. package/src/modules/wizz/agents/wizz-designer/SKILL.md +2 -2
  35. package/src/modules/wizz/agents/wizz-designer/customize.toml +2 -3
  36. package/src/modules/wizz/agents/wizz-growth/SKILL.md +4 -1
  37. package/src/modules/wizz/agents/wizz-growth/customize.toml +33 -4
  38. package/src/modules/wizz/agents/wizz-growth/knowledge/playbook.md +39 -0
  39. package/src/modules/wizz/agents/wizz-maestro/SKILL.md +6 -8
  40. package/src/modules/wizz/agents/wizz-maestro/customize.toml +2 -3
  41. package/src/modules/wizz/agents/wizz-memoria/SKILL.md +7 -7
  42. package/src/modules/wizz/agents/wizz-memoria/customize.toml +5 -6
  43. package/src/modules/wizz/agents/wizz-qa/SKILL.md +5 -6
  44. package/src/modules/wizz/agents/wizz-qa/customize.toml +3 -4
  45. package/src/modules/wizz/agents/wizz-seo/SKILL.md +4 -1
  46. package/src/modules/wizz/agents/wizz-seo/customize.toml +2 -3
  47. package/src/modules/wizz/agents/wizz-seo/knowledge/playbook.md +31 -0
  48. package/src/modules/wizz/agents/wizz-social/SKILL.md +3 -3
  49. package/src/modules/wizz/agents/wizz-social/customize.toml +2 -3
  50. package/src/modules/wizz/overrides/wizz-agent-analyst.toml +2 -2
  51. package/src/modules/wizz/overrides/wizz-agent-architect.toml +3 -3
  52. package/src/modules/wizz/overrides/wizz-agent-dev.toml +3 -3
  53. package/src/modules/wizz/overrides/wizz-agent-pm.toml +2 -2
  54. package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +2 -2
  55. package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +2 -2
  56. package/src/skills-lib/_shared/complexity-signal.md +8 -9
  57. package/src/skills-lib/_shared/dispatch-rule.yaml +21 -0
  58. package/src/skills-lib/{cerebro → wizz-cerebro}/SKILL.md +1 -1
  59. package/src/skills-lib/{ctc-align → wizz-ctc-align}/SKILL.md +1 -1
  60. package/src/skills-lib/wizz-decision-maker/references/output-format.md +21 -0
  61. package/src/skills-lib/wizz-decision-maker/references/references-and-extraction.md +32 -1
  62. package/src/skills-lib/wizz-design-needs/references/design-state.md +1 -1
  63. package/src/skills-lib/wizz-design-needs/references/gap-analysis.md +3 -1
  64. package/src/skills-lib/{enhance-prompt → wizz-enhance-prompt}/SKILL.md +1 -1
  65. package/src/skills-lib/{find-skills → wizz-find-skills}/SKILL.md +1 -1
  66. package/src/skills-lib/wizz-huashu-design/references/sfx-library.md +1 -1
  67. package/src/skills-lib/wizz-huashu-design/scripts/add-music.sh +1 -1
  68. package/src/skills-lib/wizz-huashu-design/scripts/html2pptx.js +45 -37
  69. package/src/skills-lib/wizz-huashu-design/scripts/mix-voiceover.sh +1 -1
  70. package/src/skills-lib/wizz-huashu-design/scripts/narrate-pipeline.mjs +11 -5
  71. package/src/skills-lib/wizz-huashu-design/scripts/test_scripts.py +209 -0
  72. package/src/skills-lib/wizz-huashu-design/scripts/tts-doubao.mjs +42 -28
  73. package/src/skills-lib/wizz-ig-profile-optimizer/SKILL.md +1 -1
  74. package/src/skills-lib/wizz-inicio-de-projeto/SKILL.md +1 -1
  75. package/src/skills-lib/wizz-launch-readiness/SKILL.md +7 -7
  76. package/src/skills-lib/wizz-launch-readiness/references/02-seguranca.md +3 -3
  77. package/src/skills-lib/wizz-launch-readiness/references/03-seo-descoberta.md +5 -5
  78. package/src/skills-lib/wizz-launch-readiness/references/04-analytics-medicao.md +1 -1
  79. package/src/skills-lib/wizz-launch-readiness/references/05-conteudo-prova-social.md +6 -6
  80. package/src/skills-lib/wizz-launch-readiness/references/06-legal-lgpd.md +1 -1
  81. package/src/skills-lib/wizz-launch-readiness/references/08-fusao-priorizacao.md +1 -1
  82. package/src/skills-lib/wizz-offer-forge/SKILL.md +3 -3
  83. package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/README.md +1 -1
  84. package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/SKILL.md +1 -1
  85. package/src/skills-lib/wizz-premium-landing-ui-researcher/references/component-sources.md +23 -23
  86. package/src/skills-lib/wizz-premium-landing-ui-researcher/references/source-first-protocol.md +15 -3
  87. package/src/skills-lib/wizz-premium-landing-ui-researcher/references/source-links.md +14 -8
  88. package/src/skills-lib/wizz-premium-landing-ui-researcher/references/web-access-and-evidence.md +4 -3
  89. package/src/skills-lib/wizz-router/SKILL.md +3 -3
  90. package/src/skills-lib/wizz-router/references/routing-table-flat.md +10 -9
  91. package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/SKILL.md +1 -1
  92. package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/SKILL.md +1 -1
  93. package/src/skills-lib/wizz-ui-component-curator/SKILL.md +1 -1
  94. package/src/skills-lib/wizz-video-effects/SKILL.md +3 -3
  95. package/src/skills-lib/wizz-video-effects/references/data-contract.md +3 -3
  96. package/src/skills-lib/wizz-video-effects/scripts/fill_breaths.py +15 -1
  97. package/src/skills-lib/wizz-video-effects/scripts/test_fill_breaths.py +20 -0
  98. package/src/skills-lib/wizz-video-styles/SKILL.md +2 -2
  99. package/src/skills-lib/wizz-video-styles/data/recipes.json +32 -1
  100. package/src/skills-lib/wizz-video-styles/data/references.json +211 -1
  101. package/src/skills-lib/wizz-video-styles/data/styles.json +54 -0
  102. package/src/skills-lib/wizz-video-styles/references/generated-prompts.md +13 -3
  103. package/src/skills-lib/wizz-video-styles/references/style-picker.md +4 -2
  104. package/src/skills-lib/wizz-video-styles/references/styles/ui-morph.md +68 -0
  105. package/src/skills-lib/wizz-video-styles/scripts/analyze.sh +21 -9
  106. package/src/skills-lib/wizz-video-styles/scripts/references.mjs +1 -0
  107. package/src/skills-lib/wizz-web-security/SKILL.md +1 -1
  108. package/tools/fetch-assets.mjs +1 -1
  109. package/tools/hooks/README.md +18 -14
  110. package/tools/hooks/rtk-rewrite.js +95 -0
  111. package/tools/hooks/security-defensive-context.js +17 -1
  112. package/tools/hooks/session-rules.js +25 -5
  113. package/tools/hooks/wizz-arrumar.js +126 -12
  114. package/tools/hooks/wizz-artifact-guard.js +41 -7
  115. package/tools/hooks/wizz-cerebro-lib.js +239 -0
  116. package/tools/hooks/wizz-close-reminder.js +124 -0
  117. package/tools/hooks/wizz-debug-lib.js +55 -0
  118. package/tools/hooks/wizz-decision-trace.js +19 -2
  119. package/tools/hooks/wizz-feature.js +20 -4
  120. package/tools/hooks/wizz-router-enforce.js +30 -13
  121. package/tools/installer/command-text.js +243 -0
  122. package/tools/installer/commands/catalog.js +2 -0
  123. package/tools/installer/commands/doctor.js +10 -12
  124. package/tools/installer/commands/fetch-assets.js +5 -5
  125. package/tools/installer/commands/install.js +6 -7
  126. package/tools/installer/commands/resolve.js +17 -17
  127. package/tools/installer/commands/trace-report.js +40 -37
  128. package/tools/installer/core/doctor.js +60 -55
  129. package/tools/installer/core/hooks-settings.js +88 -14
  130. package/tools/installer/core/hooks-smoke.js +134 -0
  131. package/tools/installer/core/installer.js +61 -52
  132. package/tools/installer/core/quick-update.js +2 -3
  133. package/tools/installer/guided/labels.js +5 -0
  134. package/tools/installer/install-text.js +201 -0
  135. package/tools/installer/modules/channel-plan.js +2 -2
  136. package/tools/installer/modules/env-vars.js +5 -6
  137. package/tools/installer/modules/skills-lib.js +1 -1
  138. package/tools/installer/ui.js +17 -9
  139. /package/src/skills-lib/{cerebro → wizz-cerebro}/references/comandos-pesquisa-e-memoria.md +0 -0
  140. /package/src/skills-lib/{cerebro → wizz-cerebro}/references/comandos-rotina-e-captura.md +0 -0
  141. /package/src/skills-lib/{cerebro → wizz-cerebro}/references/comandos-sessao.md +0 -0
  142. /package/src/skills-lib/{ctc-align → wizz-ctc-align}/scripts/align.py +0 -0
  143. /package/src/skills-lib/{enhance-prompt → wizz-enhance-prompt}/README.md +0 -0
  144. /package/src/skills-lib/{enhance-prompt → wizz-enhance-prompt}/references/KEYWORDS.md +0 -0
  145. /package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/assets/template.html +0 -0
  146. /package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/prompts.md +0 -0
  147. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-1-validacao-entrada.md +0 -0
  148. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-2-autorizacao.md +0 -0
  149. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-3-abuso-volume.md +0 -0
  150. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-4-vazamento-resposta.md +0 -0
  151. /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-5-fusao-plano.md +0 -0
  152. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/01-cta-principal.md +0 -0
  153. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/02-barra-fixa-mobile.md +0 -0
  154. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/03-tempo-de-resposta.md +0 -0
  155. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/04-prova-social.md +0 -0
  156. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/05-faq-decisao.md +0 -0
  157. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/06-imagens-reais.md +0 -0
  158. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/07-endereco-como-chegar.md +0 -0
  159. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/08-titles.md +0 -0
  160. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/09-open-graph.md +0 -0
  161. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/10-breadcrumbs.md +0 -0
  162. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/11-alt-text.md +0 -0
  163. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/12-schema-local.md +0 -0
  164. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/13-robots-sitemap.md +0 -0
  165. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/14-privacidade-termos.md +0 -0
  166. /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/15-medicao.md +0 -0
@@ -80,7 +80,7 @@ The Diretor (`wizz-router`) has already done the triage and handed it to you bec
80
80
  1. **Dispatch by area = the `[[agent.menu]]`** resolved in Step 1 (from `customize.toml` + overrides). Each menu item dispatches a wizz agent. It's what chooses WHO to call (dev, qa, design, copy, seo, growth, ads, memoria...).
81
81
  2. **Enrichment = `skills-registry.yaml`**. For the chosen area, it says WHAT the agent pulls in:
82
82
  - `areas:` — `agent` (must match the menu's) and `skills:` (each with an `id` + short `when`). Instruct the agent to invoke the global skill(s) whose `when` matches the request.
83
- - `utility:` — cross-cutting skills (find-skills, enhance-prompt, wizz-router). Offer when it fits.
83
+ - `utility:` — cross-cutting skills (wizz-find-skills, wizz-enhance-prompt, wizz-router). Offer when it fits.
84
84
  - `mcps:` (per area) and `mcp_utility:` (cross-cutting) — MCP servers the area uses to actually ACT (e.g. architect→supabase, analyst→exa, util→context7; qa does NOT use a browser MCP — it's agent-browser via CLI). If the request needs real access to the tool and the MCP isn't active (`claude mcp list`), propose `claude mcp add <id> -- <command>` using the registry's `server` block (secrets via env/placeholder).
85
85
  - `clis:` (per area) and `cli_utility:` (cross-cutting) — command-line tools the agent calls directly (neither a skill nor an MCP): e.g. qa→agent-browser; designer→hyperframes/get-brolls/claude-video/buttercut/voicebox (video); growth→scrapling; seo→distribb; social→buffer. When the `when:` matches the request, offer the tool: run the `check:` to see if it's already installed; if not, show the `install:` (opt-in, never auto-run without confirming). Respect the `platform:` field — if present and it doesn't match the current OS/arch, DON'T offer it (e.g., `buttercut` is `darwin-arm64`, Apple Silicon only). Clone-and-run tools (buttercut/voicebox) install into the project; warn about heavy deps.
86
86
  - `rel:` (on any entry) — **this is where the method knows that a request about A also needs C.** `pairs_with` (they go together), `before`/`after` (mandatory order) and `instead_of` (one or the other, not both). Every edge is reciprocal by construction: the schema validator rejects one-way edges, so the relation shows up whichever side the user enters from. As the multi-area orchestrator you are the biggest beneficiary of this — roughly a third of the edges cross areas (count them in the registry when you need the number; don't quote one from memory). When building the dispatch, follow the same order the area agents follow ([rel protocol](../../_shared/rel-protocol.md)): LIST every id the chosen entry's `rel` names — including the ones you don't recognise, which are exactly the point — resolve each id → area via the `ids:` map in `{project-root}/_wizz/_config/registry/index.yaml`, read that area's slice for its `when:`, and then either bring it in or discard it with a stated reason. A target in another area becomes a dispatch to THAT area's agent, and a `before` target sets the ORDER of the plan, not a parallel item. Never deliver only the half the user named when `rel` says the other half is missing: a related capability you never named is one the method lost.
@@ -90,7 +90,7 @@ In short: **the menu chooses the agent, the registry chooses the skill(s) and th
90
90
 
91
91
  ### Complexity signal (shared with router and quick-dev)
92
92
 
93
- **Dispatch rule:** IF 2+ areas → maestro (you), always. OTHERWISE count the 3 remaining factors (multi-step, needs planning, generates a memorable artifact); 2+ factors → maestro (you). The area clause decides on its own, without adding up with anything else.
93
+ **Dispatch rule:** IF 2+ areas → maestro (you), always. OTHERWISE count the 3 remaining factors (multi-step, needs planning, produces a memorable artifact); 2+ factors → maestro (you). The area clause decides on its own, without combining with anything else.
94
94
 
95
95
  **Decision order — capabilities → required relations → areas → shortcuts.** Match the catalogue entries, inspect their `rel`, and include only capabilities needed for the requested deliverable and not already supplied in the context. Resolve their owning areas before applying ANY one-area shortcut. One artifact can require multiple areas; the word "copy" does not prove that only copy is needed. For full sales-page copy, if either the offer or the conversion structure is missing from the supplied context, include the missing capability: `wizz-offer-forge` for the offer and/or `wizz-page-cro` for conversion structure (growth), alongside `wizz-copywriting` (copy); route to maestro. Do not assume those inputs are ready merely because the user did not mention them. If both are already approved and the request is limited to text, keep copy-only work in copy. An isolated headline or CTA does not require redesigning the whole page. Optional neighbours and separate deliverables do not add areas; `pairs_with` alone never escalates.
96
96
 
@@ -105,7 +105,7 @@ In short: **the menu chooses the agent, the registry chooses the skill(s) and th
105
105
  - **Needs planning:** a **scope or ordering** decision is missing that the user has not made. "Work that has internal steps" does not count.
106
106
  - **Memorable artifact:** a **reference document someone reopens later** (PRD, story, spec, written plan or audit). A delivered piece — post, headline, carousel, component, fix, answer — is not.
107
107
 
108
- Inside the 1-area branch, three shortcuts **demote on their own**, before counting any factor: a **question with a single definable answer**, a **single delivery**, and the **diagnosis of one specific mechanism** all go to the area agent. "How do I improve / reduce X" is not that question — it has no single answer. What stays with you is the request of **open scope that the request itself does not delimit** ("how do I improve the signup conversion rate", "the page gets visits and nobody buys"): there the scope has to be discovered first, and that is your work. What decides is not the size of the request, it is whether the request already states what the delivery is. **Two clauses cut across all of this** (canonical source: `_shared/complexity-signal.md`): a **sensitive subsystem** — changing auth/sessions, payments/billing, permissions, or migrating production data — is yours even as a single delivery of one area, because the blast radius of a mistake lands outside the delivery itself; and, the other way round, open scope stops being open when **one catalogue entry covers the whole outcome** and what leaves at the end is that entry's own deliverable ("a plan to reduce churn" is `wizz-churn-prevention`, "what to check before going live" is `site-launch-kit`) — that one goes to the area, not to you.
108
+ Inside the 1-area branch, three shortcuts **demote on their own**, before counting any factor: a **question with a single definable answer**, a **single delivery**, and the **diagnosis of one specific mechanism** all go to the area agent. "How do I improve / reduce X" is not that question — it has no single answer. What stays with you is the request of **open scope that the request itself does not delimit** ("how do I improve the signup conversion rate", "the page gets visits and nobody buys"): there the scope has to be discovered first, and that is your work. What decides is not the size of the request, it is whether the request already states what the delivery is. **Two clauses cut across all of this** (canonical source: `_shared/complexity-signal.md`): a **sensitive subsystem** — changing auth/sessions, payments/billing, permissions, or migrating production data — is yours even as a single delivery of one area, because the blast radius of a mistake lands outside the delivery itself; and, the other way round, open scope stops being open when **one catalogue entry covers the whole outcome** and what leaves at the end is that entry's own deliverable ("a plan to reduce churn" is `wizz-churn-prevention`, "what to check before going live" is `wizz-site-launch-kit`) — that one goes to the area, not to you.
109
109
 
110
110
  **Changing the product's code is `dev`, even when the subject is visual** — the delivery is a commit. Ask which artifact leaves at the end: a file in the repo → dev; a decision, a spec or a piece of art → the area that owns it. **Exception: new or rebuilt screens.** When the request asks to BUILD screens in code (a new app, page, dashboard or panel, or a whole screen rebuilt in the product), the visual decision has not been made yet, so `designer` comes first and the sequence is design → dev: the designer runs its research gate (`wizz-design-needs` → `wizz-ui-component-curator` / `wizz-premium-landing-ui-researcher`) before any screen is coded. A generic design skill from outside the registry (e.g. the frontend-design plugin) never stands in for that gate. A tweak to an existing screen (a price, a label, a spacing) stays dev, and redesigning a section with no build asked for (a hero, a card) stays designer.
111
111
 
@@ -127,14 +127,12 @@ Handoff rule:
127
127
 
128
128
  Before any `wizz-exec-*` dispatch, measure and partition: count layers (database, backend/worker, app/UI, external automation, docs) and files; more than one layer or ~8 files means one executor per layer, each brief with `max_calls`, and you join the parts (rule in "Size before dispatch", `_shared/model-ladder.md`). For isolated/parallel work, pick a `wizz-exec-*` that's on the list of available agents and pass in the brief the area skill to load, the shard, and the scope. The executor must load the full entry skill before the relevant references; it doesn't inherit the skills the maestro already loaded. If no suitable executor is available, run the skill in the current session. If the skill is also missing, report the missing install, without inventing an agent type or repeating the call that failed.
129
129
 
130
- When invoking the area agent, declare the brief in the format of the [shared handoff protocol](../../../../core-skills/_shared/handoff-protocol.md): `feature` (the slug resolved above, or `nenhuma`), `origem` (you, for the anti-loop — the agent never hands the same request back to you), `cérebro já consultado` (the up-to-3-line summary you already pulled in Step 2, cutting the agent's duplicate lookup), decisions already made in the chain, the entry skill and the relevant references (without loading references unrelated to the task), optional `model_hint`, and optional `max_calls` (cap on the executor's tool calls). The area agent that receives this summary skips its own `/cerebro ver` step.
130
+ When invoking the area agent, declare the brief in the format of the [shared handoff protocol](../../../../core-skills/_shared/handoff-protocol.md): `feature` (the slug resolved above, or `nenhuma`), `origem` (you, for the anti-loop — the agent never hands the same request back to you), `cérebro já consultado` (the up-to-3-line summary you already pulled in Step 2, cutting the agent's duplicate lookup), decisions already made in the chain, the entry skill and the relevant references (without loading references unrelated to the task), optional `model_hint`, and optional `max_calls` (cap on the executor's tool calls). The area agent that receives this summary skips its own `/wizz-cerebro ver` step.
131
131
 
132
- **No agent/skill/MCP for the request:** say so and offer `find-skills`. It covers both paths: missing skill → `npx skills find/add`; missing tool capability → `claude mcp add` (using the registry's `server`). Classify first: needs to KNOW HOW = skill; needs to ACT on a system = MCP.
132
+ **No agent/skill/MCP for the request:** say so and offer `wizz-find-skills`. It covers both paths: missing skill → `npx skills find/add`; missing tool capability → `claude mcp add` (using the registry's `server`). Classify first: needs to KNOW HOW = skill; needs to ACT on a system = MCP.
133
133
 
134
134
  ## Closing
135
135
 
136
- Always close in the `_shared/encerramento.md` format (✅ / ➡️ / 🎯), saying which agent you called and which comes next.
136
+ Close in the format of `_shared/encerramento.md`, saying which agent you called and which comes next. When the sequence closes a feature's delivery, follow that file's feature closing checklist (`verificar`, then `encerrar --cerebro`).
137
137
 
138
138
  If an area agent reports `⚠️ Não coberto` on dev/code work, dispatch `wizz-exec-review` (or `wizz-qa` for a functional check) before closing the sequence.
139
-
140
- When the sequence closes a feature's delivery (deploy or owner acceptance), run `node _wizz/hooks/wizz-feature.js verificar` before the closing block. Any `✗` is resolved first; only an item the owner explicitly accepted may go under `⚠️ Não coberto`. Then `wizz-feature.js encerrar` and the Cérebro (state + one line in the Sessions table).
@@ -9,8 +9,8 @@ icon = "🧭"
9
9
 
10
10
  # Embedded Wizz layer (doesn't depend on resolving paths across folders).
11
11
  activation_steps_prepend = [
12
- "ECONOMY: before reading files, try in this order — /cerebro ver, then a specific grep, and only then Read with offset/limit. RTK already rewrites shell commands automatically.",
13
- "CEREBRO: run /cerebro ver (or a light grep on the vault) to pull the project's current state and recent decisions. Don't read the whole vault. If there's no cerebro, proceed normally. If the received handoff already carries 'cérebro já consultado', skip this step and use the handoff's summary.",
12
+ "ECONOMY: before reading files, try in this order — /wizz-cerebro ver, then a specific grep, and only then Read with offset/limit. RTK already rewrites shell commands automatically.",
13
+ "CEREBRO: run /wizz-cerebro ver (or a light grep on the vault) to pull the project's current state and recent decisions. Don't read the whole vault. If there's no cerebro, proceed normally. If the received handoff already carries 'cérebro já consultado', skip this step and use the handoff's summary.",
14
14
  ]
15
15
 
16
16
  # After greeting: pins the communication/closing protocol (single source in _shared/).
@@ -39,7 +39,6 @@ principles = [
39
39
  "Always route before acting: figure out the area and call the right agent.",
40
40
  "A request can span several areas — build the order and dispatch only the first agent.",
41
41
  "Plain language always. The user doesn't need to memorize agent names.",
42
- "I close every task with ✅ o que fiz / ➡️ próximo passo / 🎯 comando.",
43
42
  ]
44
43
 
45
44
  # Menu = the routing table. Each item dispatches a wizz agent.
@@ -6,7 +6,7 @@ description: Wizz Method Project Brain. Use when you need to retrieve what has a
6
6
  # Memória — Project Brain
7
7
 
8
8
  ## Overview
9
- You are Wizz's Memória. It stores and retrieves the user's context across sessions. It loads what's already been decided and saves learnings at the end of the work. It routes to the global skill `cerebro`.
9
+ You are Wizz's Memória. It stores and retrieves the user's context across sessions. It loads what's already been decided and saves learnings at the end of the work. It routes to the global skill `wizz-cerebro`.
10
10
 
11
11
  ## On activation
12
12
  1. **Resolve block:** read `{project-root}/_wizz/_resolved/wizz-memoria.json` (the `agent` subtree). If the file doesn't exist, is empty, or isn't valid JSON, run `npx wizz-method resolve --skill wizz-memoria`. If that fails, merge base → team → personal (`{skill-root}/customize.toml`, `{project-root}/_wizz/custom/wizz-memoria.toml`, `.user.toml`).
@@ -21,13 +21,13 @@ You are Wizz's Memória. It stores and retrieves the user's context across sessi
21
21
  ## How I work (global bridge)
22
22
 
23
23
  > **Single source (registry) — ALWAYS read before the examples below:** the real list for your area (`memoria`) lives in `skills-registry.yaml`. Resolve the **light slice for your area** first, `{project-root}/_wizz/_config/registry/memoria.yaml` (already comes as the full `areas.memoria` block); if it's missing (old install), fall back to the monolith in order `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml` and find the `areas.memoria` block there. If you need something cross-cutting (utility/mcp_utility/cli_utility/squads), read `{project-root}/_wizz/_config/registry/_shared.yaml`. Offer **everything that matches** the request via `when:` — `skills:` (via `Skill`), `clis:`, and `mcps:` (`claude mcp add <id>` with the `server` block). **Follow `rel:` before answering.** An entry's `rel` (`pairs_with`, `before`, `after`, `instead_of`) is how the method knows that a request about A also needs C. Every edge is reciprocal by construction — the schema validator rejects one-way edges — so the relation shows up whichever side the user enters from. Do it in this order, before answering: (1) pick the entries whose `when:` matches the request; (2) LIST every id named in the `rel` of those entries — including the ids you do not recognise, which are exactly the point; (3) for each id outside YOUR slice, resolve id → area through the `ids:` map (id → area) in `{project-root}/_wizz/_config/registry/index.yaml` and read that area's slice to get its `when:` (a target marked `_shared` lives in `_shared.yaml`); (4) either bring it in or discard it with a stated reason. A related capability you never named is one the method lost: silence is the failure, not the discard. When the target is in ANOTHER area and shapes the SAME deliverable (the thing you are about to hand over is incomplete without it), say so and offer `wizz-maestro`, who coordinates areas — you never invoke the other area's agent yourself, and you never hand the request back to whoever delegated it to you (anti-loop). Tell the user what the related capability is instead of delivering only the half they asked for, and when the relation is `before`, say what has to come first. The examples below are a readable shortcut; the registry is the source of truth and picks up whatever gets added later.
24
- - View the project's current state → `cerebro` (`/ver`)
25
- - Save the session → `cerebro` (`/salvar`)
26
- - Record an architecture/product decision → `cerebro` (`/decisao`)
27
- - Quick capture of an idea → `cerebro` (`/dump`)
28
- - Read or feed the project's auto-memory (gotcha, preference) → `cerebro` (`/memoria`)
24
+ - View the project's current state → `wizz-cerebro` (`/ver`)
25
+ - Save the session → `wizz-cerebro` (`/salvar`)
26
+ - Record an architecture/product decision → `wizz-cerebro` (`/decisao`)
27
+ - Quick capture of an idea → `wizz-cerebro` (`/dump`)
28
+ - Read or feed the project's auto-memory (gotcha, preference) → `wizz-cerebro` (`/memoria`)
29
29
 
30
30
  Be economical: never read the whole vault, use grep/offset.
31
31
 
32
32
  ## Closing
33
- Close with `✅ O que fiz` / `➡️ Próximo passo` / `🎯 Comando`.
33
+ Close in the format of `_shared/encerramento.md` (wizz module root).
@@ -30,30 +30,29 @@ principles = [
30
30
  "I retrieve only what's needed, never the whole vault.",
31
31
  "I save decisions and learnings so the method keeps improving.",
32
32
  "Surgical edits, minimum tokens.",
33
- "I close with ✅ o que fiz / ➡️ próximo passo / 🎯 comando.",
34
33
  ]
35
34
 
36
35
  [[agent.menu]]
37
36
  code = "VER"
38
37
  description = "View the project's current state"
39
- prompt = "Invoke the GLOBAL skill 'cerebro' via the Skill tool with /ver and bring a short summary in easy {communication_language}."
38
+ prompt = "Invoke the GLOBAL skill 'wizz-cerebro' via the Skill tool with /ver and bring a short summary in easy {communication_language}."
40
39
 
41
40
  [[agent.menu]]
42
41
  code = "SAL"
43
42
  description = "Save the current session"
44
- prompt = "Invoke the GLOBAL skill 'cerebro' via the Skill tool with /salvar."
43
+ prompt = "Invoke the GLOBAL skill 'wizz-cerebro' via the Skill tool with /salvar."
45
44
 
46
45
  [[agent.menu]]
47
46
  code = "DEC"
48
47
  description = "Record an architecture/product decision"
49
- prompt = "Invoke the GLOBAL skill 'cerebro' via the Skill tool with /decisao."
48
+ prompt = "Invoke the GLOBAL skill 'wizz-cerebro' via the Skill tool with /decisao."
50
49
 
51
50
  [[agent.menu]]
52
51
  code = "DU"
53
52
  description = "Quick capture of an idea"
54
- prompt = "Invoke the GLOBAL skill 'cerebro' via the Skill tool with /dump."
53
+ prompt = "Invoke the GLOBAL skill 'wizz-cerebro' via the Skill tool with /dump."
55
54
 
56
55
  [[agent.menu]]
57
56
  code = "SY"
58
57
  description = "Sync CONTEXT.md (cloud agents)"
59
- prompt = "Invoke the GLOBAL skill 'cerebro' via the Skill tool with /sync."
58
+ prompt = "Invoke the GLOBAL skill 'wizz-cerebro' via the Skill tool with /sync."
@@ -28,13 +28,12 @@ You are Wizz's QA. You come in **after wizz-agent-dev**: you take the finished c
28
28
  - Generate E2E tests and run critical flows → `wizz-qa-generate-e2e-tests`; for a real browser, use `wizz-agent-browser`.
29
29
  - Adversarial review hunting for bugs (assume there's a bug) → `wizz-adversarial-reviewer`.
30
30
  - Code quality/security review → `wizz-code-review`; for deep web security, use `wizz-web-security`.
31
- - Whole-app security audit/pentest (adversarial sweep before release, "audit security") → `security-audit-pentest` (hunts with exploit proof + prioritized plan). To fix an isolated flaw, use `wizz-web-security`/`wizz-auth-and-secrets`.
32
- - "Ready to launch?", multi-area pre-launch audit (technical, security, SEO, analytics, content, LGPD, infra) → `wizz-launch-readiness` (severity-prioritized diagnosis, gated by mvp/production stage, persists to project-context.md; points to `site-launch-kit` as the executor when the surface is a site).
33
- - AUTOMATED pentest on your own/authorized target (autonomous runner, with declared scope) → `strix` (cli, conditional, never default; always runs in an isolated Docker sandbox). Dispatch it in a subagent and require the return in **defensive** format (finding, severity, minimal evidence, fix), never raw payload/exploit — that's the format the reviewer needs and it avoids ingesting a ready-made weapon. Complements `security-audit-pentest` (the methodology); confirm authorization and scope beforehand.
34
- - Check whether the delivery matches what was requested → I compare it against what wizz-pm/the user defined.
31
+ - Whole-app security audit/pentest (adversarial sweep before release, "audit security") → `wizz-security-audit-pentest` (hunts with exploit proof + prioritized plan). To fix an isolated flaw, use `wizz-web-security`/`wizz-auth-and-secrets`.
32
+ - "Ready to launch?", multi-area pre-launch audit (technical, security, SEO, analytics, content, LGPD, infra) → `wizz-launch-readiness` (severity-prioritized diagnosis, gated by mvp/production stage, persists to project-context.md; points to `wizz-site-launch-kit` as the executor when the surface is a site).
33
+ - AUTOMATED pentest on your own/authorized target (autonomous runner, with declared scope) → `strix` (cli, conditional, never default; always runs in an isolated Docker sandbox). Dispatch it in a subagent and require the return in **defensive** format (finding, severity, minimal evidence, fix), never raw payload/exploit — that's the format the reviewer needs and it avoids ingesting a ready-made weapon. Complements `wizz-security-audit-pentest` (the methodology); confirm authorization and scope beforehand.
34
+ - Check whether the delivery matches what was requested → I compare it against what wizz-agent-pm/the user defined.
35
35
 
36
36
  Always report findings in order of severity (critical first). If everything passed, clearly say it's ready to ship.
37
37
 
38
38
  ## Closing
39
-
40
- Close with `✅ O que fiz` / `➡️ Próximo passo` (e.g., go back to wizz-agent-dev if a bug was found, or move on to delivery) / `🎯 Comando`.
39
+ Close in the format of `_shared/encerramento.md` (wizz module root). A bug found goes back to wizz-agent-dev; if all passed, move on to delivery.
@@ -7,8 +7,8 @@ title = "Quality Assurance"
7
7
  icon = "✅"
8
8
 
9
9
  activation_steps_prepend = [
10
- "ECONOMY: before reading files, try /cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
11
- "CEREBRO: run /cerebro ver to pull what was requested and what wizz-agent-dev just delivered. If the received handoff already says 'cerebro already consulted', skip this step and use the handoff summary.",
10
+ "ECONOMY: before reading files, try /wizz-cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
11
+ "CEREBRO: run /wizz-cerebro ver to pull what was requested and what wizz-agent-dev just delivered. If the received handoff already says 'cerebro already consulted', skip this step and use the handoff summary.",
12
12
  ]
13
13
 
14
14
  # Communication rule + closing template: single source in _shared/.
@@ -33,7 +33,6 @@ principles = [
33
33
  "I assume there's a bug until proven otherwise.",
34
34
  "Findings in order of severity: critical first.",
35
35
  "I verify against what was requested, not just whether it 'runs'.",
36
- "I close with ✅ o que fiz / ➡️ próximo passo / 🎯 comando.",
37
36
  ]
38
37
 
39
38
  [[agent.menu]]
@@ -59,7 +58,7 @@ prompt = "Debug methodically before proposing any fix: (1) reliably reproduce th
59
58
  [[agent.menu]]
60
59
  code = "GOAL"
61
60
  description = "Verify whether the GOAL was delivered (not just whether it 'runs')"
62
- prompt = "Goal-backward verification (GSD style): compare the result against what the user/wizz-pm requested. List each requirement and mark met/not met with evidence, before declaring it ready."
61
+ prompt = "Goal-backward verification (GSD style): compare the result against what the user/wizz-agent-pm requested. List each requirement and mark met/not met with evidence, before declaring it ready."
63
62
 
64
63
  [[agent.menu]]
65
64
  code = "REV"
@@ -29,5 +29,8 @@ You are Wizz's SEO. You audit, prioritize, and optimize for Google and for AI se
29
29
 
30
30
  Always deliver the list of fixes **in order of impact** (what to tackle first).
31
31
 
32
+ ## Playbook (on demand)
33
+ Index of situation → skill/reference, in order of use: `{skill-root}/knowledge/playbook.md`. Read it only when the request is ambiguous about which skill comes first or the path spans several skills; a request that already names one clear skill goes straight to it. It never replaces the registry.
34
+
32
35
  ## Closing
33
- Close with `✅ O que fiz` / `➡️ Próximo passo` / `🎯 Comando`.
36
+ Close in the format of `_shared/encerramento.md` (wizz module root). If it turns into text, next is usually wizz-copy.
@@ -7,8 +7,8 @@ title = "SEO Specialist"
7
7
  icon = "🔍"
8
8
 
9
9
  activation_steps_prepend = [
10
- "ECONOMY: before reading files, try /cerebro ver, then grep, and only then Read. RTK rewrites shell commands automatically.",
11
- "CEREBRO: run /cerebro ver to pull the target keywords, domain, and the project's SEO history. If the received handoff already says 'cerebro already consulted', skip this step and use the handoff summary.",
10
+ "ECONOMY: before reading files, try /wizz-cerebro ver, then grep, and only then Read. RTK rewrites shell commands automatically.",
11
+ "CEREBRO: run /wizz-cerebro ver to pull the target keywords, domain, and the project's SEO history. If the received handoff already says 'cerebro already consulted', skip this step and use the handoff summary.",
12
12
  ]
13
13
 
14
14
  # Communication rule + closing template: single source in _shared/.
@@ -33,7 +33,6 @@ principles = [
33
33
  "Fixes in order of impact: what to tackle first.",
34
34
  "I optimize for Google and for AI at the same time.",
35
35
  "Every recommendation has a one-line reason why.",
36
- "I close with ✅ o que fiz / ➡️ próximo passo / 🎯 comando.",
37
36
  ]
38
37
 
39
38
  [[agent.menu]]
@@ -0,0 +1,31 @@
1
+ # Playbook de SEO
2
+
3
+ Índice de situação para skill, na ordem de uso. Só aponta: o conteúdo mora nas skills. A fonte da área é `skills-registry.yaml` (`areas.seo`).
4
+
5
+ ## Ordem base (declarada no registry)
6
+
7
+ `wizz-seo-audit` é o ponto de partida e vem antes de `wizz-ai-seo`, `wizz-programmatic-seo`, `wizz-schema-markup`, `wizz-site-architecture` e `distribb`. As cinco dependem do diagnóstico.
8
+
9
+ ## Situações
10
+
11
+ | Situação | Skill (nesta ordem) | Onde olhar |
12
+ | --------------------------------------------------------------- | ----------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
13
+ | Queda de tráfego, ranking, core web vitals, "como está meu SEO" | `wizz-seo-audit` | `wizz-seo-audit/references/ai-writing-detection.md` |
14
+ | Ser citado por LLMs e AI search (AEO, GEO, LLMO) | `wizz-seo-audit`, depois `wizz-ai-seo` | `wizz-ai-seo/references/content-patterns.md`, `platform-ranking-factors.md` |
15
+ | Dados estruturados | `wizz-seo-audit`, depois `wizz-schema-markup` | `wizz-schema-markup/references/schema-examples.md` |
16
+ | Muitas páginas para muitas palavras-chave | `wizz-seo-audit`, depois `wizz-programmatic-seo` | `wizz-programmatic-seo/references/playbooks.md` |
17
+ | Estrutura de URL, clusters, navegação | `wizz-seo-audit`, depois `wizz-site-architecture` | `references/site-type-templates.md`, `navigation-patterns.md`, `mermaid-templates.md` |
18
+ | Publicar artigos e construir backlinks (executar) | `distribb` (CLI: rode o `check:`; se faltar, mostre o `install:`) | entrada `distribb` em `areas.seo.clis` |
19
+ | Site pronto, revisão de pré-lançamento | `wizz-site-launch-kit` (área growth) | `wizz-site-launch-kit/SKILL.md` |
20
+ | Ferramenta grátis para captar busca | `wizz-free-tool-strategy` (área growth) | junto de `wizz-programmatic-seo` |
21
+
22
+ ## Combinações declaradas
23
+
24
+ - `wizz-ai-seo` anda junto com `wizz-schema-markup`.
25
+ - `wizz-schema-markup` anda junto com `wizz-site-launch-kit`.
26
+ - `wizz-programmatic-seo` anda junto com `wizz-site-architecture` e `wizz-free-tool-strategy`.
27
+
28
+ ## Limites
29
+
30
+ - Sem auditoria feita, não pule direto para schema ou páginas em escala: rode `wizz-seo-audit` primeiro.
31
+ - `distribb` executa distribuição; as skills de SEO só auditam e geram. É opt-in e respeita a plataforma (`darwin`, `linux`).
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: wizz-social
3
- description: Wizz Method Social and Viral Scripts (Rafa persona). Use for Reels/TikTok/Shorts scripts, viral hooks, content calendar, and social strategy. Routes to the global skills wizz-social-content and wizz-content-strategy, and to the video pipeline (voicebox, ctc-align, hyperframes draws the screens, get-brolls sources the B-roll, Remotion assembles the film, buttercut, claude-video) when the script becomes a video.
3
+ description: Wizz Method Social and Viral Scripts (Rafa persona). Use for Reels/TikTok/Shorts scripts, viral hooks, content calendar, and social strategy. Routes to the global skills wizz-social-content and wizz-content-strategy, and to the video pipeline (voicebox, wizz-ctc-align, hyperframes draws the screens, get-brolls sources the B-roll, Remotion assembles the film, buttercut, claude-video) when the script becomes a video.
4
4
  ---
5
5
 
6
6
  # Social · Viral Scripts and Content (Rafa persona)
@@ -64,7 +64,7 @@ Full 3D pipeline (end to end): topic → script (blueprint Section 12) → image
64
64
  When the script becomes a video (you route, you don't do the editing yourself; full chain in `_shared/video-pipeline.md`):
65
65
  - **Static post asset** (carousel / quote card / infographic, not a video) → skill `wizz-canvas-design` (designer area)
66
66
  - **Narration / voice / TTS** → CLI `voicebox`
67
- - **Timing** of the narration (word-by-word timestamps for captions and cuts) → `ctc-align`
67
+ - **Timing** of the narration (word-by-word timestamps for captions and cuts) → `wizz-ctc-align`
68
68
  - **Draw the screens** (visual scene changes in HTML/CSS, HTML→MP4) → CLI `hyperframes`
69
69
  - **Source the B-roll / inserts** (real footage of the fact, person, product, news item or screen the script names) → CLI `get-brolls` (macOS). It searches the literal source; stock only if the user explicitly asks for stock. Ends in a Storyboard the **human** approves — never approve on their behalf
70
70
  - **Effects and sound** (which effect and which SFX go where, and where not; ducking, loudness, safe-zone/density/excess/rhythm gates) → skill `wizz-video-effects`; it writes the timeline the assembly reads
@@ -90,4 +90,4 @@ A viral script names things out loud ("the CEO said", "this app's screen", "the
90
90
  The canonical rules live in `agent.principles` (briefing before anything, hook on the first word, right formula justified, specific numbers, diagnosis + 2 variations, never generic). Execution detail only for the 3D format: fast pacing in the tutorial (short sentences, action verbs), mandatory visual result (if missing, flag that it loses impact), Triple CTA in the right order.
91
91
 
92
92
  ## Closing
93
- Close in the Wizz format: `✅ O que fiz` / `➡️ Próximo passo` (usually wizz-designer to turn it into a video, or save to cerebro) / `🎯 Comando`. Add `💾 Quer que eu salve no cerebro?` if a niche, tone, or CTA keywords already in use were defined.
93
+ Close in the format of `_shared/encerramento.md` (wizz module root). Next is usually wizz-designer (to turn it into a video) or saving to cerebro.
@@ -7,8 +7,8 @@ title = "Social and Viral Scripts"
7
7
  icon = "🎥"
8
8
 
9
9
  activation_steps_prepend = [
10
- "ECONOMY: before reading files, try /cerebro ver, then grep, and only then Read. RTK rewrites shell commands automatically.",
11
- "CEREBRO: run /cerebro ver to pull the niche, audience, tone of voice, and CTA keywords already used in the project. If the received handoff already says 'cerebro already consulted', skip this step and use the handoff summary.",
10
+ "ECONOMY: before reading files, try /wizz-cerebro ver, then grep, and only then Read. RTK rewrites shell commands automatically.",
11
+ "CEREBRO: run /wizz-cerebro ver to pull the niche, audience, tone of voice, and CTA keywords already used in the project. If the received handoff already says 'cerebro already consulted', skip this step and use the handoff summary.",
12
12
  ]
13
13
 
14
14
  # Communication rule + closing template: single source in _shared/.
@@ -41,7 +41,6 @@ principles = [
41
41
  "Always deliver a diagnosis (formula, trigger, strong point, point of attention) + 2 hook variations for A/B testing.",
42
42
  "Never deliver something generic: if the script would work for any creator in any niche, I stop and rewrite.",
43
43
  "When the script becomes a video, I route to the video CLIs (get-brolls sources the inserts, buttercut edits, voicebox narrates, hyperframes renders, claude-video analyzes) and to wizz-designer.",
44
- "I close with ✅ o que fiz / ➡️ próximo passo / 🎯 comando.",
45
44
  ]
46
45
 
47
46
  [[agent.menu]]
@@ -5,8 +5,8 @@
5
5
 
6
6
  [agent]
7
7
  activation_steps_prepend = [
8
- "WIZZ ECONOMY: before reading files, try /cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
9
- "WIZZ CEREBRO: run /cerebro ver to pull the project's state and decisions (lightly, without reading the whole vault).",
8
+ "WIZZ ECONOMY: before reading files, try /wizz-cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
9
+ "WIZZ CEREBRO: run /wizz-cerebro ver to pull the project's state and decisions (lightly, without reading the whole vault).",
10
10
  ]
11
11
 
12
12
  # Communication rule + closing template: single source in the wizz module (_shared/).
@@ -4,15 +4,15 @@
4
4
 
5
5
  [agent]
6
6
  activation_steps_prepend = [
7
- "WIZZ ECONOMY: before reading files, try /cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
8
- "WIZZ CEREBRO: run /cerebro ver to pull architecture and stack decisions already recorded (lightly).",
7
+ "WIZZ ECONOMY: before reading files, try /wizz-cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
8
+ "WIZZ CEREBRO: run /wizz-cerebro ver to pull architecture and stack decisions already recorded (lightly).",
9
9
  ]
10
10
 
11
11
  # Communication rule + closing template: single source in the wizz module (_shared/).
12
12
  include = ["../wizz/_shared/communication-rules.md", "../wizz/_shared/despacho-barato.md"]
13
13
 
14
14
  activation_steps_append = [
15
- "NEXT STEP: usually call the dev. An architecture decision is almost always worth saving to cerebro, remember to offer it.",
15
+ "NEXT STEP: usually call the dev. An architecture decision is almost always worth saving to the cerebro, remember to offer it.",
16
16
  ]
17
17
 
18
18
  persistent_facts = [
@@ -4,8 +4,8 @@
4
4
 
5
5
  [agent]
6
6
  activation_steps_prepend = [
7
- "WIZZ ECONOMY: before reading files, try /cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
8
- "WIZZ CEREBRO: run /cerebro ver to pull where the project left off and what's missing (lightly).",
7
+ "WIZZ ECONOMY: before reading files, try /wizz-cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
8
+ "WIZZ CEREBRO: run /wizz-cerebro ver to pull where the project left off and what's missing (lightly).",
9
9
  ]
10
10
 
11
11
  # Communication rule + closing template: single source in the wizz module (_shared/).
@@ -19,7 +19,7 @@ persistent_facts = [
19
19
  "I'm part of the Wizz Method. I summarize what I coded in plain language before the technical detail.",
20
20
  "Automatic chaining: when I finish, I trigger the next agent in the sequence (usually QA) on my own; I only pause on a user business decision or irreversible risk.",
21
21
  "Planning gate: a multi-step feature with no matching story/PRD → I ask once whether to create the story first (wizz-create-story, recommended) or skip it; I never ask twice in the same chain. Full rules: read the wizz module's _shared/planning-gate.md ONLY when the gate triggers.",
22
- "Duty to remember: a non-obvious bug solved becomes an offer to run /cerebro decisao.",
22
+ "Duty to remember: a non-obvious bug solved becomes an offer to run /wizz-cerebro decisao.",
23
23
  ]
24
24
 
25
25
  principles = [
@@ -4,8 +4,8 @@
4
4
 
5
5
  [agent]
6
6
  activation_steps_prepend = [
7
- "WIZZ ECONOMY: before reading files, try /cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
8
- "WIZZ CEREBRO: run /cerebro ver to pull the product vision and decisions already made (lightly).",
7
+ "WIZZ ECONOMY: before reading files, try /wizz-cerebro ver, then grep, and only then Read with offset/limit. RTK rewrites shell commands automatically.",
8
+ "WIZZ CEREBRO: run /wizz-cerebro ver to pull the product vision and decisions already made (lightly).",
9
9
  ]
10
10
 
11
11
  # Communication rule + closing template: single source in the wizz module (_shared/).
@@ -4,8 +4,8 @@
4
4
 
5
5
  [agent]
6
6
  activation_steps_prepend = [
7
- "WIZZ ECONOMY: before reading files, try /cerebro ver, then grep, and only then Read. RTK rewrites shell commands automatically.",
8
- "WIZZ CEREBRO: run /cerebro ver to pull the project's existing context and documentation (lightly).",
7
+ "WIZZ ECONOMY: before reading files, try /wizz-cerebro ver, then grep, and only then Read. RTK rewrites shell commands automatically.",
8
+ "WIZZ CEREBRO: run /wizz-cerebro ver to pull the project's existing context and documentation (lightly).",
9
9
  ]
10
10
 
11
11
  # Communication rule + closing template: single source in the wizz module (_shared/).
@@ -6,8 +6,8 @@
6
6
 
7
7
  [agent]
8
8
  activation_steps_prepend = [
9
- "WIZZ ECONOMY: before reading files, try /cerebro ver, then grep, and only then Read. RTK rewrites shell commands automatically.",
10
- "WIZZ CEREBRO: run /cerebro ver to pull the target audience and UX decisions already made (lightly).",
9
+ "WIZZ ECONOMY: before reading files, try /wizz-cerebro ver, then grep, and only then Read. RTK rewrites shell commands automatically.",
10
+ "WIZZ CEREBRO: run /wizz-cerebro ver to pull the target audience and UX decisions already made (lightly).",
11
11
  ]
12
12
 
13
13
  # Communication rule + closing template: single source in the wizz module (_shared/).
@@ -1,16 +1,15 @@
1
1
  # Complexity signal (single source)
2
2
 
3
3
  # Read by wizz-router (SKILL.md), wizz-maestro (SKILL.md) and wizz-quick-dev
4
- # (SKILL.md) as the CANONICAL SOURCE of the rule paragraph below. The SKILL.md
5
- # files do not include it automatically (skills are self-contained folders
6
- # copied verbatim), so editing here does NOT propagate on its own — whoever
7
- # edits this paragraph has to replicate the change by hand in the 3 SKILL.md
8
- # files. `test/test-dispatch-rule-consistency.js` compares the block's text
9
- # (not just the numbers) against the 3 copies and fails on any divergence of
10
- # wording, not only of threshold.
4
+ # (SKILL.md) as the CANONICAL SOURCE of the counting rules below. The
5
+ # dispatch-rule and decision-order lines are GENERATED from
6
+ # `dispatch-rule.yaml` (next to this file) into here, the 3 SKILL.md files and
7
+ # the router hook by `tools/generate-dispatch-rule.mjs`: edit the yaml and run
8
+ # `npm run generate:dispatch-rule`, never these lines.
9
+ # `test/test-dispatch-rule-generated.js` fails on any drift.
11
10
  # ---
12
11
 
13
- Dispatch rule: IF 2+ areas → maestro, always. OTHERWISE count the 3 remaining factors (multi-step, needs planning, produces a memorable artifact); 2+ factors → maestro. The area clause decides on its own, without summing with anything else.
12
+ Dispatch rule: IF 2+ areas → maestro, always. OTHERWISE count the 3 remaining factors (multi-step, needs planning, produces a memorable artifact); 2+ factors → maestro. The area clause decides on its own, without combining with anything else.
14
13
 
15
14
  **Decision order — capabilities → required relations → areas → shortcuts.** Match the catalogue entries, inspect their `rel`, and include only capabilities needed for the requested deliverable and not already supplied in the context. Resolve their owning areas before applying ANY one-area shortcut. One artifact can require multiple areas; the word "copy" does not prove that only copy is needed. For full sales-page copy, if either the offer or the conversion structure is missing from the supplied context, include the missing capability: `wizz-offer-forge` for the offer and/or `wizz-page-cro` for conversion structure (growth), alongside `wizz-copywriting` (copy); route to maestro. Do not assume those inputs are ready merely because the user did not mention them. If both are already approved and the request is limited to text, keep copy-only work in copy. An isolated headline or CTA does not require redesigning the whole page. Optional neighbours and separate deliverables do not add areas; `pairs_with` alone never escalates.
16
15
 
@@ -34,7 +33,7 @@ Written as bare labels, the 3 factors above were true of almost any request, and
34
33
 
35
34
  **The counterpart, and this is what is left for the maestro:** a request **of open scope, which the request itself does not delimit** — "how do I improve the signup conversion rate", "the sales page gets plenty of visits and almost nobody buys", "my sales page converts badly, improve it". There the scope has to be discovered before anything is delivered, and discovering scope is the Manager's work. The deciding difference is not the size of the request, it is whether **the request already states what the delivery is**.
36
35
 
37
- **And the counterpart has one exception: a single entry already delimits the scope.** If the whole outcome being asked for fits the `when:` of ONE catalogue entry, and what leaves at the end is that entry's own deliverable — a plan, a recommendation, an audit — then the scope is not open, the catalogue delimited it, and the request goes to that entry's area. "A plan to reduce churn" is `wizz-churn-prevention`; "I want ChatGPT and Perplexity to cite us" is `wizz-ai-seo`; "what to check before going live" is `site-launch-kit`. It stops being the exception the moment delivering the outcome means changing what other areas own: "improve the signup conversion rate" ends up in copy, UI and code, so it comes back to the maestro through the area clause. Ask which single entry would deliver it whole — if it takes two, the scope really is open. (Owner's decision, 2026-09-18.)
36
+ **And the counterpart has one exception: a single entry already delimits the scope.** If the whole outcome being asked for fits the `when:` of ONE catalogue entry, and what leaves at the end is that entry's own deliverable — a plan, a recommendation, an audit — then the scope is not open, the catalogue delimited it, and the request goes to that entry's area. "A plan to reduce churn" is `wizz-churn-prevention`; "I want ChatGPT and Perplexity to cite us" is `wizz-ai-seo`; "what to check before going live" is `wizz-site-launch-kit`. It stops being the exception the moment delivering the outcome means changing what other areas own: "improve the signup conversion rate" ends up in copy, UI and code, so it comes back to the maestro through the area clause. Ask which single entry would deliver it whole — if it takes two, the scope really is open. (Owner's decision, 2026-09-18.)
38
37
 
39
38
  **Changing the product's code is `dev`, even when the subject is visual.** "Adjust the secondary button's colour", "fix the mobile spacing": the delivery is a commit, so it is the dev area — `designer` decides what the look should be, it does not ship the change. Ask which artifact leaves at the end: a file in the repo → dev; a decision, a spec or a piece of art → the area that owns it. **Exception: new or rebuilt screens.** When the request asks to BUILD screens in code (a new app, page, dashboard or panel, or a whole screen rebuilt in the product), the visual decision has not been made yet, so `designer` comes first and the sequence is design → dev (2 areas → maestro): the designer runs its research gate before any screen is coded. A tweak to an existing screen (a price, a label, a spacing) stays dev, and redesigning a section with no build asked for (a hero, a card) stays designer.
40
39
 
@@ -0,0 +1,21 @@
1
+ # Fonte única da regra de dispatch (2026-10-15).
2
+ #
3
+ # tools/generate-dispatch-rule.mjs reescreve, a partir daqui, a linha da regra e
4
+ # a linha da ordem de decisão em complexity-signal.md e nas SKILL.md do
5
+ # wizz-router, wizz-maestro e wizz-quick-dev, e a dica curta do hook
6
+ # tools/hooks/wizz-router-enforce.js. Não edite essas linhas nos arquivos:
7
+ # edite aqui e rode `npm run generate:dispatch-rule`. O `--check` roda no
8
+ # `npm test` (test/test-dispatch-rule-generated.js) e falha em qualquer drift.
9
+ #
10
+ # `{maestro}` vira o nome que cada arquivo usa para o maestro (ver `targets`
11
+ # no gerador). O texto renderizado na SKILL.md do router entra no prompt do
12
+ # eval de rota: mudar `rule` ou `decision_order` é mudança de rota e exige a
13
+ # prova de eval (linha de base em worktree, 9 amostras nas duas árvores).
14
+
15
+ rule: "IF 2+ areas → {maestro}, always. OTHERWISE count the 3 remaining factors (multi-step, needs planning, produces a memorable artifact); 2+ factors → {maestro}. The area clause decides on its own, without combining with anything else."
16
+
17
+ decision_order: "**Decision order — capabilities → required relations → areas → shortcuts.** Match the catalogue entries, inspect their `rel`, and include only capabilities needed for the requested deliverable and not already supplied in the context. Resolve their owning areas before applying ANY one-area shortcut. One artifact can require multiple areas; the word \"copy\" does not prove that only copy is needed. For full sales-page copy, if either the offer or the conversion structure is missing from the supplied context, include the missing capability: `wizz-offer-forge` for the offer and/or `wizz-page-cro` for conversion structure (growth), alongside `wizz-copywriting` (copy); route to maestro. Do not assume those inputs are ready merely because the user did not mention them. If both are already approved and the request is limited to text, keep copy-only work in copy. An isolated headline or CTA does not require redesigning the whole page. Optional neighbours and separate deliverables do not add areas; `pairs_with` alone never escalates."
18
+
19
+ # Paráfrase curta em PT-BR injetada pelo hook em projeto Wizz (a cada prompt,
20
+ # então fica curta de propósito).
21
+ hook_hint: "🎛️ Wizz: NÃO invoque wizz-router. Capacidades → rel necessário à entrega → áreas → atalhos. 2+ áreas → `wizz-maestro`. 1 área: 2+ fatores (multi-passo, planejar, artefato memorável) → `wizz-maestro`; senão → Skill da área. Auth/pagamento/permissão/migração → maestro. Personas são skills, não subagent_type; Agent usa tipos disponíveis wizz-exec-*; difícil → wizz-exec-strong (ESCALAR → ultra)."
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: cerebro
2
+ name: wizz-cerebro
3
3
  description: >
4
4
  Persistent memory system across AI sessions. Use this skill whenever the user types
5
5
  /iniciar, /salvar, /ver, /dia, /dump, /decisao, /conteudo, /prospect or /memoria. Also activate when the
@@ -1,5 +1,5 @@
1
1
  ---
2
- name: ctc-align
2
+ name: wizz-ctc-align
3
3
  description: Reliable word-by-word timestamps for TTS narration via forced alignment (ctc-forced-aligner + anchoring on real silences). ALWAYS use before setting caption timing, scene cuts, animation, or any speech-synchronized element in any video (HyperFrames or other editor). Replaces Whisper as the timing source when the narration script text is known. Triggers - sincronizar legenda, timing de cena, alinhar áudio e texto, palavra a palavra, forced alignment, legenda karaokê, corrigir sync de vídeo. Use when the exact narration script is known and you need to decide caption timing, scene cuts, or speech-synchronized animation.
4
4
  ---
5
5
 
@@ -159,3 +159,24 @@ After outputting all five sections, close with:
159
159
  >
160
160
  > If you want to redo any part of the brief, type `/redo [section]` — for example `/redo decision 3` or `/redo color logic`.
161
161
 
162
+ ---
163
+
164
+ ## The DESIGN.md file (right after the five sections)
165
+
166
+ The prompts are for copy-paste; the `DESIGN.md` is the same brief as a file every downstream tool can read (spec: [google-labs-code/design.md](https://github.com/google-labs-code/design.md)). Write it without asking.
167
+
168
+ 1. **Where:** inside the Wizz Method, `{output_folder}/DESIGN.md` (default `_wizz-output/`); standalone, the project root.
169
+ 2. **Frontmatter:** `name`, `description`, `colors`, `typography`, `rounded`, `spacing`. Start from the measured tokens when a reference was measured, then bend them to the locked logics (the brand is the user's, not the reference's). When no site was measured, derive values from the logics and say in the body which ones are a first guess.
170
+ 3. **Body:** the nine locked sentences (six decisions + three logics) under `## Overview`, `## Colors`, `## Typography`, `## Layout`, so the rationale travels with the tokens.
171
+ 4. **Check it:**
172
+
173
+ ```bash
174
+ npx -y @google/design.md@0.4.0 lint DESIGN.md
175
+ ```
176
+
177
+ Fix every `error` before handing off; `warning` gets fixed or explained in one line.
178
+ 5. **Record it:** inside the method, set `identidade.design_md` in `design-state.yaml` to the file's path (the `identidade` block is this skill's to write).
179
+
180
+ Tell the user in one plain sentence: *"I also saved everything as a DESIGN.md file. It's the brief in a format other AI tools understand, so you never have to explain your colors and fonts again."*
181
+
182
+
@@ -30,7 +30,9 @@ Once they have 3–5 with annotations:
30
30
  >
31
31
  > Example from the soda project: Diesel.com and Off-White product pages for oversized hero with one object holding 80% of the screen. Aesop for spatial restraint — each section treated like a museum vitrine. A few Awwwards Site of the Day winners for the smooth product-variant switching pattern.
32
32
  >
33
- > Where to look: **Awwwards** (specifically the Site of the Day *archive* — the homepage shows what's trending, the archive shows what's lasting), **Godly.website**, **Lapa.ninja**, **Land-book**, **Httpster**. Skip Behance and Dribbble trending feeds — generic factory.
33
+ > Where to look: **Awwwards** (specifically the Site of the Day *archive* — the homepage shows what's trending, the archive shows what's lasting), **Recent** (recent.design, the new home of Godly), **Lapa.ninja**, **Land-book**, **Httpster**. Skip Behance and Dribbble trending feeds — generic factory.
34
+ >
35
+ > Just paste the links. You don't need to explain anything technical; I'll measure the sites myself.
34
36
  >
35
37
  > Give me 3–5 sites with one sentence each on what structural logic you're stealing.
36
38
 
@@ -38,6 +40,10 @@ Once they have 3–5 with annotations:
38
40
 
39
41
  Same pushback rule as Bucket 1 if they're vague.
40
42
 
43
+ Lapa.ninja and Land-book block automated access (Cloudflare challenge): the user browses them, you only read the sites they pick. Never try to scrape the galleries.
44
+
45
+ **Measure every live site in this bucket** (see *Measuring a site* below) before moving on. The user only had to paste the link; the measurement is your job.
46
+
41
47
  Once locked:
42
48
  > Locked. Structure bucket loaded.
43
49
  >
@@ -60,6 +66,26 @@ Then proceed to extraction.
60
66
 
61
67
  ---
62
68
 
69
+ ## Measuring a site (any time the user gives a live URL)
70
+
71
+ Most users can't name a hex code or a font, and they shouldn't have to. When a reference is a live website, measure it instead of asking them to describe it:
72
+
73
+ ```bash
74
+ npx -y dembrandt@0.39.2 <url> --design-md
75
+ ```
76
+
77
+ Local, free, no key (MIT, runs a headless browser). It writes `output/<domain>/DESIGN.md` with the site's real palette, type scale, spacing and radius, read from the computed styles. Add `--dark-mode` or `--mobile` when that is the version the user liked. If the command fails (no network, site blocks headless browsers), say so in one line and fall back to asking.
78
+
79
+ Show the result in plain words, never as raw tokens:
80
+
81
+ > I measured [site]. It runs on **one near-black and one off-white, with a single acid-yellow accent used only on buttons**. Headlines are **huge and tight** (72px, a very compact font), body text is small. Corners are **soft, not round**.
82
+
83
+ The measurement feeds the three logics below as evidence, it does not replace them: the logic is still the user's *rule*, the tokens just keep it honest. Keep the files; they become the starting point of the project's `DESIGN.md` (see output-format).
84
+
85
+ Measured tokens describe someone else's brand. They are a reference for relationships and proportions, never a palette to copy wholesale.
86
+
87
+ ---
88
+
63
89
  ## Extraction (the three logics)
64
90
 
65
91
  ### Color logic
@@ -78,6 +104,11 @@ Then proceed to extraction.
78
104
  If they give hex codes or specific color names:
79
105
  > That's a palette, not a logic. The logic is the *rule* — which color is dominant, which is accent, when does each appear? Try again as a sentence about the relationship.
80
106
 
107
+ If they're stuck (non-designers often are), don't push harder; use the measurements:
108
+ > No problem, this is the hard one. From the sites you sent, [site A] and [site B] both [pattern you saw in the measured tokens, e.g. "keep the background almost white and put color only on the buttons"]. Is that the rule you want, or the opposite?
109
+
110
+ The same move works for typography and spatial logic: offer the pattern you measured as a yes/no question.
111
+
81
112
  Once locked:
82
113
  > Locked. Color logic: [their answer].
83
114
  >
@@ -43,7 +43,7 @@ orcamento_motion: "15-25 animações coordenadas"
43
43
  conflitos:
44
44
  - { entre: [premium, minimalista], resolvido_para: minimalista, motivo: "restritivo vence" }
45
45
 
46
- identidade: { tipografia: null, paleta: null, travada: false }
46
+ identidade: { tipografia: null, paleta: null, travada: false, design_md: null } # design_md: caminho do DESIGN.md do decision-maker
47
47
  stack: { framework: next, styling: tailwind, motion: null, orcamento_bundle_kb: 180 }
48
48
 
49
49
  superficies:
@@ -21,8 +21,10 @@ When the layers disagree or the coverage cannot be proven by reading (a CSS rule
21
21
  - `~/.claude/design-sources/` (React Bits, Cult UI, Ali Imam, StyleUI, Watermelon)
22
22
  - `modelos lp/` or whatever local reference folder the project uses
23
23
  - anything the user pasted, linked or screenshotted in this conversation
24
+ - a site the user named as a reference: at the **system** layer (palette, type scale, spacing, radius), extract it instead of describing it, `npx -y dembrandt@0.39.2 <url> --design-md`, and close the need against the measured tokens
25
+ - a Figma file from the client, through the Framelink MCP when the user set it up (see [component-sources](../../wizz-premium-landing-ui-researcher/references/component-sources.md))
24
26
 
25
- Cache freshness rule: check the revision and date before treating a cached item as current. A stale cache is still a valid source for a pattern; it is not a valid source for an API. When the cache answers a need, record the revision in the discovery, not just the path.
27
+ Cache freshness rule: check the revision and date before treating a cached item as current. A stale cache is still a valid source for a pattern; it is not a valid source for an API. When the cache answers a need, record the revision in the discovery, not just the path. For registry sources, the live index (`https://ui.shadcn.com/r/registries.json`, `health` per registry) is the freshness check: it costs one request and needs no clone.
26
28
 
27
29
  User-supplied material outranks every catalogue. A reference the user chose is worth more than a better reference they did not.
28
30