Communitygithub.com

broomva/skills

Produza vídeos de lançamento de produtos com acabamento polido usando a estética Liquid Glass — fundos escuros, painéis de interface 3D flutuantes, efeitos de partículas, animações spring e ritmo cinematográfico. Construído com Remotion, Imagen 4.0 para quadros e Veo 3.1 para B-roll.

O que é skills?

Esta skill capacita agentes de IA a criarem vídeos de lançamento de produto cinematográficos com o visual Liquid Glass: fundos escuros, painéis 3D flutuantes com vidro fosco, partículas e animações spring. Ela combina geração de assets com Imagen 4.0 e Veo 3.1 com a potência de composição do Remotion, garantindo que cada transição e movimento siga a estética definida — sem cortes rápidos, sem transições CSS lineares. Útil para agentes que precisam produzir demos, showcase ou vídeos para redes sociais a partir de capturas de tela e renders, aplicando um estilo consistente de vidro flutuante com perspectiva 3D. A skill também orquestra o pipeline completo: storyboard, geração de assets, composição Remotion com componentes como GlassPanel e ParticleField, renderização via npx remotion render, pós-processamento com ffmpeg e distribuição para plataformas como X, LinkedIn e Instagram.

Funciona com~Claude Code~Codex CLI~Cursor✓Gemini CLI
npx skills add https://github.com/broomva/skills/tree/HEAD/skills/video/launch-video

Perguntar na sua IA favorita

Abre um novo chat com esta habilidade de agente já pré-carregada.

Documentação

Lançamento em Vídeo — Showcase de Produto com Liquid Glass

Produza vídeos de lançamento de produto cinematográficos usando a estética Liquid Glass: vazio escuro, painéis 3D flutuantes, efeitos de partículas, animações spring e ritmo confiante.

Habilidades Compostas

HabilidadeFunção
/remotion-best-practicesEstrutura de composição, spring(), <Sequence>, pipeline de renderização
/content-creationGeração de assets por IA (Imagen 4.0, Veo 3.1)
/arcan-glassTokens da marca BroomVA (AI Blue, paleta escura)
/google-veoPrompts de geração de B-roll cinematográfico
/blog-postPipeline de distribuição (publicar no X, LinkedIn, Instagram)

A Estética Liquid Glass

