Walid-Ahmed/flashcard-deck

Construa um baralho de flashcards de estudo a partir de qualquer assunto ou de material que o usuário já possua (PDFs de aulas, slides, anotações em Word ou Markdown, uma pasta de curso, um repositório ou cartões Anki/Quizlet existentes), primeiro perguntando o que o usuário precisa. Produz imagens de cartões pergunta-e-resposta em formato A4 paisagem, agrupados por tópico, um PDF por tópico e um README índice, e, se solicitado, vídeos para YouTube (pergunta seguida de resposta, quiz só de perguntas ou revisão só de cartões) com descrições de capítulos e miniaturas. Use esta skill sempre que o usuário pedir flashcards, cartões de estudo, cartões de revisão, cartões de memorização, um baralho Q&A, cartões de quiz ou 'cartões para lembrar' algo, ou quiser transformar uma base de código, curso, capítulo ou tópico em cartões, cartões para impressão ou um vídeo de flashcards, mesmo que não diga 'baralho'. Também use para adicionar, corrigir, dividir ou reagrupar cartões em um baralho criado com esta skill.

O que é flashcard-deck?

O **flashcard-deck** é uma skill para agentes de IA (como Claude Code, Cursor ou Codex) que automatiza a criação de baralhos de flashcards de estudo de alta qualidade, prontos para impressão e para publicação em vídeo. Ela atua em quatro etapas: (1) entrevista inicial para entender a fonte, profundidade, número máximo de cartões e saídas desejadas; (2) planejamento dos tópicos e perguntas dos cartões; (3) geração dos cartões em Python (`deck.py`) e renderização em imagens A4 paisagem, agrupadas por tópico em PDFs individuais e em um único PDF com todos os cartões, além de um README índice; (4) criação opcional de vídeos no estilo YouTube (pergunta-resposta, quiz ou revisão) com miniaturas e descrições com capítulos. A skill se destaca por ser orientada a conversa: pergunta antes de cada etapa custosa, garante fidelidade ao material do usuário (lendo PDFs, slides, Word, repositórios etc.), e permite edição fácil dos cartões, pois basta alterar o arquivo `deck.py` e re-renderizar. Ela também verifica se cada cartão cabe no layout, evitando estouro de conteúdo e mantendo a legibilidade para impressão.

Funciona com✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/Walid-Ahmed/claude-skills/tree/HEAD/flashcard-deck

Installed? Explore more Produtividade e Colaboração skills: steipete/gemini, steipete/gh-issues, steipete/skill-creator · View all 6 →

Perguntar na sua IA favorita

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

Documentação

Baralho de flashcards

Transforme um assunto em um baralho de cartões pergunta-e-resposta que ensinam o conceito geral primeiro, imprimem de forma limpa e podem se tornar vídeos no YouTube. Os cartões são escritos em um único arquivo Python (deck.py) com pequenos auxiliares, e scripts agrupados renderizam tudo a partir dele, de modo que uma correção em um cartão é uma edição e uma reconstrução.

O trabalho ocorre em quatro etapas. Pergunte antes de cada etapa que custa tempo do usuário ou publique algo, porque um baralho só é útil se cobre o que eles precisam, e os vídeos levam minutos para serem codificados.

  1. Entrevista: pergunte o que construir.
  2. Plano: proponha tópicos e perguntas dos cartões; obtenha um sim.
  3. Cartões: escreva deck.py, renderize, veja cada cartão, corrija o que não se encaixa.
  4. Extras (apenas se desejado): vídeos, miniaturas, publicação.

1. Entrevista

Comece perguntando, não construindo. Use a ferramenta AskUserQuestion para que o usuário possa clicar nas respostas. Faça todas as perguntas em uma única chamada (ela aceita até 4 perguntas) e pule qualquer pergunta que a mensagem do usuário ou o projeto aberto já responda. Ofereça uma opção recomendada primeiro, marcada como "(Recomendado)".

Pergunte sobre o seguinte. A ferramenta aceita até 4 perguntas; portanto, quando a fonte for o material do usuário e uma quinta pergunta for necessária, faça a última em uma segunda chamada.

  • Fonte: o que os cartões cobrem. Opções como: material que o usuário já possui (arquivos ou uma pasta: PDFs, slides, anotações em Word ou Markdown, um curso, um repositório ou flashcards existentes), este repositório, um assunto do seu próprio conhecimento ou anotações que o usuário colará. Se a solicitação já nomear a fonte, pule esta.
  • Quão fielmente seguir (apenas quando a fonte é o material do usuário): apenas o que o material diz (Recomendado), o material mais conceitos básicos ausentes marcados como adicionados, ou o material como ponto de partida.
  • Público e profundidade: iniciante (uma ideia por cartão, palavras simples), intermediário (conceitos mais um pequeno exemplo de código) ou avançado (trade-offs, casos extremos).
  • Número máximo de cartões: até 10 (um conjunto rápido), até 20 (Recomendado), até 40 (um curso completo) ou sem limite (quantos o material precisar). O usuário pode digitar qualquer outro número. Registre como deck(..., max_cards=N): a construção para se o baralho ultrapassar esse valor, de modo que dividir cartões depois não possa quebrar silenciosamente o limite. Mais cartões significam mais tópicos, não cartões mais longos.
  • Saídas: apenas imagens e PDFs dos cartões (Recomendado), mais vídeos, mais vídeos e miniaturas. Os vídeos vêm depois que os cartões são aprovados, de qualquer forma.

