chalk-talk: explique desenhando

Explica uma ideia desenhando-a, como um professor faz no quadro — uma lição feita à mão que aparece traço por traço, capítulo por capítulo, com narração e valores que a pessoa pode mover, entregue como um único arquivo HTML que funciona offline.

O que é chalk-talk: explique desenhando?

Chalk-talk é uma skill para agentes de IA (como Claude Code, Cursor, Codex) que transforma o agente em um professor que desenha explicações passo a passo. A skill permite criar lições visuais com desenhos feitos à mão, capítulos, narração curta e valores interativos que o usuário pode ajustar. Suporta plataformas como Claude Code, Cursor e Codex, e gera um único arquivo HTML que funciona offline, podendo ser enviado por e-mail ou projetado. O agente escreve uma receita curta (arquivo .chalk) que descreve cada traço, capítulo e interação; um script de build verifica e compila tudo em um HTML. A skill é útil para professores, palestrantes ou qualquer pessoa que queira explicar conceitos, processos ou sistemas de forma visual e didática, com suporte a quizzes, pausas para perguntas e animações prontas.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/ruinosus/house-lights/tree/main/skills/chalk-talk

Installed? Explore more Programação e Desenvolvimento skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Perguntar na sua IA favorita

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

Documentação

O que chalk-talk: explique desenhando faz?

Você faz uma explicação desenhada à mão: uma receita em um texto curto (.chalk) que o player desta skill desenha traço por traço, com capítulos, uma narração curta e, quando há uma quantidade real, um valor que a pessoa move. Você escreve apenas a receita; scripts/build.mjs a verifica e constrói um único arquivo HTML com tudo dentro. Nunca escreva ou copie o player você mesmo. Os caminhos abaixo são relativos à pasta desta skill.

1. Desenhe primeiro

Para um pedido comum ("explique X desenhando", "desenhe como Y funciona") não pergunte e não mostre um esboço: desenhe. Decida você mesmo as três coisas que um desenho precisa e diga-as ao entregar:

  • a âncora: uma coisa da vida cotidiana à qual a ideia está ligada, que o público já viu ou fez e que pode ser desenhada com poucas formas (uma conta de cartão, um ponto de ônibus, uma fila de café);
  • para quem é: o que o pedido diz, senão um adulto curioso;
  • o valor que a pessoa move: uma quantidade real na ideia (a taxa mensal, pessoas chegando por minuto), ou nenhum.

Um desenho para apresentar, convencer, decidir, documentar ou contar o que aconteceu (um pitch, uma arquitetura para um cliente, uma post-mortem) é do back-of-napkin, quando está instalado; esta skill ensina.

Pergunte primeiro — uma vez, tudo junto, e apenas o que estiver faltando — quando for para uma turma, alunos, uma palestra ou um curso (veja «Para uma turma»), quando o pedido puder significar duas coisas diferentes, ou quando a pessoa pedir para ver o plano primeiro.

O desenho tem quatro partes, um capítulo cada: a âncora como uma pergunta ("por que R$ 1.000 se tornam R$ 1.974?"); desmonte-a (a coisa real, simplesmente, e o que está escondido nela); a ideia (a regra, o fluxo ou o argumento, com o valor que se move); o fechamento (um destaque no resultado e onde a comparação para).

2. Escreva a receita

Escreva <id>.chalk com as linhas abaixo — isso cobre o desenho usual; você não precisa ler mais nada primeiro. O papel tem 900 × 560 (size 900x780 faz um quadro mais alto), x cresce para a direita e y para baixo, o at de um prop é onde ele fica (seu centro inferior); mantenha 30 px das bordas. # Título abre um capítulo e > frase é a narração: ambos vão para o próximo passo. Um ponto é x,y sem espaço; uma expressão vai entre aspas e pode usar os params e vars.

É um único quadro: um capítulo nunca limpa o papel. Tudo o que é desenhado permanece, como giz em um quadro-negro, então planeje todo o quadro antes de escrever e dê a cada parte seu próprio lugar — o título uma vez no topo, a âncora e a coisa real na metade superior, a ideia abaixo ou ao lado, o fechamento no que sobrar. Nunca desenhe duas coisas no mesmo lugar; 12 a 25 passos geralmente são suficientes.

O topo:

title Juros compostos ↔ a fatura do cartão
locale pt-BR
size 900x560
param taxa "juros ao mês (%)" 1..15 step=1 = 8
switch atraso "pagar com atraso" off
var f = "1 + taxa/100"
learning goal "Ver o juro sobre o juro crescer mês a mês."

