wizz-method 1.3.2 → 1.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +4 -4
- package/README.md +1 -1
- package/evals/routing/dataset.json +290 -0
- package/evals/routing/run-routing-eval.mjs +89 -0
- package/package.json +11 -3
- package/skills-registry.yaml +72 -25
- package/src/modules/wizz/agents/wizz-ads/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-copy/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-designer/SKILL.md +6 -8
- package/src/modules/wizz/agents/wizz-growth/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-maestro/SKILL.md +6 -5
- package/src/modules/wizz/agents/wizz-memoria/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-qa/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-seo/SKILL.md +1 -1
- package/src/modules/wizz/agents/wizz-social/SKILL.md +1 -1
- package/src/skills-lib/ai-product-design/SKILL.md +85 -0
- package/src/skills-lib/ai-product-design/references/LICENSE +21 -0
- package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/bias-detection-design/SKILL.md +37 -0
- package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/consent-and-agency/SKILL.md +37 -0
- package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/escalation-design/SKILL.md +40 -0
- package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/guardrail-design/SKILL.md +36 -0
- package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/harm-anticipation/SKILL.md +108 -0
- package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/transparency-patterns/SKILL.md +36 -0
- package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/trust-calibration/SKILL.md +102 -0
- package/src/skills-lib/ai-product-design/references/ai-alignment-reasoning/value-specification/SKILL.md +39 -0
- package/src/skills-lib/ai-product-design/references/design-agent-orchestration/agent-role-design/SKILL.md +37 -0
- package/src/skills-lib/ai-product-design/references/design-agent-orchestration/failure-recovery/SKILL.md +37 -0
- package/src/skills-lib/ai-product-design/references/design-agent-orchestration/handoff-protocols/SKILL.md +45 -0
- package/src/skills-lib/ai-product-design/references/design-agent-orchestration/human-in-the-loop/SKILL.md +39 -0
- package/src/skills-lib/ai-product-design/references/design-agent-orchestration/observability-design/SKILL.md +48 -0
- package/src/skills-lib/ai-product-design/references/design-agent-orchestration/state-management/SKILL.md +95 -0
- package/src/skills-lib/ai-product-design/references/design-agent-orchestration/task-decomposition/SKILL.md +36 -0
- package/src/skills-lib/ai-product-design/references/evaluation/comparative-evaluation/SKILL.md +39 -0
- package/src/skills-lib/ai-product-design/references/evaluation/failure-taxonomy/SKILL.md +47 -0
- package/src/skills-lib/ai-product-design/references/evaluation/heuristic-evaluation-ai/SKILL.md +46 -0
- package/src/skills-lib/ai-product-design/references/evaluation/longitudinal-measurement/SKILL.md +38 -0
- package/src/skills-lib/ai-product-design/references/evaluation/output-quality-rubrics/SKILL.md +41 -0
- package/src/skills-lib/ai-product-design/references/evaluation/task-success-metrics/SKILL.md +35 -0
- package/src/skills-lib/ai-product-design/references/evaluation/user-satisfaction-signals/SKILL.md +50 -0
- package/src/skills-lib/ai-product-design/references/model-interaction-design/context-window-design/SKILL.md +28 -0
- package/src/skills-lib/ai-product-design/references/model-interaction-design/conversation-patterns/SKILL.md +37 -0
- package/src/skills-lib/ai-product-design/references/model-interaction-design/feedback-loops/SKILL.md +35 -0
- package/src/skills-lib/ai-product-design/references/model-interaction-design/frustration-detection/SKILL.md +91 -0
- package/src/skills-lib/ai-product-design/references/model-interaction-design/generative-ui/SKILL.md +34 -0
- package/src/skills-lib/ai-product-design/references/model-interaction-design/mixed-initiative-flow/SKILL.md +39 -0
- package/src/skills-lib/ai-product-design/references/model-interaction-design/multimodal-orchestration/SKILL.md +94 -0
- package/src/skills-lib/ai-product-design/references/model-interaction-design/progressive-disclosure/SKILL.md +33 -0
- package/src/skills-lib/ai-product-design/references/prompt-architecture/chain-of-thought-design/SKILL.md +45 -0
- package/src/skills-lib/ai-product-design/references/prompt-architecture/constraint-specification/SKILL.md +50 -0
- package/src/skills-lib/ai-product-design/references/prompt-architecture/context-engineering/SKILL.md +45 -0
- package/src/skills-lib/ai-product-design/references/prompt-architecture/few-shot-patterns/SKILL.md +47 -0
- package/src/skills-lib/ai-product-design/references/prompt-architecture/prompt-versioning/SKILL.md +42 -0
- package/src/skills-lib/ai-product-design/references/prompt-architecture/system-prompt-structure/SKILL.md +50 -0
- package/src/skills-lib/ai-product-design/references/prompt-architecture/template-design/SKILL.md +42 -0
- package/src/skills-lib/ai-product-design/references/system-behavior-shaping/behavioral-consistency/SKILL.md +36 -0
- package/src/skills-lib/ai-product-design/references/system-behavior-shaping/cultural-adaptation/SKILL.md +38 -0
- package/src/skills-lib/ai-product-design/references/system-behavior-shaping/domain-voice/SKILL.md +51 -0
- package/src/skills-lib/ai-product-design/references/system-behavior-shaping/emotional-design/SKILL.md +51 -0
- package/src/skills-lib/ai-product-design/references/system-behavior-shaping/error-personality/SKILL.md +45 -0
- package/src/skills-lib/ai-product-design/references/system-behavior-shaping/persona-architecture/SKILL.md +38 -0
- package/src/skills-lib/ai-product-design/references/system-behavior-shaping/tone-calibration/SKILL.md +39 -0
- package/src/skills-lib/algorithmic-art/LICENSE.txt +202 -0
- package/src/skills-lib/algorithmic-art/SKILL.md +405 -0
- package/src/skills-lib/algorithmic-art/templates/generator_template.js +223 -0
- package/src/skills-lib/algorithmic-art/templates/viewer.html +599 -0
- package/src/skills-lib/animate/README.md +41 -0
- package/src/skills-lib/animate/SKILL.md +179 -0
- package/src/skills-lib/animate/examples/animate-height.tsx +75 -0
- package/src/skills-lib/animate/examples/app-store-card.tsx +164 -0
- package/src/skills-lib/animate/examples/card-hover.tsx +79 -0
- package/src/skills-lib/animate/examples/feedback-popover.tsx +119 -0
- package/src/skills-lib/animate/examples/multi-step-flow.tsx +128 -0
- package/src/skills-lib/animate/examples/shared-layout.tsx +64 -0
- package/src/skills-lib/animate/examples/text-reveal.tsx +70 -0
- package/src/skills-lib/animate/examples/toast-stacking.tsx +95 -0
- package/src/skills-lib/animate/references/css-animations.md +232 -0
- package/src/skills-lib/animate/references/easing-and-timing.md +105 -0
- package/src/skills-lib/animate/references/framer-motion.md +356 -0
- package/src/skills-lib/animate/references/performance-accessibility.md +185 -0
- package/src/skills-lib/auth-and-secrets/SKILL.md +38 -10
- package/src/skills-lib/canvas-design/LICENSE.txt +202 -0
- package/src/skills-lib/canvas-design/SKILL.md +130 -0
- package/src/skills-lib/canvas-design/canvas-fonts/ArsenalSC-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/ArsenalSC-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BigShoulders-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Boldonse-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Boldonse-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/BricolageGrotesque-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/CrimsonPro-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/DMMono-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/DMMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/EricaOne-OFL.txt +94 -0
- package/src/skills-lib/canvas-design/canvas-fonts/EricaOne-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/GeistMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Gloock-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Gloock-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-BoldItalic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/IBMPlexSerif-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-BoldItalic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSans-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSerif-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/InstrumentSerif-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Italiana-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Italiana-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/JetBrainsMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Jura-Light.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Jura-Medium.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Jura-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/LibreBaskerville-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/LibreBaskerville-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Lora-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Lora-BoldItalic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Lora-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Lora-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Lora-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/NationalPark-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/NothingYouCouldDo-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/NothingYouCouldDo-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Outfit-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Outfit-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Outfit-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/PixelifySans-Medium.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/PixelifySans-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/PoiretOne-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/PoiretOne-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/RedHatMono-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Silkscreen-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Silkscreen-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/SmoochSans-Medium.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/SmoochSans-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Tektur-Medium.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Tektur-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/Tektur-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Bold.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-BoldItalic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Italic.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/WorkSans-Regular.ttf +0 -0
- package/src/skills-lib/canvas-design/canvas-fonts/YoungSerif-OFL.txt +93 -0
- package/src/skills-lib/canvas-design/canvas-fonts/YoungSerif-Regular.ttf +0 -0
- package/src/skills-lib/design-motion-principles/SKILL.md +122 -0
- package/src/skills-lib/design-motion-principles/references/accessibility.md +52 -0
- package/src/skills-lib/design-motion-principles/references/anti-checklist.md +274 -0
- package/src/skills-lib/design-motion-principles/references/audit-checklist.md +137 -0
- package/src/skills-lib/design-motion-principles/references/creation-gotchas.md +36 -0
- package/src/skills-lib/design-motion-principles/references/demo-shell.html +275 -0
- package/src/skills-lib/design-motion-principles/references/emil-kowalski.md +121 -0
- package/src/skills-lib/design-motion-principles/references/jakub-krehel.md +80 -0
- package/src/skills-lib/design-motion-principles/references/jhey-tompkins.md +122 -0
- package/src/skills-lib/design-motion-principles/references/motion-cookbook.md +529 -0
- package/src/skills-lib/design-motion-principles/references/output-format.md +346 -0
- package/src/skills-lib/design-motion-principles/references/performance.md +82 -0
- package/src/skills-lib/design-motion-principles/references/report-template.html +1006 -0
- package/src/skills-lib/design-motion-principles/workflows/audit.md +203 -0
- package/src/skills-lib/design-motion-principles/workflows/create.md +87 -0
- package/src/skills-lib/desktop-security/SKILL.md +35 -4
- package/src/skills-lib/premium-landing-ui-researcher/SKILL.md +52 -2083
- package/src/skills-lib/premium-landing-ui-researcher/references/audit-protocol.md +124 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/component-sources.md +336 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/core-goal.md +62 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/dashboard-and-portfolio-modes.md +92 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/handoffs.md +55 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/landing-page-strategy.md +227 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/mandatory-process.md +36 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/output-format-and-quality.md +129 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/prompt-templates.md +206 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/site-levels.md +515 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/source-first-protocol.md +144 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/source-links.md +39 -0
- package/src/skills-lib/premium-landing-ui-researcher/references/stack-and-visual-direction.md +118 -0
- package/src/skills-lib/taste-skill/SKILL.md +33 -1177
- package/src/skills-lib/taste-skill/references/anti-slop-tells.md +110 -0
- package/src/skills-lib/taste-skill/references/architecture-conventions.md +39 -0
- package/src/skills-lib/taste-skill/references/block-library.md +61 -0
- package/src/skills-lib/taste-skill/references/brief-and-dials.md +89 -0
- package/src/skills-lib/taste-skill/references/dark-mode.md +23 -0
- package/src/skills-lib/taste-skill/references/design-directives.md +191 -0
- package/src/skills-lib/taste-skill/references/design-systems.md +267 -0
- package/src/skills-lib/taste-skill/references/motion-patterns.md +167 -0
- package/src/skills-lib/taste-skill/references/pattern-vocabulary.md +78 -0
- package/src/skills-lib/taste-skill/references/performance-a11y.md +33 -0
- package/src/skills-lib/taste-skill/references/preflight-checklist.md +73 -0
- package/src/skills-lib/taste-skill/references/redesign-protocol.md +52 -0
- package/src/skills-lib/web-security/SKILL.md +74 -6
- package/src/skills-lib/wizz-router/SKILL.md +21 -243
- package/src/skills-lib/wizz-router/references/auditoria-360.md +21 -0
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +95 -0
- package/src/squads/advisory-board/agents/ray-dalio.md +0 -20
- package/tools/hooks/README.md +17 -0
- package/tools/hooks/security-defensive-context.js +70 -0
- package/tools/hooks/session-rules.js +38 -0
- package/tools/hooks/wizz-router-enforce.js +188 -0
- package/tools/installer/modules/skills-lib.js +70 -1
- package/tools/sync-global.mjs +84 -0
- package/.claude/settings.local.json +0 -8
- package/src/core-skills/wizz-party-mode/scripts/__pycache__/resolve_party.cpython-314.pyc +0 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/core.cpython-314.pyc +0 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/design_system.cpython-314.pyc +0 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/__pycache__/search.cpython-314.pyc +0 -0
- package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/0964cef300f753b5cee0cc49777ca97035c85d45c212099405d9ee4da36e523f.json +0 -1
- package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/21a40f6810c3a6f17acc3580f106171daf78c7b41bbd066bc80448a821ea0adf.json +0 -1
- package/src/skills-lib/ui-ux-pro-max/scripts/graphify-out/cache/69ea15a020ac81b8459e37ef63654398a50c1035fc01c43d8069df217389f7f3.json +0 -1
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "wizz-method",
|
|
3
3
|
"owner": {
|
|
4
|
-
"name": "
|
|
4
|
+
"name": "Wizz! comms."
|
|
5
5
|
},
|
|
6
|
-
"description": "
|
|
6
|
+
"description": "Wizz Method — a full-lifecycle AI development framework with agents and workflows for analysis, planning, architecture, and implementation. Independent fork of BMAD Method.",
|
|
7
7
|
"license": "MIT",
|
|
8
|
-
"homepage": "https://
|
|
9
|
-
"repository": "https://github.com/
|
|
8
|
+
"homepage": "https://method.wizzcomms.com",
|
|
9
|
+
"repository": "https://github.com/wizzcomms/wizz-method",
|
|
10
10
|
"keywords": ["wizz", "agile", "ai", "orchestrator", "development", "methodology", "agents"],
|
|
11
11
|
"plugins": [
|
|
12
12
|
{
|
package/README.md
CHANGED
|
@@ -59,7 +59,7 @@ Sem TTY, o idioma padrão é "Português (BR)". Use `--lang` ou a variável `WIZ
|
|
|
59
59
|
|
|
60
60
|
## Origem
|
|
61
61
|
|
|
62
|
-
O Wizz Method é um fork independente do [
|
|
62
|
+
O Wizz Method é um fork independente do [BMAD Method](https://github.com/bmad-code-org/BMAD-METHOD), mantido pela Wizz! comms. O motor continua o BMAD: workflows, agentes de dev e produto e a arquitetura de skills. A camada Wizz adiciona marca, idioma, roteamento e os 7 agentes de agência por cima desse motor. Crédito e agradecimento ao projeto original.
|
|
63
63
|
|
|
64
64
|
## Documentação
|
|
65
65
|
|
|
@@ -0,0 +1,290 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"id": "t01",
|
|
4
|
+
"prompt": "oi",
|
|
5
|
+
"expected": "trivial",
|
|
6
|
+
"note": "saudação simples, sem ação"
|
|
7
|
+
},
|
|
8
|
+
{
|
|
9
|
+
"id": "t02",
|
|
10
|
+
"prompt": "obrigado",
|
|
11
|
+
"expected": "trivial",
|
|
12
|
+
"note": "agradecimento puro"
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
"id": "t03",
|
|
16
|
+
"prompt": "sim",
|
|
17
|
+
"expected": "trivial",
|
|
18
|
+
"note": "resposta curta (sim/não/ok)"
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
"id": "t04",
|
|
22
|
+
"prompt": "não",
|
|
23
|
+
"expected": "trivial",
|
|
24
|
+
"note": "resposta curta (sim/não/ok)"
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
"id": "t05",
|
|
28
|
+
"prompt": "ok",
|
|
29
|
+
"expected": "trivial",
|
|
30
|
+
"note": "resposta curta (sim/não/ok)"
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
"id": "t06",
|
|
34
|
+
"prompt": "o que foi feito?",
|
|
35
|
+
"expected": "trivial",
|
|
36
|
+
"note": "pergunta de status, sem ação técnica"
|
|
37
|
+
},
|
|
38
|
+
{
|
|
39
|
+
"id": "t07",
|
|
40
|
+
"prompt": "trocar 'envie' por 'enviar' na linha 42",
|
|
41
|
+
"expected": "trivial",
|
|
42
|
+
"note": "typo/rename de 1 linha"
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
"id": "t08",
|
|
46
|
+
"prompt": "rebatiza Home para Landing",
|
|
47
|
+
"expected": "trivial",
|
|
48
|
+
"note": "rename simples, 1 arquivo"
|
|
49
|
+
},
|
|
50
|
+
{
|
|
51
|
+
"id": "t09",
|
|
52
|
+
"prompt": "/help",
|
|
53
|
+
"expected": "trivial",
|
|
54
|
+
"note": "slash command"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
"id": "t10",
|
|
58
|
+
"prompt": "/config",
|
|
59
|
+
"expected": "trivial",
|
|
60
|
+
"note": "slash command"
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
"id": "t11",
|
|
64
|
+
"prompt": "como tá o deploy?",
|
|
65
|
+
"expected": "trivial",
|
|
66
|
+
"note": "pergunta conversacional, sem ação"
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
"id": "t12",
|
|
70
|
+
"prompt": "tudo bem?",
|
|
71
|
+
"expected": "trivial",
|
|
72
|
+
"note": "conversação pura"
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
"id": "t13",
|
|
76
|
+
"prompt": "link?",
|
|
77
|
+
"expected": "trivial",
|
|
78
|
+
"note": "pergunta muito curta, sem verbo de ação"
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
"id": "t14",
|
|
82
|
+
"prompt": "esqueci a senha",
|
|
83
|
+
"expected": "trivial",
|
|
84
|
+
"note": "frase curta sem ação técnica (info only)"
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
"id": "a01",
|
|
88
|
+
"prompt": "redesenha o hero da landing com a nova brand",
|
|
89
|
+
"expected": "agent:designer",
|
|
90
|
+
"note": "UI update, 1 area, pontual"
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
"id": "a02",
|
|
94
|
+
"prompt": "cria um card component pra portfolio",
|
|
95
|
+
"expected": "agent:designer",
|
|
96
|
+
"note": "componente isolado, designer"
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
"id": "a03",
|
|
100
|
+
"prompt": "anima o scroll de entrada da página",
|
|
101
|
+
"expected": "agent:designer",
|
|
102
|
+
"note": "motion/animation, 1 area"
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
"id": "a04",
|
|
106
|
+
"prompt": "escreve uma headline pra vender este plano",
|
|
107
|
+
"expected": "agent:copy",
|
|
108
|
+
"note": "copy de venda, 1 area, focado"
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
"id": "a05",
|
|
112
|
+
"prompt": "melhora o email de onboarding",
|
|
113
|
+
"expected": "agent:copy",
|
|
114
|
+
"note": "email copy, 1 area"
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
"id": "a06",
|
|
118
|
+
"prompt": "cria 3 variações de CTA pra testar",
|
|
119
|
+
"expected": "agent:copy",
|
|
120
|
+
"note": "copy de botão, A/B ready, 1 area"
|
|
121
|
+
},
|
|
122
|
+
{
|
|
123
|
+
"id": "a07",
|
|
124
|
+
"prompt": "faz auditoria SEO do site",
|
|
125
|
+
"expected": "agent:seo",
|
|
126
|
+
"note": "auditoria, 1 area"
|
|
127
|
+
},
|
|
128
|
+
{
|
|
129
|
+
"id": "a08",
|
|
130
|
+
"prompt": "adiciona schema markup no produto",
|
|
131
|
+
"expected": "agent:seo",
|
|
132
|
+
"note": "schema SEO, 1 area, técnico"
|
|
133
|
+
},
|
|
134
|
+
{
|
|
135
|
+
"id": "a09",
|
|
136
|
+
"prompt": "otimiza as meta descriptions",
|
|
137
|
+
"expected": "agent:seo",
|
|
138
|
+
"note": "SEO on-page, 1 area"
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
"id": "a10",
|
|
142
|
+
"prompt": "como melhorar a taxa de conversão do signup?",
|
|
143
|
+
"expected": "agent:growth",
|
|
144
|
+
"note": "CRO question, 1 area, lightweight"
|
|
145
|
+
},
|
|
146
|
+
{
|
|
147
|
+
"id": "a11",
|
|
148
|
+
"prompt": "qual o melhor preço pra este feature?",
|
|
149
|
+
"expected": "agent:growth",
|
|
150
|
+
"note": "pricing, 1 area"
|
|
151
|
+
},
|
|
152
|
+
{
|
|
153
|
+
"id": "a12",
|
|
154
|
+
"prompt": "plano pra reduzir churn",
|
|
155
|
+
"expected": "agent:growth",
|
|
156
|
+
"note": "churn analysis, 1 area, mas esperaria maestro por depth — porém 'plano' é leve: just brainstorm; se fosse 'executa o plano' seria maestro"
|
|
157
|
+
},
|
|
158
|
+
{
|
|
159
|
+
"id": "a13",
|
|
160
|
+
"prompt": "cria post pra LinkedIn sobre o lançamento",
|
|
161
|
+
"expected": "agent:social",
|
|
162
|
+
"note": "social copy, 1 area"
|
|
163
|
+
},
|
|
164
|
+
{
|
|
165
|
+
"id": "a14",
|
|
166
|
+
"prompt": "escreve copy pra Instagram story",
|
|
167
|
+
"expected": "agent:social",
|
|
168
|
+
"note": "social content, 1 area"
|
|
169
|
+
},
|
|
170
|
+
{
|
|
171
|
+
"id": "a15",
|
|
172
|
+
"prompt": "cria variações de ad criativo pra Meta",
|
|
173
|
+
"expected": "agent:ads",
|
|
174
|
+
"note": "paid ads, 1 area, copywriting"
|
|
175
|
+
},
|
|
176
|
+
{
|
|
177
|
+
"id": "a16",
|
|
178
|
+
"prompt": "setup de tracking no Google Ads",
|
|
179
|
+
"expected": "agent:ads",
|
|
180
|
+
"note": "ads technical, 1 area"
|
|
181
|
+
},
|
|
182
|
+
{
|
|
183
|
+
"id": "a17",
|
|
184
|
+
"prompt": "roda teste E2E do fluxo de checkout",
|
|
185
|
+
"expected": "agent:qa",
|
|
186
|
+
"note": "QA, 1 area, pontual"
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
"id": "a18",
|
|
190
|
+
"prompt": "verifica visualmente a responsividade do site",
|
|
191
|
+
"expected": "agent:qa",
|
|
192
|
+
"note": "visual QA, 1 area"
|
|
193
|
+
},
|
|
194
|
+
{
|
|
195
|
+
"id": "a19",
|
|
196
|
+
"prompt": "anota que definimos não fazer autenticação social por hora",
|
|
197
|
+
"expected": "agent:memoria",
|
|
198
|
+
"note": "memory, decisão registrada"
|
|
199
|
+
},
|
|
200
|
+
{
|
|
201
|
+
"id": "a20",
|
|
202
|
+
"prompt": "salva a decisão sobre pricing em tiers",
|
|
203
|
+
"expected": "agent:memoria",
|
|
204
|
+
"note": "memory, arquitetura de preço"
|
|
205
|
+
},
|
|
206
|
+
{
|
|
207
|
+
"id": "a21",
|
|
208
|
+
"prompt": "corrige o bug de logout no mobile",
|
|
209
|
+
"expected": "agent:dev",
|
|
210
|
+
"note": "bug fix, 1 arquivo, pontual"
|
|
211
|
+
},
|
|
212
|
+
{
|
|
213
|
+
"id": "a22",
|
|
214
|
+
"prompt": "ajusta a cor do botão secundário",
|
|
215
|
+
"expected": "agent:dev",
|
|
216
|
+
"note": "CSS fix, 1 arquivo"
|
|
217
|
+
},
|
|
218
|
+
{
|
|
219
|
+
"id": "m01",
|
|
220
|
+
"prompt": "cria a landing completa, escreve a copy de venda e configura o tracking",
|
|
221
|
+
"expected": "maestro",
|
|
222
|
+
"note": "3 áreas (designer, copy, growth/ads), artefato alto"
|
|
223
|
+
},
|
|
224
|
+
{
|
|
225
|
+
"id": "m02",
|
|
226
|
+
"prompt": "novo produto do zero: UI, docs, schema SEO, post de lançamento",
|
|
227
|
+
"expected": "maestro",
|
|
228
|
+
"note": "4 áreas (designer, dev, seo, social), multi-passo alto"
|
|
229
|
+
},
|
|
230
|
+
{
|
|
231
|
+
"id": "m03",
|
|
232
|
+
"prompt": "auditoria completa do site: performance, SEO, segurança, acessibilidade",
|
|
233
|
+
"expected": "maestro",
|
|
234
|
+
"note": "2+ áreas, complexidade alta, relatório merecedor de memória"
|
|
235
|
+
},
|
|
236
|
+
{
|
|
237
|
+
"id": "m04",
|
|
238
|
+
"prompt": "redesenha o onboarding, reescreve os emails, testa tudo E2E",
|
|
239
|
+
"expected": "maestro",
|
|
240
|
+
"note": "3 áreas (designer, copy, qa), integrado"
|
|
241
|
+
},
|
|
242
|
+
{
|
|
243
|
+
"id": "m05",
|
|
244
|
+
"prompt": "plano de crescimento: pricing, copy, anúncios, CRO do signup",
|
|
245
|
+
"expected": "maestro",
|
|
246
|
+
"note": "3-4 áreas (growth, copy, ads), estratégico"
|
|
247
|
+
},
|
|
248
|
+
{
|
|
249
|
+
"id": "m06",
|
|
250
|
+
"prompt": "refactor de infra: banco de dados, APIs, deploy, monitoria",
|
|
251
|
+
"expected": "maestro",
|
|
252
|
+
"note": "1 área (dev) mas multi-passo pesado, arquitetura alta"
|
|
253
|
+
},
|
|
254
|
+
{
|
|
255
|
+
"id": "m07",
|
|
256
|
+
"prompt": "integra pagamento: back, front, testes, comunicação com cliente",
|
|
257
|
+
"expected": "maestro",
|
|
258
|
+
"note": "1 area (dev) mas multi-passo pesado, requer planning"
|
|
259
|
+
},
|
|
260
|
+
{
|
|
261
|
+
"id": "m08",
|
|
262
|
+
"prompt": "melhora de churn: análise, copy de reativação, anúncios, UI de upgrade",
|
|
263
|
+
"expected": "maestro",
|
|
264
|
+
"note": "3-4 áreas (growth, copy, ads, designer), integrado"
|
|
265
|
+
},
|
|
266
|
+
{
|
|
267
|
+
"id": "m09",
|
|
268
|
+
"prompt": "lançamento beta: site, emails, social, ads, suporte inicial",
|
|
269
|
+
"expected": "maestro",
|
|
270
|
+
"note": "4+ áreas (designer, copy, social, ads), event-driven"
|
|
271
|
+
},
|
|
272
|
+
{
|
|
273
|
+
"id": "m10",
|
|
274
|
+
"prompt": "internacionalização: tradução completa, schema por locale, testes",
|
|
275
|
+
"expected": "maestro",
|
|
276
|
+
"note": "2+ áreas (dev, seo, qa), multi-passo pesado"
|
|
277
|
+
},
|
|
278
|
+
{
|
|
279
|
+
"id": "m11",
|
|
280
|
+
"prompt": "migração de plataforma: arquitetura, testes, rollout, suporte",
|
|
281
|
+
"expected": "maestro",
|
|
282
|
+
"note": "1 área (dev) mas crítico, multi-passo, requer planning e memória"
|
|
283
|
+
},
|
|
284
|
+
{
|
|
285
|
+
"id": "m12",
|
|
286
|
+
"prompt": "estratégia de referral: programa, UI, emails, tracking, análise",
|
|
287
|
+
"expected": "maestro",
|
|
288
|
+
"note": "4+ áreas (growth, designer, copy, ads), artefato alto"
|
|
289
|
+
}
|
|
290
|
+
]
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
// run-routing-eval.mjs — avalia o roteamento do Wizz Method contra
|
|
2
|
+
// evals/routing/dataset.json.
|
|
3
|
+
//
|
|
4
|
+
// Dois níveis:
|
|
5
|
+
// 1. DETERMINÍSTICO (default, rápido, roda em CI): valida o gate isTrivial()
|
|
6
|
+
// do hook wizz-router-enforce contra os rótulos do dataset.
|
|
7
|
+
// - expected "trivial" → isTrivial deve ser true
|
|
8
|
+
// - expected "agent:*"/"maestro" → isTrivial deve ser false
|
|
9
|
+
// 2. LLM (--llm, requer `claude` CLI logado, custa tokens): para os casos
|
|
10
|
+
// não-triviais, pergunta ao modelo qual a rota (agent:<area> | maestro)
|
|
11
|
+
// usando a mesma regra de dispatch do Diretor/maestro e compara.
|
|
12
|
+
//
|
|
13
|
+
// Uso:
|
|
14
|
+
// node evals/routing/run-routing-eval.mjs # só determinístico
|
|
15
|
+
// node evals/routing/run-routing-eval.mjs --llm # inclui rota via LLM
|
|
16
|
+
// node evals/routing/run-routing-eval.mjs --llm --model haiku
|
|
17
|
+
|
|
18
|
+
import fs from 'node:fs';
|
|
19
|
+
import path from 'node:path';
|
|
20
|
+
import { execFileSync } from 'node:child_process';
|
|
21
|
+
import { createRequire } from 'node:module';
|
|
22
|
+
import { fileURLToPath } from 'node:url';
|
|
23
|
+
|
|
24
|
+
const here = path.dirname(fileURLToPath(import.meta.url));
|
|
25
|
+
const repoRoot = path.resolve(here, '..', '..');
|
|
26
|
+
const require = createRequire(import.meta.url);
|
|
27
|
+
const { isTrivial } = require(path.join(repoRoot, 'tools', 'hooks', 'wizz-router-enforce.js'));
|
|
28
|
+
|
|
29
|
+
const dataset = JSON.parse(fs.readFileSync(path.join(here, 'dataset.json'), 'utf8'));
|
|
30
|
+
const useLlm = process.argv.includes('--llm');
|
|
31
|
+
const modelIdx = process.argv.indexOf('--model');
|
|
32
|
+
const model = modelIdx === -1 ? 'haiku' : process.argv[modelIdx + 1];
|
|
33
|
+
|
|
34
|
+
const DISPATCH_RULE =
|
|
35
|
+
'Você é o Diretor do Wizz Method. Classifique o pedido do usuário em UMA rota:\n' +
|
|
36
|
+
'- "maestro": toca 2+ áreas OU 2+ fatores altos (multi-passo, precisa planejar, gera artefato pra memória).\n' +
|
|
37
|
+
'- "agent:<area>": 1 área só e leve. Áreas: designer, copy, seo, growth, social, ads, qa, memoria, dev.\n' +
|
|
38
|
+
'Responda SÓ com JSON: {"route":"maestro"} ou {"route":"agent:<area>"}.';
|
|
39
|
+
|
|
40
|
+
let passTrivial = 0;
|
|
41
|
+
let failTrivial = 0;
|
|
42
|
+
let passRoute = 0;
|
|
43
|
+
let failRoute = 0;
|
|
44
|
+
const failures = [];
|
|
45
|
+
|
|
46
|
+
for (const item of dataset) {
|
|
47
|
+
const expectTrivial = item.expected === 'trivial';
|
|
48
|
+
const got = isTrivial(item.prompt);
|
|
49
|
+
if (got === expectTrivial) {
|
|
50
|
+
passTrivial++;
|
|
51
|
+
} else {
|
|
52
|
+
failTrivial++;
|
|
53
|
+
failures.push(`[isTrivial] ${item.id}: esperado ${expectTrivial}, veio ${got} — "${item.prompt}"`);
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
if (useLlm && !expectTrivial) {
|
|
57
|
+
try {
|
|
58
|
+
const raw = execFileSync(
|
|
59
|
+
'claude',
|
|
60
|
+
['-p', '--model', model, '--output-format', 'text', `${DISPATCH_RULE}\n\nPedido: ${item.prompt}`],
|
|
61
|
+
{ encoding: 'utf8', timeout: 120_000 },
|
|
62
|
+
);
|
|
63
|
+
const match = raw.match(/\{[^}]*"route"[^}]*\}/);
|
|
64
|
+
const route = match ? JSON.parse(match[0]).route : null;
|
|
65
|
+
if (route === item.expected) {
|
|
66
|
+
passRoute++;
|
|
67
|
+
} else {
|
|
68
|
+
failRoute++;
|
|
69
|
+
failures.push(`[route] ${item.id}: esperado ${item.expected}, veio ${route} — "${item.prompt}"`);
|
|
70
|
+
}
|
|
71
|
+
} catch (error) {
|
|
72
|
+
failRoute++;
|
|
73
|
+
failures.push(`[route] ${item.id}: erro ao rodar claude -p (${error.message.split('\n')[0]})`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
|
|
78
|
+
console.log(`isTrivial: ${passTrivial}/${passTrivial + failTrivial} corretos`);
|
|
79
|
+
if (useLlm) {
|
|
80
|
+
const total = passRoute + failRoute;
|
|
81
|
+
console.log(`rota LLM (${model}): ${passRoute}/${total} corretos (${total ? Math.round((100 * passRoute) / total) : 0}%)`);
|
|
82
|
+
}
|
|
83
|
+
if (failures.length > 0) {
|
|
84
|
+
console.log('\nFalhas:');
|
|
85
|
+
for (const f of failures) console.log(` ✗ ${f}`);
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
// Gate: o determinístico é obrigatório; a rota LLM é informativa (meta ≥ 90%).
|
|
89
|
+
process.exitCode = failTrivial > 0 ? 1 : 0;
|
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.
|
|
4
|
+
"version": "1.4.1",
|
|
5
5
|
"description": "Wizz Method — método de agência orientado por IA em PT-BR (fork independente do BMad Method)",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"agile",
|
|
@@ -42,10 +42,12 @@
|
|
|
42
42
|
"prepare": "command -v husky >/dev/null 2>&1 && husky || exit 0",
|
|
43
43
|
"quality": "npm run format:check && npm run lint && npm run lint:md && npm run docs:build && npm run test:install && npm run test:urls && npm run validate:refs && npm run validate:skills && npm run docs:validate-sidebar",
|
|
44
44
|
"rebundle": "node tools/installer/bundlers/bundle-web.js rebundle",
|
|
45
|
-
"
|
|
45
|
+
"sync:global": "node tools/sync-global.mjs",
|
|
46
|
+
"test": "npm run test:refs && npm run test:install && npm run test:urls && npm run test:channels && npm run test:mcp && npm run test:cli && npm run test:deps && npm run test:hooks && npm run lint && npm run lint:md && npm run format:check",
|
|
46
47
|
"test:channels": "node test/test-installer-channels.js",
|
|
47
48
|
"test:cli": "node test/test-cli-config.js",
|
|
48
49
|
"test:deps": "node test/test-deps-cache.js",
|
|
50
|
+
"test:hooks": "node test/test-router-hook.js",
|
|
49
51
|
"test:install": "node test/test-installation-components.js",
|
|
50
52
|
"test:mcp": "node test/test-mcp-config.js",
|
|
51
53
|
"test:refs": "node test/test-file-refs-csv.js",
|
|
@@ -71,6 +73,12 @@
|
|
|
71
73
|
"markdownlint-cli2"
|
|
72
74
|
]
|
|
73
75
|
},
|
|
76
|
+
"overrides": {
|
|
77
|
+
"markdownlint-cli2": {
|
|
78
|
+
"js-yaml": "^4.3.0",
|
|
79
|
+
"markdown-it": "^14.2.0"
|
|
80
|
+
}
|
|
81
|
+
},
|
|
74
82
|
"dependencies": {
|
|
75
83
|
"@clack/core": "^1.3.1",
|
|
76
84
|
"@clack/prompts": "^1.4.0",
|
|
@@ -80,7 +88,7 @@
|
|
|
80
88
|
"csv-parse": "^6.1.0",
|
|
81
89
|
"glob": "^11.0.3",
|
|
82
90
|
"ignore": "^7.0.5",
|
|
83
|
-
"js-yaml": "^4.
|
|
91
|
+
"js-yaml": "^4.3.0",
|
|
84
92
|
"picocolors": "^1.1.1",
|
|
85
93
|
"semver": "^7.6.3",
|
|
86
94
|
"xml2js": "^0.6.2",
|
package/skills-registry.yaml
CHANGED
|
@@ -61,35 +61,71 @@ areas:
|
|
|
61
61
|
designer:
|
|
62
62
|
agent: wizz-designer
|
|
63
63
|
summary: "Design de produto e UI: interfaces, landing pages, design systems, motion, 3D."
|
|
64
|
+
# 3 PORTAS DE ENTRADA (2026-07, consolidação leve): o agente OFERECE/INVOCA
|
|
65
|
+
# apenas as skills com `entry: true`. As demais são puxadas PELA porta da sua
|
|
66
|
+
# camada (campo `door`) ou por pedido explícito do usuário — nunca oferecidas
|
|
67
|
+
# soltas. Nada foi fundido: todos os arquivos e references continuam intactos.
|
|
64
68
|
skills:
|
|
69
|
+
# ── Porta 1: DIREÇÃO (decidir antes de construir) ──
|
|
70
|
+
- id: decision-maker
|
|
71
|
+
entry: true
|
|
72
|
+
door: direcao
|
|
73
|
+
when: "PORTA de direção: todo trabalho de decidir ANTES de construir. Brief visual inicial (6 decisões de estética + 3 lógicas) no kickoff. Puxa: taste-skill (direção anti-slop de brief novo) e motion-3d-director (decidir caminho motion/3D/vídeo)."
|
|
74
|
+
- id: taste-skill
|
|
75
|
+
door: direcao
|
|
76
|
+
when: "Anti-slop em briefs NOVOS: lê o brief, define a direção e audita contra defaults de AI."
|
|
77
|
+
- id: motion-3d-director
|
|
78
|
+
door: direcao
|
|
79
|
+
when: "Direção de motion/animação, 3D, WebGL, scroll cinematográfico, image-to-video. Decide o caminho ANTES de implementar."
|
|
80
|
+
|
|
81
|
+
# ── Porta 2: CONSTRUÇÃO E POLISH DE UI ──
|
|
65
82
|
- id: ui-ux-pro-max
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
when: "
|
|
69
|
-
- id: huashu-design
|
|
70
|
-
when: "Direção visual + protótipo HTML hi-fi, exploração de variantes, review 5-dim, export MP4/GIF."
|
|
83
|
+
entry: true
|
|
84
|
+
door: construcao
|
|
85
|
+
when: "PORTA de construção: criar/melhorar UI (design system, paleta, tipografia, componente, página). Puxa: premium-landing-ui-researcher (landing premium greenfield), ui-component-curator (1 componente em projeto existente), impeccable (gate de polish/acessibilidade), taste-redesign (anti-slop em código existente), huashu-design (protótipo HTML hi-fi/variantes/review) e react-components (Stitch→React)."
|
|
71
86
|
- id: premium-landing-ui-researcher
|
|
87
|
+
door: construcao
|
|
72
88
|
when: "Projeto NOVO (greenfield): cria landing premium do zero, hero, 3D high-end. Estratégia source-first."
|
|
73
89
|
- id: ui-component-curator
|
|
90
|
+
door: construcao
|
|
74
91
|
when: "Projeto EXISTENTE: qual componente/efeito adicionar que combina com o estilo atual."
|
|
75
|
-
- id:
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
when: "Vídeo programático em React (Remotion) especificamente."
|
|
79
|
-
- id: taste-skill
|
|
80
|
-
when: "Anti-slop em briefs NOVOS: lê o brief, define a direção e audita contra defaults de AI."
|
|
92
|
+
- id: impeccable
|
|
93
|
+
door: construcao
|
|
94
|
+
when: "Gate de polish/qualidade de frontend: hardening de UI, acessibilidade, anti-padrões. Refina o que já existe."
|
|
81
95
|
- id: taste-redesign
|
|
96
|
+
door: construcao
|
|
82
97
|
when: "Anti-slop em projeto EXISTENTE: audita o código atual, lista problemas, prioriza fixes."
|
|
98
|
+
- id: huashu-design
|
|
99
|
+
door: construcao
|
|
100
|
+
when: "Direção visual + protótipo HTML hi-fi, exploração de variantes, review 5-dim, export MP4/GIF."
|
|
83
101
|
- id: react-components
|
|
102
|
+
door: construcao
|
|
84
103
|
when: "Converter design (Stitch MCP) em componentes React/Vite."
|
|
85
|
-
|
|
86
|
-
|
|
104
|
+
|
|
105
|
+
# ── Porta 3: MOTION E ASSETS (executar animação e gerar mídia) ──
|
|
106
|
+
- id: animate
|
|
107
|
+
entry: true
|
|
108
|
+
door: motion
|
|
109
|
+
when: "PORTA de motion/assets: executar animação e gerar mídia. Craft de micro-interação (regras do Emil Kowalski: saída > entrada, só transform/opacity, reduced-motion). Puxa: design-motion-principles (auditar animação existente), remotion-best-practices (vídeo em React), canvas-design (PNG/PDF por código) e algorithmic-art (visual generativo)."
|
|
110
|
+
- id: design-motion-principles
|
|
111
|
+
door: motion
|
|
112
|
+
when: "Auditor de movimento: revisa animação existente e aponta scale(0) no início, easing cru, reduced-motion faltando; pesa contenção/polimento/diversão pelo contexto."
|
|
113
|
+
- id: remotion-best-practices
|
|
114
|
+
door: motion
|
|
115
|
+
when: "Vídeo programático em React (Remotion) especificamente."
|
|
116
|
+
- id: canvas-design
|
|
117
|
+
door: motion
|
|
118
|
+
when: "Gerar PNG/PDF editável por código (carrossel, quote card, infográfico) com fonte/cor/logo sempre certos. Traz canvas-fonts."
|
|
119
|
+
- id: algorithmic-art
|
|
120
|
+
door: motion
|
|
121
|
+
when: "Visual generativo por código (flow fields, ruído, partículas) para fundo/textura de hero, único a cada render, sem cara de banco de imagem."
|
|
87
122
|
mcps:
|
|
88
123
|
- id: magic
|
|
89
124
|
when: "Gerar/refinar componentes prontos via 21st.dev (UI builder, inspiration, refiner)."
|
|
90
125
|
server:
|
|
91
126
|
command: npx
|
|
92
|
-
|
|
127
|
+
# Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
|
|
128
|
+
args: ["-y", "@21st-dev/magic@0.1.0"]
|
|
93
129
|
env:
|
|
94
130
|
API_KEY: "${MAGIC_API_KEY}"
|
|
95
131
|
clis:
|
|
@@ -105,11 +141,13 @@ areas:
|
|
|
105
141
|
when: "EDITAR vídeo por IA: cortes, selects, cenas, roughcut via XML/FFmpeg. Sugerir quando o pedido for editar/cortar vídeo. Clone-and-run no PROJETO (não é skill add), pesado: Ruby + Python + FFmpeg + WhisperX. AVISOS: ~GB de modelos (WhisperX), build demorado, só Apple Silicon."
|
|
106
142
|
platform: darwin-arm64
|
|
107
143
|
check: "test -d ./buttercut"
|
|
108
|
-
|
|
144
|
+
# Pin de supply chain (2026-07-06): checkout de SHA fixo; atualizar conscientemente.
|
|
145
|
+
install: "git clone https://github.com/barefootford/buttercut.git buttercut && git -C buttercut checkout 1383f964ebc8b43c4af17f70b3ec6f611b18b3ce"
|
|
109
146
|
- id: voicebox
|
|
110
147
|
when: "Voz/TTS/clonagem de voz local para narração/VO de vídeo (7 engines TTS + Whisper STT). App desktop que expõe endpoint MCP local em runtime. Clone-and-run no projeto."
|
|
111
148
|
check: "test -d ./voicebox"
|
|
112
|
-
|
|
149
|
+
# Pin de supply chain (2026-07-06): checkout de SHA fixo; atualizar conscientemente.
|
|
150
|
+
install: "git clone https://github.com/jamiepine/voicebox.git voicebox && git -C voicebox checkout f2cf2a729d733acd7c759d85c6ace2d602f50d6e"
|
|
113
151
|
references:
|
|
114
152
|
- "references/premium-agency-rules.md (regras $150k-tier, importadas por impeccable/huashu no modo high-end)"
|
|
115
153
|
|
|
@@ -204,7 +242,8 @@ areas:
|
|
|
204
242
|
# before writing; if verify fails the server is skipped, not written.
|
|
205
243
|
setup:
|
|
206
244
|
bin: scrapling
|
|
207
|
-
|
|
245
|
+
# Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
|
|
246
|
+
install: 'uv tool install "scrapling[ai]==0.4.10" || pipx install "scrapling[ai]==0.4.10" || pip install --user "scrapling[ai]==0.4.10"'
|
|
208
247
|
post_install: "{bin} install"
|
|
209
248
|
verify: "{bin} --version"
|
|
210
249
|
|
|
@@ -245,23 +284,25 @@ areas:
|
|
|
245
284
|
when: "Gestão real de campanha Meta/Facebook/Instagram via API (criar/editar/medir ads)."
|
|
246
285
|
server:
|
|
247
286
|
command: npx
|
|
248
|
-
|
|
287
|
+
# Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
|
|
288
|
+
args: ["-y", "mcp-meta-ads@1.0.0"]
|
|
249
289
|
env:
|
|
250
290
|
META_ACCESS_TOKEN: "${META_ACCESS_TOKEN}"
|
|
251
291
|
clis:
|
|
252
292
|
- id: arcads
|
|
253
293
|
when: "GERAR vídeo-ad e imagem por IA (Seedance/Sora/Veo/Kling/OmniHuman + Nano Banana) e publicar como Meta ad. Clone-and-run no projeto: git clone + ./scripts/setup.sh; precisa Python 3.10+ e ARCADS API key em .env (META_ACCESS_TOKEN opcional p/ publicar)."
|
|
254
294
|
check: "test -d ./arcads-claude-code"
|
|
255
|
-
|
|
295
|
+
# Pin de supply chain (2026-07-06): checkout de SHA fixo; atualizar conscientemente.
|
|
296
|
+
install: "git clone https://github.com/krusemediallc/arcads-claude-code.git arcads-claude-code && git -C arcads-claude-code checkout 0b0d3610bbdcfcc2607c77a748d6abb341adda46"
|
|
256
297
|
|
|
257
298
|
architect:
|
|
258
299
|
agent: wizz-agent-architect
|
|
259
300
|
summary: "Arquitetura, banco, segurança, infra, decisões técnicas."
|
|
260
301
|
skills:
|
|
261
302
|
- id: web-security
|
|
262
|
-
when: "Auditar segurança web, OWASP, XSS/CSRF/injeção, headers, rate limit, antes de deploy/PR."
|
|
303
|
+
when: "Auditar segurança web, OWASP, XSS/CSRF/injeção/SQLi, IDOR, headers, rate limit (IP+conta), CORS, clickjacking, vazamento de PII na resposta, antes de deploy/PR."
|
|
263
304
|
- id: auth-and-secrets
|
|
264
|
-
when: "Auth (JWT/OAuth/SSO/Clerk), gestão de secrets, rotação de credenciais."
|
|
305
|
+
when: "Auth (JWT/OAuth/SSO/Clerk), token no header vs URL, revogar no logout, enumeração de usuário, gestão de secrets, rotação de credenciais."
|
|
265
306
|
- id: desktop-security
|
|
266
307
|
when: "Segurança desktop/Electron (contextIsolation, code signing)."
|
|
267
308
|
- id: database-scaling
|
|
@@ -276,12 +317,15 @@ areas:
|
|
|
276
317
|
when: "Dependências/packages, vulnerabilidades, npm audit."
|
|
277
318
|
- id: supabase-postgres-best-practices
|
|
278
319
|
when: "Performance e boas práticas de Postgres/Supabase (queries, schema, RLS)."
|
|
320
|
+
- id: ai-product-design
|
|
321
|
+
when: "Construir/melhorar um agente ou produto de IA: escrever/revisar system prompt, definir persona/tom, guardrails e recusas, few-shot, chain-of-thought, orquestração multi-agente, handoff, detecção de frustração, generative UI, avaliar qualidade de saída. Base para desenhar os próprios agentes do método. 44 padrões (Owl-Listener, MIT)."
|
|
279
322
|
mcps:
|
|
280
323
|
- id: supabase
|
|
281
324
|
when: "Operar Supabase de verdade: rodar SQL, migrations, inspecionar schema/RLS, logs."
|
|
282
325
|
server:
|
|
283
326
|
command: npx
|
|
284
|
-
|
|
327
|
+
# Pin de supply chain (2026-07-06): versão fixa (era @latest); atualizar conscientemente.
|
|
328
|
+
args: ["-y", "@supabase/mcp-server-supabase@0.8.2"]
|
|
285
329
|
env:
|
|
286
330
|
SUPABASE_ACCESS_TOKEN: "${SUPABASE_ACCESS_TOKEN}"
|
|
287
331
|
|
|
@@ -299,7 +343,8 @@ areas:
|
|
|
299
343
|
- id: agent-browser
|
|
300
344
|
when: "Dirigir um browser real pra E2E/verificação: navegar, clicar, preencher form, screenshot, console. É CLI, não MCP."
|
|
301
345
|
check: "agent-browser --version"
|
|
302
|
-
|
|
346
|
+
# Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
|
|
347
|
+
install: "npm install -g agent-browser@0.27.0"
|
|
303
348
|
|
|
304
349
|
analyst:
|
|
305
350
|
agent: wizz-agent-analyst
|
|
@@ -314,7 +359,8 @@ areas:
|
|
|
314
359
|
when: "Pesquisa web/prior-art durante planejamento (web search, descoberta de fontes)."
|
|
315
360
|
server:
|
|
316
361
|
command: npx
|
|
317
|
-
|
|
362
|
+
# Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
|
|
363
|
+
args: ["-y", "exa-mcp-server@3.2.1"]
|
|
318
364
|
env:
|
|
319
365
|
EXA_API_KEY: "${EXA_API_KEY}"
|
|
320
366
|
|
|
@@ -346,7 +392,8 @@ mcp_utility:
|
|
|
346
392
|
when: "Docs atualizadas de qualquer lib/framework/SDK (React, Next, Prisma, Tailwind...). Útil em todo dev."
|
|
347
393
|
server:
|
|
348
394
|
command: npx
|
|
349
|
-
|
|
395
|
+
# Pin de supply chain (2026-07-06): versão fixa; atualizar conscientemente.
|
|
396
|
+
args: ["-y", "@upstash/context7-mcp@3.2.2"]
|
|
350
397
|
|
|
351
398
|
# ─────────────────────────────────────────────────────────────────────────────
|
|
352
399
|
# CLIs — ferramentas de linha de comando que os agentes chamam direto (não são
|
|
@@ -20,7 +20,7 @@ Você é o Ads do Wizz. Planeja campanhas, gera variações de criativo e acompa
|
|
|
20
20
|
|
|
21
21
|
## Como trabalho (ponte global)
|
|
22
22
|
|
|
23
|
-
> **Fonte única (registry) — leia SEMPRE antes dos exemplos abaixo:** a lista real da sua área (`ads`) vive no `skills-registry.yaml` (
|
|
23
|
+
> **Fonte única (registry) — leia SEMPRE antes dos exemplos abaixo:** a lista real da sua área (`ads`) vive no `skills-registry.yaml`. Resolva primeiro a **fatia leve da sua área**, `{project-root}/_wizz/_config/registry/ads.yaml` (já vem como o bloco `areas.ads` completo); se faltar (install antigo), caia pro monólito na ordem `{project-root}/_wizz/_config/skills-registry.yaml` → `{project-root}/_wizz/skills-registry.yaml` → `{project-root}/skills-registry.yaml` e ache o bloco `areas.ads` lá dentro. Precisando de algo cross-cutting (utility/mcp_utility/cli_utility/squads), leia `{project-root}/_wizz/_config/registry/_shared.yaml`. Ofereça **tudo que casar** com o pedido pelo `when:` — `skills:` (via `Skill`), `clis:` (`check:` → se faltar mostre o `install:`, opt-in, respeite `platform:`) e `mcps:` (`claude mcp add <id>` com o bloco `server`, ex. `meta-ads`). Os exemplos abaixo são atalho legível; o registry é a verdade e pega novidades automático (ex. `arcads` p/ gerar vídeo-ad).
|
|
24
24
|
- Estratégia de campanha, segmentação, lances, ROAS → `paid-ads`
|
|
25
25
|
- Variações de criativo, headlines, copy de anúncio → `ad-creative`
|
|
26
26
|
- Tracking, conversões, UTMs, pixel → `analytics-tracking`
|