Em seguida, se ainda não souber, pergunte em texto simples (sem necessidade de ferramenta): o título do baralho mostrado em cada cartão (como "FastAPI" ou "Kubernetes"), onde salvar a saída (sugira uma pasta flashcards/ no projeto atual, ou uma nova pasta) e se exemplos de código podem nomear o projeto fonte ou devem permanecer genéricos. Para material do próprio usuário, pergunte também se cada cartão deve mostrar de onde veio (como "Cap. 3, p. 42").

2. Plano

Leia a fonte primeiro. Se for material que o usuário já possui, leia references/existing-material.md agora: ele cobre a leitura de PDFs, slides, arquivos Word, pastas e flashcards existentes, mapeando todo o material para que nada seja silenciosamente deixado de lado, permanecendo fiel a ele e apontando cada cartão de volta para sua página. Para um assunto do seu próprio conhecimento, decida o que um aluno no nível escolhido precisa. Em seguida, proponha o baralho como uma lista curta: tópicos na ordem de aprendizado e, abaixo de cada um, uma linha por cartão com sua pergunta. Agrupe por conceito (fundamentos de HTTP, validação, autenticação), não por arquivo. Mire em 3 a 9 cartões por tópico. Um baralho pequeno (abaixo de cerca de 12 cartões) funciona como 2 ou 3 tópicos de 2 a 4 cartões.

Mantenha o plano dentro do número máximo de cartões e deixe espaço para uma ou duas divisões. Se o material precisar de mais cartões do que o máximo permite, cubra primeiro as ideias centrais, depois liste os tópicos ou seções deixados de fora e ofereça aumentar o limite.

Mostre o plano e peça um sim, alterações ou cortes antes de escrever os cartões. Escrever 40 cartões sobre os tópicos errados desperdiça mais tempo, então essa verificação vale uma ida e volta.

3. Cartões

Escreva deck.py, primeiro tópico primeiro

Copie references/deck_template.py para o local onde a saída será gerada. Escreva os cartões do primeiro tópico, renderize apenas esse tópico (--topic 1), mostre dois ou três deles ao usuário e pergunte se o estilo e a profundidade estão corretos. Depois escreva o restante. Descobrir no cartão 3 que o usuário queria cartões mais curtos é barato; descobrir no cartão 40, não. Leia references/components.md antes de escrever o primeiro cartão: ele mostra cada bloco de construção (frase principal, caixas, etapas, tabelas, exemplos de código, notas, diagramas) com o HTML a ser usado.

Como escrever um bom cartão e por quê:

  • Conceito primeiro. A pergunta e a frase de abertura (o lead) enunciam a ideia geral em palavras que se aplicam em qualquer lugar. O código específico do projeto vai em uma caixa example(...) legendada "Exemplo: ...", para que o leitor aprenda a regra e depois veja um caso. Quando o exemplo do projeto diferir da prática comum, diga isso no comentário do exemplo.
  • Uma ideia por cartão. Uma pergunta que une duas ideias separadas ("O que é X e como implantá-lo?") deseja dois cartões. Um contraste ("Como X é diferente de Y?") ou um par que só faz sentido junto é uma ideia.
  • Lead, depois estrutura, depois exemplo. Uma resposta de uma ou duas frases, depois duas ou três caixas, etapas ou uma pequena tabela que a detalham, depois uma nota opcional e um exemplo de código. O leitor deve obter a resposta apenas pelo lead.
  • O rodapé é a linha para lembrar, com menos de 15 palavras. A tag é uma ou duas palavras nomeando a ideia.
  • Redação simples e exata. Frases curtas. Nomeie códigos de status reais, nomes de funções e comandos; não insinue.
  • Diagramas apenas onde acrescentam algo: um fluxo, uma decisão com caminhos de falha ou as partes de uma URL ou mensagem. Não em cartões cuja tabela já mostra a estrutura.
  • Referências cruzadas dizem onde olhar: "O Cartão 4 em Estrutura do app mostra o lado do servidor."

Renderize e verifique

python3 <skill-dir>/scripts/build_deck.py deck.py --out OUT_DIR             # todos os cartões, PDFs, README
python3 <skill-dir>/scripts/build_deck.py deck.py --out OUT_DIR --topic 1   # um tópico, verificação rápida

