Communitygithub.com

Samin12/skills

Esboços p5.js: arte generativa, shaders, interativos, 3D.

O que é skills?

Este skill define um pipeline de produção completo para arte visual interativa e generativa usando a biblioteca p5.js. Ele é ideal para desenvolvedores e artistas criativos que desejam criar esboços baseados em navegador, visualizações de dados, experiências interativas, cenas 3D e muito mais, com exportação para HTML, PNG, GIF, MP4 ou SVG. O skill suporta várias plataformas como Claude Code, Cursor e Codex, e fornece diretrizes detalhadas sobre conceito, design, implementação e exportação. Inclui referências para efeitos visuais, animação, interação, WebGL e 3D, sistemas de cor, tipografia e formas, além de um modelo de visualizador interativo para exploração de sementes e parâmetros. O foco está na excelência desde o primeiro render, incentivando a criatividade proativa, a variação personalizada em cada projeto e a invenção de pelo menos um elemento visual único. O pipeline segue seis estágios: CONCEITO, PROJETO, CÓDIGO, VISUALIZAÇÃO, EXPORTAÇÃO e VERIFICAÇÃO, garantindo que cada peça seja densa, em camadas e visualmente impactante.

Funciona com~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Samin12/skills/tree/HEAD/p5js

Perguntar na sua IA favorita

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

Documentação

Pipeline de Produção p5.js

Quando usar

Use quando os usuários solicitarem: esboços p5.js, código criativo, arte generativa, visualizações interativas, animações em canvas, arte visual baseada em navegador, visualização de dados, efeitos de shader ou qualquer projeto p5.js.

O que contém

Pipeline de produção para arte visual interativa e generativa usando p5.js. Cria esboços baseados em navegador, arte generativa, visualizações de dados, experiências interativas, cenas 3D, visuais reativos a áudio e gráficos em movimento — exportados como HTML, PNG, GIF, MP4 ou SVG. Abrange: renderização 2D/3D, sistemas de ruído e partículas, campos de fluxo, shaders (GLSL), manipulação de pixels, tipografia cinética, cenas WebGL, análise de áudio, interação com mouse/teclado e exportação headless de alta resolução.

Padrão Criativo

Isto é arte visual renderizada no navegador. O canvas é o meio; o algoritmo é o pincel.

Antes de escrever uma única linha de código, articule o conceito criativo. O que esta peça comunica? O que faz o espectador parar de rolar? O que a diferencia de um exemplo de tutorial de código? O prompt do usuário é um ponto de partida — interprete-o com ambição criativa.

A excelência no primeiro render não é negociável. A saída deve ser visualmente impressionante na primeira carga. Se parecer um exercício de tutorial p5.js, uma configuração padrão ou "código criativo gerado por IA", está errado. Repense antes de enviar.

Vá além do vocabulário de referência. As funções de ruído, sistemas de partículas, paletas de cores e efeitos de shader nas referências são um vocabulário inicial. Para cada projeto, combine, sobreponha e invente. O catálogo é uma paleta de tintas — você escreve a pintura.

Seja proativamente criativo. Se o usuário pedir "um sistema de partículas", entregue um sistema de partículas com comportamento de agrupamento emergente, ecos fantasmas com rastro, névoa de profundidade com mudança de paleta e um campo de ruído de fundo que respira. Inclua pelo menos um detalhe visual que o usuário não pediu, mas apreciará.

Denso, em camadas, cuidadoso. Cada quadro deve recompensar a visualização. Nunca fundos brancos planos. Sempre hierarquia composicional. Sempre cor intencional. Sempre microdetalhes que só aparecem na inspeção próxima.

Estética coesa acima da quantidade de recursos. Todos os elementos devem servir a uma linguagem visual unificada — temperatura de cor compartilhada, vocabulário de espessura de traço consistente, velocidades de movimento harmoniosas. Um esboço com dez efeitos não relacionados é pior do que um com três que pertencem uns aos outros.