Princípios Visuais Centrais

  1. Fundo escuro — Preto puro (#000000) ou quase preto (#0A0A0A). Sem gradientes na base. O conteúdo flutua na escuridão.
  2. Painéis com perspectiva 3D — Capturas de tela e renders de UI inclinados de 8 a 15° com perspective(1200px). Nunca planos. Sempre flutuantes.
  3. Material de vidro — Painéis com bordas fosca, reflexo sutil, cantos arredondados com brilho, bordas semitransparentes.
  4. Campo de partículas — Pequenas partículas flutuantes (2-4px, baixa opacidade, deriva lenta) preenchem o vazio. Criam profundidade e vida.
  5. Movimento spring — Todas as entradas/saídas usam spring() do Remotion. Nunca transições CSS. Nunca lineares. Orgânicos, confiantes.
  6. Ritmo confiante — Mínimo de 3 a 5 segundos por cena. Sem cortes rápidos. Deixe cada visual respirar.
  7. Tipografia mínima — Sem serifa (Inter, SF Pro ou sistema), branco sobre preto, centralizado. Máximo de 8 palavras por cartão de título.

Paleta de Cores

TokenValorUso
void#000000Fundo
panel-bgrgba(20, 20, 25, 0.85)Preenchimento do painel de vidro
panel-borderrgba(255, 255, 255, 0.08)Borda do vidro
panel-glowrgba(59, 130, 246, 0.15)Brilho da borda (AI Blue)
text-primary#FFFFFFTexto do título
text-secondaryrgba(255, 255, 255, 0.6)Subtítulo, URL
accent#3B82F6Destaques AI Blue
success#22C55ECheckmarks, estados positivos
particlergba(255, 255, 255, 0.15)Partículas de fundo

CSS do Painel 3D (Remotion)

const panelStyle: React.CSSProperties = {
  perspective: '1200px',
  transform: `rotateY(-8deg) rotateX(5deg)`,
  borderRadius: 16,
  border: '1px solid rgba(255, 255, 255, 0.08)',
  boxShadow: `
    0 25px 50px rgba(0, 0, 0, 0.6),
    0 0 30px rgba(59, 130, 246, 0.1),
    inset 0 1px 0 rgba(255, 255, 255, 0.05)
  `,
  background: 'rgba(20, 20, 25, 0.85)',
  backdropFilter: 'blur(20px)',
  overflow: 'hidden',
};

Configuração Spring

import { spring, useCurrentFrame, useVideoConfig } from 'remotion';

// Entrada padrão
const entrance = spring({
  frame,
  fps,
  config: { damping: 15, stiffness: 80, mass: 0.8 },
});

// Deriva sutil (para painéis flutuantes)
const drift = spring({
  frame: frame - delay,
  fps,
  config: { damping: 200, stiffness: 10, mass: 2 },
  durationInFrames: 120,
});

Tipos de Cena

1. Cartão de Título

Duração: 3-4 segundos Conteúdo: Nome do produto ou tagline, centralizado, branco sobre preto Animação: Desvanecimento com escala spring sutil (0,95 → 1,0) Exemplo: "Construa suas ideias com Gemini"

2. Cena de Prompt / Entrada

Duração: 4-6 segundos Conteúdo: Entrada de chat ou prompt de terminal, painel 3D angulado Animação: Painel surge de baixo com spring, texto com efeito de máquina de escrever Técnica: <Img> da captura de tela com transformação CSS 3D, efeito de máquina de escrever via fatia de string baseada em frames

3. Cena de Painel Dividido

Duração: 4-5 segundos Conteúdo: Dois painéis de UI lado a lado (ex.: prompt + saída de código) Animação: Painéis entram com spring de lados opostos, partículas entre eles Técnica: Dois componentes <Img> com transformações rotateY opostas

4. Cena de Demonstração do Produto

Duração: 5-8 segundos Conteúdo: UI completa do produto como painel de vidro flutuante Animação: Rotação de deriva lenta (oscilação sutil em rotateY), zoom cinematográfico Técnica: <Img> ou <OffthreadVideo> com scale e rotateY animados

5. Cena de Zoom em Detalhe

Duração: 3-4 segundos Conteúdo: Zoom em um elemento ou recurso específico da UI Animação: Escala spring da visão completa para o detalhe recortado Técnica: scale + translate animados na imagem do painel

6. Cena de CTA / Marca

Duração: 3-4 segundos Conteúdo: Logotipo + URL ou comando de instalação Animação: Desvanecimento, pausa, desvanecimento Técnica: Texto centralizado, ícone da marca, brilho sutil

7. Quadro Cinematográfico com IA (Imagen 4.0)

Duração: 3-5 segundos Conteúdo: Render herói gerado por IA ou arte conceitual dentro de um GlassPanel Animação: Entrada com spring, rotação de deriva lenta, zoom sutil Técnica: Gere via Imagen 4.0, coloque em public/, use <Img src={staticFile('render.png')} /> dentro do GlassPanel com transformação 3D Quando usar: Conceitos abstratos, diagramas arquitetônicos, visuais de clima — qualquer coisa que se beneficie de imagens geradas por IA em vez de capturas de tela

<GlassPanel rotateY={-10} rotateX={6} delay={5}>
  <Img src={staticFile('imagen-hero-render.png')} style={{ width: '100%' }} />
</GlassPanel>

8. B-Roll em Vídeo com IA (Veo 3.1)

Duração: 4-8 segundos Conteúdo: Clipe de vídeo gerado por IA cinematográfico como transição ou atmosfera Animação: Reproduz atrás ou dentro de um GlassPanel, com texto sobreposto opcional Técnica: Gere via Veo 3.1, pré-processe com ffmpeg -movflags +faststart, use <OffthreadVideo> no Remotion

// B-roll cinematográfico em tela cheia (entre cenas)
<OffthreadVideo
  src={staticFile('veo-broll-corridor.mp4')}
  style={{ width: '100%', height: '100%', objectFit: 'cover' }}
/>

// B-roll dentro de um painel de vidro
<GlassPanel rotateY={-5} rotateX={3}>
  <OffthreadVideo
    src={staticFile('veo-product-demo.mp4')}
    style={{ width: '100%', borderRadius: 12 }}
  />
</GlassPanel>

Padrão de prompt Veo 3.1 para B-roll:

[Movimento de câmera], [Assunto/Ambiente], [Ação/Movimento], [Iluminação + clima].
Fundo escuro, brilho [cor de destaque]. Cinematográfico, profissional. [Proporção de aspecto].

Quando usar: Transições entre grupos de cena, intros/outros atmosféricos, demonstrações cinematográficas de produto onde movimento agrega valor sobre uma captura de tela estática.

Pré-processamento (obrigatório para <OffthreadVideo> + parseMedia()):

ffmpeg -i veo-clip.mp4 -c:v libx264 -crf 18 -movflags +faststart -r 30 processed.mp4

Padrão de Composição Híbrida

Os vídeos mais refinados combinam todos os três tipos de ativos:

Cartão de Título (texto)
  → Quadro Imagen no GlassPanel (arte conceitual)
    → Transição Veo B-roll (cinematográfica 4s)
      → Captura de tela no GlassPanel (demonstração do produto)
        → Dados animados com Remotion (nós de pipeline, árvores de arquivos)
          → Veo B-roll final (atmosfera)
            → Cartão de CTA (texto)

Regra: O Remotion controla o tempo, as transições e o texto. Os ativos de IA fornecem riqueza visual. Nunca deixe a IA controlar o ritmo — essa é a função do Remotion.

Pipeline de Produção

1. STORYBOARD → Defina as cenas com tipos (1-8), durações e conteúdo
2. ATIVOS → Gere/capture todos os ativos visuais
   a. Capturas de tela — UI do produto via agent-browser ou captura manual
   b. Imagen 4.0 — renders heróis, arte conceitual, visuais abstratos
      → ai.models.generateImages({ model: 'imagen-4.0-fast-generate-001', prompt: '...' })
      → Salve no diretório public/
   c. Veo 3.1 — clipes cinematográficos B-roll (4-8s cada)
      → ai.models.generateVideos({ model: 'veo-3.1-fast-generate-preview', prompt: '...' })
      → Pré-processe: ffmpeg -i clip.mp4 -c:v libx264 -movflags +faststart -r 30 processed.mp4
      → Salve no diretório public/
3. COMPOR → Construa a composição Remotion
   - <Sequence> com premountFor para pré-carregamento
   - <Img> + staticFile() para imagens (nunca <img>)
   - <OffthreadVideo> + staticFile() para clipes Veo (nunca <video>)
   - GlassPanel + spring() para transformações 3D e entradas
   - ParticleField como camada de fundo
   - Componente de subtítulo para sobreposições de texto
4. RENDERIZAR → npx remotion render src/Root.tsx CompositionId out/video.mp4
5. PÓS-PROCESSAMENTO → Adicione áudio se separado
   - ffmpeg -i video.mp4 -i audio.mp3 -c:v copy -c:a aac final.mp4
6. REVISÃO → /creative-review avalia a saída em relação ao guia de estilo (alvo: ≥75)
7. DISTRIBUIR → Publique nas plataformas via pipeline de publicação /blog-post

Estrutura do Projeto Remotion

launch-video/
├── src/
│   ├── Root.tsx                 # registerRoot
│   ├── Composition.tsx          # Composição principal com cenas <Sequence>
│   ├── scenes/
│   │   ├── TitleCard.tsx        # Tipo de cena 1
│   │   ├── PromptScene.tsx      # Tipo de cena 2
│   │   ├── SplitPanel.tsx       # Tipo de cena 3
│   │   ├── ProductDemo.tsx      # Tipo de cena 4
│   │   ├── DetailZoom.tsx       # Tipo de cena 5
│   │   └── CTACard.tsx          # Tipo de cena 6
│   ├── components/
│   │   ├── GlassPanel.tsx       # Painel com perspectiva 3D e material de vidro
│   │   ├── ParticleField.tsx    # Sistema de partículas de fundo
│   │   ├── TypewriterText.tsx   # Animação de máquina de escrever baseada em frames
│   │   └── SpringFade.tsx       # Invólucro de desvanecimento spring reutilizável
│   └── styles/
│       └── tokens.ts            # Tokens de cor/espaçamento Liquid Glass
├── public/                      # staticFile() assets (capturas de tela, renders)
├── package.json
└── remotion.config.ts

Componente de Campo de Partículas (Referência)

const ParticleField: React.FC<{ count?: number }> = ({ count = 40 }) => {
  const frame = useCurrentFrame();
  const particles = useMemo(() =>
    Array.from({ length: count }, (_, i) => ({
      x: (i * 37 + 13) % 100,
      y: (i * 53 + 7) % 100,
      size: 2 + (i % 3),
      speed: 0.1 + (i % 5) * 0.05,
      opacity: 0.05 + (i % 4) * 0.04,
    })), [count]);

  return (
    <AbsoluteFill>
      {particles.map((p, i) => (
        <div key={i} style={{
          position: 'absolute',
          left: `${p.x}%`,
          top: `${(p.y + frame * p.speed) % 110}%`,
          width: p.size,
          height: p.size,
          borderRadius: '50%',
          background: `rgba(255, 255, 255, ${p.opacity})`,
        }} />
      ))}
    </AbsoluteFill>
  );
};

Componente GlassPanel (Referência)

const GlassPanel: React.FC<{
  children: React.ReactNode;
  rotateY?: number;
  rotateX?: number;
  scale?: number;
}> = ({ children, rotateY = -8, rotateX = 5, scale = 1 }) => (
  <div style={{
    transform: `perspective(1200px) rotateY(${rotateY}deg) rotateX(${rotateX}deg) scale(${scale})`,
    borderRadius: 16,
    border: '1px solid rgba(255, 255, 255, 0.08)',
    boxShadow: '0 25px 50px rgba(0,0,0,0.6), 0 0 30px rgba(59,130,246,0.1), inset 0 1px 0 rgba(255,255,255,0.05)',
    background: 'rgba(20, 20, 25, 0.85)',
    overflow: 'hidden',
    transition: 'none',
  }}>
    {children}
  </div>
);

Checklist de Qualidade

  • Fundo preto puro ou quase preto (sem gradientes)
  • Todos os painéis usam transformação de perspectiva 3D (nunca capturas de tela planas)
  • Animações spring em todas as entradas (sem transições CSS)
  • Campo de partículas presente no fundo
  • Cada cena tem no mínimo 3 a 5 segundos (sem cortes rápidos)
  • Tipografia: sem serifa, branco, centralizado, ≤8 palavras por cartão de título
  • Material de vidro: brilho na borda, sombra, cantos arredondados, semitransparente
  • Áudio presente (eletrônica ambiente ou narração)
  • Duração total de 20 a 45 segundos
  • -movflags +faststart na renderização final

Individual skills in this repo

This repo contains 7 individual skills — each has its own dedicated page.

broomva/skills

Local TTS, voice cloning, voice design, and video dubbing via the OmniVoice Studio MCP server (open-source ElevenLabs alternative; nothing leaves the machine, runs on MPS/CUDA/CPU). Use when: (1) generating speech from text in any of 646 languages, (2) cloning a voice from a 3-second reference clip, (3) designing a voice by gender/age/accent/pitch/style, (4) dubbing a video into another language, (5) listing voice profiles or personality presets, (6) producing narration where privacy, cost, or absent API keys matter, (7) non-English narration where Edge TTS/kokoro fall short, (8) batch audio for blog posts or content pipelines. Triggers: 'omnivoice', 'voice clone', 'clone this voice', 'tts', 'narrate', 'generate speech', 'voice synthesis', 'dub video', 'voice design', 'local tts', 'multilingual voice', 'narrate this post', 'elevenlabs alternative'.

broomva/skills

>- Speak an explanation out loud while working in any project — tiered text-to-speech with a pluggable backend (ElevenLabs by default and quota-guarded, macOS `say` via `--fast` for free instant local speech, local OmniVoice as an unlimited private tier). Markdown-aware, so code fences, URLs and deep paths collapse to short spoken placeholders instead of being dictated character by character, while snake_case identifiers survive intact so the listener can still search for them. Every utterance is saved to disk for later replay. Also carries a **talk mode** toggle: turn it on and the agent speaks a full readback of every turn, for as long as that session lasts — the whole response, not a summary of it, with `brief` and `marker` levels for when you want less. Talk mode is off by default and scoped to the single session that enabled it, so parallel agents in other worktrees stay silent. Use when the user asks to hear something rather than read it — an explanation of a change, a walkthrough of what just happen...

broomva/skills

Shop Tiendas D1 (Colombia, d1.com.co) from the command line — search the catalogue, resolve your nearest physical store, price a basket against that store's real stock, and quote delivery. D1 runs VTEX IO (account `d1tiendas`), so this drives its public storefront API with no admin key at all — catalogue and cart work fully anonymously, and a one-time emailed code unlocks order history. Handles the two traps that make naive D1 automation wrong — availability is regionalized (an unregioned query reports a national catalogue nobody can actually buy from) and prices arrive in two different units (search reports whole pesos, checkout reports hundredths, a silent 100x). Builds and prices baskets; it deliberately cannot pay, handing a checkout URL to a human instead. USE WHEN the user wants to find D1 products or prices, check whether D1 delivers somewhere, build or cost a D1 grocery basket, compare D1 items, or review their D1 orders. NOT FOR other Colombian retailers (Éxito, Jumbo, Ara, Alkosto), and not for c...

broomva/skills

Stateful, local-first household toxics inventory + swap engine. Identify the items in a home that carry endocrine disruptors and persistent chemicals (BPA/BPS, phthalates, PFAS/PTFE, parabens, flame retardants, VOCs, microplastics), score each by *real* exposure (severity x presence x how it's used x condition), and track the swap to a safer alternative from "flagged" -> "sourced" -> "swapped". Ships a grounded, cited knowledge graph of ~20 hazards, ~40 item-classes, and ~40 alternatives. Hands sourcing off to the `procurer` skill. The skill's state is the source of truth — the agent is the app.

broomva/skills

Tekton — the shared architecture-intent substrate for co-designing systems with the agent. One typed graph across six tiers (system / journey / data / infra / decisions / qualities); views are queries, not separate diagrams. The canonical artifact is a diff-friendly YAML model both human and agent read and write; it renders to Mermaid (agent-legible, GitHub-native) and a self-contained tabbed HTML viewer (human-visual). Cross-tier traceability (`tekton query <from> <to>`) answers "which infra does this user-journey step touch?" as a path query. USE WHEN: designing or thinking deeply about architecture, a system, a data model, user journeys/flows, or a technical plan WITH the agent; when a Category-C HTML doc isn't enough because you need to see AND edit AND traverse the design across tiers; "let's design X", "architect this", "model the system", "draw the flow", "how does this fit together", "diagram this", "/tekton". NOT FOR: a one-off throwaway diagram (use Mermaid inline); prose-only ADRs (write the ADR...

broomva/skills

Generate a polished Remotion video and X thread showcasing the full agent skills inventory. Use when creating social media content about skills, rendering category-based skill visualizations, or producing animated showcases of agent capabilities. Triggers on "skills video", "showcase skills", "skills thread", "render skills", "social content for skills", or requests to visualize the skills inventory.

broomva/skills

OpenCaptions extension for Content Engine — adds intent-driven CWI (Caption With Intent) captions to the post-production pipeline. Hooks into the grade → caption → final stage. Generates captions that understand video intent (pitch, volume, emotion, emphasis) and style themselves accordingly with variable font weight, size, and color. Uses the OpenCaptions CLI or MCP server. Triggers on: 'add captions', 'opencaptions', 'CWI captions', 'intent captions'.

Habilidades Relacionadas