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.
- package/package.json +5 -3
- package/removals.txt +10 -0
- package/skills-registry.yaml +60 -39
- package/src/bmm-skills/1-analysis/wizz-set-feature/SKILL.md +9 -9
- package/src/bmm-skills/2-plan-workflows/wizz-ux/references/creative-tools.md +2 -0
- package/src/bmm-skills/2-plan-workflows/wizz-ux/references/design-md-spec.md +2 -0
- package/src/bmm-skills/4-implementation/wizz-create-story/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-dev-story/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-qa-generate-e2e-tests/checklist.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-quick-dev/SKILL.md +1 -1
- package/src/bmm-skills/4-implementation/wizz-sprint-status/SKILL.md +5 -5
- package/src/bmm-skills/module-help.csv +1 -1
- package/src/bmm-skills/module.yaml +1 -1
- package/src/core-skills/_shared/handoff-protocol.md +2 -2
- package/src/modules/lowticket/skills/wizz-lowticket-funil/SKILL.md +1 -1
- package/src/modules/lowticket/skills/wizz-lowticket-guia/SKILL.md +1 -1
- package/src/modules/lowticket/skills/wizz-lowticket-metodologia/SKILL.md +1 -1
- package/src/modules/lowticket/skills/wizz-lowticket-minerador/SKILL.md +1 -1
- package/src/modules/lowticket/skills/wizz-lowticket-pagina/SKILL.md +1 -1
- package/src/modules/lowticket/skills/wizz-lowticket-trafego/SKILL.md +1 -1
- package/src/modules/wizz/_shared/cerebro.md +7 -7
- package/src/modules/wizz/_shared/communication-rules.md +1 -1
- package/src/modules/wizz/_shared/encerramento.md +4 -3
- package/src/modules/wizz/_shared/organizacao.md +8 -4
- package/src/modules/wizz/_shared/token-economy.md +1 -1
- package/src/modules/wizz/_shared/video-pipeline.md +4 -4
- package/src/modules/wizz/agents/wizz-ads/SKILL.md +4 -1
- package/src/modules/wizz/agents/wizz-ads/customize.toml +12 -3
- package/src/modules/wizz/agents/wizz-ads/knowledge/playbook.md +36 -0
- package/src/modules/wizz/agents/wizz-copy/SKILL.md +4 -1
- package/src/modules/wizz/agents/wizz-copy/customize.toml +2 -3
- package/src/modules/wizz/agents/wizz-copy/knowledge/playbook.md +34 -0
- package/src/modules/wizz/agents/wizz-designer/SKILL.md +2 -2
- package/src/modules/wizz/agents/wizz-designer/customize.toml +2 -3
- package/src/modules/wizz/agents/wizz-growth/SKILL.md +4 -1
- package/src/modules/wizz/agents/wizz-growth/customize.toml +33 -4
- package/src/modules/wizz/agents/wizz-growth/knowledge/playbook.md +39 -0
- package/src/modules/wizz/agents/wizz-maestro/SKILL.md +6 -8
- package/src/modules/wizz/agents/wizz-maestro/customize.toml +2 -3
- package/src/modules/wizz/agents/wizz-memoria/SKILL.md +7 -7
- package/src/modules/wizz/agents/wizz-memoria/customize.toml +5 -6
- package/src/modules/wizz/agents/wizz-qa/SKILL.md +5 -6
- package/src/modules/wizz/agents/wizz-qa/customize.toml +3 -4
- package/src/modules/wizz/agents/wizz-seo/SKILL.md +4 -1
- package/src/modules/wizz/agents/wizz-seo/customize.toml +2 -3
- package/src/modules/wizz/agents/wizz-seo/knowledge/playbook.md +31 -0
- package/src/modules/wizz/agents/wizz-social/SKILL.md +3 -3
- package/src/modules/wizz/agents/wizz-social/customize.toml +2 -3
- package/src/modules/wizz/overrides/wizz-agent-analyst.toml +2 -2
- package/src/modules/wizz/overrides/wizz-agent-architect.toml +3 -3
- package/src/modules/wizz/overrides/wizz-agent-dev.toml +3 -3
- package/src/modules/wizz/overrides/wizz-agent-pm.toml +2 -2
- package/src/modules/wizz/overrides/wizz-agent-tech-writer.toml +2 -2
- package/src/modules/wizz/overrides/wizz-agent-ux-designer.toml +2 -2
- package/src/skills-lib/_shared/complexity-signal.md +8 -9
- package/src/skills-lib/_shared/dispatch-rule.yaml +21 -0
- package/src/skills-lib/{cerebro → wizz-cerebro}/SKILL.md +1 -1
- package/src/skills-lib/{ctc-align → wizz-ctc-align}/SKILL.md +1 -1
- package/src/skills-lib/wizz-decision-maker/references/output-format.md +21 -0
- package/src/skills-lib/wizz-decision-maker/references/references-and-extraction.md +32 -1
- package/src/skills-lib/wizz-design-needs/references/design-state.md +1 -1
- package/src/skills-lib/wizz-design-needs/references/gap-analysis.md +3 -1
- package/src/skills-lib/{enhance-prompt → wizz-enhance-prompt}/SKILL.md +1 -1
- package/src/skills-lib/{find-skills → wizz-find-skills}/SKILL.md +1 -1
- package/src/skills-lib/wizz-huashu-design/references/sfx-library.md +1 -1
- package/src/skills-lib/wizz-huashu-design/scripts/add-music.sh +1 -1
- package/src/skills-lib/wizz-huashu-design/scripts/html2pptx.js +45 -37
- package/src/skills-lib/wizz-huashu-design/scripts/mix-voiceover.sh +1 -1
- package/src/skills-lib/wizz-huashu-design/scripts/narrate-pipeline.mjs +11 -5
- package/src/skills-lib/wizz-huashu-design/scripts/test_scripts.py +209 -0
- package/src/skills-lib/wizz-huashu-design/scripts/tts-doubao.mjs +42 -28
- package/src/skills-lib/wizz-ig-profile-optimizer/SKILL.md +1 -1
- package/src/skills-lib/wizz-inicio-de-projeto/SKILL.md +1 -1
- package/src/skills-lib/wizz-launch-readiness/SKILL.md +7 -7
- package/src/skills-lib/wizz-launch-readiness/references/02-seguranca.md +3 -3
- package/src/skills-lib/wizz-launch-readiness/references/03-seo-descoberta.md +5 -5
- package/src/skills-lib/wizz-launch-readiness/references/04-analytics-medicao.md +1 -1
- package/src/skills-lib/wizz-launch-readiness/references/05-conteudo-prova-social.md +6 -6
- package/src/skills-lib/wizz-launch-readiness/references/06-legal-lgpd.md +1 -1
- package/src/skills-lib/wizz-launch-readiness/references/08-fusao-priorizacao.md +1 -1
- package/src/skills-lib/wizz-offer-forge/SKILL.md +3 -3
- package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/README.md +1 -1
- package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/SKILL.md +1 -1
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/component-sources.md +23 -23
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/source-first-protocol.md +15 -3
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/source-links.md +14 -8
- package/src/skills-lib/wizz-premium-landing-ui-researcher/references/web-access-and-evidence.md +4 -3
- package/src/skills-lib/wizz-router/SKILL.md +3 -3
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +10 -9
- package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/SKILL.md +1 -1
- package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/SKILL.md +1 -1
- package/src/skills-lib/wizz-ui-component-curator/SKILL.md +1 -1
- package/src/skills-lib/wizz-video-effects/SKILL.md +3 -3
- package/src/skills-lib/wizz-video-effects/references/data-contract.md +3 -3
- package/src/skills-lib/wizz-video-effects/scripts/fill_breaths.py +15 -1
- package/src/skills-lib/wizz-video-effects/scripts/test_fill_breaths.py +20 -0
- package/src/skills-lib/wizz-video-styles/SKILL.md +2 -2
- package/src/skills-lib/wizz-video-styles/data/recipes.json +32 -1
- package/src/skills-lib/wizz-video-styles/data/references.json +211 -1
- package/src/skills-lib/wizz-video-styles/data/styles.json +54 -0
- package/src/skills-lib/wizz-video-styles/references/generated-prompts.md +13 -3
- package/src/skills-lib/wizz-video-styles/references/style-picker.md +4 -2
- package/src/skills-lib/wizz-video-styles/references/styles/ui-morph.md +68 -0
- package/src/skills-lib/wizz-video-styles/scripts/analyze.sh +21 -9
- package/src/skills-lib/wizz-video-styles/scripts/references.mjs +1 -0
- package/src/skills-lib/wizz-web-security/SKILL.md +1 -1
- package/tools/fetch-assets.mjs +1 -1
- package/tools/hooks/README.md +18 -14
- package/tools/hooks/rtk-rewrite.js +95 -0
- package/tools/hooks/security-defensive-context.js +17 -1
- package/tools/hooks/session-rules.js +25 -5
- package/tools/hooks/wizz-arrumar.js +126 -12
- package/tools/hooks/wizz-artifact-guard.js +41 -7
- package/tools/hooks/wizz-cerebro-lib.js +239 -0
- package/tools/hooks/wizz-close-reminder.js +124 -0
- package/tools/hooks/wizz-debug-lib.js +55 -0
- package/tools/hooks/wizz-decision-trace.js +19 -2
- package/tools/hooks/wizz-feature.js +20 -4
- package/tools/hooks/wizz-router-enforce.js +30 -13
- package/tools/installer/command-text.js +243 -0
- package/tools/installer/commands/catalog.js +2 -0
- package/tools/installer/commands/doctor.js +10 -12
- package/tools/installer/commands/fetch-assets.js +5 -5
- package/tools/installer/commands/install.js +6 -7
- package/tools/installer/commands/resolve.js +17 -17
- package/tools/installer/commands/trace-report.js +40 -37
- package/tools/installer/core/doctor.js +60 -55
- package/tools/installer/core/hooks-settings.js +88 -14
- package/tools/installer/core/hooks-smoke.js +134 -0
- package/tools/installer/core/installer.js +61 -52
- package/tools/installer/core/quick-update.js +2 -3
- package/tools/installer/guided/labels.js +5 -0
- package/tools/installer/install-text.js +201 -0
- package/tools/installer/modules/channel-plan.js +2 -2
- package/tools/installer/modules/env-vars.js +5 -6
- package/tools/installer/modules/skills-lib.js +1 -1
- package/tools/installer/ui.js +17 -9
- /package/src/skills-lib/{cerebro → wizz-cerebro}/references/comandos-pesquisa-e-memoria.md +0 -0
- /package/src/skills-lib/{cerebro → wizz-cerebro}/references/comandos-rotina-e-captura.md +0 -0
- /package/src/skills-lib/{cerebro → wizz-cerebro}/references/comandos-sessao.md +0 -0
- /package/src/skills-lib/{ctc-align → wizz-ctc-align}/scripts/align.py +0 -0
- /package/src/skills-lib/{enhance-prompt → wizz-enhance-prompt}/README.md +0 -0
- /package/src/skills-lib/{enhance-prompt → wizz-enhance-prompt}/references/KEYWORDS.md +0 -0
- /package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/assets/template.html +0 -0
- /package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/prompts.md +0 -0
- /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-1-validacao-entrada.md +0 -0
- /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-2-autorizacao.md +0 -0
- /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-3-abuso-volume.md +0 -0
- /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-4-vazamento-resposta.md +0 -0
- /package/src/skills-lib/{security-audit-pentest → wizz-security-audit-pentest}/references/stage-5-fusao-plano.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/01-cta-principal.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/02-barra-fixa-mobile.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/03-tempo-de-resposta.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/04-prova-social.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/05-faq-decisao.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/06-imagens-reais.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/07-endereco-como-chegar.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/08-titles.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/09-open-graph.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/10-breadcrumbs.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/11-alt-text.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/12-schema-local.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/13-robots-sitemap.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/14-privacidade-termos.md +0 -0
- /package/src/skills-lib/{site-launch-kit → wizz-site-launch-kit}/references/15-medicao.md +0 -0
|
@@ -1,20 +1,20 @@
|
|
|
1
1
|
# Area 05 · Content / Copy / Social Proof
|
|
2
2
|
|
|
3
|
-
Checks whether what is written and shown is REAL and ready — not whether the copy is good (that's `wizz-copywriting`/`wizz-copy-editing`). Central rule, inherited from `site-launch-kit`: no invented business data passes as compliant. Whatever is missing becomes a PENDING ITEM, never a guess filled in by estimation.
|
|
3
|
+
Checks whether what is written and shown is REAL and ready — not whether the copy is good (that's `wizz-copywriting`/`wizz-copy-editing`). Central rule, inherited from `wizz-site-launch-kit`: no invented business data passes as compliant. Whatever is missing becomes a PENDING ITEM, never a guess filled in by estimation.
|
|
4
4
|
|
|
5
5
|
## Objective checks
|
|
6
6
|
|
|
7
7
|
1. **Placeholder text in production.** `Lorem ipsum`, `TODO`, `[insert here]`, `{{LIKE THIS}}`, or any visible marker on a page/screen that's going live is 🔴.
|
|
8
|
-
2. **Real social proof.** A testimonial, rating, or client logo without a verifiable source (a generic name like "Satisfied customer", a rating with no origin, a company logo that isn't actually a client) is 🔴: fake social proof is a reputational and sometimes legal risk. Point to `site-launch-kit` (round 04) when the surface is a site.
|
|
8
|
+
2. **Real social proof.** A testimonial, rating, or client logo without a verifiable source (a generic name like "Satisfied customer", a rating with no origin, a company logo that isn't actually a client) is 🔴: fake social proof is a reputational and sometimes legal risk. Point to `wizz-site-launch-kit` (round 04) when the surface is a site.
|
|
9
9
|
3. **Current price, timeline, contact info.** A price/plan/phone/email/hours that diverges from what the business actually does is 🔴. Don't validate this "by estimate": if you have no way to confirm the real data, mark it PENDING and ask — never accept what's already written as correct by default.
|
|
10
|
-
4. **Real image vs. generic stock.** A generic stock photo in a context that should be authentic (team, product, location) is 🟡, escalating to 🟠 if the sector depends on visual trust (health, in-person service, financial). Point to `site-launch-kit` (round 06).
|
|
10
|
+
4. **Real image vs. generic stock.** A generic stock photo in a context that should be authentic (team, product, location) is 🟡, escalating to 🟠 if the sector depends on visual trust (health, in-person service, financial). Point to `wizz-site-launch-kit` (round 06).
|
|
11
11
|
5. **Product/brand name consistency.** The product name spelled differently across pages (e.g., "MeJu" vs. "Me Ju" vs. "meju") is 🟡.
|
|
12
|
-
6. **Main CTA and message present and clear.** No main CTA above the fold on the landing page is 🔴 when the launch's goal depends on direct conversion. Point to `site-launch-kit` (round 01).
|
|
13
|
-
7. **FAQ or objection-handling content ready for expected volume.** No FAQ when the product has a known recurring objection is 🟡. Point to `site-launch-kit` (round 05) or `wizz-copywriting`.
|
|
12
|
+
6. **Main CTA and message present and clear.** No main CTA above the fold on the landing page is 🔴 when the launch's goal depends on direct conversion. Point to `wizz-site-launch-kit` (round 01).
|
|
13
|
+
7. **FAQ or objection-handling content ready for expected volume.** No FAQ when the product has a known recurring objection is 🟡. Point to `wizz-site-launch-kit` (round 05) or `wizz-copywriting`.
|
|
14
14
|
|
|
15
15
|
## Cutoff rule
|
|
16
16
|
|
|
17
|
-
Never fill in missing business data "to unblock the diagnosis". If it can't be confirmed (price, testimonial, address, timeline), the item becomes PENDING with "who to get it from / how to get it", same as `site-launch-kit`. Marking 🟢 without checking the real content is worse than marking PENDING.
|
|
17
|
+
Never fill in missing business data "to unblock the diagnosis". If it can't be confirmed (price, testimonial, address, timeline), the item becomes PENDING with "who to get it from / how to get it", same as `wizz-site-launch-kit`. Marking 🟢 without checking the real content is worse than marking PENDING.
|
|
18
18
|
|
|
19
19
|
## Output format
|
|
20
20
|
|
|
@@ -4,7 +4,7 @@ Checks basic legal exposure before launch. This isn't a legal opinion (that requ
|
|
|
4
4
|
|
|
5
5
|
## Objective checks
|
|
6
6
|
|
|
7
|
-
1. **Privacy policy exists and is accessible.** Total absence, in a product that collects personal data (signup, form, analytics cookie), is 🔴. Point to `site-launch-kit` (round 14) when the surface is a site.
|
|
7
|
+
1. **Privacy policy exists and is accessible.** Total absence, in a product that collects personal data (signup, form, analytics cookie), is 🔴. Point to `wizz-site-launch-kit` (round 14) when the surface is a site.
|
|
8
8
|
2. **Privacy policy matches what the product actually does.** A generic copied document that doesn't reflect the real app (e.g., mentions data that isn't collected, or omits data that is) is 🔴: an incorrect policy is worse than none, because it creates a false legal commitment. Read the content, don't just confirm the file exists.
|
|
9
9
|
3. **Terms of use present when there's a transaction or user account.** Absence is 🟠.
|
|
10
10
|
4. **Cookie/tracking consent implemented when there's a non-essential cookie.** Analytics/pixel firing with no cookie notice at all is 🟠.
|
|
@@ -7,7 +7,7 @@ Takes the 7 tables from the areas (01 to 07) and merges them into a single diagn
|
|
|
7
7
|
1. **Paste the 7 tables** (or whichever ran, if any was marked `ITEM DOES NOT APPLY`).
|
|
8
8
|
2. **Dedup by cross-origin.** The same problem can show up in two areas (e.g., a domain pointing to the wrong environment appears in area 03 and area 07). Keep a single row, citing both source areas.
|
|
9
9
|
3. **Sort by severity first** (🔴 at the top, 🟢 at the bottom), and within the same severity, by estimated fix effort (lowest effort first): resolve first whatever is closest to go-live.
|
|
10
|
-
4. **Group by fix owner.** Several 🔴 findings going to the same owner (e.g., 3 findings for `site-launch-kit`) form a single block in the delivery, to become a single dispatch.
|
|
10
|
+
4. **Group by fix owner.** Several 🔴 findings going to the same owner (e.g., 3 findings for `wizz-site-launch-kit`) form a single block in the delivery, to become a single dispatch.
|
|
11
11
|
5. **Count pending items separately.** MANUAL VERIFICATION PENDING is not a severity: it's "can't be known yet". List it separately, with what's needed to turn it into a real verdict.
|
|
12
12
|
|
|
13
13
|
## Final table
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wizz-offer-forge
|
|
3
|
-
description: Forges irresistible direct-response and info-product offers by integrating a unique mechanism, offer thesis, value stacking, reverse guarantee, price anchoring, and a creative matrix for paid traffic. Use when the user wants to create a new offer from scratch, restructure an existing offer that isn't converting, stack high-perception bonuses, define an aggressive guarantee, or translate audience research (Piva/VoC) into a sales machine. Do NOT use for raw audience research (use pesquisa-de-publico-do-piva) or final page copywriting (use wizz-copywriting).
|
|
3
|
+
description: Forges irresistible direct-response and info-product offers by integrating a unique mechanism, offer thesis, value stacking, reverse guarantee, price anchoring, and a creative matrix for paid traffic. Use when the user wants to create a new offer from scratch, restructure an existing offer that isn't converting, stack high-perception bonuses, define an aggressive guarantee, or translate audience research (Piva/VoC) into a sales machine. Do NOT use for raw audience research (use wizz-pesquisa-de-publico-do-piva) or final page copywriting (use wizz-copywriting).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# Wizz Offer Forge
|
|
@@ -31,10 +31,10 @@ A master artifact `OFFER-SPEC.md` containing:
|
|
|
31
31
|
|
|
32
32
|
**Before asking anything, read what already exists.** A good offer is born from the result of the previous one, not from a blank page.
|
|
33
33
|
|
|
34
|
-
If the `cerebro` skill is installed, run `/cerebro ver` for the project and grep by theme in `_decisions/`. Look specifically for: a previous offer to the same audience, a price already tested, a guarantee already used, and any logged decision that forbids a certain path. Bring back what you found as input and state in your reply where it came from. Without the skill installed, skip this block and proceed with the questions below.
|
|
34
|
+
If the `wizz-cerebro` skill is installed, run `/wizz-cerebro ver` for the project and grep by theme in `_decisions/`. Look specifically for: a previous offer to the same audience, a price already tested, a guarantee already used, and any logged decision that forbids a certain path. Bring back what you found as input and state in your reply where it came from. Without the skill installed, skip this block and proceed with the questions below.
|
|
35
35
|
|
|
36
36
|
Then, consult existing context or ask the user:
|
|
37
|
-
1. **Prior Audience Research:** Is there a report from the `pesquisa-de-publico-do-piva` skill or VoC notes? If so, import it as primary input. If not, define the Avatar, Latent Pain, and initial Awareness Level.
|
|
37
|
+
1. **Prior Audience Research:** Is there a report from the `wizz-pesquisa-de-publico-do-piva` skill or VoC notes? If so, import it as primary input. If not, define the Avatar, Latent Pain, and initial Awareness Level.
|
|
38
38
|
2. **Business Model:** Low-ticket (R$ 10 to R$ 97), Mid front-end (R$ 197 to R$ 497), or High-ticket / Mentorship (R$ 1,000 to R$ 10,000+)?
|
|
39
39
|
3. **Delivery Vehicle:** Recorded course, community, templates/tools, live mentorship, SaaS, or hybrid?
|
|
40
40
|
|
package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/README.md
RENAMED
|
@@ -42,7 +42,7 @@ Unzip the `pesquisa-de-publico-do-piva/` folder into `~/.claude/skills/` (to use
|
|
|
42
42
|
Open a conversation, attach your offer document (`.docx`, `.pdf`, `.md` or `.txt`) and write:
|
|
43
43
|
|
|
44
44
|
```
|
|
45
|
-
/pesquisa-de-publico-do-piva
|
|
45
|
+
/wizz-pesquisa-de-publico-do-piva
|
|
46
46
|
```
|
|
47
47
|
|
|
48
48
|
Or, without the slash, anything in that spirit:
|
package/src/skills-lib/{pesquisa-de-publico-do-piva → wizz-pesquisa-de-publico-do-piva}/SKILL.md
RENAMED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: pesquisa-de-publico-do-piva
|
|
2
|
+
name: wizz-pesquisa-de-publico-do-piva
|
|
3
3
|
description: Generates a complete audience research arsenal for an infoproduct offer and paid traffic, from an offer document (.docx/.md/.txt/.pdf). Produces six chained reports — VoC, Schwartz Psychographic Profile, Levels of Awareness, Trend Report, Angle Matrix and Lexicon — compiled into a tab-navigable HTML dashboard. Use when the user sends an offer and asks for audience research, VoC, voice of customer, angle matrix, audience lexicon, persona pain points, or a copy arsenal for direct traffic. Do NOT use for technical research on libraries/code (use context7), broad B2B market research (use deep-research), or visual UI research (use wizz-premium-landing-ui-researcher). Methodology by @soupiva.
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -7,10 +7,10 @@ Do not depend on paid sources as a core part of the flow.
|
|
|
7
7
|
Research flow (public sources first; log evidence per [source-first-protocol](source-first-protocol.md)):
|
|
8
8
|
|
|
9
9
|
1. references sent by the user (`modelos lp/`, screenshots, links);
|
|
10
|
-
2.
|
|
11
|
-
3.
|
|
12
|
-
4. taste/motion sources (Impeccable, Taste Skill, Design Motion Principles,
|
|
13
|
-
5. open visual sources (Landing Love, Godly, Design Spells,
|
|
10
|
+
2. public shadcn registries, checked live against the index at `https://ui.shadcn.com/r/registries.json` (React Bits, Cult UI, Watermelon, Skiper UI, Bklit UI, Componentry, StyleUI and 400+ more, each with a `health` field; see [source-first-protocol](source-first-protocol.md) Phase 3);
|
|
11
|
+
3. open source repositories when the registry does not carry the item; the local cache at `~/.claude/design-sources/` is the offline fallback, never proof of being current;
|
|
12
|
+
4. taste/motion sources (Impeccable, Taste Skill, Design Motion Principles, Vibe Code Components) and ready-made `DESIGN.md` files (Refero Styles, awesome-design-md);
|
|
13
|
+
5. open visual sources (Landing Love, Recent (ex-Godly), Design Spells, Refero, ScreensDesign, Spline, Unicorn Studio; Mobbin only with access);
|
|
14
14
|
6. with no web and no local cache: BLOCKED, per [web-access-and-evidence](web-access-and-evidence.md). Strategic hypotheses can shape the direction, never stand in for a component source.
|
|
15
15
|
|
|
16
16
|
## Mining Evidence
|
|
@@ -54,7 +54,9 @@ Use only public/open source resources, unless paid access is confirmed.
|
|
|
54
54
|
https://github.com/aliimam-in/aliimam.git
|
|
55
55
|
```
|
|
56
56
|
|
|
57
|
-
|
|
57
|
+
**Reference only: the repository has no license** (no LICENSE file at the root, checked 2026-10-15). Code without a license is all rights reserved: read it for the technique, never copy it into a project. Re-check before use; if a license appears, record it in the evidence log.
|
|
58
|
+
|
|
59
|
+
Use for studying: shaders, liquid wave, pixel grid, ripple shader, border glow, bento layouts, typewriter effects, canvas-based effects, experimental visual effects.
|
|
58
60
|
|
|
59
61
|
If the repository structure is unclear: inspect the docs first and do not assume component names without verifying.
|
|
60
62
|
|
|
@@ -64,6 +66,8 @@ If the repository structure is unclear: inspect the docs first and do not assume
|
|
|
64
66
|
https://github.com/WatermelonCorp/watermellon-registry.git
|
|
65
67
|
```
|
|
66
68
|
|
|
69
|
+
Registry: `"@watermelon": "https://registry.watermelon.sh/r/{name}.json"` → `npx shadcn@latest add @watermelon/<item>`.
|
|
70
|
+
|
|
67
71
|
Use for: SaaS components, dashboards, product UI, cards, app sections, UI blocks, product interfaces, functional layouts, startup components.
|
|
68
72
|
|
|
69
73
|
### StyleUI
|
|
@@ -74,6 +78,8 @@ https://github.com/heyfabrika/styleui.git
|
|
|
74
78
|
|
|
75
79
|
Use for: templates, landing page layouts, ready-made pages, installable sections, quick layout foundations, base pages.
|
|
76
80
|
|
|
81
|
+
As of 2026-10-15 the shadcn index marks `@styleui` as **degraded** (sampled items fail validation). Check the item's `health` before relying on it and prefer another source when it is still degraded.
|
|
82
|
+
|
|
77
83
|
### Componentry
|
|
78
84
|
|
|
79
85
|
- Site: https://componentry.dev/ (free, open source, Vercel OSS Program)
|
|
@@ -163,18 +169,6 @@ https://github.com/kylezantos/design-motion-principles.git
|
|
|
163
169
|
|
|
164
170
|
Use for: easing, timing, scroll motion, reveal logic, microinteraction rules, motion hierarchy, animation duration, element entrance and exit, avoiding chaotic animation, motion consistency.
|
|
165
171
|
|
|
166
|
-
### MotionSites
|
|
167
|
-
|
|
168
|
-
```text
|
|
169
|
-
https://github.com/aayushsoam/motionsites.ai.git
|
|
170
|
-
```
|
|
171
|
-
|
|
172
|
-
Classification: visual reference, motion reference, prompt/idea library, inspiration source for hero, scroll storytelling, and animations.
|
|
173
|
-
|
|
174
|
-
**Do not treat MotionSites as a primary source of installable components.** If a repository is available, it can be inspected only for reference and pattern research, not as a project dependency.
|
|
175
|
-
|
|
176
|
-
Use for: motion references, animated landing ideas, hero prompts, scroll storytelling, cinematic web sections, motion examples, animation direction.
|
|
177
|
-
|
|
178
172
|
### Vibe Code Components
|
|
179
173
|
|
|
180
174
|
```text
|
|
@@ -187,7 +181,7 @@ Classification: visual reference, prompt source, component inspiration, vibe cod
|
|
|
187
181
|
|
|
188
182
|
Use for: vibe coding references, prompt ideas, component inspiration, UI patterns, visual exploration, section ideas, quick visual direction, modern components.
|
|
189
183
|
|
|
190
|
-
> **Important rule:**
|
|
184
|
+
> **Important rule:** Vibe Code Components can appear under `Reference Sources` and `Visual Inspiration Sources`, but must not be treated as primary implementation sources like React Bits, Cult UI, Watermelon, or StyleUI.
|
|
191
185
|
|
|
192
186
|
## Visual Inspiration Sources
|
|
193
187
|
|
|
@@ -201,9 +195,9 @@ Best for researching: animated landing pages, scroll effects, WebGL, GSAP, Frame
|
|
|
201
195
|
|
|
202
196
|
When to use: the project needs animated landing page inspiration, the user wants something modern/dynamic, the skill needs to understand scroll rhythm and transitions.
|
|
203
197
|
|
|
204
|
-
### 2. Godly
|
|
198
|
+
### 2. Recent (formerly Godly)
|
|
205
199
|
|
|
206
|
-
URL: `https://
|
|
200
|
+
URL: `https://recent.design/` (the old Godly address redirects here)
|
|
207
201
|
|
|
208
202
|
Best for researching: premium sites, visual composition, typography, art direction, editorial layout, high-end aesthetics, digital brand references.
|
|
209
203
|
|
|
@@ -240,8 +234,11 @@ Work within the free plan. Respect limits and the watermark. Do not assume a pai
|
|
|
240
234
|
### 6b. Refero
|
|
241
235
|
|
|
242
236
|
- https://refero.design/ — real app and site UI/UX inspiration, by screen and by flow
|
|
243
|
-
- Use like Mobbin: visual reference of real patterns, not a code source
|
|
237
|
+
- Use like Mobbin: visual reference of real patterns, not a code source. The free plan opens about 3% of the library
|
|
238
|
+
- **Refero MCP: paid** (Pro plan, about €10/month, refero.design/pricing). Out of the main flow; use only if the user already pays for it
|
|
244
239
|
- **Refero Styles** (https://styles.refero.design/, free beta): a library of `DESIGN.md` files extracted from real sites — palette, typography, spacing, motion, and component patterns in a single markdown file. Search by brand/mood/color, copy the DESIGN.md, and paste it into the agent's context. For concrete visual direction, prioritize this over pure visual inspiration (screenshots)
|
|
240
|
+
- **awesome-design-md** (https://github.com/VoltAgent/awesome-design-md, MIT): 84 brand `DESIGN.md` files in the repo, one folder per brand (`design-md/<brand>/DESIGN.md`). Read the raw file by path; it is versionable by commit SHA, unlike a web page
|
|
241
|
+
- **Extract from a live site** when neither library has the reference: `npx -y dembrandt@0.39.2 <url> --design-md` (MIT, local, no key) writes `output/<domain>/DESIGN.md` from the site's computed styles. The tokens are a measurement of that site, not a license to copy its brand
|
|
245
242
|
|
|
246
243
|
### 6. Mobbin
|
|
247
244
|
|
|
@@ -251,9 +248,11 @@ Best for researching: real UX, app flows, onboarding, pricing pages, dashboards,
|
|
|
251
248
|
|
|
252
249
|
Rule: Mobbin may require login/payment. Use only if there is access, public previews, or references provided by the user. Do not depend on Mobbin in the main flow.
|
|
253
250
|
|
|
254
|
-
|
|
251
|
+
**Mobbin MCP: paid** (Pro plan only, about US$10/month, mobbin.com/mcp). Same rule: only when the user already has it.
|
|
252
|
+
|
|
253
|
+
### 7. ScreensDesign
|
|
255
254
|
|
|
256
|
-
|
|
255
|
+
URL: `https://screensdesign.com/` (DesignVault now redirects here; treat them as one source)
|
|
257
256
|
|
|
258
257
|
Best for researching: mobile onboarding, paywalls, app screens, subscription flows, conversion-focused screens, app UX.
|
|
259
258
|
|
|
@@ -262,6 +261,7 @@ Rule: full use may require a plan/payment. Use only when there is access or as a
|
|
|
262
261
|
### Sources the user can provide manually
|
|
263
262
|
|
|
264
263
|
- **Screenshots, videos, Figma, Behance, Dribbble, competitor sites**: treat as a high-priority source. The user's reference is worth more than a generic catalog.
|
|
264
|
+
- **A Figma file from the client**: read it through the Framelink MCP (`figma-developer-mcp`, MIT) with the user's own free personal access token. Optional, only when a file exists; the official Figma MCP needs a paid seat for real use and stays out of the flow.
|
|
265
265
|
- **Components or code snippets the user pastes into the chat**: treat as the authoritative base for style, pattern, and direction.
|
|
266
266
|
- **Premium libraries the user declares they have access to** (React Bits Pro, Cult UI Pro, Skiper UI premium, Mobbin, ScreensDesign Pro, etc.): the skill **does not assume this access**, but if the user confirms it, it may be used.
|
|
267
267
|
|
package/src/skills-lib/wizz-premium-landing-ui-researcher/references/source-first-protocol.md
CHANGED
|
@@ -18,11 +18,11 @@ Choose sources based on the effect needed, using [component-sources](component-s
|
|
|
18
18
|
|---|---|
|
|
19
19
|
| Animated text, backgrounds, hover, particles | React Bits, Componentry |
|
|
20
20
|
| Marketing sections, cards, buttons | Cult UI, public shadcn registries |
|
|
21
|
-
| Shader, liquid/ripple, experimental WebGL | Ali Imam
|
|
21
|
+
| Shader, liquid/ripple, experimental WebGL | Compatible public examples; Ali Imam only to study the technique (no license) |
|
|
22
22
|
| Dashboard and data visualization | Watermelon UI, Bklit UI |
|
|
23
23
|
| Base layout | StyleUI, existing components |
|
|
24
24
|
| Carousel | Embla, shadcn/ui |
|
|
25
|
-
| Visual direction and reference motion | Sites provided by the user, Landing Love,
|
|
25
|
+
| Visual direction and reference motion | Sites provided by the user, Landing Love, Recent, Design Spells, Refero Styles, awesome-design-md |
|
|
26
26
|
|
|
27
27
|
The set of "non-trivial components" is not improvised here: it is the list of open needs in `design-state.yaml` (produced by `wizz-design-needs`). With no state file, derive it from the approved section structure and say you did, so the gap is visible.
|
|
28
28
|
|
|
@@ -36,7 +36,19 @@ For each open need:
|
|
|
36
36
|
|
|
37
37
|
Paid components only go in with already-authorized access/cost. Inspiration sites are not a code source and don't grant a copy license.
|
|
38
38
|
|
|
39
|
-
## Phase 3:
|
|
39
|
+
## Phase 3: Live registry first, cache as fallback
|
|
40
|
+
|
|
41
|
+
Most sources are shadcn registries. Read them live instead of cloning:
|
|
42
|
+
|
|
43
|
+
1. **Check the index.** `https://ui.shadcn.com/r/registries.json` lists 400+ registries, each with its URL template and a `health` field. One line answers whether a source is usable today:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
curl -s https://ui.shadcn.com/r/registries.json | node -e 'const r=JSON.parse(require("fs").readFileSync(0,"utf8"));for(const x of r)if(["@react-bits","@cult-ui","@watermelon","@componentry","@bklit","@skiper-ui","@styleui"].includes(x.name))console.log(x.name,x.health?.status,x.url)'
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
`healthy` → use it. `degraded` → the registry answers but sampled items fail validation: prefer another source, or open the exact item and say it is from a degraded registry. Missing from the index → the source is a plain repo; go to step 3.
|
|
50
|
+
2. **Read the item.** Replace `{name}` in the URL template and fetch the JSON: it carries the files, dependencies and registry dependencies, which is the evidence the gate asks for. When the shadcn MCP is configured (`npx shadcn@latest mcp init`), it does the same lookup for you.
|
|
51
|
+
3. **Repos outside the index** (and offline work) use the local cache.
|
|
40
52
|
|
|
41
53
|
An existing design cache (for example `~/.claude/design-sources/`) can be inspected. Don't treat it as up to date just because it exists:
|
|
42
54
|
|
|
@@ -3,12 +3,13 @@
|
|
|
3
3
|
|
|
4
4
|
## Component / Code Sources
|
|
5
5
|
|
|
6
|
+
- shadcn registry index (400+ registries with a `health` field): https://ui.shadcn.com/r/registries.json
|
|
6
7
|
- React Bits: https://github.com/DavidHDev/react-bits.git
|
|
7
8
|
- Cult UI Docs: https://www.cult-ui.com/docs
|
|
8
9
|
- Cult UI GitHub: https://github.com/nolly-studio/cult-ui
|
|
9
|
-
- Ali Imam: https://github.com/aliimam-in/aliimam.git
|
|
10
|
-
- Watermelon UI: https://github.com/WatermelonCorp/watermellon-registry.git
|
|
11
|
-
- StyleUI: https://github.com/heyfabrika/styleui.git
|
|
10
|
+
- Ali Imam (no license: reference only, do not copy): https://github.com/aliimam-in/aliimam.git
|
|
11
|
+
- Watermelon UI: https://github.com/WatermelonCorp/watermellon-registry.git — registry `@watermelon` at https://registry.watermelon.sh/r/{name}.json
|
|
12
|
+
- StyleUI (registry degraded on 2026-10-15, check `health`): https://github.com/heyfabrika/styleui.git
|
|
12
13
|
- Skiper UI command: `npx shadcn add @skiper-ui/skiper40`
|
|
13
14
|
- Bklit UI (shadcn charts, MIT, free): https://github.com/bklit/bklit-ui — `npx shadcn@latest add @bklit/<chart>`
|
|
14
15
|
- Componentry (animated React, free/open source, Vercel OSS): https://componentry.dev/
|
|
@@ -25,18 +26,23 @@
|
|
|
25
26
|
- Impeccable: https://github.com/pbakaus/impeccable.git
|
|
26
27
|
- Taste Skill: https://github.com/Leonxlnx/taste-skill.git
|
|
27
28
|
- Design Motion Principles: https://github.com/kylezantos/design-motion-principles.git
|
|
28
|
-
- MotionSites: https://github.com/aayushsoam/motionsites.ai.git
|
|
29
29
|
- Vibe Code Components: https://vibecodecomponents.com/
|
|
30
30
|
|
|
31
31
|
## Visual Inspiration Sources
|
|
32
32
|
|
|
33
33
|
- Landing Love: https://www.landing.love/
|
|
34
|
-
- Godly: https://
|
|
34
|
+
- Recent (formerly Godly): https://recent.design/
|
|
35
35
|
- Design Spells: https://www.designspells.com/
|
|
36
36
|
- Spline: https://spline.design/
|
|
37
37
|
- Unicorn Studio: https://www.unicorn.studio/
|
|
38
|
-
- Mobbin: https://mobbin.com/
|
|
39
|
-
- Refero (UI/UX inspiration from real apps/sites): https://refero.design/
|
|
38
|
+
- Mobbin (MCP is paid): https://mobbin.com/
|
|
39
|
+
- Refero (UI/UX inspiration from real apps/sites; MCP is paid): https://refero.design/
|
|
40
40
|
- Refero Styles (free DESIGN.md for agent context): https://styles.refero.design/
|
|
41
|
+
- awesome-design-md (84 brand DESIGN.md, MIT): https://github.com/VoltAgent/awesome-design-md
|
|
41
42
|
- ScreensDesign: https://screensdesign.com/
|
|
42
|
-
|
|
43
|
+
|
|
44
|
+
## Extraction and validation (CLI, local, no key)
|
|
45
|
+
|
|
46
|
+
- dembrandt (tokens and DESIGN.md from a live site, MIT): https://github.com/dembrandt/dembrandt — `npx -y dembrandt@0.39.2 <url> --design-md`
|
|
47
|
+
- DESIGN.md spec and lint (Apache-2.0): https://github.com/google-labs-code/design.md — `npx -y @google/design.md@0.4.0 lint DESIGN.md`
|
|
48
|
+
- Framelink Figma MCP (optional, client Figma file, free personal token): https://github.com/GLips/Figma-Context-MCP
|
package/src/skills-lib/wizz-premium-landing-ui-researcher/references/web-access-and-evidence.md
CHANGED
|
@@ -10,10 +10,11 @@ A tool you do not see is not a tool you do not have. In a subagent, the web tool
|
|
|
10
10
|
|
|
11
11
|
1. **Load the web tools.** On Claude Code, WebSearch and WebFetch are deferred: load them with `ToolSearch` (`select:WebSearch,WebFetch`) before deciding they are missing. Do the same for an Exa or scrapling MCP if the session lists one. On other platforms, use that platform's native web search and fetch.
|
|
12
12
|
2. **Fallbacks, in order:** `curl -sL <url>` through the shell (raw HTML, registry JSON, `raw.githubusercontent.com` source files), then `agent-browser` (also the tool for watching hover and motion live).
|
|
13
|
-
3. **
|
|
14
|
-
4. **
|
|
13
|
+
3. **Live registry index:** `curl -s https://ui.shadcn.com/r/registries.json` tells which registries answer today (`health` per registry). A registry item JSON read live is full evidence: files, dependencies and date. Details in [source-first-protocol](source-first-protocol.md) Phase 3.
|
|
14
|
+
4. **Local source cache (offline fallback):** `~/.claude/design-sources/` holds real repositories (React Bits, Cult UI, Ali Imam, Watermelon, StyleUI). Reading a file there counts as evidence, as long as you record the path and the revision (`git -C <repo> rev-parse --short HEAD`) and say the cache may be behind the remote. Ali Imam has no license: study only, never copy.
|
|
15
|
+
5. **Record the outcome** in one line before mining: which access worked (`web`, `curl`, `agent-browser`, `registry index`, `cache only`) and which failed, with the error.
|
|
15
16
|
|
|
16
|
-
If none of
|
|
17
|
+
If none of them works, stop and return:
|
|
17
18
|
|
|
18
19
|
```text
|
|
19
20
|
BLOCKED: no web access and no local source cache.
|
|
@@ -20,7 +20,7 @@ You are the **Director / entry point** — not the orchestrator (that's `wizz-ma
|
|
|
20
20
|
|
|
21
21
|
**Installation scope note:** this is the only skill in the catalog where **global** installation (`~/.claude/skills/wizz-router`) is the operationally correct default, not an exception to the "prefer local" rule (`skills-registry.yaml`, Installation Doctrine, rule 1) — its reason for existing is to route even outside a Wizz project. It stays in sync with the global `wizz-router-enforce.js` hook via `npm run sync:global`.
|
|
22
22
|
|
|
23
|
-
**Token economy:** the `rtk-rewrite.sh` hook already handles RTK automatically (don't run `rtk --version` on every routing). Before reading raw files, prefer `/cerebro ver` or a specific `grep`.
|
|
23
|
+
**Token economy:** the `rtk-rewrite.sh` hook already handles RTK automatically (don't run `rtk --version` on every routing). Before reading raw files, prefer `/wizz-cerebro ver` or a specific `grep`.
|
|
24
24
|
|
|
25
25
|
## Triage and delegation (the Director's core job)
|
|
26
26
|
|
|
@@ -72,7 +72,7 @@ This gate does NOT fire for an open-scope request. "My site is bad, sort it out"
|
|
|
72
72
|
|
|
73
73
|
**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**.
|
|
74
74
|
|
|
75
|
-
**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.)
|
|
75
|
+
**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.)
|
|
76
76
|
|
|
77
77
|
**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.
|
|
78
78
|
|
|
@@ -105,4 +105,4 @@ When detecting "auditoria completa / revisa tudo / 360 / análise geral", follow
|
|
|
105
105
|
|
|
106
106
|
## Memory Duty (at the end)
|
|
107
107
|
|
|
108
|
-
After non-obvious bugs, architecture decisions, gotchas, or user corrections: record them in the project's `CLAUDE.md` ("Learnings" section) and in Cerebro (`/cerebro decisao` or `/cerebro salvar`). Remind the user if relevant.
|
|
108
|
+
After non-obvious bugs, architecture decisions, gotchas, or user corrections: record them in the project's `CLAUDE.md` ("Learnings" section) and in Cerebro (`/wizz-cerebro decisao` or `/wizz-cerebro salvar`). Remind the user if relevant.
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `_wizz/`) — there the router fires the skill on its own. **Inside a Wizz project** it can also be consulted as a CAPABILITY INDEX, to discover a relevant capability the user didn't name (e.g. "I want a carousel" → `wizz-canvas-design`); but delegation still happens through the normal SKILL.md dispatch (area agent / maestro) — the table never fires a skill directly inside a Wizz project.
|
|
4
4
|
|
|
5
|
-
**Existence check:** before offering any skill, confirm it exists in the environment (the session's skill catalog or `ls ~/.claude/skills`); if it doesn't exist, don't offer it: use the missing-skill protocol (`find-skills`).
|
|
5
|
+
**Existence check:** before offering any skill, confirm it exists in the environment (the session's skill catalog or `ls ~/.claude/skills`); if it doesn't exist, don't offer it: use the missing-skill protocol (`wizz-find-skills`).
|
|
6
6
|
|
|
7
7
|
## Technical Area — Backend / Data / Infra
|
|
8
8
|
|
|
@@ -15,8 +15,8 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
15
15
|
| Auth, secrets, tokens, OAuth, JWT, Clerk, permissions | `wizz-auth-and-secrets` + `wizz-web-security` | 1 |
|
|
16
16
|
| Dependencies, packages, vulnerabilities, npm audit | `wizz-database-and-deps` | 2 |
|
|
17
17
|
| Security, XSS, CSRF, SQLi, IDOR, OWASP, rate limit, CORS, clickjacking, PII in the response, user enumeration, headers | `wizz-web-security` + `wizz-auth-and-secrets` | 1 |
|
|
18
|
-
| Full-app security audit/pentest, "audit security", "pentest", "find vulnerabilities", pre-release scan | `security-audit-pentest` | 1 |
|
|
19
|
-
| **Autonomous, offensive** pentest that actually runs the app and proves each finding with a real PoC | CLI `strix` (qa registry). CONDITIONAL, never the default: only on an app the user owns/is authorized to test, and only when they ask for validated exploitation rather than a review. Start from `security-audit-pentest` | 2 |
|
|
18
|
+
| Full-app security audit/pentest, "audit security", "pentest", "find vulnerabilities", pre-release scan | `wizz-security-audit-pentest` | 1 |
|
|
19
|
+
| **Autonomous, offensive** pentest that actually runs the app and proves each finding with a real PoC | CLI `strix` (qa registry). CONDITIONAL, never the default: only on an app the user owns/is authorized to test, and only when they ask for validated exploitation rather than a review. Start from `wizz-security-audit-pentest` | 2 |
|
|
20
20
|
| Error monitoring, crash/exception triage, releases and source maps in Sentry | CLI `sentry-cli` (architect registry). CONDITIONAL: only if the project ALREADY uses Sentry (`SENTRY_DSN` in env, `sentry.properties`, or `@sentry/` in package.json) and it's at production stage — never propose adopting Sentry from this row | 2 |
|
|
21
21
|
| Launch-readiness audit, "is it ready to launch?", broad release checklist (technical, security, SEO, analytics, content, legal, infra), "what's missing before going to production" | `wizz-launch-readiness` | 1 |
|
|
22
22
|
| Desktop, Electron, contextIsolation, code signing | `wizz-desktop-security` | 2 |
|
|
@@ -44,6 +44,7 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
44
44
|
| Design, UI, visual, component, style, palette, typography, design system | `wizz-ui-ux-pro-max` + `wizz-ui-component-curator` | 1 |
|
|
45
45
|
| "What do I need to research for this site", turning a brief into the list of references/effects/components to mine, before any research | `wizz-design-needs` (research map in design-state.yaml; the miners then run one need per pass) | 1 |
|
|
46
46
|
| Turn a design into React/Vite components (Stitch MCP output) | `wizz-react-components` | 2 |
|
|
47
|
+
| "I want the same colors and fonts as site X": measure an existing reference site and extract its real palette, type, spacing and radius into a DESIGN.md | CLI `dembrandt` (designer registry; `npx -y dembrandt@0.39.2 <url> --design-md`) — measures, does not decide; a new identity with no reference site is `wizz-decision-maker` | 2 |
|
|
47
48
|
| Review/audit NATIVE UI (iOS/macOS: SwiftUI, Flutter, React Native, Tauri, Electron) against the Apple HIG and Liquid Glass | CLI `apple-design` (designer registry) — covers what `wizz-taste-skill` declares out of scope; for web UI it's `wizz-ui-ux-pro-max` instead | 2 |
|
|
48
49
|
| Landing page, hero, motion, 3D animation, conversion, visual CRO | `wizz-premium-landing-ui-researcher` | 1 |
|
|
49
50
|
| Design quality, anti-slop, visual taste, aesthetics, critical eye | `wizz-taste-skill` (if installed) | 1 |
|
|
@@ -54,8 +55,8 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
54
55
|
| Generate an image via code: carousel, quote card, infographic (editable PNG/PDF), generative hero background/texture | `wizz-canvas-design` + `wizz-algorithmic-art` | 2 |
|
|
55
56
|
| **Video with audio, narration, SFX, or synced captions** (film assembly) | `wizz-remotion-best-practices` (Remotion assembles; frame timing). Pipeline rule: HyperFrames draws the mute screens, Remotion assembles the film — don't use hyperframes to position audio/captions (~2.76s drift and CSS leaking between screens in production) | 1 |
|
|
56
57
|
| Draw a video SCREEN/scene in HTML/CSS, mute visual (app mockup, animated chart, title, loop; HTML→MP4) | CLI `hyperframes` (designer registry; `npx skills add heygen-com/hyperframes`) — mute screens only; assembly with audio goes to Remotion (line above) | 2 |
|
|
57
|
-
| Word-by-word timestamps for TTS narration (sync captions/cuts/animation with speech) | `ctc-align` (designer registry; single source of timing, replaces Whisper) | 2 |
|
|
58
|
-
| Which short-video STYLE to copy, from the inventory of the material (real person, voice only, B-roll, screens, product), with the recipe measured on
|
|
58
|
+
| Word-by-word timestamps for TTS narration (sync captions/cuts/animation with speech) | `wizz-ctc-align` (designer registry; single source of timing, replaces Whisper) | 2 |
|
|
59
|
+
| Which short-video STYLE to copy, from the inventory of the material (real person, voice only, B-roll, screens, product), with the recipe measured on 110 real videos (lyric video, kinetic typography and the UI-only app video "ui-morph" included); "a video of my app moving", "edit it in the style of", "the video looks amateur" | `wizz-video-styles` (designer registry; picks the style before voice, timing, effects and assembly) | 2 |
|
|
59
60
|
| Effects and sound of a short vertical video (ad or Reels): which effect goes where and when not, which SFX for each event and at what level, ducking, master loudness, safe-zone/density/excess/rhythm gates | `wizz-video-effects` (designer registry; decides the effects, Remotion assembles them) | 2 |
|
|
60
61
|
| **Find B-roll / inserts / cutaways / supporting footage** for a video or Reel (real footage of the fact, person, product, news item or screen the script names; YouTube/Instagram/TikTok/Pexels/Pixabay/Commons/NASA) | CLI `get-brolls` (designer registry; **macOS**, global `skills add` + its own `install.sh`; needs ffmpeg with drawtext, Node 22+, Python 3.11+). Ends in a Storyboard the HUMAN approves — the agent never self-approves. Stock only when the user explicitly asks for stock | 1 |
|
|
61
62
|
| **Edit/cut video** (cuts, selects, roughcut) | CLI `buttercut` (designer registry; **Apple Silicon only**, clone-and-run in the project, heavy deps) | 1 |
|
|
@@ -72,7 +73,7 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
72
73
|
| Paid ads, ads, Google Ads, Meta Ads, TikTok Ads, paid media | `wizz-paid-ads` + `wizz-ad-creative` + `wizz-analytics-tracking` | 1 |
|
|
73
74
|
| Wrong pixel/UTM/attribution, "sales don't match the ads manager", "where is the funnel leaking", inflated organic traffic, checking tracking before launching a campaign | `wizz-tracking-audit` (+ `wizz-analytics-tracking` if it's a SaaS/product) | 1 |
|
|
74
75
|
| Feature launch, product launch, go-to-market | `wizz-launch-strategy` + `wizz-social-content` + `wizz-email-sequence` | 1 |
|
|
75
|
-
| Site ready to go live, SITE pre-launch, "review before deploy", go-live checklist, or a specific pre-launch item (og:image/link preview, FAQ with schema, robots.txt, LGPD, alt text) | `site-launch-kit` | 1 |
|
|
76
|
+
| Site ready to go live, SITE pre-launch, "review before deploy", go-live checklist, or a specific pre-launch item (og:image/link preview, FAQ with schema, robots.txt, LGPD, alt text) | `wizz-site-launch-kit` | 1 |
|
|
76
77
|
| Price, plans, pricing, monetization | `wizz-pricing-strategy` + `wizz-paywall-upgrade-cro` | 1 |
|
|
77
78
|
| Churn, retention, cancellation, NPS | `wizz-churn-prevention` + `wizz-revops` | 1 |
|
|
78
79
|
| Page conversion, CRO, funnel optimization | `wizz-page-cro` + `wizz-copywriting` + `wizz-form-cro` | 1 |
|
|
@@ -93,7 +94,7 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
93
94
|
| Free lead-capture tool | `wizz-free-tool-strategy` | 2 |
|
|
94
95
|
| A/B test, variations, conversion experiments | `wizz-ab-test-setup` + `wizz-analytics-tracking` | 2 |
|
|
95
96
|
| Copywriting, copy, persuasion, sales text | `wizz-copywriting` + `wizz-humanizer` | 1 |
|
|
96
|
-
| Offer audience research, VoC, angle matrix, info-product lexicon | `pesquisa-de-publico-do-piva` | 1 |
|
|
97
|
+
| Offer audience research, VoC, angle matrix, info-product lexicon | `wizz-pesquisa-de-publico-do-piva` | 1 |
|
|
97
98
|
| Forge an offer, create an irresistible offer, unique mechanism, bonus, guarantee | `wizz-offer-forge` + `wizz-pricing-strategy` | 1 |
|
|
98
99
|
| Market research, competitive intelligence | `deep-research` (external plugin — only if installed) | 2 |
|
|
99
100
|
| Scrape/crawl the web for market research, lead prospecting or competitive intel (anti-bot bypass, adaptive parsing) | MCP `scrapling` (growth registry) — the collection layer under the research rows above | 2 |
|
|
@@ -102,7 +103,7 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
102
103
|
|
|
103
104
|
| Intent / keywords | Skills to offer | Priority |
|
|
104
105
|
|---|---|---|
|
|
105
|
-
| What was decided, past context, learnings, history | `cerebro` (/ver or /dia) | 1 |
|
|
106
|
+
| What was decided, past context, learnings, history | `wizz-cerebro` (/ver or /dia) | 1 |
|
|
106
107
|
|
|
107
108
|
---
|
|
108
109
|
|
|
@@ -110,7 +111,7 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
110
111
|
|
|
111
112
|
When no installed skill/MCP covers the request, **classify what's missing** (skill = knowledge/flow; MCP = real access to a tool/API):
|
|
112
113
|
|
|
113
|
-
**Missing a SKILL:** inform → invoke `find-skills` → `npx skills find "<term>"` → present 2-3 candidates with source → propose `npx skills add <pkg>` with confirmation → route again. Sources: anthropics/skills, superpowers-marketplace, skill-codex, claude-mem, skills.sh. **Review the SKILL.md and any `scripts/` before installing; prefer known owners.**
|
|
114
|
+
**Missing a SKILL:** inform → invoke `wizz-find-skills` → `npx skills find "<term>"` → present 2-3 candidates with source → propose `npx skills add <pkg>` with confirmation → route again. Sources: anthropics/skills, superpowers-marketplace, skill-codex, claude-mem, skills.sh. **Review the SKILL.md and any `scripts/` before installing; prefer known owners.**
|
|
114
115
|
|
|
115
116
|
**Missing an MCP:** inform → `claude mcp list` → check `skills-registry.yaml` (`mcps:`/`mcp_utility:`, with a ready `server`) → propose `claude mcp add <id> [-e VAR=$VAR] -- <command> [args]`. Secrets always via env/placeholder, never a real token.
|
|
116
117
|
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: security-audit-pentest
|
|
2
|
+
name: wizz-security-audit-pentest
|
|
3
3
|
description: >
|
|
4
4
|
Adversarial 5-stage security audit with standardized output (markdown table, cutoff ruler,
|
|
5
5
|
concrete payload per finding). Use when the request is to audit/pentest an entire app, review security
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
---
|
|
2
|
-
name: site-launch-kit
|
|
2
|
+
name: wizz-site-launch-kit
|
|
3
3
|
description: "Operational pre-launch website checklist in 15 corrective rounds: main CTA above the fold, mobile sticky bar, response-time promise, real social proof, decision-focused FAQ with FAQPage, real images (not stock), address and directions, unique titles, Open Graph, breadcrumbs, alt text, local business schema, robots/sitemap, LGPD privacy policy and terms, event measurement. Use when the site is ready or nearly ready to go live: 'vamos lançar', 'subir o site', 'revisar antes do deploy', 'checklist de lançamento', 'pré-go-live', 'o site tá pronto?', or when the request is one of the individual items (e.g. 'arruma a prévia do WhatsApp', 'coloca FAQ com schema', 'confere robots.txt antes de subir'). Runs AFTER the site is built and BEFORE deploy. Central rule: no invented business data goes into the site; whatever is missing becomes a placeholder and goes into PENDING ITEMS."
|
|
4
4
|
---
|
|
5
5
|
|
|
@@ -40,7 +40,7 @@ Do not ask the user to describe the style unless the project has no inspectable
|
|
|
40
40
|
|
|
41
41
|
## 2. Search and inspect public sources
|
|
42
42
|
|
|
43
|
-
Start with existing project components. Then search the public sources. The full authorized list (React Bits, Cult UI,
|
|
43
|
+
Start with existing project components. Then search the public sources. The full authorized list (React Bits, Cult UI, Watermelon, StyleUI, Skiper UI, Bklit UI, Componentry, shadcn/ui, Ali Imam for study only, plus the reference galleries) lives in one place: [component-sources](../wizz-premium-landing-ui-researcher/references/component-sources.md). Read it instead of relying on memory. Check which registries are healthy today in the live index (`https://ui.shadcn.com/r/registries.json`, see [source-first-protocol](../wizz-premium-landing-ui-researcher/references/source-first-protocol.md) Phase 3). Compare at least two suitable sources per need.
|
|
44
44
|
|
|
45
45
|
Before the first query, open the access as described in [web-access-and-evidence](../wizz-premium-landing-ui-researcher/references/web-access-and-evidence.md): load the web tools (on Claude Code, WebSearch and WebFetch are deferred and need `ToolSearch`), then fall back to `curl`, `agent-browser` and the local source cache. Search with whatever that step opened: web search (Exa when configured, WebSearch otherwise), WebFetch, scrapling, and `agent-browser` to watch hover and motion live. A tool that errors or hangs is not the end of the research: record the failure, move to the next tool, and never stop without reporting what was and was not checked. With no web and no cache, return BLOCKED instead of recommending from memory.
|
|
46
46
|
|
|
@@ -9,7 +9,7 @@ A catalogue of effects is easy. What makes a video look professional is the **re
|
|
|
9
9
|
|
|
10
10
|
## Where it sits in the video pipeline
|
|
11
11
|
|
|
12
|
-
1. Script and narration exist; `ctc-align` gave word-by-word timestamps.
|
|
12
|
+
1. Script and narration exist; `wizz-ctc-align` gave word-by-word timestamps.
|
|
13
13
|
On a music-driven piece (lyric video over a song) the song is the narration: `scenes[]` start on the downbeats from `wizz-video-styles/scripts/beat_grid.py`, and the song's own hits count as the SFX budget already spent.
|
|
14
14
|
2. Screens were drawn silent (HyperFrames) or footage was sourced.
|
|
15
15
|
3. **This skill:** events → SFX and levels → effects anchored on breaths → budget → timeline JSON → (render in Remotion) → gates on the final MP4.
|
|
@@ -39,7 +39,7 @@ Requires Python 3 (stdlib only) and ffmpeg/ffprobe.
|
|
|
39
39
|
|
|
40
40
|
## Per piece
|
|
41
41
|
|
|
42
|
-
1. **Timeline.** Write the piece's timeline JSON ([references/data-contract.md](references/data-contract.md)): `words[]` from ctc-align, `scenes[]`, `elements[]`, and the safe-zone profile (`ad` or `organic`).
|
|
42
|
+
1. **Timeline.** Write the piece's timeline JSON ([references/data-contract.md](references/data-contract.md)): `words[]` from wizz-ctc-align, `scenes[]`, `elements[]`, and the safe-zone profile (`ad` or `organic`).
|
|
43
43
|
2. **Events to sounds.** List what happens in the narration as semantic events with their times, from the words: a price appears, a verdict lands, a message arrives. Map them with `res = sound.map_requests([(5.4, "verdict"), (7.1, "element_in")], cfg)` from `scripts/sound.py`; it returns the shots (file and `vol` from the config) plus the refusals, with the reason. Write the accepted shots into `sfx[]` with their `event`. Events that trigger an effect (a `verdict` triggers `shake`): pass `sound.effect_candidates(res)` through `budget.select(...)` from `scripts/budget.py` and write the accepted ones into `shakes[]`; no other step writes them.
|
|
44
44
|
3. **Effects on breaths.** `python3 scripts/fill_breaths.py TIMELINE --narration NARRATION.mp3 --visual LAYOUT_RENDER.mp4 --write` anchors punches and flashes on real speech breaths, runs every candidate through the budget, and sets scene transitions and cut sounds by speech pace. Without `--write` it only reports.
|
|
45
45
|
- `--narration` is required in practice: ctc-align words touch each other (each ends where the next starts), so `words[]` alone yields almost no breaths.
|
|
@@ -81,6 +81,6 @@ Full table, what each gate cannot see, and escape hatches: [references/gates.md]
|
|
|
81
81
|
|
|
82
82
|
- Assembling the film, captions layout, `<Audio>` API: `wizz-remotion-best-practices`.
|
|
83
83
|
- Drawing screens: HyperFrames.
|
|
84
|
-
- Word timestamps: `ctc-align`.
|
|
84
|
+
- Word timestamps: `wizz-ctc-align`.
|
|
85
85
|
- Script, hook wording and CTA wording: the copy or social area.
|
|
86
86
|
- Launch films with music and art direction: `wizz-huashu-design`.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Timeline data contract
|
|
2
2
|
|
|
3
|
-
The scripts in `scripts/` read and write one JSON object per piece: the **timeline**. It is the hand-off between whoever plans the edit (HyperFrames screens, `ctc-align` timing) and whoever renders the audio and effects (Remotion). Times are always **seconds from the start of the piece**, as floats. Every list is optional: an absent list is an empty list, never an error.
|
|
3
|
+
The scripts in `scripts/` read and write one JSON object per piece: the **timeline**. It is the hand-off between whoever plans the edit (HyperFrames screens, `wizz-ctc-align` timing) and whoever renders the audio and effects (Remotion). Times are always **seconds from the start of the piece**, as floats. Every list is optional: an absent list is an empty list, never an error.
|
|
4
4
|
|
|
5
5
|
Numbers that decide anything (gaps, ceilings, depths) are never in the timeline: they live in `effects.config.json` and are cited by key.
|
|
6
6
|
|
|
@@ -11,7 +11,7 @@ Numbers that decide anything (gaps, ceilings, depths) are never in the timeline:
|
|
|
11
11
|
| `fps` | int | `sound.py duck` | planner | render fps; default `frame.fps` of the config |
|
|
12
12
|
| `duration` | float | every check | planner | piece length; if absent, derived from the largest scene end (reports say so) |
|
|
13
13
|
| `safe_zone_profile` | string | `check_safe_zone.py`, `measure_density.py`, `fill_breaths.py` | planner | `organic` or `ad` (any key of `safe_zones`); overrides the config default for this piece |
|
|
14
|
-
| `words[]` | list | `sound.py duck`, `fill_breaths.py` | `ctc-align` | spoken words |
|
|
14
|
+
| `words[]` | list | `sound.py duck`, `fill_breaths.py` | `wizz-ctc-align` | spoken words |
|
|
15
15
|
| `scenes[]` | list | `check_excess.py`, `check_rhythm.py`, `fill_breaths.py` | planner, `fill_breaths.py` | screens |
|
|
16
16
|
| `sfx[]` | list | `sound.py duck`, `fill_breaths.py` | planner, `fill_breaths.py` | point sounds |
|
|
17
17
|
| `punches[]` | list | `check_excess.py`, `check_rhythm.py` | planner, `fill_breaths.py` | zoom punches |
|
|
@@ -40,7 +40,7 @@ Only `start` and `end` are required. Breaths are the gaps between words at least
|
|
|
40
40
|
}
|
|
41
41
|
```
|
|
42
42
|
|
|
43
|
-
- `transition`: `cut`, `whip`, `zoom` or any name the renderer knows. Anything other than `""` or `cut` counts as a `transition` event in the budget.
|
|
43
|
+
- `transition`: `cut`, `whip`, `zoom` or any name the renderer knows. Anything other than `""` or `cut` counts as a `transition` event in the budget. `fill_breaths.py` only fills scenes without a real transition (absent, `""` or `cut`); a transition the author declared is kept, and its `sfx` too when already set.
|
|
44
44
|
- `sfx` (optional): the cut sound, played at `start`. Same shape as an `sfx[]` entry without `at`.
|
|
45
45
|
|
|
46
46
|
### `sfx[]`
|
|
@@ -199,13 +199,27 @@ def pace_profile(index: int, wps: float, cfg: Config) -> str:
|
|
|
199
199
|
return "fast" if wps >= cfg.breaths.fast_speech_wps else "slow"
|
|
200
200
|
|
|
201
201
|
|
|
202
|
+
def declared_transition(scene: dict) -> bool:
|
|
203
|
+
"""True when the author chose a real transition (anything but absent, "" or
|
|
204
|
+
'cut', the same rule timeline.transitions uses). Those are kept."""
|
|
205
|
+
return scene.get("transition") not in (None, "", "cut")
|
|
206
|
+
|
|
207
|
+
|
|
202
208
|
def scene_updates(scenes: list[dict], words: list[dict], cfg: Config) -> list[tuple[dict, float]]:
|
|
203
|
-
"""(new scene dict, words per second) with transition and cut sound by pace.
|
|
209
|
+
"""(new scene dict, words per second) with transition and cut sound by pace.
|
|
210
|
+
A transition the author declared stays, and so does a cut sound already set:
|
|
211
|
+
pace only fills what is missing."""
|
|
204
212
|
out = []
|
|
205
213
|
for i, sc in enumerate(scenes):
|
|
206
214
|
start = float(sc["start"])
|
|
207
215
|
wps = words_per_second(words, start, start + float(sc.get("dur", 0.0)))
|
|
208
216
|
prof = cfg.breaths.pace_profiles[pace_profile(i, wps, cfg)]
|
|
217
|
+
if declared_transition(sc):
|
|
218
|
+
sfx = sc.get("sfx") or {"event": prof.sound_event,
|
|
219
|
+
"src": cfg.sound.src(prof.sound_event),
|
|
220
|
+
"vol": cfg.sound.event(prof.sound_event).vol}
|
|
221
|
+
out.append(({**sc, "sfx": sfx}, round(wps, 2)))
|
|
222
|
+
continue
|
|
209
223
|
ev = cfg.sound.event(prof.sound_event)
|
|
210
224
|
out.append(({**sc, "transition": prof.transition,
|
|
211
225
|
"sfx": {"event": prof.sound_event, "src": cfg.sound.src(prof.sound_event),
|
|
@@ -168,6 +168,26 @@ class TestPlan(unittest.TestCase):
|
|
|
168
168
|
self.assertTrue(out["punches"])
|
|
169
169
|
self.assertTrue(all("event" in s for s in out["sfx"]))
|
|
170
170
|
|
|
171
|
+
def test_declared_transition_is_kept(self):
|
|
172
|
+
whoosh = {"event": "block_cut", "src": "sfx/mine.mp3", "vol": 0.3}
|
|
173
|
+
data = {**self.DATA, "scenes": [
|
|
174
|
+
{"start": 0.0, "dur": 10.0, "transition": "zoom", "sfx": whoosh},
|
|
175
|
+
{"start": 10.0, "dur": 10.0, "transition": "whip"}]}
|
|
176
|
+
out = FB.apply(data, FB.plan(data, CFG, [], {}))
|
|
177
|
+
self.assertEqual([s["transition"] for s in out["scenes"]], ["zoom", "whip"])
|
|
178
|
+
self.assertEqual(out["scenes"][0]["sfx"], whoosh)
|
|
179
|
+
self.assertIn("sfx", out["scenes"][1])
|
|
180
|
+
|
|
181
|
+
def test_default_transition_is_filled(self):
|
|
182
|
+
for default in ("", "cut", None):
|
|
183
|
+
scene = {"start": 0.0, "dur": 10.0}
|
|
184
|
+
if default is not None:
|
|
185
|
+
scene["transition"] = default
|
|
186
|
+
data = {**self.DATA, "scenes": [scene]}
|
|
187
|
+
out = FB.apply(data, FB.plan(data, CFG, [], {}))
|
|
188
|
+
self.assertEqual(out["scenes"][0]["transition"],
|
|
189
|
+
CFG.breaths.pace_profiles["first"].transition)
|
|
190
|
+
|
|
171
191
|
def test_pace_profile(self):
|
|
172
192
|
f = CFG.breaths.fast_speech_wps
|
|
173
193
|
self.assertEqual(FB.pace_profile(0, 99.0, CFG), "first")
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: wizz-video-styles
|
|
3
|
-
description: Catalogue of short vertical video styles (Reels, Shorts, TikTok) measured on real high-reach videos, for any niche. Takes an inventory of the material the project actually has (a real person on camera, voice only, b-roll, app screens, a physical product), crosses it with niche and goal, picks the style to copy and hands over its recipe - rhythm, captions, palette, typography, motion vocabulary, music and SFX rules - plus a Remotion template when one exists and a licensed audio kit. Use when a video is about to be edited or planned and nobody has decided what it should look like, when someone says a video "looks amateur" or asks to copy a creator's style, or before wizz-video-effects and Remotion take over. Triggers - estilo do vídeo, editar no estilo de, copiar a edição de, que estilo usar no reel, referência de edição, catálogo de estilos, o vídeo ficou amador. Does not decide per-event SFX or gates (that is wizz-video-effects) and does not assemble the film (that is Remotion).
|
|
3
|
+
description: Catalogue of short vertical video styles (Reels, Shorts, TikTok) measured on real high-reach videos, for any niche. Takes an inventory of the material the project actually has (a real person on camera, voice only, b-roll, app screens, a physical product), crosses it with niche and goal, picks the style to copy and hands over its recipe - rhythm, captions, palette, typography, motion vocabulary, music and SFX rules - plus a Remotion template when one exists and a licensed audio kit. Use when a video is about to be edited or planned and nobody has decided what it should look like, when someone says a video "looks amateur" or asks to copy a creator's style, or before wizz-video-effects and Remotion take over. Triggers - estilo do vídeo, editar no estilo de, copiar a edição de, que estilo usar no reel, referência de edição, catálogo de estilos, o vídeo ficou amador, vídeo do app mexendo, anima o app num vídeo. Does not decide per-event SFX or gates (that is wizz-video-effects) and does not assemble the film (that is Remotion).
|
|
4
4
|
---
|
|
5
5
|
|
|
6
6
|
# wizz-video-styles: which style to copy, and its recipe
|
|
@@ -11,7 +11,7 @@ Every number in this skill was measured on a real public short ([references/rese
|
|
|
11
11
|
|
|
12
12
|
1. Script exists (social area, `wizz-social-content`).
|
|
13
13
|
2. **This skill:** inventory of the material, then style, then recipe.
|
|
14
|
-
3. Narration and word timing (the person's own recording or TTS, then `ctc-align`).
|
|
14
|
+
3. Narration and word timing (the person's own recording or TTS, then `wizz-ctc-align`).
|
|
15
15
|
4. Footage and screens: `get-brolls` for b-roll, HyperFrames for silent screens, real screenshots for app screens.
|
|
16
16
|
5. Effects and sound per event, plus gates: `wizz-video-effects`. Pass it this style's SFX density ceiling and music level.
|
|
17
17
|
6. Assembly in Remotion: invoke `wizz-remotion-best-practices`; copy the style's template from `assets/remotion/` when it has one.
|