scroll-storytelling
Skill de arquitetura de scrollytelling completo — pagina onde o scroll e a timeline narrativa, nao so uma lista de secoes com fade. Use para landing page estilo Apple, scroll experience, site que "par
Files12
View on GitHubSKILL.mdskills/64-scroll-storytelling/SKILL.md
GitHubScroll Storytelling — Arquitetura de Scrollytelling
Scroll e o unico input que todo visitante ja sabe usar. Esta skill trata scroll como timeline: a roda do mouse e um scrubber, a pagina e um filme com texto real por cima, e cada secao se comporta diferente o suficiente pra o visitante continuar rolando pra descobrir o que a proxima faz.
Governanca Global
Esta skill segue GLOBAL.md, policies/execution.md, policies/handoffs.md, policies/token-efficiency.md,
policies/stack-flexibility.md e policies/evals.md.
Conteudo denso (kit de devices, gramaticas de pagina, taste floor, verificacao) vive em references/ —
carregar sob demanda, nao de cara. O motor (engine/scrollcraft.js + engine/scrollcraft.css) e vanilla
JS/CSS zero-dependencia, pronto pra copiar pro projeto do cliente.
Esta skill decide a arquitetura completa de uma pagina scrollytelling: estrutura, jornada narrativa,
variedade de efeito por secao, gramatica de pagina. Nao e sobre mecanica de easing ou spring solta — para
isso, ver skills/12-motion-design/SKILL.md (dono do sistema de motion tokens, Framer Motion, GSAP
ScrollTrigger genericos). Nao e sobre decidir paleta, tipografia ou direcao estetica do zero — para isso,
ver skills/02-ui-ux-design/SKILL.md (aesthetic anchor, paleta, leis cognitivas de layout). Esta skill
consome as duas: usa motion tokens da 12 pra timing generico do CSS de UI e usa decisao estetica da 02
como insumo pra escolher o "world" (ver references/worlds.md) e a familia estetica.
Quando Usar
- pedido de landing page ou site inteiro estruturado como jornada de scroll (nao so uma secao com fade-in)
- "quero um site que pareça uma experiencia, nao um documento"
- video ou sequencia de imagem que precisa scrubar (avancar frame a frame) conforme o usuario rola
- pagina que precisa pinning de secao, pan horizontal, ou um "mundo" continuo que a rolagem atravessa
- cliente pede algo no estilo Apple product page, ou cita um site de referencia desse tipo
Quando Nao Usar
- micro-interacao isolada (hover, click, spring de botao, transicao de rota) — isso e
skills/12-motion-design/SKILL.md - fade-in simples de secao ao entrar no viewport sem jornada nem variedade de efeito —
whileInViewdo Framer Motion (ja documentado na skill 12) resolve sozinho, sem precisar desta skill - decisao de paleta, tipografia ou wireframe do zero, sem o componente de scroll —
skills/02-ui-ux-design/SKILL.md - gerar apenas os assets visuais (imagem/video) sem construir a pagina — usar direto
skills/17-image-generator/SKILL.mdou o pipeline canonico de geracao de imagem/video do ambiente
Entradas Esperadas
- objetivo de negocio da pagina e publico (normalmente vindo do PO, skill 01)
- direcao estetica ja decidida ou a decidir em conjunto com skill 02 (paleta, tipografia)
- assets que o cliente ja possui (fotos, video, brand kit) — perguntar antes de gerar nada
- acesso a pipeline de geracao de imagem/video do ambiente quando for preciso gerar asset novo
Saidas Esperadas
BRIEF.mdda entrevista (jornada, curva de emocao, pico, gramatica escolhida)- pagina HTML real (semantica, nao gerada por config) usando o motor
engine/scrollcraft.js/.css - tabela de score (device por beat da jornada)
- evidencia de verificacao por screenshot em multiplas posicoes de scroll, incluindo mobile e reduced-motion
O que isto NAO e
Nao e "gerar um flythrough e jogar texto em cima". Essa abordagem produz um device so aplicado na pagina
inteira, e todo site construido assim se reconhece de longe: mesmo diorama de argila, mesmo texto
centralizado, mesmo contador 01/06, mesmo "scroll to explore" piscando. Cinco secoes que se comportam
identico sao uma secao mostrada cinco vezes.
Quatro regras seguem disso e sao a espinha desta skill:
- Variedade e o produto. A pagina usa pelo menos quatro familias de device (ver references/devices.md) e nunca repete o mesmo device duas vezes seguidas.
- O mundo visual e fotografico por padrao, salvo a marca ser genuinamente ilustrada. Diorama de argila low-poly fosco e banido como padrao. Ver references/worlds.md.
- Sem corrente continua de camera, a menos que o brief peça literalmente "uma jornada continua". Um plano-sequencia continuo e a coisa mais cara e fragil que da pra construir, e existe so pra esconder cortes entre cenas. Variar o device resolve o corte de graca, porque o visitante nao esta assistindo um filme so.
- Um mundo visual diferente nao e uma estrutura de pagina diferente. O kit de devices varia a aparencia. Estrutura e um eixo separado — a gramatica de pagina (ver references/uniqueness.md) — e precisa ser decidida deliberadamente, ou todo build herda o mesmo esqueleto.
Pipeline (5 Passos)
Detalhe completo, com as oito perguntas literais, o metodo de curva de emocao, a tabela de score por beat
e o protocolo de verificacao, em references/pipeline.md. Resumo:
- Entrevista (Passo 0). Oito perguntas numa passada — vibe, jornada, curva de energia, curva de
emocao + pico, signature move seed, range estetico, mundo continuo vs. cenas, assets existentes.
Escrever tudo em
<build>/BRIEF.mdantes de qualquer geracao. Sem cliente acessivel, escrever sozinho e marcarSelf-authored, nao entrevistado. - Brief e jornada (Passo 1). So o que a entrevista nao cobriu: o que e / pra quem, o que o visitante precisa acreditar, a proxima acao, assets, direcao de arte. Depois a jornada: 4 a 7 beats.
- Gramatica, gate, score (Passo 2). Escolher 1 das 8 gramaticas (tabela abaixo), inventar o signature move, rodar o fingerprint gate se houver builds anteriores no mesmo workspace, escrever a curva de emocao, so entao montar a tabela de device-por-beat.
- Gerar assets (Passo 3). Usar
skills/17-image-generator/SKILL.mdou o pipeline canonico de imagem/video do ambiente — nao montar chamada ad-hoc. Regras de composicao em references/worlds.md e references/assets.md. - Construir e verificar (Passos 4-5). HTML real com
data-sc-*, motor deengine/copiado sem edicao, tokens de tema sobrescritos. Depois verificar rolando: servir via HTTP, screenshot em multiplas posicoes (desktop, mobile, reduced-motion), feel check contra o BRIEF.md, nota sobre o que nao foi testado em dispositivo real.
As 8 gramaticas de pagina
Mutuamente exclusivas — cada uma proibe o que as outras exigem. Detalhe (o que permite, proibe, como sao nav/hero/close) em references/uniqueness.md §2.
| Gramatica | Serve quando |
|---|---|
| Filmic one-shot | Um argumento linear, um arco emocional |
| Chaptered editorial | Substancia longa — metodo, manifesto, historia de fundador |
| Live surface | Software, ferramenta, dashboard — a demo e o argumento |
| Continuous world | Jornada com geografia real — cadeia de suprimento, processo fisico |
| Typographic poster | Marca cujo asset e uma frase — manifesto, agencia |
| Gallery / catalog | Um range — produto com variantes, portfolio, cardapio |
| Split stage | Argumento com dois lados — antes/depois, manual/automatico |
| Rhythmic cutlist | Marca de energia — streetwear, evento, musica |
Recorrer a filmic one-shot de novo exige dizer no relatorio por que as outras sete nao serviram — e a gramatica-padrao que qualquer build tende a reproduzir sem decidir, entao carrega onus de prova maior.
Checagem antes de construir
- Bans da gramatica escolhida seguram (references/uniqueness.md).
- 4+ familias distintas de device (references/devices.md), nunca a mesma duas vezes seguidas.
- No maximo dois atos
scrub. - Nenhum par de atos adjacentes com a mesma emocao (references/feel.md).
- Um ato e o pico, com o maior espaco por margem visivel.
- Comprimento total da pagina entre 8 e 14 viewport-heights.
Checkpoint no Passo 5: se o feel check contra o BRIEF.md ou a verificação em reduced-motion revelar violação de um item desta lista (device repetido, emoção adjacente igual, scrub a mais), voltar ao Passo 2 pra reclassificar o beat — não corrigir o HTML isolado sem revisar a tabela de device-por-beat, que é onde a decisão original foi tomada.
Regras Duras
Bloqueadores de entrega, nao preferencia. Cada uma e algo que faz uma pagina ler como feita por maquina.
| Nunca | Em vez disso |
|---|---|
| Diorama de argila / low-poly / claymation como mundo padrao | Fotografico. Ver references/worlds.md |
| Um cue de "scroll", seta, ou icone de mouse animado | Nada. O visitante ja esta olhando o hero; ele sabe |
Contador de secao 01 / 06 |
Deletar. Sequencia nao e informacao aqui |
| Eyebrow acima de todo titulo de secao | No maximo um a cada tres secoes |
| Em dash visivel em qualquer lugar | Ponto, virgula, dois-pontos, ou parenteses |
| Copy centralizado em todo ato | Variar a ancora: lead, trail, centro, split |
| O mesmo device duas vezes seguidas | Fazer o score da jornada corretamente no Passo 2 |
| Gerar qualquer coisa antes de entrevistar o cliente | Rodar o Passo 0. Escrever BRIEF.md, ou marcar como auto-escrito |
| Pagina sem pico projetado, ou com tres picos competindo | Um pico. Ele leva o orcamento de asset, o silencio antes, o maior espaco |
| Final que se dissolve, esmaece, ou vira rodape sem resolver | O close resolve e segura. A ultima sensacao e a que fica |
| Planejar atos antes da curva de emocao existir | Curva primeiro, devices depois |
| Entregar sem um signature move bespoke | Inventar um. Reduzir um spotlight de cor ou reajustar um tilt nao conta |
| Editar o motor pra conseguir um comportamento bespoke | JS bespoke na pagina, dirigido por --sc-p e data-sc-* proprios |
| Recorrer a filmic one-shot so porque foi o ultimo build | Escolher entre as oito gramaticas e dizer por que as outras sete perderam |
| Overlay escuro full-frame pra corrigir contraste | Um scrim so onde o texto senta |
| Texto embutido numa imagem gerada | Markup real, sempre — selecionavel, traduzivel, nitido |
| Estatistica inventada num contador | So numeros reais. Sem numero real, sem contador |
transition: all, ou animar width/height/top/left |
transform e opacity; clip-path pra wipes |
| Gradiente em texto, glow neon, sombra de halo colorido sem offset | Peso e tamanho pra enfase; sombras com offset e blur |
| Audio autoplay, ou qualquer audio num clipe de scrub | Tirar a trilha do encode |
| Entregar sem rodar o Passo 5 | Rodar o Passo 5 |
Handoff
Recebe de
- Skill 01 (PO) — objetivo de negocio, publico, o que o visitante precisa fazer ao final
- Skill 02 (UI/UX) — direcao estetica ja decidida (paleta, tipografia), quando existir; senao decide-se em conjunto durante o Passo 0/1 desta skill
- Assets do cliente, quando existirem — fotos, video, brand kit
Entrega para
- Skill 04 (Frontend) — se a pagina scrollytelling precisar virar componente dentro de uma app maior (React/Next.js) em vez de ficar standalone, a integracao do HTML/JS do motor no framework e trabalho da Frontend
- Skill 12 (Motion Design) — para qualquer micro-interacao adicional fora do escopo de scroll (hover de botao, spring de modal) que a pagina resultante venha a precisar depois de pronta
- Skill 22 (Accessibility) — revisao de teclado,
prefers-reduced-motion, contraste, quando o projeto exigir auditoria formal alem da verificacao embutida no Passo 5
Evidencia de Conclusao
BRIEF.mdda entrevista, com curva de emocao e pico nomeados- gramatica escolhida e justificativa de por que as outras sete nao serviram
- tabela de score (device por beat) respeitando os leans-on/bans da gramatica
- signature move descrito e distinguivel de qualquer parametro do kit
- contact sheet de verificacao (desktop, mobile, reduced-motion) e feel check com diff da curva pretendida vs. sentida
- URL local ou caminho do build entregue
Fontes Externas
Skill adaptada de nateherkai/scroll-craft (MIT, copyright
Nate Herk 2026). Curadoria em 2026-08-26. Detalhe completo do que foi copiado, adaptado e deixado de fora
em references/PROVENANCE.md — resumo:
- Copiado quase verbatim:
engine/scrollcraft.jseengine/scrollcraft.css(codigo generico, zero-dependencia, sem acoplamento ao resto do repo original). - Traduzido e reestruturado no esqueleto de secoes do kit: o corpo do
SKILL.mdoriginal ereferences/devices.md,worlds.md,uniqueness.md,verify.md,feel.md,taste.md,assets.md. - Nao portado: os scripts operacionais (
doctor.mjs,workspace.mjs,kie.mjs,serve.mjs,shoot.mjs,worldflight-assert.mjs,encode.sh— acoplados ao ambiente/provedor do repo original),references/worldflight.mdereferences/device-diag.html(nao lidos nesta curadoria por prioridade de tempo — se o build precisar da gramatica "continuous world" ou diagnostico mobile profundo, ler o original antes de implementar),templates/FINGERPRINTS.md,references/template.htmleEXAMPLES.md(templates/registro de exemplo especificos do fluxo multi-build do autor original).