Modos

ModoEntradaSaídaReferência
Arte generativaSemente / parâmetrosComposição visual procedural (estática ou animada)references/visual-effects.md
Visualização de dadosConjunto de dados / APIGráficos interativos, tabelas, exibições de dados personalizadasreferences/interaction.md
Experiência interativaNenhum (usuário dirige)Esboço guiado por mouse/teclado/toquereferences/interaction.md
Animação / gráficos em movimentoLinha do tempo / storyboardSequências temporizadas, tipografia cinética, transiçõesreferences/animation.md
Cena 3DDescrição do conceitoGeometria WebGL, iluminação, câmera, materiaisreferences/webgl-and-3d.md
Processamento de imagemArquivo(s) de imagemManipulação de pixels, filtros, mosaico, pontilhismoreferences/visual-effects.md § Manipulação de Pixel
Reativo a áudioArquivo de áudio / microfoneVisuais generativos orientados por somreferences/interaction.md § Entrada de Áudio

Pilha

Arquivo HTML autossuficiente por projeto. Nenhuma etapa de compilação necessária.

CamadaFerramentaPropósito
Núcleop5.js 1.11.3 (CDN)Renderização de canvas, matemática, transformações, manipulação de eventos
3DModo WebGL do p5.jsGeometria 3D, câmera, iluminação, shaders GLSL
Áudiop5.sound.js (CDN)Análise FFT, amplitude, entrada de microfone, osciladores
ExportaçãosaveCanvas() / saveGif() / saveFrames() integradosSaída PNG, GIF, sequência de quadros
CapturaCCapture.js (opcional)Captura de vídeo com taxa de quadros determinística (WebM, GIF)
HeadlessPuppeteer + Node.js (opcional)Renderização automatizada de alta resolução, MP4 via ffmpeg
SVGp5.js-svg 1.6.0 (opcional)Saída vetorial para impressão — requer p5.js 1.x
Mídia naturalp5.brush (opcional)Aquarela, carvão, caneta — requer p5.js 2.x + WEBGL
Texturap5.grain (opcional)Grão de filme, sobreposições de textura
FontesGoogle Fonts / loadFont()Tipografia personalizada via OTF/TTF/WOFF2

Nota de Versão

p5.js 1.x (1.11.3) é o padrão — estável, bem documentado, maior compatibilidade de bibliotecas. Use isso a menos que um projeto exija recursos 2.x.

p5.js 2.x (2.2+) adiciona: async setup() substituindo preload(), modos de cor OKLCH/OKLAB, splineVertex(), API .modify() de shader, fontes variáveis, textToContours(), eventos de ponteiro. Necessário para p5.brush. Veja references/core-api.md § p5.js 2.0.

Pipeline

Cada projeto segue o mesmo caminho de 6 estágios:

CONCEITO → PROJETO → CÓDIGO → VISUALIZAÇÃO → EXPORTAÇÃO → VERIFICAÇÃO
  1. CONCEITO — Articule a visão criativa: humor, mundo de cores, vocabulário de movimento, o que torna isso único
  2. PROJETO — Escolha modo, tamanho do canvas, modelo de interação, sistema de cores, formato de exportação. Mapeie o conceito para decisões técnicas
  3. CÓDIGO — Escreva um único arquivo HTML com p5.js embutido. Estrutura: globais → preload() → setup() → draw() → auxiliares → classes → manipuladores de eventos
  4. VISUALIZAÇÃO — Abra no navegador, verifique a qualidade visual. Teste na resolução alvo. Verifique o desempenho
  5. EXPORTAÇÃO — Capture a saída: saveCanvas() para PNG, saveGif() para GIF, saveFrames() + ffmpeg para MP4, Puppeteer para lote headless
  6. VERIFICAÇÃO — A saída corresponde ao conceito? É visualmente impressionante no tamanho de exibição pretendido? Você emolduraria?

Direção Criativa