Escreva todas as quatro linhas learning — goal, question (uma para pensar), answer (fundamentada) e caveat (o que foi simplificado) — e defina locale para o idioma da pessoa, com todo o texto nesse idioma.

Pessoas e coisas são props: person, person-sitting, person-pointing, house, car, bus, coin, phone, document, server, bank, cloud, queue, desk, computer, clock, lock, money-arrow, tree, school, hospital, factory, truck, cart, safe, bulb, gear, database, robot, ship, container, warehouse, box, pallet, shop, shelf, field, cup, function, api-gateway, cache, cluster, board, book, pencil. Uma pessoa aceita mood= happy, sad, surprised, worried ou idea.

person ana at 150,330 "Ana" mood=worried
text "R$ 1.000 viram quanto?" at 40,64 size=36
text "paga só o mínimo" right-of ana gap 16 align=start
ana thinks "e se eu atrasar?" side=above width=200
ana -> banco "paga" -> loja "repassa"
arrow 60,350 -> 840,350 color=#2E8F62 stroke=3
highlight 90,500 -> 810,500 thickness=24

Posicionamento sem calcular coordenadas — prefira estes sempre que as peças ficarem lado a lado ou se seguirem. Uma chain é coisas que passam algo adiante: espalhadas pelo papel, cada uma ligada à próxima, com as setas longas se solicitado:

chain at 40,190 forward="o café desce" back="pedidos sobem"
  field fazenda "fazenda"
  truck caminhao "transporte"
  cup cafe "cafeteria"
  person voce "você"
row at 470,150 gap 14
  repeat 3: coin size 44
repeat 3: coin at "100 + i*60",400 size 40

Algo que continua se movendo no lugar, a partir daquele passo — spin, drive, steam (vapor sobre ele), talk, pulse ou float, e stop. Apenas onde o movimento diz algo (o caminhão parte, vapor sobre a xícara), um ou dois por desenho:

animate caminhao drive

Um emoji animado pronto — apenas quando a pessoa pedir um, e no máximo um por lição (é polido, não giz): celebrate, think, surprised, ok, idea ou time, centralizado em at; ou ./file.json, um arquivo Lottie que a pessoa deu, ao lado da receita. O build coloca dentro do arquivo, com seus créditos — e o arquivo cresce de cerca de 340 KB para cerca de 610 KB (o player e a animação):

lottie celebrate at 720,180 size=120

Números que seguem o valor:

counter at 470,270 "1000*f^6" "R$ {v:0} em seis meses" size=34
bars box 90,320,440,180 values 1000,"1000*f^3","1000*f^6" labels hoje,"3 meses","6 meses" format="R$ {v:0}"
plot "1000*(1+taxa/100)^x" domain 0..12 range 0..4000 box 480,120,360,240
when atraso:
  text "multa de 2%" at 600,100 color=#C8442C

Algo que nenhum prop desenha: crie em uma grade 0–100 (números inteiros, y para baixo; fica em 50,100) e então use seu nome:

define xicara
  polygon 24,48 76,48 70,90 30,90 fill=#FFFFFF
  curve 74,56 90,62 72,80
xicara minha at 450,300 "minha xícara"

Esperando pela pessoa, e um quiz (ambos para uma turma):

pause ask "Quanto vai virar a fatura em seis meses?"
quiz "Se a taxa dobra, a fatura em seis meses…"
  * mais que dobra o juro -- é juro sobre juro
  - só dobra -- isso seria juro simples

Mantenha: 8 a 40 passos em um quadro; narração curta apenas quando a ideia muda; títulos 36 a 44, rótulos 24 a 34, nada abaixo de 22; cores grafite (o padrão), #2F5BEA, #C8442C, #2E8F62, #8C8578, marcador #FFE45C, no máximo três acentos; fatos e números corretos — nunca invente uma citação ou um número. Outros passos (circle, curve, card, table, axis, timeline, brace, note, move…) estão em references/text.md; o que cada um desenha, em references/recipe.md. Abra-os apenas quando precisar de um passo que não está acima ou a mensagem do build não resolve um erro.

Se a pessoa der um diagrama Mermaid, mantenha-o como está, adicione linhas %% title …, %% # chapter e %% > narration e salve-o como <id>.mmd (references/text.md mostra como). Salve a receita na pasta em que a pessoa trabalha, ou, quando existir uma pasta de saídas para arquivos que a pessoa baixa (no claude.ai, /mnt/user-data/outputs), lá.

3. Construa e verifique

node scripts/build.mjs <id>.chalk

