wizz-method 2.18.0 → 2.19.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/package.json +5 -3
- package/removals.txt +10 -0
- package/skills-registry.yaml +50 -38
- package/src/bmm-skills/1-analysis/wizz-set-feature/SKILL.md +9 -9
- 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/{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-router/SKILL.md +3 -3
- package/src/skills-lib/wizz-router/references/routing-table-flat.md +9 -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-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/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
|
@@ -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 |
|
|
@@ -54,8 +54,8 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
54
54
|
| Generate an image via code: carousel, quote card, infographic (editable PNG/PDF), generative hero background/texture | `wizz-canvas-design` + `wizz-algorithmic-art` | 2 |
|
|
55
55
|
| **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
56
|
| 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
|
|
57
|
+
| 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 |
|
|
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 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
59
|
| 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
60
|
| **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
61
|
| **Edit/cut video** (cuts, selects, roughcut) | CLI `buttercut` (designer registry; **Apple Silicon only**, clone-and-run in the project, heavy deps) | 1 |
|
|
@@ -72,7 +72,7 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
72
72
|
| Paid ads, ads, Google Ads, Meta Ads, TikTok Ads, paid media | `wizz-paid-ads` + `wizz-ad-creative` + `wizz-analytics-tracking` | 1 |
|
|
73
73
|
| 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
74
|
| 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 |
|
|
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) | `wizz-site-launch-kit` | 1 |
|
|
76
76
|
| Price, plans, pricing, monetization | `wizz-pricing-strategy` + `wizz-paywall-upgrade-cro` | 1 |
|
|
77
77
|
| Churn, retention, cancellation, NPS | `wizz-churn-prevention` + `wizz-revops` | 1 |
|
|
78
78
|
| Page conversion, CRO, funnel optimization | `wizz-page-cro` + `wizz-copywriting` + `wizz-form-cro` | 1 |
|
|
@@ -93,7 +93,7 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
93
93
|
| Free lead-capture tool | `wizz-free-tool-strategy` | 2 |
|
|
94
94
|
| A/B test, variations, conversion experiments | `wizz-ab-test-setup` + `wizz-analytics-tracking` | 2 |
|
|
95
95
|
| 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 |
|
|
96
|
+
| Offer audience research, VoC, angle matrix, info-product lexicon | `wizz-pesquisa-de-publico-do-piva` | 1 |
|
|
97
97
|
| Forge an offer, create an irresistible offer, unique mechanism, bonus, guarantee | `wizz-offer-forge` + `wizz-pricing-strategy` | 1 |
|
|
98
98
|
| Market research, competitive intelligence | `deep-research` (external plugin — only if installed) | 2 |
|
|
99
99
|
| 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 +102,7 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
102
102
|
|
|
103
103
|
| Intent / keywords | Skills to offer | Priority |
|
|
104
104
|
|---|---|---|
|
|
105
|
-
| What was decided, past context, learnings, history | `cerebro` (/ver or /dia) | 1 |
|
|
105
|
+
| What was decided, past context, learnings, history | `wizz-cerebro` (/ver or /dia) | 1 |
|
|
106
106
|
|
|
107
107
|
---
|
|
108
108
|
|
|
@@ -110,7 +110,7 @@ Use this table to map skills/CLIs/MCPs directly **outside a Wizz project** (no `
|
|
|
110
110
|
|
|
111
111
|
When no installed skill/MCP covers the request, **classify what's missing** (skill = knowledge/flow; MCP = real access to a tool/API):
|
|
112
112
|
|
|
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.**
|
|
113
|
+
**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
114
|
|
|
115
115
|
**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
116
|
|
|
@@ -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
|
|
|
@@ -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.
|
|
@@ -368,6 +368,37 @@
|
|
|
368
368
|
"Shipping 16:9: every measured reference is horizontal; recompose for 9:16 with the keyword in the upper-middle and nothing in the bottom 20%."
|
|
369
369
|
],
|
|
370
370
|
"template": null
|
|
371
|
+
},
|
|
372
|
+
"ui-morph": {
|
|
373
|
+
"title": "UI morph: one shape, many UI states (twoclipping, verbove, AnnaCher)",
|
|
374
|
+
"needs": "The product's real screens or a list of 8 to 12 UI states that tell its story (button, loader, player, slider, toggle, tabs, chart, ⌘K, toast), one accent colour and a track around 120 BPM. Nobody on camera, no footage: everything is drawn in code (HyperFrames).",
|
|
375
|
+
"fits": "App and SaaS launches, a feature announcement, a product promo for the site or the store page, a portfolio piece. Strong on X and LinkedIn with a product audience; it shows the product working instead of describing it. Weak for teaching step by step or for anything that needs a face.",
|
|
376
|
+
"look": [
|
|
377
|
+
"One shape on screen the whole time, never cut: it becomes button, loader, player, slider, toggle, tabs, chart, ⌘K and toast, changing size, corners and colour (the same language as the iPhone Dynamic Island).",
|
|
378
|
+
"Warm light grey canvas (#EDEBE6), components in black and white, at most one accent colour; a dark variant (navy with one yellow) for a product film.",
|
|
379
|
+
"Real UI and real data: the product's own labels and numbers, never lorem ipsum or generic components.",
|
|
380
|
+
"A cursor drives every change with real clicks and drags; the camera zooms so each state fills the frame."
|
|
381
|
+
],
|
|
382
|
+
"palette": "Warm grey #EDEBE6 or beige #E6E2DA, black #111, white, plus ONE accent (orange, peach or yellow) used only where the eye must go. Dark variant: #0B1020 base, one yellow accent.",
|
|
383
|
+
"type": "One UI sans (Inter, Geist or the product's own font) in regular and semibold; mono only for a URL or a code line. No display fonts.",
|
|
384
|
+
"motion": [
|
|
385
|
+
"Every state grows out of the previous one by a spring (size, corner radius, colour), with at most one small overshoot; content swaps with a short blur.",
|
|
386
|
+
"Something happens on every beat; the state changes land on the downbeats of the beat grid (scripts/beat_grid.py), not on a hand-counted 120 BPM.",
|
|
387
|
+
"Build it as a pure function of time (seek(t)): closed-form springs, no CSS transitions or timers, so every frame renders the same. HyperFrames does this natively.",
|
|
388
|
+
"The last frame equals the first, so the piece loops."
|
|
389
|
+
],
|
|
390
|
+
"captions": "None. The text is the interface's own (button labels, track title, chart numbers). A single short line at most, in the UI font, when the product needs one sentence.",
|
|
391
|
+
"hook": "The first state already on screen at 0 s (a button or the brand pill) and the cursor arriving on the first beat. No logo intro, no title card.",
|
|
392
|
+
"cta": "The shape returns to the first state or closes on the brand pill with the URL in small mono under it, held 1 to 2 s.",
|
|
393
|
+
"music": "The track is the whole soundtrack: a continuous bed in 4 of 6 measured pieces, around -14 LUFS. Pick an electronic or lo-fi track with a clear kick so the beat grid is reliable.",
|
|
394
|
+
"sfx": "Sparse and tied to UI events: a soft click on a press, a low tick on a snap. The measured pieces range from none to a hit on most state changes; never whooshes on every move.",
|
|
395
|
+
"dont": [
|
|
396
|
+
"Cutting between screens: the moment it cuts it becomes a screen recording, not this style.",
|
|
397
|
+
"Bouncy easing, particles, glow, gradients on the UI chrome, icons with uneven stroke, dead time, template look.",
|
|
398
|
+
"Generic components instead of the product's real UI and numbers.",
|
|
399
|
+
"Shipping square or 16:9: every measured piece is 1:1 or 16:9; recompose for 9:16 with the shape in the upper-middle and nothing in the bottom 20 %."
|
|
400
|
+
],
|
|
401
|
+
"template": null
|
|
371
402
|
}
|
|
372
403
|
}
|
|
373
|
-
}
|
|
404
|
+
}
|
|
@@ -3568,5 +3568,215 @@
|
|
|
3568
3568
|
},
|
|
3569
3569
|
"lufs": "-10.7",
|
|
3570
3570
|
"formato": "16:9 (horizontal); adaptar para 9:16"
|
|
3571
|
+
},
|
|
3572
|
+
{
|
|
3573
|
+
"id": "x-twoclipping-2103273003555402193",
|
|
3574
|
+
"url": "https://x.com/twoclipping/status/2103273003555402193",
|
|
3575
|
+
"channel": "zero",
|
|
3576
|
+
"views": "1164424",
|
|
3577
|
+
"nicho": "a",
|
|
3578
|
+
"idioma": "en",
|
|
3579
|
+
"style": "ui-morph",
|
|
3580
|
+
"estilo_visual": "Uma forma preta só sobre cinza quente claro, que vira botão, player, slider de volume, toggle, abas, gráfico, ⌘K e toast, e volta ao botão do início (loop)",
|
|
3581
|
+
"motion_transicoes": "Sem corte nenhum: cada estado nasce do anterior por mola (tamanho, cantos, cor); o conteúdo troca com blur curto; um cursor clica e arrasta de verdade",
|
|
3582
|
+
"legenda": "Nenhuma; o texto é o da própria interface (rótulos de botão, título da faixa, número do gráfico)",
|
|
3583
|
+
"hook_0_3s": "Botão \"Generate\" parado e o cursor chegando nele no primeiro tempo",
|
|
3584
|
+
"paleta": "cinza quente #EDEBE6, preto, branco; um gradiente só na capa do player",
|
|
3585
|
+
"tipografia": "uma sans de interface (tipo Inter), pesos regular e semibold",
|
|
3586
|
+
"ritmo": {
|
|
3587
|
+
"cuts_per_10s": 0.0,
|
|
3588
|
+
"shot_median_s": 14.06
|
|
3589
|
+
},
|
|
3590
|
+
"musica": {
|
|
3591
|
+
"guess": "continua",
|
|
3592
|
+
"ratio": 0.33,
|
|
3593
|
+
"impressão": "heurística de áudio; nome da faixa não confirmado"
|
|
3594
|
+
},
|
|
3595
|
+
"sfx": {
|
|
3596
|
+
"counts": {
|
|
3597
|
+
"pop_click": 0,
|
|
3598
|
+
"whoosh": 1,
|
|
3599
|
+
"impact_low": 0
|
|
3600
|
+
},
|
|
3601
|
+
"per_10s": 0.71,
|
|
3602
|
+
"on_cuts": "0/0"
|
|
3603
|
+
},
|
|
3604
|
+
"lufs": "-14.1",
|
|
3605
|
+
"formato": "1:1 (quadrado); recompor para 9:16"
|
|
3606
|
+
},
|
|
3607
|
+
{
|
|
3608
|
+
"id": "x-verbove-2103483957266268381",
|
|
3609
|
+
"url": "https://x.com/verbove/status/2103483957266268381",
|
|
3610
|
+
"channel": "Martijn Verbove",
|
|
3611
|
+
"views": "17438",
|
|
3612
|
+
"nicho": "d",
|
|
3613
|
+
"idioma": "en",
|
|
3614
|
+
"style": "ui-morph",
|
|
3615
|
+
"estilo_visual": "A mesma forma contínua contando um produto real (MakerMap): pílula da marca, busca, cartão de perfil, globo de pontos com os makers, lista de matches, contador, evento com RSVP",
|
|
3616
|
+
"motion_transicoes": "Sem corte: morfose de pílula para cartão e para globo; o globo gira e se enche de pontos; cursor dirige cada passo",
|
|
3617
|
+
"legenda": "Nenhuma; dados reais na interface (2.266 produtos, 6 matches)",
|
|
3618
|
+
"hook_0_3s": "Pílula preta com o nome do produto e o ponto laranja da marca",
|
|
3619
|
+
"paleta": "cinza quente claro, preto, branco e um laranja de destaque",
|
|
3620
|
+
"tipografia": "sans de interface; mono só na URL do fim",
|
|
3621
|
+
"ritmo": {
|
|
3622
|
+
"cuts_per_10s": 0.0,
|
|
3623
|
+
"shot_median_s": 20.05
|
|
3624
|
+
},
|
|
3625
|
+
"musica": {
|
|
3626
|
+
"guess": "continua",
|
|
3627
|
+
"ratio": 0.3,
|
|
3628
|
+
"impressão": "heurística de áudio; nome da faixa não confirmado"
|
|
3629
|
+
},
|
|
3630
|
+
"sfx": {
|
|
3631
|
+
"counts": {
|
|
3632
|
+
"pop_click": 2,
|
|
3633
|
+
"whoosh": 2,
|
|
3634
|
+
"impact_low": 31
|
|
3635
|
+
},
|
|
3636
|
+
"per_10s": 17.45,
|
|
3637
|
+
"on_cuts": "0/0"
|
|
3638
|
+
},
|
|
3639
|
+
"lufs": "-14.6",
|
|
3640
|
+
"formato": "1:1 (quadrado); recompor para 9:16"
|
|
3641
|
+
},
|
|
3642
|
+
{
|
|
3643
|
+
"id": "x-AnnaCher___-2103571096549433425",
|
|
3644
|
+
"url": "https://x.com/AnnaCher___/status/2103571096549433425",
|
|
3645
|
+
"channel": "Anna Chernikova",
|
|
3646
|
+
"views": "1605",
|
|
3647
|
+
"nicho": "d",
|
|
3648
|
+
"idioma": "en",
|
|
3649
|
+
"style": "ui-morph",
|
|
3650
|
+
"estilo_visual": "Promo feito da própria interface do produto (Sprites): spinner, biblioteca de anúncios, slider de orçamento, abas de plataforma, gráfico de ROAS, toggle de piloto automático, ⌘K",
|
|
3651
|
+
"motion_transicoes": "Sem corte: um componente vira o próximo; números contam; o cursor arrasta o orçamento e liga o toggle",
|
|
3652
|
+
"legenda": "Nenhuma; a interface carrega a mensagem (4.2x ROAS, $200/dia)",
|
|
3653
|
+
"hook_0_3s": "Spinner sozinho no centro, o produto já trabalhando",
|
|
3654
|
+
"paleta": "bege quente, preto, branco e um pêssego de destaque no gráfico",
|
|
3655
|
+
"tipografia": "sans de interface única",
|
|
3656
|
+
"ritmo": {
|
|
3657
|
+
"cuts_per_10s": 0.0,
|
|
3658
|
+
"shot_median_s": 42.09
|
|
3659
|
+
},
|
|
3660
|
+
"musica": {
|
|
3661
|
+
"guess": "sem",
|
|
3662
|
+
"ratio": 0.0,
|
|
3663
|
+
"impressão": "heurística de áudio; nome da faixa não confirmado"
|
|
3664
|
+
},
|
|
3665
|
+
"sfx": {
|
|
3666
|
+
"counts": {
|
|
3667
|
+
"pop_click": 2,
|
|
3668
|
+
"whoosh": 27,
|
|
3669
|
+
"impact_low": 0
|
|
3670
|
+
},
|
|
3671
|
+
"per_10s": 6.89,
|
|
3672
|
+
"on_cuts": "0/0"
|
|
3673
|
+
},
|
|
3674
|
+
"lufs": "-24.0",
|
|
3675
|
+
"formato": "1:1 (quadrado); recompor para 9:16"
|
|
3676
|
+
},
|
|
3677
|
+
{
|
|
3678
|
+
"id": "x-nezbuilds-2103487427365294391",
|
|
3679
|
+
"url": "https://x.com/nezbuilds/status/2103487427365294391",
|
|
3680
|
+
"channel": "Nez",
|
|
3681
|
+
"views": "519",
|
|
3682
|
+
"nicho": "a",
|
|
3683
|
+
"idioma": "en",
|
|
3684
|
+
"style": "ui-morph",
|
|
3685
|
+
"estilo_visual": "Refeito com o mesmo prompt: botão \"Get started\", loader, ilha que abre em player, volume, toggle, abas, gráfico com tooltip, ⌘K \"Export chart\" e toast com Undo",
|
|
3686
|
+
"motion_transicoes": "Sem corte; molas com overshoot pequeno; cursor arrasta a barra do player e escolhe a aba",
|
|
3687
|
+
"legenda": "Nenhuma",
|
|
3688
|
+
"hook_0_3s": "Botão com seta e o cursor clicando no primeiro tempo",
|
|
3689
|
+
"paleta": "bege quente, preto, branco",
|
|
3690
|
+
"tipografia": "sans de interface única",
|
|
3691
|
+
"ritmo": {
|
|
3692
|
+
"cuts_per_10s": 0.0,
|
|
3693
|
+
"shot_median_s": 14.06
|
|
3694
|
+
},
|
|
3695
|
+
"musica": {
|
|
3696
|
+
"guess": "continua",
|
|
3697
|
+
"ratio": 0.226,
|
|
3698
|
+
"impressão": "heurística de áudio; nome da faixa não confirmado"
|
|
3699
|
+
},
|
|
3700
|
+
"sfx": {
|
|
3701
|
+
"counts": {
|
|
3702
|
+
"pop_click": 3,
|
|
3703
|
+
"whoosh": 3,
|
|
3704
|
+
"impact_low": 20
|
|
3705
|
+
},
|
|
3706
|
+
"per_10s": 18.49,
|
|
3707
|
+
"on_cuts": "0/0"
|
|
3708
|
+
},
|
|
3709
|
+
"lufs": "-19.2",
|
|
3710
|
+
"formato": "1:1 (quadrado); recompor para 9:16"
|
|
3711
|
+
},
|
|
3712
|
+
{
|
|
3713
|
+
"id": "x-dzhohola-2103605737595249003",
|
|
3714
|
+
"url": "https://x.com/dzhohola/status/2103605737595249003",
|
|
3715
|
+
"channel": "Andromedus",
|
|
3716
|
+
"views": "222",
|
|
3717
|
+
"nicho": "a",
|
|
3718
|
+
"idioma": "en",
|
|
3719
|
+
"style": "ui-morph",
|
|
3720
|
+
"estilo_visual": "A mesma técnica sobre a interface real de um app (T3 Code): diff de código, menu de esforço, permissões, toggles, temas, gráfico de uso, lista de PRs, celular e contador de estrelas do GitHub",
|
|
3721
|
+
"motion_transicoes": "Sem corte; troca de tema claro para escuro no meio; cada cartão nasce do anterior",
|
|
3722
|
+
"legenda": "Nenhuma",
|
|
3723
|
+
"hook_0_3s": "Pílula \"Working 2m\" com spinner",
|
|
3724
|
+
"paleta": "branco e cinza claros, depois quase preto; azul só nos toggles",
|
|
3725
|
+
"tipografia": "sans de interface; mono no diff",
|
|
3726
|
+
"ritmo": {
|
|
3727
|
+
"cuts_per_10s": 0.0,
|
|
3728
|
+
"shot_median_s": 60.05
|
|
3729
|
+
},
|
|
3730
|
+
"musica": {
|
|
3731
|
+
"guess": "continua",
|
|
3732
|
+
"ratio": 0.454,
|
|
3733
|
+
"impressão": "heurística de áudio; nome da faixa não confirmado"
|
|
3734
|
+
},
|
|
3735
|
+
"sfx": {
|
|
3736
|
+
"counts": {
|
|
3737
|
+
"pop_click": 0,
|
|
3738
|
+
"whoosh": 7,
|
|
3739
|
+
"impact_low": 0
|
|
3740
|
+
},
|
|
3741
|
+
"per_10s": 1.17,
|
|
3742
|
+
"on_cuts": "0/0"
|
|
3743
|
+
},
|
|
3744
|
+
"lufs": "-14.2",
|
|
3745
|
+
"formato": "1:1 (quadrado); recompor para 9:16"
|
|
3746
|
+
},
|
|
3747
|
+
{
|
|
3748
|
+
"id": "x-daniel_haida-2104139720829636937",
|
|
3749
|
+
"url": "https://x.com/daniel_haida/status/2104139720829636937",
|
|
3750
|
+
"channel": "Daniel Haida",
|
|
3751
|
+
"views": "3968",
|
|
3752
|
+
"nicho": "d",
|
|
3753
|
+
"idioma": "en",
|
|
3754
|
+
"style": "ui-morph",
|
|
3755
|
+
"estilo_visual": "Variante escura: filme de produto de um app de contabilidade (taxtello) feito em React, painel com número grande, gráfico, recibo de papel, anel de score e a marca no fim",
|
|
3756
|
+
"motion_transicoes": "Câmera em perspectiva passando sobre o painel; elementos entram em sequência sem corte; o logo fecha",
|
|
3757
|
+
"legenda": "Duas frases curtas grandes (\"Alles im Blick.\", \"In guter Ordnung\")",
|
|
3758
|
+
"hook_0_3s": "Ícone do app sozinho no escuro",
|
|
3759
|
+
"paleta": "azul-marinho quase preto, um amarelo de destaque, verde no score",
|
|
3760
|
+
"tipografia": "sans de interface, números grandes em mono",
|
|
3761
|
+
"ritmo": {
|
|
3762
|
+
"cuts_per_10s": 0.0,
|
|
3763
|
+
"shot_median_s": 14.06
|
|
3764
|
+
},
|
|
3765
|
+
"musica": {
|
|
3766
|
+
"guess": "sem",
|
|
3767
|
+
"ratio": 0.033,
|
|
3768
|
+
"impressão": "heurística de áudio; nome da faixa não confirmado"
|
|
3769
|
+
},
|
|
3770
|
+
"sfx": {
|
|
3771
|
+
"counts": {
|
|
3772
|
+
"pop_click": 0,
|
|
3773
|
+
"whoosh": 0,
|
|
3774
|
+
"impact_low": 3
|
|
3775
|
+
},
|
|
3776
|
+
"per_10s": 2.13,
|
|
3777
|
+
"on_cuts": "0/0"
|
|
3778
|
+
},
|
|
3779
|
+
"lufs": "-17.1",
|
|
3780
|
+
"formato": "16:9 (horizontal); recompor para 9:16"
|
|
3571
3781
|
}
|
|
3572
|
-
]
|
|
3782
|
+
]
|
|
@@ -777,5 +777,59 @@
|
|
|
777
777
|
"url": "https://www.youtube.com/watch?v=5EoO5413dBY"
|
|
778
778
|
}
|
|
779
779
|
]
|
|
780
|
+
},
|
|
781
|
+
"ui-morph": {
|
|
782
|
+
"n": 6,
|
|
783
|
+
"nichos": [
|
|
784
|
+
"a",
|
|
785
|
+
"d"
|
|
786
|
+
],
|
|
787
|
+
"langs": [
|
|
788
|
+
"en"
|
|
789
|
+
],
|
|
790
|
+
"views_max": 1164424,
|
|
791
|
+
"views_median": 2786,
|
|
792
|
+
"cuts_per_10s": [
|
|
793
|
+
0.0,
|
|
794
|
+
0.0,
|
|
795
|
+
0.0
|
|
796
|
+
],
|
|
797
|
+
"shot_median_s": 17.05,
|
|
798
|
+
"music": {
|
|
799
|
+
"continua": 4,
|
|
800
|
+
"fraca": 0,
|
|
801
|
+
"sem": 2
|
|
802
|
+
},
|
|
803
|
+
"sfx_on_cuts": [
|
|
804
|
+
0,
|
|
805
|
+
0
|
|
806
|
+
],
|
|
807
|
+
"top": [
|
|
808
|
+
{
|
|
809
|
+
"channel": "zero",
|
|
810
|
+
"views": "1164424",
|
|
811
|
+
"url": "https://x.com/twoclipping/status/2103273003555402193"
|
|
812
|
+
},
|
|
813
|
+
{
|
|
814
|
+
"channel": "Martijn Verbove",
|
|
815
|
+
"views": "17438",
|
|
816
|
+
"url": "https://x.com/verbove/status/2103483957266268381"
|
|
817
|
+
},
|
|
818
|
+
{
|
|
819
|
+
"channel": "Daniel Haida",
|
|
820
|
+
"views": "3968",
|
|
821
|
+
"url": "https://x.com/daniel_haida/status/2104139720829636937"
|
|
822
|
+
},
|
|
823
|
+
{
|
|
824
|
+
"channel": "Anna Chernikova",
|
|
825
|
+
"views": "1605",
|
|
826
|
+
"url": "https://x.com/AnnaCher___/status/2103571096549433425"
|
|
827
|
+
},
|
|
828
|
+
{
|
|
829
|
+
"channel": "Nez",
|
|
830
|
+
"views": "519",
|
|
831
|
+
"url": "https://x.com/nezbuilds/status/2103487427365294391"
|
|
832
|
+
}
|
|
833
|
+
]
|
|
780
834
|
}
|
|
781
835
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Generated-video prompts, by catalogue style
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Eighteen prompts picked from [awesome-opus5-5-videos](https://github.com/yihui-dev/awesome-opus5-5-videos) (513 entries in its `data/videos.json`, MIT, checked on 2026-10-10): videos that a model wrote as code (canvas, SVG, three.js) and that went viral. Each line says what the prompt asks for, in our words; the full prompt and the video are at the links. The prompts belong to their creators: link to them, quote at most a phrase, never paste the whole prompt into a project or a skill.
|
|
4
4
|
|
|
5
5
|
This page is a fixed sample. For current videos, and to skip the ones a project already used, run `node scripts/references.mjs pick --style <key>`.
|
|
6
6
|
|
|
@@ -9,7 +9,7 @@ Use this page **after** the style is chosen ([style-picker.md](style-picker.md))
|
|
|
9
9
|
## How a generated piece runs in the Method
|
|
10
10
|
|
|
11
11
|
- **HyperFrames draws, Remotion assembles** (`_shared/video-pipeline.md`, wizz module). A prompt that asks for "one HTML file with the music" becomes: scenes drawn silent in HyperFrames, assembled in Remotion with the audio.
|
|
12
|
-
- **Timing is measured, never guessed.** Words from `ctc-align`; cuts on the downbeats from [`scripts/beat_grid.py`](../scripts/beat_grid.py). Several prompts below ask for a "120 BPM grid" by hand; the script gives the real grid of the actual song.
|
|
12
|
+
- **Timing is measured, never guessed.** Words from `wizz-ctc-align`; cuts on the downbeats from [`scripts/beat_grid.py`](../scripts/beat_grid.py). Several prompts below ask for a "120 BPM grid" by hand; the script gives the real grid of the actual song.
|
|
13
13
|
- **Recompose for 9:16** when the original was square or horizontal: keyword in the upper-middle, nothing important in the bottom 20 %.
|
|
14
14
|
|
|
15
15
|
## Kinetic typography and lyric video ([card](styles/tipografia-cinetica.md))
|
|
@@ -21,13 +21,23 @@ Use this page **after** the style is chosen ([style-picker.md](style-picker.md))
|
|
|
21
21
|
| ParanoidAmerica · evil pizza parlour | A full music video synced to a `lyrics.txt`, one continuous camera journey through a place, collage plus ballpoint-pen look. | [post](https://x.com/ParanoidAmerica/status/2103570879619686717) · [video](https://skillry.dev/ai-videos/opus-5-5/paranoidamerica-686717) |
|
|
22
22
|
| twoclipping · wordmark launch film | A one-word brand built in one continuous take to a 120 BPM song with a drop and a breakdown; every scene grows out of the previous one, nothing fades or cuts. | [post](https://x.com/twoclipping/status/2103835273813496100) · [video](https://skillry.dev/ai-videos/opus-5-5/twoclipping-496100) |
|
|
23
23
|
|
|
24
|
-
##
|
|
24
|
+
## UI morph: one shape, many UI states ([card](styles/ui-morph.md))
|
|
25
|
+
|
|
26
|
+
The most remade prompt in the catalogue: the "8 to 12 UI states" brief appears 7 times, by different authors, with the same result. All six measured references of the style come from here.
|
|
25
27
|
|
|
26
28
|
| Prompt | What it asks | Links |
|
|
27
29
|
|---|---|---|
|
|
28
30
|
| twoclipping · one shape, many UI states | One element morphs through 8 to 12 UI states (button, loader, player, chart), a cursor drives each change, springs, cut on a 120 BPM grid. | [post](https://x.com/twoclipping/status/2103273003555402193) · [video](https://skillry.dev/ai-videos/opus-5-5/twoclipping-402193) |
|
|
29
31
|
| verbove · product story in one canvas | The same morphing-shape idea as strict rules: one `draw(t)` function, real UI and real data, something on every beat, exports in 1:1, 16:9 and 9:16. | [post](https://x.com/verbove/status/2103483957266268381) · [video](https://skillry.dev/ai-videos/opus-5-5/verbove-268381) |
|
|
30
32
|
| AnnaCher · promo from the product's own UI | Same structure built from the real product UI, one accent colour, last frame equals the first so it loops; a long banned list (glows, particles, bouncy easing). | [post](https://x.com/AnnaCher___/status/2103571096549433425) · [video](https://skillry.dev/ai-videos/opus-5-5/annacher-433425) |
|
|
33
|
+
| dzhohola · the template on a real app | The same "8 to 12 UI states" brief pointed at an existing product (T3 Code): diff, settings, toggles, themes, usage chart and GitHub stars, light turning dark halfway. | [post](https://x.com/dzhohola/status/2103605737595249003) · [video](https://skillry.dev/ai-videos/opus-5-5/dzhohola-249003) |
|
|
34
|
+
| daniel_haida · dark product film | 15 s Apple-level film for a bookkeeping app in React + Remotion, "not a feature walkthrough"; dashboard in perspective, a paper receipt, one yellow accent, soundtrack synthesised in code. | [post](https://x.com/daniel_haida/status/2104139720829636937) · [video](https://skillry.dev/ai-videos/opus-5-5/daniel-haida-636937) |
|
|
35
|
+
| Bilimfili1 · a glance inside the app (vertical) | 45 to 50 s vertical tour of every feature, recorded for real in the simulator, each feature breaking out of the phone; every number on screen comes from the recordings. | [post](https://x.com/Bilimfili1/status/2103743617848459762) · [video](https://skillry.dev/ai-videos/opus-5-5/bilimfili1-459762) |
|
|
36
|
+
|
|
37
|
+
## Motion editorial and product UI ([card](styles/motion-editorial.md))
|
|
38
|
+
|
|
39
|
+
| Prompt | What it asks | Links |
|
|
40
|
+
|---|---|---|
|
|
31
41
|
| jhylee95 · launch video | Research the product, hook in the first second, distinct beats for proof, every cut and hit retimed until it lands on a beat or drop. | [post](https://x.com/jhylee95/status/2103604431627452427) · [video](https://skillry.dev/ai-videos/opus-5-5/jhylee95-452427) |
|
|
32
42
|
| twoclipping · minimal launch with real footage | 10 bars at 120 BPM, one idea per shot, masked type reveals and match cuts over the owner's real vertical clips; no placeholder cards. | [post](https://x.com/twoclipping/status/2102554209166000267) · [video](https://skillry.dev/ai-videos/opus-5-5/twoclipping-000267) |
|
|
33
43
|
| Mounnna · logo reveal | Logo drawn as a wireframe, low-poly shards fly in and assemble it, then the icon background and the typed brand name. A 3 to 5 s sting for the CTA. | [post](https://x.com/Mounnna/status/2103802871934497266) · [video](https://skillry.dev/ai-videos/opus-5-5/mounnna-497266) |
|
|
@@ -8,6 +8,7 @@ The material decides which styles are **possible**. Niche and goal only rank the
|
|
|
8
8
|
|---|---|
|
|
9
9
|
| Voice only (own recording or TTS), no one on camera | [motion-editorial](styles/motion-editorial.md), [explicador-animado](styles/explicador-animado.md), [meme-rapido](styles/meme-rapido.md) |
|
|
10
10
|
| A song with its lyrics, or a voice-over or slogan with no footage at all | [tipografia-cinetica](styles/tipografia-cinetica.md) (the words are the image; scenes generated in code) |
|
|
11
|
+
| Only the product's UI (its screens, or a list of states), no person and no voice | [ui-morph](styles/ui-morph.md) (one shape becomes each UI state, a cursor drives it, cut on the beat) |
|
|
11
12
|
| Voice + app/site screens | [motion-editorial](styles/motion-editorial.md) (screenshots in a phone card), [camera-no-setup](styles/camera-no-setup.md) (film the screen), [meme-rapido](styles/meme-rapido.md) |
|
|
12
13
|
| A person on camera talking, nothing else | [talking-head-legenda](styles/talking-head-legenda.md) |
|
|
13
14
|
| A person on camera + headlines, articles, charts, b-roll | [talking-head-cards](styles/talking-head-cards.md) (face bubble over full-screen b-roll is a variant) |
|
|
@@ -29,10 +30,10 @@ From [`data/references.json`](../data/references.json): the styles measured in e
|
|
|
29
30
|
|
|
30
31
|
| Niche | Styles found (highest views) |
|
|
31
32
|
|---|---|
|
|
32
|
-
| dev / AI / build in public (EN) | meme-rapido (8.8M), camera-no-setup (8.1M), talking-head-legenda (5.4M), quadro-branco (4.4M), motion-editorial (0.83M), talking-head-cards (0.82M), podcast-clip (0.48M) |
|
|
33
|
+
| dev / AI / build in public (EN) | meme-rapido (8.8M), camera-no-setup (8.1M), talking-head-legenda (5.4M), quadro-branco (4.4M), ui-morph (1.2M), motion-editorial (0.83M), talking-head-cards (0.82M), podcast-clip (0.48M) |
|
|
33
34
|
| dev / AI / tech business (BR) | quadro-branco (1.1M), talking-head-cards (0.41M), talking-head-legenda (0.26M), meme-rapido (0.23M), camera-no-setup (0.11M) |
|
|
34
35
|
| personal finance / investing | podcast-clip (1.2M), talking-head-cards (1.2M), talking-head-legenda (0.77M) |
|
|
35
|
-
| product / SaaS / marketing / business / law | desafio-numero (20.9M), talking-head-legenda (9.8M), tipografia-cinetica (1.2M), camera-no-setup (0.53M), podcast-clip (0.33M), quadro-branco (0.15M), talking-head-cards (0.09M) |
|
|
36
|
+
| product / SaaS / marketing / business / law | desafio-numero (20.9M), talking-head-legenda (9.8M), tipografia-cinetica (1.2M), camera-no-setup (0.53M), podcast-clip (0.33M), quadro-branco (0.15M), talking-head-cards (0.09M), ui-morph (0.02M) |
|
|
36
37
|
| health / fitness / nutrition | explicador-animado (33.4M), podcast-clip (9.8M), quadro-branco (0.61M), macro-asmr (0.54M), talking-head-cards (0.43M), desafio-numero (0.22M) |
|
|
37
38
|
| food / recipes / lifestyle / travel | desafio-numero (107M), pov-vlog (8.7M), macro-asmr (7.7M), tour (1.05M) |
|
|
38
39
|
| beauty / fashion / local services (clinic, salon, architecture, real estate) | macro-asmr (10.6M), talking-head-legenda (3.8M), talking-head-cards (2.0M), pov-vlog (1.4M), tour (0.37M) |
|
|
@@ -45,6 +46,7 @@ BR local services (clinic, salon, law, architecture), BR travel and BR sales/mar
|
|
|
45
46
|
|
|
46
47
|
- **Saves and comments (teach, explain a system):** motion-editorial, explicador-animado, quadro-branco, talking-head-cards.
|
|
47
48
|
- **Reach and shares (curiosity, humour):** desafio-numero, experimento, meme-rapido, esquete, pov-vlog, tipografia-cinetica (music and manifestos).
|
|
49
|
+
- **Show the product working (launch, new feature, store page):** ui-morph, motion-editorial.
|
|
48
50
|
- **Trust and authority (a person the audience should know):** talking-head-legenda, podcast-clip, camera-no-setup.
|
|
49
51
|
- **Desire for a product:** macro-asmr, desafio-numero, camera-no-setup.
|
|
50
52
|
|