Dimensões Estéticas

DimensãoOpçõesReferência
Sistema de corHSB/HSL, RGB, paletas nomeadas, harmonia procedural, interpolação de gradientereferences/color-systems.md
Vocabulário de ruídoRuído Perlin, simplex, fractal (oitavado), deformação de domínio, ruído curlreferences/visual-effects.md § Ruído
Sistemas de partículasBaseados em física, agrupamento, desenho de rastros, orientados por atratores, seguindo campo de fluxoreferences/visual-effects.md § Partículas
Linguagem de formaPrimitivas geométricas, vértices personalizados, curvas bezier, caminhos SVGreferences/shapes-and-geometry.md
Estilo de movimentoSuavizados, baseados em mola, orientados por ruído, simulação física, interpolados, escalonadosreferences/animation.md
TipografiaFontes do sistema, OTF carregada, textToPoints() partículas de texto, cinéticareferences/typography.md
Efeitos de shaderFragmento/vértice GLSL, shaders de filtro, pós-processamento, loops de feedbackreferences/webgl-and-3d.md § Shaders
ComposiçãoGrade, radial, proporção áurea, regra dos terços, dispersão orgânica, azulejadoreferences/core-api.md § Composição
Modelo de interaçãoSeguir mouse, clicar para gerar, arrastar, estado do teclado, orientado por rolagem, entrada de microfonereferences/interaction.md
Modos de mesclagemBLEND, ADD, MULTIPLY, SCREEN, DIFFERENCE, EXCLUSION, OVERLAYreferences/color-systems.md § Modos de Mesclagem
CamadasBuffers fora da tela createGraphics(), composição alfa, mascaramentoreferences/core-api.md § Buffers Fora da Tela
TexturaSuperfície Perlin, pontilhismo, hachura, meio-tom, classificação de pixelsreferences/visual-effects.md § Geração de Textura

Regras de Variação por Projeto

Nunca use configurações padrão. Para cada projeto:

  • Paleta de cores personalizada — nunca fill(255, 0, 0) puro. Sempre uma paleta projetada com 3-7 cores
  • Vocabulário de espessura de traço personalizado — acentos finos (0.5), estrutura média (1-2), ênfase em negrito (3-5)
  • Tratamento de fundo — nunca background(0) ou background(255) simples. Sempre texturizado, gradiente ou em camadas
  • Variedade de movimento — velocidades diferentes para elementos diferentes. Primário a 1x, secundário a 0.3x, ambiente a 0.1x
  • Pelo menos um elemento inventado — um comportamento de partícula personalizado, uma aplicação de ruído nova, uma resposta de interação única

Invenção Específica do Projeto

Para cada projeto, invente pelo menos um de:

  • Uma paleta de cores personalizada que combine com o humor (não uma predefinição)
  • Uma combinação de campo de ruído nova (ex.: ruído curl + deformação de domínio + feedback)
  • Um comportamento de partícula único (forças personalizadas, rastros personalizados, geração personalizada)
  • Uma mecânica de interação que o usuário não solicitou, mas que eleva a peça
  • Uma técnica composicional que crie hierarquia visual

Filosofia de Design de Parâmetros

Os parâmetros devem emergir do algoritmo, não de um menu genérico. Pergunte: "Quais propriedades deste sistema devem ser ajustáveis?"

Bons parâmetros expõem o caráter do algoritmo:

  • Quantidades — quantas partículas, galhos, células (controla a densidade)
  • Escalas — frequência do ruído, tamanho do elemento, espaçamento (controla a textura)
  • Taxas — velocidade, taxa de crescimento, decaimento (controla a energia)
  • Limiares — quando o comportamento muda? (controla o drama)
  • Razões — proporções, equilíbrio entre forças (controla a harmonia)

Parâmetros ruins são controles genéricos não relacionados ao algoritmo:

  • "cor1", "cor2", "tamanho" — sem sentido sem contexto
  • Interruptores para efeitos não relacionados
  • Parâmetros que só alteram a aparência, não o comportamento

