Desenhe um pôster de fluxograma
O trabalho tem duas metades:
- Você transforma o processo em Mermaid. Esta é a parte que requer julgamento: quais são os estados, quais ramificações estão faltando, onde o processo pode travar ou quebrar uma regra.
scripts/make_poster.pyrenderiza. Nenhum modelo está envolvido, então a mesma entrada sempre produz o mesmo pôster.
<skill> abaixo é a pasta que contém este arquivo.
Fluxo de trabalho
-
Entenda o processo. Reformule o objetivo do usuário em uma frase. Liste ambiguidades, ramificações ausentes ("o que acontece quando esta etapa falha?") e etapas arriscadas. Pergunte ao usuário apenas sobre as decisões que você não consegue resolver sozinho.
-
Modele-o. Crie uma pasta para o diagrama (uma pasta por pôster).
- Com pstack (preferido). Se o skill
statechartdo pstack estiver disponível (Claude Code:/pstack:statechart; Cursor:/statechart; ou seuSKILL.mdno disco), use-o: escreva uma especificação TLA+ com as regras do usuário como INVARIANTs, execute-a, leia oreport.md. Escreva o módulo de visão conforme descrito em references/pstack-statechart.md para que o diagrama converta limpo. Em seguida, converta:
Ele escrevepython3 <skill>/scripts/make_poster.py <pasta> --from-statechart <saida-statechart>/chart.mmd<pasta>/flow.mmde imprime os números dos problemas em ordem, com a regra que cada um quebra. Se o usuário pediu para manter o pstack desligado, não o ligue; use o próximo caminho e diga isso. - Sem pstack. Escreva
<pasta>/flow.mmdmanualmente seguindo references/mermaid-rules.md. Marque cada problema que você encontrou (uma regra quebrada, um beco sem saída, uma ramificação ausente) com a classebreaks. make_poster.py <pasta> --init [--lang zh]escreve umflow.mmdinicial eposter.jsonpara editar.
- Com pstack (preferido). Se o skill
-
Escreva
<pasta>/poster.json(references/poster-json.md): título, subtítulo, legenda no idioma do usuário e um cartão com uma linha por nóbreaks, na mesma ordem dos números. -
Renderize.
python3 <skill>/scripts/make_poster.py <pasta>Ele verifica primeiro e não desenha nada enquanto houver erros. Corrija todos os erros; leia todos os avisos. Saída:
poster.html(autocontido, funciona offline),poster.png(2x) eposter.svg. -
Veja
poster.png. Se você não puder ver imagens, ou para economizar custo, passe isso para um modelo mais barato ou subagente. Verifique:- cada nó circulado em vermelho tem uma linha no cartão, e os números coincidem;
- nenhuma linha atravessa o texto ou parece ligada à caixa errada;
- os rótulos estão no idioma do usuário e são curtos o suficiente para ler;
- nada importante está apertado. Correções: encurte rótulos, coloque um espaço onde uma linha deve quebrar, divida um diagrama grande em dois pôsteres, ou sobrescreva o espaçamento em
poster.jsonstyle. Em seguida, renderize novamente.
-
Relate ao usuário: primeiro o caminho do PNG, depois uma linha por problema (a regra e como o processo a atinge), depois o que o modelo deixa de fora. Mencione que
poster.htmltem botões Exportar PNG/SVG.
Requisitos
- Python 3.8+ (biblioteca padrão; Pillow é usado para reduzir fotos se instalado).
- Chrome, Edge ou Chromium para exportação PNG/SVG. Se nenhum for encontrado,
poster.htmlainda é escrito; definaCHROMEpara o binário do navegador para habilitar a exportação. - Opcional: pstack (https://github.com/cursor/plugins/tree/main/pstack) para a verificação TLA+, que precisa de Java 11+ e as ferramentas TLA+ (veja references/pstack-statechart.md).
- Fontes são fontes do sistema (macOS: American Typewriter, Baskerville, Songti, Kaiti; Windows e Linux usam fallback para Courier New / Georgia / SimSun / Noto Serif CJK). No Linux instale uma fonte CJK como Noto Serif CJK para Chinês.
Limites
- Apenas layout de cima para baixo.
- Sem estados compostos, regiões paralelas, notas ou subgrafos. Para saída de statechart, use uma visão plana (
state()retorna uma string). - Melhor com 15 a 25 caixas; acima de 30 o verificador avisa. Divida processos maiores em vários pôsteres.
- O layout automático ocasionalmente coloca uma linha perto de uma caixa não relacionada. É por isso que existe o passo 5.
Exemplo
examples/paper-submission/ no repositório: um modelo TLA+ de uma submissão de periódico (statechart/), o flow.mmd convertido, poster.json e o pôster renderizado. examples/paper-submission-zh/ é o mesmo modelo com uma visão em Chinês.