<skill-dir> é a pasta onde este SKILL.md está. Use python3, ou python onde isso for Python 3. O script precisa de Python com playwright e Pillow (pip install playwright pillow), além do Google Chrome ou playwright install chromium. Ele renderiza cada cartão como PNG A4 paisagem de 2400 x 1698 px, verifica se o conteúdo de cada cartão cabe (altura e largura) e para de nomear qualquer cartão que não caiba. Em seguida, escreve um PDF por tópico, print/all-cards.pdf e README.md.

  • Conteúdo repetido: a verificação de ajuste mede o tamanho, não o sentido. Procure por uma caixa que repete uma etapa ou o lead, e corte-a.
  • Acima do máximo: a construção para se o baralho tiver mais cartões que max_cards. Mescle ou descarte os cartões menos importantes, ou peça ao usuário para aumentar o limite. Não aumente por conta própria.
  • Um cartão não cabe: encurte o texto, remova uma caixa ou divida-o em dois cartões (como "9a" e "9b", ou duas perguntas). Nunca reduza a fonte para forçar a entrada; os cartões devem permanecer legíveis quando impressos.
  • Olhe para cada cartão após a renderização, abrindo os PNGs. A verificação de ajuste detecta estouro, mas não um cartão confuso, um diagrama que engana ou um erro de digitação. Corrija e re-renderize; --topic N re-renderiza um tópico rapidamente.
  • Espaço sobrando é normal. A construção relata espaço sobrando em px CSS no cartão de 1200 x 849 (o PNG é o dobro). Um cartão simples frequentemente deixa 150 a 350 px vazios, e isso é bom para leitura e impressão. Não preencha um cartão para ocupar espaço. Se um cartão deixar mais de cerca de 400 px e parecer ralo, pode merecer um diagrama ou um exemplo, ou pode ser mesclado a um cartão vizinho.

4. Extras: vídeos, miniaturas, publicação

Apenas quando o usuário os desejar e depois que aprovar os cartões. Pergunte qual estilo de vídeo e diga aproximadamente quanto tempo a codificação leva (cerca de 15 segundos de codificação por cartão em um laptop).

python3 <skill-dir>/scripts/build_videos.py deck.py --cards OUT_DIR --out VIDEO_DIR [--mode both|questions|cards]
python3 <skill-dir>/scripts/build_thumbnails.py deck.py --cards OUT_DIR --out VIDEO_DIR/thumbnails [--mode both|questions|cards]
  • --mode both (padrão): cada pergunta com a resposta oculta e uma barra de tempo (6 s), depois o cartão completo (12 s).
  • --mode questions: um quiz, cada pergunta por 10 s, sem respostas.
  • --mode cards: uma revisão, cada cartão completo por 15 s.
  • Cada modo gera um vídeo por tópico e um com todos os cartões, nomeados com o modo (-questions, -cards) para que estilos nunca se sobrescrevam. Passe o mesmo --mode para build_thumbnails.py para que seus nomes coincidam.
  • Cada vídeo tem telas de introdução e título do tópico, e uma descrição .txt cujos capítulos o YouTube transforma em seções clicáveis. Os capítulos têm pelo menos 10 segundos, o que o YouTube exige.
  • Os vídeos precisam de ffmpeg. Mantenha VIDEO_DIR fora de qualquer repositório git, pois os vídeos são grandes.
  • As miniaturas são JPEGs 1280 x 720 nomeados para corresponder a cada vídeo. topic(..., hook="A · B · C") define a pequena linha abaixo do título de cada tópico.
  • Após a construção, ofereça títulos e descrições prontos para o YouTube: um título com menos de 70 caracteres com o assunto e o hook, uma descrição com a linha de abertura, um marcador por tópico, quaisquer links e os capítulos do .txt.

Pergunte antes de enviar, publicar ou carregar qualquer coisa; essas ações alcançam outras pessoas. Se os exemplos de código do baralho vierem do curso ou repositório de outra pessoa, mencione isso antes de torná-lo público e ofereça uma linha de crédito (deck(..., credit="...") coloca uma no README).

Alterando um baralho depois

Edite deck.py e execute build_deck.py novamente; ele reconstrói cada cartão, os PDFs e o README, e remove imagens de cartões excluídos. Reconstrua vídeos apenas se o usuário quiser que sejam atualizados, e --descriptions-only reescreve apenas as descrições dos vídeos.

Arquivos nesta skill

  • scripts/build_deck.py: cartões, verificação de ajuste, PDFs, README.
  • scripts/build_videos.py, scripts/build_thumbnails.py: os extras.
  • scripts/flashcards/: auxiliares que deck.py importa (__init__.py), o renderizador (engine.py) e a folha de estilo dos cartões (card.css: amigável para impressão, branco com contornos coloridos, A4 paisagem fixo).
  • references/components.md: cada bloco de construção do cartão com um exemplo. Leia antes de escrever cartões.
  • references/deck_template.py: um pequeno baralho funcional para copiar.
  • references/existing-material.md: construir um baralho a partir das próprias anotações, PDFs, slides, repositório ou flashcards do usuário. Leia quando essa for a fonte.

Habilidades Relacionadas