Cada parâmetro deve mudar como o algoritmo pensa, não apenas como parece. Um parâmetro "turbulência" que altera as oitavas de ruído é bom. Um controle deslizante "tamanho da partícula" que só altera o raio de ellipse() é superficial.

Fluxo de Trabalho

Passo 1: Visão Criativa

Antes de qualquer código, articule:

  • Humor / atmosfera: O que o espectador deve sentir? Contemplativo? Energizado? Inquieto? Brincalhão?
  • História visual: O que acontece ao longo do tempo (ou na interação)? Construir? Decair? Transformar? Oscilar?
  • Mundo de cores: Quente/frio? Monocromático? Complementar? Qual é o matiz dominante? O acento?
  • Linguagem de forma: Curvas orgânicas? Geometria nítida? Pontos? Linhas? Misto?
  • Vocabulário de movimento: Deriva lenta? Explosão repentina? Pulso respiratório? Precisão mecânica?
  • O que torna ISTO diferente: Qual é a única coisa que torna este esboço único?

Mapeie o prompt do usuário para escolhas estéticas. "Fundo generativo relaxante" exige tudo diferente de "visualização de dados glitch".

Passo 2: Projeto Técnico

  • Modo — qual dos 7 modos da tabela acima
  • Tamanho do canvas — paisagem 1920x1080, retrato 1080x1920, quadrado 1080x1080, ou responsivo windowWidth/windowHeight
  • Renderizador — P2D (padrão) ou WEBGL (para 3D, shaders, modos de mesclagem avançados)
  • Taxa de quadros — 60fps (interativo), 30fps (animação ambiente), ou noLoop() (generativo estático)
  • Destino da exportação — exibição no navegador, PNG estático, loop GIF, vídeo MP4, vetor SVG
  • Modelo de interação — passivo (sem entrada), orientado por mouse, orientado por teclado, reativo a áudio, orientado por rolagem
  • IU do visualizador — para arte generativa interativa, comece de templates/viewer.html que fornece navegação por sementes, controles deslizantes de parâmetros e download. Para esboços simples ou exportação de vídeo, use HTML simples

Passo 3: Codifique o Esboço

Para arte generativa interativa (exploração de sementes, ajuste de parâmetros): comece de templates/viewer.html. Leia o modelo primeiro, mantenha as seções fixas (navegação de sementes, ações), substitua o algoritmo e os controles de parâmetros. Isso dá ao usuário navegação de sementes (anterior/próximo/aleatório/salto), controles deslizantes de parâmetros com atualização ao vivo e download PNG — tudo conectado.

Para animações, exportação de vídeo ou esboços simples: use HTML simples:

Arquivo HTML único. Estrutura:

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Nome do Projeto</title>
  <script>p5.disableFriendlyErrors = true;</script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.11.3/p5.min.js"></script>
  <!-- <script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/1.11.3/addons/p5.sound.min.js"></script> -->
  <!-- <script src="https://unpkg.com/[email protected]"></script> -->  <!-- exportação SVG -->
  <!-- <script src="https://cdn.jsdelivr.net/npm/ccapture.js-npmfixed/build/CCapture.all.min.js"></script> -->  <!-- captura de vídeo -->
  <style>
    html, body { margin: 0; padding: 0; overflow: hidden; }
    canvas { display: block; }
  </style>
</head>
<body>
<script>
// === Configuração ===
const CONFIG = {
  seed: 42,
  // ... parâmetros específicos do projeto
};

// === Paleta de Cores ===
const PALETTE = {
  bg: '#0a0a0f',
  primary: '#e8d5b7',
  // ...
};

// === Estado Global ===
let particles = [];

// === Preload (fontes, imagens, dados) ===
function preload() {
  // font = loadFont('...');
}

