---
name: ks-study-guide
description: Use quando um aluno pede uma apostila, material de estudo ou guia de revisão de programação a partir das próprias anotações, links ou textos, com nível declarado e um objetivo concreto.
---

# Apostila de Programação

Transforma tema, objetivo, nível e referências do aluno em `apostila.md` e `revisao.md` rastreáveis, mais os PDFs. Toda afirmação tem origem declarada. É uma aula, não documentação.

## Entradas

Obrigatórias: **tema**, **objetivo** e **nível** (`iniciante`, `intermediário` ou `avançado`). Faltou algo? Pergunte só o que falta, antes de abrir qualquer referência. Nível fora dos três: ofereça os três e peça a escolha. Opcionais (capa e dimensionamento): tempo disponível, extensão, preferências.

Referências aceitas: texto colado, URL e arquivo local `.md`/`.txt`. PDF e repositório: diga em uma frase que ficam fora desta versão e siga com o resto. Sem nenhuma referência: avise que tudo será "Documentação oficial" ou "Pesquisa complementar" e peça confirmação. Não descreva ao aluno arquivos internos desta skill.

## Fluxo

1. **Análise.** Uma linha por referência: tópicos cobertos, profundidade estimada, lacunas frente ao objetivo. URL que não abriu entra como "não lida" e nunca é citada.
2. **Sumário.** De 3 a 5 capítulos, cada um com a referência de origem ou a marca "lacuna". Referências demais: proponha um recorte e liste o que ficou de fora. **Pare aqui e aguarde a resposta.** Só siga direto se o aluno dispensou revisar o sumário.
3. **Pesquisa complementar.** Para cada lacuna, leia documentação oficial ou especificação e registre a lacuna. Cite apenas URLs lidas nesta sessão ou fornecidas pelo aluno; afirmação sem fonte recebe `(sem fonte verificada)`.
4. **Escrita.** Preencha `reference/template-apostila.md`: substitua cada `«…»`, apague opcionais não usados. Títulos `##` e `###` são literais: nada a mais, nada renomeado, nada antes do roteiro. Todo bloco cercado declara linguagem (`text` para saídas e árvores de pastas).
5. **Revisão.** Preencha `reference/template-revisao.md` só com o que está na apostila; 5 a 10 perguntas, sem respostas; duas páginas é teto. Depois complete o `## Gabarito` da apostila: uma solução por exercício, uma resposta por pergunta.
6. **Verificação.** `node <pasta-da-skill>/scripts/check-apostila.mjs apostila.md revisao.md`. Corrija até sair com código 0.
7. **PDF.** `node <pasta-da-skill>/scripts/build-pdf.mjs apostila.md apostila.pdf`, idem para a revisão. Na primeira vez, `npm install` em `<pasta-da-skill>/scripts/`. Código 2 (sem navegador): entregue o Markdown e ofereça o skill `pdf` da Anthropic. Saídas na pasta do aluno, nunca na da skill.

## Capítulo

- **Por que isso importa:** o problema do objetivo do aluno que o capítulo resolve.
- **Como funciona:** um parágrafo por ideia; termo novo em negrito, definido na frase; no máximo uma citação.
- **Na prática:** o exemplo e um bloco `text` com comando e saída esperada.
- **Para fixar:** 2 a 4 linhas.
- Teto: 550 palavras e 40 linhas de código. Arquivo inteiro só onde é criado; depois, só o trecho novo e onde entra.

## Fontes

- Referências do aluno são a fonte principal; complemento só preenche lacuna nomeada.
- Rótulos em "Referências e leituras", exatamente um por fonte: `Fornecida pelo aluno`, `Documentação oficial`, `Pesquisa complementar`. "Não lida" não é rótulo; é estado da análise.
- Citação literal: bloco `>` terminado em `Fonte: nome (rótulo)`.
- Fontes que se contradizem: parágrafo `**Divergência:**` no capítulo, nomeando as duas fontes. Nunca escolha uma em silêncio nem troque a nota por um experimento próprio.

## Nível

- **Iniciante**: `**Pré-requisitos:**` em cada capítulo; uma analogia do cotidiano em "Por que isso importa"; exemplo executável somado aos anteriores.
- **Intermediário**: ao menos uma variação de implementação por capítulo, com trade-off explícito.
- **Avançado**: ao menos um limite, custo de desempenho ou risco de segurança por capítulo, com fonte primária quando existir.

## Limites

- Não suba servidores nem encerre processos da máquina. Verifique exemplos por leitura; se rodar algo, use porta efêmera e encerre só o próprio processo.
- Não invente URL, número, versão ou depoimento.