Isso escreve <id>.html ao lado da receita e imprime:

  • ✗ text: line N … ou ✗ contract: … (exit 1, nada escrito): corrija essa linha como a mensagem indica, conforme o exemplo abaixo dela.
  • ! review … (exit 3): desenhado, mas algo sai do papel, um texto cobre outro ou uma linha cruza um texto. Corrija e construa novamente com --snapshots: ele também escreve <id>.snapshots/<id>.contact-sheet.png — cada capítulo em cada configuração dos valores. Abra essa imagem e corrija o que a revisão nomeou e qualquer coisa que não pareça legível (uma figura que não é reconhecível, um canto lotado, um texto muito pequeno).
  • ✓ review, ou • review … the page checks itself when opened (sem navegador aqui): pronto.
  • • figures … defined: a receita faz uma figura com define, e a revisão apenas a mede — abra a contact-sheet uma vez e verifique se a figura se lê como a coisa que deveria ser.
  • ✗ review not checked: …: pronto, mas diga à pessoa que o desenho não foi verificado.

No máximo duas rodadas de correções; então entregue e diga em palavras simples o que sobrou ("com 15 % o rótulo toca o título").

Várias lições (um curso): uma receita cada, construídas juntas — node scripts/build.mjs one.chalk two.chalk --out course.html --title "O curso". Para um README (ou onde apenas uma imagem for necessária), quando solicitado: node scripts/build.mjs <id>.chalk --svg escreve <id>.svg, uma imagem que se desenha sozinha; a lição ainda é o .html.

4. Entregue

Dê o caminho do .html (ou o próprio arquivo onde a pessoa baixa arquivos) e, em uma linha, o que você escolheu e uma oferta para mudar: "Liguei a uma fatura de cartão de crédito, para alguém que nunca estudou juros, com a taxa mensal para mover — quer outra âncora, outro público ou algo diferente?" Então uma frase sobre o que olhar ("Pressione Próximo; no capítulo 3, mova a taxa"). O arquivo abre offline, com capítulos, os valores ao lado do papel, e download em PNG, SVG, GIF e WebM — pode ser enviado por e-mail ou em um projetor.

Para apresentá-lo (uma palestra, uma turma em um projetor): construa com --present — a página abre um capítulo por vez, tela cheia e as notas do apresentador com a primeira tecla; PageDown de um clique avança. Um PowerPoint, quando solicitado: --pptx (um slide por capítulo; steps aumenta o desenho clique a clique, video incorpora cada capítulo se desenhando), com a narração como notas do apresentador.

Para uma turma

Quando o desenho for para uma turma, alunos, uma palestra ou um curso, pergunte primeiro, em uma mensagem: até três âncoras, a melhor primeiro, cada uma com uma linha sobre por que funciona para aquele público (references/hooks.md), quem exatamente é o público, e qual número os alunos podem mover. Nunca pergunte o que já foi dito. Então mostre o esboço das quatro partes em poucas linhas e aguarde o sinal verde ("pode", "go"). A receita adiciona theme chalkboard, um pause ask abrindo a parte que o responde, e um quiz no final.

Sem execução de código (um artifact)

Onde você não pode executar código mas pode mostrar um artifact HTML, coloque a receita nesta pequena página — nada mais — e mostre-a. O player carrega do CDN e verifica a receita ele mesmo:

<!doctype html>
<meta charset="utf-8">
<title>TÍTULO DA LIÇÃO</title>
<script type="text/chalk-talk" id="chalk-recipe">
A RECEITA COMO TEXTO
</script>
<script src="https://cdn.jsdelivr.net/npm/[email protected]/player.js"></script>

Se a página disser que a receita não pôde ser aberta, corrija a linha que ela nomeia.

Alterando depois

"Deixe a seta azul", "adicione uma segunda pessoa", "use 5 % em vez disso": mude apenas o que foi solicitado, mantenha o resto, construa novamente e diga o que mudou. Uma âncora ou público diferente é um novo desenho.

Nunca

  • Nunca edite assets/ ou scripts/contract.mjs: eles são gerados.
  • Nunca coloque HTML, links, scripts ou imagens em uma receita: textos são texto simples, cores são hex ou nomes.
  • Nunca escreva um script para gerar a receita: escreva você mesmo (expressões e repeat fazem a aritmética).
  • Sem execução de código, nunca escreva o player, um SVG ou uma imagem do desenho à mão: use a pequena página acima. Se você não pode nem executar código nem mostrar um artifact, diga isso e dê a receita.

Habilidades Relacionadas