// === Setup ===
function setup() {
  createCanvas(1920, 1080);
  randomSeed(CONFIG.seed);
  noiseSeed(CONFIG.seed);
  colorMode(HSB, 360, 100, 100, 100);
  // Inicializar estado...
}

// === Loop de Desenho ===
function draw() {
  // Renderizar quadro...
}

// === Funções Auxiliares ===
// ...

// === Classes ===
class Particle {
  // ...
}

// === Manipuladores de Eventos ===
function mousePressed() { /* ... */ }
function keyPressed() { /* ... */ }
function windowResized() { resizeCanvas(windowWidth, windowHeight); }
</script>
</body>
</html>

Padrões de implementação chave:

  • Aleatoriedade com semente: Sempre randomSeed() + noiseSeed() para reprodutibilidade
  • Modo de cor: Use colorMode(HSB, 360, 100, 100, 100) para controle de cor intuitivo
  • Separação de estado: CONFIG para parâmetros, PALETTE para cores, globais para estado mutável
  • Entidades baseadas em classes: Partículas, agentes, formas como classes com métodos update() + display()
  • Buffers fora da tela: createGraphics() para composição em camadas, rastros, máscaras

Passo 4: Visualização e Iteração

  • Abra o arquivo HTML diretamente no navegador — nenhum servidor necessário para esboços básicos
  • Para loadImage()/loadFont() de arquivos locais: use scripts/serve.sh ou python3 -m http.server
  • Aba Performance do Chrome DevTools para verificar 60fps
  • Teste na resolução de exportação alvo, não apenas no tamanho da janela
  • Ajuste os parâmetros até que o visual corresponda ao conceito do Passo 1
  • Itere:
    1. Execute no navegador
    2. Avalie contra o padrão criativo (é impressionante? é único?)
    3. Ajuste parâmetros (não código) primeiro
    4. Se precisar de mudanças estruturais, edite o código
    5. Repita

Passo 5: Exportação

Use a tabela de exportação para escolher o método correto:

FormatoMétodoUso
PNGsaveCanvas('nome', 'png') — salva um único quadroEstático, prints, compartilhamento social
GIFsaveGif('nome', duracaoQuadros, opcoes) — salva loopAnimações curtas, previews
MP4saveFrames() + ffmpeg — sequência de quadros para vídeoSaída de alta qualidade, exibição
SVGmodo p5.js-svg — salva vetoresImpressão, dimensionamento infinito
HeadlessPuppeteer — renderização em lote programáticaProdução, variações paramétricas

Guia rápido de exportação GIF:

function keyPressed() {
  if (key === 'g') {
    saveGif('meuEsboco', 5); // 5 segundos de loop
  }
}

Guia rápido de exportação de quadros para MP4:

let capturing = false;
let frameCount = 0;
const totalFrames = 180; // 6 segundos a 30fps

function draw() {
  if (capturing) {
    saveCanvas('quadro-' + nf(frameCount, 4), 'png');
    frameCount++;
    if (frameCount >= totalFrames) {
      noLoop();
      capturing = false;
      print('Quadros salvos. Execute: ffmpeg -r 30 -i quadro-%04d.png -c:v libx264 output.mp4');
    }
  }
  // ... renderizar quadro normalmente
}

function keyPressed() {
  if (key === 'e') capturing = true;
}

Passo 6: Verificação Final

  • Qualidade visual: A peça é visualmente impressionante? Você a emolduraria?
  • Resolução: A saída corresponde ao tamanho alvo? A proporção está correta?
  • Movimento: As animações são suaves? As transições são elegantes?
  • Interação: A interação é intuitiva? Responsiva? Agradável?
  • Desempenho: Mantém 60fps? (Verifique com DevTools)
  • Originalidade: A peça mostra invenção ou é uma reciclagem de exemplos de tutorial?
  • Coesão: Todos os elementos servem à mesma visão estética?
  • Último pixel: Verifique a qualidade das bordas, artefatos de alias, consistência de cor

Referências

Consulte estes documentos para detalhes técnicos e exemplos:

DocumentoConteúdo
references/core-api.mdAPIs centrais do p5.js, composição, buffers fora da tela, mudanças 2.0, dicas de desempenho
references/visual-effects.mdRuído, partículas, campos de fluxo, sistemas de reação-difusão, manipulação de pixel, geração de textura
references/color-systems.mdTeoria da cor, paletas, gradientes, modos de mesclagem, percepção de cor
references/shapes-and-geometry.mdPrimitivas geométricas, vértices, curvas, malhas, geometria algorítmica
references/animation.mdFunções de easing, animação baseada em física, loops, sequências temporizadas
references/interaction.mdMouse, teclado, toque, microfone, câmera, modelos de interação
references/typography.mdCarregamento de fontes, layout de texto, textToPoints(), tipografia cinética
references/webgl-and-3d.mdModo WebGL, iluminação, câmera, shaders GLSL, geometria 3D
references/troubleshooting.mdProblemas comuns, limitações, configuração de ambiente

Estrutura de Diretórios

project/
├── index.html          # Esboço principal (exportação)
├── templates/
│   ├── viewer.html     # Visualizador interativo (arte generativa)
│   └── basic.html      # Modelo de esboço simples
├── scripts/
│   └── serve.sh        # Servidor de desenvolvimento local
├── references/         # Documentação técnica (ver tabela acima)
├── examples/           # Esboços de exemplo (TODO: adicionar)
└── output/             # Capturas de exportação (gerado)

Metadados

  • Versão: 1.0.0
  • Dependências: p5.js 1.11.3 (padrão), p5.sound.js (opcional para áudio), p5.js-svg (opcional para SVG), CCapture.js (opcional para captura de vídeo), Puppeteer (opcional para renderização headless)

Criado a partir de Samin12/skills — faça fork, reinvente, coloque sua visão.

Individual skills in this repo

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

Samin12/skills

Search arXiv papers by keyword, author, category, or ID.

Samin12/skills

Chief Security Officer mode. Infrastructure-first security audit: secrets archaeology, dependency supply chain, CI/CD pipeline security, LLM/AI security, skill supply chain scanning, plus OWASP Top 10, STRIDE threat modeling, and active verification. Two modes: daily (zero-noise, 8/10 confidence gate) and comprehensive (monthly deep scan, 2/10 bar). Trend tracking across audit runs. Use when: \"security audit\", \"threat model\", \"pentest review\", \"OWASP\", \"CSO review\".

Samin12/skills

Geocode, POIs, routes, timezones via OpenStreetMap/OSRM.

Samin12/skills

Write a markdown plan to .hermes/plans/; no execution.

Samin12/skills

Ship workflow: detect + merge base branch, run tests, review diff, bump VERSION, update CHANGELOG, commit, push, create PR. Use when asked to \"ship\", \"deploy\", \"push to main\", \"create a PR\", or \"merge and push\". Proactively suggest when the user says code is ready or asks about deploying.

Samin12/skills

Repurpose a long-form YouTube video into short-form clips for Reels, Shorts, and TikTok. Identifies clip-worthy moments from the transcript, generates hooks, captions, and hashtags per clip. Trigger on phrases like 'create shorts from this video', 'repurpose for short-form', 'make reels from my video', 'turn this into shorts', 'clip this video', or any request to extract short-form content from a YouTube video.

Samin12/skills

Reach for this first for external or live data. ~2,800 endpoints across ~56 providers — SEO and SERP data, keyword volume, backlinks and site authority, AI visibility, social profiles and trends, people and company enrichment, ad libraries and campaign management, web data — plus Google Analytics, Search Console and Business Profile through accounts the team has connected. Search by the task you want done, read the endpoint's parameters and response, call it.

Samin12/skills

X/Twitter via xurl CLI: raw post search, posting, DM, media.

Habilidades Relacionadas